From a18298b902d8600d7b2a0afc1a5a663c3d35d8bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=A4=E5=BF=83?= <3277200+sentsim@users.noreply.github.com> Date: Mon, 20 Nov 2023 08:45:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=20v2.9.0-beta.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/layui.js | 2 +- dist/layui.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/layui.js b/dist/layui.js index 9cbaf7e3..8154a8a6 100644 --- a/dist/layui.js +++ b/dist/layui.js @@ -1,2 +1,2 @@ -/** v2.8.18 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.8.18"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,o=e.length-1,n=o;01e3*m.timeout/4?g(s+" is not a valid module","error"):void(m.status[s]?y():setTimeout(n,4))}())}function y(){e.push(layui[s]),11e3*m.timeout/4?g(s+" is not a valid module","error"):void("string"==typeof m.modules[s]&&m.status[s]?y():setTimeout(f,4))}():((r=h.createElement("script"))["async"]=!0,r.charset="utf-8",r.src=i+((u=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+u:""),l.appendChild(r),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||b?r.addEventListener("load",function(t){p(t,i)},!1):r.attachEvent("onreadystatechange",function(t){p(t,i)}),m.modules[s]=i)),a},n.prototype.disuse=function(t){var o=this;return t=o.isArray(t)?t:[t],o.each(t,function(t,e){m.status[e],delete o[e],delete N[e],delete o.modules[e],delete m.status[e],delete m.modules[e]}),o},n.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},n.prototype.link=function(o,n,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof n?n:t)||o).replace(/\.|\//g,""),u="creating",l=0;return i.href=o+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"==typeof n&&function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(o+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):n()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},n.prototype.addcss=function(t,e,o){return layui.link(m.dir+"css/"+t,e,o)},m.callback={},n.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},n.prototype.img=function(t,e,o){var n=new Image;if(n.src=t,n.complete)return e(n);n.onload=function(){n.onload=null,"function"==typeof e&&e(n)},n.onerror=function(t){n.onerror=null,"function"==typeof o&&o(t)}},n.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},n.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),n.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},n.prototype.router=n.prototype.hash=function(t){var o={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),o.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),o.search[e[0]]=e[1]):o.path.push(e)})),o},n.prototype.url=function(t){var r,e,o=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),o.each(e,function(t,e){var o=e.indexOf("="),n=o<0?e.substr(0,e.length):0!==o&&e.substr(0,o);n&&(r[n]=0(s.innerHeight||h.documentElement.clientHeight)},d.getStyleRules=function(t,n){if(t)return t=(t=t.sheet||t.styleSheet||{}).cssRules||t.rules,"function"==typeof n&&layui.each(t,function(t,e){if(n(e,t))return!0}),t},d.style=function(t){t=t||{};var e=d.elem("style"),n=t.text||"",i=t.target;if(n)return"styleSheet"in e?(e.setAttribute("type","text/css"),e.styleSheet.cssText=n):e.innerHTML=n,e.id="LAY-STYLE-"+(t.id||(n=d.style.index||0,d.style.index++,"DF-"+n)),i&&((t=d(i).find("#"+e.id))[0]&&t.remove(),d(i).append(e)),e},d.position=function(t,e,n){var i,r,o,c,u,a,f,l;e&&(n=n||{},t!==h&&t!==d("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||s.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),f=e.offsetWidth,l=e.offsetHeight,r=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},o=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,u=i.left,a=i.bottom,"center"===n.align?u-=(f-t.offsetWidth)/2:"right"===n.align&&(u=u-f+t.offsetWidth),(u=u+f+c>o("width")?o("width")-f-c:u)o()&&(i.top>l+c&&i.top<=o()?a=i.top-l-2*c:n.allowBottomOut||(a=o()-l-2*c)<0&&(a=0)),(f=n.position)&&(e.style.position=f),e.style.left=u+("fixed"===f?0:r(1))+"px",e.style.top=a+("fixed"===f?0:r())+"px",d.hasScrollbar()||(l=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&l.bottom+c>o()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){d.position(t,e,n)},50))))},d.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=d(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},d.isTopElem=function(n){var t=[h,d("body")[0]],i=!1;return d.each(t,function(t,e){if(e===n)return i=!0}),i},d.clipboard={writeText:function(t){var e=String(t.text);try{navigator.clipboard.writeText(e).then(t.done)["catch"](t.error)}catch(i){var n=h.createElement("textarea");n.value=e,n.style.position="fixed",n.style.opacity="0",n.style.top="0px",n.style.left="0px",h.body.appendChild(n),n.select();try{h.execCommand("copy"),"function"==typeof t.done&&t.done()}catch(r){"function"==typeof t.error&&t.error(r)}finally{n.remove?n.remove():h.body.removeChild(n)}}}},r.addStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),d.each(t,function(t,e){new RegExp("\\b"+e+"\\b").test(n)||(n=n+" "+e)}),n.replace(/^\s|\s$/,"")},r.removeStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),d.each(t,function(t,e){e=new RegExp("\\b"+e+"\\b");e.test(n)&&(n=n.replace(e,""))}),n.replace(/\s+/," ").replace(/^\s|\s$/,"")},r.fn.find=function(n){var i=[],r="object"==typeof n;return this.each(function(t,e){e=r&&e.contains(n)?n:e.querySelectorAll(n||null);d.each(e,function(t,e){i.push(e)})}),d(i)},r.fn.each=function(t){return d.each.call(this,this,t)},r.fn.addClass=function(n,i){return this.each(function(t,e){e.className=r[i?"removeStr":"addStr"](e.className,n)})},r.fn.removeClass=function(t){return this.addClass(t,!0)},r.fn.hasClass=function(n){var i=!1;return this.each(function(t,e){new RegExp("\\b"+n+"\\b").test(e.className)&&(i=!0)}),i},r.fn.css=function(e,i){var t=this,r=function(t){return isNaN(t)?t:t+"px"};return"string"!=typeof e||i!==undefined?t.each(function(t,n){"object"==typeof e?d.each(e,function(t,e){n.style[t]=r(e)}):n.style[e]=r(i)}):0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var e,i,t,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"上一页",n.next="next"in n?n.next:"下一页",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t…');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1…'),0!==r)&&e.push(''+(n.last||n.pages)+""),e.join("")}(),next:n.next?''+n.next+"":"",count:'\u5171 '+n.count+" \u6761",limit:(i=['"),refresh:['','',""].join(""),skip:[''+(e="object"==typeof n.skipText?n.skipText:["到第","页","确定"])[0],'',e[1]+'",""].join("")};return['
',(t=[],layui.each(n.layout,function(e,a){l[a]&&t.push(l[a])}),t.join("")),"
"].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))})},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,v){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){D.path&&i.lay&&lay.layui&&lay.layui.link(D.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},d="layui-laydate-id",D={v:"5.5.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+D.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},a="laydate",x="layui-this",k="laydate-disabled",h=[100,2e5],T="layui-laydate-static",w="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",C=".laydate-btns-confirm",M="laydate-time-text",L="laydate-btns-time",E="layui-laydate-preview",S="layui-laydate-shade",I=function(e){var t,a=this,n=(a.index=++D.index,a.config=lay.extend({},a.config,D.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
\u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
","
\u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
Please re-select",invalidDate:"Invalid date",formatError:["The date format error
Must be followed\uff1a
","
It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},I.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},I.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart)&&(o.weekStart=0),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(c).test(t)?"\\d{"+(new RegExp(c).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),o.mark=lay.extend({},o.calendar&&"cn"===o.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},o.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),o.value)&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value))},I.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+T:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],c=r.elemHeader=[],u=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),f=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&f.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),f.push('"),f.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
  • '+t.text+"
  • ")}),i.join(""))).find("li").on("click",function(e){var t=o.shortcuts[this.dataset.index]||{},t=("function"==typeof t.value?t.value():t.value)||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+L).removeClass(k));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(x),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),p=[],g=!0,t=(lay.each(o.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),p.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))):!g&&/^#/.test(t)&&p.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&p.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),p.length&&(p=p.join(""),"styleSheet"in f?(f.setAttribute("type","text/css"),f.styleSheet.cssText=p):f.innerHTML=p,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(f)),r.remove(I.thisElemDate),D.thisId=o.id,s?o.elem.append(y):(v.body.appendChild(y),r.position()),o.shade?'
    ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),I.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},I.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(T)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete D.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+S).remove()),t},I.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},I.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},I.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t)&&(e.date=t,o=!0)},u=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(r=s.dateTime=lay.extend({},s.max),i=!0):d.getDateTime(r)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),i=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type)&&(s.dateTime.date=1,d.endDate.date=1),i&&m&&(d.setValue(d.parse()),d.hint("value "+l.invalidDate+l.formatError[1])),d.startDate=d.startDate||m&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e()),d},I.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},I.prototype.holidays=function(n,i){var e=this.config,l=["","work"];return"array"===layui.type(e.holidays)&&lay.each(e.holidays,function(a,e){lay.each(e,function(e,t){t===n.attr("lay-ymd")&&n.find("div").html('"+i[2]+"")})}),this},I.prototype.limit=function(t){t=t||{};var i=this,e=i.config,l={},a=t.index>(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowh[1]&&(d.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),s.setFullYear(d.year,d.month,1),i=(s.getDay()+(7-n.weekStart))%7,l=D.getEndDate(d.month||12,d.year),r=D.getEndDate(d.month+1,d.year),lay.each(c,function(e,t){var a,n=[d.year,d.month];(t=lay(t)).removeAttr("class"),e"+n[2]+""),o.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e})}),lay(u[0]).attr("lay-ym",d.year+"-"+(d.month+1)),lay(u[1]).attr("lay-ym",d.year+"-"+(d.month+1)),"cn"===n.lang?(lay(u[0]).attr("lay-type","year").html(d.year+" \u5e74"),lay(u[1]).attr("lay-type","month").html(d.month+1+" \u6708")):(lay(u[0]).attr("lay-type","month").html(y.month[d.month]),lay(u[1]).attr("lay-type","year").html(d.year)),m&&(n.range?!e&&"init"===a||(o.listYM=[[(o.startDate||n.dateTime).year,(o.startDate||n.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(n.type,0).list(n.type,1),"time"===n.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[d.year,d.month+1]],o.list(n.type,0))),n.range&&"init"===a&&(o.rangeLinked?(s=o.getAsYM(d.year,d.month,t?"sub":null),o.calendar(lay.extend({},d,{year:s[0],month:s[1]}),1-t)):o.calendar(null,1-t)),n.range||(c=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(/^(datetime|time)$/.test(n.type)?new Date:null),index:0,time:c}),o.limit({elem:lay(o.footer).find(C),index:0,time:c})),o.setBtnStatus(),lay(o.shortcut).find("li."+x).removeClass(x),n.range&&!m&&"init"!==a&&o.stampRange(),o},I.prototype.list=function(n,i){var l,r,e,o,d=this,s=d.config,y=d.rangeLinked?s.dateTime:[s.dateTime,d.endDate][i],m=d.lang(),t=s.range&&"date"!==s.type&&"datetime"!==s.type,c=lay.elem("ul",{"class":w+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),a=d.elemHeader[i],u=lay(a[2]).find("span"),h=d.elemCont[i||0],f=lay(h).find("."+w)[0],p="cn"===s.lang,g=p?"\u5e74":"",v=d.listYM[i]||{},D=["hours","minutes","seconds"],T=["startTime","endTime"][i];return v[0]<1&&(v[0]=1),"year"===n?(e=l=v[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==v[0]&&lay(t).addClass(x),t.innerHTML=l+g,c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n}),l++}),lay(u[p?0:1]).attr("lay-ym",l-8+"-"+v[1]).html(e+g+" - "+(l-1)+g)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:v[0],month:e,date:1};e+1==v[1]&&lay(t).addClass(x),t.innerHTML=m.month[e]+(p?"\u6708":""),c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n})}),lay(u[p?0:1]).attr("lay-ym",v[0]+"-"+v[1]).html(v[0]+g)):"time"===n&&(r=function(){lay(c).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){d.limit({elem:lay(t),date:[{hours:e},{hours:d[T].hours,minutes:e},{hours:d[T].hours,minutes:d[T].minutes,seconds:e}][a],index:i,time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),s.range||d.limit({elem:lay(d.footer).find(C),date:d[T],inedx:0,time:["hours","minutes","seconds"]})},s.range?d[T]||(d[T]="startTime"===T?y:d.endDate):d[T]=y,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

    "+m.time[t]+"

      "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
    ",c.appendChild(a)}),r()),f&&h.removeChild(f),h.appendChild(c),"year"===n||"month"===n?(lay(d.elemMain[i]).addClass("laydate-ym-show"),lay(c).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(k)||(d.rangeLinked?lay.extend(y,{year:"year"===n?e:v[0],month:"year"===n?v[1]-1:e}):y[n]=e,"year"===s.type||"month"===s.type?(lay(c).find("."+x).removeClass(x),lay(this).addClass(x),"month"===s.type&&"year"===n&&(d.listYM[i][0]=e,t&&((i?d.endDate:y).year=e),d.list("month",i))):(d.checkDate("limit").calendar(y,i,"init"),d.closeList()),d.setBtnStatus(),!s.range&&s.autoConfirm&&("month"===s.type&&"month"===n||"year"===s.type&&"year"===n)&&d.setValue(d.parse()).done().remove(),d.autoCalendarModel.auto&&!d.rangeLinked?d.choose(lay(h).find("td.layui-this"),i):d.endState&&d.done(null,"change"),lay(d.footer).find("."+L).removeClass(k))})):(e=lay.elem("span",{"class":M}),o=function(){lay(c).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(d[T][D[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(k))return a.scrollTop=30*(e-2),!0})})},u=lay(a[2]).find("."+M),o(),e.innerHTML=s.range?[m.startTime,m.endTime][i]:m.timeTips,lay(d.elemMain[i]).addClass("laydate-time-show"),u[0]&&u.remove(),a[2].appendChild(e),lay(c).find("ol").each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(k)||(s.range?d[T][D[t]]=e:y[D[t]]=e,lay(a).find("."+x).removeClass(x),lay(this).addClass(x),r(),o(),(d.endDate||"time"===s.type||"datetime"===s.type&&s.fullPanel)&&d.done(null,"change"),d.setBtnStatus())})})),d},I.prototype.listYM=[],I.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+w).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+M).remove()},I.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(C);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(k):r[i?"addClass":"removeClass"](k),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},I.prototype.parse=function(e,t){var a=this,n=a.config,i=a.rangeLinked?a.startDate:n.dateTime,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},i||n.dateTime,a.startTime):n.dateTime),i=D.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},I.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},I.prototype.getDateTime=function(e){return this.newDate(e).getTime()},I.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"!==a.position&&(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},I.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+E),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html())&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300))},I.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},I.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(C).addClass(k),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+x),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:x),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(e=n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date,o=n.startDate,n.startDate=lay.extend({},n.endDate,e?{}:n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,e?{}:n.endTime),e)&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o),r)&&(i.dateTime=lay.extend({},n.startDate)),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},I.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(k)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(k))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(k))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(k))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},I.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(C),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},I.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+L).addClass(k))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},I.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},I.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){D.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(v).on("mousedown",function(e){var t,a;D.thisId&&(t=s.getThis(D.thisId))&&(a=t.config,e.target===a.elem[0]||e.target===a.eventElem[0]||e.target===n(a.closeStop)[0]||a.elem[0]&&a.elem[0].contains(e.target)||t.remove())}).on("keydown",function(e){var t;D.thisId&&(t=s.getThis(D.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===I.thisElemDate&&(e.preventDefault(),n(t.footer).find(C)[0].click())}),n(i).on("resize",function(){if(D.thisId){var e=s.getThis(D.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},D.render=function(e){e=new I(e);return s.call(e)},D.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},D.getInst=function(e){e=s.getThis(e);if(e)return e.inst},D.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},D.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},D.close=function(e){e=s.getThis(e||D.thisId);if(e)return e.remove()},D.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},D.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(D.ready(),layui.define("lay",function(e){D.path=layui.cache.dir,l.run(lay),e(a,D)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),D}):(D.ready(),l.run(i.lay),i.laydate=D)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){var n;return e===t?(l=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=(t=w(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(e){if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r])}else{if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}this.context=g,this.selector=e}}return this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
    a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:y.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
    t
    ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o)&&(i.left=o),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
    a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1!==this.nodeType||(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined)||(this.value=e)})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this)},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"":"";return a.zIndex=o,t([a.shade?'
    ':"",'
    '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
    ':''):"")+((1!=a.type||!e)&&a.content||"")+'
    '+(n=[],l&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
    "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t,i=0,n=a.btn.length;i'+a.btn[i]+"";return'
    '+e+"
    "}():"")+(a.resize?'':"")+""],s,m('
    ')),this},t.pt.creat=function(){var e,t,i,n,a,o=this,s=o.config,l=o.index,r="object"==typeof(f=s.content),c=m("body");if(s.id&&m("."+y[0]).find("#"+s.id)[0])e=m("#"+s.id).closest("."+y[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+y.SHADE+t),"min"===(e.data("maxminStatus")||{})?h.restore(t):i.hideOnClose&&(n.show(),e.show());else{switch(s.removeFocus&&document.activeElement.blur(),"string"==typeof s.area&&(s.area="auto"===s.area?["",""]:[s.area,""]),s.shift&&(s.anim=s.shift),6==h.ie&&(s.fixed=!1),s.type){case 0:s.btn="btn"in s?s.btn:u.btn[0],h.closeAll("dialog");break;case 2:var f=s.content=r?s.content:[s.content||"","auto"];s.content='';break;case 3:delete s.title,delete s.closeBtn,-1===s.icon&&s.icon,h.closeAll("loading");break;case 4:r||(s.content=[s.content,"body"]),s.follow=s.content[1],s.content=s.content[0]+'',delete s.title,s.tips="object"==typeof s.tips?s.tips:[s.tips,!0],s.tipsMore||h.closeAll("tips")}o.vessel(r,function(e,t,i){c.append(e[0]),r?2==s.type||4==s.type?m("body").append(e[1]):f.parents("."+y[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+y[0]+l).find("."+y[5]).before(t)):c.append(e[1]),m("#"+y.MOVE)[0]||c.append(u.moveElem=i),o.layero=m("#"+y[0]+l),o.shadeo=m("#"+y.SHADE+l),s.scrollbar||u.setScrollbar(l)}).auto(l),o.shadeo.css({"background-color":s.shade[1]||"#000",opacity:s.shade[0]||s.shade}),2==s.type&&6==h.ie&&o.layero.find("iframe").attr("src",f[0]),4==s.type?o.tips():(o.offset(),parseInt(u.getStyle(document.getElementById(y.MOVE),"z-index"))||(o.layero.css("visibility","hidden"),h.ready(function(){o.offset(),o.layero.css("visibility","visible")}))),!s.fixed||u.events.resize[o.index]||(u.events.resize[o.index]=function(){o.resize()},d.on("resize",u.events.resize[o.index])),s.time<=0||setTimeout(function(){h.close(o.index)},s.time),o.move().callback(),y.anim[s.anim]&&(a="layer-anim "+y.anim[s.anim],o.layero.addClass(a).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(a)})),o.layero.data("config",s)}},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+y[0]+e),n=(""===t.area[0]&&0t.maxWidth)&&i.width(t.maxWidth),[i.innerWidth(),i.innerHeight()]),a=i.find(y[1]).outerHeight()||0,o=i.find("."+y[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+y[5])):t.fixed&&n[1]>=d.height()&&(n[1]=d.height(),e("."+y[5])):e("."+y[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(d.height()-n[1])/2,e.offsetLeft=(d.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=d.width()-n[0]:"b"===t.offset?e.offsetTop=d.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=d.width()-n[0]):"rb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=d.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?d.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?d.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=d.scrollTop(),e.offsetLeft+=d.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=d.height()-(i.find(y[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0d.width()&&(o=d.width()-180-(u.minStackArr.edgeIndex=u.minStackArr.edgeIndex||0,u.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(l.left=o,l.top=d.height()-n,a||u.minStackIndex++,r.attr("minLeft",o)),r.attr("position",s),h.style(e,l,!0),i.hide(),"page"===r.attr("type")&&r.find(y[4]).hide(),u.restScrollbar(e),c.hide())},h.restore=function(e){var t=m("#"+y[0]+e),i=m("#"+y.SHADE+e),n=t.attr("area").split(","),a=t.attr("type"),o=t.data("config")||{};t.removeData("maxminStatus"),h.style(e,{width:n[0],height:n[1],top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===a&&t.find(y[4]).show(),o.scrollbar?u.restScrollbar(e):u.setScrollbar(e),i.show()},h.full=function(t){var i=m("#"+y[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&h.restore(t),i.data("maxminStatus","max"),u.record(i),y.html.attr("layer-full")||u.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");h.style(t,{top:e?0:d.scrollTop(),left:e?0:d.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},h.title=function(e,t){m("#"+y[0]+(t||h.index)).find(y[1]).html(e)},h.close=function(o,s){var l,e,r=(t=m("."+y[0]).children("#"+o).closest("."+y[0]))[0]?(o=t.attr("times"),t):m("#"+y[0]+o),c=r.attr("type"),t=r.data("config")||{},f=t.id&&t.hideOnClose;r[0]&&(l={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[t.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return r.removeClass("layer-anim "+l),r.hide();if(c===u.type[1]&&"object"===r.attr("conType")){r.children(":not(."+y[5]+")").remove();for(var t=r.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===u.type[2])try{var n=m("#"+y[4]+o)[0];n.contentWindow.document.write(""),n.contentWindow.close(),r.find("."+y[5])[0].removeChild(n)}catch(a){}r[0].innerHTML="",r.remove()}"function"==typeof u.end[o]&&u.end[o](),delete u.end[o],"function"==typeof s&&s(),u.events.resize[o]&&(d.off("resize",u.events.resize[o]),delete u.events.resize[o])},m("#"+y.SHADE+o)[f?"hide":"remove"](),t.isOutAnim&&r.addClass("layer-anim "+l),6==h.ie&&u.reselect(),u.restScrollbar(o),"string"==typeof r.attr("minLeft")&&(u.minStackIndex--,u.minStackArr.push(r.attr("minLeft"))),h.ie&&h.ie<10||!t.isOutAnim?e():setTimeout(function(){e()},200))},h.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+y[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&h.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},h.closeLast=function(e){h.close(m(".layui-layer-"+(e=e||"page")+":last").attr("times"))},h.cache||{}),g=function(e){return i.skin?" "+i.skin+" "+i.skin+"-"+e:""};h.prompt=function(i,n){var e="",t="";"function"==typeof(i=i||{})&&(n=i),i.area&&(e='style="width: '+(o=i.area)[0]+"; height: "+o[1]+';"',delete i.area),i.placeholder&&(t=' placeholder="'+i.placeholder+'"');var a,o=2==i.formType?'":'",s=i.success;return delete i.success,h.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+g("prompt"),maxWidth:d.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?h.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},h.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,h.open(m.extend({type:1,skin:"layui-layer-tab"+g("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
      '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
    ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},h.photos=function(n,e,a){var o={};if((n=m.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},s=i.data||[],l=i.start||0,r=n.success;if(o.imgIndex=1+(0|l),n.img=n.img||"img",delete n.success,t){if(0===s.length)return h.msg("没有图片")}else{var c=m(n.photos),f=function(){s=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),s.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===s.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");h.photos(m.extend(n,{photos:{start:e,data:s,tab:n.tab},full:n.full}),!0)}),!e)return}o.imgprev=function(e){o.imgIndex--,o.imgIndex<1&&(o.imgIndex=s.length),o.tabimg(e)},o.imgnext=function(e,t){o.imgIndex++,o.imgIndex>s.length&&(o.imgIndex=1,t)||o.tabimg(e)},o.keyup=function(e){var t;o.end||(t=e.keyCode,e.preventDefault(),37===t?o.imgprev(!0):39===t?o.imgnext(!0):27===t&&h.close(o.index))},o.tabimg=function(e){if(!(s.length<=1))return i.start=o.imgIndex-1,h.close(o.index),h.photos(n,!0,e)},o.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},o.image={},o.getTransform=function(e){var t=[],i=e.rotate,n=e.scaleX,e=e.scale;return o.isNumber(i)&&0!==i&&t.push("rotate("+i+"deg)"),o.isNumber(n)&&1!==n&&t.push("scaleX("+n+")"),o.isNumber(e)&&t.push("scale("+e+")"),t.length?t.join(" "):"none"},o.event=function(e,i,n){o.main.find(".layui-layer-photos-prev").on("click",function(e){e.preventDefault(),o.imgprev(!0)}),o.main.find(".layui-layer-photos-next").on("click",function(e){e.preventDefault(),o.imgnext(!0)}),m(document).on("keyup",o.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=m(this);switch(e.attr("toolbar-event")){case"rotate":o.image.rotate=((o.image.rotate||0)+Number(e.attr("data-option")))%360,o.imgElem.css({transform:o.getTransform(o.image)});break;case"scalex":o.image.scaleX=-1===o.image.scaleX?1:-1,o.imgElem.css({transform:o.getTransform(o.image)});break;case"zoom":var t=Number(e.attr("data-option"));o.image.scale=(o.image.scale||1)+t,t<0&&o.image.scale<0-t&&(o.image.scale=0-t),o.imgElem.css({transform:o.getTransform(o.image)});break;case"reset":o.image.scaleX=1,o.image.scale=1,o.image.rotate=0,o.imgElem.css({transform:"none"});break;case"close":h.close(i)}n.offset(),n.auto(i)}),o.main.on("mousewheel DOMMouseScroll",function(e){var e=e.originalEvent.wheelDelta||-e.originalEvent.detail,t=o.main.find('[toolbar-event="zoom"]');(0'+i+''+(t=['
    '],1','','',"
    "].join("")),n.toolbar&&t.push(['
    ','','','','','','',"
    "].join("")),n.footer&&t.push(['"].join("")),t.push(""),t.join(""))+"",success:function(e,t,i){o.main=e.find(".layer-layer-photos-main"),o.footer=e.find(".layui-layer-photos-footer"),o.imgElem=o.main.children("img"),o.event(e,t,i),n.tab&&n.tab(s[l],e),"function"==typeof r&&r(e)},end:function(){o.end=!0,m(document).off("keyup",o.keyup)}},n))},u=function(){h.close(o.loadi),h.msg("当前图片地址异常
    是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1").addClass(r));layui.each(i.bars,function(t,e){var n=s('
  • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=s(this).attr("lay-type");"top"===t&&("body"===i.target?s("html,body"):u).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=s(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),o=n),l.append(n)}),c.find("."+r).remove(),"object"==typeof i.css&&l.css(i.css),c.append(l),o&&(e=function e(){return u.scrollTop()>=i.margin?t||(o.show(),t=1):t&&(o.hide(),t=0),e}()),u.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=s.extend(!0,{date:new Date,now:new Date},i);var o=arguments,r=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,o,r,a,c,u;(t=s.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,c=t.thisElem,i=(r="y"===t.type)?"top":"left",o=e[n=r?"scrollTop":"scrollLeft"](),r=e[r?"height":"width"](),a=e.offset()[i],u={},(c=c.offset()[i]-a)>r-t.margin||c."+v,E=function(e){var i=this;i.index=++f.index,i.config=c.extend({},i.config,f.config,e),i.init()};E.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300,shade:0,accordion:!1},E.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},E.prototype.init=function(e,i){var t,n=this,a=n.config,l=c(a.elem);return 1');return 0No data
  • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i[s.children]&&0",(t="href"in i?''+l+"":l,n?'
    '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
    ":'
    '+t+"
    "),""].join(""))).data("item",i),n&&(a=c('
    '),t=c("
      "),"parent"===o?(a.append(u(t,i[s.children])),l.append(a)):l.append(u(t,i[s.children]))),r.append(l))}),r},a=['
      ',"
      "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(l.elemView=c("."+g+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=c(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),f.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
      ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(h.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(h.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[s.children]&&0n.width()&&(t.addClass(x),(i=t[0].getBoundingClientRect()).left<0)&&t.removeClass(x),i.bottom>n.height())&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5))}).on("mouseleave",t,function(e){var i=c(this).children("."+C);i.removeClass(x),i.css("margin-top",0)}),f.close=function(e){e=h.getThis(e);return e?(e.remove(),h.call(e)):this},f.reload=function(e,i,t){e=h.getThis(e);return e?(e.reload(i,t),h.call(e)):this},f.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),f.reload.apply(null,t)},f.render=function(e){e=new E(e);return h.call(e)},e(r,f)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,c=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var i=this;return i.config=g.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},t="slider",v="layui-disabled",x="layui-slider-bar",b="layui-slider-wrap",T="layui-slider-wrap-btn",w="layui-slider-tips",M="layui-slider-input-txt",L="layui-slider-hover",i=function(e){var i=this;i.index=++m.index,i.config=g.extend({},i.config,m.config,e),i.render()};i.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},i.prototype.render=function(){var a=this,n=a.config,e=g(n.elem);if(1n.max&&(n.value=n.max),t=Math.floor((n.value-n.min)/(n.max-n.min)*100)+"%");var l,e=n.disabled?"#c2c2c2":n.theme,i='
      '+(n.tips?'
      ':"")+'
      '+(n.range?'
      ':"")+"
      ",t=g(n.elem),s=t.next(".layui-slider");if(s[0]&&s.remove(),a.elemTemp=g(i),n.range?(a.elemTemp.find("."+b).eq(0).data("value",n.value[0]),a.elemTemp.find("."+b).eq(1).data("value",n.value[1])):a.elemTemp.find("."+b).data("value",n.value),t.html(a.elemTemp),"vertical"===n.type&&a.elemTemp.height(n.height+"px"),n.showstep){for(var o=(n.max-n.min)/n.step,r="",d=1;d<1+o;d++){var u=100*d/o;u<100&&(r+='
      ')}a.elemTemp.append(r)}n.input&&!n.range&&(e=g('
      '),t.css("position","relative"),t.append(e),t.find("."+M).children("input").val(n.value),"vertical"===n.type?e.css({left:0,top:-48}):a.elemTemp.css("margin-right",e.outerWidth()+15)),n.disabled?(a.elemTemp.addClass(v),a.elemTemp.find("."+T).addClass(v)):a.slide(),a.elemTemp.find("."+T).on("mouseover",function(){var e="vertical"===n.type?n.height:a.elemTemp[0].offsetWidth,i=a.elemTemp.find("."+b),t=("vertical"===n.type?e-g(this).parent()[0].offsetTop-i.height():g(this).parent()[0].offsetLeft)/e*100,i=g(this).parent().data("value"),e=n.setTips?n.setTips(i):i;a.elemTemp.find("."+w).html(e),clearTimeout(l),l=setTimeout(function(){"vertical"===n.type?a.elemTemp.find("."+w).css({bottom:t+"%","margin-bottom":"20px",display:"inline-block"}):a.elemTemp.find("."+w).css({left:t+"%",display:"inline-block"})},300)}).on("mouseout",function(){clearTimeout(l),a.elemTemp.find("."+w).css("display","none")})},i.prototype.slide=function(e,i,t){var o=this,r=o.config,d=o.elemTemp,u=function(){return"vertical"===r.type?r.height:d[0].offsetWidth},c=d.find("."+b),m=d.next(".layui-slider-input"),v=m.children("."+M).children("input").val(),p=100/((r.max-r.min)/Math.ceil(r.step)),f=function(e,i,t){e=(e=100<(e=100a[1]&&a.reverse(),o.value=r.range?a:l,r.change&&r.change(o.value),"done"===t&&r.done&&r.done(o.value)},h=function(e){var i=e/u()*100/p,t=Math.round(i)*p;return t=e==u()?Math.ceil(i)*p:t},y=g(['
      u()?u():i)/u()*100/p;f(i,l),s.addClass(L),d.find("."+w).show(),e.preventDefault()},i=function(){s.removeClass(L),d.find("."+w).hide()},t=function(){i&&i(),y.remove(),r.done&&r.done(o.value)},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",e),y.on("mouseup",t).on("mouseleave",t)})}),d.on("click",function(e){var i=g("."+T),t=g(this);!i.is(event.target)&&0===i.has(event.target).length&&i.length&&(t=(i=(i=(i="vertical"===r.type?u()-e.clientY+t.offset().top-g(window).scrollTop():e.clientX-t.offset().left-g(window).scrollLeft())<0?0:i)>u()?u():i)/u()*100/p,i=r.range?"vertical"===r.type?Math.abs(i-parseInt(g(c[0]).css("bottom")))>Math.abs(i-parseInt(g(c[1]).css("bottom")))?1:0:Math.abs(i-c[0].offsetLeft)>Math.abs(i-c[1].offsetLeft)?1:0:0,f(t,i,"done"),e.preventDefault())}),m.children(".layui-slider-input-btn").children("i").each(function(i){g(this).on("click",function(){v=m.children("."+M).children("input").val();var e=((v=1==i?v-r.stepr.max?r.max:Number(v)+r.step)-r.min)/(r.max-r.min)*100/p;f(e,0,"done")})});var a=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)r.max?r.max:e,((this.value=e)-r.min)/(r.max-r.min)*100/p);f(e,0,"done")};m.children("."+M).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),a.call(this))}).on("change",a)},i.prototype.events=function(){this.config},m.render=function(e){e=new i(e);return function(){var t=this,a=t.config;return{setValue:function(e,i){return e=(e=e>a.max?a.max:e)',"",'','',"","","
      "].join("")),r=i.elem=m(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),r.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:r.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,r=e.elemColorBox[0],t=e.elemPicker=m(['
      ','
      ','
      ','
      ','
      ','
      ',"
      ",'
      ','
      ',"
      ","
      ",'
      ','
      ','
      ',"
      ","
      ",i.predefine?(o=['
      '],layui.each(i.colors,function(e,i){o.push(['
      ','
      ',"
      "].join(""))}),o.push("
      "),o.join("")):"",'
      ','
      ','',"
      ",'
      ','','',"","
      "].join(""));e.elemColorBox.find("."+C)[0];m(a)[0]&&m(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),m("body").append(t)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=r.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=m("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close)&&i.close(this.color),this},d.prototype.position=function(){var e=this,i=e.config;return t.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),r=i.elemPicker.find("."+M),t=o[0].style.backgroundColor;t?(e=Y(L(t)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?r.find("input").val(t):"rgba"===o?(o=L(t),3===(t.match(/[0-9]{1,3}/g)||[]).length?(r.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+T).css("left",280)):(r.find("input").val(t),t=280*t.slice(t.lastIndexOf(",")+1,t.length-1),i.elemPicker.find("."+T).css("left",t)),i.elemPicker.find("."+D)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):r.find("input").val("#"+F(e))):(i.select(0,100,100),r.find("input").val(""),i.elemPicker.find("."+D)[0].style.background="",i.elemPicker.find("."+T).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),r=n.elemPicker.find("."+E),f=n.elemPicker.find("."+D),u=n.elemPicker.find("."+T),g=e[0].offsetTop/180*360,p=100-(r[0].offsetTop+3)/180*100,h=(r[0].offsetLeft+3)/260*100,v=Math.round(u[0].offsetLeft/280*100)/100,b=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,r){n.select(e,i,o);var t=j({h:e,s:i,b:o}),e=F({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");b.addClass(x).removeClass(P),c[0].style.background="rgb("+t.r+", "+t.g+", "+t.b+")","torgb"===a?i.val("rgb("+t.r+", "+t.g+", "+t.b+")"):"rgba"===a?(u.css("left",280*r),i.val("rgba("+t.r+", "+t.g+", "+t.b+", "+r+")"),c[0].style.background="rgba("+t.r+", "+t.g+", "+t.b+", "+r+")",f[0].style.background="linear-gradient(to right, rgba("+t.r+", "+t.g+", "+t.b+", 0), rgb("+t.r+", "+t.g+", "+t.b+"))"):i.val("#"+e),l.change&&l.change(n.elemPicker.find("."+M).find("input").val())},o=m(['
      '].join("")),k=function(e){m("#LAY-colorpicker-moving")[0]||m("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var r=this.offsetTop,t=e.clientY;k(function(e){var i=r+(e.clientY-t),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(g=o,h,p,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-m(this).offset().top+H.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(g=i,h,p,v),e.preventDefault()}),r.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),k(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),r=d[0].offsetHeight-3,t=d[0].offsetWidth-3,t=((o=t<(o=o<-3?-3:o)?t:o)+3)/260*100,o=100-((i=r<(i=i<-3?-3:i)?r:i)+3)/180*100;y(g,h=t,p=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-m(this).offset().top-3+H.scrollTop(),o=e.clientX-m(this).offset().left-3+H.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;y(g,h=o,p=i,v),layui.stope(e),e.preventDefault(),r.trigger(e,"mousedown")}),u.on("mousedown",function(e){var r=this.offsetLeft,t=e.clientX;k(function(e){var i=r+(e.clientX-t),o=f[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(g,h,p,v=o),e.preventDefault()}),e.preventDefault()}),f.on("click",function(e){var i=e.clientX-m(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(g,h,p,v=i),e.preventDefault()}),i.each(function(){m(this).on("click",function(){m(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(L(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);g=i.h,h=i.s,p=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,y(i.h,i.s,i.b,o)})})},d.prototype.select=function(e,i,o,r){this.config;var t=F({h:e,s:100,b:100}),e=(F({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+t,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,r,t,n,l=d.val();-1>16,g:(65280&t)>>8,b:255&t},r=Y(n),s[0].style.background=o="#"+F(r),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i?(c.select(r.h,r.s,r.b,i),a.change&&a.change(o)):(c.color=l,a.done&&a.done(l),c.removePicker())}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=m(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=m(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),m(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,r;n.thisId&&(i=l.getThis(n.thisId))&&(o=i.config,r=i.elemColorBox.find("."+C),m(e.target).hasClass(c)||m(e.target).parents("."+c)[0]||m(e.target).hasClass(a.replace(/\./g,""))||m(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(L(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),r[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!m(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(r,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),c="element",r="layui-this",h="layui-show",o=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,c,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(o),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
      '+(i.content||"")+"
      "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),C.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",p="layui-nav-bar",b="layui-nav-tree",v="layui-nav-child",m="layui-nav-more",g="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(r).siblings().removeClass(r),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,c,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(r)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,c,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.closest(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+v),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+r).removeClass(r),e.addClass(r)),i.hasClass(b)){var n=f+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+p).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(g),l[0]&&(s?(l.slideDown(200,o),e.addClass(n)):(e.removeClass(n),l.show().slideUp(200,o)),"string"!=typeof i.attr("lay-accordion")&&"all"!==i.attr("lay-shrink")||((s=e.siblings("."+n)).removeClass(n),s.children("."+v).show().stop().slideUp(200,o)))}layui.event.call(this,c,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,c,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+p)[0]||(i.append(a),(i.hasClass(b)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+v);i.hasClass(b)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(g),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+m).addClass(m+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(b)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+v).removeClass(h),i.find("."+m).removeClass(m+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(b)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+v)[0]&&!t.children("."+m)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),u(window).on("resize",C.tabAuto),t(c,a)});layui.define(["lay","layer"],function(e){"use strict";var x=layui.$,a=layui.lay,i=layui.layer,b=layui.device(),t="upload",r="layui_"+t+"_index",o={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var i=this;return i.config=x.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var i=this,e=i.config.id;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:(l.that[e]=i).config}},u="layui-upload-file",f="layui-upload-form",F="layui-upload-iframe",w="layui-upload-choose",L="UPLOADING",j=function(e){var i=this;i.index=++o.index,i.config=x.extend({},i.config,o.config,e),i.render()};j.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},j.prototype.reload=function(e){var i=this;i.config=x.extend({},i.config,e),i.render(!0)},j.prototype.render=function(e){var i=this,t=i.config,n=x(t.elem);return 1"].join("")),n=i.elem.next();(n.hasClass(u)||n.hasClass(f))&&n.remove(),b.ie&&b.ie<10&&i.elem.wrap('
      '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),b.ie&&b.ie<10&&e.initIE()},j.prototype.initIE=function(){var t,e=this.config,i=x(''),n=x(['
      ',"
      "].join(""));x("#"+F)[0]||x("body").append(i),e.elem.next().hasClass(f)||(this.elemFile.wrap(n),e.elem.next("."+f).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},j.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},j.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},j.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},j.prototype.upload=function(e,i){var t,n,a,o,u=this,f=u.config,c=f.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},r=function(){var a=0,o=0,l=s(),r=function(){f.multiple&&a+o===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:a,failed:o})},t=function(t){var n=new FormData,i=function(e){t.unified?layui.each(l,function(e,i){delete i[L]}):delete e[L]};if(layui.each(f.data,function(e,i){i="function"==typeof i?i():i,n.append(e,i)}),t.unified)layui.each(l,function(e,i){i[L]||(i[L]=!0,n.append(f.field,i))});else{if(t.file[L])return;n.append(f.field,t.file),t.file[L]=!0}var e={url:f.url,type:"post",data:n,dataType:f.dataType||"json",contentType:!1,processData:!1,headers:f.headers||{},success:function(e){f.unified?a+=u.fileLength:a++,p(t.index,e),r(t.index),i(t.file)},error:function(e){f.unified?o+=u.fileLength:o++,u.msg(c.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
      ")),m(t.index),r(t.index),i(t.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=x.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),f.progress(i,(f.item||f.elem)[0],e,t.index))}),e}),x.ajax(e)};f.unified?t({unified:!0,index:0}):layui.each(l,function(e,i){t({index:e,file:i})})},d=function(){var n=x("#"+F);u.elemFile.parent().submit(),clearInterval(j.timer),j.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(c["cross-domain"]),clearInterval(j.timer),m()}e&&(clearInterval(j.timer),i.html(""),p(0,e))},30)},p=function(e,i){if(u.elemFile.next("."+w).remove(),l.value="","json"===f.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(c["data-format-error"])}"function"==typeof f.done&&f.done(i,e||0,function(e){u.upload(e)})},m=function(e){f.auto&&(l.value=""),"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)})},h=f.exts,g=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),v={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i}},y={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",g=0===g.length?l.value.match(/[^\/\\]+\..+/g)||[]:g;if(0!==g.length){switch(f.accept){case"file":layui.each(g,function(e,i){if(h&&!RegExp(".\\.("+h+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"jpg|png|gif|bmp|jpeg|svg")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(c["check-error"]||"\u9009\u62e9\u7684"+y+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!f.auto||(f.choose&&f.choose(v),"choose"!==i)){if(u.fileLength=(a=0,y=s(),layui.each(y,function(){a++}),a),f.number&&u.fileLength>f.number)return u.msg("function"==typeof c["limit-number"]?c["limit-number"](f,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+f.number+" \u4e2a\u6587\u4ef6
      \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*f.size&&(i=1<=(i=f.size/1024)?i.toFixed(2)+"MB":f.size+"KB",l.value="",o=i)}),o)return u.msg("function"==typeof c["limit-size"]?c["limit-size"](f,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!f.before||!1!==f.before(v))b.ie?(9'+e+"")};a.elem.off("upload.start").on("upload.start",function(){var e=x(this);n.config.item=e,n.elemFile[0].click()}),b.ie&&b.ie<10||a.elem.off("upload.over").on("upload.over",function(){x(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){x(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=x(this),i=i.originalEvent.dataTransfer.files||[];t.removeAttr("lay-over"),o(i),a.auto?n.upload():l(i)}),n.elemFile.on("change",function(){var e=this.files||[];0!==e.length&&(o(e),a.auto?n.upload():l(e))}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data(r)||(a.elem.on("click",function(){n.isFile()||x(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),x(this).trigger("upload.over")}).on("dragleave",function(e){x(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),x(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){x(this).trigger("upload.action")}),a.elem.data(r,a.id))},l.that={},l.getThis=function(e){var i=l.that[e];return i||hint.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},o.render=function(e){e=new j(e);return l.call(e)},e(t,o)});layui.define(["lay","layer","util"],function(e){"use strict";var C=layui.$,h=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",N="layui-this",T="layui-hide",$="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return C.extend(!0,this.config,e),this},t.prototype.verify=function(e){return C.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return C(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=C(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;C(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=C(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){var e=e||a.find("input,textarea"),t=(i.autocomplete&&e.attr("autocomplete",i.autocomplete),function(e,t){var i=e.val(),a=Number(i),n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max")),s=Number(e.attr("lay-precision")),o="click"!==t&&""===i,c="init"===t;isNaN(a)||("click"===t&&(a=!!C(this).index()?a-n:a+n),t=function(e){return((e.toString().match(/\.(\d+$)/)||[])[1]||"").length},s=0<=s?s:Math.max(t(n),t(i)),o||(c||r<=(a=a<=l?l:a)&&(a=r),s&&(a=a.toFixed(s)),e.val(a)),e[(a'),e=layui.isArray(i.value)?i.value:[i.value],e=C((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
      '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),"function"==typeof i.init&&i.init.call(this,r,i),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),r.on("blur",function(){"function"==typeof i.blur&&i.blur.call(this,r,i)}),e.on("click",function(){var e=r.attr("lay-filter");C(this).hasClass($)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,w,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(C(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),init:function(e){t.call(this,e,"init")},click:function(e){t.call(this,e,"click")},blur:function(e){t.call(this,e,"blur")}}};n()})},select:function(e){var p,c="\u8bf7\u9009\u62e9",m="layui-form-select",g="layui-select-title",x="layui-select-none",b="",e=e||a.find("select"),k=function(e,t){C(e.target).parent().hasClass(g)&&!t||(C("."+m).removeClass(m+"ed "+m+"up"),p&&b&&p.val(b)),p=null},u=function(a,e,t){var s,r,i,n,o,l,c=C(this),u=a.find("."+g),d=u.find("input"),f=a.find("dl"),h=f.children("dd"),y=f.children("dt"),v=this.selectedIndex;e||(r=c.attr("lay-search"),i=function(){var e=a.offset().top+a.outerHeight()+5-F.scrollTop(),t=f.outerHeight();v=c[0].selectedIndex,a.addClass(m+"ed"),h.removeClass(T),y.removeClass(T),s=null,h.removeClass(N),0<=v&&h.eq(v).addClass(N),e+t>F.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(b=C(c[0].options[t]).html(),0===t&&b===d.attr("placeholder")&&(b=""),d.val(b||""))})},o=function(){var e,t,i=f.children("dd."+N);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

      '):f.find("."+x).remove()},"keyup"),""===t&&(c.val(""),f.find("."+N).removeClass(N),(c[0].options[0]||{}).value||f.children("dd:eq(0)").addClass(N),f.find("."+x).remove()),o()}).on("blur",function(e){var t=c[0].selectedIndex;p=d,b=C(c[0].options[t]).text(),0===t&&b===d.attr("placeholder")&&(b=""),setTimeout(function(){l(d.val(),function(e){b||d.val("")},"blur")},200)}),h.on("click",function(){var e=C(this),t=e.attr("lay-value"),i=c.attr("lay-filter");return e.hasClass($)||(e.hasClass("layui-select-tips")?d.val(""):(d.val(e.text()),e.addClass(N)),e.siblings().removeClass(N),c.val(t).removeClass("layui-form-danger"),layui.event.call(this,w,"select("+i+")",{elem:c[0],value:t,othis:a}),n(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),C(document).off("click",k).on("click",k))};e.each(function(e,t){var i=C(this),a=i.next("."+m),n=this.disabled,l=t.value,r=C(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),t=t&&!t.value&&t.innerHTML||c,r=C(['
      ','
      ','','
      ','
      ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?s.push("optgroup"===i?"
      "+t.label+"
      ":'
      '+C.trim(t.innerHTML)+"
      "):s.push('
      '+C.trim(t.innerHTML||c)+"
      ")}),0===s.length&&s.push('
      \u6ca1\u6709\u9009\u9879
      '),s.join("")+"
      "),"
      "].join(""));a[0]&&a.remove(),i.after(r),u.call(this,r,n,o)})},checkbox:function(e){var o={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=C(this),a=i.attr("lay-skin")||"primary",n=d.escape(C.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=o[a]||o.checkbox,s=i.next("."+r[0]);if(s[0]&&s.remove(),i.next("[lay-checkbox]")[0]&&(n=i.next().html()||""),n="switch"===a?n.split("|"):[n],"string"==typeof i.attr("lay-ignore"))return i.show();l=C(['
      ",(s={checkbox:[n[0]?"
      "+n[0]+"
      ":"primary"===a?"":"
      ",''].join(""),"switch":"
      "+((t.checked?n[0]:n[1])||"")+"
      "})[a]||s.checkbox,"
      "].join(""));i.after(l),function(a,n){var l=C(this);a.on("click",function(){var e=C(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+o.SUBTRA).removeClass(o.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],w,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var r="layui-form-radio",s=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=C(this),a=i.next("."+r),n=this.disabled;if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();n=C(['
      ','',"
      "+(a=d.escape(t.title||""),a=i.next("[lay-radio]")[0]?i.next().html():a)+"
      ","
      "].join(""));i.after(n),function(a){var n=C(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(o),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=C(this).next("."+r);this.checked=!1,e.removeClass(r+"ed"),e.children(".layui-icon").removeClass(l+" "+s[0]).addClass(s[1])}),n[0].checked=!0,a.addClass(r+"ed"),a.children(".layui-icon").addClass(l+" "+s[0]),layui.event.call(n[0],w,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,n)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?C(e).is(o)?(a=C(e),t()):e.each(function(e,t){var i=C(t);i.closest(o).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=C(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=C(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=C.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=C(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(o).eq(0),l=n.find("*[lay-verify]");return!!r.validate(l)&&(i=r.getValue(null,n),l={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?n:a.parents("form"))[0],field:i},"function"==typeof t&&t(l),layui.event.call(this,w,"submit("+e+")",l))}),r=new t,t=C(document),F=C(window);C(function(){r.render()}),t.on("reset",o,function(){var e=C(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",o,i).on("click","*[lay-submit]",i),e(w,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var f=layui.$,r=layui.lay,m=layui.laytpl,I=layui.laypage,p=layui.layer,v=layui.form,g=layui.util,b=layui.hint(),x=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var t=this;return t.config=f.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(f(t).html()||String(i)).render(f.extend({LAY_COL:a},e.tplData))),e.text?f("
      "+i+"
      ").text():i},N="table",t=".layui-table",R="layui-hide",y="layui-hide-v",h="layui-none",D="layui-table-view",o=".layui-table-header",L=".layui-table-body",c=".layui-table-fixed-r",A=".layui-table-pageview",E=".layui-table-sort",_="layui-table-checked",M="layui-table-edit",O="layui-table-hover",P="laytable-cell-group",W="layui-table-col-special",j="layui-table-tool-panel",H="layui-table-expanded",S="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
      ','
      ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
      ","
      "].join("")},a=['',"","
      "].join(""),u=[,"{{# if(d.data.toolbar){ }}",'
      ','
      ','
      ',"
      ","{{# } }}",'
      ',"{{# if(d.data.loading){ }}",'
      ','',"
      ","{{# } }}","{{# var left, right; }}",'
      ',e(),"
      ",'
      ',a,"
      ","{{# if(left){ }}",'
      ','
      ',e({fixed:!0}),"
      ",'
      ',a,"
      ","
      ","{{# }; }}","{{# if(right){ }}",'
      ','
      ',e({fixed:"right"}),'
      ',"
      ",'
      ',a,"
      ","
      ","{{# }; }}","
      ","{{# if(d.data.totalRow){ }}",'
      ','','',"
      ","
      ","{{# } }}",'
      ','
      ',"
      "].join(""),d=f(window),F=f(document),i=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},s=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=f(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=f.extend({pageName:"page",limitName:"limit"},a.request),a.response=f.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-\d+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=d.height()-t.fullHeightGap):a.height&&/^#\w+\S*-\d+$/.test(a.height)&&(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=f(t.parentDiv).height()-t.parentHeightGap);var l,e=a.elem,i=e.next("."+D),n=t.elem=f("
      ");n.addClass((l=[D,D+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(u,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(L),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(c),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,d=this,r=d.config;if(r.clientWidth=r.width||(l=function(e){var t,a=(e=e||r.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return r.clientWidth;r.height=r.maxHeight||r.height,r.css&&-1===r.css.indexOf(D)&&(a=r.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+D+"-"+d.index+" "+t)}),r.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[r.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"].concat(x.ie?[".layui-table-edit{height: "+i+";}","td[data-edit]:hover:after{height: "+i+";}"]:[]),function(e,t){t&&o.push(a+" "+t)})),l.css&&o.push(l.css),r.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
      ','
      ','
      '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=f(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
      ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
      ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](R),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+P)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(R)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
      ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(R),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(A).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),d=n.response,r=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),"function"==typeof n.done&&n.done(e,a,e[d.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[d.dataName]=k.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[d.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=f.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),f.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},complete:function(e,t){"function"==typeof n.complete&&n.complete(e,t)},success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return b.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],p=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],d=[],r=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
      "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
      "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+_+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),p.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,p.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](R),a.layPage.find(A)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(R),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(R),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,I.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(r,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&r.dataTotal.push({field:t.field,total:f("
      "+l+"
      ").text()}),['','
      "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(f.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
      "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(a){var e=this,i=e.config,l=e.layBody.find("tr"+("all"===a.index?"":'[data-index="'+a.index+'"]')),t=(a=f.extend({type:"checkbox"},a),k.cache[e.key]),n="checked"in a,o=function(e){return"radio"===a.type||(n?a.checked:!e)},t=(layui.each(t,function(e,t){"array"===layui.type(t)||t[i.disabledName]||(Number(a.index)===e||"all"===a.index?(e=t[i.checkName]=o(t[i.checkName]),l[e?"addClass":"removeClass"](_),"radio"===a.type&&l.siblings().removeClass(_)):"radio"===a.type&&delete t[i.checkName])}),l.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[a.type]||"checkbox")+'"]:not(:disabled)')),d=t.last(),r=d.closest(c);("radio"===a.type&&r.hasClass(R)?t.first():t).prop("checked",o(d.prop("checked"))),e.syncCheckAll(),e.renderForm(a.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(E);t.layHeader.find("th").find(E).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){b.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,N,"sort("+n+")",f.extend({config:i},i.initSort)))},i.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=f(['
      ','',"
      "].join("")),t.layBox.append(t.layInit)))},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap&&(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135),1
      ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(L).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),u.height&&a.css("max-height",u.height-(s.layTool.outerHeight()||50)),i.find("."+j)[0]||i.append(a),s.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),p.close(s.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],s.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
    • "+(t.fieldTitle||t.title||t.field)+"
    • ").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=s.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,s.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](R),l!=i.hide&&s.setParentCol(!t,e),s.resize(),layui.event.call(this,N,"colToggled("+c+")",{col:i,config:u}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});x.ie?p.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
    • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
    • ','
    • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
    • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(s,u.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),d=[""].join(""),r=f(s.layHeader.html());r.append(s.layMain.find("table").html()),r.append(s.layTotal.find("table").html()),r.find("th.layui-table-patch").remove(),r.find("thead>tr>th."+W).filter(function(e,t){return!f(t).children("."+P).length}).remove(),r.find("tbody>tr>td."+W).remove(),o.document.write(d+r.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+c+")",f.extend({event:t,config:u},{}))}),s.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=s.col(t);layui.event.call(this,N,"colTool("+c+")",f.extend({event:a,config:u,col:t},{}))}),s.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,N,"pagebar("+c+")",f.extend({event:t,config:u},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||o.css("cursor","")}).on("mousedown",function(e){var t,a=f(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],s.cssRules(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||u.cellMinWidth,d.maxWidth=a.data("maxwidth")||u.cellMaxWidth}),a.data(S,d),w.eventMoveElem=a)}),w.docEvent||F.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(S)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+D).attr("lay-id"),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),p.close(s.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+D).attr("lay-id"),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(S),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(E),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");s.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(E+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?s.sort({field:t,type:"asc",fromEvent:!0}):s.sort({field:t,type:"desc",fromEvent:!0})}),s.commonMember=function(e){var t=f(this).parents("tr").eq(0).data("index"),r=s.layBody.find('tr[data-index="'+t+'"]'),c=(c=k.cache[s.key]||[])[t]||{},a={tr:r,config:u,data:k.clearCacheKey(c),dataCache:c,index:t,del:function(){k.cache[s.key][t]=[],r.remove(),s.scrollPatch()},update:function(e,d){e=e||{},layui.each(e,function(i,l){var n=r.children('td[data-field="'+i+'"]'),o=n.children(y);c[i]=a.data[i]=l,s.eachCols(function(e,t){var a;t.field==i?(o.html(T.call(s,{item3:t,content:l,tplData:f.extend({LAY_COL:t},c)})),n.data("content",l)):d&&(t.templet||t.toolbar)&&(e=r.children('td[data-field="'+(t.field||e)+'"]'),a=c[t.field],e.children(y).html(T.call(s,{item3:t,content:a,tplData:f.extend({LAY_COL:t},c)})),e.data("content",a))})}),s.renderForm()},setRowChecked:function(e){s.setRowChecked(f.extend({index:t},e))}};return f.extend(a,e)}),a=(s.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(s.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?s.setRowChecked({index:"all",checked:l}):(s.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+c+")",r.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return s.col(a.data("key"))}})))}),s.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;s.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+c+")",r.call(t[0],{checked:i,getCol:function(){return s.col(a.data("key"))}}))}),s.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").addClass(O)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").removeClass(O)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");f(e.target).is(t)||f(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){u.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=f(this);t.data("off")||layui.event.call(this,N,e+"("+c+")",r.call(t.children("td")[0]))}),n=function(e,t){var a,i,l,n;(e=f(e)).data("off")||(a=e.data("field"),n=e.data("key"),n=s.col(n),i=e.closest("tr").data("index"),i=k.cache[s.key][i],l=e.children(y),(n="function"==typeof n.edit?n.edit(i):n.edit)&&((n=f("textarea"===n?'':''))[0].value=e.data("content")||i[a]||l.text(),e.find("."+M)[0]||e.append(n),n.focus(),t)&&layui.stope(t))},i=(s.layBody.on("change","."+M,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[s.key][e],l=r.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return s.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+c+")",l)}).on("blur","."+M,function(){f(this).remove()}),s.layBody.on(u.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),s.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=f(this),a=t.children(y);t.data("off")||t.parent().hasClass(H)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.outerWidth()||0'))},l=function(e){var t=f(this),a=t.parent(),i=a.data("key"),l=s.col(i),n=a.parent().data("index"),a=a.children(y),o="layui-table-cell-c",d=f('');"tips"===(l.expandedMode||u.cellExpandedMode)?s.tipsIndex=p.tips(['
      ',a.html(),"
      ",''].join(""),a[0],{tips:[3,""],time:-1,anim:-1,maxWidth:x.ios||x.android?300:s.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){p.close(t)})}}):(s.elem.find("."+o).trigger("click"),s.cssRules(i,function(e){var t=e.style.width,a=l.expandedWidth||u.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),s(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')))}),d.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){r[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))})})),f("."+j).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var E=layui.$,x=layui.form,B=layui.table,y=layui.hint(),j={config:{},on:B.on,eachCols:B.eachCols,index:B.index,set:function(e){var t=this;return t.config=E.extend({},t.config,e),t},resize:B.resize,getOptions:B.getOptions,hideCol:B.hideCol,renderData:B.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){j.reloadData(n,e,t)}}},P=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},F="layui-hide",L=".layui-table-main",q=".layui-table-fixed-l",R=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",Y="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",s="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",H="LAY_EXPAND",z="LAY_HAS_EXPANDED",X="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=function(e){var t=this;t.index=++j.index,t.config=E.extend(!0,{},t.config,j.config,e),t.init(),t.render()},f=function(n,i,e){var l=B.cache[n];layui.each(e||l,function(e,t){var a=t[Y];-1!==a.indexOf("-")&&(l[a]=t),t[i]&&f(n,i,t[i])})},d=function(l,a,e){var d=P(l),r=("reloadData"!==e&&(d.status={expand:{}}),E.extend(!0,{},d.getOptions(),a)),n=r.tree,o=n.customName.children,i=n.customName.id,c=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,B.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},r.cols),a.parseData),u=a.done;r.url?e&&(!c||c.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(c)&&(a=c.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=d.flatToTree(a[t])),p(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&d.status.expand[e[i]]},o),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),d.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=d.flatToTree(a.data)),d.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n=(a||delete d.isExpandAll,this.elem.next()),i=(d.updateStatus(null,{LAY_HAS_EXPANDED:!1}),f(l,o),n.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(i.length&&(e=j.checkStatus(l),i.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!a&&r.autoSort&&r.initSort&&r.initSort.type&&j.sort(l),d.renderTreeTable(n),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),B.render(E.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?B.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,d,r,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||B.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",r={},layui.each(o,function(e,t){l=a+t[a],r[l]=E.extend({},t),r[l][i]=[]}),layui.each(r,function(e,t){(d=a+t[n])&&r[d]&&r[d][i].push(t)}),Object.keys(r).map(function(e){return r[e]}).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=E.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},t.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[Y],getParentNode:function(){return n.getNodeByIndex(e[s])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[Y],getParentNode:function(){return n.getNodeByIndex(i[s])},update:function(e){return j.updateNode(a,t,e)},remove:function(){return j.removeNode(a,t)},expand:function(e){return j.expandNode(a,E.extend({},e,{index:t}))},setChecked:function(e){return j.setRowChecked(a,E.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=j.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[Y],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=B.cache[n],l=n[e];if("delete"!==a&&l)return E.extend(l,a),t?E.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
      '),N=function(e){y[X]="success",y[s.children]=e,c.initData(y[s.children],y[Y]),U(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=E.extend({},m.where||o.where),C=m.autoParam,layui.each(C,function(e,t){t=t.split("=");I[t[0].trim()]=y[(t[1]||t[0]).trim()]}),(C=m.contentType||o.contentType)&&0==C.indexOf("application/json")&&(I=JSON.stringify(I)),w=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,k=m.headers||o.headers,_=m.parseData||o.parseData,O=m.response||o.response,E.ajax({type:w||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:k||{},success:function(e){(e="function"==typeof _?_.call(o,e)||e:e)[O.statusName]!=O.statusCode?(y[X]="error",g.html('')):N(e[O.dataName])},error:function(e,t){y[X]="error","function"==typeof o.error&&o.error(e,t)}})),h;y[z]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((m=o.initSort).type?layui.sort(v,m.field,"desc"===m.type,!0):layui.sort(v,B.config.indexName,null,!0)),c.initData(y[s.children],y[Y]),w=B.getTrHtml(r,v,null,null,e),S={trs:E(w.trs.join("")),trs_fixed:E(w.trs_fixed.join("")),trs_fixed_r:E(w.trs_fixed_r.join(""))},A=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed_r.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A})}),d.find(L).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,A),n)&&!p&&layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)}),d.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))).addClass(F);V("resize-"+r,function(){j.resize(r)},0)(),l&&"loading"!==y[X]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},g=(j.expandNode=function(e,t){var a,n,i,e=P(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),U({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},j.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=P(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=j.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])return!(c=!1)}),!c)return void layui.each(j.getData(a),function(e,t){j.expandNode(a,{index:t[Y],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[z])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[z]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return j.sort(a);var s,n=B.getTrHtml(a,e),f={trs:E(n.trs.join("")),trs_fixed:E(n.trs_fixed.join("")),trs_fixed_r:E(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[Y].split("-").length-1;s={"data-index":t[Y],"lay-data-index":t[Y],"data-level":a},f.trs.eq(e).attr(s),f.trs_fixed.eq(e).attr(s),f.trs_fixed_r.eq(e).attr(s)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);j.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),d=(l.hasClass(h)||l.addClass(h),i.id),r=i.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(l.attr("lay-filter"),n),f=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(B.cache[d],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=E(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
      ',a[H]?o.flexIconOpen:o.flexIconClose,"
      ",o.showIcon?'
      '+(a[c.icon]||o.icon||(a[u]?a[H]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
      ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),U({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&n.isExpandAll===undefined)return j.expandAll(d,!0);!1!==a&&f?layui.each(f,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),U({trElem:e.first()},!0)}):V("renderTreeTable-"+d,function(){i.hasNumberCol&&g(n),x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0)()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(B.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[Y]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),p=(t.prototype.render=function(e){var t=this;t.tableIns=B["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,E.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=E.extend(t,{},n.config,e),n.render(a)},j.reloadData=function(){var e=E.extend(!0,[],arguments);return e[3]="reloadData",j.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):E.extend(t,a),l.push(E.extend({},t)),i||(l=l.concat(p(t[n],a,n,i)))}),l}),o=(t.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||B.cache[n.id],p(e,t,i.customName.children,a)},t.prototype.getTableData=function(){var e=this.getOptions();return B.cache[e.id]},j.updateStatus=function(e,t,a){var e=P(e),n=e.getOptions();return a=a||(n.url?B.cache[n.id]:n.data),e.updateStatus(a,t)},j.sort=function(e){var t=P(e);t&&t.getOptions().autoSort&&(t.initData(),j.renderData(e))},function(n){var t=n.config.id,i=P(t),a=n.data=j.getNodeDataByIndex(t,n.index),l=a[Y],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(E.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){j.removeNode(t,a)},n.setRowChecked=function(e){j.setRowChecked(t,{index:a,checked:e})}}),u=(j.updateNode=function(e,a,t){var n,i,l,d,r,o=P(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=B.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(E(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},j.removeNode=function(e,t){var a,n,i,l,d,r=P(e);r&&(d=(a=r.getOptions()).tree,n=a.elem.next(),i=[],t=r.getNodeDataByIndex("string"===layui.type(t)?t:t[Y],!1,"delete"),l=r.getNodeDataByIndex(t[s]),r.updateCheckStatus(l),l=r.treeToFlat([t],t[d.customName.pid],t[s]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[Y]+'"]')}),n.find(i.join(",")).remove(),d=r.initData(),layui.each(r.treeToFlat(d),function(e,t){t[m]&&t[m]!==t[Y]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[Y],"lay-data-index":t[Y]})}),layui.each(B.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(r),j.resize(e))},j.addNodes=function(e,t){var a=P(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=B.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=E.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[z]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")).remove(),a.initData(),u[z]=!1,u[X]="local",U({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=B.cache[e].splice(-1===o?B.cache[e].length:o);if(B.cache[e]=B.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(B.cache[e]))):n.data=B.cache[e]),a.initData(),l.find(".layui-none").length)return B.renderData(e),c;var x,f=B.getTrHtml(e,c),h={trs:E(f.trs.join("")),trs_fixed:E(f.trs_fixed.join("")),trs_fixed_r:E(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[Y],"lay-data-index":t[Y],"data-level":"0"},h.trs.eq(e).attr(x),h.trs_fixed.eq(e).attr(x),h.trs_fixed_r.eq(e).attr(x)}),parseInt(c[0][Y])-1),y=l.find(L),n=l.find(q),f=l.find(R);-1==r?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][m],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(B.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))}return a.updateCheckStatus(u),j.resize(e),t&&l.find(L).find('tr[lay-data-index="'+c[0][Y]+'"]').get(0).scrollIntoViewIfNeeded(),c}},j.checkStatus=function(e,n){var i,t,a,l=P(e);if(l)return l=l.getOptions().tree,i=B.config.checkName,t=j.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?B.cache[e]:j.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},j.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&j.sort(e)}),j.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),j.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand)&&U({trElem:e.tr.first()},null,null,null,!0)}),j.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),j.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=P(t),o(e),u.call(a,e.tr,e.checked))}),t.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=E(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},t.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=B.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[Y]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),o=!(r=!0),e=(e="all"===a.data.cascade?B.cache[n]:j.getData(n,!0)).filter(function(e){return!e[u.disabledName]}),layui.each(e,function(e,t){if((t[l]||t[b])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}),o=o&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=B.config.checkName,t=t.customName.children,d=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
      '+i.text.none+"
      "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(F),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(F)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0"),c=p(['
      ','
      ','
      ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
      ",s.edit?(a={add:'',update:'',del:''},n=['
      '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
      "):void 0):"","
      "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+m)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+x),i=e.children("."+b),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+k),e=e.find("."+g),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+w),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(N)?(n.removeClass(N),i.slideUp(200),a.removeClass(v).addClass(C),l.updateFieldValue(t,"spread",!1)):(n.addClass(N),i.slideDown(200),a.addClass(v).removeClass(C),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+m)).removeClass(N),i.children("."+w).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(v).addClass(C))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(N)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+w)[0]||e.find("."+w).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+m)[0]&&(a=(e=e.parent("."+w)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+x).children("."+b).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+x),h=e.children("."+b);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+w),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+k).addClass("layui-tree-icon"),h.find("."+k).children(".layui-icon").addClass(C).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(f),r.append('
      '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+w),[c]),o.showLine&&(n[0]?(n.hasClass(L)||n.addClass(L),r.find("."+w).each(function(){p(this).children("."+m).last().addClass(F)}),(n.children("."+m).last().prev().hasClass(F)?n.children("."+m).last().prev():n.children("."+m).last()).removeClass(F),!r.parent("."+w)[0]&&r.next()[0]&&n.children("."+m).last().removeClass(F)):(l=r.siblings("."+m),a=1,c=r.parent("."+w),layui.each(l,function(e,i){p(i).children("."+w)[0]||(a=0)}),(1==a?(l.children("."+w).addClass(T),l.children("."+w).children("."+m).removeClass(F),r.children("."+w).addClass(T),c.removeClass(L),c.children("."+m).last().children("."+w).children("."+m).last()):r.children("."+w).children("."+m)).addClass(F))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+w).children("."+m).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+g).html(),h.children("."+g).html(""),h.append(''),h.children(".layui-tree-editInput").val(l).focus(),i=function(e){var i=e.val().trim()||o.text.defaultNodeName;e.remove(),h.children("."+g).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+m)[0]||r.next("."+m)[0]||r.parent("."+w)[0]?(r.siblings("."+m).children("."+x)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+m)[0]&&(i=e.siblings("."+m).children("."+x),a=(e=e.parent("."+w).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+m)))})(r),o.showLine&&(e=r.siblings("."+m),a=1,i=r.parent("."+w),layui.each(e,function(e,i){p(i).children("."+w)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(L),e.children("."+w).addClass(T),e.children("."+w).children("."+m).removeClass(F)),(r.next()[0]?i.children("."+m).last():r.prev()).children("."+w).children("."+m).last().addClass(F),r.next()[0]||r.parents("."+m)[1]||r.parents("."+m).eq(0).next()[0]||r.prev("."+m).addClass(F)):!r.next()[0]&&r.hasClass(F)&&r.prev().addClass(F))):(e=r.parent("."+w).prev(),o.showLine?(e.find("."+k).removeClass("layui-tree-icon"),e.find("."+k).children(".layui-icon").removeClass(v).addClass("layui-icon-file"),(i=e.parents("."+w).eq(0)).addClass(L),i.children("."+m).each(function(){p(this).children("."+w).children("."+m).last().addClass(F)})):e.find(".layui-tree-iconArrow").addClass(f),r.parents("."+m).eq(0).removeClass(N),r.parent("."+w).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+g).each(function(){var i,e=p(this).parents("."+x);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+w)[0]&&i(e.parent("."+w).parent("."+m))})(e.parent("."+m)))}),e.find("."+x).each(function(){var e=p(this).parent("."+m);e.hasClass("layui-tree-searchShow")||e.addClass(f)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+x).each(function(){p(this).parent("."+m).removeClass("layui-tree-searchShow "+f)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+m).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+x).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var s=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=s.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},d="layui-hide",h="layui-btn-disabled",r="layui-none",c="layui-transfer-box",u="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
      ','
      ','","
      ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
        ',"
        "].join("")},p=['
        ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
        ','",'","
        ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
        "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=s.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=s.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=s(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=s(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+c),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
      • ",'',"
      • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(r){var c=this,o=c.config;r=r||{},c.layBox.each(function(e){var t=s(this),a=t.find("."+f),t=t.find("."+u).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=s(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),c.layBtn.eq(e)[l?"removeClass":"addClass"](h),r.stopNone||(i=a.children("li:not(."+d+")").length,c.noneView(a,i?"":o.text.none))}),c.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=s('

        '+(t||"")+"

        ");e.find("."+r)[0]&&e.find("."+r).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){s(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=s.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),r=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+c).find("."+f).append(t.clone()),t.remove(),r.push(a[0].value),i.setValue()):l.each(function(e){s(this).find("."+f).children("li").each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+c).find("."+f).append(e.clone()),e.remove(),r.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+c).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(r),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=s(this).prev(),t=e[0].checked,a=e.parents("."+c).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=s(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent();a[0].disabled||n.transfer(i.data("index"),t)}),n.layBtn.on("click",function(){var e=s(this),t=e.data("index");e.hasClass(h)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=s(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](d),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+d).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,t=layui.lay,o=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,r,e,i)}}),r="carousel",d="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",m="layui-carousel-next",l="layui-carousel-arrow",f="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,o.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(d),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+l)[0]&&e.elem.find("."+l).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
          ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
        "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+f)[0]&&n.elem.find("."+f).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(m),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(d+" "+c+" "+m+" "+s+" "+u),t.eq(a.index).addClass(d),n.haveSlide=!1},350),n.elemInd.find("li").eq(a.index).addClass(d).siblings().removeClass(d),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,r,"change("+l+")",e))},i.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){"always"!==e.config.autoplay&&clearInterval(e.timer)}).on("mouseleave",function(){"always"!==e.config.autoplay&&e.autoplay()}),i.elem.data("haveEvents",!0))},o.render=function(e){return new i(e)},e(r,o)});layui.define(["jquery","lay"],function(e){"use strict";var s=layui.jquery,r=layui.lay,c={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var a=this;return a.config=s.extend({},a.config,e),a},on:function(e,a){return layui.onevent.call(this,l,e,a)}},l="rate",f="layui-icon-rate",h="layui-icon-rate-solid",o="layui-icon-rate-half",u="layui-icon-rate-solid layui-icon-rate-half",v="layui-icon-rate layui-icon-rate-half",a=function(e){var a=this;a.index=++c.index,a.config=s.extend({},a.config,c.config,e),a.render()};a.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},a.prototype.render=function(){var e=this,a=e.config,l=s(a.elem);if(1a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
          "),t=1;t<=a.length;t++){var o='
        • ";a.half&&parseInt(a.value)!==a.value&&t==Math.ceil(a.value)?n=n+'
        • ":n+=o}n+="
        "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,u=l.next(".layui-rate");u[0]&&u.remove(),e.elemTemp=s(n),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var i=this.config,n=this.elemTemp,t=n.find("i").width();n.children("li").each(function(e){var a=e+1,l=s(this);l.on("click",function(e){i.value=a,i.half&&e.pageX-s(this).offset().left<=t/2&&(i.value=i.value-.5),i.text&&n.next("span").text(i.value+"\u661f"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),l.on("mousemove",function(e){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+a+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&e.pageX-s(this).offset().left<=t/2&&l.children("i").addClass(o).removeClass(h)}),l.on("mouseleave",function(){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+Math.floor(i.value)+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&parseInt(i.value)!==i.value&&n.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(l){"use strict";var g=layui.$,e=function(l){};e.prototype.load=function(l){var t,i,o,n,e,r,a,c,m,s,u,f,y,d=this,p=0,h=g((l=l||{}).elem);if(h[0])return e=g(l.scrollElem||document),r=l.mb||50,a=!("isAuto"in l)||l.isAuto,c=l.end||"\u6ca1\u6709\u66f4\u591a\u4e86",m=l.scrollElem&&l.scrollElem!==document,u=g('"),h.find(".layui-flow-more")[0]||h.append(u),f=function(l,e){l=g(l),u.before(l),(e=0==e||null)?u.html(c):u.find("a").html(s),i=e,t=null,o&&o()},(y=function(){t=!0,u.find("a").html(''),"function"==typeof l.done&&l.done(++p,f)})(),u.find("a").on("click",function(){g(this);i||t||y()}),l.isLazyimg&&(o=d.lazyimg({elem:l.elem+" img",scrollElem:l.scrollElem})),a&&e.on("scroll",function(){var e=g(this),o=e.scrollTop();n&&clearTimeout(n),!i&&h.width()&&(n=setTimeout(function(){var l=(m?e:g(window)).height();(m?e.prop("scrollHeight"):document.documentElement.scrollHeight)-o-l<=r&&(t||y())},100))}),d},e.prototype.lazyimg=function(l){var e,c=this,m=0,s=g((l=l||{}).scrollElem||document),u=l.elem||"img",f=l.scrollElem&&l.scrollElem!==document,y=function(e,l){var o,t=s.scrollTop(),l=t+l,i=f?e.offset().top-s.offset().top+t:e.offset().top;t<=i&&i<=l&&e.attr("lay-src")&&(o=e.attr("lay-src"),layui.img(o,function(){var l=c.lazyimg.elem.eq(m);e.attr("src",o).removeAttr("lay-src"),l[0]&&n(l),m++},function(){c.lazyimg.elem.eq(m);e.removeAttr("lay-src")}))},n=function(l,e){var o=(f?e||s:g(window)).height(),t=s.scrollTop(),i=t+o;if(c.lazyimg.elem=g(u),l)y(l,o);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},W=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
        ',D.digit(t+1)+".","
        "].join(""):"",'
        ',e||" ","
        ",""].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++W,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code));lay.clipboard.writeText({text:t,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(t)}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
        '),C=x('
        '),r=x('
        '),_=x('
        '),u=x('
        '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
      • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){I.render(e.find(".layui-form")),S.render()}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
        '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
      • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
        '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); +/** v2.9.0-beta.1 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.9.0-beta.1"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,o=e.length-1,n=o;01e3*m.timeout/4?g(s+" is not a valid module","error"):void(m.status[s]?y():setTimeout(n,4))}())}function y(){e.push(layui[s]),11e3*m.timeout/4?g(s+" is not a valid module","error"):void("string"==typeof m.modules[s]&&m.status[s]?y():setTimeout(f,4))}():((r=h.createElement("script"))["async"]=!0,r.charset="utf-8",r.src=i+((u=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+u:""),l.appendChild(r),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||b?r.addEventListener("load",function(t){p(t,i)},!1):r.attachEvent("onreadystatechange",function(t){p(t,i)}),m.modules[s]=i)),a},n.prototype.disuse=function(t){var o=this;return t=o.isArray(t)?t:[t],o.each(t,function(t,e){m.status[e],delete o[e],delete N[e],delete o.modules[e],delete m.status[e],delete m.modules[e]}),o},n.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},n.prototype.link=function(o,n,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof n?n:t)||o).replace(/\.|\//g,""),u="creating",l=0;return i.href=o+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"==typeof n&&function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(o+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):n()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},n.prototype.addcss=function(t,e,o){return layui.link(m.dir+"css/"+t,e,o)},m.callback={},n.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},n.prototype.img=function(t,e,o){var n=new Image;if(n.src=t,n.complete)return e(n);n.onload=function(){n.onload=null,"function"==typeof e&&e(n)},n.onerror=function(t){n.onerror=null,"function"==typeof o&&o(t)}},n.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},n.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),n.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},n.prototype.router=n.prototype.hash=function(t){var o={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),o.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),o.search[e[0]]=e[1]):o.path.push(e)})),o},n.prototype.url=function(t){var r,e,o=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),o.each(e,function(t,e){var o=e.indexOf("="),n=o<0?e.substr(0,e.length):0!==o&&e.substr(0,o);n&&(r[n]=0(s.innerHeight||h.documentElement.clientHeight)},d.getStyleRules=function(t,n){if(t)return t=(t=t.sheet||t.styleSheet||{}).cssRules||t.rules,"function"==typeof n&&layui.each(t,function(t,e){if(n(e,t))return!0}),t},d.style=function(t){t=t||{};var e=d.elem("style"),n=t.text||"",i=t.target;if(n)return"styleSheet"in e?(e.setAttribute("type","text/css"),e.styleSheet.cssText=n):e.innerHTML=n,e.id="LAY-STYLE-"+(t.id||(n=d.style.index||0,d.style.index++,"DF-"+n)),i&&((t=d(i).find("#"+e.id))[0]&&t.remove(),d(i).append(e)),e},d.position=function(t,e,n){var i,r,o,c,u,a,f,l;e&&(n=n||{},t!==h&&t!==d("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||s.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),f=e.offsetWidth,l=e.offsetHeight,r=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},o=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,u=i.left,a=i.bottom,"center"===n.align?u-=(f-t.offsetWidth)/2:"right"===n.align&&(u=u-f+t.offsetWidth),(u=u+f+c>o("width")?o("width")-f-c:u)o()&&(i.top>l+c&&i.top<=o()?a=i.top-l-2*c:n.allowBottomOut||(a=o()-l-2*c)<0&&(a=0)),(f=n.position)&&(e.style.position=f),e.style.left=u+("fixed"===f?0:r(1))+"px",e.style.top=a+("fixed"===f?0:r())+"px",d.hasScrollbar()||(l=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&l.bottom+c>o()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){d.position(t,e,n)},50))))},d.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=d(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},d.isTopElem=function(n){var t=[h,d("body")[0]],i=!1;return d.each(t,function(t,e){if(e===n)return i=!0}),i},d.clipboard={writeText:function(n){var i=String(n.text);function t(){var t=h.createElement("textarea");t.value=i,t.style.position="fixed",t.style.opacity="0",t.style.top="0px",t.style.left="0px",h.body.appendChild(t),t.select();try{h.execCommand("copy"),"function"==typeof n.done&&n.done()}catch(e){"function"==typeof n.error&&n.error(e)}finally{t.remove?t.remove():h.body.removeChild(t)}}navigator&&"clipboard"in navigator?navigator.clipboard.writeText(i).then(n.done,function(){t()}):t()}},r.addStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),d.each(t,function(t,e){new RegExp("\\b"+e+"\\b").test(n)||(n=n+" "+e)}),n.replace(/^\s|\s$/,"")},r.removeStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),d.each(t,function(t,e){e=new RegExp("\\b"+e+"\\b");e.test(n)&&(n=n.replace(e,""))}),n.replace(/\s+/," ").replace(/^\s|\s$/,"")},r.fn.find=function(n){var i=[],r="object"==typeof n;return this.each(function(t,e){e=r&&e.contains(n)?n:e.querySelectorAll(n||null);d.each(e,function(t,e){i.push(e)})}),d(i)},r.fn.each=function(t){return d.each.call(this,this,t)},r.fn.addClass=function(n,i){return this.each(function(t,e){e.className=r[i?"removeStr":"addStr"](e.className,n)})},r.fn.removeClass=function(t){return this.addClass(t,!0)},r.fn.hasClass=function(n){var i=!1;return this.each(function(t,e){new RegExp("\\b"+n+"\\b").test(e.className)&&(i=!0)}),i},r.fn.css=function(e,i){var t=this,r=function(t){return isNaN(t)?t:t+"px"};return"string"!=typeof e||i!==undefined?t.each(function(t,n){"object"==typeof e?d.each(e,function(t,e){n.style[t]=r(e)}):n.style[e]=r(i)}):0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var e,i,t,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"上一页",n.next="next"in n?n.next:"下一页",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t…');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1…'),0!==r)&&e.push(''+(n.last||n.pages)+""),e.join("")}(),next:n.next?''+n.next+"":"",count:'\u5171 '+n.count+" \u6761",limit:(i=['"),refresh:['','',""].join(""),skip:[''+(e="object"==typeof n.skipText?n.skipText:["到第","页","确定"])[0],'',e[1]+'",""].join("")};return['
        ',(t=[],layui.each(n.layout,function(e,a){l[a]&&t.push(l[a])}),t.join("")),"
        "].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))})},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,v){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){D.path&&i.lay&&lay.layui&&lay.layui.link(D.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},d="layui-laydate-id",D={v:"5.5.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+D.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},a="laydate",x="layui-this",k="laydate-disabled",h=[100,2e5],T="layui-laydate-static",w="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",C=".laydate-btns-confirm",M="laydate-time-text",L="laydate-btns-time",E="layui-laydate-preview",S="layui-laydate-shade",I=function(e){var t,a=this,n=(a.index=++D.index,a.config=lay.extend({},a.config,D.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
        \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
        ","
        \u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
        Please re-select",invalidDate:"Invalid date",formatError:["The date format error
        Must be followed\uff1a
        ","
        It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},I.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},I.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart)&&(o.weekStart=0),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(c).test(t)?"\\d{"+(new RegExp(c).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),o.mark=lay.extend({},o.calendar&&"cn"===o.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},o.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),o.value)&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value))},I.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+T:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],c=r.elemHeader=[],u=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),f=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&f.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),f.push('"),f.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
      • '+t.text+"
      • ")}),i.join(""))).find("li").on("click",function(e){var t=o.shortcuts[this.dataset.index]||{},t=("function"==typeof t.value?t.value():t.value)||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+L).removeClass(k));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(x),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),p=[],g=!0,t=(lay.each(o.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),p.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))):!g&&/^#/.test(t)&&p.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&p.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),p.length&&(p=p.join(""),"styleSheet"in f?(f.setAttribute("type","text/css"),f.styleSheet.cssText=p):f.innerHTML=p,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(f)),r.remove(I.thisElemDate),D.thisId=o.id,s?o.elem.append(y):(v.body.appendChild(y),r.position()),o.shade?'
        ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),I.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},I.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(T)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete D.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+S).remove()),t},I.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},I.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},I.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t)&&(e.date=t,o=!0)},u=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(r=s.dateTime=lay.extend({},s.max),i=!0):d.getDateTime(r)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),i=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type)&&(s.dateTime.date=1,d.endDate.date=1),i&&m&&(d.setValue(d.parse()),d.hint("value "+l.invalidDate+l.formatError[1])),d.startDate=d.startDate||m&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e()),d},I.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},I.prototype.holidays=function(n,i){var e=this.config,l=["","work"];return"array"===layui.type(e.holidays)&&lay.each(e.holidays,function(a,e){lay.each(e,function(e,t){t===n.attr("lay-ymd")&&n.find("div").html('"+i[2]+"")})}),this},I.prototype.limit=function(t){t=t||{};var i=this,e=i.config,l={},a=t.index>(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowh[1]&&(d.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),s.setFullYear(d.year,d.month,1),i=(s.getDay()+(7-n.weekStart))%7,l=D.getEndDate(d.month||12,d.year),r=D.getEndDate(d.month+1,d.year),lay.each(c,function(e,t){var a,n=[d.year,d.month];(t=lay(t)).removeAttr("class"),e"+n[2]+"
        "),o.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e})}),lay(u[0]).attr("lay-ym",d.year+"-"+(d.month+1)),lay(u[1]).attr("lay-ym",d.year+"-"+(d.month+1)),"cn"===n.lang?(lay(u[0]).attr("lay-type","year").html(d.year+" \u5e74"),lay(u[1]).attr("lay-type","month").html(d.month+1+" \u6708")):(lay(u[0]).attr("lay-type","month").html(y.month[d.month]),lay(u[1]).attr("lay-type","year").html(d.year)),m&&(n.range?!e&&"init"===a||(o.listYM=[[(o.startDate||n.dateTime).year,(o.startDate||n.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(n.type,0).list(n.type,1),"time"===n.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[d.year,d.month+1]],o.list(n.type,0))),n.range&&"init"===a&&(o.rangeLinked?(s=o.getAsYM(d.year,d.month,t?"sub":null),o.calendar(lay.extend({},d,{year:s[0],month:s[1]}),1-t)):o.calendar(null,1-t)),n.range||(c=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(/^(datetime|time)$/.test(n.type)?new Date:null),index:0,time:c}),o.limit({elem:lay(o.footer).find(C),index:0,time:c})),o.setBtnStatus(),lay(o.shortcut).find("li."+x).removeClass(x),n.range&&!m&&"init"!==a&&o.stampRange(),o},I.prototype.list=function(n,i){var l,r,e,o,d=this,s=d.config,y=d.rangeLinked?s.dateTime:[s.dateTime,d.endDate][i],m=d.lang(),t=s.range&&"date"!==s.type&&"datetime"!==s.type,c=lay.elem("ul",{"class":w+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),a=d.elemHeader[i],u=lay(a[2]).find("span"),h=d.elemCont[i||0],f=lay(h).find("."+w)[0],p="cn"===s.lang,g=p?"\u5e74":"",v=d.listYM[i]||{},D=["hours","minutes","seconds"],T=["startTime","endTime"][i];return v[0]<1&&(v[0]=1),"year"===n?(e=l=v[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==v[0]&&lay(t).addClass(x),t.innerHTML=l+g,c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n}),l++}),lay(u[p?0:1]).attr("lay-ym",l-8+"-"+v[1]).html(e+g+" - "+(l-1)+g)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:v[0],month:e,date:1};e+1==v[1]&&lay(t).addClass(x),t.innerHTML=m.month[e]+(p?"\u6708":""),c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n})}),lay(u[p?0:1]).attr("lay-ym",v[0]+"-"+v[1]).html(v[0]+g)):"time"===n&&(r=function(){lay(c).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){d.limit({elem:lay(t),date:[{hours:e},{hours:d[T].hours,minutes:e},{hours:d[T].hours,minutes:d[T].minutes,seconds:e}][a],index:i,time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),s.range||d.limit({elem:lay(d.footer).find(C),date:d[T],index:0,time:["hours","minutes","seconds"]})},s.range?d[T]||(d[T]="startTime"===T?y:d.endDate):d[T]=y,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

        "+m.time[t]+"

          "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
        ",c.appendChild(a)}),r()),f&&h.removeChild(f),h.appendChild(c),"year"===n||"month"===n?(lay(d.elemMain[i]).addClass("laydate-ym-show"),lay(c).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(k)||(d.rangeLinked?lay.extend(y,{year:"year"===n?e:v[0],month:"year"===n?v[1]-1:e}):y[n]=e,"year"===s.type||"month"===s.type?(lay(c).find("."+x).removeClass(x),lay(this).addClass(x),"month"===s.type&&"year"===n&&(d.listYM[i][0]=e,t&&((i?d.endDate:y).year=e),d.list("month",i))):(d.checkDate("limit").calendar(y,i,"init"),d.closeList()),d.setBtnStatus(),!s.range&&s.autoConfirm&&("month"===s.type&&"month"===n||"year"===s.type&&"year"===n)&&d.setValue(d.parse()).done().remove(),d.autoCalendarModel.auto&&!d.rangeLinked?d.choose(lay(h).find("td.layui-this"),i):d.endState&&d.done(null,"change"),lay(d.footer).find("."+L).removeClass(k))})):(e=lay.elem("span",{"class":M}),o=function(){lay(c).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(d[T][D[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(k))return a.scrollTop=30*(e-2),!0})})},u=lay(a[2]).find("."+M),o(),e.innerHTML=s.range?[m.startTime,m.endTime][i]:m.timeTips,lay(d.elemMain[i]).addClass("laydate-time-show"),u[0]&&u.remove(),a[2].appendChild(e),lay(c).find("ol").each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(k)||(s.range?d[T][D[t]]=e:y[D[t]]=e,lay(a).find("."+x).removeClass(x),lay(this).addClass(x),r(),o(),(d.endDate||"time"===s.type||"datetime"===s.type&&s.fullPanel)&&d.done(null,"change"),d.setBtnStatus())})})),d},I.prototype.listYM=[],I.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+w).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+M).remove()},I.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(C);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(k):r[i?"addClass":"removeClass"](k),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},I.prototype.parse=function(e,t){var a=this,n=a.config,i=a.rangeLinked?a.startDate:n.dateTime,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},i||n.dateTime,a.startTime):n.dateTime),i=D.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},I.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},I.prototype.getDateTime=function(e){return this.newDate(e).getTime()},I.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"!==a.position&&(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},I.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+E),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html())&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300))},I.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},I.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(C).addClass(k),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+x),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:x),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(e=n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date,o=n.startDate,n.startDate=lay.extend({},n.endDate,e?{}:n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,e?{}:n.endTime),e)&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o),r)&&(i.dateTime=lay.extend({},n.startDate)),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},I.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(k)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(k))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(k))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(k))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},I.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(C),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},I.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+L).addClass(k))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},I.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},I.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){D.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(v).on("mousedown",function(e){var t,a;D.thisId&&(t=s.getThis(D.thisId))&&(a=t.config,e.target===a.elem[0]||e.target===a.eventElem[0]||e.target===n(a.closeStop)[0]||a.elem[0]&&a.elem[0].contains(e.target)||t.remove())}).on("keydown",function(e){var t;D.thisId&&(t=s.getThis(D.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===I.thisElemDate&&(e.preventDefault(),n(t.footer).find(C)[0].click())}),n(i).on("resize",function(){if(D.thisId){var e=s.getThis(D.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},D.render=function(e){e=new I(e);return s.call(e)},D.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},D.getInst=function(e){e=s.getThis(e);if(e)return e.inst},D.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},D.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},D.close=function(e){e=s.getThis(e||D.thisId);if(e)return e.remove()},D.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},D.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(D.ready(),layui.define("lay",function(e){D.path=layui.cache.dir,l.run(lay),e(a,D)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),D}):(D.ready(),l.run(i.lay),i.laydate=D)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){var n;return e===t?(l=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=(t=w(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(e){if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r])}else{if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}this.context=g,this.selector=e}}return this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
        a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
        ","
        "],area:[1,"",""],param:[1,"",""],thead:[1,"","
        "],tr:[2,"","
        "],col:[2,"","
        "],td:[3,"","
        "],_default:y.htmlSerialize?[0,"",""]:[1,"X
        ","
        "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
        t
        ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o)&&(i.left=o),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
        a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1!==this.nodeType||(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined)||(this.value=e)})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this)},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"
        ":"";return a.zIndex=o,t([a.shade?'
        ':"",'
        '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
        ':''):"")+((1!=a.type||!e)&&a.content||"")+'
        '+(n=[],l&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
        "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t,i=0,n=a.btn.length;i'+a.btn[i]+"";return'
        '+e+"
        "}():"")+(a.resize?'':"")+"
        "],s,m('
        ')),this},t.pt.creat=function(){var e,t,i,n,a,o=this,s=o.config,l=o.index,r="object"==typeof(f=s.content),c=m("body");if(s.id&&m("."+y[0]).find("#"+s.id)[0])e=m("#"+s.id).closest("."+y[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+y.SHADE+t),"min"===(e.data("maxminStatus")||{})?h.restore(t):i.hideOnClose&&(n.show(),e.show());else{switch(s.removeFocus&&document.activeElement.blur(),"string"==typeof s.area&&(s.area="auto"===s.area?["",""]:[s.area,""]),s.shift&&(s.anim=s.shift),6==h.ie&&(s.fixed=!1),s.type){case 0:s.btn="btn"in s?s.btn:u.btn[0],h.closeAll("dialog");break;case 2:var f=s.content=r?s.content:[s.content||"","auto"];s.content='';break;case 3:delete s.title,delete s.closeBtn,-1===s.icon&&s.icon,h.closeAll("loading");break;case 4:r||(s.content=[s.content,"body"]),s.follow=s.content[1],s.content=s.content[0]+'',delete s.title,s.tips="object"==typeof s.tips?s.tips:[s.tips,!0],s.tipsMore||h.closeAll("tips")}o.vessel(r,function(e,t,i){c.append(e[0]),r?2==s.type||4==s.type?m("body").append(e[1]):f.parents("."+y[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+y[0]+l).find("."+y[5]).before(t)):c.append(e[1]),m("#"+y.MOVE)[0]||c.append(u.moveElem=i),o.layero=m("#"+y[0]+l),o.shadeo=m("#"+y.SHADE+l),s.scrollbar||u.setScrollbar(l)}).auto(l),o.shadeo.css({"background-color":s.shade[1]||"#000",opacity:s.shade[0]||s.shade}),2==s.type&&6==h.ie&&o.layero.find("iframe").attr("src",f[0]),4==s.type?o.tips():(o.offset(),parseInt(u.getStyle(document.getElementById(y.MOVE),"z-index"))||(o.layero.css("visibility","hidden"),h.ready(function(){o.offset(),o.layero.css("visibility","visible")}))),!s.fixed||u.events.resize[o.index]||(u.events.resize[o.index]=function(){o.resize()},d.on("resize",u.events.resize[o.index])),s.time<=0||setTimeout(function(){h.close(o.index)},s.time),o.move().callback(),y.anim[s.anim]&&(a="layer-anim "+y.anim[s.anim],o.layero.addClass(a).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(a)})),o.layero.data("config",s)}},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+y[0]+e),n=(""===t.area[0]&&0t.maxWidth)&&i.width(t.maxWidth),[i.innerWidth(),i.innerHeight()]),a=i.find(y[1]).outerHeight()||0,o=i.find("."+y[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+y[5])):t.fixed&&n[1]>=d.height()&&(n[1]=d.height(),e("."+y[5])):e("."+y[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(d.height()-n[1])/2,e.offsetLeft=(d.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=d.width()-n[0]:"b"===t.offset?e.offsetTop=d.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=d.width()-n[0]):"rb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=d.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?d.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?d.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=d.scrollTop(),e.offsetLeft+=d.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=d.height()-(i.find(y[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0d.width()&&(o=d.width()-180-(u.minStackArr.edgeIndex=u.minStackArr.edgeIndex||0,u.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(l.left=o,l.top=d.height()-n,a||u.minStackIndex++,r.attr("minLeft",o)),r.attr("position",s),h.style(e,l,!0),i.hide(),"page"===r.attr("type")&&r.find(y[4]).hide(),u.restScrollbar(e),c.hide())},h.restore=function(e){var t=m("#"+y[0]+e),i=m("#"+y.SHADE+e),n=t.attr("area").split(","),a=t.attr("type"),o=t.data("config")||{};t.removeData("maxminStatus"),h.style(e,{width:n[0],height:n[1],top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===a&&t.find(y[4]).show(),o.scrollbar?u.restScrollbar(e):u.setScrollbar(e),i.show()},h.full=function(t){var i=m("#"+y[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&h.restore(t),i.data("maxminStatus","max"),u.record(i),y.html.attr("layer-full")||u.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");h.style(t,{top:e?0:d.scrollTop(),left:e?0:d.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},h.title=function(e,t){m("#"+y[0]+(t||h.index)).find(y[1]).html(e)},h.close=function(o,s){var l,e,r=(t=m("."+y[0]).children("#"+o).closest("."+y[0]))[0]?(o=t.attr("times"),t):m("#"+y[0]+o),c=r.attr("type"),t=r.data("config")||{},f=t.id&&t.hideOnClose;r[0]&&(l={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[t.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return r.removeClass("layer-anim "+l),r.hide();if(c===u.type[1]&&"object"===r.attr("conType")){r.children(":not(."+y[5]+")").remove();for(var t=r.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===u.type[2])try{var n=m("#"+y[4]+o)[0];n.contentWindow.document.write(""),n.contentWindow.close(),r.find("."+y[5])[0].removeChild(n)}catch(a){}r[0].innerHTML="",r.remove()}"function"==typeof u.end[o]&&u.end[o](),delete u.end[o],"function"==typeof s&&s(),u.events.resize[o]&&(d.off("resize",u.events.resize[o]),delete u.events.resize[o])},m("#"+y.SHADE+o)[f?"hide":"remove"](),t.isOutAnim&&r.addClass("layer-anim "+l),6==h.ie&&u.reselect(),u.restScrollbar(o),"string"==typeof r.attr("minLeft")&&(u.minStackIndex--,u.minStackArr.push(r.attr("minLeft"))),h.ie&&h.ie<10||!t.isOutAnim?e():setTimeout(function(){e()},200))},h.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+y[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&h.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},h.closeLast=function(e){h.close(m(".layui-layer-"+(e=e||"page")+":last").attr("times"))},h.cache||{}),g=function(e){return i.skin?" "+i.skin+" "+i.skin+"-"+e:""};h.prompt=function(i,n){var e="",t="";"function"==typeof(i=i||{})&&(n=i),i.area&&(e='style="width: '+(o=i.area)[0]+"; height: "+o[1]+';"',delete i.area),i.placeholder&&(t=' placeholder="'+i.placeholder+'"');var a,o=2==i.formType?'":'",s=i.success;return delete i.success,h.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+g("prompt"),maxWidth:d.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?h.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},h.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,h.open(m.extend({type:1,skin:"layui-layer-tab"+g("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
          '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
        ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},h.photos=function(n,e,a){var o={};if((n=m.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},s=i.data||[],l=i.start||0,r=n.success;if(o.imgIndex=1+(0|l),n.img=n.img||"img",delete n.success,t){if(0===s.length)return h.msg("没有图片")}else{var c=m(n.photos),f=function(){s=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),s.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===s.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");h.photos(m.extend(n,{photos:{start:e,data:s,tab:n.tab},full:n.full}),!0)}),!e)return}o.imgprev=function(e){o.imgIndex--,o.imgIndex<1&&(o.imgIndex=s.length),o.tabimg(e)},o.imgnext=function(e,t){o.imgIndex++,o.imgIndex>s.length&&(o.imgIndex=1,t)||o.tabimg(e)},o.keyup=function(e){var t;o.end||(t=e.keyCode,e.preventDefault(),37===t?o.imgprev(!0):39===t?o.imgnext(!0):27===t&&h.close(o.index))},o.tabimg=function(e){if(!(s.length<=1))return i.start=o.imgIndex-1,h.close(o.index),h.photos(n,!0,e)},o.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},o.image={},o.getTransform=function(e){var t=[],i=e.rotate,n=e.scaleX,e=e.scale;return o.isNumber(i)&&0!==i&&t.push("rotate("+i+"deg)"),o.isNumber(n)&&1!==n&&t.push("scaleX("+n+")"),o.isNumber(e)&&t.push("scale("+e+")"),t.length?t.join(" "):"none"},o.event=function(e,i,n){o.main.find(".layui-layer-photos-prev").on("click",function(e){e.preventDefault(),o.imgprev(!0)}),o.main.find(".layui-layer-photos-next").on("click",function(e){e.preventDefault(),o.imgnext(!0)}),m(document).on("keyup",o.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=m(this);switch(e.attr("toolbar-event")){case"rotate":o.image.rotate=((o.image.rotate||0)+Number(e.attr("data-option")))%360,o.imgElem.css({transform:o.getTransform(o.image)});break;case"scalex":o.image.scaleX=-1===o.image.scaleX?1:-1,o.imgElem.css({transform:o.getTransform(o.image)});break;case"zoom":var t=Number(e.attr("data-option"));o.image.scale=(o.image.scale||1)+t,t<0&&o.image.scale<0-t&&(o.image.scale=0-t),o.imgElem.css({transform:o.getTransform(o.image)});break;case"reset":o.image.scaleX=1,o.image.scale=1,o.image.rotate=0,o.imgElem.css({transform:"none"});break;case"close":h.close(i)}n.offset(),n.auto(i)}),o.main.on("mousewheel DOMMouseScroll",function(e){var t=e.originalEvent.wheelDelta||-e.originalEvent.detail,i=o.main.find('[toolbar-event="zoom"]');(0'+i+''+(t=['
        '],1','','',"
        "].join("")),n.toolbar&&t.push(['
        ','','','','','','',"
        "].join("")),n.footer&&t.push(['"].join("")),t.push(""),t.join(""))+"",success:function(e,t,i){o.main=e.find(".layer-layer-photos-main"),o.footer=e.find(".layui-layer-photos-footer"),o.imgElem=o.main.children("img"),o.event(e,t,i),n.tab&&n.tab(s[l],e),"function"==typeof r&&r(e)},end:function(){o.end=!0,m(document).off("keyup",o.keyup)}},n))},u=function(){h.close(o.loadi),h.msg("当前图片地址异常
        是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1").addClass(r));layui.each(i.bars,function(t,e){var n=g('
      • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=g(this).attr("lay-type");"top"===t&&("body"===i.target?g("html,body"):u).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=g(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),o=n),l.append(n)}),c.find("."+r).remove(),"object"==typeof i.css&&l.css(i.css),c.append(l),o&&(e=function e(){return u.scrollTop()>=i.margin?t||(o.show(),t=1):t&&(o.hide(),t=0),e}()),u.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=g.extend(!0,{date:new Date,now:new Date},i);var o=arguments,r=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,o,r,a,c,u;(t=g.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,c=t.thisElem,i=(r="y"===t.type)?"top":"left",o=e[n=r?"scrollTop":"scrollLeft"](),r=e[r?"height":"width"](),a=e.offset()[i],u={},(c=c.offset()[i]-a)>r-t.margin||c."+v,E=function(e){var i=this;i.index=++f.index,i.config=c.extend({},i.config,f.config,e),i.init()};E.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300,shade:0,accordion:!1},E.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},E.prototype.init=function(e,i){var t,n=this,a=n.config,l=c(a.elem);return 1');return 0No data
      • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i[s.children]&&0",(t="href"in i?''+l+"":l,n?'
        '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
        ":'
        '+t+"
        "),""].join(""))).data("item",i),n&&(a=c('
        '),t=c("
          "),"parent"===o?(a.append(u(t,i[s.children])),l.append(a)):l.append(u(t,i[s.children]))),r.append(l))}),r},a=['
          ',"
          "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(l.elemView=c("."+g+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=c(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),f.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
          ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(h.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(h.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[s.children]&&0n.width()&&(t.addClass(x),(i=t[0].getBoundingClientRect()).left<0)&&t.removeClass(x),i.bottom>n.height())&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5))}).on("mouseleave",t,function(e){var i=c(this).children("."+C);i.removeClass(x),i.css("margin-top",0)}),f.close=function(e){e=h.getThis(e);return e?(e.remove(),h.call(e)):this},f.reload=function(e,i,t){e=h.getThis(e);return e?(e.reload(i,t),h.call(e)):this},f.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),f.reload.apply(null,t)},f.render=function(e){e=new E(e);return h.call(e)},e(r,f)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,c=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var i=this;return i.config=g.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},t="slider",v="layui-disabled",x="layui-slider-bar",b="layui-slider-wrap",T="layui-slider-wrap-btn",w="layui-slider-tips",M="layui-slider-input-txt",L="layui-slider-hover",i=function(e){var i=this;i.index=++m.index,i.config=g.extend({},i.config,m.config,e),i.render()};i.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},i.prototype.render=function(){var a=this,n=a.config,e=g(n.elem);if(1n.max&&(n.value=n.max),t=Math.floor((n.value-n.min)/(n.max-n.min)*100)+"%");var l,e=n.disabled?"#c2c2c2":n.theme,i='
          '+(n.tips?'
          ':"")+'
          '+(n.range?'
          ':"")+"
          ",t=g(n.elem),s=t.next(".layui-slider");if(s[0]&&s.remove(),a.elemTemp=g(i),n.range?(a.elemTemp.find("."+b).eq(0).data("value",n.value[0]),a.elemTemp.find("."+b).eq(1).data("value",n.value[1])):a.elemTemp.find("."+b).data("value",n.value),t.html(a.elemTemp),"vertical"===n.type&&a.elemTemp.height(n.height+"px"),n.showstep){for(var o=(n.max-n.min)/n.step,r="",d=1;d<1+o;d++){var u=100*d/o;u<100&&(r+='
          ')}a.elemTemp.append(r)}n.input&&!n.range&&(e=g('
          '),t.css("position","relative"),t.append(e),t.find("."+M).children("input").val(n.value),"vertical"===n.type?e.css({left:0,top:-48}):a.elemTemp.css("margin-right",e.outerWidth()+15)),n.disabled?(a.elemTemp.addClass(v),a.elemTemp.find("."+T).addClass(v)):a.slide(),a.elemTemp.find("."+T).on("mouseover",function(){var e="vertical"===n.type?n.height:a.elemTemp[0].offsetWidth,i=a.elemTemp.find("."+b),t=("vertical"===n.type?e-g(this).parent()[0].offsetTop-i.height():g(this).parent()[0].offsetLeft)/e*100,i=g(this).parent().data("value"),e=n.setTips?n.setTips(i):i;a.elemTemp.find("."+w).html(e),clearTimeout(l),l=setTimeout(function(){"vertical"===n.type?a.elemTemp.find("."+w).css({bottom:t+"%","margin-bottom":"20px",display:"inline-block"}):a.elemTemp.find("."+w).css({left:t+"%",display:"inline-block"})},300)}).on("mouseout",function(){clearTimeout(l),a.elemTemp.find("."+w).css("display","none")})},i.prototype.slide=function(e,i,t){var o=this,r=o.config,d=o.elemTemp,u=function(){return"vertical"===r.type?r.height:d[0].offsetWidth},c=d.find("."+b),m=d.next(".layui-slider-input"),v=m.children("."+M).children("input").val(),p=100/((r.max-r.min)/Math.ceil(r.step)),f=function(e,i,t){e=(e=100<(e=100a[1]&&a.reverse(),o.value=r.range?a:l,r.change&&r.change(o.value),"done"===t&&r.done&&r.done(o.value)},h=function(e){var i=e/u()*100/p,t=Math.round(i)*p;return t=e==u()?Math.ceil(i)*p:t},y=g(['
          u()?u():i)/u()*100/p;f(i,l),s.addClass(L),d.find("."+w).show(),e.preventDefault()},i=function(){s.removeClass(L),d.find("."+w).hide()},t=function(){i&&i(),y.remove(),r.done&&r.done(o.value)},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",e),y.on("mouseup",t).on("mouseleave",t)})}),d.on("click",function(e){var i=g("."+T),t=g(this);!i.is(event.target)&&0===i.has(event.target).length&&i.length&&(t=(i=(i=(i="vertical"===r.type?u()-e.clientY+t.offset().top-g(window).scrollTop():e.clientX-t.offset().left-g(window).scrollLeft())<0?0:i)>u()?u():i)/u()*100/p,i=r.range?"vertical"===r.type?Math.abs(i-parseInt(g(c[0]).css("bottom")))>Math.abs(i-parseInt(g(c[1]).css("bottom")))?1:0:Math.abs(i-c[0].offsetLeft)>Math.abs(i-c[1].offsetLeft)?1:0:0,f(t,i,"done"),e.preventDefault())}),m.children(".layui-slider-input-btn").children("i").each(function(i){g(this).on("click",function(){v=m.children("."+M).children("input").val();var e=((v=1==i?v-r.stepr.max?r.max:Number(v)+r.step)-r.min)/(r.max-r.min)*100/p;f(e,0,"done")})});var a=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)r.max?r.max:e,((this.value=e)-r.min)/(r.max-r.min)*100/p);f(e,0,"done")};m.children("."+M).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),a.call(this))}).on("change",a)},i.prototype.events=function(){this.config},m.render=function(e){e=new i(e);return function(){var t=this,a=t.config;return{setValue:function(e,i){return e=(e=e>a.max?a.max:e)',"",'','',"","","
          "].join("")),r=i.elem=m(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),r.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:r.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,r=e.elemColorBox[0],t=e.elemPicker=m(['
          ','
          ','
          ','
          ','
          ','
          ',"
          ",'
          ','
          ',"
          ","
          ",'
          ','
          ','
          ',"
          ","
          ",i.predefine?(o=['
          '],layui.each(i.colors,function(e,i){o.push(['
          ','
          ',"
          "].join(""))}),o.push("
          "),o.join("")):"",'
          ','
          ','',"
          ",'
          ','','',"","
          "].join(""));e.elemColorBox.find("."+C)[0];m(a)[0]&&m(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),m("body").append(t)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=r.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=m("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close)&&i.close(this.color),this},d.prototype.position=function(){var e=this,i=e.config;return t.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),r=i.elemPicker.find("."+M),t=o[0].style.backgroundColor;t?(e=Y(L(t)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?r.find("input").val(t):"rgba"===o?(o=L(t),3===(t.match(/[0-9]{1,3}/g)||[]).length?(r.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+T).css("left",280)):(r.find("input").val(t),t=280*t.slice(t.lastIndexOf(",")+1,t.length-1),i.elemPicker.find("."+T).css("left",t)),i.elemPicker.find("."+D)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):r.find("input").val("#"+F(e))):(i.select(0,100,100),r.find("input").val(""),i.elemPicker.find("."+D)[0].style.background="",i.elemPicker.find("."+T).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),r=n.elemPicker.find("."+E),f=n.elemPicker.find("."+D),u=n.elemPicker.find("."+T),g=e[0].offsetTop/180*360,p=100-(r[0].offsetTop+3)/180*100,h=(r[0].offsetLeft+3)/260*100,v=Math.round(u[0].offsetLeft/280*100)/100,b=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,r){n.select(e,i,o);var t=j({h:e,s:i,b:o}),e=F({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");b.addClass(x).removeClass(P),c[0].style.background="rgb("+t.r+", "+t.g+", "+t.b+")","torgb"===a?i.val("rgb("+t.r+", "+t.g+", "+t.b+")"):"rgba"===a?(u.css("left",280*r),i.val("rgba("+t.r+", "+t.g+", "+t.b+", "+r+")"),c[0].style.background="rgba("+t.r+", "+t.g+", "+t.b+", "+r+")",f[0].style.background="linear-gradient(to right, rgba("+t.r+", "+t.g+", "+t.b+", 0), rgb("+t.r+", "+t.g+", "+t.b+"))"):i.val("#"+e),l.change&&l.change(n.elemPicker.find("."+M).find("input").val())},o=m(['
          '].join("")),k=function(e){m("#LAY-colorpicker-moving")[0]||m("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var r=this.offsetTop,t=e.clientY;k(function(e){var i=r+(e.clientY-t),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(g=o,h,p,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-m(this).offset().top+H.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(g=i,h,p,v),e.preventDefault()}),r.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),k(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),r=d[0].offsetHeight-3,t=d[0].offsetWidth-3,t=((o=t<(o=o<-3?-3:o)?t:o)+3)/260*100,o=100-((i=r<(i=i<-3?-3:i)?r:i)+3)/180*100;y(g,h=t,p=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-m(this).offset().top-3+H.scrollTop(),o=e.clientX-m(this).offset().left-3+H.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;y(g,h=o,p=i,v),layui.stope(e),e.preventDefault(),r.trigger(e,"mousedown")}),u.on("mousedown",function(e){var r=this.offsetLeft,t=e.clientX;k(function(e){var i=r+(e.clientX-t),o=f[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(g,h,p,v=o),e.preventDefault()}),e.preventDefault()}),f.on("click",function(e){var i=e.clientX-m(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(g,h,p,v=i),e.preventDefault()}),i.each(function(){m(this).on("click",function(){m(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(L(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);g=i.h,h=i.s,p=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,y(i.h,i.s,i.b,o)})})},d.prototype.select=function(e,i,o,r){this.config;var t=F({h:e,s:100,b:100}),e=(F({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+t,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,r,t,n,l=d.val();-1>16,g:(65280&t)>>8,b:255&t},r=Y(n),s[0].style.background=o="#"+F(r),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i?(c.select(r.h,r.s,r.b,i),a.change&&a.change(o)):(c.color=l,a.done&&a.done(l),c.removePicker())}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=m(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=m(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),m(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,r;n.thisId&&(i=l.getThis(n.thisId))&&(o=i.config,r=i.elemColorBox.find("."+C),m(e.target).hasClass(c)||m(e.target).parents("."+c)[0]||m(e.target).hasClass(a.replace(/\./g,""))||m(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(L(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),r[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!m(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(r,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),c="element",r="layui-this",h="layui-show",o=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,c,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(o),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
          '+(i.content||"")+"
          "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),C.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",p="layui-nav-bar",b="layui-nav-tree",v="layui-nav-child",m="layui-nav-more",g="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(r).siblings().removeClass(r),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,c,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(r)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,c,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.closest(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+v),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+r).removeClass(r),e.addClass(r)),i.hasClass(b)){var n=f+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+p).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(g),l[0]&&(s?(l.slideDown(200,o),e.addClass(n)):(e.removeClass(n),l.show().slideUp(200,o)),"string"!=typeof i.attr("lay-accordion")&&"all"!==i.attr("lay-shrink")||((s=e.siblings("."+n)).removeClass(n),s.children("."+v).show().stop().slideUp(200,o)))}layui.event.call(this,c,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,c,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+p)[0]||(i.append(a),(i.hasClass(b)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+v);i.hasClass(b)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(g),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+m).addClass(m+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(b)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+v).removeClass(h),i.find("."+m).removeClass(m+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(b)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+v)[0]&&!t.children("."+m)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),u(window).on("resize",C.tabAuto),t(c,a)});layui.define(["lay","layer"],function(e){"use strict";var x=layui.$,a=layui.lay,i=layui.layer,b=layui.device(),t="upload",r="layui_"+t+"_index",o={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var i=this;return i.config=x.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var i=this,e=i.config.id;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:(l.that[e]=i).config}},u="layui-upload-file",f="layui-upload-form",F="layui-upload-iframe",w="layui-upload-choose",L="UPLOADING",j=function(e){var i=this;i.index=++o.index,i.config=x.extend({},i.config,o.config,e),i.render()};j.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},j.prototype.reload=function(e){var i=this;i.config=x.extend({},i.config,e),i.render(!0)},j.prototype.render=function(e){var i=this,t=i.config,n=x(t.elem);return 1"].join("")),n=i.elem.next();(n.hasClass(u)||n.hasClass(f))&&n.remove(),b.ie&&b.ie<10&&i.elem.wrap('
          '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),b.ie&&b.ie<10&&e.initIE()},j.prototype.initIE=function(){var t,e=this.config,i=x(''),n=x(['
          ',"
          "].join(""));x("#"+F)[0]||x("body").append(i),e.elem.next().hasClass(f)||(this.elemFile.wrap(n),e.elem.next("."+f).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},j.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},j.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},j.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},j.prototype.upload=function(e,i){var t,n,a,o,u=this,f=u.config,c=f.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},r=function(){var a=0,o=0,l=s(),r=function(){f.multiple&&a+o===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:a,failed:o})},t=function(t){var n=new FormData,i=function(e){t.unified?layui.each(l,function(e,i){delete i[L]}):delete e[L]};if(layui.each(f.data,function(e,i){i="function"==typeof i?i():i,n.append(e,i)}),t.unified)layui.each(l,function(e,i){i[L]||(i[L]=!0,n.append(f.field,i))});else{if(t.file[L])return;n.append(f.field,t.file),t.file[L]=!0}var e={url:f.url,type:"post",data:n,dataType:f.dataType||"json",contentType:!1,processData:!1,headers:f.headers||{},success:function(e){f.unified?a+=u.fileLength:a++,p(t.index,e),r(t.index),i(t.file)},error:function(e){f.unified?o+=u.fileLength:o++,u.msg(c.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
          ")),m(t.index),r(t.index),i(t.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=x.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),f.progress(i,(f.item||f.elem)[0],e,t.index))}),e}),x.ajax(e)};f.unified?t({unified:!0,index:0}):layui.each(l,function(e,i){t({index:e,file:i})})},d=function(){var n=x("#"+F);u.elemFile.parent().submit(),clearInterval(j.timer),j.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(c["cross-domain"]),clearInterval(j.timer),m()}e&&(clearInterval(j.timer),i.html(""),p(0,e))},30)},p=function(e,i){if(u.elemFile.next("."+w).remove(),l.value="","json"===f.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(c["data-format-error"])}"function"==typeof f.done&&f.done(i,e||0,function(e){u.upload(e)})},m=function(e){f.auto&&(l.value=""),"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)})},h=f.exts,g=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),v={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i}},y={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",g=0===g.length?l.value.match(/[^\/\\]+\..+/g)||[]:g;if(0!==g.length){switch(f.accept){case"file":layui.each(g,function(e,i){if(h&&!RegExp(".\\.("+h+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"jpg|png|gif|bmp|jpeg|svg")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(c["check-error"]||"\u9009\u62e9\u7684"+y+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!f.auto||(f.choose&&f.choose(v),"choose"!==i)){if(u.fileLength=(a=0,y=s(),layui.each(y,function(){a++}),a),f.number&&u.fileLength>f.number)return u.msg("function"==typeof c["limit-number"]?c["limit-number"](f,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+f.number+" \u4e2a\u6587\u4ef6
          \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*f.size&&(i=1<=(i=f.size/1024)?i.toFixed(2)+"MB":f.size+"KB",l.value="",o=i)}),o)return u.msg("function"==typeof c["limit-size"]?c["limit-size"](f,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!f.before||!1!==f.before(v))b.ie?(9'+e+"")};a.elem.off("upload.start").on("upload.start",function(){var e=x(this);n.config.item=e,n.elemFile[0].click()}),b.ie&&b.ie<10||a.elem.off("upload.over").on("upload.over",function(){x(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){x(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=x(this),i=i.originalEvent.dataTransfer.files||[];t.removeAttr("lay-over"),o(i),a.auto?n.upload():l(i)}),n.elemFile.on("change",function(){var e=this.files||[];0!==e.length&&(o(e),a.auto?n.upload():l(e))}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data(r)||(a.elem.on("click",function(){n.isFile()||x(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),x(this).trigger("upload.over")}).on("dragleave",function(e){x(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),x(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){x(this).trigger("upload.action")}),a.elem.data(r,a.id))},l.that={},l.getThis=function(e){var i=l.that[e];return i||hint.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},o.render=function(e){e=new j(e);return l.call(e)},e(t,o)});layui.define(["lay","layer","util"],function(e){"use strict";var C=layui.$,h=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",N="layui-this",T="layui-hide",$="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return C.extend(!0,this.config,e),this},t.prototype.verify=function(e){return C.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return C(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=C(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;C(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=C(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){var e=e||a.find("input,textarea"),t=(i.autocomplete&&e.attr("autocomplete",i.autocomplete),function(e,t){var i=e.val(),a=Number(i),n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max")),s=Number(e.attr("lay-precision")),o="click"!==t&&""===i,c="init"===t;isNaN(a)||("click"===t&&(a=!!C(this).index()?a-n:a+n),t=function(e){return((e.toString().match(/\.(\d+$)/)||[])[1]||"").length},s=0<=s?s:Math.max(t(n),t(i)),o||(c||r<=(a=a<=l?l:a)&&(a=r),s&&(a=a.toFixed(s)),e.val(a)),e[(a'),e=layui.isArray(i.value)?i.value:[i.value],e=C((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
          '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),"function"==typeof i.init&&i.init.call(this,r,i),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),r.on("blur",function(){"function"==typeof i.blur&&i.blur.call(this,r,i)}),e.on("click",function(){var e=r.attr("lay-filter");C(this).hasClass($)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,w,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(C(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),init:function(e){t.call(this,e,"init")},click:function(e){t.call(this,e,"click")},blur:function(e){t.call(this,e,"blur")}}};n()})},select:function(e){var p,c="\u8bf7\u9009\u62e9",m="layui-form-select",g="layui-select-title",x="layui-select-none",b="",e=e||a.find("select"),k=function(e,t){C(e.target).parent().hasClass(g)&&!t||(C("."+m).removeClass(m+"ed "+m+"up"),p&&b&&p.val(b)),p=null},u=function(a,e,t){var s,r,i,n,o,l,c=C(this),u=a.find("."+g),d=u.find("input"),f=a.find("dl"),h=f.children("dd"),y=f.children("dt"),v=this.selectedIndex;e||(r=c.attr("lay-search"),i=function(){var e=a.offset().top+a.outerHeight()+5-F.scrollTop(),t=f.outerHeight();v=c[0].selectedIndex,a.addClass(m+"ed"),h.removeClass(T),y.removeClass(T),s=null,h.removeClass(N),0<=v&&h.eq(v).addClass(N),e+t>F.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(b=C(c[0].options[t]).html(),0===t&&b===d.attr("placeholder")&&(b=""),d.val(b||""))})},o=function(){var e,t,i=f.children("dd."+N);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

          '):f.find("."+x).remove()},"keyup"),""===t&&(c.val(""),f.find("."+N).removeClass(N),(c[0].options[0]||{}).value||f.children("dd:eq(0)").addClass(N),f.find("."+x).remove()),o()}).on("blur",function(e){var t=c[0].selectedIndex;p=d,b=C(c[0].options[t]).text(),0===t&&b===d.attr("placeholder")&&(b=""),setTimeout(function(){l(d.val(),function(e){b||d.val("")},"blur")},200)}),h.on("click",function(){var e=C(this),t=e.attr("lay-value"),i=c.attr("lay-filter");return e.hasClass($)||(e.hasClass("layui-select-tips")?d.val(""):(d.val(e.text()),e.addClass(N)),e.siblings().removeClass(N),c.val(t).removeClass("layui-form-danger"),layui.event.call(this,w,"select("+i+")",{elem:c[0],value:t,othis:a}),n(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),C(document).off("click",k).on("click",k))};e.each(function(e,t){var i=C(this),a=i.next("."+m),n=this.disabled,l=t.value,r=C(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),t=t&&!t.value&&t.innerHTML||c,r=C(['
          ','
          ','','
          ','
          ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?s.push("optgroup"===i?"
          "+t.label+"
          ":'
          '+C.trim(t.innerHTML)+"
          "):s.push('
          '+C.trim(t.innerHTML||c)+"
          ")}),0===s.length&&s.push('
          \u6ca1\u6709\u9009\u9879
          '),s.join("")+"
          "),"
          "].join(""));a[0]&&a.remove(),i.after(r),u.call(this,r,n,o)})},checkbox:function(e){var o={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=C(this),a=i.attr("lay-skin")||"primary",n=d.escape(C.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=o[a]||o.checkbox,s=i.next("."+r[0]);if(s[0]&&s.remove(),i.next("[lay-checkbox]")[0]&&(n=i.next().html()||""),n="switch"===a?n.split("|"):[n],"string"==typeof i.attr("lay-ignore"))return i.show();l=C(['
          ",(s={checkbox:[n[0]?"
          "+n[0]+"
          ":"primary"===a?"":"
          ",''].join(""),"switch":"
          "+((t.checked?n[0]:n[1])||"")+"
          "})[a]||s.checkbox,"
          "].join(""));i.after(l),function(a,n){var l=C(this);a.on("click",function(){var e=C(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+o.SUBTRA).removeClass(o.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],w,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var r="layui-form-radio",s=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=C(this),a=i.next("."+r),n=this.disabled;if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();n=C(['
          ','',"
          "+(a=d.escape(t.title||""),a=i.next("[lay-radio]")[0]?i.next().html():a)+"
          ","
          "].join(""));i.after(n),function(a){var n=C(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(o),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=C(this).next("."+r);this.checked=!1,e.removeClass(r+"ed"),e.children(".layui-icon").removeClass(l+" "+s[0]).addClass(s[1])}),n[0].checked=!0,a.addClass(r+"ed"),a.children(".layui-icon").addClass(l+" "+s[0]),layui.event.call(n[0],w,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,n)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?C(e).is(o)?(a=C(e),t()):e.each(function(e,t){var i=C(t);i.closest(o).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=C(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=C(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=C.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=C(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(o).eq(0),l=n.find("*[lay-verify]");return!!r.validate(l)&&(i=r.getValue(null,n),l={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?n:a.parents("form"))[0],field:i},"function"==typeof t&&t(l),layui.event.call(this,w,"submit("+e+")",l))}),r=new t,t=C(document),F=C(window);C(function(){r.render()}),t.on("reset",o,function(){var e=C(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",o,i).on("click","*[lay-submit]",i),e(w,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var f=layui.$,r=layui.lay,m=layui.laytpl,I=layui.laypage,p=layui.layer,v=layui.form,g=layui.util,b=layui.hint(),x=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var t=this;return t.config=f.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(f(t).html()||String(i)).render(f.extend({LAY_COL:a},e.tplData))),e.text?f("
          "+i+"
          ").text():i},N="table",t=".layui-table",R="layui-hide",y="layui-hide-v",h="layui-none",D="layui-table-view",o=".layui-table-header",L=".layui-table-body",c=".layui-table-fixed-r",O=".layui-table-pageview",A=".layui-table-sort",E="layui-table-checked",_="layui-table-edit",M="layui-table-hover",P="laytable-cell-group",W="layui-table-col-special",j="layui-table-tool-panel",H="layui-table-expanded",S="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
          ','
          ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
          ","
          "].join("")},a=['',"","
          "].join(""),u=[,"{{# if(d.data.toolbar){ }}",'
          ','
          ','
          ',"
          ","{{# } }}",'
          ',"{{# if(d.data.loading){ }}",'
          ','',"
          ","{{# } }}","{{# var left, right; }}",'
          ',e(),"
          ",'
          ',a,"
          ","{{# if(left){ }}",'
          ','
          ',e({fixed:!0}),"
          ",'
          ',a,"
          ","
          ","{{# }; }}","{{# if(right){ }}",'
          ','
          ',e({fixed:"right"}),'
          ',"
          ",'
          ',a,"
          ","
          ","{{# }; }}","
          ","{{# if(d.data.totalRow){ }}",'
          ','','',"
          ","
          ","{{# } }}",'
          ','
          ',"
          "].join(""),d=f(window),F=f(document),i=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},s=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=f(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=f.extend({pageName:"page",limitName:"limit"},a.request),a.response=f.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-.+$/.test(a.height)?(t.fullHeightGap=parseFloat(a.height.split("-")[1])||0,a.height=d.height()-t.fullHeightGap):a.height&&/^#\w+\S*-.+$/.test(a.height)&&(i=a.height.split("-"),t.parentHeightGap=parseFloat(i.pop())||0,t.parentDiv=i.join("-"),a.height=f(t.parentDiv).height()-t.parentHeightGap);var l,e=a.elem,i=e.next("."+D),n=t.elem=f("
          ");n.addClass((l=[D,D+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(u,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(L),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(c),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,d=this,r=d.config;if(r.clientWidth=r.width||(l=function(e){var t,a=(e=e||r.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return r.clientWidth;r.height=r.maxHeight||r.height,r.css&&-1===r.css.indexOf(D)&&(a=r.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+D+"-"+d.index+" "+t)}),r.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[r.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"].concat(x.ie?[".layui-table-edit{height: "+i+";}","td[data-edit]:hover:after{height: "+i+";}"]:[]),function(e,t){t&&o.push(a+" "+t)})),l.css&&o.push(l.css),r.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
          ','
          ','
          '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=f(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
          ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
          ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](R),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+P)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(R)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
          ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(R),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(O).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),d=n.response,r=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),"function"==typeof n.done&&n.done(e,a,e[d.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[d.dataName]=k.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[d.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=f.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),f.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},complete:"function"==typeof n.complete?n.complete:undefined,success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return b.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],p=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],d=[],r=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
          "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
          "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+E+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),p.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,p.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](R),a.layPage.find(O)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(R),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(R),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,I.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(r,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&r.dataTotal.push({field:t.field,total:f("
          "+l+"
          ").text()}),['','
          "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(f.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
          "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(a){var e=this,i=e.config,l=e.layBody.find("tr"+("all"===a.index?"":'[data-index="'+a.index+'"]')),t=(a=f.extend({type:"checkbox"},a),k.cache[e.key]),n="checked"in a,o=function(e){return"radio"===a.type||(n?a.checked:!e)},t=(layui.each(t,function(e,t){"array"===layui.type(t)||t[i.disabledName]||(Number(a.index)===e||"all"===a.index?(e=t[i.checkName]=o(t[i.checkName]),l[e?"addClass":"removeClass"](E),"radio"===a.type&&l.siblings().removeClass(E)):"radio"===a.type&&delete t[i.checkName])}),l.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[a.type]||"checkbox")+'"]:not(:disabled)')),d=t.last(),r=d.closest(c);("radio"===a.type&&r.hasClass(R)?t.first():t).prop("checked",o(d.prop("checked"))),e.syncCheckAll(),e.renderForm(a.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(A);t.layHeader.find("th").find(A).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){b.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,N,"sort("+n+")",f.extend({config:i},i.initSort)))},i.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=f(['
          ','',"
          "].join("")),t.layBox.append(t.layInit)))},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap&&(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135),1
          ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(L).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),u.height&&a.css("max-height",u.height-(s.layTool.outerHeight()||50)),i.find("."+j)[0]||i.append(a),s.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),p.close(s.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],s.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
        • "+(t.fieldTitle||t.title||t.field)+"
        • ").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=s.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,s.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](R),l!=i.hide&&s.setParentCol(!t,e),s.resize(),layui.event.call(this,N,"colToggled("+c+")",{col:i,config:u}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});x.ie?p.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
        • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
        • ','
        • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
        • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(s,u.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),d=[""].join(""),r=f(s.layHeader.html());r.append(s.layMain.find("table").html()),r.append(s.layTotal.find("table").html()),r.find("th.layui-table-patch").remove(),r.find("thead>tr>th."+W).filter(function(e,t){return!f(t).children("."+P).length}).remove(),r.find("tbody>tr>td."+W).remove(),o.document.write(d+r.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+c+")",f.extend({event:t,config:u},{}))}),s.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=s.col(t);layui.event.call(this,N,"colTool("+c+")",f.extend({event:a,config:u,col:t},{}))}),s.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,N,"pagebar("+c+")",f.extend({event:t,config:u},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||o.css("cursor","")}).on("mousedown",function(e){var t,a=f(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],s.cssRules(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||u.cellMinWidth,d.maxWidth=a.data("maxwidth")||u.cellMaxWidth}),a.data(S,d),w.eventMoveElem=a)}),w.docEvent||F.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(S)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+D).attr("lay-id"),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),p.close(s.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+D).attr("lay-id"),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(S),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(A),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");s.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(A+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?s.sort({field:t,type:"asc",fromEvent:!0}):s.sort({field:t,type:"desc",fromEvent:!0})}),s.commonMember=function(e){var t=f(this).parents("tr").eq(0).data("index"),r=s.layBody.find('tr[data-index="'+t+'"]'),c=(c=k.cache[s.key]||[])[t]||{},a={tr:r,config:u,data:k.clearCacheKey(c),dataCache:c,index:t,del:function(){k.cache[s.key][t]=[],r.remove(),s.scrollPatch()},update:function(e,d){e=e||{},layui.each(e,function(i,l){var n=r.children('td[data-field="'+i+'"]'),o=n.children(y);c[i]=a.data[i]=l,s.eachCols(function(e,t){var a;t.field==i?(o.html(T.call(s,{item3:t,content:l,tplData:f.extend({LAY_COL:t},c)})),n.data("content",l)):d&&(t.templet||t.toolbar)&&(e=r.children('td[data-field="'+(t.field||e)+'"]'),a=c[t.field],e.children(y).html(T.call(s,{item3:t,content:a,tplData:f.extend({LAY_COL:t},c)})),e.data("content",a))})}),s.renderForm()},setRowChecked:function(e){s.setRowChecked(f.extend({index:t},e))}};return f.extend(a,e)}),a=(s.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(s.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?s.setRowChecked({index:"all",checked:l}):(s.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+c+")",r.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return s.col(a.data("key"))}})))}),s.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;s.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+c+")",r.call(t[0],{checked:i,getCol:function(){return s.col(a.data("key"))}}))}),s.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").addClass(M)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").removeClass(M)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");f(e.target).is(t)||f(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){u.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=f(this);t.data("off")||layui.event.call(this,N,e+"("+c+")",r.call(t.children("td")[0]))}),n=function(e,t){var a,i,l,n;(e=f(e)).data("off")||(a=e.data("field"),n=e.data("key"),n=s.col(n),i=e.closest("tr").data("index"),i=k.cache[s.key][i],l=e.children(y),(n="function"==typeof n.edit?n.edit(i):n.edit)&&((n=f("textarea"===n?'':''))[0].value=e.data("content")||i[a]||l.text(),e.find("."+_)[0]||e.append(n),n.focus(),t)&&layui.stope(t))},i=(s.layBody.on("change","."+_,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[s.key][e],l=r.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return s.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+c+")",l)}).on("blur","."+_,function(){f(this).remove()}),s.layBody.on(u.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),s.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=f(this),a=t.children(y);t.data("off")||t.parent().hasClass(H)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.outerWidth()||0'))},l=function(e,t){var a=f(this),i=a.parent(),l=i.data("key"),n=s.col(l),o=i.parent().data("index"),i=i.children(y),d="layui-table-cell-c",r=f('');"tips"===(t=t||n.expandedMode||u.cellExpandedMode)?s.tipsIndex=p.tips(['
          ',i.html(),"
          ",''].join(""),i[0],{tips:[3,""],time:-1,anim:-1,maxWidth:x.ios||x.android?300:s.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){p.close(t)})}}):(s.elem.find("."+d).trigger("click"),s.cssRules(l,function(e){var t=e.style.width,a=n.expandedWidth||u.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),s(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')))}),d.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){r[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))})})),f("."+j).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var E=layui.$,x=layui.form,B=layui.table,y=layui.hint(),j={config:{},on:B.on,eachCols:B.eachCols,index:B.index,set:function(e){var t=this;return t.config=E.extend({},t.config,e),t},resize:B.resize,getOptions:B.getOptions,hideCol:B.hideCol,renderData:B.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){j.reloadData(n,e,t)}}},P=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},F="layui-hide",L=".layui-table-main",q=".layui-table-fixed-l",R=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",Y="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",s="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",H="LAY_EXPAND",z="LAY_HAS_EXPANDED",X="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=function(e){var t=this;t.index=++j.index,t.config=E.extend(!0,{},t.config,j.config,e),t.init(),t.render()},f=function(n,i,e){var l=B.cache[n];layui.each(e||l,function(e,t){var a=t[Y];-1!==a.indexOf("-")&&(l[a]=t),t[i]&&f(n,i,t[i])})},d=function(l,a,e){var d=P(l),r=("reloadData"!==e&&(d.status={expand:{}}),E.extend(!0,{},d.getOptions(),a)),n=r.tree,o=n.customName.children,i=n.customName.id,c=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,B.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},r.cols),a.parseData),u=a.done;r.url?e&&(!c||c.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(c)&&(a=c.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=d.flatToTree(a[t])),p(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&d.status.expand[e[i]]},o),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),d.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=d.flatToTree(a.data)),d.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n=(a||delete d.isExpandAll,this.elem.next()),i=(d.updateStatus(null,{LAY_HAS_EXPANDED:!1}),f(l,o),n.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(i.length&&(e=j.checkStatus(l),i.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!a&&r.autoSort&&r.initSort&&r.initSort.type&&j.sort(l),d.renderTreeTable(n),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),B.render(E.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?B.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,d,r,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||B.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",r={},layui.each(o,function(e,t){l=a+t[a],r[l]=E.extend({},t),r[l][i]=[]}),layui.each(r,function(e,t){(d=a+t[n])&&r[d]&&r[d][i].push(t)}),Object.keys(r).map(function(e){return r[e]}).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=E.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},t.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[Y],getParentNode:function(){return n.getNodeByIndex(e[s])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[Y],getParentNode:function(){return n.getNodeByIndex(i[s])},update:function(e){return j.updateNode(a,t,e)},remove:function(){return j.removeNode(a,t)},expand:function(e){return j.expandNode(a,E.extend({},e,{index:t}))},setChecked:function(e){return j.setRowChecked(a,E.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=j.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[Y],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=B.cache[n],l=n[e];if("delete"!==a&&l)return E.extend(l,a),t?E.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
          '),N=function(e){y[X]="success",y[s.children]=e,c.initData(y[s.children],y[Y]),U(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=E.extend({},m.where||o.where),C=m.autoParam,layui.each(C,function(e,t){t=t.split("=");I[t[0].trim()]=y[(t[1]||t[0]).trim()]}),(C=m.contentType||o.contentType)&&0==C.indexOf("application/json")&&(I=JSON.stringify(I)),w=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,k=m.headers||o.headers,_=m.parseData||o.parseData,O=m.response||o.response,E.ajax({type:w||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:k||{},success:function(e){(e="function"==typeof _?_.call(o,e)||e:e)[O.statusName]!=O.statusCode?(y[X]="error",g.html('')):N(e[O.dataName])},error:function(e,t){y[X]="error","function"==typeof o.error&&o.error(e,t)}})),h;y[z]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((m=o.initSort).type?layui.sort(v,m.field,"desc"===m.type,!0):layui.sort(v,B.config.indexName,null,!0)),c.initData(y[s.children],y[Y]),w=B.getTrHtml(r,v,null,null,e),S={trs:E(w.trs.join("")),trs_fixed:E(w.trs_fixed.join("")),trs_fixed_r:E(w.trs_fixed_r.join(""))},A=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed_r.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A})}),d.find(L).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,A),n)&&!p&&layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)}),d.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))).addClass(F);V("resize-"+r,function(){j.resize(r)},0)(),l&&"loading"!==y[X]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},g=(j.expandNode=function(e,t){var a,n,i,e=P(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),U({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},j.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=P(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=j.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])return!(c=!1)}),!c)return void layui.each(j.getData(a),function(e,t){j.expandNode(a,{index:t[Y],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[z])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[z]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return j.sort(a);var s,n=B.getTrHtml(a,e),f={trs:E(n.trs.join("")),trs_fixed:E(n.trs_fixed.join("")),trs_fixed_r:E(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[Y].split("-").length-1;s={"data-index":t[Y],"lay-data-index":t[Y],"data-level":a},f.trs.eq(e).attr(s),f.trs_fixed.eq(e).attr(s),f.trs_fixed_r.eq(e).attr(s)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);j.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),d=(l.hasClass(h)||l.addClass(h),i.id),r=i.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(l.attr("lay-filter"),n),f=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(B.cache[d],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=E(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
          ',a[H]?o.flexIconOpen:o.flexIconClose,"
          ",o.showIcon?'
          '+(a[c.icon]||o.icon||(a[u]?a[H]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
          ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),U({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&n.isExpandAll===undefined)return j.expandAll(d,!0);!1!==a&&f?layui.each(f,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),U({trElem:e.first()},!0)}):V("renderTreeTable-"+d,function(){i.hasNumberCol&&g(n),x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0)()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(B.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[Y]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),p=(t.prototype.render=function(e){var t=this;t.tableIns=B["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,E.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=E.extend(t,{},n.config,e),n.render(a)},j.reloadData=function(){var e=E.extend(!0,[],arguments);return e[3]="reloadData",j.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):E.extend(t,a),l.push(E.extend({},t)),i||(l=l.concat(p(t[n],a,n,i)))}),l}),o=(t.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||B.cache[n.id],p(e,t,i.customName.children,a)},t.prototype.getTableData=function(){var e=this.getOptions();return B.cache[e.id]},j.updateStatus=function(e,t,a){var e=P(e),n=e.getOptions();return a=a||(n.url?B.cache[n.id]:n.data),e.updateStatus(a,t)},j.sort=function(e){var t=P(e);t&&t.getOptions().autoSort&&(t.initData(),j.renderData(e))},function(n){var t=n.config.id,i=P(t),a=n.data=j.getNodeDataByIndex(t,n.index),l=a[Y],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(E.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){j.removeNode(t,a)},n.setRowChecked=function(e){j.setRowChecked(t,{index:a,checked:e})}}),u=(j.updateNode=function(e,a,t){var n,i,l,d,r,o=P(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=B.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(E(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},j.removeNode=function(e,t){var a,n,i,l,d,r=P(e);r&&(d=(a=r.getOptions()).tree,n=a.elem.next(),i=[],t=r.getNodeDataByIndex("string"===layui.type(t)?t:t[Y],!1,"delete"),l=r.getNodeDataByIndex(t[s]),r.updateCheckStatus(l),l=r.treeToFlat([t],t[d.customName.pid],t[s]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[Y]+'"]')}),n.find(i.join(",")).remove(),d=r.initData(),layui.each(r.treeToFlat(d),function(e,t){t[m]&&t[m]!==t[Y]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[Y],"lay-data-index":t[Y]})}),layui.each(B.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(r),j.resize(e))},j.addNodes=function(e,t){var a=P(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=B.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=E.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[z]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")).remove(),a.initData(),u[z]=!1,u[X]="local",U({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=B.cache[e].splice(-1===o?B.cache[e].length:o);if(B.cache[e]=B.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(B.cache[e]))):n.data=B.cache[e]),a.initData(),l.find(".layui-none").length)return B.renderData(e),c;var x,f=B.getTrHtml(e,c),h={trs:E(f.trs.join("")),trs_fixed:E(f.trs_fixed.join("")),trs_fixed_r:E(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[Y],"lay-data-index":t[Y],"data-level":"0"},h.trs.eq(e).attr(x),h.trs_fixed.eq(e).attr(x),h.trs_fixed_r.eq(e).attr(x)}),parseInt(c[0][Y])-1),y=l.find(L),n=l.find(q),f=l.find(R);-1==r?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][m],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(B.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))}return a.updateCheckStatus(u),j.resize(e),t&&l.find(L).find('tr[lay-data-index="'+c[0][Y]+'"]').get(0).scrollIntoViewIfNeeded(),c}},j.checkStatus=function(e,n){var i,t,a,l=P(e);if(l)return l=l.getOptions().tree,i=B.config.checkName,t=j.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?B.cache[e]:j.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},j.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&j.sort(e)}),j.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),j.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand)&&U({trElem:e.tr.first()},null,null,null,!0)}),j.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),j.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=P(t),o(e),u.call(a,e.tr,e.checked))}),t.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=E(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},t.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=B.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[Y]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),o=!(r=!0),e=(e="all"===a.data.cascade?B.cache[n]:j.getData(n,!0)).filter(function(e){return!e[u.disabledName]}),layui.each(e,function(e,t){if((t[l]||t[b])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}),o=o&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=B.config.checkName,t=t.customName.children,d=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
          '+i.text.none+"
          "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(F),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(F)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0"),c=p(['
          ','
          ','
          ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
          ",s.edit?(a={add:'',update:'',del:''},n=['
          '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
          "):void 0):"","
          "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+m)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+x),i=e.children("."+b),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+k),e=e.find("."+g),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+w),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(N)?(n.removeClass(N),i.slideUp(200),a.removeClass(v).addClass(C),l.updateFieldValue(t,"spread",!1)):(n.addClass(N),i.slideDown(200),a.addClass(v).removeClass(C),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+m)).removeClass(N),i.children("."+w).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(v).addClass(C))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(N)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+w)[0]||e.find("."+w).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+m)[0]&&(a=(e=e.parent("."+w)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+x).children("."+b).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+x),h=e.children("."+b);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+w),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+k).addClass("layui-tree-icon"),h.find("."+k).children(".layui-icon").addClass(C).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(f),r.append('
          '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+w),[c]),o.showLine&&(n[0]?(n.hasClass(L)||n.addClass(L),r.find("."+w).each(function(){p(this).children("."+m).last().addClass(F)}),(n.children("."+m).last().prev().hasClass(F)?n.children("."+m).last().prev():n.children("."+m).last()).removeClass(F),!r.parent("."+w)[0]&&r.next()[0]&&n.children("."+m).last().removeClass(F)):(l=r.siblings("."+m),a=1,c=r.parent("."+w),layui.each(l,function(e,i){p(i).children("."+w)[0]||(a=0)}),(1==a?(l.children("."+w).addClass(T),l.children("."+w).children("."+m).removeClass(F),r.children("."+w).addClass(T),c.removeClass(L),c.children("."+m).last().children("."+w).children("."+m).last()):r.children("."+w).children("."+m)).addClass(F))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+w).children("."+m).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+g).html(),h.children("."+g).html(""),h.append(''),h.children(".layui-tree-editInput").val(l).focus(),i=function(e){var i=e.val().trim()||o.text.defaultNodeName;e.remove(),h.children("."+g).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+m)[0]||r.next("."+m)[0]||r.parent("."+w)[0]?(r.siblings("."+m).children("."+x)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+m)[0]&&(i=e.siblings("."+m).children("."+x),a=(e=e.parent("."+w).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+m)))})(r),o.showLine&&(e=r.siblings("."+m),a=1,i=r.parent("."+w),layui.each(e,function(e,i){p(i).children("."+w)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(L),e.children("."+w).addClass(T),e.children("."+w).children("."+m).removeClass(F)),(r.next()[0]?i.children("."+m).last():r.prev()).children("."+w).children("."+m).last().addClass(F),r.next()[0]||r.parents("."+m)[1]||r.parents("."+m).eq(0).next()[0]||r.prev("."+m).addClass(F)):!r.next()[0]&&r.hasClass(F)&&r.prev().addClass(F))):(e=r.parent("."+w).prev(),o.showLine?(e.find("."+k).removeClass("layui-tree-icon"),e.find("."+k).children(".layui-icon").removeClass(v).addClass("layui-icon-file"),(i=e.parents("."+w).eq(0)).addClass(L),i.children("."+m).each(function(){p(this).children("."+w).children("."+m).last().addClass(F)})):e.find(".layui-tree-iconArrow").addClass(f),r.parents("."+m).eq(0).removeClass(N),r.parent("."+w).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+g).each(function(){var i,e=p(this).parents("."+x);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+w)[0]&&i(e.parent("."+w).parent("."+m))})(e.parent("."+m)))}),e.find("."+x).each(function(){var e=p(this).parent("."+m);e.hasClass("layui-tree-searchShow")||e.addClass(f)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+x).each(function(){p(this).parent("."+m).removeClass("layui-tree-searchShow "+f)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+m).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+x).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var s=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=s.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},d="layui-hide",h="layui-btn-disabled",r="layui-none",c="layui-transfer-box",u="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
          ','
          ','","
          ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
            ',"
            "].join("")},p=['
            ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
            ','",'","
            ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
            "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=s.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=s.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=s(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=s(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+c),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
          • ",'',"
          • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(r){var c=this,o=c.config;r=r||{},c.layBox.each(function(e){var t=s(this),a=t.find("."+f),t=t.find("."+u).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=s(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),c.layBtn.eq(e)[l?"removeClass":"addClass"](h),r.stopNone||(i=a.children("li:not(."+d+")").length,c.noneView(a,i?"":o.text.none))}),c.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=s('

            '+(t||"")+"

            ");e.find("."+r)[0]&&e.find("."+r).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){s(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=s.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),r=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+c).find("."+f).append(t.clone()),t.remove(),r.push(a[0].value),i.setValue()):l.each(function(e){s(this).find("."+f).children("li").each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+c).find("."+f).append(e.clone()),e.remove(),r.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+c).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(r),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=s(this).prev(),t=e[0].checked,a=e.parents("."+c).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=s(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent();a[0].disabled||n.transfer(i.data("index"),t)}),n.layBtn.on("click",function(){var e=s(this),t=e.data("index");e.hasClass(h)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=s(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](d),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+d).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,t=layui.lay,o=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,r,e,i)}}),r="carousel",d="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",m="layui-carousel-next",l="layui-carousel-arrow",f="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,o.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(d),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+l)[0]&&e.elem.find("."+l).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
              ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
            "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+f)[0]&&n.elem.find("."+f).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(m),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(d+" "+c+" "+m+" "+s+" "+u),t.eq(a.index).addClass(d),n.haveSlide=!1},350),n.elemInd.find("li").eq(a.index).addClass(d).siblings().removeClass(d),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,r,"change("+l+")",e))},i.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){"always"!==e.config.autoplay&&clearInterval(e.timer)}).on("mouseleave",function(){"always"!==e.config.autoplay&&e.autoplay()}),i.elem.data("haveEvents",!0))},o.render=function(e){return new i(e)},e(r,o)});layui.define(["jquery","lay"],function(e){"use strict";var s=layui.jquery,r=layui.lay,c={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var a=this;return a.config=s.extend({},a.config,e),a},on:function(e,a){return layui.onevent.call(this,l,e,a)}},l="rate",f="layui-icon-rate",h="layui-icon-rate-solid",o="layui-icon-rate-half",u="layui-icon-rate-solid layui-icon-rate-half",v="layui-icon-rate layui-icon-rate-half",a=function(e){var a=this;a.index=++c.index,a.config=s.extend({},a.config,c.config,e),a.render()};a.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},a.prototype.render=function(){var e=this,a=e.config,l=s(a.elem);if(1a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
              "),t=1;t<=a.length;t++){var o='
            • ";a.half&&parseInt(a.value)!==a.value&&t==Math.ceil(a.value)?n=n+'
            • ":n+=o}n+="
            "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,u=l.next(".layui-rate");u[0]&&u.remove(),e.elemTemp=s(n),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var i=this.config,n=this.elemTemp,t=n.find("i").width();n.children("li").each(function(e){var a=e+1,l=s(this);l.on("click",function(e){i.value=a,i.half&&e.pageX-s(this).offset().left<=t/2&&(i.value=i.value-.5),i.text&&n.next("span").text(i.value+"\u661f"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),l.on("mousemove",function(e){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+a+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&e.pageX-s(this).offset().left<=t/2&&l.children("i").addClass(o).removeClass(h)}),l.on("mouseleave",function(){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+Math.floor(i.value)+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&parseInt(i.value)!==i.value&&n.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(l){"use strict";var g=layui.$,e=function(l){};e.prototype.load=function(l){var t,i,o,n,e,r,a,c,m,s,u,f,y,d=this,p=0,h=g((l=l||{}).elem);if(h[0])return e=g(l.scrollElem||document),r=l.mb||50,a=!("isAuto"in l)||l.isAuto,c=l.end||"\u6ca1\u6709\u66f4\u591a\u4e86",m=l.scrollElem&&l.scrollElem!==document,u=g('"),h.find(".layui-flow-more")[0]||h.append(u),f=function(l,e){l=g(l),u.before(l),(e=0==e||null)?u.html(c):u.find("a").html(s),i=e,t=null,o&&o()},(y=function(){t=!0,u.find("a").html(''),"function"==typeof l.done&&l.done(++p,f)})(),u.find("a").on("click",function(){g(this);i||t||y()}),l.isLazyimg&&(o=d.lazyimg({elem:l.elem+" img",scrollElem:l.scrollElem})),a&&e.on("scroll",function(){var e=g(this),o=e.scrollTop();n&&clearTimeout(n),!i&&h.width()&&(n=setTimeout(function(){var l=(m?e:g(window)).height();(m?e.prop("scrollHeight"):document.documentElement.scrollHeight)-o-l<=r&&(t||y())},100))}),d},e.prototype.lazyimg=function(l){var e,c=this,m=0,s=g((l=l||{}).scrollElem||document),u=l.elem||"img",f=l.scrollElem&&l.scrollElem!==document,y=function(e,l){var o,t=s.scrollTop(),l=t+l,i=f?e.offset().top-s.offset().top+t:e.offset().top;t<=i&&i<=l&&e.attr("lay-src")&&(o=e.attr("lay-src"),layui.img(o,function(){var l=c.lazyimg.elem.eq(m);e.attr("src",o).removeAttr("lay-src"),l[0]&&n(l),m++},function(){c.lazyimg.elem.eq(m);e.removeAttr("lay-src")}))},n=function(l,e){var o=(f?e||s:g(window)).height(),t=s.scrollTop(),i=t+o;if(c.lazyimg.elem=g(u),l)y(l,o);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},W=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
            ',D.digit(t+1)+".","
            "].join(""):"",'
            ',e||" ","
            ",""].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++W,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code));lay.clipboard.writeText({text:t,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(t)}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
            '),C=x('
            '),r=x('
            '),_=x('
            '),u=x('
            '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
          • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){I.render(e.find(".layui-form")),S.render()}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
            '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
          • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
            '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); //# sourceMappingURL=layui.js.map diff --git a/dist/layui.js.map b/dist/layui.js.map index 6e2fba50..eca454ea 100644 --- a/dist/layui.js.map +++ b/dist/layui.js.map @@ -1 +1 @@ -{"version":3,"sources":["layui.js","modules/layui.all.js","modules/lay.js","modules/laytpl.js","modules/laypage.js","modules/laydate.js","modules/jquery.js","modules/layer.js","modules/util.js","modules/dropdown.js","modules/slider.js","modules/colorpicker.js","modules/element.js","modules/upload.js","modules/form.js","modules/table.js","modules/treeTable.js","modules/tree.js","modules/transfer.js","modules/carousel.js","modules/rate.js","modules/flow.js","modules/code.js"],"names":["win","jsPath","doc","document","config","modules","status","timeout","event","Layui","this","v","GLOBAL","LAYUI_GLOBAL","getPath","currentScript","src","js","scripts","last","length","i","readyState","dir","substring","lastIndexOf","error","msg","type","console","isOpera","opera","toString","builtin","lay","layer","laydate","laypage","laytpl","form","upload","dropdown","transfer","tree","table","treeTable","element","rate","colorpicker","slider","carousel","flow","util","code","jquery","all","layui.all","EV_REMOVE","prototype","cache","define","deps","factory","use","setApp","app","exports","layui","callback","apps","from","node","url","that","head","getElementsByTagName","item","jQuery","fn","on","each","index","splice","$","onScriptLoad","e","readyRegExp","navigator","platform","test","currentTarget","srcElement","removeChild","poll","onCallback","setTimeout","push","slice","apply","host","match","location","base","replace","createElement","async","charset","version","Date","getTime","appendChild","attachEvent","indexOf","addEventListener","disuse","isArray","getStyle","name","style","currentStyle","getComputedStyle","getPropertyValue","link","href","cssname","id","STAUTS_NAME","debug","rel","media","getElementById","getLinkElem","parseInt","removeAttribute","getAttribute","setAttribute","addcss","firename","modName","img","Image","complete","onload","onerror","options","key","o","clone","extend","router","hash","data","path","search","split","obj","pathname","_index","substr","settings","storage","localStorage","JSON","parse","value","remove","stringify","sessionData","sessionStorage","device","agent","userAgent","toLowerCase","getVersion","label","exp","RegExp","result","os","ie","ActiveXObject","weixin","android","ios","mobile","hint","_typeof","operand","String","Object","call","_isArray","len","callFn","sort","arr","desc","notClone","o1","o2","v1","v2","isNaN","isNum","reverse","stope","thisEvent","stopPropagation","cancelBubble","onevent","events","params","filter","eventName","filterName","_","off","debounce","func","wait","context","args","arguments","clearTimeout","throttle","cooldown","window","selector","Class","elem","querySelectorAll","Array","searchElement","fromIndex","rst","val","constructor","ai","target","digit","num","str","Math","pow","elemName","attr","hasScrollbar","body","scrollHeight","innerHeight","documentElement","clientHeight","getStyleRules","rules","sheet","styleSheet","cssRules","styleText","text","cssText","innerHTML","styleElem","find","append","position","opts","scrollArea","winArea","margin","left","top","rect1","clickType","rect","clientX","clientY","right","bottom","getBoundingClientRect","elemWidth","offsetWidth","elemHeight","offsetHeight","align","allowBottomOut","SYSTEM_RELOAD","othis","attrName","attrValue","Function","ev","errorText","join","isTopElem","topElems","matched","clipboard","writeText","then","done","opacity","select","execCommand","err","addStr","new_str","ii","removeStr","isObject","children","contains","child","addClass","className","removeClass","hasClass","has","css","parseValue","undefined","thisKey","thisValue","width","height","removeAttr","html","parentNode","detachEvent","removeEventListener","open","close","tool","escape","inner","source","template","tagExp","__","jss","jsse","tag","start","render","DISABLED","view","skipText","elemArr","plate","groups","Number","layout","count","curr","limits","limit","pages","ceil","prev","next","views","page","pager","first","halve","floor","end","max","theme","def","limitTemplet","refresh","skip","jump","isskip","childs","btn","input","nodeName","keyCode","load","even","isLayui","ready","MOD_ID","weekStart","laydate_dir","set","thisModule","inst","content","reload","MOD_NAME","THIS","LIMIT_YEAR","ELEM_STATIC","ELEM_LIST","ELEM_SELECTED","ELEM_HINT","ELEM_PREV","ELEM_NEXT","ELEM_CONFIRM","ELEM_TIME_TEXT","ELEM_TIME_BTN","ELEM_PREVIEW","ELEM_SHADE","newThat","getThis","init","dateType","formatArr","format","isLeapYear","year","range","isInitValue","min","trigger","show","showBottom","isPreview","btns","lang","calendar","mark","holidays","zIndex","change","autoConfirm","shade","cn","weeks","time","timeTips","startTime","endTime","dateTips","month","tools","confirm","clear","now","invalidDate","formatError","preview","en","isStatic","date","datetime","eventElem","fullPanel","rangeStr","rangeLinked","autoCalendarModel","state","startDate","endDate","auto","rangeElem","EXP_IF","EXP_SPLIT","EXP","EXP_IF_ONE","isInput","0-1-1","0-2-14","0-3-8","0-3-12","0-4-1","0-5-1","0-5-4","0-6-1","0-9-10","0-10-1","0-12-25","ymd","hms","day","tDate","newDate","getFullYear","getMonth","getDate","hours","minutes","seconds","thisDate","getHours","getMinutes","getSeconds","elemID","setValue","systemDate","themeStr","shortcutBtns","colorTheme","class","elemMain","elemHeader","elemCont","elemTable","divFooter","footer","divShortcut","shortcut","divHeader","headerChild","spanY","spanM","divContent","thead","theadTr","tr","insertRow","j","th","insertCell","insertBefore","ELEM_MAIN","title","shortcuts","btnSetting","dataset","timeBtn","dateTime","endState","listYM","checkDate","click","main","isPrimaryColor","thisElemDate","thisId","insertAdjacentHTML","changeEvent","renderAdditional","div","hinTimer","ms","getAsYM","Y","M","thisMaxDate","vals","arrDate","minMaxError","checkValid","getEndDate","initDate","startEnd","thisv","parseFloat","EYM","_i","_v","getDateTime","td","YMD","keys","idx","dayStr","timestamp","isOut","thisDateTime","startWeek","prevMaxDate","isAlone","tds","elemYM","firstDate","setFullYear","getDay","index_","st","list","setBtnStatus","timeParams","stampRange","yearNum","setTimeStatus","span","scroll","ul","haveList","isCN","startY","li","lay-ym","ol","inedx","childUL","ym","closeList","choose","scrollTop","haveSpan","tips","elemBtn","elemPreview","color","thisTime","param","panelIndex","isChange","YM","isSameDate","dateTimeTemp","active","addSubYear","isYear","isMonth","prevYear","prevMonth","nextMonth","nextYear","header","layYM","layType","tagName","toLocaleLowerCase","showEvent","eventHandler","unbind","run","closeStop","preventDefault","getInst","one","concat","amd","global","module","w","Error","noGlobal","deletedIds","class2type","hasOwn","hasOwnProperty","support","rtrim","rmsPrefix","rdashAlpha","fcamelCase","letter","toUpperCase","isArrayLike","isWindow","toArray","get","pushStack","elems","ret","merge","prevObject","map","eq","copyIsArray","copy","deep","isFunction","isPlainObject","expando","random","isReady","noop","isNumeric","realStringObj","isEmptyObject","nodeType","ownFirst","globalEval","trim","execScript","camelCase","string","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","guid","proxy","tmp","Symbol","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","escaped","escapedWhitespace","high","fromCharCode","unloadHandler","childNodes","els","seed","m","nid","nidselect","newSelector","newContext","ownerDocument","exec","getElementsByClassName","qsa","toSelector","testContext","qsaError","cacheLength","shift","markFunction","assert","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createPositionalPseudo","argument","matchIndexes","parent","defaultView","createComment","getById","getElementsByName","attrId","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","hasCompare","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","not","matcher","unmatched","innerText","elemLang","root","focus","activeElement","hasFocus","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","button","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","addCombinator","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","matcherIn","matcherOut","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","rparentsprev","charAt","parseHTML","guaranteedUnique","contents","sibling","targets","closest","l","pos","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","contentWindow","readyList","rnotwhite","detach","completed","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Deferred","tuples","promise","always","deferred","fail","fns","newDefer","tuple","returned","progress","notify","resolve","reject","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","remaining","updateFunc","values","notifyWith","resolveWith","readyWait","holdReady","hold","triggerHandler","doScroll","frameElement","doScrollCheck","inlineBlockNeedsLayout","container","zoom","deleteExpando","shrinkWrapBlocksVal","acceptData","noData","rbrace","rmultiDash","dataAttr","parseJSON","isEmptyDataObject","internalData","pvt","internalKey","isNode","toJSON","thisCache","internalRemoveData","cleanData","applet ","embed ","object ","hasData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","shrinkWrapBlocks","pnum","rcssNum","cssExpand","isHidden","el","adjustCSS","prop","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","access","chainable","emptyGet","raw","bulk","rcheckableType","rtagName","rscriptType","rleadingWhitespace","nodeNames","createSafeFragment","safeFrag","createDocumentFragment","fragment","leadingWhitespace","tbody","htmlSerialize","html5Clone","cloneNode","outerHTML","appendChecked","noCloneChecked","checkClone","noCloneEvent","wrapMap","option","legend","area","col","_default","getAll","found","setGlobalEval","refElements","optgroup","tfoot","colgroup","caption","rhtml","rtbody","fixDefaultChecked","defaultChecked","buildFragment","selection","ignored","wrap","safe","nodes","htmlPrefilter","createTextNode","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","types","origFn","t","handleObjIn","special","eventHandle","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","handleObj","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","rnamespace","noBubble","parentWindow","isPropagationStopped","isDefaultPrevented","fix","handlerQueue","delegateTarget","preDispatch","isImmediatePropagationStopped","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","metaKey","original","which","charCode","eventDoc","fromElement","pageX","scrollLeft","clientLeft","pageY","clientTop","relatedTarget","toElement","blur","beforeunload","returnValue","simulate","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","_submitBubble","propertyName","_justChanged","attaches","rinlinejQuery","rnoshimcache","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","fragmentDiv","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","oldData","curData","domManip","collection","hasScripts","iNoClone","_evalUrl","keepData","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","fixCloneNodeIssues","defaultSelected","forceAcceptData","prepend","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","HTML","BODY","actualDisplay","display","defaultDisplay","write","pixelPositionVal","pixelMarginRightVal","boxSizingReliableVal","reliableHiddenOffsetsVal","reliableMarginRightVal","reliableMarginLeftVal","rmargin","rnumnonpx","swap","old","computeStyleTests","divStyle","marginLeft","marginRight","getClientRects","borderCollapse","cssFloat","backgroundClip","clearCloneStyle","boxSizing","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","boxSizingReliable","pixelMarginRight","pixelPosition","reliableMarginRight","reliableMarginLeft","getStyles","curCSS","rposition","addGetHookIf","conditionFn","hookFn","opener","computed","maxWidth","minWidth","rs","rsLeft","runtimeStyle","pixelLeft","ralpha","ropacity","rdisplayswap","rnumsplit","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","showHide","hidden","setPositiveNumber","subtract","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","Tween","easing","cssHooks","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","cssProps","float","origName","isFinite","$1","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","propHooks","percent","eased","duration","step","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rrun","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","tick","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","rejectWith","timer","anim","*","tweener","oldfire","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","rspaces","valHooks","optionSet","nodeHook","boolHook","ruseDefault","getSetInput","rfocusable","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rclickable","rclass","removeProp","tabindex","for","getClass","classes","clazz","finalValue","curValue","toggleClass","stateVal","classNames","hover","fnOver","fnOut","nonce","rquery","rvalidtokens","rhash","requireNonComma","depth","comma","parseXML","DOMParser","parseFromString","loadXML","rts","rheaders","rnoContent","rprotocol","rurl","transports","allTypes","ajaxLocation","ajaxLocParts","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxConvert","s","response","isSuccess","conv2","current","conv","converters","responseFields","dataFilter","filterHidden","lastModified","etag","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","abort","statusText","finalText","success","method","crossDomain","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","firstDataType","ct","finalDataType","modified","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","buildParams","serialize","serializeArray","xhr","createActiveXHR","documentMode","createStandardXHR","xhrId","xhrCallbacks","xhrSupported","XMLHttpRequest","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","scriptCharset","oldCallbacks","rjsonp","_load","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","getWindow","animated","offset","setOffset","curCSSTop","curTop","curOffset","curCSSLeft","curElem","curLeft","curPosition","using","box","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","delegate","undelegate","size","andSelf","layer_dir","removeFocus","resize","minStackIndex","minStackArr","STATUS_NAME","alert","yes","cancel","btn2","rskin","skin","doms","closeBtn","icon","follow","fixed","setings","creat","pt","0","1","2","3","4","5","6","slideLeft","slideRight","SHADE","MOVE","move","isOutAnim","minStack","moveType","scrollbar","vessel","conType","times","titype","ismax","maxmin","titleHTML","face","animClass","additFaceClass","btnAlign","layero","elemShade","restore","hideOnClose","closeAll","tipsMore","moveElem","shadeo","setScrollbar","background-color","innerWidth","outerWidth","titHeight","outerHeight","btnHeight","setHeight","maxHeight","offsetTop","offsetLeft","layArea","goal","tipsG","guide","autoLeft","tipLeft","where","tipTop","padding-right","_DOC","DATA_NAME","resizeElem","dict","eventMoveElem","eventResizeElem","docEvent","setRig","setBot","X","stX","stY","moveOut","resizing","moveEnd","openLayer","IE6","shadeClose","full","reselect","sthis","setTop","record","restScrollbar","removeProperty","getChildFrame","getFrameIndex","iframeAuto","heg","iframeSrc","contElem","elemMin","hasMinLeft","maxminStatus","minLeft","edgeIndex","isfix","closeAnim","WRAP","domsElem","closeLast","prompt","placeholder","formType","maxlength","tab","photos","loop","toolbar","imgIndex","pushData","alt","pid","thumb","imgprev","tabimg","imgnext","errorMsg","keyup","isNumber","getTransform","transforms","rotate","scaleX","imgElem","transform","ratio","delta","wheelDelta","detail","zoomElem","loadi","loadImage","winarea","imgarea","wh","_$","isMobile","_win","propSuffix","deliver","fixbar","elemTopBar","setTopBar","ELEM","$doc","$target","bars","default","$scroll","bar1","bar2","elemBar","lay-type","bgcolor","countdown","clock","countTime","d","h","setTime","timeAgo","onlyDate","stamp","toDateString","years","days","milliseconds","meridiem","getMilliseconds","customMeridiem","hm","yy","yyyy","MM","dd","H","HH","hh","A","mm","ss","SSS","unescape","openWin","specs","toVisibleArea","scrollElem","SCROLL_NAME","OFFSET_NAME","scrollValue","scrollOffset","thisOffset","thisElem","vertical","eventType","_body","UTIL_EVENT_CALLBACK","_WIN","ELEM_LI","clickOrMousedown","MOD_INDEX","customName","reloadData","STR_ELEM","STR_ITEM_UP","STR_ITEM_DOWN","STR_MENU_TITLE","STR_ITEM_GROUP","STR_ITEM_PARENT","STR_ITEM_CHECKED","STR_ITEM_CHECKED2","STR_MENU_PANEL","STR_MENU_PANEL_L","STR_ELEM_SHADE","STR_GROUP_TITLE","isAllowSpread","isSpreadItem","accordion","rerender","elemView","elemBody","getDefaultView","elemUl","eachItemView","isChild","templet","group","-","viewLi","viewText","elemPanel","TPL_MAIN","delayRemove","prevElem","isClickAllScope","clickScope","elemGroup","spread","elemPrev","prevElemCallback","isAccordion","contentElem","needSpread","groupSibs","ELEM_LI_PAR","dataParams","SLIDER_BAR","SLIDER_WRAP","SLIDER_WRAP_BTN","SLIDER_TIPS","SLIDER_INPUT_TXT","ELEM_HOVER","showstep","minValue","maxValue","scaleFir","scaleSec","hasRender","elemTemp","number","elemInput","slide","sliderWidth","sliderWrap","tipsTxt","setTips","margin-bottom","sliderAct","sliderTxt","inputValue","offsetValue","round","arrValue","firLeft","valueTo","secLeft","wrapWidth","abs","selfValue","oldLeft","elemMove","up","upCall","oldleft","oldx","reaLeft","inputScale","getInputValue","realValue","ICON_PICKER_DOWN","ICON_PICKER_CLOSE","PICKER_TRIG_SPAN","PICKER_TRIG_I","PICKER_SIDE_SLIDER","PICKER_BASIS","PICKER_ALPHA_BG","PICKER_ALPHA_SLIDER","PICKER_BASIS_CUR","PICKER_INPUT","RGBToHSB","rgb","hsb","r","g","HSBToRGB","t1","t3","t2","HSBToHEX","hex","nr","RGBSTo","rgbs","re","$win","alpha","predefine","colors","elemColorBox","bgstr","background","renderPicker","elemPicker","removePicker","thisElemInd","thisColor","pickerEvents","bindElem","elemPickerInput","backgroundColor","side","basis","alphacolor","alphaslider","_h","_b","_s","_a","pre","x","y","z","createMoveElem","oldtop","oldy","maxh","maxw","sidetop","elemColorBoxSpan","colorValue","attrEvent","SHOW","TITLE","Element","NAV_ELEM","tabAdd","layAttr","tabElem","titElem","barElem","tabChange","tabAuto","tabDelete","layid","liElem","tabClick","dom","headerElem","NAV_ITEM","NAV_BAR","NAV_TREE","NAV_CHILD","NAV_MORE","NAV_ANIM","bodyElem","elemA","isJump","unselect","MORE","BAR","CLOSE","STOPE","isSpread","hideTabMore","tsbTitle","clickThis","NAV_ITEMED","needExpand","parentSibs","collapse","isNone","elemFilter","items","nav","timerMore","timeEnd","NAV_TITLE","bar","itemElem","thisA","breadcrumb","ATTE_SPR","separator","aNode","elemTitle","files","ELEM_FILE","ELEM_FORM","ELEM_IFRAME","ELEM_CHOOSE","UPLOADING","accept","exts","bindAction","force","field","acceptMime","drag","multiple","cross-domain","data-format-error","check-error","limit-number","limit-size","elemFile","isFile","initIE","elemForm","FileReader","chooseFiles","reader","readAsDataURL","limitSize","getFiles","ajaxSend","successful","failed","allDone","fileLength","total","request","sets","formData","FormData","resetFileState","unified","res","lengthComputable","loaded","iframeSend","iframeBody","thisFile","pushFile","resetFile","filename","newFile","File","typeName","images","video","audio","toFixed","setChooseFile","setChooseText","dataTransfer","HIDE","Form","verify","required","phone","email","identity","autocomplete","getFormElem","itemForm","getValue","nameIndex","fieldElem","init_name","inputs","handleInputNumber","rawValue","precision","noAction","isInit","decimals","controlBtn","increment","decrement","affix","CLASS_WRAP","CLASS_SUFFIX","CLASS_AFFIX","showAffix","renderAffix","affixOptions","elemAffix","elemIcon","hasElemAffix","hasElemSuffix","inputFilter","eye","SHOW_NAME","isShow","thatInput","TIPS","NONE","initValue","selects","reElem","isSearch","nearElem","laySearch","showDown","hideDown","followScroll","notOption","dl","dds","dts","dlHeight","none","posTop","thisDd","ddHeight","setThisDd","prevNext","thisElem1","showDd","firstIndex","cacheNearElem","nearDd","origin","thisDds","optionsFirst","switch","SUBTRA","checks","RE_CLASS","indeterminate","ICON","radios","ANIM","forms","sameRadio","renderItem","itemType","validate","intercept","DANGER","vers","verType","thisVer","rule","verst","isForm2Elem","layFilter","verifyElem","$dom","checkName","indexName","numbersName","disabledName","thisTable","setColsWidth","getThisTable","getThisTableConfig","parseTempData","item3","tplData","exportTemplet","LAY_COL","HIDE_V","ELEM_VIEW","ELEM_HEADER","ELEM_BODY","ELEM_FIXR","ELEM_PAGE_VIEW","ELEM_SORT","ELEM_CHECKED","ELEM_EDIT","ELEM_GROUP","ELEM_COL_SPECIAL","ELEM_TOOL_PANEL","ELEM_EXPAND","DATA_MOVE_NAME","TPL_HEADER","TPL_BODY","eachChildCols","loading","cellMinWidth","cellMaxWidth","MAX_VALUE","editTrigger","defaultToolbar","defaultContextmenu","autoSort","cols","pageName","limitName","statusName","msgName","dataName","totalRowName","countName","pullData","setInit","fullHeightGap","parentDiv","parentHeightGap","lay-filter","lay-id","renderStyle","layTool","layBox","layHeader","layMain","layBody","layFixed","layFixLeft","layFixRight","layTotal","layPage","renderToolbar","renderPagebar","fullSize","initOpts","space","unresize","numbers","getWidth","clientWidth","initChildCols","i1","item1","i2","item2","indexChild","childIndex","colspan","rowspan","colGroup","i22","item22","HAS_PARENT","parentKey","lineStyle","trClassName","cellMaxHeight","leftDefaultTemp","elemToolTemp","toolbarHtml","layEvent","print","iconElem","thisItem","pagebarHtml","layPagebar","pagebar","setParentCol","parentTh","parentColspan","arrParentKey","getThisCol","colspan2","nextParentKey","setColsPatch","setGroupWidth","getEndTh","colNums","autoColNums","autoWidth","countWidth","cntrWidth","getAutoWidth","eachCols","getScrollWidth","back","patchNums","i3","headerWidth","scrollPatch","haveInit","HAS_SET_COLS_PATCH","errorView","elemNone","layNone","syncCheckAll","renderForm","startLimit","initSort","reloadType","renderData","totalRow","ts","parseData","newData","getTrHtml","trsObj","trs","trs_fixed","trs_fixed_r","tds_fixed","tds_fixed_r","LAY_KEY","edit","trAttr","totalRowData","sortKey","pull","scrollPos","tipsIndex","renderTotal","totalNums","dataTotal","TOTAL_NUMS","totalRowDecimals","thisTotalNum","totalRowText","getContent","TOTAL_ROW","patchElem","getColElem","checkAllElem","checkStatus","isAll","setRowActive","setRowChecked","thisData","existChecked","getChecked","checkedElem","checkedSameElem","fixRElem","_field","elemSort","fromEvent","layInit","selectorText","headerMain","thIndex","thElem","bodyHeight","layMainTable","scrollWidth","outWidth","addPatch","fixHeight","ELEM_CELL","_BODY","commonMember","lis","openPanel","panel","fieldTitle","exportFile","printWin","edg","onafterprint","oLeft","pLeft","allowResize","ruleWidth","thatTable","setWidth","nowType","clearCacheKey","dataCache","del","update","fields","cell","thisTd","setRowEvent","getCol","UNROW","renderGridEdit","elemCell","editType","ELEM_GRID_DOWN","oldValue","reedit","showGridExpandIcon","gridExpand","ELEM_CELL_C","elemCellClose","expandedMode","cellExpandedMode","expandedWidth","cellExpandedWidth","$this","toolFn","errorTips","tdIndex","attrData","tableData","trElem","itemData","row","tableIns","CHILD_COLS","PARENT_COL_INDEX","arrs","eachArrs","nums","invalidNum","getData","dataTitle","dataMain","fieldsIsHide","textType","csv","xls","alink","reduce","acc","ignoreExport","download","getOptions","hideCol","thisTreeTable","ELEM_FIXL","TABLE_TREE","LAY_DATA_INDEX","LAY_DATA_INDEX_HISTORY","LAY_PARENT_INDEX","LAY_CHECKBOX_HALF","LAY_EXPAND","LAY_HAS_EXPANDED","LAY_ASYNC_STATUS","LAY_CASCADE","updateCache","childrenKey","tableCache","itemDataIndex","updateOptions","thatOptionsTemp","treeOptions","idKey","hasNumberCol","hasChecboxCol","hasRadioCol","mod","parseDataThat","retData","isSimpleData","enable","flatToTree","updateStatus","initData","isRenderData","tableView","isExpandAll","layTableAllChooseElem","renderTreeTable","cascade","isParent","indent","flexIconClose","flexIconOpen","showIcon","iconClose","iconOpen","iconLeaf","showFlexIconIfNotParent","dblClickExpand","expandAllDefault","rootPid","autoParam","beforeExpand","onExpand","pIdKey","idTemp","pidTemp","tableId","flatArr","k","treeToFlat","parentId","parentIndex","flat","dataIndex","dataNew","getTreeNode","getParentNode","getNodeByIndex","treeNode","treeNodeData","getNodeDataByIndex","updateNode","removeNode","expandNode","setChecked","getNodeById","tableDataFlat","newValue","dataRet","indexArr","getTableData","isParentKey","debounceFn","expandFlag","sonSign","callbackFlag","tableViewElem","treeTableThat","trData","isToggle","trExpand","retValue","trExpanded","trsElem","flexIconElem","trDataId","array","asyncSuccessFn","asyncContentType","asyncDataType","asyncJsonpCallback","asyncHeaders","asyncParseData","asyncResponse","str2","str2Obj","dataLevelNew","asyncSetting","asyncUrl","asyncAutoParam","itemArr","asyncType","childItem","data-index","lay-data-index","data-level","childNodesFlat","formatNumber","inherit","expandAll","isAllAsyncDone","isAllExpanded","trAll","trAllObj","dataItem","dataLevel","level","treeOptionsView","dataExpand","nameKey","htmlTemp","itemCell","trIndex","trDefaultExpand","trMain","trFixedL","trFixedR","statusObj","notCascade","dataUpdated","updateObjParams","tableThat","updateFn","checkNode","newNode","trLevel","newNodeTemp","trNew","delNodesFlat","delNode","nodeP","updateCheckStatus","i4","item4","addNodes","newNodes","childKey","childrenNodes","dataAfter","childrenNodesFlat","pageOptions","newNodesHtml","newNodesHtmlObj","trIndexPrev","newNodeIndex","newNodeItem","tableViewElemMAIN","tableViewElemFIXL","tableViewElemFIXR","trIndexNext","scrollIntoViewIfNeeded","includeHalfCheck","checkedData","updateData","setRowCheckedClass","dataP","trsP","isIndeterminate","updateParentCheckStatus","indexP","itemP","checkboxElem","checkedNum","inputElem","isRadio","triggerEvent","trDataP","radioElem","collectNeedExpandNodeIndex","needExpandIndex","nodeData","checkAllNodes","reloadAsyncNode","dataId","getNodesByFilter","isSingle","nodesResult","ELEM_SET","ICON_CLICK","ICON_ADD","ICON_SUB","ELEM_ENTRY","ELEM_TEXT","ELEM_PACK","ELEM_SPREAD","ELEM_LINE_SHORT","ELEM_SHOW","ELEM_EXTEND","showCheckbox","showLine","onlyIconControl","defaultNodeName","checkids","editIcon","hasChild","packDiv","entryDiv","checkClick","operate","entry","elemCheckbox","elemText","touchOpen","packCont","iconClick","updateFieldValue","sibls","setCheckbox","setParentsChecked","thisNodeElem","parentNodeElem","parentCheckbox","parentPack","oncheck","getVal","returnObj","textNew","elemDel","pare","siblingTree","checkState","parentTree","prevDiv","pack","onsearch","checkId","checkData","eachNodes","index2","cloneItem","checkedId","reInput","ELEM_BOX","ELEM_SEARCH","ELEM_DATA","TPL_BOX","checkAllName","showSearch","searchNone","layData","layBtn","listElem","renderCheckBtn","thisDataElem","allElemCheckbox","listElemCheckbox","haveChecked","isHide","stopNone","noneView","createNoneElem","selectedData","thisElemCheckbox","thisBoxElem","siblingInput","thisList","onchange","elemThis","thisListElem","isMatch","ELEM_LEFT","ELEM_RIGHT","ELEM_ARROW","ELEM_IND","arrow","indicator","autoplay","elemItem","prevIndex","nextIndex","addIndex","subIndex","tplArrow","goto","tplInd","elemInd","thisIndex","haveSlide","ICON_RATE","ICON_RATE_SOLID","ICON_RATE_HALF","ICON_SOLID_HALF","ICON_HALF_RATE","readonly","half","setText","action","setvalue","_ul","wide","ind","Flow","isOver","lazyimg","mb","isAuto","notDocument","more","over","isLazyimg","elemTop","CONST","ELEM_TAB","ELEM_FULL","ELEM_ITEM","ELEM_LINE","ELEM_LINE_NUM","ELEM_LN_MODE","CDDE_DATA_CLASS","LINE_RAW_WIDTH","about","ln","encode","wordWrap","highlighter","langMarker","codeIndex","mode","rawCode","finalCode","isIframePreview","elemHeaderView","elemToolbar","runPreview","codeElem","createCodeRst","lines","setCodeLayout","elemFixbar","copyElem","reloadCode","obverse","codeRender","createCode","line","codeParse","hasDataClass","onCopy","elemViewHas","elemTabHas","elemPreviewViewHas","FILTER_VALUE","elemTabView","elemPreviewView","classNameFull","classNameRestore","htmlElem","ELEM_SCROLLBAR_HIDE","oi","parameters","toolsEvent","addTools","viso","thisItemBody","srcdoc","previewStyle","elemItemBody","codeStyle","multiLine"],"mappings":"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","file":"layui.js","sourcesContent":["/**\n * Layui\n * Classic modular front-end UI library\n * MIT Licensed\n */\n \n;!function(win){\n \"use strict\";\n\n var doc = win.document;\n var config = {\n modules: {}, // 模块物理路径\n status: {}, // 模块加载状态\n timeout: 10, // 符合规范的模块请求最长等待秒数\n event: {} // 模块自定义事件\n };\n\n var Layui = function(){\n this.v = '2.8.18'; // Layui 版本号\n };\n \n // 识别预先可能定义的指定全局对象\n var GLOBAL = win.LAYUI_GLOBAL || {};\n\n // 获取 layui 所在目录\n var getPath = function(){\n var jsPath = doc.currentScript ? doc.currentScript.src : function(){\n var js = doc.scripts;\n var last = js.length - 1;\n var src;\n for(var i = last; i > 0; i--){\n if(js[i].readyState === 'interactive'){\n src = js[i].src;\n break;\n }\n }\n return src || js[last].src;\n }();\n \n return config.dir = GLOBAL.dir || jsPath.substring(0, jsPath.lastIndexOf('/') + 1);\n }();\n\n // 异常提示\n var error = function(msg, type){\n type = type || 'log';\n win.console && console[type] && console[type]('layui error hint: ' + msg);\n };\n\n var isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]';\n\n // 内置模块\n var modules = config.builtin = {\n lay: 'lay', // 基础 DOM 操作\n layer: 'layer', // 弹层\n laydate: 'laydate', // 日期\n laypage: 'laypage', // 分页\n laytpl: 'laytpl', // 模板引擎\n form: 'form', // 表单集\n upload: 'upload', // 上传\n dropdown: 'dropdown', // 下拉菜单\n transfer: 'transfer', // 穿梭框\n tree: 'tree', // 树结构\n table: 'table', // 表格\n treeTable: 'treeTable', // 树表\n element: 'element', // 常用元素操作\n rate: 'rate', // 评分组件\n colorpicker: 'colorpicker', // 颜色选择器\n slider: 'slider', // 滑块\n carousel: 'carousel', // 轮播\n flow: 'flow', // 流加载\n util: 'util', // 工具块\n code: 'code', // 代码修饰器\n jquery: 'jquery', // DOM 库(第三方)\n \n all: 'all',\n 'layui.all': 'layui.all' // 聚合标识(功能性的,非真实模块)\n };\n\n // 记录基础数据\n Layui.prototype.cache = config;\n\n // 定义模块\n Layui.prototype.define = function(deps, factory){\n var that = this;\n var type = typeof deps === 'function';\n var callback = function(){\n var setApp = function(app, exports){\n layui[app] = exports;\n config.status[app] = true;\n };\n typeof factory === 'function' && factory(function(app, exports){\n setApp(app, exports);\n config.callback[app] = function(){\n factory(setApp);\n }\n });\n return this;\n };\n \n type && (\n factory = deps,\n deps = []\n );\n \n that.use(deps, callback, null, 'define');\n return that;\n };\n\n // 使用特定模块\n Layui.prototype.use = function(apps, callback, exports, from){\n var that = this;\n var dir = config.dir = config.dir ? config.dir : getPath;\n var head = doc.getElementsByTagName('head')[0];\n\n apps = function(){\n if(typeof apps === 'string'){\n return [apps];\n } \n // 当第一个参数为 function 时,则自动加载所有内置模块,且执行的回调即为该 function 参数;\n else if(typeof apps === 'function'){\n callback = apps;\n return ['all'];\n } \n return apps;\n }();\n \n // 如果页面已经存在 jQuery 1.7+ 库且所定义的模块依赖 jQuery,则不加载内部 jquery 模块\n if(win.jQuery && jQuery.fn.on){\n that.each(apps, function(index, item){\n if(item === 'jquery'){\n apps.splice(index, 1);\n }\n });\n layui.jquery = layui.$ = jQuery;\n }\n \n var item = apps[0];\n var timeout = 0;\n\n exports = exports || [];\n\n // 静态资源host\n config.host = config.host || (dir.match(/\\/\\/([\\s\\S]+?)\\//)||['//'+ location.host +'/'])[0];\n \n // 加载完毕\n function onScriptLoad(e, url){\n var readyRegExp = navigator.platform === 'PLaySTATION 3' ? /^complete$/ : /^(complete|loaded)$/\n if (e.type === 'load' || (readyRegExp.test((e.currentTarget || e.srcElement).readyState))) {\n config.modules[item] = url;\n head.removeChild(node);\n (function poll() {\n if(++timeout > config.timeout * 1000 / 4){\n return error(item + ' is not a valid module', 'error');\n }\n config.status[item] ? onCallback() : setTimeout(poll, 4);\n }());\n }\n }\n \n // 回调\n function onCallback(){\n exports.push(layui[item]);\n apps.length > 1 ?\n that.use(apps.slice(1), callback, exports, from)\n : ( typeof callback === 'function' && function(){\n // 保证文档加载完毕再执行回调\n if(layui.jquery && typeof layui.jquery === 'function' && from !== 'define'){\n return layui.jquery(function(){\n callback.apply(layui, exports);\n });\n }\n callback.apply(layui, exports);\n }() );\n }\n \n // 如果引入了聚合板,内置的模块则不必重复加载\n if( apps.length === 0 || (layui['layui.all'] && modules[item]) ){\n return onCallback(), that;\n }\n \n /*\n * 获取加载的模块 URL\n * 如果是内置模块,则按照 dir 参数拼接模块路径\n * 如果是扩展模块,则判断模块路径值是否为 {/} 开头,\n * 如果路径值是 {/} 开头,则模块路径即为后面紧跟的字符。\n * 否则,则按照 base 参数拼接模块路径\n */\n \n var url = ( modules[item] ? (dir + 'modules/') \n : (/^\\{\\/\\}/.test(that.modules[item]) ? '' : (config.base || ''))\n ) + (that.modules[item] || item) + '.js';\n url = url.replace(/^\\{\\/\\}/, '');\n \n // 如果扩展模块(即:非内置模块)对象已经存在,则不必再加载\n if(!config.modules[item] && layui[item]){\n config.modules[item] = url; // 并记录起该扩展模块的 url\n }\n\n // 首次加载模块\n if(!config.modules[item]){\n var node = doc.createElement('script');\n \n node.async = true;\n node.charset = 'utf-8';\n node.src = url + function(){\n var version = config.version === true \n ? (config.v || (new Date()).getTime())\n : (config.version||'');\n return version ? ('?v=' + version) : '';\n }();\n \n head.appendChild(node);\n \n if(node.attachEvent && !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && !isOpera){\n node.attachEvent('onreadystatechange', function(e){\n onScriptLoad(e, url);\n });\n } else {\n node.addEventListener('load', function(e){\n onScriptLoad(e, url);\n }, false);\n }\n \n config.modules[item] = url;\n } else { // 缓存\n (function poll() {\n if(++timeout > config.timeout * 1000 / 4){\n return error(item + ' is not a valid module', 'error');\n }\n (typeof config.modules[item] === 'string' && config.status[item]) \n ? onCallback() \n : setTimeout(poll, 4);\n }());\n }\n \n return that;\n };\n\n // 弃用原有的指定模块,以便重新扩展新的同名模块\n Layui.prototype.disuse = function(apps){\n var that = this;\n apps = that.isArray(apps) ? apps : [apps];\n that.each(apps, function (index, item) {\n if (!config.status[item]) {\n // return error('module ' + item + ' is not exist');\n }\n delete that[item];\n delete modules[item];\n delete that.modules[item];\n delete config.status[item];\n delete config.modules[item];\n });\n return that;\n };\n\n // 获取节点的 style 属性值\n Layui.prototype.getStyle = function(node, name){\n var style = node.currentStyle ? node.currentStyle : win.getComputedStyle(node, null);\n return style[style.getPropertyValue ? 'getPropertyValue' : 'getAttribute'](name);\n };\n\n // css 外部加载器\n Layui.prototype.link = function(href, fn, cssname){\n var that = this;\n var head = doc.getElementsByTagName('head')[0];\n var link = doc.createElement('link');\n \n if(typeof fn === 'string') cssname = fn;\n \n var app = (cssname || href).replace(/\\.|\\//g, '');\n var id = 'layuicss-'+ app;\n var STAUTS_NAME = 'creating';\n var timeout = 0;\n \n link.href = href + (config.debug ? '?v='+new Date().getTime() : '');\n link.rel = 'stylesheet';\n link.id = id;\n link.media = 'all';\n \n if(!doc.getElementById(id)){\n head.appendChild(link);\n }\n \n if(typeof fn !== 'function') return that;\n \n // 轮询 css 是否加载完毕\n (function poll(status) {\n var delay = 100;\n var getLinkElem = doc.getElementById(id); // 获取动态插入的 link 元素\n \n // 如果轮询超过指定秒数,则视为请求文件失败或 css 文件不符合规范\n if(++timeout > config.timeout * 1000 / delay){\n return error(href + ' timeout');\n }\n \n // css 加载就绪\n if(parseInt(that.getStyle(getLinkElem, 'width')) === 1989){\n // 如果参数来自于初始轮询(即未加载就绪时的),则移除 link 标签状态\n if(status === STAUTS_NAME) getLinkElem.removeAttribute('lay-status');\n // 如果 link 标签的状态仍为「创建中」,则继续进入轮询,直到状态改变,则执行回调\n getLinkElem.getAttribute('lay-status') === STAUTS_NAME ? setTimeout(poll, delay) : fn();\n } else {\n getLinkElem.setAttribute('lay-status', STAUTS_NAME);\n setTimeout(function(){\n poll(STAUTS_NAME);\n }, delay);\n }\n }());\n \n // 轮询css是否加载完毕\n /*\n (function poll() {\n if(++timeout > config.timeout * 1000 / 100){\n return error(href + ' timeout');\n };\n parseInt(that.getStyle(doc.getElementById(id), 'width')) === 1989 ? function(){\n fn();\n }() : setTimeout(poll, 100);\n }());\n */\n \n return that;\n };\n \n // css 内部加载器\n Layui.prototype.addcss = function(firename, fn, cssname){\n return layui.link(config.dir + 'css/' + firename, fn, cssname);\n };\n \n // 存储模块的回调\n config.callback = {};\n \n // 重新执行模块的工厂函数\n Layui.prototype.factory = function(modName){\n if(layui[modName]){\n return typeof config.callback[modName] === 'function' \n ? config.callback[modName]\n : null;\n }\n };\n\n // 图片预加载\n Layui.prototype.img = function(url, callback, error) { \n var img = new Image();\n img.src = url; \n if(img.complete){\n return callback(img);\n }\n img.onload = function(){\n img.onload = null;\n typeof callback === 'function' && callback(img);\n };\n img.onerror = function(e){\n img.onerror = null;\n typeof error === 'function' && error(e);\n }; \n };\n\n // 全局配置\n Layui.prototype.config = function(options){\n options = options || {};\n for(var key in options){\n config[key] = options[key];\n }\n return this;\n };\n\n // 记录全部模块\n Layui.prototype.modules = function(){\n var clone = {};\n for(var o in modules){\n clone[o] = modules[o];\n }\n return clone;\n }();\n\n // 拓展模块\n Layui.prototype.extend = function(options){\n var that = this;\n\n // 验证模块是否被占用\n options = options || {};\n for(var o in options){\n if(that[o] || that.modules[o]){\n error(o+ ' Module already exists', 'error');\n } else {\n that.modules[o] = options[o];\n }\n }\n\n return that;\n };\n\n // location.hash 路由解析\n Layui.prototype.router = Layui.prototype.hash = function(hash){\n var that = this;\n var hash = hash || location.hash;\n var data = {\n path: [],\n search: {},\n hash: (hash.match(/[^#](#.*$)/) || [])[1] || ''\n };\n \n if(!/^#\\//.test(hash)) return data; // 禁止非路由规范\n\n hash = hash.replace(/^#\\//, '');\n data.href = '/' + hash;\n hash = hash.replace(/([^#])(#.*$)/, '$1').split('/') || [];\n \n // 提取 Hash 结构\n that.each(hash, function(index, item){\n /^\\w+=/.test(item) ? function(){\n item = item.split('=');\n data.search[item[0]] = item[1];\n }() : data.path.push(item);\n });\n \n return data;\n };\n \n // URL 解析\n Layui.prototype.url = function(href){\n var that = this;\n var data = {\n // 提取 url 路径\n pathname: function(){\n var pathname = href\n ? function(){\n var str = (href.match(/\\.[^.]+?\\/.+/) || [])[0] || '';\n return str.replace(/^[^\\/]+/, '').replace(/\\?.+/, '');\n }()\n : location.pathname;\n return pathname.replace(/^\\//, '').split('/');\n }(),\n \n // 提取 url 参数\n search: function(){\n var obj = {};\n var search = (href \n ? function(){\n var str = (href.match(/\\?.+/) || [])[0] || '';\n return str.replace(/\\#.+/, '');\n }()\n : location.search\n ).replace(/^\\?+/, '').split('&'); // 去除 ?,按 & 分割参数\n \n // 遍历分割后的参数\n that.each(search, function(index, item){\n var _index = item.indexOf('=')\n ,key = function(){ // 提取 key\n if(_index < 0){\n return item.substr(0, item.length);\n } else if(_index === 0){\n return false;\n } else {\n return item.substr(0, _index);\n }\n }(); \n // 提取 value\n if(key){\n obj[key] = _index > 0 ? item.substr(_index + 1) : null;\n }\n });\n \n return obj;\n }(),\n \n // 提取 Hash\n hash: that.router(function(){\n return href \n ? ((href.match(/#.+/) || [])[0] || '/')\n : location.hash;\n }())\n };\n \n return data;\n };\n\n // 本地持久存储\n Layui.prototype.data = function(table, settings, storage){\n table = table || 'layui';\n storage = storage || localStorage;\n \n if(!win.JSON || !win.JSON.parse) return;\n \n // 如果 settings 为 null,则删除表\n if(settings === null){\n return delete storage[table];\n }\n \n settings = typeof settings === 'object' \n ? settings \n : {key: settings};\n \n try {\n var data = JSON.parse(storage[table]);\n } catch(e) {\n var data = {};\n }\n \n if('value' in settings) data[settings.key] = settings.value;\n if(settings.remove) delete data[settings.key];\n storage[table] = JSON.stringify(data);\n \n return settings.key ? data[settings.key] : data;\n };\n \n // 本地临时存储\n Layui.prototype.sessionData = function(table, settings){\n return this.data(table, settings, sessionStorage);\n }\n\n // 设备信息\n Layui.prototype.device = function(key){\n var agent = navigator.userAgent.toLowerCase();\n\n // 获取版本号\n var getVersion = function(label){\n var exp = new RegExp(label + '/([^\\\\s\\\\_\\\\-]+)');\n label = (agent.match(exp)||[])[1];\n return label || false;\n };\n \n // 返回结果集\n var result = {\n os: function(){ // 底层操作系统\n if(/windows/.test(agent)){\n return 'windows';\n } else if(/linux/.test(agent)){\n return 'linux';\n } else if(/iphone|ipod|ipad|ios/.test(agent)){\n return 'ios';\n } else if(/mac/.test(agent)){\n return 'mac';\n } \n }(),\n ie: function(){ // ie 版本\n return (!!win.ActiveXObject || \"ActiveXObject\" in win) ? (\n (agent.match(/msie\\s(\\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识\n ) : false;\n }(),\n weixin: getVersion('micromessenger') // 是否微信\n };\n \n // 任意的 key\n if(key && !result[key]){\n result[key] = getVersion(key);\n }\n \n // 移动设备\n result.android = /android/.test(agent);\n result.ios = result.os === 'ios';\n result.mobile = (result.android || result.ios);\n \n return result;\n };\n\n // 提示\n Layui.prototype.hint = function(){\n return {\n error: error\n };\n };\n \n // typeof 类型细分 -> string/number/boolean/undefined/null、object/array/function/…\n Layui.prototype._typeof = Layui.prototype.type = function(operand){\n if(operand === null) return String(operand);\n \n // 细分引用类型\n return (typeof operand === 'object' || typeof operand === 'function') ? function(){\n var type = Object.prototype.toString.call(operand).match(/\\s(.+)\\]$/) || []; // 匹配类型字符\n var classType = 'Function|Array|Date|RegExp|Object|Error|Symbol'; // 常见类型字符\n \n type = type[1] || 'Object';\n \n // 除匹配到的类型外,其他对象均返回 object\n return new RegExp('\\\\b('+ classType + ')\\\\b').test(type) \n ? type.toLowerCase() \n : 'object';\n }() : typeof operand;\n };\n \n // 对象是否具备数组结构(此处为兼容 jQuery 对象)\n Layui.prototype._isArray = Layui.prototype.isArray = function(obj){\n var that = this;\n var len;\n var type = that.type(obj);\n \n if(!obj || (typeof obj !== 'object') || obj === win) return false;\n \n len = 'length' in obj && obj.length; // 兼容 ie\n return type === 'array' || len === 0 || (\n typeof len === 'number' && len > 0 && (len - 1) in obj // 兼容 jQuery 对象\n );\n };\n\n // 遍历\n Layui.prototype.each = function(obj, fn){\n var key;\n var that = this;\n var callFn = function(key, obj){ // 回调\n return fn.call(obj[key], key, obj[key])\n };\n \n if(typeof fn !== 'function') return that;\n obj = obj || [];\n \n // 优先处理数组结构\n if(that.isArray(obj)){\n for(key = 0; key < obj.length; key++){\n if(callFn(key, obj)) break;\n }\n } else {\n for(key in obj){\n if(callFn(key, obj)) break;\n }\n }\n \n return that;\n };\n\n // 将数组中的成员对象按照某个 key 的 value 值进行排序\n Layui.prototype.sort = function(arr, key, desc, notClone){\n var that = this;\n var clone = notClone ? (arr || []) : JSON.parse(\n JSON.stringify(arr || [])\n );\n\n // 若未传入 key,则直接返回原对象\n if(that.type(arr) === 'object' && !key){\n return clone;\n } else if(typeof arr !== 'object'){ // 若 arr 非对象\n return [clone];\n }\n \n // 开始排序\n clone.sort(function(o1, o2){\n var v1 = o1[key];\n var v2 = o2[key];\n \n /*\n * 特殊数据\n * 若比较的成员均非对象\n */\n\n // 若比较的成员均为数字\n if(!isNaN(o1) && !isNaN(o2)) return o1 - o2;\n // 若比较的成员只存在某一个非对象\n if(!isNaN(o1) && isNaN(o2)){\n if(key && typeof o2 === 'object'){\n v1 = o1;\n } else {\n return -1;\n }\n } else if (isNaN(o1) && !isNaN(o2)){\n if(key && typeof o1 === 'object'){\n v2 = o2;\n } else {\n return 1;\n }\n }\n\n /*\n * 正常数据\n * 即成员均为对象,也传入了对比依据: key\n * 若 value 为数字,按「大小」排序;若 value 非数字,则按「字典序」排序\n */\n\n // value 是否为数字\n var isNum = [!isNaN(v1), !isNaN(v2)];\n\n // 若为数字比较\n if(isNum[0] && isNum[1]){\n if(v1 && (!v2 && v2 !== 0)){ // 数字 vs 空\n return 1;\n } else if((!v1 && v1 !== 0) && v2){ // 空 vs 数字\n return -1;\n } else { // 数字 vs 数字\n return v1 - v2;\n }\n }\n \n /**\n * 字典序排序\n */\n \n // 若为非数字比较\n if(!isNum[0] && !isNum[1]){\n // 字典序比较\n if(v1 > v2){\n return 1;\n } else if (v1 < v2) {\n return -1;\n } else {\n return 0;\n }\n }\n \n // 若为混合比较\n if(isNum[0] || !isNum[1]){ // 数字 vs 非数字\n return -1;\n } else if(!isNum[0] || isNum[1]) { // 非数字 vs 数字\n return 1;\n }\n\n });\n\n desc && clone.reverse(); // 倒序\n return clone;\n };\n\n // 阻止事件冒泡\n Layui.prototype.stope = function(thisEvent){\n thisEvent = thisEvent || win.event;\n try { thisEvent.stopPropagation() } catch(e){\n thisEvent.cancelBubble = true;\n }\n };\n \n // 字符常理\n var EV_REMOVE = 'LAYUI-EVENT-REMOVE';\n\n // 自定义模块事件\n Layui.prototype.onevent = function(modName, events, callback){\n if(typeof modName !== 'string' \n || typeof callback !== 'function') return this;\n\n return Layui.event(modName, events, null, callback);\n };\n\n // 执行自定义模块事件\n Layui.prototype.event = Layui.event = function(modName, events, params, fn){\n var that = this;\n var result = null;\n var filter = (events || '').match(/\\((.*)\\)$/)||[]; // 提取事件过滤器字符结构,如:select(xxx)\n var eventName = (modName + '.'+ events).replace(filter[0], ''); // 获取事件名称,如:form.select\n var filterName = filter[1] || ''; // 获取过滤器名称,,如:xxx\n var callback = function(_, item){\n var res = item && item.call(that, params);\n res === false && result === null && (result = false);\n };\n \n // 如果参数传入特定字符,则执行移除事件\n if(params === EV_REMOVE){\n delete (that.cache.event[eventName] || {})[filterName];\n return that;\n }\n \n // 添加事件\n if(fn){\n config.event[eventName] = config.event[eventName] || {};\n\n if (filterName) {\n // 带filter不支持重复事件\n config.event[eventName][filterName] = [fn];\n } else {\n // 不带filter处理的是所有的同类事件,应该支持重复事件\n config.event[eventName][filterName] = config.event[eventName][filterName] || [];\n config.event[eventName][filterName].push(fn);\n }\n return this;\n }\n \n // 执行事件回调\n layui.each(config.event[eventName], function(key, item){\n // 执行当前模块的全部事件\n if(filterName === '{*}'){\n layui.each(item, callback);\n return;\n }\n \n // 执行指定事件\n key === '' && layui.each(item, callback);\n (filterName && key === filterName) && layui.each(item, callback);\n });\n \n return result;\n };\n \n // 新增模块事件\n Layui.prototype.on = function(events, modName, callback){\n var that = this;\n return that.onevent.call(that, modName, events, callback);\n }\n \n // 移除模块事件\n Layui.prototype.off = function(events, modName){\n var that = this;\n return that.event.call(that, modName, events, EV_REMOVE);\n };\n\n // 防抖\n Layui.prototype.debounce = function (func, wait) {\n var timeout;\n return function () {\n var context = this;\n var args = arguments;\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n func.apply(context, args);\n }, wait);\n }\n };\n\n // 节流\n Layui.prototype.throttle = function (func, wait) {\n var cooldown = false;\n return function () {\n var context = this;\n var args = arguments;\n if (!cooldown) {\n func.apply(context, args);\n cooldown = true;\n setTimeout(function () {\n cooldown = false;\n }, wait);\n }\n }\n };\n\n // exports layui\n win.layui = new Layui();\n\n}(window); // gulp build: layui-footer\n\n","/**\n * 用于打包聚合版,该文件不会存在于构建后的目录 \n */\n \nlayui.define(function(exports){\n var cache = layui.cache;\n layui.config({\n dir: cache.dir.replace(/lay\\/dest\\/$/, '')\n });\n exports('layui.all', layui.v);\n});","\r\n/** lay 基础模块 | MIT Licensed */\r\n\r\n;!function(window){ // gulp build: lay-header\r\n \"use strict\";\r\n \r\n var MOD_NAME = 'lay'; // 模块名\r\n var document = window.document;\r\n \r\n /**\r\n * 元素查找\r\n * @param {string | HTMLElement | JQuery} selector \r\n */\r\n var lay = function(selector){ \r\n return new Class(selector);\r\n };\r\n \r\n // 构造器\r\n var Class = function(selector){\r\n var that = this;\r\n var elem = typeof selector === 'object' ? function(){\r\n // 仅适配简单元素对象\r\n return layui.isArray(selector) ? selector : [selector];\r\n }() : (\r\n this.selector = selector,\r\n document.querySelectorAll(selector || null)\r\n );\r\n\r\n lay.each(elem, function(index, item){\r\n that.push(elem[index]);\r\n });\r\n };\r\n\r\n /*\r\n * API 兼容\r\n */\r\n Array.prototype.indexOf = Array.prototype.indexOf || function(searchElement, fromIndex) {\r\n var rst = -1;\r\n fromIndex = fromIndex || 0;\r\n layui.each(this, function(index, val){\r\n if (searchElement === val && index >= fromIndex) {\r\n rst = index;\r\n return !0;\r\n }\r\n });\r\n return rst;\r\n };\r\n \r\n /*\r\n lay 对象操作\r\n */\r\n \r\n Class.fn = Class.prototype = [];\r\n Class.fn.constructor = Class;\r\n\r\n /**\r\n * 将两个或多个对象的内容深度合并到第一个对象中\r\n * @callback ExtendFunc\r\n * @param {*} target - 一个对象\r\n * @param {...*} objectN - 包含额外的属性合并到第一个参数\r\n * @returns {*} 返回合并后的对象\r\n */\r\n /** @type ExtendFunc*/\r\n lay.extend = function(){\r\n var ai = 1;\r\n var length;\r\n var args = arguments;\r\n var clone = function(target, obj){\r\n target = target || (layui.type(obj) === 'array' ? [] : {}); // 目标对象\r\n for(var i in obj){\r\n // 若值为普通对象,则进入递归,继续深度合并\r\n target[i] = (obj[i] && obj[i].constructor === Object)\r\n ? clone(target[i], obj[i])\r\n : obj[i];\r\n }\r\n return target;\r\n };\r\n\r\n args[0] = typeof args[0] === 'object' ? args[0] : {};\r\n length = args.length\r\n\r\n for(; ai < length; ai++){\r\n if(typeof args[ai] === 'object'){\r\n clone(args[0], args[ai]);\r\n }\r\n }\r\n return args[0];\r\n };\r\n \r\n /**\r\n * IE 版本\r\n * @type {string | boolean} - 如果是 IE 返回版本字符串,否则返回 false\r\n */\r\n lay.ie = function(){\r\n var agent = navigator.userAgent.toLowerCase();\r\n return (!!window.ActiveXObject || \"ActiveXObject\" in window) ? (\r\n (agent.match(/msie\\s(\\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识\r\n ) : false;\r\n }();\r\n \r\n \r\n /** \r\n * 获取 layui 常见方法,以便用于组件单独版\r\n */\r\n \r\n lay.layui = layui || {};\r\n lay.getPath = layui.cache.dir; // 获取当前 JS 所在目录\r\n lay.stope = layui.stope; // 中止冒泡\r\n lay.each = function(){ // 遍历\r\n layui.each.apply(layui, arguments);\r\n return this;\r\n };\r\n\r\n\r\n /**\r\n * 数字前置补零\r\n * @param {number | string} num - 原始数字\r\n * @param {number} [length=2] - 数字长度,如果原始数字长度小于 length,则前面补零\r\n * @returns {string} 返回补 0 后的数字\r\n * @example\r\n * ```js\r\n * lay.digit(6, 2); // \"06\"\r\n * lay.digit('7', 3); // \"007\"\r\n * ```\r\n */\r\n lay.digit = function(num, length){\r\n if(!(typeof num === 'string' || typeof num === 'number')) return '';\r\n\r\n var str = '';\r\n num = String(num);\r\n length = length || 2;\r\n for(var i = num.length; i < length; i++){\r\n str += '0';\r\n }\r\n return num < Math.pow(10, length) ? str + num : num;\r\n };\r\n \r\n /**\r\n * 创建元素\r\n * @param {string} elemName - 元素的标签名\r\n * @param {{attrName: string, attrValue:string}} [attr] - 添加到元素上的属性\r\n * @returns {HTMLElement} 返回创建的 HTML 元素\r\n * @example\r\n * ```js\r\n * lay.elem('div', {id: 'test'}) //
            \r\n * ```\r\n */\r\n lay.elem = function(elemName, attr){\r\n var elem = document.createElement(elemName);\r\n lay.each(attr || {}, function(key, value){\r\n elem.setAttribute(key, value);\r\n });\r\n return elem;\r\n };\r\n\r\n /**\r\n * 当前页面是否存在滚动条\r\n * @returns {boolean} 是否存在滚动条\r\n * @example \r\n * ```\r\n * lay.hasScrollbar() // true 或 false\r\n * ```\r\n */\r\n lay.hasScrollbar = function(){\r\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);\r\n };\r\n\r\n /**\r\n * 获取 style rules\r\n * @param {HTMLStyleElement} style - HTMLStyle 元素\r\n * @param {(ruleItem: CSSStyleRule, index: number) => boolean} [callback] - 用来返回 style 元素中的每个 `style rule` 的函数,返回 true 终止遍历\r\n * @returns {CSSRuleList } 返回 `style rules`\r\n * @example\r\n * ```\r\n * \r\n * \r\n * lay.getStyleRules($('#test')[0], function(rule, index){\r\n * if(rule.selectorText === '.lay-card'){\r\n * console.log(index, rule.cssText) // 0 '.lay-card{color: #000}'\r\n * rule.style.color = '#EEE';\r\n * return true; // 终止遍历\r\n * }\r\n * }) // RuleList\r\n * ```\r\n */\r\n lay.getStyleRules = function(style, callback) {\r\n if (!style) return;\r\n\r\n var sheet = style.sheet || style.styleSheet || {};\r\n var rules = sheet.cssRules || sheet.rules;\r\n\r\n if (typeof callback === 'function') {\r\n layui.each(rules, function(i, item){\r\n if (callback(item, i)) return true;\r\n });\r\n }\r\n\r\n return rules;\r\n };\r\n\r\n /**\r\n * 创建 style 样式\r\n * @param {Object} options - 可配置的选项\r\n * @param {string | HTMLElement | JQuery} [options.target] - 目标容器,指定后会将样式追加到目标容器\r\n * @param {string} [options.id] - 样式元素的 id,默认自增\r\n * @param {string} options.text - 样式内容\r\n * @returns {HTMLStyleElement} 返回创建的样式元素 \r\n * @example\r\n * ```html\r\n *
            \r\n * \r\n * \r\n *
            \r\n * \r\n * lay.style({\r\n * target: '#targetEl',\r\n * text: '.card{color: #000}'\r\n * }) // \r\n * ```\r\n */\r\n lay.style = function(options){\r\n options = options || {};\r\n\r\n var style = lay.elem('style');\r\n var styleText = options.text || '';\r\n var target = options.target;\r\n \r\n if (!styleText) return;\r\n \r\n // 添加样式\r\n if ('styleSheet' in style) {\r\n style.setAttribute('type', 'text/css');\r\n style.styleSheet.cssText = styleText;\r\n } else {\r\n style.innerHTML = styleText;\r\n }\r\n \r\n // ID\r\n style.id = 'LAY-STYLE-'+ (options.id || function(index) {\r\n lay.style.index++;\r\n return 'DF-'+ index;\r\n }(lay.style.index || 0));\r\n\r\n // 是否向目标容器中追加 style 元素\r\n if (target) {\r\n var styleElem = lay(target).find('#'+ style.id);\r\n styleElem[0] && styleElem.remove();\r\n lay(target).append(style);\r\n }\r\n\r\n return style;\r\n };\r\n \r\n /**\r\n * 将元素定位到指定目标元素附近\r\n * @param {HTMLElement} target - 目标元素\r\n * @param {HTMLElement} elem - 定位元素\r\n * @param {Object} [opts] - 可配置的选项\r\n * @param {'absolute' | 'fixed'} [opts.position] - 元素的定位类型\r\n * @param {'left' | 'right'} [opts.clickType=\"left\"] - 点击类型,默认为 'left',如果 {@link target} 是 document 或 body 元素,则为 'right'\r\n * @param {'left' | 'right' | 'center'} [opts.align=\"left\"] - 对齐方式\r\n * @param {boolean} [opts.allowBottomOut=false] - 顶部没有足够区域显示时,是否允许底部溢出\r\n * @param {string | number} [opts.margin=5] - 边距\r\n * @param {Event} [opts.e] - 事件对象,仅右键生效\r\n * @param {boolean} [opts.SYSTEM_RELOAD] - 是否重载,用于出现滚动条时重新计算位置\r\n * @example\r\n * ```js\r\n * \r\n *
              \r\n *
            • 菜单1
            • \r\n *
            • 菜单2
            • \r\n *
            \r\n * \r\n * // 下拉菜单将被定位到按钮附近\r\n * lay.position(\r\n * $('#targetEl')[0], \r\n * $('#contentEl')[0], \r\n * {\r\n * position: 'fixed', \r\n * align: 'center'\r\n * }\r\n * )\r\n * ```\r\n */\r\n lay.position = function(target, elem, opts){\r\n if(!elem) return;\r\n opts = opts || {};\r\n \r\n // 如果绑定的是 document 或 body 元素,则直接获取鼠标坐标\r\n if(target === document || target === lay('body')[0]){\r\n opts.clickType = 'right';\r\n }\r\n\r\n // 绑定绑定元素的坐标\r\n var rect = opts.clickType === 'right' ? function(){\r\n var e = opts.e || window.event || {};\r\n return {\r\n left: e.clientX,\r\n top: e.clientY,\r\n right: e.clientX,\r\n bottom: e.clientY\r\n }\r\n }() : target.getBoundingClientRect();\r\n var elemWidth = elem.offsetWidth; // 控件的宽度\r\n var elemHeight = elem.offsetHeight; // 控件的高度\r\n \r\n // 滚动条高度\r\n var scrollArea = function(type){\r\n type = type ? 'scrollLeft' : 'scrollTop';\r\n return document.body[type] | document.documentElement[type];\r\n };\r\n \r\n // 窗口宽高\r\n var winArea = function(type){\r\n return document.documentElement[type ? 'clientWidth' : 'clientHeight']\r\n };\r\n var margin = 'margin' in opts ? opts.margin : 5;\r\n var left = rect.left;\r\n var top = rect.bottom;\r\n \r\n // 相对元素居中\r\n if(opts.align === 'center'){\r\n left = left - (elemWidth - target.offsetWidth) / 2;\r\n } else if(opts.align === 'right'){\r\n left = left - elemWidth + target.offsetWidth;\r\n }\r\n\r\n // 判断右侧是否超出边界\r\n if(left + elemWidth + margin > winArea('width')){\r\n left = winArea('width') - elemWidth - margin; // 如果超出右侧,则将面板向右靠齐\r\n }\r\n // 左侧是否超出边界\r\n if(left < margin) left = margin;\r\n \r\n\r\n // 判断底部和顶部是否超出边界\r\n if(rect.bottom + elemHeight + margin > winArea()){ // 底部超出边界\r\n // 优先判断顶部是否有足够区域显示完全,且底部不能超出边界\r\n if(rect.top > elemHeight + margin && rect.top <= winArea() ){\r\n top = rect.top - elemHeight - margin*2; // 顶部有足够的区域显示\r\n } else if(!opts.allowBottomOut){ // 顶部没有足够区域显示时,是否允许底部溢出\r\n top = winArea() - elemHeight - margin*2; // 面板向底部靠齐\r\n if(top < 0) top = 0; // 如果面板底部靠齐时,又溢出窗口顶部,则只能将顶部靠齐\r\n }\r\n }\r\n /*\r\n if(top + elemHeight + margin > winArea()){\r\n // 优先顶部是否有足够区域显示完全\r\n if(rect.top > elemHeight + margin){\r\n top = rect.top - elemHeight - margin*2; // 顶部有足够的区域显示\r\n } else {\r\n // 如果面板是鼠标右键弹出,且顶部没有足够区域显示,则将面板向底部靠齐\r\n if(obj.clickType === 'right'){\r\n top = winArea() - elemHeight - margin*2;\r\n if(top < 0) top = 0; // 不能溢出窗口顶部\r\n } else {\r\n top = margin; // 位置计算逻辑完备性处理\r\n }\r\n }\r\n }\r\n */\r\n \r\n // 定位类型\r\n var position = opts.position;\r\n if(position) elem.style.position = position;\r\n \r\n // 设置坐标\r\n elem.style.left = left + (position === 'fixed' ? 0 : scrollArea(1)) + 'px';\r\n elem.style.top = top + (position === 'fixed' ? 0 : scrollArea()) + 'px';\r\n\r\n // 防止页面无滚动条时,又因为弹出面板而出现滚动条导致的坐标计算偏差\r\n if(!lay.hasScrollbar()){\r\n var rect1 = elem.getBoundingClientRect();\r\n // 如果弹出面板的溢出窗口底部,则表示将出现滚动条,此时需要重新计算坐标\r\n if(!opts.SYSTEM_RELOAD && (rect1.bottom + margin) > winArea()){\r\n opts.SYSTEM_RELOAD = true;\r\n setTimeout(function(){\r\n lay.position(target, elem, opts);\r\n }, 50);\r\n }\r\n }\r\n };\r\n \r\n /**\r\n * 获取元素上的属性配置项\r\n * @param {string | HTMLElement | JQuery} elem - HTML 元素\r\n * @param {{attr: string} | string} [opts=\"lay-options\"] - 可配置的选项,string 类型指定属性名\r\n * @returns {*} 返回元素上的属性配置项\r\n * @example\r\n * ```js\r\n *
            \r\n * \r\n * var elem = $('#testEl')\r\n * lay.options(elem) // {color:red}\r\n * lay.options(elem[0]) // {color:red}\r\n * lay.options('#testEl') // {color:red}\r\n * lay.options('#testEl', {attr: 'lay-toc'}) // {hot: true}\r\n * lay.options('#testEl', 'lay-toc') // {hot: true}\r\n * \r\n * $('#testEl').attr('lay-toc') // '{hot: true}'\r\n * ```\r\n */\r\n lay.options = function(elem, opts){\r\n opts = typeof opts === 'object' ? opts : {attr: opts};\r\n\r\n if(elem === document) return {};\r\n\r\n var othis = lay(elem);\r\n var attrName = opts.attr || 'lay-options';\r\n var attrValue = othis.attr(attrName);\r\n\r\n try {\r\n return new Function('return '+ (attrValue || '{}'))();\r\n } catch(ev) {\r\n layui.hint().error(opts.errorText || [\r\n attrName + '=\"'+ attrValue + '\"', \r\n '\\n parseerror: '+ ev\r\n ].join('\\n'), 'error');\r\n return {};\r\n }\r\n };\r\n \r\n\r\n /**\r\n * 元素是否属于顶级元素(document 或 body)\r\n * @param {HTMLElement} elem - HTML 元素\r\n * @returns {boolean} 是否属于顶级元素\r\n * @example\r\n * ```js\r\n * lay.isTopElem(document) // true\r\n * ```\r\n */\r\n lay.isTopElem = function(elem){\r\n var topElems = [document, lay('body')[0]]\r\n ,matched = false;\r\n lay.each(topElems, function(index, item){\r\n if(item === elem){\r\n return matched = true\r\n }\r\n });\r\n return matched;\r\n };\r\n\r\n // 剪切板\r\n lay.clipboard = {\r\n /**\r\n * 写入文本\r\n * @param {Object} options - 可配置的选项\r\n * @param {string} options.text - 写入剪贴板的文本\r\n * @param {() => void} [options.done] - 写入成功/完成回调\r\n * @param {(err?: any) => void} [options.error] - 写入失败回调\r\n * @example\r\n * ```js\r\n * lay.clipboard.writeText({\r\n * text: '测试文本',\r\n * done: function(){ layer.msg('copied')},\r\n * error: function(){ layer.msg('error')}\r\n * })\r\n * ```\r\n */\r\n writeText: function(options) {\r\n var text = String(options.text);\r\n\r\n try {\r\n navigator.clipboard.writeText(text).then(\r\n options.done\r\n )['catch'](options.error);\r\n } catch(e) {\r\n var elem = document.createElement('textarea');\r\n\r\n elem.value = text;\r\n elem.style.position = 'fixed';\r\n elem.style.opacity = '0';\r\n elem.style.top = '0px';\r\n elem.style.left = '0px';\r\n \r\n document.body.appendChild(elem);\r\n elem.select();\r\n\r\n try {\r\n document.execCommand('copy');\r\n typeof options.done === 'function' && options.done();\r\n } catch(err) {\r\n typeof options.error === 'function' && options.error(err);\r\n } finally {\r\n elem.remove ? elem.remove() : document.body.removeChild(elem);\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n /*\r\n * lay 元素操作\r\n */\r\n \r\n\r\n // 追加字符\r\n Class.addStr = function(str, new_str){\r\n str = str.replace(/\\s+/, ' ');\r\n new_str = new_str.replace(/\\s+/, ' ').split(' ');\r\n lay.each(new_str, function(ii, item){\r\n if(!new RegExp('\\\\b'+ item + '\\\\b').test(str)){\r\n str = str + ' ' + item;\r\n }\r\n });\r\n return str.replace(/^\\s|\\s$/, '');\r\n };\r\n \r\n // 移除值\r\n Class.removeStr = function(str, new_str){\r\n str = str.replace(/\\s+/, ' ');\r\n new_str = new_str.replace(/\\s+/, ' ').split(' ');\r\n lay.each(new_str, function(ii, item){\r\n var exp = new RegExp('\\\\b'+ item + '\\\\b')\r\n if(exp.test(str)){\r\n str = str.replace(exp, '');\r\n }\r\n });\r\n return str.replace(/\\s+/, ' ').replace(/^\\s|\\s$/, '');\r\n };\r\n \r\n // 查找子元素\r\n Class.fn.find = function(selector){\r\n var that = this;\r\n var elem = [];\r\n var isObject = typeof selector === 'object';\r\n\r\n this.each(function(i, item){\r\n var children = isObject && item.contains(selector) \r\n ? selector\r\n : item.querySelectorAll(selector || null);\r\n\r\n lay.each(children, function(index, child){\r\n elem.push(child);\r\n });\r\n });\r\n\r\n return lay(elem);\r\n };\r\n \r\n // 元素遍历\r\n Class.fn.each = function(fn){\r\n return lay.each.call(this, this, fn);\r\n };\r\n \r\n // 添加 className\r\n Class.fn.addClass = function(className, type){\r\n return this.each(function(index, item){\r\n item.className = Class[type ? 'removeStr' : 'addStr'](item.className, className)\r\n });\r\n };\r\n \r\n // 移除 className\r\n Class.fn.removeClass = function(className){\r\n return this.addClass(className, true);\r\n };\r\n \r\n // 是否包含 css 类\r\n Class.fn.hasClass = function(className){\r\n var has = false;\r\n this.each(function(index, item){\r\n if(new RegExp('\\\\b'+ className +'\\\\b').test(item.className)){\r\n has = true;\r\n }\r\n });\r\n return has;\r\n };\r\n \r\n // 添加或获取 css style\r\n Class.fn.css = function(key, value){\r\n var that = this;\r\n var parseValue = function(v){\r\n return isNaN(v) ? v : (v +'px');\r\n };\r\n return (typeof key === 'string' && value === undefined) ? function(){\r\n if(that.length > 0) return that[0].style[key];\r\n }() : that.each(function(index, item){\r\n typeof key === 'object' ? lay.each(key, function(thisKey, thisValue){\r\n item.style[thisKey] = parseValue(thisValue);\r\n }) : item.style[key] = parseValue(value);\r\n }); \r\n };\r\n \r\n // 添加或获取宽度\r\n Class.fn.width = function(value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].offsetWidth; // 此处还需做兼容\r\n }() : that.each(function(index, item){\r\n that.css('width', value);\r\n }); \r\n };\r\n \r\n // 添加或获取高度\r\n Class.fn.height = function(value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].offsetHeight; // 此处还需做兼容\r\n }() : that.each(function(index, item){\r\n that.css('height', value);\r\n }); \r\n };\r\n \r\n // 添加或获取属性\r\n Class.fn.attr = function(key, value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].getAttribute(key);\r\n }() : that.each(function(index, item){\r\n item.setAttribute(key, value);\r\n }); \r\n };\r\n \r\n // 移除属性\r\n Class.fn.removeAttr = function(key){\r\n return this.each(function(index, item){\r\n item.removeAttribute(key);\r\n });\r\n };\r\n \r\n // 设置或获取 HTML 内容\r\n Class.fn.html = function(html){\r\n var that = this;\r\n return html === undefined ? function(){\r\n if(that.length > 0) return that[0].innerHTML;\r\n }() : this.each(function(index, item){\r\n item.innerHTML = html;\r\n });\r\n };\r\n \r\n // 设置或获取值\r\n Class.fn.val = function(value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].value;\r\n }() : this.each(function(index, item){\r\n item.value = value;\r\n });\r\n };\r\n \r\n // 追加内容\r\n Class.fn.append = function(elem){\r\n return this.each(function(index, item){\r\n typeof elem === 'object' \r\n ? item.appendChild(elem)\r\n : item.innerHTML = item.innerHTML + elem;\r\n });\r\n };\r\n \r\n // 移除内容\r\n Class.fn.remove = function(elem){\r\n return this.each(function(index, item){\r\n elem ? item.removeChild(elem) : item.parentNode.removeChild(item);\r\n });\r\n };\r\n \r\n // 事件绑定\r\n Class.fn.on = function(eventName, fn){\r\n return this.each(function(index, item){\r\n item.attachEvent ? item.attachEvent('on' + eventName, function(e){\r\n e.target = e.srcElement;\r\n fn.call(item, e);\r\n }) : item.addEventListener(eventName, fn, false);\r\n });\r\n };\r\n \r\n // 解除事件\r\n Class.fn.off = function(eventName, fn){\r\n return this.each(function(index, item){\r\n item.detachEvent \r\n ? item.detachEvent('on'+ eventName, fn) \r\n : item.removeEventListener(eventName, fn, false);\r\n });\r\n };\r\n \r\n // export\r\n window.lay = lay;\r\n \r\n // 输出为 layui 模块\r\n if(window.layui && layui.define){\r\n layui.define(function(exports){\r\n exports(MOD_NAME, lay);\r\n });\r\n }\r\n \r\n}(window, window.document); // gulp build: lay-footer\r\n","/**\r\n * laytpl 轻量模板引擎\r\n */\r\n\r\nlayui.define(function(exports){\r\n \"use strict\";\r\n\r\n // 默认属性\r\n var config = {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n };\r\n\r\n // 模板工具\r\n var tool = { \r\n escape: function(html){\r\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\r\n if(html === undefined || html === null) return '';\r\n \r\n html += '';\r\n if(!exp.test(html)) return html;\r\n\r\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\r\n .replace(//g, '>')\r\n .replace(/'/g, ''').replace(/\"/g, '"');\r\n }\r\n };\r\n\r\n // 内部方法\r\n var inner = {\r\n exp: function(str){\r\n return new RegExp(str, 'g');\r\n },\r\n // 错误提示\r\n error: function(e, source){\r\n var error = 'Laytpl Error: ';\r\n typeof console === 'object' && console.error(error + e + '\\n'+ (source || ''));\r\n return error + e;\r\n }\r\n };\r\n\r\n // constructor\r\n var Class = function(template, options){\r\n var that = this;\r\n that.config = that.config || {};\r\n that.template = template;\r\n\r\n // 简单属性合并\r\n var extend = function(obj){\r\n for(var i in obj){\r\n that.config[i] = obj[i];\r\n }\r\n };\r\n\r\n extend(config);\r\n extend(options);\r\n };\r\n\r\n // 标签正则\r\n Class.prototype.tagExp = function(type, _, __){\r\n var options = this.config;\r\n var types = [\r\n '#([\\\\s\\\\S])+?', // js 语句\r\n '([^{#}])*?' // 普通字段\r\n ][type || 0];\r\n\r\n return inner.exp((_||'') + options.open + types + options.close + (__||''));\r\n };\r\n\r\n // 模版解析\r\n Class.prototype.parse = function(template, data){\r\n var that = this;\r\n var options = that.config;\r\n var source = template;\r\n var jss = inner.exp('^'+ options.open +'#', '');\r\n var jsse = inner.exp(options.close +'$', '');\r\n\r\n // 模板必须为 string 类型\r\n if(typeof template !== 'string') return template;\r\n \r\n // 正则解析\r\n template = template.replace(/\\s+|\\r|\\t|\\n/g, ' ')\r\n .replace(inner.exp(options.open +'#'), options.open +'# ')\r\n .replace(inner.exp(options.close +'}'), '} '+ options.close).replace(/\\\\/g, '\\\\\\\\')\r\n \r\n // 不匹配指定区域的内容\r\n .replace(inner.exp(options.open + '!(.+?)!' + options.close), function(str){\r\n str = str.replace(inner.exp('^'+ options.open + '!'), '')\r\n .replace(inner.exp('!'+ options.close), '')\r\n .replace(inner.exp(options.open + '|' + options.close), function(tag){\r\n return tag.replace(/(.)/g, '\\\\$1')\r\n });\r\n return str\r\n })\r\n \r\n // 匹配 JS 语法\r\n .replace(/(?=\"|')/g, '\\\\').replace(that.tagExp(), function(str){\r\n str = str.replace(jss, '').replace(jsse, '');\r\n return '\";' + str.replace(/\\\\(.)/g, '$1') + ';view+=\"';\r\n })\r\n \r\n // 匹配普通输出语句\r\n .replace(that.tagExp(1), function(str){\r\n var start = '\"+laytpl.escape(';\r\n if(str.replace(/\\s/g, '') === options.open + options.close){\r\n return '';\r\n }\r\n str = str.replace(inner.exp(options.open + '|' + options.close), '');\r\n if(/^=/.test(str)){\r\n str = str.replace(/^=/, '');\r\n } else if(/^-/.test(str)){\r\n str = str.replace(/^-/, '');\r\n start = '\"+(';\r\n }\r\n return start + str.replace(/\\\\(.)/g, '$1') + ')+\"';\r\n });\r\n \r\n template = '\"use strict\";var view = \"' + template + '\";return view;';\r\n\r\n try {\r\n that.cache = template = new Function('d, laytpl', template);\r\n return template(data, tool);\r\n } catch(e) {\r\n delete that.cache;\r\n return inner.error(e, source);\r\n }\r\n };\r\n\r\n // 数据渲染\r\n Class.prototype.render = function(data, callback){\r\n data = data || {};\r\n\r\n var that = this;\r\n var result = that.cache ? that.cache(data, tool) : that.parse(that.template, data);\r\n \r\n // 返回渲染结果\r\n typeof callback === 'function' && callback(result);\r\n return result;\r\n };\r\n\r\n // 创建实例\r\n var laytpl = function(template, options){\r\n return new Class(template, options);\r\n };\r\n\r\n // 配置全局属性\r\n laytpl.config = function(options){\r\n options = options || {};\r\n for(var i in options){\r\n config[i] = options[i];\r\n }\r\n };\r\n\r\n laytpl.v = '2.0.0';\r\n \r\n // export\r\n exports('laytpl', laytpl);\r\n});","/**\n * laypage 分页组件\n */\n\nlayui.define(function(exports){\n \"use strict\";\n \n var doc = document;\n var id = 'getElementById';\n var tag = 'getElementsByTagName';\n \n // 字符常量\n var MOD_NAME = 'laypage';\n var DISABLED = 'layui-disabled';\n \n // 构造器\n var Class = function(options){\n var that = this;\n that.config = options || {};\n that.config.index = ++laypage.index;\n that.render(true);\n };\n\n // 判断传入的容器类型\n Class.prototype.type = function(){\n var config = this.config;\n if(typeof config.elem === 'object'){\n return config.elem.length === undefined ? 2 : 3;\n }\n };\n\n // 分页视图\n Class.prototype.view = function(){\n var that = this;\n var config = that.config;\n\n // 连续页码个数\n var groups = config.groups = 'groups' in config \n ? (Number(config.groups) || 0)\n : 5; \n \n // 排版\n config.layout = typeof config.layout === 'object' \n ? config.layout \n : ['prev', 'page', 'next'];\n \n config.count = Number(config.count) || 0; // 数据总数\n config.curr = Number(config.curr) || 1; // 当前页\n\n // 每页条数的选择项\n config.limits = typeof config.limits === 'object'\n ? config.limits\n : [10, 20, 30, 40, 50];\n\n // 默认条数\n config.limit = Number(config.limit) || 10;\n \n // 总页数\n config.pages = Math.ceil(config.count/config.limit) || 1;\n \n // 当前页不能超过总页数\n if(config.curr > config.pages){\n config.curr = config.pages;\n } else if(config.curr < 1) { // 当前分页不能小于 1\n config.curr = 1;\n }\n \n // 连续分页个数不能低于 0 且不能大于总页数\n if(groups < 0){\n groups = 1;\n } else if (groups > config.pages){\n groups = config.pages;\n }\n \n config.prev = 'prev' in config ? config.prev : '上一页'; // 上一页文本\n config.next = 'next' in config ? config.next : '下一页'; // 下一页文本\n \n // 计算当前组\n var index = config.pages > groups \n ? Math.ceil( (config.curr + (groups > 1 ? 1 : 0)) / (groups > 0 ? groups : 1) )\n : 1;\n \n // 视图片段\n var views = {\n // 上一页\n prev: function(){\n return config.prev \n ? ''+ config.prev +''\n : '';\n }(),\n \n // 页码\n page: function(){\n var pager = [];\n \n // 数据量为0时,不输出页码\n if(config.count < 1){\n return '';\n }\n \n // 首页\n if(index > 1 && config.first !== false && groups !== 0){\n pager.push(''+ (config.first || 1) +'');\n }\n\n // 计算当前页码组的起始页\n var halve = Math.floor((groups-1)/2) // 页码数等分\n var start = index > 1 ? config.curr - halve : 1;\n var end = index > 1 ? (function(){\n var max = config.curr + (groups - halve - 1);\n return max > config.pages ? config.pages : max;\n }()) : groups;\n \n // 防止最后一组出现“不规定”的连续页码数\n if(end - start < groups - 1){\n start = end - groups + 1;\n }\n\n // 输出左分割符\n if(config.first !== false && start > 2){\n pager.push('')\n }\n \n // 输出连续页码\n for(; start <= end; start++){\n if(start === config.curr){\n // 当前页\n pager.push(''+ start +'');\n } else {\n pager.push(''+ start +'');\n }\n }\n \n // 输出输出右分隔符 & 末页\n if(config.pages > groups && config.pages > end && config.last !== false){\n if(end + 1 < config.pages){\n pager.push('');\n }\n if(groups !== 0){\n pager.push(''+ (config.last || config.pages) +'');\n }\n }\n\n return pager.join('');\n }(),\n \n // 下一页\n next: function(){\n return config.next \n ? ''+ config.next +''\n : '';\n }(),\n \n // 数据总数\n count: '共 '+ config.count +' 条',\n \n // 每页条数\n limit: function(){\n var elemArr = ['';\n }(),\n \n // 刷新当前页\n refresh: [\n '',\n '',\n ''\n ].join(''),\n\n // 跳页区域\n skip: function(){\n var skipText = typeof config.skipText === 'object' ? config.skipText : [\n '到第',\n '页',\n '确定'\n ];\n return [\n ''+ skipText[0],\n '',\n skipText[1]+ '',\n ''\n ].join('');\n }()\n };\n\n return ['
            ',\n function(){\n var plate = [];\n layui.each(config.layout, function(index, item){\n if(views[item]){\n plate.push(views[item])\n }\n });\n return plate.join('');\n }(),\n '
            '].join('');\n };\n\n // 跳页的回调\n Class.prototype.jump = function(elem, isskip){\n if(!elem) return;\n\n var that = this;\n var config = that.config;\n var childs = elem.children;\n var btn = elem[tag]('button')[0];\n var input = elem[tag]('input')[0];\n var select = elem[tag]('select')[0];\n var skip = function(){\n var curr = Number(input.value.replace(/\\s|\\D/g, ''));\n if(curr){\n config.curr = curr;\n that.render();\n }\n };\n \n if(isskip) return skip();\n \n // 页码\n for(var i = 0, len = childs.length; i < len; i++){\n if(childs[i].nodeName.toLowerCase() === 'a'){\n laypage.on(childs[i], 'click', function(){\n var curr = Number(this.getAttribute('data-page'));\n if(curr < 1 || curr > config.pages) return;\n config.curr = curr;\n that.render();\n });\n }\n }\n \n // 条数\n if(select){\n laypage.on(select, 'change', function(){\n var value = this.value;\n if(config.curr*value > config.count){\n config.curr = Math.ceil(config.count/value);\n }\n config.limit = value;\n that.render();\n });\n }\n \n // 确定\n if(btn){\n laypage.on(btn, 'click', function(){\n skip();\n });\n }\n };\n \n // 输入页数字控制\n Class.prototype.skip = function(elem){\n if(!elem) return;\n\n var that = this;\n var input = elem[tag]('input')[0];\n\n if(!input) return;\n\n // 键盘事件\n laypage.on(input, 'keyup', function(e){\n var value = this.value;\n var keyCode = e.keyCode;\n\n if(/^(37|38|39|40)$/.test(keyCode)) return;\n\n if(/\\D/.test(value)){\n this.value = value.replace(/\\D/, '');\n }\n if(keyCode === 13){\n that.jump(elem, true)\n }\n });\n };\n\n // 渲染分页\n Class.prototype.render = function(load){\n var that = this;\n var config = that.config;\n var type = that.type();\n var view = that.view();\n \n if(type === 2){\n config.elem && (config.elem.innerHTML = view);\n } else if(type === 3){\n config.elem.html(view);\n } else {\n if(doc[id](config.elem)){\n doc[id](config.elem).innerHTML = view;\n }\n }\n\n config.jump && config.jump(config, load);\n \n var elem = doc[id]('layui-laypage-' + config.index);\n that.jump(elem);\n \n if(config.hash && !load){\n location.hash = '!'+ config.hash +'='+ config.curr;\n }\n \n that.skip(elem);\n };\n \n // 外部接口\n var laypage = {\n // 分页渲染\n render: function(options){\n var o = new Class(options);\n return o.index;\n },\n index: layui.laypage ? (layui.laypage.index + 10000) : 0,\n on: function(elem, even, fn){\n elem.attachEvent ? elem.attachEvent('on'+ even, function(e){ // for ie\n e.target = e.srcElement;\n fn.call(elem, e);\n }) : elem.addEventListener(even, fn, false);\n return this;\n }\n }\n\n exports(MOD_NAME, laypage);\n});\n","/** laydate 日期与时间控件 | MIT Licensed */\r\n\r\n;!function(window, document){ // gulp build: laydate-header\r\n \"use strict\";\r\n\r\n var isLayui = window.layui && layui.define, ready = {\r\n getPath: (window.lay && lay.getPath) ? lay.getPath : ''\r\n \r\n // 载入 CSS 依赖\r\n ,link: function(href, fn, cssname){\r\n \r\n // 未设置路径,则不主动加载 css\r\n if(!laydate.path) return;\r\n \r\n // 加载 css\r\n if(window.lay && lay.layui){\r\n lay.layui.link(laydate.path + href, fn, cssname);\r\n }\r\n }\r\n };\r\n \r\n // 识别预先可能定义的指定全局对象\r\n var GLOBAL = window.LAYUI_GLOBAL || {};\r\n\r\n // 模块名\r\n var MOD_NAME = 'laydate';\r\n var MOD_ID = 'layui-'+ MOD_NAME +'-id' // 已渲染过的索引标记名\r\n \r\n // 外部调用\r\n var laydate = {\r\n v: '5.5.0' // layDate 版本号\r\n ,config: {\r\n weekStart: 0, // 默认周日一周的开始\r\n } // 全局配置项\r\n ,index: (window.laydate && window.laydate.v) ? 100000 : 0\r\n ,path: GLOBAL.laydate_dir || ready.getPath\r\n \r\n // 设置全局项\r\n ,set: function(options){\r\n var that = this;\r\n that.config = lay.extend({}, that.config, options);\r\n return that;\r\n }\r\n \r\n // 主体 CSS 等待事件\r\n ,ready: function(callback){\r\n var cssname = 'laydate';\r\n var ver = ''\r\n var path = (isLayui ? 'modules/' : '') + 'laydate.css?v='+ laydate.v + ver;\r\n\r\n isLayui ? (\r\n layui['layui.all'] \r\n ? (typeof callback === 'function' && callback()) \r\n : layui.addcss(path, callback, cssname)\r\n ) : ready.link(path, callback, cssname);\r\n\r\n return this;\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return that.inst = {\r\n // 提示框\r\n hint: function(content){\r\n that.hint.call(that, content);\r\n },\r\n // 重载实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n config: that.config\r\n };\r\n };\r\n\r\n // 字符常量\r\n var MOD_NAME = 'laydate';\r\n var ELEM = '.layui-laydate';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'laydate-disabled';\r\n var LIMIT_YEAR = [100, 200000];\r\n \r\n var ELEM_STATIC = 'layui-laydate-static';\r\n var ELEM_LIST = 'layui-laydate-list';\r\n var ELEM_SELECTED = 'laydate-selected';\r\n var ELEM_HINT = 'layui-laydate-hint';\r\n var ELEM_DAY_NOW = 'laydate-day-now';\r\n var ELEM_PREV = 'laydate-day-prev';\r\n var ELEM_NEXT = 'laydate-day-next';\r\n var ELEM_FOOTER = 'layui-laydate-footer';\r\n var ELEM_SHORTCUT = 'layui-laydate-shortcut';\r\n var ELEM_NOW = '.laydate-btns-now'\r\n var ELEM_CONFIRM = '.laydate-btns-confirm';\r\n var ELEM_TIME_TEXT = 'laydate-time-text';\r\n var ELEM_TIME_BTN = 'laydate-btns-time';\r\n var ELEM_PREVIEW = 'layui-laydate-preview';\r\n var ELEM_MAIN = 'layui-laydate-main';\r\n var ELEM_SHADE = 'layui-laydate-shade';\r\n\r\n // 组件构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++laydate.index;\r\n that.config = lay.extend({}, that.config, laydate.config, options);\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = lay(options.elem || that.config.elem);\r\n if(elem.length > 1){\r\n lay.each(elem, function(){\r\n laydate.render(lay.extend({}, that.config, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n \r\n // 初始化属性\r\n options = lay.extend(that.config, lay.options(elem[0])); // 继承节点上的属性\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if(elem[0] && elem.attr(MOD_ID)){\r\n var newThat = thisModule.getThis(elem.attr(MOD_ID));\r\n if(!newThat) return;\r\n return newThat.reload(options);\r\n }\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n // 自增索引\r\n options.index = that.index;\r\n \r\n // 初始化\r\n laydate.ready(function(){\r\n that.init();\r\n });\r\n };\r\n \r\n // 日期格式字符\r\n var dateType = 'yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s';\r\n \r\n // 将日期格式字符转换为数组\r\n thisModule.formatArr = function(format){\r\n return (format || '').match(new RegExp(dateType + '|.', 'g')) || []\r\n };\r\n \r\n /*\r\n 组件操作\r\n */\r\n \r\n // 是否闰年\r\n Class.isLeapYear = function(year){\r\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n type: 'date' //控件类型,支持:year/month/date/time/datetime\r\n ,range: false //是否开启范围选择,即双控件\r\n ,format: 'yyyy-MM-dd' //默认日期格式\r\n ,value: null //默认日期,支持传入new Date(),或者符合format参数设定的日期格式字符\r\n ,isInitValue: true //用于控制是否自动向元素填充初始值(需配合 value 参数使用)\r\n ,min: '1900-1-1' //有效最小日期,年月日必须用“-”分割,时分秒必须用“:”分割。注意:它并不是遵循 format 设定的格式。\r\n ,max: '2099-12-31' //有效最大日期,同上\r\n ,trigger: 'click' //呼出控件的事件\r\n ,show: false //是否直接显示,如果设置 true,则默认直接显示控件\r\n ,showBottom: true //是否显示底部栏\r\n ,isPreview: true //是否显示值预览\r\n ,btns: ['clear', 'now', 'confirm'] //右下角显示的按钮,会按照数组顺序排列\r\n ,lang: 'cn' //语言,只支持cn/en,即中文和英文\r\n ,theme: 'default' //主题\r\n ,position: null //控件定位方式定位, 默认absolute,支持:fixed/absolute/static\r\n ,calendar: false //是否开启公历重要节日,仅支持中文版\r\n ,mark: {} //日期备注,如重要事件或活动标记\r\n ,holidays: null // 标注法定节假日或补假上班\r\n ,zIndex: null //控件层叠顺序\r\n ,done: null //控件选择完毕后的回调,点击清空/现在/确定也均会触发\r\n ,change: null //日期时间改变后的回调\r\n ,autoConfirm: true //是否自动确认(日期|年份|月份选择器非range下是否自动确认)\r\n ,shade: 0\r\n };\r\n \r\n //多语言\r\n Class.prototype.lang = function(){\r\n var that = this\r\n ,options = that.config\r\n ,text = {\r\n cn: {\r\n weeks: ['日', '一', '二', '三', '四', '五', '六']\r\n ,time: ['时', '分', '秒']\r\n ,timeTips: '选择时间'\r\n ,startTime: '开始时间'\r\n ,endTime: '结束时间'\r\n ,dateTips: '返回日期'\r\n ,month: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二']\r\n ,tools: {\r\n confirm: '确定'\r\n ,clear: '清空'\r\n ,now: '现在'\r\n }\r\n ,timeout: '结束时间不能早于开始时间
            请重新选择'\r\n ,invalidDate: '不在有效日期或时间范围内'\r\n ,formatError: ['日期格式不合法
            必须遵循下述格式:
            ', '
            已为你重置']\r\n ,preview: '当前选中的结果'\r\n }\r\n ,en: {\r\n weeks: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\r\n ,time: ['Hours', 'Minutes', 'Seconds']\r\n ,timeTips: 'Select Time'\r\n ,startTime: 'Start Time'\r\n ,endTime: 'End Time'\r\n ,dateTips: 'Select Date'\r\n ,month: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\r\n ,tools: {\r\n confirm: 'Confirm'\r\n ,clear: 'Clear'\r\n ,now: 'Now'\r\n }\r\n ,timeout: 'End time cannot be less than start Time
            Please re-select'\r\n ,invalidDate: 'Invalid date'\r\n ,formatError: ['The date format error
            Must be followed:
            ', '
            It has been reset']\r\n ,preview: 'The selected result'\r\n }\r\n };\r\n return text[options.lang] || text['cn'];\r\n };\r\n\r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = lay.extend({}, that.config, options);\r\n that.init();\r\n };\r\n \r\n //初始准备\r\n Class.prototype.init = function(){\r\n var that = this\r\n ,options = that.config\r\n ,isStatic = options.position === 'static'\r\n ,format = {\r\n year: 'yyyy'\r\n ,month: 'yyyy-MM'\r\n ,date: 'yyyy-MM-dd'\r\n ,time: 'HH:mm:ss'\r\n ,datetime: 'yyyy-MM-dd HH:mm:ss'\r\n };\r\n \r\n options.elem = lay(options.elem);\r\n options.eventElem = lay(options.eventElem);\r\n \r\n if(!options.elem[0]) return;\r\n\r\n layui.type(options.theme) !== 'array' && (options.theme = [options.theme]);\r\n // 设置了全面版模式\r\n if (options.fullPanel) {\r\n if (options.type !== 'datetime' || options.range) {\r\n // 目前只支持datetime的全面版\r\n delete options.fullPanel;\r\n }\r\n }\r\n\r\n //日期范围分隔符\r\n that.rangeStr = options.range ? (\r\n typeof options.range === 'string' ? options.range : '-'\r\n ) : '';\r\n\r\n //日期范围的日历面板是否联动\r\n that.rangeLinked = !!(options.range && options.rangeLinked && (options.type === 'date' || options.type === 'datetime'))\r\n\r\n //切换日历联动方式\r\n that.autoCalendarModel = function () {\r\n var state = that.rangeLinked;\r\n that.rangeLinked = (options.range && (options.type === 'date' || options.type === 'datetime'))\r\n && ((!that.startDate || !that.endDate) || (that.startDate && that.endDate && that.startDate.year === that.endDate.year && that.startDate.month === that.endDate.month));\r\n lay(that.elem)[that.rangeLinked ? 'addClass' : 'removeClass']('layui-laydate-linkage');\r\n return that.rangeLinked != state; // 返回发生了变化\r\n };\r\n\r\n //是否自动切换\r\n that.autoCalendarModel.auto = that.rangeLinked && options.rangeLinked === 'auto';\r\n\r\n //若 range 参数为数组,则表示为开始日期和结束日期的 input 对象\r\n if(layui.type(options.range) === 'array'){\r\n that.rangeElem = [\r\n lay(options.range[0]),\r\n lay(options.range[1])\r\n ];\r\n }\r\n \r\n //若 type 设置非法,则初始化为 date 类型\r\n if(!format[options.type]){\r\n window.console && console.error && console.error('laydate type error:\\''+ options.type + '\\' is not supported')\r\n options.type = 'date';\r\n }\r\n \r\n //根据不同 type,初始化默认 format\r\n if(options.format === format.date){\r\n options.format = format[options.type] || format.date;\r\n }\r\n \r\n //将日期格式转化成数组\r\n that.format = thisModule.formatArr(options.format);\r\n\r\n // 设置了一周的开始是周几,此处做一个控制\r\n if (options.weekStart) {\r\n if (!/^[0-6]$/.test(options.weekStart)) {\r\n var lang = that.lang();\r\n options.weekStart = lang.weeks.indexOf(options.weekStart);\r\n if (options.weekStart === -1) options.weekStart = 0;\r\n }\r\n }\r\n\r\n //生成正则表达式\r\n that.EXP_IF = ''; \r\n that.EXP_SPLIT = ''; \r\n lay.each(that.format, function(i, item){\r\n var EXP = new RegExp(dateType).test(item) \r\n ? '\\\\d{'+ function(){\r\n if(new RegExp(dateType).test(that.format[i === 0 ? i + 1 : i - 1]||'')){\r\n if(/^yyyy|y$/.test(item)) return 4;\r\n return item.length;\r\n }\r\n if(/^yyyy$/.test(item)) return '1,4';\r\n if(/^y$/.test(item)) return '1,308';\r\n return '1,2';\r\n }() +'}' \r\n : '\\\\' + item;\r\n that.EXP_IF = that.EXP_IF + EXP;\r\n that.EXP_SPLIT = that.EXP_SPLIT + '(' + EXP + ')';\r\n });\r\n //验证日期格式正则\r\n that.EXP_IF_ONE = new RegExp('^'+ that.EXP_IF +'$'); //验证单个日期格式\r\n that.EXP_IF = new RegExp('^'+ (\r\n options.range ? \r\n that.EXP_IF + '\\\\s\\\\'+ that.rangeStr + '\\\\s' + that.EXP_IF\r\n : that.EXP_IF\r\n ) +'$');\r\n that.EXP_SPLIT = new RegExp('^'+ that.EXP_SPLIT +'$', '');\r\n \r\n //如果不是 input|textarea 元素,则默认采用 click 事件\r\n if(!that.isInput(options.elem[0])){\r\n if(options.trigger === 'focus'){\r\n options.trigger = 'click';\r\n }\r\n }\r\n \r\n // 设置唯一 KEY\r\n options.elem.attr('lay-key', that.index);\r\n options.eventElem.attr('lay-key', that.index);\r\n options.elem.attr(MOD_ID, options.id); // 渲染过的标记\r\n\r\n //记录重要日期\r\n options.mark = lay.extend({}, (options.calendar && options.lang === 'cn') ? {\r\n '0-1-1': '元旦'\r\n ,'0-2-14': '情人'\r\n ,'0-3-8': '妇女'\r\n ,'0-3-12': '植树'\r\n ,'0-4-1': '愚人'\r\n ,'0-5-1': '劳动'\r\n ,'0-5-4': '青年'\r\n ,'0-6-1': '儿童'\r\n ,'0-9-10': '教师'\r\n ,'0-10-1': '国庆'\r\n ,'0-12-25': '圣诞'\r\n } : {}, options.mark);\r\n \r\n //获取限制内日期\r\n lay.each(['min', 'max'], function(i, item){\r\n var ymd = [];\r\n var hms = [];\r\n if(typeof options[item] === 'number'){ //如果为数字\r\n var day = options[item]\r\n ,tDate = new Date()\r\n ,time = that.newDate({ //今天的最大毫秒数\r\n year: tDate.getFullYear()\r\n ,month: tDate.getMonth()\r\n ,date: tDate.getDate()\r\n ,hours: i ? 23 : 0\r\n ,minutes: i ? 59 : 0\r\n ,seconds: i ? 59 : 0\r\n }).getTime() \r\n ,STAMP = 86400000 //代表一天的毫秒数\r\n ,thisDate = new Date(\r\n day ? (\r\n day < STAMP ? time + day*STAMP : day //如果数字小于一天的毫秒数,则数字为天数,否则为毫秒数\r\n ) : time\r\n );\r\n ymd = [thisDate.getFullYear(), thisDate.getMonth() + 1, thisDate.getDate()];\r\n hms = [thisDate.getHours(), thisDate.getMinutes(), thisDate.getSeconds()];\r\n } else if(typeof options[item] === 'string') {\r\n ymd = (options[item].match(/\\d+-\\d+-\\d+/) || [''])[0].split('-');\r\n hms = (options[item].match(/\\d+:\\d+:\\d+/) || [''])[0].split(':');\r\n } else if(typeof options[item] === 'object'){\r\n return options[item];\r\n }\r\n options[item] = {\r\n year: ymd[0] | 0 || new Date().getFullYear()\r\n ,month: ymd[1] ? (ymd[1] | 0) - 1 : new Date().getMonth()\r\n ,date: ymd[2] | 0 || new Date().getDate()\r\n ,hours: hms[0] | 0\r\n ,minutes: hms[1] | 0\r\n ,seconds: hms[2] | 0\r\n };\r\n });\r\n \r\n that.elemID = 'layui-laydate'+ options.elem.attr('lay-key');\r\n \r\n if(options.show || isStatic) that.render();\r\n isStatic || that.events();\r\n \r\n //默认赋值\r\n if(options.value && options.isInitValue){\r\n if(layui.type(options.value) === 'date'){\r\n that.setValue(that.parse(0, that.systemDate(options.value))); \r\n } else {\r\n that.setValue(options.value); \r\n }\r\n }\r\n };\r\n \r\n //控件主体渲染\r\n Class.prototype.render = function(){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,isStatic = options.position === 'static'\r\n \r\n //主面板\r\n ,elem = that.elem = lay.elem('div', {\r\n id: that.elemID\r\n ,\"class\": [\r\n 'layui-laydate'\r\n ,options.range ? ' layui-laydate-range' : ''\r\n ,that.rangeLinked ? ' layui-laydate-linkage' : ''\r\n ,isStatic ? (' '+ ELEM_STATIC) : ''\r\n ,options.fullPanel ? ' laydate-theme-fullpanel' : '' // 全面版\r\n // ,options.theme && options.theme !== 'default' && !/^#/.test(options.theme) ? (' laydate-theme-' + options.theme) : ''\r\n ,(function () {\r\n var themeStr = '';\r\n lay.each(options.theme, function (index, theme) {\r\n if (theme !== 'default' && !/^#/.test(theme)) {\r\n themeStr += ' laydate-theme-' + theme;\r\n }\r\n })\r\n return themeStr;\r\n })()\r\n ].join('')\r\n })\r\n \r\n //主区域\r\n ,elemMain = that.elemMain = []\r\n ,elemHeader = that.elemHeader = []\r\n ,elemCont = that.elemCont = []\r\n ,elemTable = that.table = []\r\n\r\n //底部区域\r\n ,divFooter = that.footer = lay.elem('div', {\r\n \"class\": ELEM_FOOTER\r\n })\r\n\r\n //快捷栏\r\n ,divShortcut = that.shortcut = lay.elem('ul', {\r\n \"class\": ELEM_SHORTCUT\r\n });\r\n \r\n if(options.zIndex) elem.style.zIndex = options.zIndex;\r\n \r\n //单双日历区域\r\n lay.each(new Array(2), function(i){\r\n if(!options.range && i > 0){\r\n return true;\r\n }\r\n\r\n //头部区域\r\n var divHeader = lay.elem('div', {\r\n \"class\": 'layui-laydate-header'\r\n })\r\n \r\n //左右切换\r\n ,headerChild = [function(){ //上一年\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-prev-y'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //上一月\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-prev-m'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //年月选择\r\n var elem = lay.elem('div', {\r\n \"class\": 'laydate-set-ym'\r\n }), spanY = lay.elem('span'), spanM = lay.elem('span');\r\n elem.appendChild(spanY);\r\n elem.appendChild(spanM);\r\n return elem;\r\n }(), function(){ //下一月\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-next-m'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //下一年\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-next-y'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }()]\r\n \r\n //日历内容区域\r\n ,divContent = lay.elem('div', {\r\n \"class\": 'layui-laydate-content'\r\n })\r\n ,table = lay.elem('table')\r\n ,thead = lay.elem('thead'), theadTr = lay.elem('tr');\r\n \r\n //生成年月选择\r\n lay.each(headerChild, function(i, item){\r\n divHeader.appendChild(item);\r\n });\r\n \r\n //生成表格\r\n thead.appendChild(theadTr);\r\n lay.each(new Array(6), function(i){ //表体\r\n var tr = table.insertRow(0);\r\n lay.each(new Array(7), function(j){\r\n if(i === 0){\r\n var th = lay.elem('th');\r\n th.innerHTML = lang.weeks[(j + options.weekStart) % 7];\r\n theadTr.appendChild(th);\r\n }\r\n tr.insertCell(j);\r\n });\r\n });\r\n table.insertBefore(thead, table.children[0]); //表头\r\n divContent.appendChild(table);\r\n \r\n elemMain[i] = lay.elem('div', {\r\n \"class\": ELEM_MAIN + ' laydate-main-list-'+ i\r\n });\r\n \r\n elemMain[i].appendChild(divHeader);\r\n elemMain[i].appendChild(divContent);\r\n \r\n elemHeader.push(headerChild);\r\n elemCont.push(divContent);\r\n elemTable.push(table);\r\n });\r\n \r\n //生成底部栏\r\n lay(divFooter).html(function(){\r\n var html = [], btns = [];\r\n if(options.type === 'datetime'){\r\n html.push(''+ lang.timeTips +'');\r\n }\r\n if(!(!options.range && options.type === 'datetime') || options.fullPanel){\r\n html.push('')\r\n }\r\n \r\n lay.each(options.btns, function(i, item){\r\n var title = lang.tools[item] || 'btn';\r\n if(options.range && item === 'now') return;\r\n if(isStatic && item === 'clear') title = options.lang === 'cn' ? '重置' : 'Reset';\r\n btns.push(''+ title +'');\r\n });\r\n html.push('');\r\n return html.join('');\r\n }());\r\n\r\n // 生成快捷键栏\r\n if (options.shortcuts) {\r\n elem.appendChild(divShortcut);\r\n lay(divShortcut).html(function () {\r\n var shortcutBtns = [];\r\n lay.each(options.shortcuts, function (i, item) {\r\n shortcutBtns.push('
          • '+item.text+'
          • ')\r\n })\r\n return shortcutBtns.join('');\r\n }()).find('li').on('click', function (event) {\r\n var btnSetting = options.shortcuts[this.dataset['index']] || {};\r\n var value = (typeof btnSetting.value === 'function'\r\n ? btnSetting.value() \r\n : btnSetting.value) || [];\r\n if (!layui.isArray(value)) {\r\n value = [value];\r\n }\r\n var type = options.type;\r\n lay.each(value, function (i, item) {\r\n var dateTime = [options.dateTime, that.endDate][i];\r\n if (type === 'time' && layui.type(item) !== 'date') {\r\n if (that.EXP_IF.test(item)) {\r\n item = (item.match(that.EXP_SPLIT) || []).slice(1);\r\n lay.extend(dateTime, {hours: item[0] | 0, minutes: item[2] | 0, seconds: item[4] | 0})\r\n }\r\n } else {\r\n lay.extend(dateTime, that.systemDate(layui.type(item) === 'date' ? item : new Date(item)))\r\n }\r\n\r\n if (type === 'time' || type === 'datetime') {\r\n that[['startTime', 'endTime'][i]] = {\r\n hours: dateTime.hours,\r\n minutes: dateTime.minutes,\r\n seconds: dateTime.seconds,\r\n }\r\n }\r\n if (i === 0) { // 第一个值作为startDate\r\n that.startDate = lay.extend({}, dateTime);\r\n } else {\r\n that.endState = true;\r\n }\r\n if (type === 'year' || type === 'month' || type === 'time') {\r\n that.listYM[i] = [dateTime.year, dateTime.month + 1];\r\n } else if (i) {\r\n that.autoCalendarModel.auto && that.autoCalendarModel();\r\n }\r\n });\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n\r\n var timeBtn = lay(that.footer).find('.'+ ELEM_TIME_BTN).removeClass(DISABLED);\r\n timeBtn && timeBtn.attr('lay-type') === 'date' && timeBtn[0].click();\r\n that.done(null, 'change');\r\n\r\n lay(this).addClass(THIS);\r\n\r\n // 自动确认\r\n if(options.position !== 'static'){\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n /*\r\n if (options.position !== 'static' && !options.range && options.autoConfirm) {\r\n if (type === 'date') {\r\n that.choose(lay(elem).find('td.layui-this'))\r\n } else if (type === 'year' || type === 'month') {\r\n if(lay(elemMain[0]).find('.' + ELEM_MAIN + ' li.' + THIS + ':not(.laydate-disabled)')[0]) {\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n }\r\n }\r\n */\r\n })\r\n }\r\n\r\n //插入到主区域\r\n lay.each(elemMain, function(i, main){\r\n elem.appendChild(main);\r\n });\r\n options.showBottom && elem.appendChild(divFooter);\r\n \r\n // 生成自定义主题\r\n var style = lay.elem('style');\r\n var styleText = [];\r\n var colorTheme;\r\n var isPrimaryColor = true;\r\n lay.each(options.theme, function (index, theme) {\r\n // 主色\r\n if(isPrimaryColor && /^#/.test(theme)){\r\n colorTheme = true;\r\n isPrimaryColor = false;\r\n styleText.push([\r\n '#{{id}} .layui-laydate-header{background-color:{{theme}};}',\r\n '#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}',\r\n options.theme.indexOf('circle') !== -1 ? '' : '#{{id}} .layui-this{background-color:{{theme}} !important;}',\r\n '#{{id}} .laydate-day-now{color:{{theme}} !important;}',\r\n '#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}'\r\n ].join('').replace(/{{id}}/g, that.elemID).replace(/{{theme}}/g, theme));\r\n return;\r\n }\r\n // 第二个自定义颜色作为辅色\r\n if(!isPrimaryColor && /^#/.test(theme)){\r\n styleText.push([\r\n '#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}',\r\n '#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}'\r\n ].join('').replace(/{{id}}/g, that.elemID).replace(/{{theme}}/g, theme));\r\n }\r\n });\r\n //快捷栏样式\r\n if (options.shortcuts && options.range) {\r\n styleText.push('#{{id}}.layui-laydate-range{width: 628px;}'.replace(/{{id}}/g, that.elemID))\r\n }\r\n if (styleText.length) {\r\n styleText = styleText.join('');\r\n if('styleSheet' in style){\r\n style.setAttribute('type', 'text/css');\r\n style.styleSheet.cssText = styleText;\r\n } else {\r\n style.innerHTML = styleText;\r\n }\r\n\r\n colorTheme && lay(elem).addClass('laydate-theme-molv');\r\n elem.appendChild(style);\r\n }\r\n\r\n //移除上一个控件\r\n that.remove(Class.thisElemDate);\r\n\r\n //记录当前执行的实例索引\r\n laydate.thisId = options.id;\r\n\r\n //如果是静态定位,则插入到指定的容器中,否则,插入到body\r\n isStatic ? options.elem.append(elem) : (\r\n document.body.appendChild(elem)\r\n ,that.position() //定位\r\n );\r\n \r\n var shade = options.shade ? ('
            ') : '';\r\n elem.insertAdjacentHTML('beforebegin', shade);\r\n\r\n that.checkDate().calendar(null, 0, 'init'); //初始校验\r\n that.changeEvent(); //日期切换\r\n \r\n Class.thisElemDate = that.elemID;\r\n\r\n that.renderAdditional()\r\n typeof options.ready === 'function' && options.ready(lay.extend({}, options.dateTime, {\r\n month: options.dateTime.month + 1\r\n }));\r\n \r\n that.preview();\r\n };\r\n \r\n //控件移除\r\n Class.prototype.remove = function(prev){\r\n var that = this\r\n ,options = that.config\r\n ,elem = lay('#'+ (prev || that.elemID));\r\n if(!elem[0]) return that;\r\n \r\n if(!elem.hasClass(ELEM_STATIC)){\r\n that.checkDate(function(){\r\n elem.remove();\r\n //delete options.dateTime;\r\n delete that.startDate;\r\n delete that.endDate;\r\n delete that.endState;\r\n delete that.startTime;\r\n delete that.endTime;\r\n delete laydate.thisId;\r\n typeof options.close === 'function' && options.close(that);\r\n });\r\n }\r\n lay('.' + ELEM_SHADE).remove();\r\n return that;\r\n };\r\n \r\n //定位算法\r\n Class.prototype.position = function(){\r\n var that = this\r\n ,options = that.config;\r\n lay.position(options.elem[0], that.elem, {\r\n position: options.position\r\n });\r\n return that;\r\n };\r\n \r\n // 提示\r\n Class.prototype.hint = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n var div = lay.elem('div', {\r\n \"class\": ELEM_HINT\r\n });\r\n \r\n if(!that.elem) return;\r\n\r\n // 兼容旧版参数\r\n if(typeof opts === 'object'){\r\n opts = opts || {};\r\n } else {\r\n opts = {\r\n content: opts\r\n }\r\n }\r\n \r\n div.innerHTML = opts.content || '';\r\n lay(that.elem).find('.'+ ELEM_HINT).remove();\r\n that.elem.appendChild(div);\r\n\r\n clearTimeout(that.hinTimer);\r\n that.hinTimer = setTimeout(function(){\r\n lay(that.elem).find('.'+ ELEM_HINT).remove();\r\n }, 'ms' in opts ? opts.ms : 3000);\r\n };\r\n \r\n //获取递增/减后的年月\r\n Class.prototype.getAsYM = function(Y, M, type){\r\n type ? M-- : M++;\r\n if(M < 0){\r\n M = 11;\r\n Y--;\r\n }\r\n if(M > 11){\r\n M = 0;\r\n Y++;\r\n }\r\n return [Y, M];\r\n };\r\n \r\n //系统日期\r\n Class.prototype.systemDate = function(newDate){\r\n var thisDate = newDate || new Date();\r\n return {\r\n year: thisDate.getFullYear() //年\r\n ,month: thisDate.getMonth() //月\r\n ,date: thisDate.getDate() //日\r\n ,hours: newDate ? newDate.getHours() : 0 //时\r\n ,minutes: newDate ? newDate.getMinutes() : 0 //分\r\n ,seconds: newDate ? newDate.getSeconds() : 0 //秒\r\n }\r\n };\r\n \r\n //日期校验\r\n Class.prototype.checkDate = function(fn){\r\n var that = this\r\n ,thisDate = new Date()\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,dateTime = options.dateTime = options.dateTime || that.systemDate()\r\n ,thisMaxDate, error\r\n \r\n ,elem = options.elem[0]\r\n ,valType = that.isInput(elem) ? 'val' : 'html'\r\n ,value = function(){\r\n //如果传入了开始和结束日期的 input 对象,则将其拼接为日期范围字符\r\n if(that.rangeElem){\r\n var vals = [that.rangeElem[0].val(), that.rangeElem[1].val()];\r\n\r\n if(vals[0] && vals[1]){\r\n return vals.join(' ' + that.rangeStr + ' ');\r\n }\r\n }\r\n return that.isInput(elem) \r\n ? elem.value \r\n : (options.position === 'static' ? '' : lay(elem).attr('lay-date'));\r\n }()\r\n \r\n //校验日期有效数字\r\n ,checkValid = function(dateTime){\r\n if (!dateTime) {\r\n return;\r\n }\r\n if(dateTime.year > LIMIT_YEAR[1]) dateTime.year = LIMIT_YEAR[1], error = true; //不能超过20万年\r\n if(dateTime.month > 11) dateTime.month = 11, error = true;\r\n if(dateTime.seconds > 59) dateTime.seconds = 0, dateTime.minutes++, error = true;\r\n if(dateTime.minutes > 59) dateTime.minutes = 0, dateTime.hours++, error = true;\r\n if(dateTime.hours > 23) dateTime.hours = 0, error = true;\r\n\r\n //计算当前月的最后一天\r\n thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year);\r\n if(dateTime.date > thisMaxDate) dateTime.date = thisMaxDate, error = true;\r\n }\r\n \r\n //获得初始化日期值\r\n ,initDate = function(dateTime, value, index){\r\n var startEnd = ['startTime', 'endTime'];\r\n value = (value.match(that.EXP_SPLIT) || []).slice(1);\r\n index = index || 0;\r\n \r\n if(options.range){\r\n that[startEnd[index]] = that[startEnd[index]] || {};\r\n }\r\n lay.each(that.format, function(i, item){\r\n var thisv = parseFloat(value[i]);\r\n if(value[i].length < item.length) error = true;\r\n if(/yyyy|y/.test(item)){ //年\r\n if(thisv < LIMIT_YEAR[0]) thisv = LIMIT_YEAR[0], error = true; //年不能低于100年\r\n dateTime.year = thisv;\r\n } else if(/MM|M/.test(item)){ //月\r\n if(thisv < 1) thisv = 1, error = true;\r\n dateTime.month = thisv - 1;\r\n } else if(/dd|d/.test(item)){ //日\r\n if(thisv < 1) thisv = 1, error = true;\r\n dateTime.date = thisv;\r\n } else if(/HH|H/.test(item)){ //时\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 23) thisv = 23, error = true;\r\n dateTime.hours = thisv;\r\n options.range && (that[startEnd[index]].hours = thisv);\r\n } else if(/mm|m/.test(item)){ //分\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 59) thisv = 59, error = true;\r\n dateTime.minutes = thisv;\r\n options.range && (that[startEnd[index]].minutes = thisv);\r\n } else if(/ss|s/.test(item)){ //秒\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 59) thisv = 59, error = true;\r\n dateTime.seconds = thisv;\r\n options.range && (that[startEnd[index]].seconds = thisv);\r\n }\r\n });\r\n checkValid(dateTime);\r\n };\r\n \r\n if(fn === 'limit') {\r\n if (options.range) {\r\n checkValid(that.rangeLinked ? that.startDate : dateTime); // 校验开始时间\r\n that.endDate && checkValid(that.endDate); // 校验结束时间\r\n } else {\r\n checkValid(dateTime);\r\n }\r\n return that;\r\n }\r\n \r\n value = value || options.value;\r\n if(typeof value === 'string'){\r\n value = value.replace(/\\s+/g, ' ').replace(/^\\s|\\s$/g, '');\r\n }\r\n\r\n //如果开启范围,则计算结束日期\r\n var getEndDate = function(){\r\n if(options.range){\r\n that.endDate = that.endDate || lay.extend({}, options.dateTime, function(){\r\n var obj = {}\r\n ,dateTime = options.dateTime\r\n ,EYM = that.getAsYM(dateTime.year, dateTime.month);\r\n \r\n //初始右侧面板的年月\r\n if(options.type === 'year'){\r\n obj.year = dateTime.year + 1;\r\n } else if(options.type !== 'time'){\r\n obj.year = EYM[0];\r\n obj.month = EYM[1];\r\n }\r\n \r\n //初始右侧面板的时间\r\n if(options.type === 'datetime' || options.type === 'time'){\r\n obj.hours = 23;\r\n obj.minutes = obj.seconds = 59;\r\n }\r\n \r\n return obj;\r\n }());\r\n }\r\n };\r\n getEndDate();\r\n \r\n if(typeof value === 'string' && value){\r\n if(that.EXP_IF.test(value)){ //校验日期格式\r\n if(options.range){\r\n value = value.split(' '+ that.rangeStr +' ');\r\n lay.each([options.dateTime, that.endDate], function(i, item){\r\n initDate(item, value[i], i);\r\n });\r\n } else {\r\n initDate(dateTime, value);\r\n }\r\n } else {\r\n //格式不合法\r\n that.hint(lang.formatError[0] + (\r\n options.range ? (options.format + ' '+ that.rangeStr +' ' + options.format) : options.format\r\n ) + lang.formatError[1]);\r\n error = true;\r\n }\r\n } else if(value && layui.type(value) === 'date'){ //若值为日期对象\r\n options.dateTime = that.systemDate(value);\r\n } else {\r\n //重置开始日期\r\n options.dateTime = that.systemDate();\r\n delete that.startTime;\r\n \r\n //重置结束日期\r\n delete that.endDate; //删除原有的结束日期\r\n getEndDate(); //并重新获得新的结束日期\r\n delete that.endTime;\r\n }\r\n \r\n //从日期范围表单中获取初始值\r\n (function(){\r\n if(that.rangeElem){\r\n var vals = [that.rangeElem[0].val(), that.rangeElem[1].val()]\r\n ,arrDate = [options.dateTime, that.endDate];\r\n lay.each(vals, function(_i, _v){\r\n if(that.EXP_IF_ONE.test(_v)){ //校验日期格式\r\n initDate(arrDate[_i], _v, _i);\r\n }\r\n });\r\n }\r\n })();\r\n \r\n // 校验日期有效数字\r\n checkValid(dateTime);\r\n if(options.range) checkValid(that.endDate);\r\n\r\n // 如果初始值格式错误,则纠正初始值\r\n if(error && value){\r\n that.setValue(\r\n options.range ? (that.endDate ? that.parse() : '') : that.parse()\r\n );\r\n }\r\n \r\n //如果当前日期不在设定的最大小日期区间,则自动纠正在可选区域\r\n //校验主面板是否在可选日期区间\r\n var minMaxError;\r\n if(that.getDateTime(dateTime) > that.getDateTime(options.max)){ //若超出最大日期\r\n dateTime = options.dateTime = lay.extend({}, options.max);\r\n minMaxError = true;\r\n } else if(that.getDateTime(dateTime) < that.getDateTime(options.min)){ //若少于最小日期\r\n dateTime = options.dateTime = lay.extend({}, options.min);\r\n minMaxError = true;\r\n }\r\n \r\n //校验右侧面板是否在可选日期区间\r\n if(options.range){\r\n if(that.getDateTime(that.endDate) < that.getDateTime(options.min) || that.getDateTime(that.endDate) > that.getDateTime(options.max)){\r\n that.endDate = lay.extend({}, options.max);\r\n minMaxError = true;\r\n }\r\n // 有时间范围的情况下初始化startTime和endTime\r\n that.startTime = {\r\n hours: options.dateTime.hours,\r\n minutes: options.dateTime.minutes,\r\n seconds: options.dateTime.seconds,\r\n }\r\n that.endTime = {\r\n hours: that.endDate.hours,\r\n minutes: that.endDate.minutes,\r\n seconds: that.endDate.seconds,\r\n }\r\n // 如果是年月范围,将对应的日期统一成当月的1日进行比较,避免出现同一个月但是开始日期大于结束日期的情况\r\n if (options.type === 'month') {\r\n options.dateTime.date = 1;\r\n that.endDate.date = 1;\r\n }\r\n }\r\n\r\n // 初始值不在最大最小范围内\r\n if(minMaxError && value){\r\n that.setValue(that.parse());\r\n that.hint('value ' + lang.invalidDate + lang.formatError[1]);\r\n }\r\n\r\n // 初始赋值 startDate,endState\r\n that.startDate = that.startDate || value && lay.extend({}, options.dateTime); // 有默认值才初始化startDate\r\n that.autoCalendarModel.auto && that.autoCalendarModel();\r\n that.endState = !options.range || !that.rangeLinked || !!(that.startDate && that.endDate); // 初始化选中范围状态\r\n\r\n fn && fn();\r\n return that;\r\n };\r\n \r\n // 公历重要日期与自定义备注\r\n Class.prototype.mark = function(td, YMD){\r\n var that = this\r\n ,mark, options = that.config;\r\n lay.each(options.mark, function(key, title){\r\n var keys = key.split('-');\r\n if((keys[0] == YMD[0] || keys[0] == 0) //每年的每月\r\n && (keys[1] == YMD[1] || keys[1] == 0) //每月的每日\r\n && keys[2] == YMD[2]){ //特定日\r\n mark = title || YMD[2];\r\n }\r\n });\r\n mark && td.find('div').html(''+ mark +'');\r\n \r\n return that;\r\n };\r\n\r\n // 标注法定节假日或补假上班\r\n Class.prototype.holidays = function(td, YMD) {\r\n var that = this;\r\n var options = that.config;\r\n var type = ['', 'work'];\r\n\r\n if(layui.type(options.holidays) !== 'array') return that;\r\n \r\n lay.each(options.holidays, function(idx, item) {\r\n lay.each(item, function(i, dayStr) {\r\n if(dayStr === td.attr('lay-ymd')){\r\n td.find('div').html('' + YMD[2] + '');\r\n }\r\n });\r\n });\r\n\r\n return that;\r\n };\r\n \r\n // 无效日期范围的标记\r\n Class.prototype.limit = function(opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var timestamp = {}\r\n var dateTime = opts.index > (opts.time ? 0 : 41) ? that.endDate : options.dateTime;\r\n var isOut;\r\n\r\n lay.each({\r\n now: lay.extend({}, dateTime, opts.date || {})\r\n ,min: options.min\r\n ,max: options.max\r\n }, function(key, item){\r\n timestamp[key] = that.newDate(lay.extend({\r\n year: item.year\r\n ,month: opts.type === 'year' ? 0 : item.month // 年份的时候只比较年\r\n ,date: (opts.type === 'year' || opts.type === 'month') ? 1 : item.date // 年月只比较年月不与最大最小比日期\r\n }, function(){\r\n var hms = {};\r\n lay.each(opts.time, function(i, keys){\r\n hms[keys] = item[keys];\r\n });\r\n return hms;\r\n }())).getTime(); //time:是否比较时分秒\r\n });\r\n \r\n isOut = timestamp.now < timestamp.min || timestamp.now > timestamp.max;\r\n opts.elem && opts.elem[isOut ? 'addClass' : 'removeClass'](DISABLED);\r\n\r\n return isOut;\r\n };\r\n \r\n //当前日期对象\r\n Class.prototype.thisDateTime = function(index){\r\n var that = this\r\n ,options = that.config;\r\n return index ? that.endDate: options.dateTime;\r\n };\r\n \r\n //日历表\r\n Class.prototype.calendar = function(value, index, type){\r\n index = index ? 1 : 0;\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = value || that.thisDateTime(index)\r\n ,thisDate = new Date(), startWeek, prevMaxDate, thisMaxDate\r\n ,lang = that.lang()\r\n \r\n ,isAlone = options.type !== 'date' && options.type !== 'datetime'\r\n ,tds = lay(that.table[index]).find('td')\r\n ,elemYM = lay(that.elemHeader[index][2]).find('span');\r\n \r\n if(dateTime.year < LIMIT_YEAR[0]) dateTime.year = LIMIT_YEAR[0], that.hint(lang.invalidDate);\r\n if(dateTime.year > LIMIT_YEAR[1]) dateTime.year = LIMIT_YEAR[1], that.hint(lang.invalidDate);\r\n \r\n //记录初始值\r\n if(!that.firstDate){\r\n that.firstDate = lay.extend({}, dateTime);\r\n }\r\n \r\n //计算当前月第一天的星期\r\n thisDate.setFullYear(dateTime.year, dateTime.month, 1);\r\n startWeek = (thisDate.getDay() + (7 - options.weekStart)) % 7;\r\n\r\n prevMaxDate = laydate.getEndDate(dateTime.month || 12, dateTime.year); //计算上个月的最后一天\r\n thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year); //计算当前月的最后一天\r\n \r\n //赋值日\r\n lay.each(tds, function(index_, item){\r\n var YMD = [dateTime.year, dateTime.month], st;\r\n item = lay(item);\r\n item.removeAttr(\"class\");\r\n if(index_ < startWeek){\r\n st = prevMaxDate - startWeek + index_;\r\n item.addClass('laydate-day-prev');\r\n YMD = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n } else if(index_ >= startWeek && index_ < thisMaxDate + startWeek){\r\n st = index_ - startWeek;\r\n if (!that.rangeLinked) {\r\n st + 1 === dateTime.date && item.addClass(THIS);\r\n }\r\n } else {\r\n st = index_ - thisMaxDate - startWeek;\r\n item.addClass('laydate-day-next');\r\n YMD = that.getAsYM(dateTime.year, dateTime.month);\r\n }\r\n YMD[1]++;\r\n YMD[2] = st + 1;\r\n item.attr('lay-ymd', YMD.join('-')).html('
            ' + YMD[2] + '
            ');\r\n that.mark(item, YMD).holidays(item, YMD).limit({\r\n elem: item,\r\n date: {\r\n year: YMD[0],\r\n month: YMD[1] - 1,\r\n date: YMD[2]\r\n },\r\n index: index_\r\n });\r\n }); \r\n \r\n //同步头部年月\r\n lay(elemYM[0]).attr('lay-ym', dateTime.year + '-' + (dateTime.month + 1));\r\n lay(elemYM[1]).attr('lay-ym', dateTime.year + '-' + (dateTime.month + 1));\r\n \r\n if(options.lang === 'cn'){\r\n lay(elemYM[0]).attr('lay-type', 'year').html(dateTime.year + ' 年')\r\n lay(elemYM[1]).attr('lay-type', 'month').html((dateTime.month + 1) + ' 月');\r\n } else {\r\n lay(elemYM[0]).attr('lay-type', 'month').html(lang.month[dateTime.month]);\r\n lay(elemYM[1]).attr('lay-type', 'year').html(dateTime.year);\r\n }\r\n\r\n //初始默认选择器\r\n if(isAlone){ //年、月等独立选择器\r\n if(options.range){\r\n if(value || type !== 'init'){ // 判断是否需要显示年月时间列表\r\n that.listYM = [\r\n [(that.startDate || options.dateTime).year, (that.startDate || options.dateTime).month + 1]\r\n ,[that.endDate.year, that.endDate.month + 1]\r\n ]; \r\n that.list(options.type, 0).list(options.type, 1);\r\n \r\n //同步按钮可点状态\r\n options.type === 'time' ? that.setBtnStatus('时间'\r\n ,lay.extend({}, that.systemDate(), that.startTime)\r\n ,lay.extend({}, that.systemDate(), that.endTime)\r\n ) : that.setBtnStatus(true);\r\n } \r\n } else {\r\n that.listYM = [[dateTime.year, dateTime.month + 1]];\r\n that.list(options.type, 0);\r\n }\r\n }\r\n \r\n //初始赋值双日历\r\n if(options.range && type === 'init'){\r\n //执行渲染第二个日历\r\n if (that.rangeLinked) {\r\n var EYM = that.getAsYM(dateTime.year, dateTime.month, index ? 'sub' : null)\r\n that.calendar(lay.extend({}, dateTime, {\r\n year: EYM[0]\r\n ,month: EYM[1]\r\n }), 1 - index); // 渲染另外一个\r\n } else {\r\n that.calendar(null, 1 - index);\r\n }\r\n }\r\n \r\n // 通过检测当前有效日期,来设定底部按钮状态\r\n if(!options.range){\r\n var timeParams = ['hours', 'minutes', 'seconds'];\r\n\r\n // 现在按钮\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_NOW),\r\n date: that.systemDate(/^(datetime|time)$/.test(options.type) ? new Date() : null),\r\n index: 0,\r\n time: timeParams\r\n });\r\n // 确认按钮\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n index: 0,\r\n time: timeParams\r\n });\r\n }\r\n \r\n //同步按钮可点状态\r\n that.setBtnStatus();\r\n\r\n // 重置快捷栏选中状态\r\n lay(that.shortcut).find('li.' + THIS).removeClass(THIS);\r\n\r\n //标记选择范围\r\n if(options.range && !isAlone && type !== 'init') that.stampRange();\r\n\r\n return that;\r\n };\r\n\r\n //生成年月时分秒列表\r\n Class.prototype.list = function(type, index){\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = that.rangeLinked ? options.dateTime : [options.dateTime, that.endDate][index]\r\n ,lang = that.lang()\r\n ,isAlone = options.range && options.type !== 'date' && options.type !== 'datetime' //独立范围选择器\r\n \r\n ,ul = lay.elem('ul', {\r\n \"class\": ELEM_LIST + ' ' + ({\r\n year: 'laydate-year-list'\r\n ,month: 'laydate-month-list'\r\n ,time: 'laydate-time-list'\r\n })[type]\r\n })\r\n ,elemHeader = that.elemHeader[index]\r\n ,elemYM = lay(elemHeader[2]).find('span')\r\n ,elemCont = that.elemCont[index || 0]\r\n ,haveList = lay(elemCont).find('.'+ ELEM_LIST)[0]\r\n ,isCN = options.lang === 'cn'\r\n ,text = isCN ? '年' : ''\r\n \r\n ,listYM = that.listYM[index] || {}\r\n ,hms = ['hours', 'minutes', 'seconds']\r\n ,startEnd = ['startTime', 'endTime'][index];\r\n\r\n if(listYM[0] < 1) listYM[0] = 1;\r\n \r\n //生成年列表\r\n if(type === 'year'){\r\n var yearNum, startY = yearNum = listYM[0] - 7;\r\n if(startY < 1) startY = yearNum = 1;\r\n lay.each(new Array(15), function(i){\r\n var li = lay.elem('li', {\r\n 'lay-ym': yearNum\r\n })\r\n ,ymd = {\r\n year: yearNum\r\n ,month: 0\r\n ,date: 1\r\n };\r\n\r\n yearNum == listYM[0] && lay(li).addClass(THIS);\r\n li.innerHTML = yearNum + text;\r\n ul.appendChild(li);\r\n\r\n /*\r\n if(yearNum < that.firstDate.year){\r\n ymd.month = options.min.month;\r\n ymd.date = options.min.date;\r\n } else if(yearNum >= that.firstDate.year){\r\n ymd.month = options.max.month;\r\n ymd.date = options.max.date;\r\n }\r\n */\r\n\r\n that.limit({\r\n elem: lay(li),\r\n date: ymd,\r\n index: index,\r\n type: type\r\n });\r\n yearNum++;\r\n });\r\n\r\n lay(elemYM[isCN ? 0 : 1]).attr('lay-ym', (yearNum - 8) + '-' + listYM[1])\r\n .html((startY + text) + ' - ' + (yearNum - 1 + text));\r\n }\r\n \r\n //生成月列表\r\n else if(type === 'month'){\r\n lay.each(new Array(12), function(i){\r\n var li = lay.elem('li', {\r\n 'lay-ym': i\r\n })\r\n ,ymd = {\r\n year: listYM[0]\r\n ,month: i\r\n ,date: 1\r\n };\r\n\r\n i + 1 == listYM[1] && lay(li).addClass(THIS);\r\n li.innerHTML = lang.month[i] + (isCN ? '月' : '');\r\n ul.appendChild(li);\r\n\r\n /*\r\n if(listYM[0] < that.firstDate.year){\r\n ymd.date = options.min.date;\r\n } else if(listYM[0] >= that.firstDate.year){\r\n ymd.date = options.max.date;\r\n }\r\n */\r\n\r\n that.limit({\r\n elem: lay(li),\r\n date: ymd,\r\n index: index,\r\n type: type\r\n });\r\n });\r\n\r\n lay(elemYM[isCN ? 0 : 1]).attr('lay-ym', listYM[0] + '-' + listYM[1])\r\n .html(listYM[0] + text);\r\n } \r\n \r\n //生成时间列表\r\n else if(type === 'time'){\r\n //检测时分秒状态是否在有效日期时间范围内\r\n var setTimeStatus = function(){\r\n lay(ul).find('ol').each(function(i, ol){\r\n lay(ol).find('li').each(function(ii, li){\r\n that.limit({\r\n elem: lay(li),\r\n date: [{\r\n hours: ii\r\n }, {\r\n hours: that[startEnd].hours\r\n ,minutes: ii\r\n }, {\r\n hours: that[startEnd].hours\r\n ,minutes: that[startEnd].minutes\r\n ,seconds: ii\r\n }][i],\r\n index: index,\r\n time: [\r\n ['hours'], \r\n ['hours', 'minutes'], \r\n ['hours', 'minutes', 'seconds']\r\n ][i]\r\n });\r\n });\r\n });\r\n if(!options.range){\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n date: that[startEnd],\r\n inedx: 0,\r\n time: ['hours', 'minutes', 'seconds']\r\n });\r\n }\r\n };\r\n \r\n //初始化时间对象\r\n if(options.range){\r\n if(!that[startEnd]){\r\n that[startEnd] = startEnd === 'startTime' ? dateTime : that.endDate;\r\n }\r\n } else {\r\n that[startEnd] = dateTime;\r\n }\r\n \r\n //生成时分秒\r\n lay.each([24, 60, 60], function(i, item){\r\n var li = lay.elem('li'), childUL = ['

            '+ lang.time[i] +'

              '];\r\n lay.each(new Array(item), function(ii){\r\n childUL.push(''+ lay.digit(ii, 2) +'');\r\n });\r\n li.innerHTML = childUL.join('') + '
            ';\r\n ul.appendChild(li);\r\n });\r\n setTimeStatus();\r\n }\r\n \r\n //插入容器\r\n if(haveList) elemCont.removeChild(haveList);\r\n elemCont.appendChild(ul);\r\n \r\n //年月面板 - 选择事件\r\n if(type === 'year' || type === 'month'){ \r\n //显示切换箭头\r\n lay(that.elemMain[index]).addClass('laydate-ym-show');\r\n \r\n //选中\r\n lay(ul).find('li').on('click', function(){\r\n var ym = lay(this).attr('lay-ym') | 0;\r\n if(lay(this).hasClass(DISABLED)) return;\r\n if (that.rangeLinked) {\r\n lay.extend(dateTime, {\r\n year: type === 'year' ? ym : listYM[0]\r\n ,month: type === 'year' ? listYM[1] - 1 : ym\r\n });\r\n } else {\r\n dateTime[type] = ym;\r\n }\r\n \r\n //当为年选择器或者年月选择器\r\n var isYearOrMonth = options.type === 'year' || options.type === 'month';\r\n if(isYearOrMonth){\r\n lay(ul).find('.'+ THIS).removeClass(THIS);\r\n lay(this).addClass(THIS);\r\n \r\n //如果为年月选择器,点击了年列表,则切换到月选择器\r\n if(options.type === 'month' && type === 'year'){\r\n that.listYM[index][0] = ym;\r\n isAlone && ((index ? that.endDate : dateTime).year = ym);\r\n that.list('month', index);\r\n }\r\n } else {\r\n that.checkDate('limit').calendar(dateTime, index, 'init'); // 重新渲染一下两个面板\r\n that.closeList();\r\n }\r\n\r\n that.setBtnStatus(); //同步按钮可点状态\r\n \r\n //若为月选择器,只有当选择月份时才自动关闭;\r\n //若为年选择器,选择年份即自动关闭\r\n //且在范围未开启时\r\n if(!options.range && options.autoConfirm){\r\n if((options.type === 'month' && type === 'month') || (options.type === 'year' && type === 'year')){\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n }\r\n\r\n (that.autoCalendarModel.auto && !that.rangeLinked) ? that.choose(lay(elemCont).find('td.layui-this'), index) : (that.endState && that.done(null, 'change'));\r\n lay(that.footer).find('.'+ ELEM_TIME_BTN).removeClass(DISABLED);\r\n });\r\n } else { //时间选择面板 - 选择事件\r\n var span = lay.elem('span', {\r\n \"class\": ELEM_TIME_TEXT\r\n })\r\n \r\n //滚动条定位\r\n ,scroll = function(){\r\n lay(ul).find('ol').each(function(i){\r\n var ol = this\r\n ,li = lay(ol).find('li')\r\n ol.scrollTop = 30*(that[startEnd][hms[i]] - 2);\r\n if(ol.scrollTop <= 0){\r\n li.each(function(ii, item){\r\n if(!lay(this).hasClass(DISABLED)){\r\n ol.scrollTop = 30*(ii - 2);\r\n return true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n ,haveSpan = lay(elemHeader[2]).find('.'+ ELEM_TIME_TEXT);\r\n \r\n scroll();\r\n span.innerHTML = options.range ? [lang.startTime,lang.endTime][index] : lang.timeTips;\r\n lay(that.elemMain[index]).addClass('laydate-time-show');\r\n \r\n if(haveSpan[0]) haveSpan.remove();\r\n elemHeader[2].appendChild(span);\r\n\r\n lay(ul).find('ol').each(function(i){\r\n var ol = this;\r\n //选择时分秒\r\n lay(ol).find('li').on('click', function(){\r\n var value = this.innerHTML | 0;\r\n if(lay(this).hasClass(DISABLED)) return;\r\n \r\n if(options.range){\r\n that[startEnd][hms[i]] = value;\r\n } else {\r\n dateTime[hms[i]] = value;\r\n }\r\n lay(ol).find('.'+ THIS).removeClass(THIS);\r\n lay(this).addClass(THIS);\r\n\r\n setTimeStatus();\r\n scroll();\r\n (that.endDate || options.type === 'time' || (options.type === 'datetime' && options.fullPanel)) && that.done(null, 'change');\r\n \r\n //同步按钮可点状态\r\n that.setBtnStatus();\r\n });\r\n });\r\n }\r\n \r\n return that;\r\n };\r\n \r\n //记录列表切换后的年月\r\n Class.prototype.listYM = [];\r\n \r\n //关闭列表\r\n Class.prototype.closeList = function(){\r\n var that = this\r\n ,options = that.config;\r\n \r\n lay.each(that.elemCont, function(index, item){\r\n lay(this).find('.'+ ELEM_LIST).remove();\r\n lay(that.elemMain[index]).removeClass('laydate-ym-show laydate-time-show');\r\n });\r\n lay(that.elem).find('.'+ ELEM_TIME_TEXT).remove();\r\n };\r\n \r\n //检测结束日期是否超出开始日期\r\n Class.prototype.setBtnStatus = function(tips, start, end){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,isOut, elemBtn = lay(that.footer).find(ELEM_CONFIRM);\r\n if(options.range && options.type !== 'time'){\r\n start = start || (that.rangeLinked ? that.startDate : options.dateTime);\r\n end = end || that.endDate;\r\n isOut = !that.endState || that.newDate(start).getTime() > that.newDate(end).getTime();\r\n\r\n //如果不在有效日期内,直接禁用按钮,否则比较开始和结束日期\r\n (that.limit({\r\n date: start\r\n }) || that.limit({\r\n date: end\r\n })) \r\n ? elemBtn.addClass(DISABLED)\r\n : elemBtn[isOut ? 'addClass' : 'removeClass'](DISABLED);\r\n \r\n //是否异常提示\r\n if(tips && isOut) that.hint(\r\n typeof tips === 'string' ? lang.timeout.replace(/日期/g, tips) : lang.timeout\r\n );\r\n }\r\n };\r\n \r\n // 转义为规定格式的日期字符\r\n Class.prototype.parse = function(state, date) {\r\n var that = this;\r\n var options = that.config;\r\n var startDate = (that.rangeLinked ? that.startDate : options.dateTime)\r\n var dateTime = date || (\r\n state == 'end' ? lay.extend({}, that.endDate, that.endTime) : (\r\n options.range\r\n ? lay.extend({}, startDate || options.dateTime, that.startTime)\r\n : options.dateTime\r\n )\r\n );\r\n var format = laydate.parse(dateTime, that.format, 1);\r\n\r\n // 返回日期范围字符\r\n if (options.range && state === undefined) {\r\n return format + ' '+ that.rangeStr +' ' + that.parse('end');\r\n }\r\n\r\n return format;\r\n };\r\n \r\n //创建指定日期时间对象\r\n Class.prototype.newDate = function(dateTime){\r\n dateTime = dateTime || {};\r\n return new Date(\r\n dateTime.year || 1\r\n ,dateTime.month || 0\r\n ,dateTime.date || 1\r\n ,dateTime.hours || 0\r\n ,dateTime.minutes || 0\r\n ,dateTime.seconds || 0\r\n );\r\n };\r\n\r\n // 获得指定日期时间对象的毫秒数\r\n Class.prototype.getDateTime = function(obj){\r\n return this.newDate(obj).getTime();\r\n }\r\n\r\n //赋值\r\n Class.prototype.setValue = function(value){\r\n var that = this\r\n ,options = that.config\r\n ,elem = options.elem[0];\r\n \r\n //静态展现则不作默认赋值\r\n if(options.position === 'static') return that;\r\n \r\n value = value || '';\r\n \r\n //绑定的元素是否为 input\r\n if(that.isInput(elem)){\r\n lay(elem).val(value);\r\n } else {\r\n //如果 range 传入了开始和结束的 input 对象,则分别对其赋值\r\n var rangeElem = that.rangeElem;\r\n if(rangeElem){\r\n if(layui.type(value) !== 'array'){\r\n value = value.split(' '+ that.rangeStr +' ');\r\n }\r\n rangeElem[0].val(value[0] || '');\r\n rangeElem[1].val(value[1] || '');\r\n } else {\r\n if(lay(elem).find('*').length === 0){\r\n lay(elem).html(value);\r\n }\r\n lay(elem).attr('lay-date', value);\r\n }\r\n }\r\n \r\n return that;\r\n };\r\n \r\n //预览\r\n Class.prototype.preview = function(){\r\n var that = this\r\n ,options = that.config;\r\n \r\n if(!options.isPreview) return;\r\n \r\n var elemPreview = lay(that.elem).find('.'+ ELEM_PREVIEW)\r\n ,value = options.range ? ((that.rangeLinked ? that.endState : that.endDate) ? that.parse() : '') : that.parse();\r\n \r\n // 显示预览\r\n elemPreview.html(value);\r\n \r\n // 预览颜色渐变\r\n var oldValue = elemPreview.html();\r\n oldValue && (elemPreview.css({\r\n 'color': '#16b777'\r\n }),\r\n setTimeout(function(){\r\n elemPreview.css({\r\n 'color': '#777'\r\n });\r\n }, 300));\r\n };\r\n\r\n // 附加的渲染处理,在 ready 和 change 的时候调用\r\n Class.prototype.renderAdditional = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 处理全面板\r\n if (options.fullPanel) {\r\n that.list('time', 0);\r\n }\r\n };\r\n\r\n // 标记范围内的日期\r\n Class.prototype.stampRange = function(){\r\n var that = this\r\n ,options = that.config\r\n ,startTime = that.rangeLinked ? that.startDate : options.dateTime, endTime\r\n ,tds = lay(that.elem).find('td');\r\n\r\n if(options.range && !that.endState) lay(that.footer).find(ELEM_CONFIRM).addClass(DISABLED);\r\n // if(!that.endState) return;\r\n\r\n startTime = startTime && that.newDate({\r\n year: startTime.year\r\n ,month: startTime.month\r\n ,date: startTime.date\r\n }).getTime();\r\n\r\n endTime = that.endState && that.endDate && that.newDate({\r\n year: that.endDate.year\r\n ,month: that.endDate.month\r\n ,date: that.endDate.date\r\n }).getTime();\r\n\r\n // if(startTime > endTime) return that.hint(TIPS_OUT);\r\n\r\n lay.each(tds, function(i, item){\r\n var ymd = lay(item).attr('lay-ymd').split('-');\r\n var thisTime = that.newDate({\r\n year: ymd[0]\r\n ,month: ymd[1] - 1\r\n ,date: ymd[2]\r\n }).getTime();\r\n\r\n // 标记当天\r\n if(options.rangeLinked && !that.startDate){\r\n if(thisTime === that.newDate(that.systemDate()).getTime()){\r\n lay(item).addClass(\r\n lay(item).hasClass(ELEM_PREV) || lay(item).hasClass(ELEM_NEXT)\r\n ? ''\r\n : ELEM_DAY_NOW\r\n );\r\n }\r\n }\r\n \r\n /*\r\n * 标注区间\r\n */\r\n\r\n lay(item).removeClass(ELEM_SELECTED + ' ' + THIS);\r\n\r\n if(thisTime === startTime || thisTime === endTime){\r\n (that.rangeLinked || (!that.rangeLinked && (i < 42 ? thisTime === startTime : thisTime === endTime))) &&\r\n lay(item).addClass(\r\n lay(item).hasClass(ELEM_PREV) || lay(item).hasClass(ELEM_NEXT)\r\n ? ELEM_SELECTED\r\n : THIS\r\n );\r\n }\r\n if(thisTime > startTime && thisTime < endTime){\r\n lay(item).addClass(ELEM_SELECTED);\r\n }\r\n });\r\n };\r\n\r\n // 执行 done/change 回调\r\n Class.prototype.done = function(param, type){\r\n var that = this;\r\n var options = that.config;\r\n var start = lay.extend({},\r\n lay.extend(that.rangeLinked ? that.startDate : options.dateTime, that.startTime)\r\n );\r\n var end = lay.extend({}, lay.extend(that.endDate, that.endTime));\r\n \r\n lay.each([start, end], function(i, item){\r\n if(!('month' in item)) return;\r\n lay.extend(item, {\r\n month: item.month + 1\r\n });\r\n });\r\n \r\n that.preview();\r\n \r\n param = param || [that.parse(), start, end];\r\n type === 'change' && that.renderAdditional();\r\n typeof options[type || 'done'] === 'function' && options[type || 'done'].apply(options, param);\r\n \r\n return that;\r\n };\r\n \r\n //选择日期\r\n Class.prototype.choose = function(td, index){\r\n if(td.hasClass(DISABLED)) return;\r\n\r\n var that = this\r\n ,options = that.config\r\n ,panelIndex = index; // 记录点击的是哪一个面板的\r\n\r\n if (that.rangeLinked) {\r\n if (that.endState || !that.startDate) {\r\n // 重新选择或者第一次选择\r\n index = 0;\r\n that.endState = false;\r\n that.endDate = {};\r\n } else {\r\n index = 1;\r\n that.endState = true;\r\n }\r\n }\r\n\r\n var dateTime = that.thisDateTime(index)\r\n\r\n ,tds = lay(that.elem).find('td')\r\n ,YMD = td.attr('lay-ymd').split('-');\r\n \r\n YMD = {\r\n year: YMD[0] | 0\r\n ,month: (YMD[1] | 0) - 1\r\n ,date: YMD[2] | 0\r\n };\r\n\r\n lay.extend(dateTime, YMD); //同步 dateTime\r\n\r\n //范围选择\r\n if(options.range){\r\n //补充时分秒\r\n lay.each(['startTime', 'endTime'], function(i, item){\r\n that[item] = that[item] || {\r\n hours: i ? 23: 0\r\n ,minutes: i ? 59: 0\r\n ,seconds: i ? 59: 0\r\n };\r\n if (index === i) {\r\n // 判断选择之后的是否在范围内,超出则需要调整时分秒\r\n if (that.getDateTime(lay.extend({}, dateTime, that[item])) < that.getDateTime(options.min)) {\r\n that[item] = {\r\n hours: options.min.hours\r\n ,minutes: options.min.minutes\r\n ,seconds: options.min.seconds\r\n };\r\n lay.extend(dateTime, that[item]);\r\n } else if (that.getDateTime(lay.extend({}, dateTime, that[item])) > that.getDateTime(options.max)) {\r\n that[item] = {\r\n hours: options.max.hours\r\n ,minutes: options.max.minutes\r\n ,seconds: options.max.seconds\r\n };\r\n lay.extend(dateTime, that[item]);\r\n }\r\n }\r\n });\r\n if (!index) {\r\n that.startDate = lay.extend({}, dateTime); // 同步startDate\r\n }\r\n // 校验另外一个日期是否在有效的范围内\r\n if (that.endState && !that.limit({date: that.thisDateTime(1 - index)})) {\r\n // 根据选择之后判断是否需要切换模式\r\n var isChange;\r\n if (that.endState && that.autoCalendarModel.auto) {\r\n isChange = that.autoCalendarModel();\r\n }\r\n if ((isChange || that.rangeLinked && that.endState) && that.newDate(that.startDate) > that.newDate(that.endDate)) {\r\n var isSameDate = that.startDate.year === that.endDate.year && that.startDate.month === that.endDate.month && that.startDate.date === that.endDate.date;\r\n // 判断是否反选\r\n var startDate = that.startDate;\r\n that.startDate = lay.extend({}, that.endDate, isSameDate ? {} : that.startTime);\r\n options.dateTime = lay.extend({}, that.startDate);\r\n that.endDate = lay.extend({}, startDate, isSameDate ? {} : that.endTime);\r\n isSameDate && ( // 如果是同一天并且出现了反选证明是时分秒出现开始时间大于结束时间的现象\r\n startDate = that.startTime,\r\n that.startTime = that.endTime,\r\n that.endTime = startDate\r\n )\r\n }\r\n isChange && (options.dateTime = lay.extend({}, that.startDate));\r\n }\r\n if (that.rangeLinked) {\r\n var dateTimeTemp = lay.extend({}, dateTime);\r\n if (panelIndex && !index && !isChange) { // 处理可能出现的联动面板中点击右面板但是判定为开始日期这个时候点击头部的切换上下月第一次没有反应的问题\r\n // 选择了右面板但是判断之后作为开始时间\r\n var YM = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n lay.extend(options.dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n }\r\n that.calendar(dateTimeTemp, panelIndex, isChange ? 'init' : null);\r\n } else {\r\n that.calendar(null, index, isChange ? 'init' : null);\r\n }\r\n that.endState && that.done(null, 'change');\r\n } else if(options.position === 'static'){ //直接嵌套的选中\r\n that.calendar().done().done(null, 'change'); //同时执行 done 和 change 回调\r\n } else if(options.type === 'date'){\r\n options.autoConfirm ? that.setValue(that.parse()).done().remove() : that.calendar().done(null, 'change');\r\n } else if(options.type === 'datetime'){\r\n that.calendar().done(null, 'change');\r\n }\r\n };\r\n \r\n //底部按钮\r\n Class.prototype.tool = function(btn, type){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,dateTime = options.dateTime\r\n ,isStatic = options.position === 'static'\r\n ,active = {\r\n //选择时间\r\n datetime: function(){\r\n if(lay(btn).hasClass(DISABLED)) return;\r\n that.list('time', 0);\r\n options.range && that.list('time', 1);\r\n lay(btn).attr('lay-type', 'date').html(that.lang().dateTips);\r\n }\r\n \r\n //选择日期\r\n ,date: function(){\r\n that.closeList();\r\n lay(btn).attr('lay-type', 'datetime').html(that.lang().timeTips);\r\n }\r\n \r\n //清空、重置\r\n ,clear: function(){\r\n isStatic && (\r\n lay.extend(dateTime, that.firstDate)\r\n ,that.calendar()\r\n )\r\n options.range && (\r\n delete options.dateTime\r\n ,delete that.endDate\r\n ,delete that.startTime\r\n ,delete that.endTime\r\n );\r\n that.setValue('');\r\n that.done(null, 'onClear').done(['', {}, {}]).remove();\r\n }\r\n \r\n // 现在\r\n ,now: function(){\r\n var thisDate = new Date();\r\n\r\n // 当前系统时间未在 min/max 范围内,则不可点击\r\n if(lay(btn).hasClass(DISABLED)){\r\n return that.hint(lang.tools.now +', '+ lang.invalidDate);\r\n }\r\n\r\n lay.extend(dateTime, that.systemDate(), {\r\n hours: thisDate.getHours()\r\n ,minutes: thisDate.getMinutes()\r\n ,seconds: thisDate.getSeconds()\r\n });\r\n\r\n that.setValue(that.parse());\r\n isStatic && that.calendar();\r\n that.done(null, 'onNow').done().remove();\r\n }\r\n \r\n //确定\r\n ,confirm: function(){\r\n if(options.range){\r\n if(lay(btn).hasClass(DISABLED)) return that.hint(\r\n options.type === 'time' ? lang.timeout.replace(/日期/g, '时间') : lang.timeout\r\n );\r\n } else {\r\n if(lay(btn).hasClass(DISABLED)) return that.hint(lang.invalidDate);\r\n }\r\n \r\n that.setValue(that.parse());\r\n that.done(null, 'onConfirm').done().remove();\r\n }\r\n };\r\n active[type] && active[type]();\r\n };\r\n \r\n //统一切换处理\r\n Class.prototype.change = function(index){\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = that.thisDateTime(index)\r\n ,isAlone = options.range && (options.type === 'year' || options.type === 'month')\r\n \r\n ,elemCont = that.elemCont[index || 0]\r\n ,listYM = that.listYM[index]\r\n ,addSubYear = function(type){\r\n var isYear = lay(elemCont).find('.laydate-year-list')[0]\r\n ,isMonth = lay(elemCont).find('.laydate-month-list')[0];\r\n \r\n //切换年列表\r\n if(isYear){\r\n listYM[0] = type ? listYM[0] - 15 : listYM[0] + 15;\r\n that.list('year', index);\r\n }\r\n \r\n if(isMonth){ //切换月面板中的年\r\n type ? listYM[0]-- : listYM[0]++;\r\n that.list('month', index);\r\n }\r\n \r\n if(isYear || isMonth){\r\n lay.extend(dateTime, {\r\n year: listYM[0]\r\n });\r\n if(isAlone) dateTime.year = listYM[0];\r\n options.range || that.done(null, 'change'); \r\n options.range || that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n date: {\r\n year: listYM[0]\r\n }\r\n });\r\n }\r\n \r\n that.setBtnStatus();\r\n return isYear || isMonth;\r\n };\r\n \r\n return {\r\n prevYear: function(){\r\n if(addSubYear('sub')) return;\r\n if (that.rangeLinked) {\r\n options.dateTime.year--;\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n } else {\r\n dateTime.year--;\r\n that.checkDate('limit').calendar(null, index);\r\n // 面板自动切换的模式下重新判定是否发生模式转换等细节处理\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,prevMonth: function(){\r\n if (that.rangeLinked) {\r\n dateTime = options.dateTime;\r\n }\r\n var YM = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n lay.extend(dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n if (!that.rangeLinked) {\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,nextMonth: function(){\r\n if (that.rangeLinked) {\r\n dateTime = options.dateTime;\r\n }\r\n var YM = that.getAsYM(dateTime.year, dateTime.month);\r\n lay.extend(dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n if (!that.rangeLinked) {\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,nextYear: function(){\r\n if(addSubYear()) return;\r\n if (that.rangeLinked) {\r\n options.dateTime.year++;\r\n that.checkDate('limit').calendar(null, 0, 'init');\r\n } else {\r\n dateTime.year++;\r\n that.checkDate('limit').calendar(null, index);\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n };\r\n };\r\n \r\n //日期切换事件\r\n Class.prototype.changeEvent = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n //日期选择事件\r\n lay(that.elem).on('click', function(e){\r\n lay.stope(e);\r\n }).on('mousedown', function(e){\r\n lay.stope(e);\r\n });\r\n \r\n //年月切换\r\n lay.each(that.elemHeader, function(i, header){\r\n //上一年\r\n lay(header[0]).on('click', function(e){\r\n that.change(i).prevYear();\r\n });\r\n \r\n //上一月\r\n lay(header[1]).on('click', function(e){\r\n that.change(i).prevMonth();\r\n });\r\n \r\n //选择年月\r\n lay(header[2]).find('span').on('click', function(e){\r\n var othis = lay(this)\r\n ,layYM = othis.attr('lay-ym')\r\n ,layType = othis.attr('lay-type');\r\n \r\n if(!layYM) return;\r\n \r\n layYM = layYM.split('-');\r\n\r\n that.listYM[i] = [layYM[0] | 0, layYM[1] | 0];\r\n that.list(layType, i);\r\n lay(that.footer).find('.'+ ELEM_TIME_BTN).addClass(DISABLED);\r\n });\r\n\r\n //下一月\r\n lay(header[3]).on('click', function(e){\r\n that.change(i).nextMonth();\r\n });\r\n \r\n //下一年\r\n lay(header[4]).on('click', function(e){\r\n that.change(i).nextYear();\r\n });\r\n });\r\n \r\n //点击日期\r\n lay.each(that.table, function(i, table){\r\n var tds = lay(table).find('td');\r\n tds.on('click', function(){\r\n that.choose(lay(this), i);\r\n });\r\n });\r\n \r\n //点击底部按钮\r\n lay(that.footer).find('span').on('click', function(){\r\n var type = lay(this).attr('lay-type');\r\n that.tool(this, type);\r\n });\r\n };\r\n \r\n //是否输入框\r\n Class.prototype.isInput = function(elem){\r\n return /input|textarea/.test(elem.tagName.toLocaleLowerCase()) || /INPUT|TEXTAREA/.test(elem.tagName);\r\n };\r\n\r\n //绑定的元素事件处理\r\n Class.prototype.events = function(){\r\n var that = this\r\n var options = that.config\r\n\r\n if(!options.elem[0] || options.elem[0].eventHandler) return;\r\n\r\n var showEvent = function(){\r\n // 已经打开的面板避免重新渲染\r\n if(laydate.thisId === options.id) return;\r\n that.render();\r\n };\r\n\r\n //绑定呼出控件事件\r\n options.elem.on(options.trigger, showEvent);\r\n options.elem[0].eventHandler = true;\r\n options.eventElem.on(options.trigger, showEvent);\r\n\r\n // 元素解绑\r\n that.unbind = function () {\r\n that.remove();\r\n options.elem.off(options.trigger, showEvent);\r\n options.elem.removeAttr('lay-key');\r\n options.elem.removeAttr(MOD_ID);\r\n options.elem[0].eventHandler = false;\r\n options.eventElem.off(options.trigger, showEvent);\r\n options.eventElem.removeAttr('lay-key');\r\n delete thisModule.that[options.id];\r\n };\r\n };\r\n \r\n //记录所有实例\r\n thisModule.that = {}; //记录所有实例对象\r\n \r\n //获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that && isLayui) layui.hint().error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 初始执行\r\n ready.run = function(lay){\r\n // 绑定关闭控件事件\r\n lay(document).on('mousedown', function(e){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n \r\n var options = that.config;\r\n \r\n if(\r\n e.target === options.elem[0] || \r\n e.target === options.eventElem[0] ||\r\n e.target === lay(options.closeStop)[0] ||\r\n (options.elem[0] && options.elem[0].contains(e.target))\r\n ) return;\r\n \r\n that.remove();\r\n \r\n }).on('keydown', function(e){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n \r\n // 回车触发确认\r\n if(that.config.position === 'static') return;\r\n if(e.keyCode === 13){\r\n if(lay('#'+ that.elemID)[0] && that.elemID === Class.thisElemDate){\r\n e.preventDefault();\r\n lay(that.footer).find(ELEM_CONFIRM)[0].click();\r\n }\r\n }\r\n });\r\n \r\n //自适应定位\r\n lay(window).on('resize', function(){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n \r\n if(!that.elem || !lay(ELEM)[0]){\r\n return false;\r\n }\r\n \r\n that.position();\r\n });\r\n };\r\n \r\n // 渲染 - 核心接口\r\n laydate.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n // 重载\r\n laydate.reload = function (id, options) {\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.reload(options);\r\n };\r\n\r\n // 获取对应 ID 的实例\r\n laydate.getInst = function (id) {\r\n var that = thisModule.getThis(id);\r\n if(that){\r\n return that.inst;\r\n }\r\n };\r\n\r\n // 面板提示\r\n laydate.hint = function(id, opts){\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.hint(opts);\r\n };\r\n\r\n // 解绑实例\r\n laydate.unbind = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.unbind();\r\n };\r\n\r\n // 关闭日期面板\r\n laydate.close = function(id){\r\n var that = thisModule.getThis(id || laydate.thisId);\r\n if(!that) return;\r\n return that.remove();\r\n };\r\n\r\n // 将指定对象转化为日期值\r\n laydate.parse = function(dateTime, format, one){\r\n dateTime = dateTime || {};\r\n \r\n //如果 format 是字符型,则转换为数组格式\r\n if(typeof format === 'string'){\r\n format = thisModule.formatArr(format);\r\n }\r\n \r\n format = (format || []).concat();\r\n \r\n //转义为规定格式\r\n lay.each(format, function(i, item){\r\n if(/yyyy|y/.test(item)){ //年\r\n format[i] = lay.digit(dateTime.year, item.length);\r\n } else if(/MM|M/.test(item)){ //月\r\n format[i] = lay.digit(dateTime.month + (one || 0), item.length);\r\n } else if(/dd|d/.test(item)){ //日\r\n format[i] = lay.digit(dateTime.date, item.length);\r\n } else if(/HH|H/.test(item)){ //时\r\n format[i] = lay.digit(dateTime.hours, item.length);\r\n } else if(/mm|m/.test(item)){ //分\r\n format[i] = lay.digit(dateTime.minutes, item.length);\r\n } else if(/ss|s/.test(item)){ //秒\r\n format[i] = lay.digit(dateTime.seconds, item.length);\r\n }\r\n });\r\n \r\n return format.join('');\r\n };\r\n \r\n // 得到某月的最后一天\r\n laydate.getEndDate = function(month, year){\r\n var thisDate = new Date();\r\n //设置日期为下个月的第一天\r\n thisDate.setFullYear(\r\n year || thisDate.getFullYear()\r\n ,month || (thisDate.getMonth() + 1)\r\n ,1);\r\n //减去一天,得到当前月最后一天\r\n return new Date(thisDate.getTime() - 1000*60*60*24).getDate();\r\n };\r\n\r\n //加载方式\r\n isLayui ? (\r\n laydate.ready()\r\n ,layui.define('lay', function(exports){ //layui 加载\r\n laydate.path = layui.cache.dir;\r\n ready.run(lay);\r\n exports(MOD_NAME, laydate);\r\n })\r\n ) : (\r\n (typeof define === 'function' && define.amd) ? define(function(){ //requirejs 加载\r\n ready.run(lay);\r\n return laydate;\r\n }) : function(){ //普通 script 标签加载\r\n laydate.ready();\r\n ready.run(window.lay);\r\n window.laydate = laydate;\r\n }()\r\n );\r\n\r\n}(window, window.document);\r\n\r\n","/*!\n * jQuery JavaScript Library v1.12.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-05-20T17:17Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\"use strict\";\nvar deletedIds = [];\n\nvar document = window.document;\n\nvar slice = deletedIds.slice;\n\nvar concat = deletedIds.concat;\n\nvar push = deletedIds.push;\n\nvar indexOf = deletedIds.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"1.12.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1, IE<9\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: deletedIds.sort,\n\tsplice: deletedIds.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type( obj ) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\tvar realStringObj = obj && obj.toString();\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype, \"isPrototypeOf\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( !support.ownFirst ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data ); // jscs:ignore requireDotNotation\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1, IE<9\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\twhile ( j < len ) {\n\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\n\t\tif ( len !== len ) {\n\t\t\twhile ( second[ j ] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: function() {\n\t\treturn +( new Date() );\n\t},\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\n// JSHint would error on this code due to the Symbol not being defined in ES5.\n// Defining this global in .jshintrc would create a danger of using the global\n// unguarded in another place, it seems safer to just disable JSHint for these\n// three lines.\n/* jshint ignore: start */\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ];\n}\n/* jshint ignore: end */\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.1\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-10-17\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\n\t\t// Support: IE 11\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) > -1 ) !== not;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// init accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt( 0 ) === \"<\" &&\n\t\t\t\tselector.charAt( selector.length - 1 ) === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[ 2 ] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof root.ready !== \"undefined\" ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\n\t\t\t\t\tpos.index( cur ) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[ 0 ], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.uniqueSort( ret );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnotwhite = ( /\\S+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = true;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add( function() {\n\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 ||\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred.\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n} );\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n} );\n\n/**\n * Clean-up method for dom ready events\n */\nfunction detach() {\n\tif ( document.addEventListener ) {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\t\twindow.removeEventListener( \"load\", completed );\n\n\t} else {\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\twindow.detachEvent( \"onload\", completed );\n\t}\n}\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\tif ( document.addEventListener ||\n\t\twindow.event.type === \"load\" ||\n\t\tdocument.readyState === \"complete\" ) {\n\n\t\tdetach();\n\t\tjQuery.ready();\n\t}\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called\n\t\t// after the browser event has already occurred.\n\t\t// Support: IE6-10\n\t\t// Older IE sometimes signals \"interactive\" too soon\n\t\tif ( document.readyState === \"complete\" ||\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\twindow.setTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed );\n\n\t\t// If IE event model is used\n\t\t} else {\n\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch ( e ) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t( function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll( \"left\" );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn window.setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t} )();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Support: IE<9\n// Iteration over object's inherited properties before its own\nvar i;\nfor ( i in jQuery( support ) ) {\n\tbreak;\n}\nsupport.ownFirst = i === \"0\";\n\n// Note: most support tests are defined in their respective modules.\n// false until the test is run\nsupport.inlineBlockNeedsLayout = false;\n\n// Execute ASAP in case we need to set body.style.zoom\njQuery( function() {\n\n\t// Minified: var a,b,c,d\n\tvar val, div, body, container;\n\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\tif ( !body || !body.style ) {\n\n\t\t// Return for frameset docs that don't have a body\n\t\treturn;\n\t}\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tcontainer = document.createElement( \"div\" );\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\tbody.appendChild( container ).appendChild( div );\n\n\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\n\t\t// Support: IE<8\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to 'inline' and giving\n\t\t// them layout\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\n\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\n\t\tif ( val ) {\n\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t// Support: IE<8\n\t\t\tbody.style.zoom = 1;\n\t\t}\n\t}\n\n\tbody.removeChild( container );\n} );\n\n\n( function() {\n\tvar div = document.createElement( \"div\" );\n\n\t// Support: IE<9\n\tsupport.deleteExpando = true;\n\ttry {\n\t\tdelete div.test;\n\t} catch ( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n} )();\nvar acceptData = function( elem ) {\n\tvar noData = jQuery.noData[ ( elem.nodeName + \" \" ).toLowerCase() ],\n\t\tnodeType = +elem.nodeType || 1;\n\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\n\treturn nodeType !== 1 && nodeType !== 9 ?\n\t\tfalse :\n\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\n\t\t!noData || noData !== true && elem.getAttribute( \"classid\" ) === noData;\n};\n\n\n\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[ name ] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\n\tif ( !acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) &&\n\t\tdata === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split( \" \" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[ i ] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, undefined\n\t} else {\n\t\tcache[ id ] = undefined;\n\t}\n}\n\njQuery.extend( {\n\tcache: {},\n\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\n\t// throw uncatchable exceptions if you attempt to set expando properties\n\tnoData: {\n\t\t\"applet \": true,\n\t\t\"embed \": true,\n\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each( function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t} ) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object,\n\t// or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, key );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\n\n\n( function() {\n\tvar shrinkWrapBlocksVal;\n\n\tsupport.shrinkWrapBlocks = function() {\n\t\tif ( shrinkWrapBlocksVal != null ) {\n\t\t\treturn shrinkWrapBlocksVal;\n\t\t}\n\n\t\t// Will be changed later if needed.\n\t\tshrinkWrapBlocksVal = false;\n\n\t\t// Minified: var b,c,d\n\t\tvar div, body, container;\n\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\t\tif ( !body || !body.style ) {\n\n\t\t\t// Test fired too early or in an unsupported environment, exit.\n\t\t\treturn;\n\t\t}\n\n\t\t// Setup\n\t\tdiv = document.createElement( \"div\" );\n\t\tcontainer = document.createElement( \"div\" );\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\t// Support: IE6\n\t\t// Check if elements with layout shrink-wrap their children\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\n\t\t\t// Reset CSS: box-sizing; display; margin; border\n\t\t\tdiv.style.cssText =\n\n\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;\" +\n\t\t\t\t\"padding:1px;width:1px;zoom:1\";\n\t\t\tdiv.appendChild( document.createElement( \"div\" ) ).style.width = \"5px\";\n\t\t\tshrinkWrapBlocksVal = div.offsetWidth !== 3;\n\t\t}\n\n\t\tbody.removeChild( container );\n\n\t\treturn shrinkWrapBlocksVal;\n\t};\n\n} )();\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() { return tween.cur(); } :\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlength = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ],\n\t\t\t\t\tkey,\n\t\t\t\t\traw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlength ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([\\w:-]+)/ );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\nvar rleadingWhitespace = ( /^\\s+/ );\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|\" +\n\t\t\"details|dialog|figcaption|figure|footer|header|hgroup|main|\" +\n\t\t\"mark|meter|nav|output|picture|progress|section|summary|template|time|video\";\n\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\n\n( function() {\n\tvar div = document.createElement( \"div\" ),\n\t\tfragment = document.createDocumentFragment(),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Setup\n\tdiv.innerHTML = \"
            a\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone =\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav>\";\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tinput.type = \"checkbox\";\n\tinput.checked = true;\n\tfragment.appendChild( input );\n\tsupport.appendChecked = input.checked;\n\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\t// Support: IE6-IE11+\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tfragment.appendChild( div );\n\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput = document.createElement( \"input\" );\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\n\t// old WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Cloned elements keep attachEvent handlers, we use addEventListener on IE9+\n\tsupport.noCloneEvent = !!div.addEventListener;\n\n\t// Support: IE<9\n\t// Since attributes and properties are the same in IE,\n\t// cleanData must set properties to undefined rather than use removeAttribute\n\tdiv[ jQuery.expando ] = 1;\n\tsupport.attributes = !div.getAttribute( jQuery.expando );\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\toption: [ 1, \"\" ],\n\tlegend: [ 1, \"
            \", \"
            \" ],\n\tarea: [ 1, \"\", \"\" ],\n\n\t// Support: IE8\n\tparam: [ 1, \"\", \"\" ],\n\tthead: [ 1, \"\", \"
            \" ],\n\ttr: [ 2, \"\", \"
            \" ],\n\tcol: [ 2, \"\", \"
            \" ],\n\ttd: [ 3, \"\", \"
            \" ],\n\n\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t// unless wrapped in a div with non-breaking characters in front of it.\n\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X
            \", \"
            \" ]\n};\n\n// Support: IE8-IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context;\n\t\t\t( elem = elems[ i ] ) != null;\n\t\t\ti++\n\t\t) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\n\t\tjQuery._data(\n\t\t\telem,\n\t\t\t\"globalEval\",\n\t\t\t!refElements || jQuery._data( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/,\n\trtbody = / from table fragments\n\t\t\t\tif ( !support.tbody ) {\n\n\t\t\t\t\t// String was a , *may* have spurious \n\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t// String was a bare or \n\t\t\t\t\t\twrap[ 1 ] === \"
            \" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t0;\n\n\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), \"tbody\" ) &&\n\t\t\t\t\t\t\t!tbody.childNodes.length ) {\n\n\t\t\t\t\t\t\telem.removeChild( tbody );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t}\n\n\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\ttmp = safe.lastChild;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Fix #11356: Clear elements from fragment\n\tif ( tmp ) {\n\t\tsafe.removeChild( tmp );\n\t}\n\n\t// Reset defaultChecked for any radios and checkboxes\n\t// about to be appended to the DOM in IE 6/7 (#8060)\n\tif ( !support.appendChecked ) {\n\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t}\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\ttmp = null;\n\n\treturn safe;\n}\n\n\n( function() {\n\tvar i, eventName,\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events)\n\tfor ( i in { submit: true, change: true, focusin: true } ) {\n\t\teventName = \"on\" + i;\n\n\t\tif ( !( support[ i ] = eventName in window ) ) {\n\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\t\t\tdiv.setAttribute( eventName, \"t\" );\n\t\t\tsupport[ i ] = div.attributes[ eventName ].expando === false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n} )();\n\n\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE9\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" &&\n\t\t\t\t\t( !e || jQuery.event.triggered !== e.type ) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak\n\t\t\t// with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tjQuery._data( cur, \"handle\" );\n\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif (\n\t\t\t\t( !special._default ||\n\t\t\t\t special._default.apply( eventPath.pop(), data ) === false\n\t\t\t\t) && acceptData( elem )\n\t\t\t) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support (at least): Chrome, IE9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox<=42+\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Safari 6-8+\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: ( \"button buttons clientX clientY fromElement offsetX offsetY \" +\n\t\t\t\"pageX pageY screenX screenY toElement\" ).split( \" \" ),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX +\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY +\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ?\n\t\t\t\t\toriginal.toElement :\n\t\t\t\t\tfromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\n\t\t\t\t// Previously, `originalEvent: {}` was set here, so stopPropagation call\n\t\t\t\t// would not be triggered on donor event, since in our own\n\t\t\t\t// jQuery.event.stopPropagation function we had a check for existence of\n\t\t\t\t// originalEvent.stopPropagation method, so, consequently it would be a noop.\n\t\t\t\t//\n\t\t\t\t// Guard for simulated events was moved to jQuery.event.stopPropagation function\n\t\t\t\t// since `originalEvent` should point to the original event for the\n\t\t\t\t// constancy with other events and for more focused logic\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\n\t\t// This \"if\" is needed for plain objects\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event,\n\t\t\t// to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: IE < 9, Android < 4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( !e || this.isSimulated ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://code.google.com/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\n// IE submit delegation\nif ( !support.submit ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ?\n\n\t\t\t\t\t\t// Support: IE <=8\n\t\t\t\t\t\t// We use jQuery.prop instead of elem.form\n\t\t\t\t\t\t// to allow fixing the IE8 delegated submit issue (gh-2332)\n\t\t\t\t\t\t// by 3rd party polyfills/workarounds.\n\t\t\t\t\t\tjQuery.prop( elem, \"form\" ) :\n\t\t\t\t\t\tundefined;\n\n\t\t\t\tif ( form && !jQuery._data( form, \"submit\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submitBubble = true;\n\t\t\t\t\t} );\n\t\t\t\t\tjQuery._data( form, \"submit\", true );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submitBubble ) {\n\t\t\t\tdelete event._submitBubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !support.change ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._justChanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._justChanged && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._justChanged = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"change\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tjQuery._data( elem, \"change\", true );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger ||\n\t\t\t\t( elem.type !== \"radio\" && elem.type !== \"checkbox\" ) ) {\n\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Support: Firefox\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome, Safari\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tjQuery._removeData( doc, fix );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp( \"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\" ),\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\n\t// Support: IE 10-11, Edge 10240+\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g,\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement( \"div\" ) );\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( jQuery.find.attr( elem, \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar first, node, hasScripts,\n\t\tscripts, doc, fragment,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.globalEval(\n\t\t\t\t\t\t\t\t( node.text || node.textContent || node.innerHTML || \"\" )\n\t\t\t\t\t\t\t\t\t.replace( rcleanScript, \"\" )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\tfragment = first = null;\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\telems = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = elems[ i ] ) != null; i++ ) {\n\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( support.html5Clone || jQuery.isXMLDoc( elem ) ||\n\t\t\t!rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( ( !support.noCloneEvent || !support.noCloneChecked ) &&\n\t\t\t\t( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) {\n\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[ i ] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems, /* internal */ forceAcceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tattributes = support.attributes,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\tif ( forceAcceptData || acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes\n\t\t\t\t\t\t// IE creates expando attributes along with the property\n\t\t\t\t\t\t// IE does not have a removeAttribute function on Document nodes\n\t\t\t\t\t\tif ( !attributes && typeof elem.removeAttribute !== \"undefined\" ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\n\t// Keep domManip exposed until 3.0 (gh-2225)\n\tdomManip: domManip,\n\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append(\n\t\t\t\t\t( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value )\n\t\t\t\t);\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[ i ] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\n\nvar iframe,\n\telemdisplay = {\n\n\t\t// Support: Firefox\n\t\t// We have to pre-define these values for FF (#10227)\n\t\tHTML: \"block\",\n\t\tBODY: \"block\"\n\t};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe || jQuery( \"';\n break;\n case 3:\n delete config.title;\n delete config.closeBtn;\n config.icon === -1 && (config.icon === 0);\n layer.closeAll('loading');\n break;\n case 4:\n conType || (config.content = [config.content, 'body']);\n config.follow = config.content[1];\n config.content = config.content[0] + '';\n delete config.title;\n config.tips = typeof config.tips === 'object' ? config.tips : [config.tips, true];\n config.tipsMore || layer.closeAll('tips');\n break;\n }\n \n // 建立容器\n that.vessel(conType, function(html, titleHTML, moveElem){\n body.append(html[0]);\n conType ? function(){\n (config.type == 2 || config.type == 4) ? function(){\n $('body').append(html[1]);\n }() : function(){\n if(!content.parents('.'+doms[0])[0]){\n content.data('display', content.css('display')).show().addClass('layui-layer-wrap').wrap(html[1]);\n $('#'+ doms[0] + times).find('.'+doms[5]).before(titleHTML);\n }\n }();\n }() : body.append(html[1]);\n $('#'+ doms.MOVE)[0] || body.append(ready.moveElem = moveElem);\n \n that.layero = $('#'+ doms[0] + times);\n that.shadeo = $('#'+ doms.SHADE + times);\n \n config.scrollbar || ready.setScrollbar(times);\n }).auto(times);\n \n // 遮罩\n that.shadeo.css({\n 'background-color': config.shade[1] || '#000'\n ,'opacity': config.shade[0] || config.shade\n });\n\n config.type == 2 && layer.ie == 6 && that.layero.find('iframe').attr('src', content[0]);\n\n // 坐标自适应浏览器窗口尺寸\n config.type == 4 ? that.tips() : function(){\n that.offset()\n // 首次弹出时,若 css 尚未加载,则等待 css 加载完毕后,重新设定尺寸\n parseInt(ready.getStyle(document.getElementById(doms.MOVE), 'z-index')) || function(){\n that.layero.css('visibility', 'hidden');\n layer.ready(function(){\n that.offset();\n that.layero.css('visibility', 'visible');\n });\n }();\n }();\n \n // 若是固定定位,则跟随 resize 事件来自适应坐标\n if(config.fixed){\n if(!ready.events.resize[that.index]){\n ready.events.resize[that.index] = function(){\n that.resize();\n };\n // 此处 resize 事件不会一直叠加,当关闭弹层时会移除该事件\n win.on('resize', ready.events.resize[that.index]);\n }\n }\n \n config.time <= 0 || setTimeout(function(){\n layer.close(that.index);\n }, config.time);\n that.move().callback();\n \n // 为兼容 jQuery3.0 的 css 动画影响元素尺寸计算\n if(doms.anim[config.anim]){\n var animClass = 'layer-anim '+ doms.anim[config.anim];\n that.layero.addClass(animClass).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){\n $(this).removeClass(animClass);\n });\n }\n \n // 记录配置信息\n that.layero.data('config', config);\n};\n\n// 当前实例的 resize 事件\nClass.pt.resize = function(){\n var that = this;\n var config = that.config;\n \n that.offset();\n (/^\\d+%$/.test(config.area[0]) || /^\\d+%$/.test(config.area[1])) && that.auto(that.index);\n config.type == 4 && that.tips();\n};\n\n// 自适应\nClass.pt.auto = function(index){\n var that = this, config = that.config, layero = $('#'+ doms[0] + index);\n \n if(config.area[0] === '' && config.maxWidth > 0){\n // 适配 ie7\n if(layer.ie && layer.ie < 8 && config.btn){\n layero.width(layero.innerWidth());\n }\n layero.outerWidth() > config.maxWidth && layero.width(config.maxWidth);\n }\n \n var area = [layero.innerWidth(), layero.innerHeight()];\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\n var setHeight = function(elem){\n elem = layero.find(elem);\n elem.height(area[1] - titHeight - btnHeight - 2*(parseFloat(elem.css('padding-top'))|0));\n };\n\n switch(config.type){\n case 2: \n setHeight('iframe');\n break;\n default:\n if(config.area[1] === ''){\n if(config.maxHeight > 0 && layero.outerHeight() > config.maxHeight){\n area[1] = config.maxHeight;\n setHeight('.'+doms[5]);\n } else if(config.fixed && area[1] >= win.height()){\n area[1] = win.height();\n setHeight('.'+doms[5]);\n }\n } else {\n setHeight('.'+doms[5]);\n }\n break;\n }\n \n return that;\n};\n\n// 计算坐标\nClass.pt.offset = function(){\n var that = this, config = that.config, layero = that.layero;\n var area = [layero.outerWidth(), layero.outerHeight()];\n var type = typeof config.offset === 'object';\n that.offsetTop = (win.height() - area[1])/2;\n that.offsetLeft = (win.width() - area[0])/2;\n \n if(type){\n that.offsetTop = config.offset[0];\n that.offsetLeft = config.offset[1]||that.offsetLeft;\n } else if(config.offset !== 'auto'){\n \n if(config.offset === 't'){ // 上\n that.offsetTop = 0;\n } else if(config.offset === 'r'){ // 右\n that.offsetLeft = win.width() - area[0];\n } else if(config.offset === 'b'){ // 下\n that.offsetTop = win.height() - area[1];\n } else if(config.offset === 'l'){ // 左\n that.offsetLeft = 0;\n } else if(config.offset === 'lt'){ // 左上\n that.offsetTop = 0;\n that.offsetLeft = 0;\n } else if(config.offset === 'lb'){ // 左下\n that.offsetTop = win.height() - area[1];\n that.offsetLeft = 0;\n } else if(config.offset === 'rt'){ // 右上\n that.offsetTop = 0;\n that.offsetLeft = win.width() - area[0];\n } else if(config.offset === 'rb'){ // 右下\n that.offsetTop = win.height() - area[1];\n that.offsetLeft = win.width() - area[0];\n } else {\n that.offsetTop = config.offset;\n }\n \n }\n \n if(!config.fixed){\n that.offsetTop = /%$/.test(that.offsetTop) ? \n win.height()*parseFloat(that.offsetTop)/100\n : parseFloat(that.offsetTop);\n that.offsetLeft = /%$/.test(that.offsetLeft) ? \n win.width()*parseFloat(that.offsetLeft)/100\n : parseFloat(that.offsetLeft);\n that.offsetTop += win.scrollTop();\n that.offsetLeft += win.scrollLeft();\n }\n \n // 最小化窗口时的自适应\n if(layero.data('maxminStatus') === 'min'){\n that.offsetTop = win.height() - (layero.find(doms[1]).outerHeight() || 0);\n that.offsetLeft = layero.css('left');\n }\n\n // 设置坐标\n layero.css({\n top: that.offsetTop, \n left: that.offsetLeft\n });\n};\n\n// Tips\nClass.pt.tips = function(){\n var that = this, config = that.config, layero = that.layero;\n var layArea = [layero.outerWidth(), layero.outerHeight()], follow = $(config.follow);\n if(!follow[0]) follow = $('body');\n var goal = {\n width: follow.outerWidth(),\n height: follow.outerHeight(),\n top: follow.offset().top,\n left: follow.offset().left\n }, tipsG = layero.find('.layui-layer-TipsG');\n \n var guide = config.tips[0];\n config.tips[1] || tipsG.remove();\n \n goal.autoLeft = function(){\n if(goal.left + layArea[0] - win.width() > 0){\n goal.tipLeft = goal.left + goal.width - layArea[0];\n tipsG.css({right: 12, left: 'auto'});\n } else {\n goal.tipLeft = goal.left;\n }\n };\n \n // 辨别 tips 的方位\n goal.where = [function(){ // 上 \n goal.autoLeft();\n goal.tipTop = goal.top - layArea[1] - 10;\n tipsG.removeClass('layui-layer-TipsB').addClass('layui-layer-TipsT').css('border-right-color', config.tips[1]);\n }, function(){ // 右\n goal.tipLeft = goal.left + goal.width + 10;\n goal.tipTop = goal.top;\n tipsG.removeClass('layui-layer-TipsL').addClass('layui-layer-TipsR').css('border-bottom-color', config.tips[1]); \n }, function(){ // 下\n goal.autoLeft();\n goal.tipTop = goal.top + goal.height + 10;\n tipsG.removeClass('layui-layer-TipsT').addClass('layui-layer-TipsB').css('border-right-color', config.tips[1]);\n }, function(){ // 左\n goal.tipLeft = goal.left - layArea[0] - 10;\n goal.tipTop = goal.top;\n tipsG.removeClass('layui-layer-TipsR').addClass('layui-layer-TipsL').css('border-bottom-color', config.tips[1]);\n }];\n goal.where[guide-1]();\n \n /* 8*2为小三角形占据的空间 */\n if(guide === 1){\n goal.top - (win.scrollTop() + layArea[1] + 8*2) < 0 && goal.where[2]();\n } else if(guide === 2){\n win.width() - (goal.left + goal.width + layArea[0] + 8*2) > 0 || goal.where[3]()\n } else if(guide === 3){\n (goal.top - win.scrollTop() + goal.height + layArea[1] + 8*2) - win.height() > 0 && goal.where[0]();\n } else if(guide === 4){\n layArea[0] + 8*2 - goal.left > 0 && goal.where[1]()\n }\n\n layero.find('.'+doms[5]).css({\n 'background-color': config.tips[1], \n 'padding-right': (config.closeBtn ? '30px' : '')\n });\n layero.css({\n left: goal.tipLeft - (config.fixed ? win.scrollLeft() : 0), \n top: goal.tipTop - (config.fixed ? win.scrollTop() : 0)\n });\n}\n\n// 拖拽层\nClass.pt.move = function(){\n var that = this;\n var config = that.config;\n var _DOC = $(document);\n var layero = that.layero;\n var DATA_NAME = ['LAY_MOVE_DICT', 'LAY_RESIZE_DICT'];\n var moveElem = layero.find(config.move);\n var resizeElem = layero.find('.layui-layer-resize');\n \n // 给指定元素添加拖动光标\n if(config.move) moveElem.css('cursor', 'move');\n \n // 按下拖动元素\n moveElem.on('mousedown', function(e){\n if (e.button) {return;} // 不是左键不处理\n var othis = $(this);\n var dict = {};\n \n if(config.move){\n dict.layero = layero;\n dict.config = config;\n dict.offset = [\n e.clientX - parseFloat(layero.css('left')),\n e.clientY - parseFloat(layero.css('top'))\n ];\n \n othis.data(DATA_NAME[0], dict);\n ready.eventMoveElem = othis;\n ready.moveElem.css('cursor', 'move').show();\n }\n \n e.preventDefault();\n });\n \n // 按下右下角拉伸\n resizeElem.on('mousedown', function(e){\n var othis = $(this);\n var dict = {};\n \n if(config.resize){\n dict.layero = layero;\n dict.config = config;\n dict.offset = [e.clientX, e.clientY];\n dict.index = that.index;\n dict.area = [\n layero.outerWidth()\n ,layero.outerHeight()\n ];\n \n othis.data(DATA_NAME[1], dict);\n ready.eventResizeElem = othis;\n ready.moveElem.css('cursor', 'se-resize').show();\n }\n \n e.preventDefault();\n });\n \n // 拖动元素,避免多次调用实例造成事件叠加\n if(ready.docEvent) return that;\n _DOC.on('mousemove', function(e){\n // 拖拽移动\n if(ready.eventMoveElem){\n var dict = ready.eventMoveElem.data(DATA_NAME[0]) || {}\n ,layero = dict.layero\n ,config = dict.config;\n \n var X = e.clientX - dict.offset[0];\n var Y = e.clientY - dict.offset[1];\n var fixed = layero.css('position') === 'fixed';\n \n e.preventDefault();\n \n dict.stX = fixed ? 0 : win.scrollLeft();\n dict.stY = fixed ? 0 : win.scrollTop();\n\n // 控制元素不被拖出窗口外\n if(!config.moveOut){\n var setRig = win.width() - layero.outerWidth() + dict.stX;\n var setBot = win.height() - layero.outerHeight() + dict.stY; \n X < dict.stX && (X = dict.stX);\n X > setRig && (X = setRig); \n Y < dict.stY && (Y = dict.stY);\n Y > setBot && (Y = setBot);\n }\n \n // 拖动时跟随鼠标位置\n layero.css({\n left: X,\n top: Y\n });\n }\n \n // Resize\n if(ready.eventResizeElem){\n var dict = ready.eventResizeElem.data(DATA_NAME[1]) || {};\n var config = dict.config;\n \n var X = e.clientX - dict.offset[0];\n var Y = e.clientY - dict.offset[1];\n \n e.preventDefault();\n \n // 拉伸宽高\n layer.style(dict.index, {\n width: dict.area[0] + X\n ,height: dict.area[1] + Y\n });\n \n config.resizing && config.resizing(dict.layero);\n }\n }).on('mouseup', function(e){\n if(ready.eventMoveElem){\n var dict = ready.eventMoveElem.data(DATA_NAME[0]) || {};\n var config = dict.config;\n \n ready.eventMoveElem.removeData(DATA_NAME[0]);\n delete ready.eventMoveElem;\n ready.moveElem.hide();\n config.moveEnd && config.moveEnd(dict.layero);\n }\n if(ready.eventResizeElem){\n ready.eventResizeElem.removeData(DATA_NAME[1]);\n delete ready.eventResizeElem;\n ready.moveElem.hide();\n }\n });\n \n ready.docEvent = true; // 已给 document 执行全局事件\n return that;\n};\n\nClass.pt.callback = function(){\n var that = this, layero = that.layero, config = that.config;\n that.openLayer();\n if(config.success){\n if(config.type == 2){\n layero.find('iframe').on('load', function(){\n config.success(layero, that.index, that);\n });\n } else {\n config.success(layero, that.index, that);\n }\n }\n layer.ie == 6 && that.IE6(layero);\n \n // 按钮\n layero.find('.'+ doms[6]).children('a').on('click', function(){\n var index = $(this).index();\n if(index === 0){\n if(config.yes){\n config.yes(that.index, layero, that);\n } else if(config['btn1']){\n config['btn1'](that.index, layero, that);\n } else {\n layer.close(that.index);\n }\n } else {\n var close = config['btn'+(index+1)] && config['btn'+(index+1)](that.index, layero, that);\n close === false || layer.close(that.index);\n }\n });\n \n // 取消\n function cancel(){\n var close = config.cancel && config.cancel(that.index, layero, that);\n close === false || layer.close(that.index);\n }\n \n // 右上角关闭回调\n layero.find('.'+ doms[7]).on('click', cancel);\n \n // 点遮罩关闭\n if(config.shadeClose){\n that.shadeo.on('click', function(){\n layer.close(that.index);\n });\n } \n \n // 最小化\n layero.find('.layui-layer-min').on('click', function(){\n var min = config.min && config.min(layero, that.index, that);\n min === false || layer.min(that.index, config);\n });\n \n // 全屏/还原\n layero.find('.layui-layer-max').on('click', function(){\n if($(this).hasClass('layui-layer-maxmin')){\n layer.restore(that.index);\n config.restore && config.restore(layero, that.index, that);\n } else {\n layer.full(that.index, config);\n setTimeout(function(){\n config.full && config.full(layero, that.index, that);\n }, 100);\n }\n });\n\n config.end && (ready.end[that.index] = config.end);\n};\n\n// for ie6 恢复 select\nready.reselect = function(){\n $.each($('select'), function(index , value){\n var sthis = $(this);\n if(!sthis.parents('.'+doms[0])[0]){\n (sthis.attr('layer') == 1 && $('.'+doms[0]).length < 1) && sthis.removeAttr('layer').show(); \n }\n sthis = null;\n });\n}; \n\nClass.pt.IE6 = function(layero){\n // 隐藏select\n $('select').each(function(index , value){\n var sthis = $(this);\n if(!sthis.parents('.'+doms[0])[0]){\n sthis.css('display') === 'none' || sthis.attr({'layer' : '1'}).hide();\n }\n sthis = null;\n });\n};\n\n// 需依赖原型的对外方法\nClass.pt.openLayer = function(){\n var that = this;\n \n // 置顶当前窗口\n layer.zIndex = that.config.zIndex;\n layer.setTop = function(layero){\n var setZindex = function(){\n layer.zIndex++;\n layero.css('z-index', layer.zIndex + 1);\n };\n layer.zIndex = parseInt(layero[0].style.zIndex);\n layero.on('mousedown', setZindex);\n return layer.zIndex;\n };\n};\n\n// 记录宽高坐标,用于还原\nready.record = function(layero){\n if(!layero[0]) return window.console && console.error('index error');\n var area = [\n layero[0].style.width || layero.width(),\n layero[0].style.height || layero.height(),\n layero.position().top, \n layero.position().left + parseFloat(layero.css('margin-left'))\n ];\n layero.find('.layui-layer-max').addClass('layui-layer-maxmin');\n layero.attr({area: area});\n};\n\n// 设置页面滚动条\nready.setScrollbar = function(index){\n doms.html.css('overflow', 'hidden').attr('layer-full', index);\n};\n\n// 恢复页面滚动条\nready.restScrollbar = function(index){\n if(doms.html.attr('layer-full') == index){\n doms.html[0].style[doms.html[0].style.removeProperty \n ? 'removeProperty' \n : 'removeAttribute']('overflow');\n doms.html.removeAttr('layer-full');\n }\n};\n\n/** 内置成员 */\n\nwindow.layer = layer;\n\n// 获取子 iframe 的 DOM\nlayer.getChildFrame = function(selector, index){\n index = index || $('.'+doms[4]).attr('times');\n return $('#'+ doms[0] + index).find('iframe').contents().find(selector); \n};\n\n// 得到当前 iframe 层的索引,子 iframe 时使用\nlayer.getFrameIndex = function(name){\n return $('#'+ name).parents('.'+doms[4]).attr('times');\n};\n\n// iframe 层自适应宽高\nlayer.iframeAuto = function(index){\n if(!index) return;\n var heg = layer.getChildFrame('html', index).outerHeight();\n var layero = $('#'+ doms[0] + index);\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\n layero.css({height: heg + titHeight + btnHeight});\n layero.find('iframe').css({height: heg});\n};\n\n// 重置 iframe url\nlayer.iframeSrc = function(index, url){\n $('#'+ doms[0] + index).find('iframe').attr('src', url);\n};\n\n// 设定层的样式\nlayer.style = function(index, options, limit){\n var layero = $('#'+ doms[0] + index);\n var contElem = layero.find('.layui-layer-content');\n var type = layero.attr('type');\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\n var minLeft = layero.attr('minLeft');\n \n // loading 和 tips 层不允许更改\n if(type === ready.type[3] || type === ready.type[4]){\n return;\n }\n \n if(!limit){\n if(parseFloat(options.width) <= 260){\n options.width = 260;\n }\n \n if(parseFloat(options.height) - titHeight - btnHeight <= 64){\n options.height = 64 + titHeight + btnHeight;\n }\n }\n layero.css(options);\n btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\n \n if(type === ready.type[2]){\n layero.find('iframe').css({\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\n });\n } else {\n contElem.css({\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\n - parseFloat(contElem.css('padding-top'))\n - parseFloat(contElem.css('padding-bottom'))\n })\n }\n};\n\n// 最小化\nlayer.min = function(index, options){\n var layero = $('#'+ doms[0] + index);\n var maxminStatus = layero.data('maxminStatus');\n\n if(maxminStatus === 'min') return; // 当前的状态是否已经是最小化\n if(maxminStatus === 'max') layer.restore(index); // 若当前为最大化,则先还原后再最小化\n\n layero.data('maxminStatus', 'min');\n options = options || layero.data('config') || {};\n\n var shadeo = $('#'+ doms.SHADE + index);\n var elemMin = layero.find('.layui-layer-min');\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\n var minLeft = layero.attr('minLeft'); // 最小化时的横坐标\n var hasMinLeft = typeof minLeft === 'string'; // 是否已经赋值过最小化坐标\n var left = hasMinLeft ? minLeft : (181*ready.minStackIndex)+'px';\n var position = layero.css('position');\n var minWidth = 180; // 最小化时的宽度\n var settings = {\n width: minWidth\n ,height: titHeight\n ,position: 'fixed'\n ,overflow: 'hidden'\n };\n\n ready.record(layero); // 记录当前尺寸、坐标,用于还原\n\n // 简易最小化补位\n if(ready.minStackArr.length > 0){\n left = ready.minStackArr[0];\n ready.minStackArr.shift();\n }\n\n // left 是否超出边界\n if(parseFloat(left) + minWidth > win.width()){\n left = win.width() - minWidth - function(){\n ready.minStackArr.edgeIndex = ready.minStackArr.edgeIndex || 0;\n return ready.minStackArr.edgeIndex += 3;\n }();\n if(left < 0) left = 0;\n }\n \n // 是否堆叠在左下角\n if(options.minStack){\n settings.left = left;\n settings.top = win.height() - titHeight;\n hasMinLeft || ready.minStackIndex++; // 若未赋值过最小化坐标,则最小化操作索引自增\n layero.attr('minLeft', left);\n }\n \n layero.attr('position', position);\n layer.style(index, settings, true);\n\n elemMin.hide();\n layero.attr('type') === 'page' && layero.find(doms[4]).hide();\n ready.restScrollbar(index);\n\n // 隐藏遮罩\n shadeo.hide();\n};\n\n// 还原\nlayer.restore = function(index){\n var layero = $('#'+ doms[0] + index);\n var shadeo = $('#'+ doms.SHADE + index);\n var area = layero.attr('area').split(',');\n var type = layero.attr('type');\n var options = layero.data('config') || {};\n\n layero.removeData('maxminStatus'); // 移除最大最小状态\n \n // 恢复原来尺寸\n layer.style(index, {\n width: area[0], // 数值或百分比\n height: area[1],\n top: parseFloat(area[2]),\n left: parseFloat(area[3]),\n position: layero.attr('position'),\n overflow: 'visible'\n }, true);\n \n layero.find('.layui-layer-max').removeClass('layui-layer-maxmin');\n layero.find('.layui-layer-min').show();\n type === 'page' && layero.find(doms[4]).show();\n\n // 恢复页面滚动条弹层打开时的状态\n options.scrollbar ? ready.restScrollbar(index) : ready.setScrollbar(index);\n \n // 恢复遮罩\n shadeo.show();\n // ready.events.resize[index](); // ?\n};\n\n// 全屏(最大化)\nlayer.full = function(index){\n var layero = $('#'+ doms[0] + index);\n var maxminStatus = layero.data('maxminStatus');\n\n if(maxminStatus === 'max') return // 检查当前的状态是否已经是最大化\n if(maxminStatus === 'min') layer.restore(index); // 若当前为最小化,则先还原后再最大化\n\n layero.data('maxminStatus', 'max');\n ready.record(layero); // 记录当前尺寸、坐标\n\n if(!doms.html.attr('layer-full')){\n ready.setScrollbar(index);\n }\n\n setTimeout(function(){\n var isfix = layero.css('position') === 'fixed';\n layer.style(index, {\n top: isfix ? 0 : win.scrollTop(),\n left: isfix ? 0 : win.scrollLeft(),\n width: '100%',\n height: '100%'\n }, true);\n layero.find('.layui-layer-min').hide();\n }, 100);\n};\n\n// 改变 title\nlayer.title = function(name, index){\n var title = $('#'+ doms[0] + (index || layer.index)).find(doms[1]);\n title.html(name);\n};\n\n// 关闭 layer 总方法\nlayer.close = function(index, callback){\n var layero = function(){\n var closest = $('.'+ doms[0]).children('#'+ index).closest('.'+ doms[0]);\n return closest[0] ? (\n index = closest.attr('times'),\n closest\n ) : $('#'+ doms[0] + index)\n }();\n var type = layero.attr('type');\n var options = layero.data('config') || {};\n var hideOnClose = options.id && options.hideOnClose; // 是否关闭时移除弹层容器\n\n if(!layero[0]) return;\n\n // 关闭动画\n var closeAnim = ({\n slideDown: 'layer-anim-slide-down-out',\n slideLeft: 'layer-anim-slide-left-out',\n slideUp: 'layer-anim-slide-up-out',\n slideRight: 'layer-anim-slide-right-out'\n })[options.anim] || 'layer-anim-close';\n\n // 移除主容器\n var remove = function(){\n var WRAP = 'layui-layer-wrap';\n\n // 是否关闭时隐藏弹层容器\n if(hideOnClose){\n layero.removeClass('layer-anim '+ closeAnim);\n return layero.hide();\n }\n\n // 是否为页面捕获层\n if(type === ready.type[1] && layero.attr('conType') === 'object'){\n layero.children(':not(.'+ doms[5] +')').remove();\n var wrap = layero.find('.'+WRAP);\n for(var i = 0; i < 2; i++){\n wrap.unwrap();\n }\n wrap.css('display', wrap.data('display')).removeClass(WRAP);\n } else {\n // 低版本 IE 回收 iframe\n if(type === ready.type[2]){\n try {\n var iframe = $('#'+ doms[4] + index)[0];\n iframe.contentWindow.document.write('');\n iframe.contentWindow.close();\n layero.find('.'+doms[5])[0].removeChild(iframe);\n } catch(e){}\n }\n layero[0].innerHTML = '';\n layero.remove();\n }\n\n typeof ready.end[index] === 'function' && ready.end[index]();\n delete ready.end[index];\n typeof callback === 'function' && callback();\n\n // 移除 reisze 事件\n if(ready.events.resize[index]){\n win.off('resize', ready.events.resize[index]);\n delete ready.events.resize[index];\n }\n };\n // 移除遮罩\n var removeShade = (function fn(){\n $('#'+ doms.SHADE + index)[\n hideOnClose ? 'hide' : 'remove'\n ]();\n })();\n \n // 是否允许关闭动画\n if(options.isOutAnim){\n layero.addClass('layer-anim '+ closeAnim);\n }\n \n layer.ie == 6 && ready.reselect();\n ready.restScrollbar(index); \n \n // 记住被关闭层的最小化堆叠坐标\n if(typeof layero.attr('minLeft') === 'string'){\n ready.minStackIndex--;\n ready.minStackArr.push(layero.attr('minLeft'));\n }\n \n if((layer.ie && layer.ie < 10) || !options.isOutAnim){\n remove()\n } else {\n setTimeout(function(){\n remove();\n }, 200);\n }\n};\n\n// 关闭所有层\nlayer.closeAll = function(type, callback){\n if(typeof type === 'function'){\n callback = type;\n type = null;\n }\n var domsElem = $('.'+doms[0]);\n $.each(domsElem, function(_index){\n var othis = $(this);\n var is = type ? (othis.attr('type') === type) : 1;\n is && layer.close(othis.attr('times'), _index === domsElem.length - 1 ? callback : null);\n is = null;\n });\n if(domsElem.length === 0) typeof callback === 'function' && callback();\n};\n\n// 根据弹层类型关闭最近打开的层\nlayer.closeLast = function(type){\n type = type || 'page';\n layer.close($('.layui-layer-'+ type +':last').attr(\"times\"));\n};\n\n\n/*\n * 拓展模块,layui 开始合并在一起\n */\n\n\nvar cache = layer.cache || {};\nvar skin = function(type){\n return (cache.skin ? (' ' + cache.skin + ' ' + cache.skin + '-'+type) : '');\n}; \n \n// 仿系统 prompt\nlayer.prompt = function(options, yes){\n var style = '', placeholder = '';\n options = options || {};\n \n if(typeof options === 'function') yes = options;\n \n if(options.area){\n var area = options.area;\n style = 'style=\"width: '+ area[0] +'; height: '+ area[1] + ';\"';\n delete options.area;\n }\n if (options.placeholder) {\n placeholder = ' placeholder=\"' + options.placeholder + '\"';\n }\n var prompt, content = options.formType == 2 ? '' : function () {\n return '';\n }();\n \n var success = options.success;\n delete options.success;\n \n return layer.open($.extend({\n type: 1,\n btn: ['确定','取消'],\n content: content,\n skin: 'layui-layer-prompt' + skin('prompt'),\n maxWidth: win.width(),\n success: function(layero){\n prompt = layero.find('.layui-layer-input');\n prompt.val(options.value || '').focus();\n typeof success === 'function' && success(layero);\n },\n resize: false,\n yes: function(index){\n var value = prompt.val();\n if(value.length > (options.maxlength||500)) {\n layer.tips('最多输入'+ (options.maxlength || 500) +'个字数', prompt, {tips: 1});\n } else {\n yes && yes(value, index, prompt);\n }\n }\n }, options));\n};\n\n// tab 层\nlayer.tab = function(options){\n options = options || {};\n \n var tab = options.tab || {};\n var THIS = 'layui-this';\n var success = options.success;\n \n delete options.success;\n \n return layer.open($.extend({\n type: 1,\n skin: 'layui-layer-tab' + skin('tab'),\n resize: false,\n title: function(){\n var len = tab.length, ii = 1, str = '';\n if(len > 0){\n str = ''+ tab[0].title +'';\n for(; ii < len; ii++){\n str += ''+ tab[ii].title +'';\n }\n }\n return str;\n }(),\n content: '
              '+ function(){\n var len = tab.length, ii = 1, str = '';\n if(len > 0){\n str = '
            • '+ (tab[0].content || 'no content') +'
            • ';\n for(; ii < len; ii++){\n str += '
            • '+ (tab[ii].content || 'no content') +'
            • ';\n }\n }\n return str;\n }() +'
            ',\n success: function(layero){\n var btn = layero.find('.layui-layer-title').children();\n var main = layero.find('.layui-layer-tabmain').children();\n btn.on('mousedown', function(e){\n e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;\n var othis = $(this), index = othis.index();\n othis.addClass(THIS).siblings().removeClass(THIS);\n main.eq(index).show().siblings().hide();\n typeof options.change === 'function' && options.change(index);\n });\n typeof success === 'function' && success(layero);\n }\n }, options));\n};\n\n// 图片层\nlayer.photos = function(options, loop, key){\n var dict = {};\n\n // 默认属性\n options = $.extend(true, {\n toolbar: true,\n footer: true\n }, options);\n\n if(!options.photos) return;\n \n // 若 photos 并非选择器或 jQuery 对象,则为普通 object\n var isObject = !(typeof options.photos === 'string' || options.photos instanceof $);\n var photos = isObject ? options.photos : {};\n var data = photos.data || [];\n var start = photos.start || 0;\n var success = options.success;\n \n dict.imgIndex = (start|0) + 1;\n options.img = options.img || 'img';\n delete options.success;\n \n // 若 options.photos 不是一个对象\n if(!isObject){ // 页面直接获取\n var parent = $(options.photos), pushData = function(){\n data = [];\n parent.find(options.img).each(function(index){\n var othis = $(this);\n othis.attr('layer-index', index);\n data.push({\n alt: othis.attr('alt'),\n pid: othis.attr('layer-pid'),\n src: othis.attr('lay-src') || othis.attr('layer-src') || othis.attr('src'),\n thumb: othis.attr('src')\n });\n });\n };\n \n pushData();\n \n if (data.length === 0) return;\n \n loop || parent.on('click', options.img, function(){\n pushData();\n var othis = $(this), index = othis.attr('layer-index'); \n layer.photos($.extend(options, {\n photos: {\n start: index,\n data: data,\n tab: options.tab\n },\n full: options.full\n }), true);\n });\n \n // 不直接弹出\n if (!loop) return;\n } else if (data.length === 0){\n return layer.msg('没有图片');\n }\n \n // 上一张\n dict.imgprev = function(key){\n dict.imgIndex--;\n if(dict.imgIndex < 1){\n dict.imgIndex = data.length;\n }\n dict.tabimg(key);\n };\n \n // 下一张\n dict.imgnext = function(key,errorMsg){\n dict.imgIndex++;\n if(dict.imgIndex > data.length){\n dict.imgIndex = 1;\n if (errorMsg) {return}\n }\n dict.tabimg(key)\n };\n \n // 方向键\n dict.keyup = function(event){\n if(!dict.end){\n var code = event.keyCode;\n event.preventDefault();\n if(code === 37){\n dict.imgprev(true);\n } else if(code === 39) {\n dict.imgnext(true);\n } else if(code === 27) {\n layer.close(dict.index);\n }\n }\n }\n \n // 切换\n dict.tabimg = function(key){\n if(data.length <= 1) return;\n photos.start = dict.imgIndex - 1;\n layer.close(dict.index);\n return layer.photos(options, true, key);\n }\n\n dict.isNumber = function (n) {\n return typeof n === 'number' && !isNaN(n);\n }\n\n dict.image = {};\n\n dict.getTransform = function(opts){\n var transforms = [];\n var rotate = opts.rotate;\n var scaleX = opts.scaleX;\n var scale = opts.scale;\n\n if (dict.isNumber(rotate) && rotate !== 0) {\n transforms.push('rotate(' + rotate + 'deg)');\n }\n\n if (dict.isNumber(scaleX) && scaleX !== 1) {\n transforms.push('scaleX(' + scaleX + ')');\n }\n\n if (dict.isNumber(scale)) {\n transforms.push('scale(' + scale + ')');\n }\n\n return transforms.length ? transforms.join(' ') : 'none';\n }\n \n // 一些动作\n dict.event = function(layero, index, that){\n // 上一张\n dict.main.find('.layui-layer-photos-prev').on('click', function(event){\n event.preventDefault();\n dict.imgprev(true);\n }); \n \n // 下一张\n dict.main.find('.layui-layer-photos-next').on('click', function(event){\n event.preventDefault();\n dict.imgnext(true);\n });\n \n $(document).on('keyup', dict.keyup);\n\n // 头部工具栏事件\n layero.off('click').on('click','*[toolbar-event]', function () {\n var othis = $(this);\n var event = othis.attr('toolbar-event');\n switch (event) {\n case 'rotate':\n dict.image.rotate = ((dict.image.rotate || 0) + Number(othis.attr('data-option'))) % 360;\n dict.imgElem.css({\n transform: dict.getTransform(dict.image)\n });\n break;\n case 'scalex':\n dict.image.scaleX = dict.image.scaleX === -1 ? 1 : -1;\n dict.imgElem.css({\n transform: dict.getTransform(dict.image)\n });\n break;\n case 'zoom':\n var ratio = Number(othis.attr('data-option'));\n dict.image.scale = (dict.image.scale || 1) + ratio;\n // 缩小状态最小值\n if (ratio < 0 && dict.image.scale < 0 - ratio) {\n dict.image.scale = 0 - ratio;\n }\n dict.imgElem.css({\n transform: dict.getTransform(dict.image)\n });\n break;\n case 'reset':\n dict.image.scaleX = 1;\n dict.image.scale = 1;\n dict.image.rotate = 0;\n dict.imgElem.css({\n transform: 'none'\n });\n break;\n case 'close':\n layer.close(index);\n break;\n }\n that.offset();\n that.auto(index);\n });\n \n // 鼠标滚轮缩放图片事件\n dict.main.on('mousewheel DOMMouseScroll', function(e) {\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail;\n var zoomElem = dict.main.find('[toolbar-event=\"zoom\"]');\n if (delta > 0) {\n zoomElem.eq(0).trigger('click');\n } else {\n zoomElem.eq(1).trigger('click');\n }\n });\n\n };\n \n // 图片预加载\n function loadImage(url, callback, error) { \n var img = new Image();\n img.src = url; \n if(img.complete){\n return callback(img);\n }\n img.onload = function(){\n img.onload = null;\n callback(img);\n };\n img.onerror = function(e){\n img.onerror = null;\n error(e);\n }; \n }\n \n dict.loadi = layer.load(1, {\n shade: 'shade' in options ? false : 0.9,\n scrollbar: false\n });\n\n loadImage(data[start].src, function(img){\n layer.close(dict.loadi);\n \n var alt = data[start].alt || '';\n\n // 切换图片时不出现动画\n if(key) options.anim = -1;\n \n // 弹出图片层\n dict.index = layer.open($.extend({\n type: 1,\n id: 'layui-layer-photos',\n area: function(){\n var imgarea = [img.width, img.height];\n var winarea = [$(window).width() - 100, $(window).height() - 100];\n \n // 若实际图片的宽或者高比 屏幕大(那么进行缩放)\n if(!options.full && (imgarea[0]>winarea[0]||imgarea[1]>winarea[1])){\n var wh = [imgarea[0]/winarea[0],imgarea[1]/winarea[1]];// 取宽度缩放比例、高度缩放比例\n if(wh[0] > wh[1]){// 取缩放比例最大的进行缩放\n imgarea[0] = imgarea[0]/wh[0];\n imgarea[1] = imgarea[1]/wh[0];\n } else if(wh[0] < wh[1]){\n imgarea[0] = imgarea[0]/wh[1];\n imgarea[1] = imgarea[1]/wh[1];\n }\n }\n\n return [imgarea[0]+'px', imgarea[1]+'px']; \n }(),\n title: false,\n shade: 0.9,\n shadeClose: true,\n closeBtn: false,\n move: '.layer-layer-photos-main img',\n moveType: 1,\n scrollbar: false,\n moveOut: true,\n anim: 5,\n isOutAnim: false,\n skin: 'layui-layer-photos' + skin('photos'),\n content: '
            '\n + '\"'+'\n + function(){\n var arr = ['
            '];\n\n // 左右箭头翻页\n if (data.length > 1) {\n arr.push(['
            ',\n '',\n '',\n '
            '].join(''));\n }\n\n // 头部工具栏\n if (options.toolbar) {\n arr.push([\n '
            ',\n '',\n '',\n '',\n '',\n '',\n '',\n '
            '\n ].join(''));\n }\n\n // 底部栏\n if (options.footer) {\n arr.push(['
            ',\n '

            '+ alt +'

            ',\n ''+ dict.imgIndex +' / '+ data.length +'',\n '查看原图',\n '
            '].join(''));\n }\n\n arr.push('
            ');\n return arr.join('');\n }()\n +'
            ',\n success: function(layero, index, that){\n dict.main = layero.find('.layer-layer-photos-main');\n dict.footer = layero.find('.layui-layer-photos-footer');\n dict.imgElem = dict.main.children('img');\n dict.event(layero, index, that);\n options.tab && options.tab(data[start], layero);\n typeof success === 'function' && success(layero);\n }, end: function(){\n dict.end = true;\n $(document).off('keyup', dict.keyup);\n }\n }, options));\n }, function(){\n layer.close(dict.loadi);\n layer.msg('当前图片地址异常
            是否继续查看下一张?', {\n time: 30000, \n btn: ['下一张', '不看了'], \n yes: function(){\n data.length > 1 && dict.imgnext(true,true);\n }\n });\n });\n};\n\n// 主入口\nready.run = function(_$){\n $ = _$;\n win = $(window);\n \n // 移动端兼容性处理\n // https://gitee.com/layui/layui/issues/I81WGC\n // https://github.com/jquery/jquery/issues/1729\n var agent = navigator.userAgent.toLowerCase();\n var isMobile = /android|iphone|ipod|ipad|ios/.test(agent)\n var _win = $(window);\n if(isMobile){\n $.each({Height: \"height\", Width: \"width\"}, function(propSuffix, funcName){\n var propName = 'inner' + propSuffix;\n win[funcName] = function(){\n return propName in window \n ? window[propName]\n : _win[funcName]()\n }\n })\n }\n doms.html = $('html');\n layer.open = function(deliver){\n var o = new Class(deliver);\n return o.index;\n };\n};\n\n// 加载方式\nwindow.layui && layui.define ? (\n layer.ready(),\n layui.define('jquery', function(exports){ // layui\n layer.path = layui.cache.dir;\n ready.run(layui.$);\n\n // export api\n window.layer = layer;\n exports('layer', layer);\n })\n) : (\n (typeof define === 'function' && define.amd) ? define(['jquery'], function(){ // requirejs\n ready.run(window.jQuery);\n return layer;\n }) : function(){ // 普通 script 标签引入\n layer.ready();\n ready.run(window.jQuery);\n }()\n);\n\n}(window);\n","/**\r\n * util 工具组件\r\n */\r\n\r\nlayui.define('jquery', function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var hint = layui.hint();\r\n\r\n // 外部接口\r\n var util = {\r\n // 固定块\r\n fixbar: function(options){\r\n var ELEM = 'layui-fixbar';\r\n var $doc = $(document);\r\n\r\n // 默认可选项\r\n options = $.extend(true, {\r\n target: 'body', // fixbar 的插入目标选择器\r\n bars: [], // bar 信息\r\n \"default\": true, // 是否显示默认 bar\r\n margin: 160, // 出现 top bar 的滚动条高度临界值\r\n duration: 320 // top bar 等动画时长(毫秒)\r\n }, options);\r\n\r\n // 目标元素对象\r\n var $target = $(options.target);\r\n\r\n // 滚动条所在元素对象\r\n var $scroll = options.scroll\r\n ? $(options.scroll)\r\n : $(options.target === 'body' ? $doc : $target)\r\n\r\n // 是否提供默认图标\r\n if(options['default']){\r\n // 兼容旧版本的一些属性\r\n if(options.bar1){\r\n options.bars.push({\r\n type: 'bar1',\r\n icon: 'layui-icon-chat'\r\n });\r\n }\r\n if(options.bar2){\r\n options.bars.push({\r\n type: 'bar2',\r\n icon: 'layui-icon-help'\r\n });\r\n }\r\n // 默认 top bar\r\n options.bars.push({\r\n type: 'top',\r\n icon: 'layui-icon-top'\r\n });\r\n }\r\n\r\n var elem = $('
              ').addClass(ELEM);\r\n var elemTopBar;\r\n\r\n // 遍历生成 bars 节点\r\n layui.each(options.bars, function(i, item){\r\n var elemBar = $('
            • ');\r\n\r\n // 设置 bar 相关属性\r\n elemBar.addClass(item.icon).attr({\r\n 'lay-type': item.type,\r\n 'style': item.style || (options.bgcolor ? 'background-color: '+ options.bgcolor : '')\r\n }).html(item.content);\r\n\r\n // bar 点击事件\r\n elemBar.on('click', function(){\r\n var type = $(this).attr('lay-type');\r\n if(type === 'top'){\r\n (\r\n options.target === 'body'\r\n ? $('html,body')\r\n : $scroll\r\n ).animate({\r\n scrollTop : 0\r\n }, options.duration);\r\n }\r\n typeof options.click === 'function' && options.click.call(this, type);\r\n });\r\n\r\n // 自定义任意事件\r\n if(layui.type(options.on) === 'object'){\r\n layui.each(options.on, function(eventName, callback){\r\n elemBar.on(eventName, function(){\r\n var type = $(this).attr('lay-type');\r\n typeof callback === 'function' && callback.call(this, type);\r\n });\r\n })\r\n }\r\n\r\n // 获得 top bar 节点\r\n if(item.type === 'top'){\r\n elemBar.addClass('layui-fixbar-top');\r\n elemTopBar = elemBar;\r\n }\r\n\r\n elem.append(elemBar); // 插入 bar 节点\r\n });\r\n\r\n // 若目标元素已存在 fixbar,则移除旧的节点\r\n $target.find('.'+ ELEM).remove();\r\n\r\n // 向目标元素插入 fixbar 节点\r\n typeof options.css === 'object' && elem.css(options.css);\r\n $target.append(elem);\r\n\r\n // top bar 的显示隐藏\r\n if(elemTopBar){\r\n var lock;\r\n var setTopBar = (function setTopBar(){\r\n var top = $scroll.scrollTop();\r\n if(top >= options.margin){\r\n lock || (elemTopBar.show(), lock = 1);\r\n } else {\r\n lock && (elemTopBar.hide(), lock = 0);\r\n }\r\n return setTopBar;\r\n })();\r\n }\r\n\r\n // 根据 scrollbar 设置 fixbar 相关状态\r\n var timer;\r\n $scroll.on('scroll', function(){\r\n if(!setTopBar) return;\r\n clearTimeout(timer);\r\n timer = setTimeout(function(){\r\n setTopBar();\r\n }, 100);\r\n });\r\n },\r\n\r\n // 倒计时\r\n countdown: function(options){\r\n var that = this;\r\n\r\n // 默认可选项\r\n options = $.extend(true, {\r\n date: new Date(),\r\n now: new Date()\r\n }, options);\r\n\r\n // 兼容旧版参数\r\n var args = arguments;\r\n if(args.length > 1){\r\n options.date = new Date(args[0]);\r\n options.now = new Date(args[1]);\r\n options.clock = args[2];\r\n }\r\n\r\n // 实例对象\r\n var inst = {\r\n options: options,\r\n clear: function(){ // 清除计时器\r\n clearTimeout(inst.timer);\r\n },\r\n reload: function(opts){ // 重置倒计时\r\n this.clear();\r\n $.extend(true, this.options, {\r\n now: new Date()\r\n }, opts);\r\n count();\r\n }\r\n };\r\n\r\n typeof options.ready === 'function' && options.ready();\r\n\r\n // 计算倒计时\r\n var count = (function fn(){\r\n var date = new Date(options.date);\r\n var now = new Date(options.now);\r\n var countTime = function(time){\r\n return time > 0 ? time : 0;\r\n }(date.getTime() - now.getTime());\r\n var result = {\r\n d: Math.floor(countTime/(1000*60*60*24)), // 天\r\n h: Math.floor(countTime/(1000*60*60)) % 24, // 时\r\n m: Math.floor(countTime/(1000*60)) % 60, // 分\r\n s: Math.floor(countTime/1000) % 60 // 秒\r\n };\r\n var next = function(){\r\n now.setTime(now.getTime() + 1000);\r\n options.now = now;\r\n count();\r\n };\r\n\r\n // 兼容旧版返回值\r\n if(args.length > 1) result = [result.d,result.h,result.m,result.s]\r\n\r\n // 计时 - 以秒间隔\r\n inst.timer = setTimeout(next, 1000);\r\n typeof options.clock === 'function' && options.clock(result, inst);\r\n\r\n // 计时完成\r\n if(countTime <= 0){\r\n clearTimeout(inst.timer);\r\n typeof options.done === 'function' && options.done(result, inst);\r\n }\r\n\r\n return fn;\r\n })();\r\n\r\n return inst;\r\n },\r\n\r\n // 某个时间在当前时间的多久前\r\n timeAgo: function(time, onlyDate){\r\n var that = this;\r\n var arr = [[], []];\r\n var stamp = new Date().getTime() - new Date(time).getTime();\r\n\r\n // 返回具体日期\r\n if(stamp > 1000*60*60*24*31){\r\n stamp = new Date(time);\r\n arr[0][0] = that.digit(stamp.getFullYear(), 4);\r\n arr[0][1] = that.digit(stamp.getMonth() + 1);\r\n arr[0][2] = that.digit(stamp.getDate());\r\n\r\n // 是否输出时间\r\n if(!onlyDate){\r\n arr[1][0] = that.digit(stamp.getHours());\r\n arr[1][1] = that.digit(stamp.getMinutes());\r\n arr[1][2] = that.digit(stamp.getSeconds());\r\n }\r\n return arr[0].join('-') + ' ' + arr[1].join(':');\r\n }\r\n\r\n // 30 天以内,返回「多久前」\r\n if(stamp >= 1000*60*60*24){\r\n return ((stamp/1000/60/60/24)|0) + ' 天前';\r\n } else if(stamp >= 1000*60*60){\r\n return ((stamp/1000/60/60)|0) + ' 小时前';\r\n } else if(stamp >= 1000*60*3){ // 3 分钟以内为:刚刚\r\n return ((stamp/1000/60)|0) + ' 分钟前';\r\n } else if(stamp < 0){\r\n return '未来';\r\n } else {\r\n return '刚刚';\r\n }\r\n },\r\n\r\n // 数字前置补零\r\n digit: function(num, length){\r\n var str = '';\r\n num = String(num);\r\n length = length || 2;\r\n for(var i = num.length; i < length; i++){\r\n str += '0';\r\n }\r\n return num < Math.pow(10, length) ? str + (num|0) : num;\r\n },\r\n\r\n // 转化为日期格式字符\r\n toDateString: function(time, format, options){\r\n // 若 null 或空字符,则返回空字符\r\n if(time === null || time === '') return '';\r\n\r\n // 引用自 dayjs\r\n // https://github.com/iamkun/dayjs/blob/v1.11.9/src/constant.js#L30\r\n var REGEX_FORMAT = /\\[([^\\]]+)]|y{1,4}|M{1,2}|d{1,2}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|SSS/g;\r\n var that = this;\r\n var date = new Date(function(){\r\n if(!time) return;\r\n return isNaN(time) ? time : (typeof time === 'string' ? parseInt(time) : time)\r\n }() || new Date())\r\n\r\n if(!date.getDate()) return hint.error('Invalid millisecond for \"util.toDateString(millisecond)\"'), '';\r\n\r\n var years = date.getFullYear();\r\n var month = date.getMonth();\r\n var days = date.getDate();\r\n var hours = date.getHours();\r\n var minutes = date.getMinutes();\r\n var seconds = date.getSeconds();\r\n var milliseconds = date.getMilliseconds();\r\n\r\n var defaultMeridiem = function(hours, minutes){\r\n var hm = hours * 100 + minutes;\r\n if (hm < 600) {\r\n return '凌晨';\r\n } else if (hm < 900) {\r\n return '早上';\r\n } else if (hm < 1100) {\r\n return '上午';\r\n } else if (hm < 1300) {\r\n return '中午';\r\n } else if (hm < 1800) {\r\n return '下午';\r\n }\r\n return '晚上';\r\n };\r\n\r\n var meridiem = (options && options.customMeridiem) || defaultMeridiem;\r\n\r\n var matches = {\r\n yy: function(){return String(years).slice(-2);},\r\n yyyy: function(){return that.digit(years, 4);},\r\n M: function(){return String(month + 1);},\r\n MM: function(){return that.digit(month + 1);},\r\n d: function(){return String(days);},\r\n dd: function(){return that.digit(days);},\r\n H: function(){return String(hours);},\r\n HH: function(){return that.digit(hours);},\r\n h: function(){return String(hours % 12 || 12);},\r\n hh: function(){return that.digit(hours % 12 || 12);},\r\n A: function(){return meridiem(hours, minutes);},\r\n m: function(){return String(minutes);},\r\n mm: function(){return that.digit(minutes);},\r\n s: function(){return String(seconds);},\r\n ss: function(){return that.digit(seconds);},\r\n SSS: function(){return that.digit(milliseconds, 3);}\r\n }\r\n\r\n format = format || 'yyyy-MM-dd HH:mm:ss';\r\n\r\n return format.replace(REGEX_FORMAT, function(match, $1) {\r\n return $1 || (matches[match] && matches[match]()) || match;\r\n });\r\n },\r\n\r\n // 转义 html\r\n escape: function(html){\r\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\r\n if(html === undefined || html === null) return '';\r\n\r\n html += '';\r\n if(!exp.test(html)) return html;\r\n\r\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\r\n .replace(//g, '>')\r\n .replace(/'/g, ''').replace(/\"/g, '"');\r\n },\r\n\r\n // 还原转义的 html\r\n unescape: function(html){\r\n if(html === undefined || html === null) html = '';\r\n html += '';\r\n\r\n return html.replace(/\\&/g, '&')\r\n .replace(/\\</g, '<').replace(/\\>/g, '>')\r\n .replace(/\\'/g, '\\'').replace(/\\"/g, '\"');\r\n },\r\n\r\n // 打开新窗口\r\n openWin: function(options){\r\n var win;\r\n options = options || {};\r\n win = options.window || window.open((options.url || ''), options.target, options.specs);\r\n if(options.url) return;\r\n win.document.open('text/html', 'replace');\r\n win.document.write(options.content || '');\r\n win.document.close();\r\n },\r\n\r\n // 让指定的元素保持在可视区域\r\n toVisibleArea: function(options){\r\n options = $.extend({\r\n margin: 160, // 触发动作的边界值\r\n duration: 200, // 动画持续毫秒数\r\n type: 'y' // 触发方向,x 水平、y 垂直\r\n }, options);\r\n\r\n if(!options.scrollElem[0] || !options.thisElem[0]) return;\r\n\r\n var scrollElem = options.scrollElem // 滚动元素\r\n var thisElem = options.thisElem // 目标元素\r\n var vertical = options.type === 'y' // 是否垂直方向\r\n var SCROLL_NAME = vertical ? 'scrollTop' : 'scrollLeft' // 滚动方法\r\n var OFFSET_NAME = vertical ? 'top' : 'left' // 坐标方式\r\n var scrollValue = scrollElem[SCROLL_NAME]() // 当前滚动距离\r\n var size = scrollElem[vertical ? 'height' : 'width']() // 滚动元素的尺寸\r\n var scrollOffset = scrollElem.offset()[OFFSET_NAME] // 滚动元素所处位置\r\n var thisOffset = thisElem.offset()[OFFSET_NAME] - scrollOffset // 目标元素当前的所在位置\r\n var obj = {};\r\n\r\n // 边界满足条件\r\n if(thisOffset > size - options.margin || thisOffset < options.margin){\r\n obj[SCROLL_NAME] = thisOffset - size/2 + scrollValue\r\n scrollElem.animate(obj, options.duration);\r\n }\r\n },\r\n\r\n // 批量事件\r\n event: function(attr, obj, eventType){\r\n var _body = $('body');\r\n eventType = eventType || 'click';\r\n\r\n // 记录事件回调集合\r\n obj = util.event[attr] = $.extend(true, util.event[attr], obj) || {};\r\n\r\n // 清除委托事件\r\n util.event.UTIL_EVENT_CALLBACK = util.event.UTIL_EVENT_CALLBACK || {};\r\n _body.off(eventType, '*['+ attr +']', util.event.UTIL_EVENT_CALLBACK[attr])\r\n\r\n // 绑定委托事件\r\n util.event.UTIL_EVENT_CALLBACK[attr] = function(){\r\n var othis = $(this);\r\n var key = othis.attr(attr);\r\n (typeof obj[key] === 'function') && obj[key].call(this, othis);\r\n };\r\n\r\n // 清除旧事件,绑定新事件\r\n _body.on(eventType, '*['+ attr +']', util.event.UTIL_EVENT_CALLBACK[attr]);\r\n\r\n return obj;\r\n }\r\n };\r\n\r\n util.on = util.event;\r\n\r\n // 输出接口\r\n exports('util', util);\r\n});\r\n","/**\r\n * dropdown \r\n * 下拉菜单组件\r\n */\r\n\r\nlayui.define(['jquery', 'laytpl', 'lay', 'util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var laytpl = layui.laytpl;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n var clickOrMousedown = (device.mobile ? 'touchstart' : 'mousedown');\r\n \r\n // 模块名\r\n var MOD_NAME = 'dropdown';\r\n var MOD_INDEX = 'layui_'+ MOD_NAME +'_index'; // 模块索引名\r\n\r\n // 外部接口\r\n var dropdown = {\r\n config: {\r\n customName: { // 自定义 data 字段名\r\n id: 'id',\r\n title: 'title',\r\n children: 'child'\r\n }\r\n },\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n reloadData: function(options){\r\n dropdown.reloadData(id, options);\r\n },\r\n close: function () {\r\n that.remove()\r\n }\r\n }\r\n };\r\n\r\n // 字符常量\r\n var STR_ELEM = 'layui-dropdown';\r\n var STR_HIDE = 'layui-hide';\r\n var STR_DISABLED = 'layui-disabled';\r\n var STR_NONE = 'layui-none';\r\n var STR_ITEM_UP = 'layui-menu-item-up';\r\n var STR_ITEM_DOWN = 'layui-menu-item-down';\r\n var STR_MENU_TITLE = 'layui-menu-body-title';\r\n var STR_ITEM_GROUP = 'layui-menu-item-group';\r\n var STR_ITEM_PARENT = 'layui-menu-item-parent';\r\n var STR_ITEM_DIV = 'layui-menu-item-divider';\r\n var STR_ITEM_CHECKED = 'layui-menu-item-checked';\r\n var STR_ITEM_CHECKED2 = 'layui-menu-item-checked2';\r\n var STR_MENU_PANEL = 'layui-menu-body-panel';\r\n var STR_MENU_PANEL_L = 'layui-menu-body-panel-left';\r\n var STR_ELEM_SHADE = 'layui-dropdown-shade';\r\n \r\n var STR_GROUP_TITLE = '.'+ STR_ITEM_GROUP + '>.'+ STR_MENU_TITLE;\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++dropdown.index;\r\n that.config = $.extend({}, that.config, dropdown.config, options);\r\n that.init();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n trigger: 'click', // 事件类型\r\n content: '', // 自定义菜单内容\r\n className: '', // 自定义样式类名\r\n style: '', // 设置面板 style 属性\r\n show: false, // 是否初始即显示菜单面板\r\n isAllowSpread: true, // 是否允许菜单组展开收缩\r\n isSpreadItem: true, // 是否初始展开子菜单\r\n data: [], // 菜单数据结构\r\n delay: 300, // 延迟关闭的毫秒数,若 trigger 为 hover 时才生效\r\n shade: 0, // 遮罩\r\n accordion: false // 手风琴效果,仅菜单组生效。基础菜单需要在容器上追加 'lay-accordion' 属性。\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options, type){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.init(true, type);\r\n };\r\n\r\n // 初始化准备\r\n Class.prototype.init = function(rerender, type){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n dropdown.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if(!rerender && elem[0] && elem.data(MOD_INDEX)){\r\n var newThat = thisModule.getThis(elem.data(MOD_INDEX));\r\n if(!newThat) return;\r\n\r\n return newThat.reload(options, type);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n \r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, dropdown.config.customName, options.customName);\r\n\r\n if(options.show || (type === 'reloadData' && that.elemView && $('body').find(that.elemView.get(0)).length)) that.render(rerender, type); //初始即显示或者面板弹出之后执行了刷新数据\r\n that.events(); // 事件\r\n };\r\n \r\n // 渲染\r\n Class.prototype.render = function(rerender, type){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var elemBody = $('body');\r\n \r\n // 默认菜单内容\r\n var getDefaultView = function(){\r\n var elemUl = $('
                ');\r\n if(options.data.length > 0 ){\r\n eachItemView(elemUl, options.data)\r\n } else {\r\n elemUl.html('
              • No data
              • ');\r\n }\r\n return elemUl;\r\n };\r\n \r\n // 遍历菜单项\r\n var eachItemView = function(views, data){\r\n // var views = [];\r\n\r\n layui.each(data, function(index, item){\r\n // 是否存在子级\r\n var isChild = item[customName.children] && item[customName.children].length > 0;\r\n var isSpreadItem = ('isSpreadItem' in item) ? item.isSpreadItem : options.isSpreadItem\r\n var title = function(title){\r\n var templet = item.templet || options.templet;\r\n if(templet){\r\n title = typeof templet === 'function' \r\n ? templet(item)\r\n : laytpl(templet).render(item);\r\n }\r\n return title;\r\n }(util.escape(item[customName.title]));\r\n \r\n // 初始类型\r\n var type = function(){\r\n if(isChild){\r\n item.type = item.type || 'parent';\r\n }\r\n if(item.type){\r\n return ({\r\n group: 'group'\r\n ,parent: 'parent'\r\n ,'-': '-'\r\n })[item.type] || 'parent';\r\n }\r\n return '';\r\n }();\r\n\r\n if(type !== '-' && (!item[customName.title] && !item[customName.id] && !isChild)) return;\r\n \r\n //列表元素\r\n var viewLi = $([''\r\n \r\n //标题区\r\n ,function(){\r\n //是否超文本\r\n var viewText = ('href' in item) ? (\r\n ''+ title +''\r\n ) : title;\r\n \r\n //是否存在子级\r\n if(isChild){\r\n return '
                '+ viewText + function(){\r\n if(type === 'parent'){\r\n return '';\r\n } else if(type === 'group' && options.isAllowSpread){\r\n return '';\r\n } else {\r\n return '';\r\n }\r\n }() +'
                '\r\n \r\n }\r\n return '
                '+ viewText +'
                ';\r\n }()\r\n ,''].join(''));\r\n \r\n viewLi.data('item', item);\r\n \r\n //子级区\r\n if(isChild){\r\n var elemPanel = $('
                ');\r\n var elemUl = $('
                  ');\r\n\r\n if(type === 'parent'){\r\n elemPanel.append(eachItemView(elemUl, item[customName.children]));\r\n viewLi.append(elemPanel);\r\n } else {\r\n viewLi.append(eachItemView(elemUl, item[customName.children]));\r\n }\r\n }\r\n\r\n views.append(viewLi);\r\n });\r\n return views;\r\n };\r\n \r\n // 主模板\r\n var TPL_MAIN = ['
                  '\r\n ,'
                  '].join('');\r\n \r\n // 如果是右键事件,则每次触发事件时,将允许重新渲染\r\n if(options.trigger === 'contextmenu' || lay.isTopElem(options.elem[0])) rerender = true;\r\n \r\n // 判断是否已经打开了下拉菜单面板\r\n if(!rerender && options.elem.data(MOD_INDEX +'_opened')) return;\r\n\r\n // 记录模板对象\r\n that.elemView = $('.' + STR_ELEM + '[lay-id=\"' + options.id + '\"]');\r\n if (type === 'reloadData' && that.elemView.length) {\r\n that.elemView.html(options.content || getDefaultView());\r\n } else {\r\n that.elemView = $(TPL_MAIN);\r\n that.elemView.append(options.content || getDefaultView());\r\n\r\n // 初始化某些属性\r\n if(options.className) that.elemView.addClass(options.className);\r\n if(options.style) that.elemView.attr('style', options.style);\r\n\r\n // 记录当前执行的实例索引\r\n dropdown.thisId = options.id;\r\n\r\n // 插入视图\r\n that.remove(); // 移除非当前绑定元素的面板\r\n elemBody.append(that.elemView);\r\n options.elem.data(MOD_INDEX +'_opened', true);\r\n\r\n // 遮罩\r\n var shade = options.shade ? ('
                  ') : '';\r\n that.elemView.before(shade);\r\n\r\n // 如果是鼠标移入事件,则鼠标移出时自动关闭\r\n if(options.trigger === 'mouseenter'){\r\n that.elemView.on('mouseenter', function(){\r\n clearTimeout(thisModule.timer);\r\n }).on('mouseleave', function(){\r\n that.delayRemove();\r\n });\r\n }\r\n }\r\n\r\n // 坐标定位\r\n that.position();\r\n thisModule.prevElem = that.elemView; // 记录当前打开的元素,以便在下次关闭\r\n thisModule.prevElem.data('prevElem', options.elem); // 将当前绑定的元素,记录在打开元素的 data 对象中\r\n \r\n // 阻止全局事件\r\n that.elemView.find('.layui-menu').on(clickOrMousedown, function(e){\r\n layui.stope(e);\r\n });\r\n\r\n // 触发菜单列表事件\r\n that.elemView.find('.layui-menu li').on('click', function(e){\r\n var othis = $(this);\r\n var data = othis.data('item') || {};\r\n var isChild = data[customName.children] && data[customName.children].length > 0;\r\n var isClickAllScope = options.clickScope === 'all'; // 是否所有父子菜单均触发点击事件\r\n\r\n if(data.disabled) return; // 菜单项禁用状态\r\n \r\n // 普通菜单项点击后的回调及关闭面板\r\n if((!isChild || isClickAllScope) && data.type !== '-'){\r\n var ret = typeof options.click === 'function' \r\n ? options.click(data, othis) \r\n : null;\r\n \r\n ret === false || (isChild || that.remove());\r\n layui.stope(e);\r\n }\r\n });\r\n \r\n // 触发菜单组展开收缩\r\n that.elemView.find(STR_GROUP_TITLE).on('click', function(e){\r\n var othis = $(this);\r\n var elemGroup = othis.parent();\r\n var data = elemGroup.data('item') || {};\r\n \r\n if(data.type === 'group' && options.isAllowSpread){\r\n thisModule.spread(elemGroup, options.accordion);\r\n }\r\n });\r\n\r\n // 组件打开完毕的事件\r\n typeof options.ready === 'function' && options.ready(\r\n that.elemView, \r\n options.elem\r\n );\r\n };\r\n \r\n // 位置定位\r\n Class.prototype.position = function(obj){\r\n var that = this;\r\n var options = that.config;\r\n \r\n lay.position(options.elem[0], that.elemView[0], {\r\n position: options.position,\r\n e: that.e,\r\n clickType: options.trigger === 'contextmenu' ? 'right' : null,\r\n align: options.align || null\r\n });\r\n };\r\n \r\n // 删除视图\r\n Class.prototype.remove = function(){\r\n var that = this;\r\n var options = that.config;\r\n var elemPrev = thisModule.prevElem;\r\n \r\n // 若存在已打开的面板元素,则移除\r\n if(elemPrev){\r\n elemPrev.data('prevElem') && (\r\n elemPrev.data('prevElem').data(MOD_INDEX +'_opened', false)\r\n );\r\n elemPrev.remove();\r\n }\r\n lay('.' + STR_ELEM_SHADE).remove();\r\n };\r\n \r\n // 延迟删除视图\r\n Class.prototype.delayRemove = function(){\r\n var that = this;\r\n var options = that.config;\r\n clearTimeout(thisModule.timer);\r\n\r\n thisModule.timer = setTimeout(function(){\r\n that.remove();\r\n }, options.delay);\r\n };\r\n \r\n // 事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 若传入 hover,则解析为 mouseenter\r\n if(options.trigger === 'hover') options.trigger = 'mouseenter';\r\n\r\n // 解除上一个事件\r\n if(that.prevElem) that.prevElem.off(options.trigger, that.prevElemCallback);\r\n \r\n // 记录被绑定的元素及回调\r\n that.prevElem = options.elem;\r\n that.prevElemCallback = function(e){\r\n clearTimeout(thisModule.timer);\r\n that.e = e;\r\n that.render();\r\n e.preventDefault();\r\n };\r\n\r\n // 触发元素事件\r\n options.elem.on(options.trigger, that.prevElemCallback);\r\n \r\n // 如果是鼠标移入事件\r\n if(options.trigger === 'mouseenter'){\r\n // 直行鼠标移出事件\r\n options.elem.on('mouseleave', function(){\r\n that.delayRemove();\r\n });\r\n }\r\n };\r\n \r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n \r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 设置菜单组展开和收缩状态\r\n thisModule.spread = function(othis, isAccordion){\r\n var contentElem = othis.children('ul');\r\n var needSpread = othis.hasClass(STR_ITEM_UP);\r\n var ANIM_MS = 200;\r\n\r\n // 动画执行完成后的操作\r\n var complete = function() {\r\n $(this).css({'display': ''}); // 剔除临时 style,以适配外部样式的状态重置;\r\n };\r\n\r\n // 动画是否正在执行\r\n if (contentElem.is(':animated')) return;\r\n\r\n // 展开\r\n if (needSpread) {\r\n othis.removeClass(STR_ITEM_UP).addClass(STR_ITEM_DOWN);\r\n contentElem.hide().stop().slideDown(ANIM_MS, complete);\r\n } else { // 收缩\r\n contentElem.stop().slideUp(ANIM_MS, complete);\r\n othis.removeClass(STR_ITEM_DOWN).addClass(STR_ITEM_UP);\r\n }\r\n\r\n // 手风琴\r\n if (needSpread && isAccordion) {\r\n var groupSibs = othis.siblings('.' + STR_ITEM_DOWN);\r\n groupSibs.children('ul').stop().slideUp(ANIM_MS, complete);\r\n groupSibs.removeClass(STR_ITEM_DOWN).addClass(STR_ITEM_UP);\r\n }\r\n };\r\n \r\n // 全局事件\r\n (function(){\r\n var _WIN = $(window);\r\n var _DOC = $(document);\r\n \r\n // 自适应定位\r\n _WIN.on('resize', function(){\r\n if(!dropdown.thisId) return;\r\n var that = thisModule.getThis(dropdown.thisId);\r\n if(!that) return;\r\n \r\n if((that.elemView && !that.elemView[0]) || !$('.'+ STR_ELEM)[0]){\r\n return false;\r\n }\r\n \r\n var options = that.config;\r\n \r\n if(options.trigger === 'contextmenu'){\r\n that.remove();\r\n } else {\r\n that.position();\r\n }\r\n });\r\n \r\n \r\n \r\n // 点击任意处关闭\r\n _DOC.on(clickOrMousedown, function(e){\r\n if(!dropdown.thisId) return;\r\n var that = thisModule.getThis(dropdown.thisId)\r\n if(!that) return;\r\n \r\n var options = that.config;\r\n \r\n // 若触发的是绑定的元素,或者属于绑定元素的子元素,则不关闭\r\n // 满足条件:当前绑定的元素不是 body document,或者不是鼠标右键事件\r\n if(!(lay.isTopElem(options.elem[0]) || options.trigger === 'contextmenu')){\r\n if(\r\n e.target === options.elem[0] || \r\n options.elem.find(e.target)[0] ||\r\n (that.elemView && e.target === that.elemView[0]) ||\r\n (that.elemView && that.elemView.find(e.target)[0])\r\n ) return;\r\n }\r\n \r\n that.remove();\r\n });\r\n \r\n // 基础菜单的静态元素事件\r\n var ELEM_LI = '.layui-menu:not(.layui-dropdown-menu) li';\r\n _DOC.on('click', ELEM_LI, function(e){\r\n var othis = $(this);\r\n var parent = othis.parents('.layui-menu').eq(0);\r\n var isChild = othis.hasClass(STR_ITEM_GROUP) || othis.hasClass(STR_ITEM_PARENT);\r\n var filter = parent.attr('lay-filter') || parent.attr('id');\r\n var options = lay.options(this);\r\n \r\n // 非触发元素\r\n if(othis.hasClass(STR_ITEM_DIV)) return;\r\n\r\n // 非菜单组\r\n if(!isChild){\r\n // 选中\r\n parent.find('.'+ STR_ITEM_CHECKED).removeClass(STR_ITEM_CHECKED); // 清除选中样式\r\n parent.find('.'+ STR_ITEM_CHECKED2).removeClass(STR_ITEM_CHECKED2); // 清除父级菜单选中样式\r\n othis.addClass(STR_ITEM_CHECKED); //添加选中样式\r\n othis.parents('.'+ STR_ITEM_PARENT).addClass(STR_ITEM_CHECKED2); // 添加父级菜单选中样式\r\n\r\n options.title = options.title || $.trim(othis.children('.'+ STR_MENU_TITLE).text());\r\n \r\n // 触发事件\r\n layui.event.call(this, MOD_NAME, 'click('+ filter +')', options);\r\n }\r\n });\r\n \r\n // 基础菜单的展开收缩事件\r\n _DOC.on('click', (ELEM_LI + STR_GROUP_TITLE), function(e){\r\n var othis = $(this);\r\n var elemGroup = othis.parents('.'+ STR_ITEM_GROUP +':eq(0)');\r\n var options = lay.options(elemGroup[0]);\r\n var isAccordion = typeof othis.parents('.layui-menu').eq(0).attr('lay-accordion') === 'string';\r\n\r\n if(('isAllowSpread' in options) ? options.isAllowSpread : true){\r\n thisModule.spread(elemGroup, isAccordion);\r\n }\r\n });\r\n \r\n // 判断子级菜单是否超出屏幕\r\n var ELEM_LI_PAR = '.layui-menu .'+ STR_ITEM_PARENT\r\n _DOC.on('mouseenter', ELEM_LI_PAR, function(e){\r\n var othis = $(this);\r\n var elemPanel = othis.find('.'+ STR_MENU_PANEL);\r\n\r\n if(!elemPanel[0]) return;\r\n var rect = elemPanel[0].getBoundingClientRect();\r\n \r\n // 是否超出右侧屏幕\r\n if(rect.right > _WIN.width()){\r\n elemPanel.addClass(STR_MENU_PANEL_L);\r\n // 不允许超出左侧屏幕\r\n rect = elemPanel[0].getBoundingClientRect();\r\n if(rect.left < 0){\r\n elemPanel.removeClass(STR_MENU_PANEL_L);\r\n }\r\n }\r\n \r\n // 是否超出底部屏幕\r\n if(rect.bottom > _WIN.height()){\r\n elemPanel.eq(0).css('margin-top', -(rect.bottom - _WIN.height() + 5));\r\n }\r\n }).on('mouseleave', ELEM_LI_PAR, function(e){\r\n var othis = $(this)\r\n var elemPanel = othis.children('.'+ STR_MENU_PANEL);\r\n \r\n elemPanel.removeClass(STR_MENU_PANEL_L);\r\n elemPanel.css('margin-top', 0);\r\n });\r\n \r\n })();\r\n\r\n // 关闭面板\r\n dropdown.close = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n \r\n that.remove();\r\n return thisModule.call(that);\r\n };\r\n \r\n // 重载实例\r\n dropdown.reload = function(id, options, type){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n\r\n that.reload(options, type);\r\n return thisModule.call(that);\r\n };\r\n\r\n // 仅重载数据\r\n dropdown.reloadData = function(){\r\n var args = $.extend([], arguments);\r\n args[2] = 'reloadData';\r\n\r\n // 重载时,与数据相关的参数\r\n var dataParams = new RegExp('^('+ [\r\n 'data', 'templet', 'content'\r\n ].join('|') + ')$');\r\n\r\n // 过滤与数据无关的参数\r\n layui.each(args[1], function (key, value) {\r\n if(!dataParams.test(key)){\r\n delete args[1][key];\r\n }\r\n });\r\n\r\n return dropdown.reload.apply(null, args);\r\n };\r\n\r\n // 核心入口\r\n dropdown.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, dropdown);\r\n});\r\n","/**\r\n * slider 滑块组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'], function(exports){\r\n 'use strict';\r\n\r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n\r\n // 外部接口\r\n var slider = {\r\n config: {}\r\n ,index: layui.slider ? (layui.slider.index + 10000) : 0\r\n\r\n // 设置全局项\r\n ,set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n }\r\n\r\n // 事件\r\n ,on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisSlider = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n return {\r\n setValue: function(value, index){ // 设置值\r\n value = value > options.max ? options.max : value;\r\n value = value < options.min ? options.min : value;\r\n options.value = value;\r\n return that.slide('set', value, index || 0);\r\n }\r\n ,config: options\r\n }\r\n };\r\n\r\n // 字符常量\r\n var MOD_NAME = 'slider';\r\n var DISABLED = 'layui-disabled';\r\n var ELEM_VIEW = 'layui-slider';\r\n var SLIDER_BAR = 'layui-slider-bar';\r\n var SLIDER_WRAP = 'layui-slider-wrap';\r\n var SLIDER_WRAP_BTN = 'layui-slider-wrap-btn';\r\n var SLIDER_TIPS = 'layui-slider-tips';\r\n var SLIDER_INPUT = 'layui-slider-input';\r\n var SLIDER_INPUT_TXT = 'layui-slider-input-txt';\r\n var SLIDER_INPUT_BTN = 'layui-slider-input-btn';\r\n var ELEM_HOVER = 'layui-slider-hover';\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++slider.index;\r\n that.config = $.extend({}, that.config, slider.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n type: 'default' //滑块类型,垂直:vertical\r\n ,min: 0 //最小值\r\n ,max: 100 //最大值,默认100\r\n ,value: 0 //初始值,默认为0\r\n ,step: 1 //间隔值\r\n ,showstep: false //间隔点开启\r\n ,tips: true //文字提示,开启\r\n ,input: false //输入框,关闭\r\n ,range: false //范围选择,与输入框不能同时开启,默认关闭\r\n ,height: 200 //配合 type:\"vertical\" 使用,默认200px\r\n ,disabled: false //滑块禁用,默认关闭\r\n ,theme: '#16baaa' //主题颜色\r\n };\r\n\r\n //滑块渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n slider.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n //间隔值不能小于 1\r\n if(options.step < 1) options.step = 1;\r\n\r\n //最大值不能小于最小值\r\n if(options.max < options.min) options.max = options.min + options.step;\r\n\r\n\r\n\r\n //判断是否开启双滑块\r\n if(options.range){\r\n options.value = typeof(options.value) == 'object' ? options.value : [options.min, options.value];\r\n var minValue = Math.min(options.value[0], options.value[1])\r\n ,maxValue = Math.max(options.value[0], options.value[1]);\r\n options.value[0] = Math.max(minValue,options.min);\r\n options.value[1] = Math.max(maxValue,options.min);\r\n options.value[0] = Math.min(options.value[0],options.max);\r\n options.value[1] = Math.min(options.value[1],options.max);\r\n\r\n var scaleFir = Math.floor((options.value[0] - options.min) / (options.max - options.min) * 100)\r\n ,scaleSec = Math.floor((options.value[1] - options.min) / (options.max - options.min) * 100)\r\n ,scale = scaleSec - scaleFir + '%';\r\n scaleFir = scaleFir + '%';\r\n scaleSec = scaleSec + '%';\r\n } else {\r\n //如果初始值是一个数组,则获取数组的最小值\r\n if(typeof options.value == 'object'){\r\n options.value = Math.min.apply(null, options.value);\r\n }\r\n\r\n //初始值不能小于最小值且不能大于最大值\r\n if(options.value < options.min) options.value = options.min;\r\n if(options.value > options.max) options.value = options.max;\r\n\r\n var scale = Math.floor((options.value - options.min) / (options.max - options.min) * 100) + '%';\r\n }\r\n\r\n\r\n //如果禁用,颜色为统一的灰色\r\n var theme = options.disabled ? '#c2c2c2' : options.theme;\r\n\r\n //滑块\r\n var temp = '
                  '+ (options.tips ? '
                  ' : '') +\r\n '
                  ' +\r\n '
                  '+ (options.range ? '
                  ' : '') +'
                  ';\r\n\r\n var othis = $(options.elem)\r\n ,hasRender = othis.next('.' + ELEM_VIEW);\r\n //生成替代元素\r\n hasRender[0] && hasRender.remove(); //如果已经渲染,则Rerender\r\n that.elemTemp = $(temp);\r\n\r\n //把数据缓存到滑块上\r\n if(options.range){\r\n that.elemTemp.find('.' + SLIDER_WRAP).eq(0).data('value', options.value[0]);\r\n that.elemTemp.find('.' + SLIDER_WRAP).eq(1).data('value', options.value[1]);\r\n }else{\r\n that.elemTemp.find('.' + SLIDER_WRAP).data('value', options.value);\r\n }\r\n\r\n //插入替代元素\r\n othis.html(that.elemTemp);\r\n\r\n //垂直滑块\r\n if(options.type === 'vertical'){\r\n that.elemTemp.height(options.height + 'px');\r\n }\r\n\r\n //显示间断点\r\n if(options.showstep){\r\n var number = (options.max - options.min) / options.step, item = '';\r\n for(var i = 1; i < number + 1; i++) {\r\n var step = i * 100 / number;\r\n if(step < 100){\r\n item += '
                  '\r\n }\r\n }\r\n that.elemTemp.append(item);\r\n }\r\n\r\n //插入输入框\r\n if(options.input && !options.range){\r\n var elemInput = $('
                  ');\r\n othis.css(\"position\",\"relative\");\r\n othis.append(elemInput);\r\n othis.find('.' + SLIDER_INPUT_TXT).children('input').val(options.value);\r\n if(options.type === 'vertical'){\r\n elemInput.css({\r\n left: 0\r\n ,top: -48\r\n });\r\n } else {\r\n that.elemTemp.css(\"margin-right\", elemInput.outerWidth() + 15);\r\n }\r\n }\r\n\r\n //给未禁止的滑块滑动事件\r\n if(!options.disabled){\r\n that.slide();\r\n }else{\r\n that.elemTemp.addClass(DISABLED);\r\n that.elemTemp.find('.' + SLIDER_WRAP_BTN).addClass(DISABLED);\r\n }\r\n\r\n //划过滑块显示数值\r\n var timer;\r\n that.elemTemp.find('.' + SLIDER_WRAP_BTN).on('mouseover', function(){\r\n var sliderWidth = options.type === 'vertical' ? options.height : that.elemTemp[0].offsetWidth\r\n ,sliderWrap = that.elemTemp.find('.' + SLIDER_WRAP)\r\n ,tipsLeft = options.type === 'vertical' ? (sliderWidth - $(this).parent()[0].offsetTop - sliderWrap.height()) : $(this).parent()[0].offsetLeft\r\n ,left = tipsLeft / sliderWidth * 100\r\n ,value = $(this).parent().data('value')\r\n ,tipsTxt = options.setTips ? options.setTips(value) : value;\r\n that.elemTemp.find('.' + SLIDER_TIPS).html(tipsTxt);\r\n\r\n clearTimeout(timer);\r\n timer = setTimeout(function(){\r\n if(options.type === 'vertical'){\r\n that.elemTemp.find('.' + SLIDER_TIPS).css({\r\n \"bottom\": left + '%',\r\n \"margin-bottom\": \"20px\",\r\n \"display\": \"inline-block\"\r\n });\r\n } else {\r\n that.elemTemp.find('.' + SLIDER_TIPS).css({\r\n \"left\": left + '%',\r\n \"display\": \"inline-block\"\r\n });\r\n }\r\n }, 300);\r\n }).on('mouseout', function(){\r\n clearTimeout(timer);\r\n that.elemTemp.find('.' + SLIDER_TIPS).css(\"display\", \"none\");\r\n });\r\n };\r\n\r\n //滑块滑动\r\n Class.prototype.slide = function(setValue, value, i){\r\n var that = this\r\n ,options = that.config\r\n ,sliderAct = that.elemTemp\r\n ,sliderWidth = function(){\r\n return options.type === 'vertical' ? options.height : sliderAct[0].offsetWidth\r\n }\r\n ,sliderWrap = sliderAct.find('.' + SLIDER_WRAP)\r\n ,sliderTxt = sliderAct.next('.' + SLIDER_INPUT)\r\n ,inputValue = sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val()\r\n ,step = 100 / ((options.max - options.min) / Math.ceil(options.step))\r\n ,change = function(offsetValue, index, from){\r\n if(Math.ceil(offsetValue) * step > 100){\r\n offsetValue = Math.ceil(offsetValue) * step\r\n }else{\r\n offsetValue = Math.round(offsetValue) * step\r\n }\r\n offsetValue = offsetValue > 100 ? 100: offsetValue;\r\n offsetValue = offsetValue < 0 ? 0: offsetValue;\r\n sliderWrap.eq(index).css((options.type === 'vertical' ?'bottom':'left'), offsetValue + '%');\r\n var firLeft = valueTo(sliderWrap[0].offsetLeft)\r\n ,secLeft = options.range ? valueTo(sliderWrap[1].offsetLeft) : 0;\r\n if(options.type === 'vertical'){\r\n sliderAct.find('.' + SLIDER_TIPS).css({\"bottom\":offsetValue + '%', \"margin-bottom\":\"20px\"});\r\n firLeft = valueTo(sliderWidth() - sliderWrap[0].offsetTop - sliderWrap.height());\r\n secLeft = options.range ? valueTo(sliderWidth() - sliderWrap[1].offsetTop - sliderWrap.height()) : 0;\r\n }else{\r\n sliderAct.find('.' + SLIDER_TIPS).css(\"left\",offsetValue + '%');\r\n }\r\n firLeft = firLeft > 100 ? 100: firLeft;\r\n secLeft = secLeft > 100 ? 100: secLeft;\r\n var minLeft = Math.min(firLeft, secLeft)\r\n ,wrapWidth = Math.abs(firLeft - secLeft);\r\n if(options.type === 'vertical'){\r\n sliderAct.find('.' + SLIDER_BAR).css({\"height\":wrapWidth + '%', \"bottom\":minLeft + '%'});\r\n }else{\r\n sliderAct.find('.' + SLIDER_BAR).css({\"width\":wrapWidth + '%', \"left\":minLeft + '%'});\r\n }\r\n var selfValue = options.min + Math.round((options.max - options.min) * offsetValue / 100);\r\n inputValue = selfValue;\r\n sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val(inputValue);\r\n sliderWrap.eq(index).data('value', selfValue);\r\n sliderAct.find('.' + SLIDER_TIPS).html(options.setTips ? options.setTips(selfValue) : selfValue);\r\n\r\n //如果开启范围选择,则返回数组值\r\n if(options.range){\r\n var arrValue = [\r\n sliderWrap.eq(0).data('value')\r\n ,sliderWrap.eq(1).data('value')\r\n ];\r\n if(arrValue[0] > arrValue[1]) arrValue.reverse(); //如果前面的圆点超过了后面的圆点值,则调换顺序\r\n }\r\n\r\n that.value = options.range ? arrValue : selfValue; // 最新值\r\n options.change && options.change(that.value); // change 回调\r\n\r\n // 值完成选中的事件\r\n if(from === 'done') options.done && options.done(that.value);\r\n }\r\n ,valueTo = function(value){\r\n var oldLeft = value / sliderWidth() * 100 / step\r\n ,left = Math.round(oldLeft) * step;\r\n if(value == sliderWidth()){\r\n left = Math.ceil(oldLeft) * step;\r\n }\r\n return left;\r\n }\r\n\r\n //拖拽元素\r\n ,elemMove = $(['
                  sliderWidth())left = sliderWidth();\r\n var reaLeft = left / sliderWidth() * 100 / step;\r\n change(reaLeft, index);\r\n othis.addClass(ELEM_HOVER);\r\n sliderAct.find('.' + SLIDER_TIPS).show();\r\n e.preventDefault();\r\n };\r\n\r\n var up = function(){\r\n othis.removeClass(ELEM_HOVER);\r\n sliderAct.find('.' + SLIDER_TIPS).hide();\r\n };\r\n\r\n createMoveElem(move, up)\r\n });\r\n });\r\n\r\n // 点击滑块\r\n sliderAct.on('click', function(e){\r\n var main = $('.' + SLIDER_WRAP_BTN);\r\n var othis = $(this);\r\n if(!main.is(event.target) && main.has(event.target).length === 0 && main.length){\r\n var index;\r\n var offset = options.type === 'vertical'\r\n ? (sliderWidth() - e.clientY + othis.offset().top - $(window).scrollTop())\r\n :(e.clientX - othis.offset().left - $(window).scrollLeft());\r\n\r\n if(offset < 0)offset = 0;\r\n if(offset > sliderWidth()) offset = sliderWidth();\r\n var reaLeft = offset / sliderWidth() * 100 / step;\r\n if(options.range){\r\n if(options.type === 'vertical'){\r\n index = Math.abs(offset - parseInt($(sliderWrap[0]).css('bottom'))) > Math.abs(offset - parseInt($(sliderWrap[1]).css('bottom'))) ? 1 : 0;\r\n } else {\r\n index = Math.abs(offset - sliderWrap[0].offsetLeft) > Math.abs(offset - sliderWrap[1].offsetLeft) ? 1 : 0;\r\n }\r\n } else {\r\n index = 0;\r\n }\r\n change(reaLeft, index, 'done');\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n //点击加减输入框\r\n sliderTxt.children('.' + SLIDER_INPUT_BTN).children('i').each(function(index){\r\n $(this).on('click', function(){\r\n inputValue = sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val();\r\n if(index == 1){ //减\r\n inputValue = inputValue - options.step < options.min\r\n ? options.min\r\n : Number(inputValue) - options.step;\r\n }else{\r\n inputValue = Number(inputValue) + options.step > options.max\r\n ? options.max\r\n : Number(inputValue) + options.step;\r\n }\r\n var inputScale = (inputValue - options.min) / (options.max - options.min) * 100 / step;\r\n change(inputScale, 0, 'done');\r\n });\r\n });\r\n\r\n //获取输入框值\r\n var getInputValue = function(){\r\n var realValue = this.value;\r\n realValue = isNaN(realValue) ? 0 : realValue;\r\n realValue = realValue < options.min ? options.min : realValue;\r\n realValue = realValue > options.max ? options.max : realValue;\r\n this.value = realValue;\r\n var inputScale = (realValue - options.min) / (options.max - options.min) * 100 / step;\r\n change(inputScale, 0, 'done');\r\n };\r\n sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').on('keydown', function(e){\r\n if(e.keyCode === 13){\r\n e.preventDefault();\r\n getInputValue.call(this);\r\n }\r\n }).on('change', getInputValue);\r\n };\r\n\r\n //事件处理\r\n Class.prototype.events = function(){\r\n var that = this\r\n ,options = that.config;\r\n };\r\n\r\n //核心入口\r\n slider.render = function(options){\r\n var inst = new Class(options);\r\n return thisSlider.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, slider);\r\n})\r\n","/**\r\n * colorpicker \r\n * 颜色选择组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n var clickOrMousedown = (device.mobile ? 'click' : 'mousedown');\r\n\r\n //外部接口\r\n var colorpicker = {\r\n config: {}\r\n ,index: layui.colorpicker ? (layui.colorpicker.index + 10000) : 0\r\n\r\n //设置全局项\r\n ,set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n }\r\n \r\n //事件\r\n ,on: function(events, callback){\r\n return layui.onevent.call(this, 'colorpicker', events, callback);\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n config: options\r\n };\r\n }\r\n\r\n //字符常量\r\n ,MOD_NAME = 'colorpicker', SHOW = 'layui-show', THIS = 'layui-this', ELEM = 'layui-colorpicker'\r\n \r\n ,ELEM_MAIN = '.layui-colorpicker-main', ICON_PICKER_DOWN = 'layui-icon-down', ICON_PICKER_CLOSE = 'layui-icon-close'\r\n ,PICKER_TRIG_SPAN = 'layui-colorpicker-trigger-span', PICKER_TRIG_I = 'layui-colorpicker-trigger-i', PICKER_SIDE = 'layui-colorpicker-side', PICKER_SIDE_SLIDER = 'layui-colorpicker-side-slider'\r\n ,PICKER_BASIS = 'layui-colorpicker-basis', PICKER_ALPHA_BG = 'layui-colorpicker-alpha-bgcolor', PICKER_ALPHA_SLIDER = 'layui-colorpicker-alpha-slider', PICKER_BASIS_CUR = 'layui-colorpicker-basis-cursor', PICKER_INPUT = 'layui-colorpicker-main-input'\r\n\r\n //RGB转HSB\r\n ,RGBToHSB = function(rgb){\r\n var hsb = {h:0, s:0, b:0};\r\n var min = Math.min(rgb.r, rgb.g, rgb.b);\r\n var max = Math.max(rgb.r, rgb.g, rgb.b);\r\n var delta = max - min;\r\n hsb.b = max;\r\n hsb.s = max !== 0 ? 255*delta/max : 0;\r\n if(hsb.s !== 0){\r\n if(rgb.r == max){ // 因 rgb 中返回的数字为 string 类型\r\n hsb.h = (rgb.g - rgb.b) / delta;\r\n }else if(rgb.g == max){\r\n hsb.h = 2 + (rgb.b - rgb.r) / delta;\r\n }else{\r\n hsb.h = 4 + (rgb.r - rgb.g) / delta;\r\n }\r\n }else{\r\n hsb.h = -1;\r\n }\r\n if(max === min){\r\n hsb.h = 0;\r\n }\r\n hsb.h *= 60;\r\n if(hsb.h < 0) {\r\n hsb.h += 360;\r\n }\r\n hsb.s *= 100/255;\r\n hsb.b *= 100/255;\r\n return hsb; \r\n }\r\n\r\n //HEX转HSB\r\n ,HEXToHSB = function(hex){\r\n hex = hex.indexOf('#') > -1 ? hex.substring(1) : hex;\r\n if(hex.length === 3){\r\n var num = hex.split(\"\");\r\n hex = num[0]+num[0]+num[1]+num[1]+num[2]+num[2]\r\n }\r\n hex = parseInt(hex, 16);\r\n var rgb = {r:hex >> 16, g:(hex & 0x00FF00) >> 8, b:(hex & 0x0000FF)};\r\n return RGBToHSB(rgb);\r\n }\r\n\r\n //HSB转RGB\r\n ,HSBToRGB = function(hsb){\r\n var rgb = {};\r\n var h = hsb.h;\r\n var s = hsb.s*255/100;\r\n var b = hsb.b*255/100;\r\n if(s === 0){\r\n rgb.r = rgb.g = rgb.b = b;\r\n }else{\r\n var t1 = b;\r\n var t2 = (255 - s) * b /255;\r\n var t3 = (t1 - t2) * (h % 60) /60;\r\n if(h === 360) h = 0;\r\n if(h < 60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}\r\n else if(h < 120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}\r\n else if(h < 180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}\r\n else if(h < 240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}\r\n else if(h < 300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}\r\n else if(h < 360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}\r\n else {rgb.r=0; rgb.g=0; rgb.b=0}\r\n }\r\n return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};\r\n }\r\n\r\n //HSB转HEX\r\n ,HSBToHEX = function(hsb){\r\n var rgb = HSBToRGB(hsb);\r\n var hex = [\r\n rgb.r.toString(16)\r\n ,rgb.g.toString(16)\r\n ,rgb.b.toString(16)\r\n ];\r\n $.each(hex, function(nr, val){\r\n if(val.length === 1){\r\n hex[nr] = '0' + val;\r\n }\r\n });\r\n return hex.join('');\r\n }\r\n\r\n //转化成所需rgb格式\r\n ,RGBSTo = function(rgbs){\r\n var regexp = /[0-9]{1,3}/g;\r\n var re = rgbs.match(regexp) || [];\r\n return {r:re[0], g:re[1], b:re[2]};\r\n }\r\n \r\n ,$win = $(window)\r\n ,$doc = $(document)\r\n \r\n //构造器\r\n ,Class = function(options){\r\n var that = this;\r\n that.index = ++colorpicker.index;\r\n that.config = $.extend({}, that.config, colorpicker.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n color: '' //默认颜色,默认没有\r\n ,size: null //选择器大小\r\n ,alpha: false //是否开启透明度\r\n ,format: 'hex' //颜色显示/输入格式,可选 rgb,hex\r\n ,predefine: false //预定义颜色是否开启\r\n ,colors: [ //默认预定义颜色列表\r\n '#16baaa', '#16b777', '#1E9FFF', '#FF5722', '#FFB800', '#01AAED', '#999', '#c00', '#ff8c00','#ffd700'\r\n ,'#90ee90', '#00ced1', '#1e90ff', '#c71585', 'rgb(0, 186, 189)', 'rgb(255, 120, 0)', 'rgb(250, 212, 0)', '#393D49', 'rgba(0,0,0,.5)', 'rgba(255, 69, 0, 0.68)', 'rgba(144, 240, 144, 0.5)', 'rgba(31, 147, 255, 0.73)'\r\n ]\r\n };\r\n\r\n //初始颜色选择框\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n colorpicker.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n \r\n //颜色选择框对象\r\n var elemColorBox = $(['
                  '\r\n ,''\r\n ,' 3){ //需要优化\r\n if(!(options.alpha && options.format == 'rgb')){\r\n bgstr = '#' + HSBToHEX(RGBToHSB(RGBSTo(options.color)))\r\n }\r\n }\r\n \r\n return 'background: '+ bgstr;\r\n }\r\n \r\n return bgstr;\r\n }() +'\">'\r\n ,''\r\n ,''\r\n ,''\r\n ,'
                  '].join(''))\r\n\r\n //初始化颜色选择框\r\n elem = options.elem = $(options.elem);\r\n options.size && elemColorBox.addClass('layui-colorpicker-'+ options.size); //初始化颜色选择框尺寸\r\n \r\n // 插入颜色选择框\r\n elem.addClass('layui-inline').html(\r\n that.elemColorBox = elemColorBox\r\n );\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n \r\n // 获取背景色值\r\n that.color = that.elemColorBox.find('.'+ PICKER_TRIG_SPAN)[0].style.background;\r\n \r\n // 相关事件\r\n that.events();\r\n };\r\n\r\n //渲染颜色选择器\r\n Class.prototype.renderPicker = function(){\r\n var that = this\r\n ,options = that.config\r\n ,elemColorBox = that.elemColorBox[0]\r\n \r\n //颜色选择器对象\r\n ,elemPicker = that.elemPicker = $(['
                  '\r\n //颜色面板\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n \r\n //透明度条块\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n \r\n //预设颜色列表\r\n ,function(){\r\n if(options.predefine){\r\n var list = ['
                  '];\r\n layui.each(options.colors, function(i, v){\r\n list.push(['
                  3 \r\n ? ' layui-colorpicker-pre-isalpha' \r\n : '') +'\">'\r\n ,'
                  '\r\n ,'
                  '].join(''));\r\n });\r\n list.push('
                  ');\r\n return list.join('');\r\n } else {\r\n return '';\r\n }\r\n }()\r\n \r\n //底部表单元素区域\r\n ,'
                  '\r\n ,'
                  '\r\n ,''\r\n ,'
                  '\r\n ,'
                  '\r\n ,''\r\n ,''\r\n ,''\r\n ,'
                  '].join(''))\r\n \r\n ,elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)[0];\r\n \r\n //如果当前点击的颜色盒子已经存在选择器,则关闭\r\n if($(ELEM_MAIN)[0] && $(ELEM_MAIN).data('index') == that.index){\r\n that.removePicker(Class.thisElemInd);\r\n } else { //插入颜色选择器\r\n that.removePicker(Class.thisElemInd); \r\n $('body').append(elemPicker);\r\n }\r\n\r\n // 记录当前执行的实例索引\r\n colorpicker.thisId = options.id;\r\n \r\n Class.thisElemInd = that.index; //记录最新打开的选择器索引\r\n Class.thisColor = elemColorBox.style.background //记录最新打开的选择器颜色选中值\r\n \r\n that.position();\r\n that.pickerEvents();\r\n };\r\n\r\n //颜色选择器移除\r\n Class.prototype.removePicker = function(index){\r\n var that = this;\r\n var options = that.config;\r\n var elem = $('#layui-colorpicker'+ (index || that.index));\r\n\r\n if(elem[0]){\r\n elem.remove();\r\n delete colorpicker.thisId;\r\n\r\n // 面板关闭后的回调\r\n typeof options.close === 'function' && options.close(that.color);\r\n }\r\n\r\n return that;\r\n };\r\n \r\n //定位算法\r\n Class.prototype.position = function(){\r\n var that = this\r\n ,options = that.config;\r\n lay.position(that.bindElem || that.elemColorBox[0], that.elemPicker[0], {\r\n position: options.position\r\n ,align: 'center'\r\n });\r\n return that;\r\n };\r\n\r\n //颜色选择器赋值\r\n Class.prototype.val = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,elemColorBox = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)\r\n ,elemPickerInput = that.elemPicker.find('.' + PICKER_INPUT)\r\n ,e = elemColorBox[0]\r\n ,bgcolor = e.style.backgroundColor;\r\n\r\n //判断是否有背景颜色\r\n if(bgcolor){\r\n \r\n //转化成hsb格式\r\n var hsb = RGBToHSB(RGBSTo(bgcolor))\r\n ,type = elemColorBox.attr('lay-type');\r\n \r\n //同步滑块的位置及颜色选择器的选择\r\n that.select(hsb.h, hsb.s, hsb.b);\r\n \r\n // 若格式要求为rgb\r\n if(type === 'torgb'){\r\n elemPickerInput.find('input').val(bgcolor);\r\n } else if(type === 'rgba'){ // 若格式要求为 rgba\r\n var rgb = RGBSTo(bgcolor);\r\n \r\n // 若开启透明度而没有设置,则给默认值\r\n if((bgcolor.match(/[0-9]{1,3}/g) || []).length === 3){\r\n elemPickerInput.find('input').val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 1)');\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", 280);\r\n } else {\r\n elemPickerInput.find('input').val(bgcolor);\r\n var left = bgcolor.slice(bgcolor.lastIndexOf(\",\") + 1, bgcolor.length - 1) * 280;\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", left);\r\n }\r\n \r\n // 设置 span 背景色\r\n that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = 'linear-gradient(to right, rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 0), rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +'))'; \r\n } else {\r\n elemPickerInput.find('input').val('#'+ HSBToHEX(hsb));\r\n }\r\n } else {\r\n // 若没有背景颜色则默认到最初始的状态\r\n that.select(0,100,100);\r\n elemPickerInput.find('input').val(\"\");\r\n that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = '';\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", 280);\r\n }\r\n };\r\n\r\n //颜色选择器滑动 / 点击\r\n Class.prototype.side = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,span = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)\r\n ,type = span.attr('lay-type')\r\n\r\n ,side = that.elemPicker.find('.' + PICKER_SIDE)\r\n ,slider = that.elemPicker.find('.' + PICKER_SIDE_SLIDER)\r\n ,basis = that.elemPicker.find('.' + PICKER_BASIS)\r\n ,choose = that.elemPicker.find('.' + PICKER_BASIS_CUR)\r\n ,alphacolor = that.elemPicker.find('.' + PICKER_ALPHA_BG)\r\n ,alphaslider = that.elemPicker.find('.' + PICKER_ALPHA_SLIDER)\r\n \r\n ,_h = slider[0].offsetTop/180*360\r\n ,_b = 100 - (choose[0].offsetTop + 3)/180*100\r\n ,_s = (choose[0].offsetLeft + 3)/260*100\r\n ,_a = Math.round(alphaslider[0].offsetLeft/280*100)/100 \r\n \r\n ,i = that.elemColorBox.find('.' + PICKER_TRIG_I)\r\n ,pre = that.elemPicker.find('.layui-colorpicker-pre').children('div')\r\n\r\n ,change = function(x,y,z,a){\r\n that.select(x, y, z);\r\n var rgb = HSBToRGB({h:x, s:y, b:z});\r\n var color = HSBToHEX({h:x, s:y, b:z});\r\n var elemInput = that.elemPicker.find('.' + PICKER_INPUT).find('input');\r\n\r\n i.addClass(ICON_PICKER_DOWN).removeClass(ICON_PICKER_CLOSE);\r\n span[0].style.background = 'rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +')';\r\n\r\n if(type === 'torgb'){\r\n elemInput.val('rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +')');\r\n } else if(type === 'rgba'){\r\n var left = a * 280;\r\n alphaslider.css(\"left\", left);\r\n elemInput.val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', '+ a +')');\r\n span[0].style.background = 'rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', '+ a +')';\r\n alphacolor[0].style.background = 'linear-gradient(to right, rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 0), rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +'))'\r\n } else {\r\n elemInput.val('#'+ color);\r\n }\r\n \r\n //回调更改的颜色\r\n options.change && options.change(that.elemPicker.find('.' + PICKER_INPUT).find('input').val());\r\n }\r\n\r\n //拖拽元素\r\n ,elemMove = $(['
                  '].join(''))\r\n ,createMoveElem = function(call){\r\n $('#LAY-colorpicker-moving')[0] || $('body').append(elemMove);\r\n elemMove.on('mousemove', call);\r\n elemMove.on('mouseup', function(){\r\n elemMove.remove();\r\n }).on('mouseleave', function(){\r\n elemMove.remove();\r\n });\r\n };\r\n\r\n //右侧主色选择\r\n slider.on('mousedown', function(e){\r\n var oldtop = this.offsetTop\r\n ,oldy = e.clientY;\r\n var move = function(e){\r\n var top = oldtop + (e.clientY - oldy)\r\n ,maxh = side[0].offsetHeight;\r\n if(top < 0)top = 0;\r\n if(top > maxh)top = maxh;\r\n var h = top/180*360;\r\n _h = h;\r\n change(h, _s, _b, _a);\r\n e.preventDefault();\r\n };\r\n \r\n createMoveElem(move);\r\n //layui.stope(e);\r\n e.preventDefault();\r\n });\r\n \r\n side.on('click', function(e){\r\n var top = e.clientY - $(this).offset().top + $win.scrollTop();\r\n if(top < 0)top = 0;\r\n if(top > this.offsetHeight) top = this.offsetHeight; \r\n var h = top/180*360;\r\n _h = h;\r\n change(h, _s, _b, _a); \r\n e.preventDefault();\r\n });\r\n \r\n //中间小圆点颜色选择\r\n choose.on('mousedown', function(e){\r\n var oldtop = this.offsetTop\r\n ,oldleft = this.offsetLeft\r\n ,oldy = e.clientY\r\n ,oldx = e.clientX;\r\n var move = function(e){\r\n var top = oldtop + (e.clientY - oldy)\r\n ,left = oldleft + (e.clientX - oldx)\r\n ,maxh = basis[0].offsetHeight - 3\r\n ,maxw = basis[0].offsetWidth - 3;\r\n if(top < -3)top = -3;\r\n if(top > maxh)top = maxh;\r\n if(left < -3)left = -3;\r\n if(left > maxw)left = maxw;\r\n var s = (left + 3)/260*100\r\n ,b = 100 - (top + 3)/180*100;\r\n _b = b;\r\n _s = s;\r\n change(_h, s, b, _a); \r\n e.preventDefault();\r\n };\r\n layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n \r\n basis.on('mousedown', function(e){\r\n var top = e.clientY - $(this).offset().top - 3 + $win.scrollTop()\r\n ,left = e.clientX - $(this).offset().left - 3 + $win.scrollLeft()\r\n if(top < -3)top = -3;\r\n if(top > this.offsetHeight - 3)top = this.offsetHeight - 3;\r\n if(left < -3)left = -3;\r\n if(left > this.offsetWidth - 3)left = this.offsetWidth - 3;\r\n var s = (left + 3)/260*100\r\n ,b = 100 - (top + 3)/180*100;\r\n _b = b;\r\n _s = s;\r\n change(_h, s, b, _a); \r\n layui.stope(e);\r\n e.preventDefault();\r\n choose.trigger(e, 'mousedown');\r\n });\r\n \r\n //底部透明度选择\r\n alphaslider.on('mousedown', function(e){\r\n var oldleft = this.offsetLeft\r\n ,oldx = e.clientX;\r\n var move = function(e){\r\n var left = oldleft + (e.clientX - oldx)\r\n ,maxw = alphacolor[0].offsetWidth;\r\n if(left < 0)left = 0;\r\n if(left > maxw)left = maxw;\r\n var a = Math.round(left /280*100) /100;\r\n _a = a;\r\n change(_h, _s, _b, a); \r\n e.preventDefault();\r\n };\r\n \r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n alphacolor.on('click', function(e){\r\n var left = e.clientX - $(this).offset().left\r\n if(left < 0)left = 0;\r\n if(left > this.offsetWidth)left = this.offsetWidth;\r\n var a = Math.round(left /280*100) /100;\r\n _a = a;\r\n change(_h, _s, _b, a); \r\n e.preventDefault();\r\n });\r\n \r\n //预定义颜色选择\r\n pre.each(function(){\r\n $(this).on('click', function(){\r\n $(this).parent('.layui-colorpicker-pre').addClass('selected').siblings().removeClass('selected');\r\n var color = this.style.backgroundColor\r\n ,hsb = RGBToHSB(RGBSTo(color))\r\n ,a = color.slice(color.lastIndexOf(\",\") + 1, color.length - 1),left;\r\n _h = hsb.h;\r\n _s = hsb.s;\r\n _b = hsb.b;\r\n if((color.match(/[0-9]{1,3}/g) || []).length === 3) a = 1;\r\n _a = a;\r\n left = a * 280;\r\n change(hsb.h, hsb.s, hsb.b, a);\r\n })\r\n });\r\n };\r\n\r\n //颜色选择器hsb转换\r\n Class.prototype.select = function(h, s, b, type){\r\n var that = this;\r\n var options = that.config;\r\n var hex = HSBToHEX({h:h, s:100, b:100});\r\n var color = HSBToHEX({h:h, s:s, b:b});\r\n var sidetop = h/360*180;\r\n var top = 180 - b/100*180 - 3;\r\n var left = s/100*260 - 3;\r\n \r\n that.elemPicker.find('.' + PICKER_SIDE_SLIDER).css(\"top\", sidetop); //滑块的top\r\n that.elemPicker.find('.' + PICKER_BASIS)[0].style.background = '#' + hex; //颜色选择器的背景\r\n \r\n //选择器的top left\r\n that.elemPicker.find('.' + PICKER_BASIS_CUR).css({\r\n \"top\": top\r\n ,\"left\": left\r\n });\r\n \r\n // if(type === 'change') return;\r\n\r\n // 选中的颜色\r\n // that.elemPicker.find('.' + PICKER_INPUT).find('input').val('#'+ color);\r\n };\r\n \r\n Class.prototype.pickerEvents = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN) //颜色盒子\r\n ,elemPickerInput = that.elemPicker.find('.' + PICKER_INPUT + ' input') //颜色选择器表单\r\n \r\n ,pickerEvents = {\r\n //清空\r\n clear: function(othis){\r\n elemColorBoxSpan[0].style.background ='';\r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_DOWN).addClass(ICON_PICKER_CLOSE);\r\n that.color = '';\r\n \r\n options.done && options.done('');\r\n that.removePicker();\r\n }\r\n \r\n //确认\r\n ,confirm: function(othis, change){\r\n var value = elemPickerInput.val()\r\n ,colorValue\r\n ,hsb;\r\n \r\n if(value.indexOf(',') > -1){\r\n hsb = RGBToHSB(RGBSTo(value));\r\n that.select(hsb.h, hsb.s, hsb.b);\r\n elemColorBoxSpan[0].style.background = (colorValue = '#' + HSBToHEX(hsb)); \r\n \r\n if((value.match(/[0-9]{1,3}/g) || []).length > 3 && elemColorBoxSpan.attr('lay-type') === 'rgba'){\r\n var left = value.slice(value.lastIndexOf(\",\") + 1, value.length - 1) * 280;\r\n that.elemPicker.find('.' + PICKER_ALPHA_SLIDER).css(\"left\", left);\r\n elemColorBoxSpan[0].style.background = value;\r\n colorValue = value;\r\n }\r\n } else {\r\n hsb = HEXToHSB(value);\r\n elemColorBoxSpan[0].style.background = (colorValue = '#' + HSBToHEX(hsb)); \r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_CLOSE).addClass(ICON_PICKER_DOWN);\r\n }\r\n \r\n if(change === 'change'){\r\n that.select(hsb.h, hsb.s, hsb.b, change);\r\n options.change && options.change(colorValue);\r\n return;\r\n }\r\n that.color = value;\r\n \r\n options.done && options.done(value);\r\n that.removePicker(); \r\n }\r\n };\r\n \r\n //选择器面板点击事件\r\n that.elemPicker.on('click', '*[colorpicker-events]', function(){\r\n var othis = $(this)\r\n ,attrEvent = othis.attr('colorpicker-events');\r\n pickerEvents[attrEvent] && pickerEvents[attrEvent].call(this, othis);\r\n });\r\n \r\n //输入框事件\r\n elemPickerInput.on('keyup', function(e){\r\n var othis = $(this);\r\n pickerEvents.confirm.call(this, othis, e.keyCode === 13 ? null : 'change');\r\n });\r\n }\r\n\r\n // 颜色选择器输入\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 弹出颜色选择器\r\n that.elemColorBox.on('click' , function(){\r\n that.renderPicker();\r\n if($(ELEM_MAIN)[0]){\r\n that.val();\r\n that.side();\r\n }\r\n });\r\n };\r\n\r\n //全局事件\r\n (function(){\r\n //绑定关闭控件事件\r\n $doc.on(clickOrMousedown, function(e){\r\n if(!colorpicker.thisId) return;\r\n var that = thisModule.getThis(colorpicker.thisId);\r\n if(!that) return;\r\n\r\n var options = that.config;\r\n var elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN);\r\n\r\n //如果点击的元素是颜色框\r\n if($(e.target).hasClass(ELEM) \r\n || $(e.target).parents('.'+ELEM)[0]\r\n ) return; \r\n \r\n //如果点击的元素是选择器\r\n if($(e.target).hasClass(ELEM_MAIN.replace(/\\./g, '')) \r\n || $(e.target).parents(ELEM_MAIN)[0]\r\n ) return; \r\n \r\n if(!that.elemPicker) return;\r\n \r\n if(that.color){\r\n var hsb = RGBToHSB(RGBSTo(that.color));\r\n that.select(hsb.h, hsb.s, hsb.b); \r\n } else {\r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_DOWN).addClass(ICON_PICKER_CLOSE);\r\n }\r\n elemColorBoxSpan[0].style.background = that.color || '';\r\n \r\n // 取消选择的回调\r\n typeof options.cancel === 'function' && options.cancel(that.color);\r\n\r\n // 移除面板\r\n that.removePicker();\r\n });\r\n\r\n //自适应定位\r\n $win.on('resize', function(){\r\n if(!colorpicker.thisId) return;\r\n var that = thisModule.getThis(colorpicker.thisId);\r\n if(!that) return;\r\n\r\n if(!that.elemPicker || !$(ELEM_MAIN)[0]){\r\n return false;\r\n }\r\n that.position();\r\n });\r\n })();\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n \r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n //核心入口\r\n colorpicker.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n \r\n exports(MOD_NAME, colorpicker);\r\n});\r\n","/**\r\n * element\r\n * 常用元素操作组件\r\n */\r\n \r\nlayui.define('jquery', function(exports){\r\n 'use strict';\r\n \r\n var $ = layui.$;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n \r\n var MOD_NAME = 'element';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var TITLE = '.layui-tab-title';\r\n \r\n var Element = function(){\r\n this.config = {};\r\n };\r\n \r\n // 全局设置\r\n Element.prototype.set = function(options){\r\n var that = this;\r\n $.extend(true, that.config, options);\r\n return that;\r\n };\r\n \r\n // 表单事件\r\n Element.prototype.on = function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n };\r\n \r\n // 外部 Tab 新增\r\n Element.prototype.tabAdd = function(filter, options){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var barElem = titElem.children('.layui-tab-bar');\r\n var contElem = tabElem.children('.layui-tab-content');\r\n var li = ' 0) layAttr.unshift(''); //向前插,预留空格\r\n return layAttr.join(' ');\r\n }() +'>'+ (options.title || 'unnaming') +'';\r\n \r\n barElem[0] ? barElem.before(li) : titElem.append(li);\r\n contElem.append('
                  '+ (options.content || '') +'
                  ');\r\n // call.hideTabMore(true);\r\n // 是否添加即切换\r\n options.change && this.tabChange(filter, options.id);\r\n titElem.data('LAY_TAB_CHANGE', options.change);\r\n call.tabAuto(options.change ? 'change' : null);\r\n return this;\r\n };\r\n \r\n // 外部 Tab 删除\r\n Element.prototype.tabDelete = function(filter, layid){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var liElem = titElem.find('>li[lay-id=\"'+ layid +'\"]');\r\n call.tabDelete(null, liElem);\r\n return this;\r\n };\r\n \r\n // 外部 Tab 切换\r\n Element.prototype.tabChange = function(filter, layid){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var liElem = titElem.find('>li[lay-id=\"'+ layid +'\"]');\r\n\r\n call.tabClick.call(liElem[0], {\r\n liElem: liElem\r\n });\r\n return this;\r\n };\r\n \r\n // 自定义 Tab 选项卡\r\n Element.prototype.tab = function(options){\r\n options = options || {};\r\n dom.on('click', options.headerElem, function(e){\r\n var index = $(this).index();\r\n call.tabClick.call(this, {\r\n index: index,\r\n options: options\r\n });\r\n });\r\n };\r\n \r\n \r\n // 动态改变进度条\r\n Element.prototype.progress = function(filter, percent){\r\n var ELEM = 'layui-progress';\r\n var elem = $('.'+ ELEM +'[lay-filter='+ filter +']');\r\n var elemBar = elem.find('.'+ ELEM +'-bar');\r\n var text = elemBar.find('.'+ ELEM +'-text');\r\n\r\n elemBar.css('width', function(){\r\n return /^.+\\/.+$/.test(percent) \r\n ? (new Function('return '+ percent)() * 100) + '%'\r\n : percent;\r\n }).attr('lay-percent', percent);\r\n text.text(percent);\r\n return this;\r\n };\r\n \r\n var NAV_ELEM = '.layui-nav';\r\n var NAV_ITEM = 'layui-nav-item';\r\n var NAV_BAR = 'layui-nav-bar';\r\n var NAV_TREE = 'layui-nav-tree';\r\n var NAV_CHILD = 'layui-nav-child';\r\n var NAV_CHILD_C = 'layui-nav-child-c';\r\n var NAV_MORE = 'layui-nav-more';\r\n var NAV_DOWN = 'layui-icon-down';\r\n var NAV_ANIM = 'layui-anim layui-anim-upbit';\r\n \r\n // 基础事件体\r\n var call = {\r\n // Tab 点击\r\n tabClick: function(obj){\r\n obj = obj || {};\r\n var options = obj.options || {};\r\n var othis = obj.liElem || $(this);\r\n var parents = options.headerElem \r\n ? othis.parent() \r\n : othis.parents('.layui-tab').eq(0);\r\n var item = options.bodyElem \r\n ? $(options.bodyElem) \r\n : parents.children('.layui-tab-content').children('.layui-tab-item');\r\n var elemA = othis.find('a');\r\n var isJump = elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank'; // 是否存在跳转\r\n var unselect = typeof othis.attr('lay-unselect') === 'string'; // 是否禁用选中\r\n var filter = parents.attr('lay-filter');\r\n\r\n // 下标\r\n var index = 'index' in obj \r\n ? obj.index \r\n : othis.parent().children('li').index(othis);\r\n \r\n // 执行切换\r\n if(!(isJump || unselect)){\r\n othis.addClass(THIS).siblings().removeClass(THIS);\r\n item.eq(index).addClass(SHOW).siblings().removeClass(SHOW);\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'tab('+ filter +')', {\r\n elem: parents,\r\n index: index\r\n });\r\n }\r\n \r\n // Tab 删除\r\n ,tabDelete: function(e, othis){\r\n var li = othis || $(this).parent();\r\n var index = li.parent().children('li').index(li);\r\n var tabElem = li.closest('.layui-tab');\r\n var item = tabElem.children('.layui-tab-content').children('.layui-tab-item');\r\n var filter = tabElem.attr('lay-filter');\r\n \r\n if(li.hasClass(THIS)){\r\n if (li.next()[0] && li.next().is('li')){\r\n call.tabClick.call(li.next()[0], {\r\n index: index + 1\r\n });\r\n } else if (li.prev()[0] && li.prev().is('li')){\r\n call.tabClick.call(li.prev()[0], null, index - 1);\r\n }\r\n }\r\n \r\n li.remove();\r\n item.eq(index).remove();\r\n setTimeout(function(){\r\n call.tabAuto();\r\n }, 50);\r\n \r\n layui.event.call(this, MOD_NAME, 'tabDelete('+ filter +')', {\r\n elem: tabElem,\r\n index: index\r\n });\r\n }\r\n \r\n // Tab 自适应\r\n ,tabAuto: function(spread){\r\n var SCROLL = 'layui-tab-scroll';\r\n var MORE = 'layui-tab-more';\r\n var BAR = 'layui-tab-bar';\r\n var CLOSE = 'layui-tab-close';\r\n var that = this;\r\n \r\n $('.layui-tab').each(function(){\r\n var othis = $(this);\r\n var title = othis.children('.layui-tab-title');\r\n var item = othis.children('.layui-tab-content').children('.layui-tab-item');\r\n var STOPE = 'lay-stope=\"tabmore\"';\r\n var span = $('');\r\n\r\n if(that === window && device.ie != 8){\r\n // call.hideTabMore(true)\r\n }\r\n \r\n // 开启关闭图标\r\n if(othis.attr('lay-allowclose')){\r\n title.find('li').each(function(){\r\n var li = $(this);\r\n if(!li.find('.'+CLOSE)[0]){\r\n var close = $('');\r\n close.on('click', call.tabDelete);\r\n li.append(close);\r\n }\r\n });\r\n }\r\n \r\n if(typeof othis.attr('lay-unauto') === 'string') return;\r\n \r\n // 响应式\r\n if(\r\n title.prop('scrollWidth') > title.outerWidth() + 1 || (\r\n title.find('li').length && title.height() > function(height){\r\n return height + height/2;\r\n }(title.find('li').eq(0).height())\r\n )\r\n ){\r\n // 若执行是来自于切换,则自动展开\r\n (\r\n spread === 'change' && title.data('LAY_TAB_CHANGE')\r\n ) && title.addClass(MORE);\r\n \r\n if(title.find('.'+BAR)[0]) return;\r\n title.append(span);\r\n othis.attr('overflow', '');\r\n\r\n // 展开图标事件\r\n span.on('click', function(e){\r\n var isSpread = title.hasClass(MORE);\r\n title[isSpread ? 'removeClass' : 'addClass'](MORE);\r\n });\r\n } else {\r\n title.find('.'+ BAR).remove();\r\n othis.removeAttr('overflow');\r\n }\r\n });\r\n }\r\n // 隐藏更多 Tab\r\n ,hideTabMore: function(e){\r\n var tsbTitle = $('.layui-tab-title');\r\n if(e === true || $(e.target).attr('lay-stope') !== 'tabmore'){\r\n tsbTitle.removeClass('layui-tab-more');\r\n tsbTitle.find('.layui-tab-bar').attr('title','');\r\n }\r\n }\r\n \r\n //点击一级菜单\r\n /*\r\n ,clickThis: function(){\r\n var othis = $(this), parents = othis.parents(NAV_ELEM)\r\n ,filter = parents.attr('lay-filter')\r\n ,elemA = othis.find('a')\r\n ,unselect = typeof othis.attr('lay-unselect') === 'string';\r\n\r\n if(othis.find('.'+NAV_CHILD)[0]) return;\r\n \r\n if(!(elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank') && !unselect){\r\n parents.find('.'+THIS).removeClass(THIS);\r\n othis.addClass(THIS);\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'nav('+ filter +')', othis);\r\n }\r\n )\r\n */\r\n \r\n // 点击菜单 - a 标签触发\r\n ,clickThis: function() {\r\n var othis = $(this);\r\n var parents = othis.closest(NAV_ELEM);\r\n var filter = parents.attr('lay-filter');\r\n var parent = othis.parent() ;\r\n var child = othis.siblings('.'+ NAV_CHILD);\r\n var unselect = typeof parent.attr('lay-unselect') === 'string'; // 是否禁用选中\r\n \r\n // 满足点击选中的条件\r\n if (!(othis.attr('href') !== 'javascript:;' && othis.attr('target') === '_blank') && !unselect) {\r\n if (!child[0]) {\r\n parents.find('.'+ THIS).removeClass(THIS);\r\n parent.addClass(THIS);\r\n }\r\n }\r\n \r\n // 若为垂直菜单\r\n if (parents.hasClass(NAV_TREE)) {\r\n var NAV_ITEMED = NAV_ITEM + 'ed'; // 用于标注展开状态\r\n var needExpand = !parent.hasClass(NAV_ITEMED); // 是否执行展开\r\n var ANIM_MS = 200; // 动画过渡毫秒数\r\n\r\n // 动画执行完成后的操作\r\n var complete = function() {\r\n $(this).css({\r\n \"display\": \"\" // 剔除动画生成的 style display,以适配外部样式的状态重置\r\n });\r\n // 避免导航滑块错位\r\n parents.children('.'+ NAV_BAR).css({\r\n opacity: 0\r\n })\r\n };\r\n\r\n // 是否正处于动画中的状态\r\n if (child.is(':animated')) return;\r\n\r\n // 剔除可能存在的 CSS3 动画类\r\n child.removeClass(NAV_ANIM);\r\n\r\n // 若有子菜单,则对其执行展开或收缩\r\n if (child[0]) {\r\n if (needExpand) {\r\n // 先执行 slideDown 动画,再标注展开状态样式,避免元素 `block` 状态导致动画无效\r\n child.slideDown(ANIM_MS, complete);\r\n parent.addClass(NAV_ITEMED);\r\n } else {\r\n // 先取消展开状态样式,再将元素临时显示,避免 `none` 状态导致 slideUp 动画无效\r\n parent.removeClass(NAV_ITEMED);\r\n child.show().slideUp(ANIM_MS, complete);\r\n }\r\n\r\n // 手风琴 --- 收缩兄弟展开项\r\n if (typeof parents.attr('lay-accordion') === 'string' || parents.attr('lay-shrink') === 'all') {\r\n var parentSibs = parent.siblings('.'+ NAV_ITEMED);\r\n parentSibs.removeClass(NAV_ITEMED);\r\n parentSibs.children('.'+ NAV_CHILD).show().stop().slideUp(ANIM_MS, complete);\r\n }\r\n }\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'nav('+ filter +')', othis);\r\n }\r\n \r\n // 折叠面板\r\n ,collapse: function(){\r\n var othis = $(this);\r\n var icon = othis.find('.layui-colla-icon');\r\n var elemCont = othis.siblings('.layui-colla-content');\r\n var parents = othis.parents('.layui-collapse').eq(0);\r\n var filter = parents.attr('lay-filter');\r\n var isNone = elemCont.css('display') === 'none';\r\n \r\n // 是否手风琴\r\n if(typeof parents.attr('lay-accordion') === 'string'){\r\n var show = parents.children('.layui-colla-item').children('.'+SHOW);\r\n show.siblings('.layui-colla-title').children('.layui-colla-icon').html('');\r\n show.removeClass(SHOW);\r\n }\r\n \r\n elemCont[isNone ? 'addClass' : 'removeClass'](SHOW);\r\n icon.html(isNone ? '' : '');\r\n \r\n layui.event.call(this, MOD_NAME, 'collapse('+ filter +')', {\r\n title: othis\r\n ,content: elemCont\r\n ,show: isNone\r\n });\r\n }\r\n };\r\n \r\n // 初始化元素操作\r\n Element.prototype.init = function(type, filter){\r\n var that = this, elemFilter = function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }(), items = {\r\n \r\n // Tab 选项卡\r\n tab: function(){\r\n call.tabAuto.call({});\r\n }\r\n \r\n // 导航菜单\r\n ,nav: function(){\r\n var TIME = 200;\r\n var timer = {};\r\n var timerMore = {};\r\n var timeEnd = {};\r\n var NAV_TITLE = 'layui-nav-title';\r\n \r\n // 滑块跟随\r\n var follow = function(bar, nav, index) {\r\n var othis = $(this);\r\n var child = othis.find('.'+NAV_CHILD);\r\n\r\n // 是否垂直导航菜单\r\n if (nav.hasClass(NAV_TREE)) {\r\n // 无子菜单时跟随\r\n if (!child[0]) {\r\n var thisA = othis.children('.'+ NAV_TITLE);\r\n bar.css({\r\n top: othis.offset().top - nav.offset().top,\r\n height: (thisA[0] ? thisA : othis).outerHeight(),\r\n opacity: 1\r\n });\r\n }\r\n } else {\r\n child.addClass(NAV_ANIM);\r\n \r\n // 若居中对齐\r\n if (child.hasClass(NAV_CHILD_C)) {\r\n child.css({\r\n left: -(child.outerWidth() - othis.width()) / 2\r\n });\r\n }\r\n \r\n // 滑块定位\r\n if (child[0]) { // 若有子菜单,则滑块消失\r\n bar.css({\r\n left: bar.position().left + bar.width() / 2,\r\n width: 0,\r\n opacity: 0\r\n });\r\n } else { // bar 跟随\r\n bar.css({\r\n left: othis.position().left + parseFloat(othis.css('marginLeft')),\r\n top: othis.position().top + othis.height() - bar.height()\r\n });\r\n }\r\n \r\n // 渐显滑块并适配宽度\r\n timer[index] = setTimeout(function() {\r\n bar.css({\r\n width: child[0] ? 0 : othis.width(),\r\n opacity: child[0] ? 0 : 1\r\n });\r\n }, device.ie && device.ie < 10 ? 0 : TIME);\r\n \r\n // 显示子菜单\r\n clearTimeout(timeEnd[index]);\r\n if (child.css('display') === 'block') {\r\n clearTimeout(timerMore[index]);\r\n }\r\n timerMore[index] = setTimeout(function(){\r\n child.addClass(SHOW);\r\n othis.find('.'+NAV_MORE).addClass(NAV_MORE+'d');\r\n }, 300);\r\n }\r\n };\r\n \r\n // 遍历导航\r\n $(NAV_ELEM + elemFilter).each(function(index) {\r\n var othis = $(this);\r\n var bar = $('');\r\n var itemElem = othis.find('.'+NAV_ITEM);\r\n \r\n // hover 滑动效果\r\n if (!othis.find('.'+NAV_BAR)[0]) {\r\n othis.append(bar);\r\n ( othis.hasClass(NAV_TREE)\r\n ? itemElem.find('dd,>.'+ NAV_TITLE) \r\n : itemElem\r\n ).on('mouseenter', function() {\r\n follow.call(this, bar, othis, index);\r\n }).on('mouseleave', function() { // 鼠标移出\r\n // 是否为垂直导航\r\n if (othis.hasClass(NAV_TREE)) {\r\n bar.css({\r\n height: 0,\r\n opacity: 0\r\n });\r\n } else {\r\n // 隐藏子菜单\r\n clearTimeout(timerMore[index]);\r\n timerMore[index] = setTimeout(function(){\r\n othis.find('.'+ NAV_CHILD).removeClass(SHOW);\r\n othis.find('.'+ NAV_MORE).removeClass(NAV_MORE +'d');\r\n }, 300);\r\n }\r\n });\r\n\r\n // 鼠标离开当前菜单时\r\n othis.on('mouseleave', function() {\r\n clearTimeout(timer[index])\r\n timeEnd[index] = setTimeout(function() {\r\n if (!othis.hasClass(NAV_TREE)) {\r\n bar.css({\r\n width: 0,\r\n left: bar.position().left + bar.width() / 2,\r\n opacity: 0\r\n });\r\n }\r\n }, TIME);\r\n });\r\n }\r\n \r\n // 展开子菜单\r\n itemElem.find('a').each(function() {\r\n var thisA = $(this);\r\n var parent = thisA.parent();\r\n var child = thisA.siblings('.'+ NAV_CHILD);\r\n \r\n // 输出小箭头\r\n if (child[0] && !thisA.children('.'+ NAV_MORE)[0]) {\r\n thisA.append('');\r\n }\r\n \r\n thisA.off('click', call.clickThis).on('click', call.clickThis); // 点击菜单\r\n });\r\n });\r\n }\r\n \r\n //面包屑\r\n ,breadcrumb: function(){\r\n var ELEM = '.layui-breadcrumb';\r\n \r\n $(ELEM + elemFilter).each(function(){\r\n var othis = $(this)\r\n ,ATTE_SPR = 'lay-separator'\r\n ,separator = othis.attr(ATTE_SPR) || '/'\r\n ,aNode = othis.find('a');\r\n if(aNode.next('span['+ ATTE_SPR +']')[0]) return;\r\n aNode.each(function(index){\r\n if(index === aNode.length - 1) return;\r\n $(this).after(''+ separator +'');\r\n });\r\n othis.css('visibility', 'visible');\r\n });\r\n }\r\n \r\n //进度条\r\n ,progress: function(){\r\n var ELEM = 'layui-progress';\r\n $('.' + ELEM + elemFilter).each(function(){\r\n var othis = $(this)\r\n ,elemBar = othis.find('.layui-progress-bar')\r\n ,percent = elemBar.attr('lay-percent');\r\n\r\n elemBar.css('width', function(){\r\n return /^.+\\/.+$/.test(percent) \r\n ? (new Function('return '+ percent)() * 100) + '%'\r\n : percent;\r\n });\r\n \r\n if(othis.attr('lay-showpercent')){\r\n setTimeout(function(){\r\n elemBar.html(''+ percent +'');\r\n },350);\r\n }\r\n });\r\n }\r\n \r\n //折叠面板\r\n ,collapse: function(){\r\n var ELEM = 'layui-collapse';\r\n \r\n $('.' + ELEM + elemFilter).each(function(){\r\n var elemItem = $(this).find('.layui-colla-item')\r\n elemItem.each(function(){\r\n var othis = $(this)\r\n ,elemTitle = othis.find('.layui-colla-title')\r\n ,elemCont = othis.find('.layui-colla-content')\r\n ,isNone = elemCont.css('display') === 'none';\r\n \r\n //初始状态\r\n elemTitle.find('.layui-colla-icon').remove();\r\n elemTitle.append(''+ (isNone ? '' : '') +'');\r\n\r\n //点击标题\r\n elemTitle.off('click', call.collapse).on('click', call.collapse);\r\n }); \r\n \r\n });\r\n }\r\n };\r\n\r\n return items[type] ? items[type]() : layui.each(items, function(index, item){\r\n item();\r\n });\r\n };\r\n \r\n Element.prototype.render = Element.prototype.init;\r\n\r\n var element = new Element();\r\n var dom = $(document);\r\n \r\n $(function(){\r\n element.render();\r\n });\r\n\r\n dom.on('click', '.layui-tab-title li', call.tabClick); // Tab 切换\r\n // dom.on('click', call.hideTabMore); // 隐藏展开的 Tab\r\n $(window).on('resize', call.tabAuto); // 自适应\r\n \r\n exports(MOD_NAME, element);\r\n});\r\n\r\n","/**\r\n * upload\r\n * 上传组件\r\n */\r\n \r\nlayui.define(['lay', 'layer'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var layer = layui.layer;\r\n var device = layui.device();\r\n\r\n // 模块名\r\n var MOD_NAME = 'upload';\r\n var MOD_INDEX = 'layui_'+ MOD_NAME +'_index'; // 模块索引名\r\n\r\n // 外部接口\r\n var upload = {\r\n config: {}, // 全局配置项\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0, // 索引\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n upload: function(files){\r\n that.upload.call(that, files);\r\n },\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n config: that.config\r\n }\r\n };\r\n \r\n // 字符常量\r\n var ELEM = 'layui-upload';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled';\r\n \r\n var ELEM_FILE = 'layui-upload-file';\r\n var ELEM_FORM = 'layui-upload-form';\r\n var ELEM_IFRAME = 'layui-upload-iframe';\r\n var ELEM_CHOOSE = 'layui-upload-choose';\r\n var ELEM_DRAG = 'layui-upload-drag';\r\n var UPLOADING = 'UPLOADING';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++upload.index;\r\n that.config = $.extend({}, that.config, upload.config, options);\r\n that.render();\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n accept: 'images', // 允许上传的文件类型:images/file/video/audio\r\n exts: '', // 允许上传的文件后缀名\r\n auto: true, // 是否选完文件后自动上传\r\n bindAction: '', // 手动上传触发的元素\r\n url: '', // 上传地址\r\n force: '', // 强制规定返回的数据格式,目前只支持是否强制 json\r\n field: 'file', // 文件字段名\r\n acceptMime: '', // 筛选出的文件类型,默认为所有文件\r\n method: 'post', // 请求上传的 http 类型\r\n data: {}, // 请求上传的额外参数\r\n drag: true, // 是否允许拖拽上传\r\n size: 0, // 文件限制大小,默认不限制\r\n number: 0, // 允许同时上传的文件数,默认不限制\r\n multiple: false, // 是否允许多文件上传,不支持 ie8-9\r\n text: { // 自定义提示文本\r\n \"cross-domain\": \"Cross-domain requests are not supported\", // 跨域\r\n \"data-format-error\": \"Please return JSON data format\", // 数据格式错误\r\n \"check-error\": \"\", // 文件格式校验失败\r\n \"error\": \"\", // 上传失败\r\n \"limit-number\": null, // 限制 number 属性的提示 --- function\r\n \"limit-size\": null // 限制 size 属性的提示 --- function\r\n }\r\n };\r\n\r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.render(true);\r\n };\r\n \r\n // 初始渲染\r\n Class.prototype.render = function(rerender){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if (elem.length > 1) {\r\n layui.each(elem, function() {\r\n upload.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0], {\r\n attr: elem.attr('lay-data') ? 'lay-data' : null // 兼容旧版的 lay-data 属性\r\n }));\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if (!rerender && elem[0] && elem.data(MOD_INDEX)) {\r\n var newThat = thisModule.getThis(elem.data(MOD_INDEX));\r\n if(!newThat) return;\r\n\r\n return newThat.reload(options);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n options.bindAction = $(options.bindAction);\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n that.file();\r\n that.events();\r\n };\r\n \r\n //追加文件域\r\n Class.prototype.file = function(){\r\n var that = this;\r\n var options = that.config;\r\n var elemFile = that.elemFile = $([\r\n ''\r\n ].join(''));\r\n var next = options.elem.next();\r\n \r\n if(next.hasClass(ELEM_FILE) || next.hasClass(ELEM_FORM)){\r\n next.remove();\r\n }\r\n \r\n //包裹ie8/9容器\r\n if(device.ie && device.ie < 10){\r\n options.elem.wrap('
                  ');\r\n }\r\n \r\n that.isFile() ? (\r\n that.elemFile = options.elem,\r\n options.field = options.elem[0].name\r\n ) : options.elem.after(elemFile);\r\n \r\n //初始化ie8/9的Form域\r\n if(device.ie && device.ie < 10){\r\n that.initIE();\r\n }\r\n };\r\n \r\n //ie8-9初始化\r\n Class.prototype.initIE = function(){\r\n var that = this;\r\n var options = that.config;\r\n var iframe = $('');\r\n var elemForm = $(['
                  '\r\n ,''].join(''));\r\n \r\n //插入iframe \r\n $('#'+ ELEM_IFRAME)[0] || $('body').append(iframe);\r\n\r\n //包裹文件域\r\n if(!options.elem.next().hasClass(ELEM_FORM)){\r\n that.elemFile.wrap(elemForm); \r\n \r\n //追加额外的参数\r\n options.elem.next('.'+ ELEM_FORM).append(function(){\r\n var arr = [];\r\n layui.each(options.data, function(key, value){\r\n value = typeof value === 'function' ? value() : value;\r\n arr.push('')\r\n });\r\n return arr.join('');\r\n }());\r\n }\r\n };\r\n \r\n //异常提示\r\n Class.prototype.msg = function(content){\r\n return layer.msg(content, {\r\n icon: 2,\r\n shift: 6\r\n });\r\n };\r\n \r\n //判断绑定元素是否为文件域本身\r\n Class.prototype.isFile = function(){\r\n var elem = this.config.elem[0];\r\n if(!elem) return;\r\n return elem.tagName.toLocaleLowerCase() === 'input' && elem.type === 'file'\r\n }\r\n \r\n //预读图片信息\r\n Class.prototype.preview = function(callback){\r\n var that = this;\r\n if(window.FileReader){\r\n layui.each(that.chooseFiles, function(index, file){\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file); \r\n reader.onload = function(){\r\n callback && callback(index, file, this.result);\r\n }\r\n });\r\n }\r\n };\r\n \r\n // 执行上传\r\n Class.prototype.upload = function(files, type){\r\n var that = this;\r\n var options = that.config;\r\n var text = options.text || {};\r\n var elemFile = that.elemFile[0];\r\n\r\n // 获取文件队列\r\n var getFiles = function(){\r\n return files || that.files || that.chooseFiles || elemFile.files;\r\n };\r\n \r\n // 高级浏览器处理方式,支持跨域\r\n var ajaxSend = function(){\r\n var successful = 0;\r\n var failed = 0;\r\n var items = getFiles();\r\n\r\n // 多文件全部上传完毕的回调\r\n var allDone = function(){\r\n if(options.multiple && successful + failed === that.fileLength){\r\n typeof options.allDone === 'function' && options.allDone({\r\n total: that.fileLength,\r\n successful: successful,\r\n failed: failed\r\n });\r\n }\r\n };\r\n\r\n // 发送请求\r\n var request = function(sets){\r\n var formData = new FormData();\r\n\r\n // 恢复文件状态\r\n var resetFileState = function(file) {\r\n if (sets.unified) {\r\n layui.each(items, function(index, file){\r\n delete file[UPLOADING];\r\n });\r\n } else {\r\n delete file[UPLOADING];\r\n }\r\n };\r\n\r\n // 追加额外的参数\r\n layui.each(options.data, function(key, value){\r\n value = typeof value === 'function' ? value() : value;\r\n formData.append(key, value);\r\n });\r\n\r\n /*\r\n * 添加 file 到表单域\r\n */\r\n\r\n // 是否统一上传\r\n if (sets.unified) {\r\n layui.each(items, function(index, file){\r\n if (file[UPLOADING]) return;\r\n file[UPLOADING] = true; // 上传中的标记\r\n formData.append(options.field, file);\r\n });\r\n } else { // 逐一上传\r\n if (sets.file[UPLOADING]) return;\r\n formData.append(options.field, sets.file);\r\n sets.file[UPLOADING] = true; // 上传中的标记\r\n }\r\n\r\n // ajax 参数\r\n var opts = {\r\n url: options.url,\r\n type: 'post', // 统一采用 post 上传\r\n data: formData,\r\n dataType: options.dataType || 'json',\r\n contentType: false,\r\n processData: false,\r\n headers: options.headers || {},\r\n success: function(res){ // 成功回调\r\n options.unified ? (successful += that.fileLength) : successful++;\r\n done(sets.index, res);\r\n allDone(sets.index);\r\n resetFileState(sets.file);\r\n },\r\n error: function(e){ // 异常回调\r\n options.unified ? (failed += that.fileLength) : failed++;\r\n that.msg(text['error'] || [\r\n 'Upload failed, please try again.',\r\n 'status: '+ (e.status || '') +' - '+ (e.statusText || 'error')\r\n ].join('
                  '));\r\n error(sets.index);\r\n allDone(sets.index);\r\n resetFileState(sets.file);\r\n }\r\n };\r\n\r\n // 进度条\r\n if(typeof options.progress === 'function'){\r\n opts.xhr = function(){\r\n var xhr = $.ajaxSettings.xhr();\r\n // 上传进度\r\n xhr.upload.addEventListener(\"progress\", function (obj) {\r\n if(obj.lengthComputable){\r\n var percent = Math.floor((obj.loaded/obj.total)* 100); // 百分比\r\n options.progress(percent, (options.item ? options.item[0] : options.elem[0]) , obj, sets.index);\r\n }\r\n });\r\n return xhr;\r\n }\r\n }\r\n $.ajax(opts);\r\n };\r\n\r\n // 多文件是否一起上传\r\n if(options.unified){\r\n request({\r\n unified: true,\r\n index: 0\r\n });\r\n } else {\r\n layui.each(items, function(index, file){\r\n request({\r\n index: index,\r\n file: file\r\n });\r\n });\r\n }\r\n };\r\n \r\n // 低版本 IE 处理方式,不支持跨域\r\n var iframeSend = function(){\r\n var iframe = $('#'+ ELEM_IFRAME);\r\n \r\n that.elemFile.parent().submit();\r\n\r\n // 获取响应信息\r\n clearInterval(Class.timer);\r\n Class.timer = setInterval(function() {\r\n var res, iframeBody = iframe.contents().find('body');\r\n try {\r\n res = iframeBody.text();\r\n } catch(e) {\r\n that.msg(text['cross-domain']); \r\n clearInterval(Class.timer);\r\n error();\r\n }\r\n if(res){\r\n clearInterval(Class.timer);\r\n iframeBody.html('');\r\n done(0, res);\r\n }\r\n }, 30); \r\n };\r\n \r\n // 统一回调\r\n var done = function(index, res){\r\n that.elemFile.next('.'+ ELEM_CHOOSE).remove();\r\n elemFile.value = '';\r\n \r\n if(options.force === 'json'){\r\n if(typeof res !== 'object'){\r\n try {\r\n res = JSON.parse(res);\r\n } catch(e){\r\n res = {};\r\n return that.msg(text['data-format-error']);\r\n }\r\n }\r\n }\r\n \r\n typeof options.done === 'function' && options.done(res, index || 0, function(files){\r\n that.upload(files);\r\n });\r\n };\r\n \r\n // 统一网络异常回调\r\n var error = function(index){\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n typeof options.error === 'function' && options.error(index || 0, function(files){\r\n that.upload(files);\r\n });\r\n };\r\n \r\n var check;\r\n var exts = options.exts;\r\n var value = function(){\r\n var arr = [];\r\n layui.each(files || that.chooseFiles, function(i, item){\r\n arr.push(item.name);\r\n });\r\n return arr;\r\n }();\r\n \r\n // 回调函数返回的参数\r\n var args = {\r\n // 预览\r\n preview: function(callback){\r\n that.preview(callback);\r\n },\r\n // 上传\r\n upload: function(index, file){\r\n var thisFile = {};\r\n thisFile[index] = file;\r\n that.upload(thisFile);\r\n },\r\n // 追加文件到队列\r\n pushFile: function(){\r\n that.files = that.files || {};\r\n layui.each(that.chooseFiles, function(index, item){\r\n that.files[index] = item;\r\n });\r\n return that.files;\r\n },\r\n // 重置文件\r\n resetFile: function(index, file, filename){\r\n var newFile = new File([file], filename);\r\n that.files = that.files || {};\r\n that.files[index] = newFile;\r\n }\r\n };\r\n \r\n // 提交上传\r\n var send = function(){\r\n // 上传前的回调 - 如果回调函数明确返回 false,则停止上传\r\n if(options.before && (options.before(args) === false)) return;\r\n\r\n // IE 兼容处理\r\n if(device.ie){\r\n return device.ie > 9 ? ajaxSend() : iframeSend();\r\n }\r\n \r\n ajaxSend();\r\n };\r\n \r\n // 文件类型名称\r\n var typeName = ({\r\n file: '文件',\r\n images: '图片',\r\n video: '视频',\r\n audio: '音频'\r\n })[options.accept] || '文件';\r\n\r\n // 校验文件格式\r\n value = value.length === 0 \r\n ? ((elemFile.value.match(/[^\\/\\\\]+\\..+/g)||[]) || '')\r\n : value;\r\n \r\n // 若文件域值为空\r\n if (value.length === 0) return;\r\n \r\n // 根据文件类型校验\r\n switch(options.accept){\r\n case 'file': // 一般文件\r\n layui.each(value, function(i, item){\r\n if(exts && !RegExp('.\\\\.('+ exts +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n case 'video': // 视频文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'avi|mp4|wma|rmvb|rm|flash|3gp|flv') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n case 'audio': // 音频文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'mp3|wav|mid') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n default: // 图片文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'jpg|png|gif|bmp|jpeg|svg') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n }\r\n \r\n // 校验失败提示\r\n if(check){\r\n that.msg(text['check-error'] || ('选择的'+ typeName +'中包含不支持的格式'));\r\n return elemFile.value = '';\r\n }\r\n\r\n // 选择文件的回调 \r\n if(type === 'choose' || options.auto){\r\n options.choose && options.choose(args);\r\n if(type === 'choose'){\r\n return;\r\n }\r\n }\r\n \r\n // 检验文件数量\r\n that.fileLength = function(){\r\n var length = 0;\r\n var items = getFiles();\r\n layui.each(items, function(){\r\n length++;\r\n });\r\n return length;\r\n }();\r\n \r\n if(options.number && that.fileLength > options.number){\r\n return that.msg(typeof text['limit-number'] === 'function' \r\n ? text['limit-number'](options, that.fileLength) \r\n : (\r\n '同时最多只能上传: '+ options.number + ' 个文件'\r\n +'
                  您当前已经选择了: '+ that.fileLength +' 个文件'\r\n ));\r\n }\r\n \r\n // 检验文件大小\r\n if(options.size > 0 && !(device.ie && device.ie < 10)){\r\n var limitSize;\r\n \r\n layui.each(getFiles(), function(index, file){\r\n if(file.size > 1024*options.size){\r\n var size = options.size/1024;\r\n size = size >= 1 ? (size.toFixed(2) + 'MB') : options.size + 'KB'\r\n elemFile.value = '';\r\n limitSize = size;\r\n }\r\n });\r\n if(limitSize) return that.msg(typeof text['limit-size'] === 'function' \r\n ? text['limit-size'](options, limitSize) \r\n : '文件大小不能超过 '+ limitSize);\r\n }\r\n\r\n send();\r\n };\r\n \r\n //事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 设置当前选择的文件队列\r\n var setChooseFile = function(files){\r\n that.chooseFiles = {};\r\n layui.each(files, function(i, item){\r\n var time = new Date().getTime();\r\n that.chooseFiles[time + '-' + i] = item;\r\n });\r\n };\r\n \r\n // 设置选择的文本\r\n var setChooseText = function(files, filename){\r\n var elemFile = that.elemFile;\r\n var item = options.item ? options.item : options.elem;\r\n var value = files.length > 1 \r\n ? files.length + '个文件' \r\n : ((files[0] || {}).name || (elemFile[0].value.match(/[^\\/\\\\]+\\..+/g)||[]) || '');\r\n \r\n if(elemFile.next().hasClass(ELEM_CHOOSE)){\r\n elemFile.next().remove();\r\n }\r\n that.upload(null, 'choose');\r\n if(that.isFile() || options.choose) return;\r\n elemFile.after(''+ value +'');\r\n };\r\n\r\n // 点击上传容器\r\n options.elem.off('upload.start').on('upload.start', function(){\r\n var othis = $(this);\r\n\r\n that.config.item = othis;\r\n that.elemFile[0].click();\r\n });\r\n \r\n // 拖拽上传\r\n if(!(device.ie && device.ie < 10)){\r\n options.elem.off('upload.over').on('upload.over', function(){\r\n var othis = $(this)\r\n othis.attr('lay-over', '');\r\n })\r\n .off('upload.leave').on('upload.leave', function(){\r\n var othis = $(this)\r\n othis.removeAttr('lay-over');\r\n })\r\n .off('upload.drop').on('upload.drop', function(e, param){\r\n var othis = $(this);\r\n var files = param.originalEvent.dataTransfer.files || [];\r\n \r\n othis.removeAttr('lay-over');\r\n setChooseFile(files);\r\n\r\n options.auto ? that.upload() : setChooseText(files); // 是否自动触发上传\r\n });\r\n }\r\n \r\n // 文件选择\r\n that.elemFile.on('change', function(){\r\n var files = this.files || [];\r\n\r\n if(files.length === 0) return;\r\n\r\n setChooseFile(files);\r\n\r\n options.auto ? that.upload() : setChooseText(files); // 是否自动触发上传\r\n });\r\n \r\n // 手动触发上传\r\n options.bindAction.off('upload.action').on('upload.action', function(){\r\n that.upload();\r\n });\r\n\r\n\r\n // 防止事件重复绑定\r\n if(options.elem.data(MOD_INDEX)) return;\r\n\r\n\r\n // 目标元素 click 事件\r\n options.elem.on('click', function(){\r\n if(that.isFile()) return;\r\n $(this).trigger('upload.start');\r\n });\r\n \r\n // 目标元素 drop 事件\r\n if(options.drag){\r\n options.elem.on('dragover', function(e){\r\n e.preventDefault();\r\n $(this).trigger('upload.over');\r\n }).on('dragleave', function(e){\r\n $(this).trigger('upload.leave');\r\n }).on('drop', function(e){\r\n e.preventDefault();\r\n $(this).trigger('upload.drop', e);\r\n });\r\n }\r\n \r\n // 手动上传时触发上传的元素 click 事件\r\n options.bindAction.on('click', function(){\r\n $(this).trigger('upload.action');\r\n });\r\n \r\n // 绑定元素索引\r\n options.elem.data(MOD_INDEX, options.id);\r\n };\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n\r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 核心入口 \r\n upload.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n \r\n exports(MOD_NAME, upload);\r\n});\r\n\r\n","/**\r\n * form 表单组件\r\n */\r\n \r\nlayui.define(['lay', 'layer', 'util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var layer = layui.layer;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n \r\n var MOD_NAME = 'form';\r\n var ELEM = '.layui-form';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled';\r\n var OUT_OF_RANGE = 'layui-input-number-out-of-range';\r\n \r\n var Form = function(){\r\n this.config = {\r\n // 内置的验证规则\r\n verify: {\r\n required: function(value) {\r\n if (!/[\\S]+/.test(value)) {\r\n return '必填项不能为空';\r\n }\r\n },\r\n phone: function(value) {\r\n var EXP = /^1\\d{10}$/;\r\n if (value && !EXP.test(value)) {\r\n return '手机号格式不正确';\r\n }\r\n },\r\n email: function(value) {\r\n var EXP = /^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/;\r\n if (value && !EXP.test(value)) {\r\n return '邮箱格式不正确';\r\n }\r\n },\r\n url: function(value) {\r\n var EXP = /^(#|(http(s?)):\\/\\/|\\/\\/)[^\\s]+\\.[^\\s]+$/;\r\n if (value && !EXP.test(value)) {\r\n return '链接格式不正确';\r\n }\r\n },\r\n number: function(value){\r\n if (value && isNaN(value)) {\r\n return '只能填写数字';\r\n }\r\n },\r\n date: function(value){\r\n var EXP = /^(\\d{4})[-\\/](\\d{1}|0\\d{1}|1[0-2])([-\\/](\\d{1}|0\\d{1}|[1-2][0-9]|3[0-1]))*$/;\r\n if (value && !EXP.test(value)) {\r\n return '日期格式不正确';\r\n }\r\n },\r\n identity: function(value) {\r\n var EXP = /(^\\d{15}$)|(^\\d{17}(x|X|\\d)$)/;\r\n if (value && !EXP.test(value)) {\r\n return '身份证号格式不正确';\r\n }\r\n }\r\n },\r\n autocomplete: null // 全局 autocomplete 状态。 null 表示不干预\r\n };\r\n };\r\n \r\n // 全局设置\r\n Form.prototype.set = function(options){\r\n var that = this;\r\n $.extend(true, that.config, options);\r\n return that;\r\n };\r\n \r\n // 验证规则设定\r\n Form.prototype.verify = function(settings){\r\n var that = this;\r\n $.extend(true, that.config.verify, settings);\r\n return that;\r\n };\r\n\r\n // 获取指定表单对象\r\n Form.prototype.getFormElem = function(filter){\r\n return $(ELEM + function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }());\r\n };\r\n \r\n // 表单事件\r\n Form.prototype.on = function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n };\r\n \r\n // 赋值/取值\r\n Form.prototype.val = function(filter, object){\r\n var that = this\r\n ,formElem = that.getFormElem(filter);\r\n \r\n // 遍历\r\n formElem.each(function(index, item){\r\n var itemForm = $(this);\r\n \r\n // 赋值\r\n layui.each(object, function(key, value){\r\n var itemElem = itemForm.find('[name=\"'+ key +'\"]')\r\n ,type;\r\n \r\n // 如果对应的表单不存在,则不执行\r\n if(!itemElem[0]) return;\r\n type = itemElem[0].type;\r\n \r\n // 如果为复选框\r\n if(type === 'checkbox'){\r\n itemElem[0].checked = value;\r\n } else if(type === 'radio') { // 如果为单选框\r\n itemElem.each(function(){\r\n this.checked = this.value == value;\r\n });\r\n } else { // 其它类型的表单\r\n itemElem.val(value);\r\n }\r\n });\r\n });\r\n \r\n form.render(null, filter);\r\n \r\n // 返回值\r\n return that.getValue(filter);\r\n };\r\n \r\n // 取值\r\n Form.prototype.getValue = function(filter, itemForm){\r\n itemForm = itemForm || this.getFormElem(filter);\r\n \r\n var nameIndex = {} // 数组 name 索引\r\n ,field = {}\r\n ,fieldElem = itemForm.find('input,select,textarea') // 获取所有表单域\r\n \r\n layui.each(fieldElem, function(_, item){ \r\n var othis = $(this)\r\n ,init_name; // 初始 name\r\n \r\n item.name = (item.name || '').replace(/^\\s*|\\s*&/, '');\r\n if(!item.name) return;\r\n \r\n // 用于支持数组 name\r\n if(/^.*\\[\\]$/.test(item.name)){\r\n var key = item.name.match(/^(.*)\\[\\]$/g)[0];\r\n nameIndex[key] = nameIndex[key] | 0;\r\n init_name = item.name.replace(/^(.*)\\[\\]$/, '$1['+ (nameIndex[key]++) +']');\r\n }\r\n \r\n if(/^(checkbox|radio)$/.test(item.type) && !item.checked) return; // 复选框和单选框未选中,不记录字段 \r\n field[init_name || item.name] = item.value;\r\n });\r\n \r\n return field;\r\n };\r\n \r\n // 表单控件渲染\r\n Form.prototype.render = function(type, filter){\r\n var that = this;\r\n var options = that.config;\r\n var elemForm = $(ELEM + function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }());\r\n var items = {\r\n // 输入框\r\n input: function(elem){\r\n var inputs = elem || elemForm.find('input,textarea');\r\n\r\n // 初始化全局的 autocomplete\r\n options.autocomplete && inputs.attr('autocomplete', options.autocomplete);\r\n\r\n var handleInputNumber = function(elem, eventType){\r\n var that = this;\r\n var rawValue = elem.val();\r\n var value = Number(rawValue);\r\n var step = Number(elem.attr('step')) || 1; // 加减的数字间隔\r\n var min = Number(elem.attr('min'));\r\n var max = Number(elem.attr('max'));\r\n var precision = Number(elem.attr('lay-precision'));\r\n var noAction = eventType !== 'click' && rawValue === ''; // 初始渲染和失焦时空值不作处理\r\n var isInit = eventType === 'init';\r\n\r\n if(isNaN(value)) return; // 若非数字,则不作处理\r\n\r\n if(eventType === 'click'){\r\n var isDecrement = !!$(that).index() // 0: icon-up, 1: icon-down\r\n value = isDecrement ? value - step : value + step;\r\n }\r\n\r\n // 获取小数点后位数\r\n var decimals = function(step){\r\n var decimals = (step.toString().match(/\\.(\\d+$)/) || [])[1] || '';\r\n return decimals.length;\r\n };\r\n\r\n precision = precision >= 0 ? precision : Math.max(decimals(step), decimals(rawValue));\r\n\r\n if(!noAction){\r\n // 初始渲染时只处理数字精度\r\n if(!isInit){\r\n if(value <= min) value = min;\r\n if(value >= max) value = max;\r\n }\r\n if(precision) value = value.toFixed(precision);\r\n elem.val(value);\r\n }\r\n\r\n // 超出范围的样式\r\n var outOfRange = value < min || value > max;\r\n elem[outOfRange && !noAction ? 'addClass' : 'removeClass'](OUT_OF_RANGE);\r\n\r\n if(isInit) return;\r\n\r\n // 更新按钮状态\r\n var controlBtn = {\r\n increment: elem.next().find('.layui-icon-up'),\r\n decrement: elem.next().find('.layui-icon-down')\r\n }\r\n controlBtn.increment[(value >= max && !noAction) ? 'addClass' : 'removeClass'](DISABLED)\r\n controlBtn.decrement[(value <= min && !noAction) ? 'addClass' : 'removeClass'](DISABLED)\r\n }\r\n\r\n // 初始化输入框动态点缀\r\n elemForm.find('input[lay-affix],textarea[lay-affix]').each(function(){\r\n var othis = $(this);\r\n var affix = othis.attr('lay-affix');\r\n var CLASS_WRAP = 'layui-input-wrap';\r\n var CLASS_SUFFIX = 'layui-input-suffix';\r\n var CLASS_AFFIX = 'layui-input-affix';\r\n var disabled = othis.is('[disabled]') || othis.is('[readonly]');\r\n\r\n // 根据是否空值来显示或隐藏元素\r\n var showAffix = function(elem, value){\r\n elem = $(elem);\r\n if(!elem[0]) return;\r\n elem[$.trim(value) ? 'removeClass' : 'addClass'](HIDE);\r\n };\r\n\r\n // 渲染动态点缀内容\r\n var renderAffix = function(opts){\r\n opts = $.extend({}, (affixOptions[affix] || {\r\n value: affix\r\n }), opts, lay.options(othis[0]));\r\n var elemAffix = $('
                  ');\r\n var value = layui.isArray(opts.value) ? opts.value : [opts.value];\r\n var elemIcon = $(function(){\r\n var arr = [];\r\n layui.each(value, function(i, item){\r\n arr.push('');\r\n });\r\n return arr.join('');\r\n }());\r\n \r\n elemAffix.append(elemIcon); // 插入图标元素\r\n\r\n // 追加 className\r\n if(opts.split) elemAffix.addClass('layui-input-split');\r\n if(opts.className) elemAffix.addClass(opts.className);\r\n\r\n // 移除旧的元素\r\n var hasElemAffix = othis.next('.'+ CLASS_AFFIX);\r\n if(hasElemAffix[0]) hasElemAffix.remove();\r\n\r\n // 是否在规定的容器中\r\n if(!othis.parent().hasClass(CLASS_WRAP)){\r\n othis.wrap('
                  ');\r\n }\r\n\r\n // 是否已经存在后缀元素\r\n var hasElemSuffix = othis.next('.'+ CLASS_SUFFIX);\r\n if(hasElemSuffix[0]){\r\n hasElemAffix = hasElemSuffix.find('.'+ CLASS_AFFIX);\r\n if(hasElemAffix[0]) hasElemAffix.remove();\r\n\r\n hasElemSuffix.prepend(elemAffix);\r\n\r\n othis.css('padding-right', function(){\r\n var paddingRight = othis.closest('.layui-input-group')[0] \r\n ? 0 \r\n : hasElemSuffix.outerWidth();\r\n return paddingRight + elemAffix.outerWidth()\r\n });\r\n } else {\r\n elemAffix.addClass(CLASS_SUFFIX);\r\n othis.after(elemAffix);\r\n }\r\n\r\n opts.show === 'auto' && showAffix(elemAffix, othis.val());\r\n \r\n typeof opts.init === 'function' && opts.init.call(this, othis, opts);\r\n \r\n // 输入事件\r\n othis.on('input propertychange', function(){\r\n var value = this.value;\r\n opts.show === 'auto' && showAffix(elemAffix, value);\r\n });\r\n\r\n // 失去焦点事件\r\n othis.on('blur', function(){\r\n typeof opts.blur === 'function' && opts.blur.call(this, othis, opts);\r\n });\r\n \r\n // 点击动态后缀事件\r\n elemIcon.on('click', function(){\r\n var inputFilter = othis.attr('lay-filter');\r\n if($(this).hasClass(DISABLED)) return;\r\n \r\n typeof opts.click === 'function' && opts.click.call(this, othis, opts);\r\n \r\n // 对外事件\r\n layui.event.call(this, MOD_NAME, 'input-affix('+ inputFilter +')', {\r\n elem: othis[0],\r\n affix: affix,\r\n options: opts\r\n });\r\n });\r\n };\r\n \r\n // 动态点缀配置项\r\n var affixOptions = {\r\n eye: { // 密码显隐\r\n value: 'eye-invisible',\r\n click: function(elem, opts){ // 事件\r\n var SHOW_NAME = 'LAY_FORM_INPUT_AFFIX_SHOW';\r\n var isShow = elem.data(SHOW_NAME);\r\n \r\n elem.attr('type', isShow ? 'password' : 'text').data(SHOW_NAME, !isShow);\r\n\r\n renderAffix({\r\n value: isShow ? 'eye-invisible' : 'eye'\r\n });\r\n }\r\n },\r\n clear: { // 内容清除\r\n value: 'clear',\r\n click: function(elem){\r\n elem.val('').focus();\r\n showAffix($(this).parent(), null);\r\n },\r\n show: 'auto', // 根据输入框值是否存在来显示或隐藏点缀图标\r\n disabled: disabled // 跟随输入框禁用状态\r\n },\r\n number: { // 数字输入框\r\n value: ['up', 'down'],\r\n split: true,\r\n className: 'layui-input-number',\r\n disabled: othis.is('[disabled]'), // 跟随输入框禁用状态\r\n init: function(elem){\r\n handleInputNumber.call(this, elem, 'init')\r\n },\r\n click: function(elem){\r\n handleInputNumber.call(this, elem, 'click')\r\n },\r\n blur: function(elem){\r\n handleInputNumber.call(this, elem, 'blur')\r\n },\r\n }\r\n };\r\n \r\n renderAffix();\r\n });\r\n }\r\n \r\n // 下拉选择框\r\n ,select: function(elem){\r\n var TIPS = '请选择';\r\n var CLASS = 'layui-form-select';\r\n var TITLE = 'layui-select-title';\r\n var NONE = 'layui-select-none';\r\n var initValue = '';\r\n var thatInput;\r\n var selects = elem || elemForm.find('select');\r\n\r\n // 隐藏 select\r\n var hide = function(e, clear){\r\n if(!$(e.target).parent().hasClass(TITLE) || clear){\r\n $('.'+CLASS).removeClass(CLASS+'ed ' + CLASS+'up');\r\n thatInput && initValue && thatInput.val(initValue);\r\n }\r\n thatInput = null;\r\n };\r\n \r\n // 各种事件\r\n var events = function(reElem, disabled, isSearch){\r\n var select = $(this);\r\n var title = reElem.find('.' + TITLE);\r\n var input = title.find('input');\r\n var dl = reElem.find('dl');\r\n var dds = dl.children('dd');\r\n var dts = dl.children('dt'); // select 分组dt元素\r\n var index = this.selectedIndex; // 当前选中的索引\r\n var nearElem; // select 组件当前选中的附近元素,用于辅助快捷键功能\r\n \r\n if(disabled) return;\r\n\r\n // 搜索项\r\n var laySearch = select.attr('lay-search');\r\n \r\n // 展开下拉\r\n var showDown = function(){\r\n var top = reElem.offset().top + reElem.outerHeight() + 5 - $win.scrollTop();\r\n var dlHeight = dl.outerHeight();\r\n \r\n index = select[0].selectedIndex; // 获取最新的 selectedIndex\r\n reElem.addClass(CLASS+'ed');\r\n dds.removeClass(HIDE);\r\n dts.removeClass(HIDE);\r\n nearElem = null;\r\n\r\n // 初始选中样式\r\n dds.removeClass(THIS);\r\n index >= 0 && dds.eq(index).addClass(THIS);\r\n\r\n // 上下定位识别\r\n if(top + dlHeight > $win.height() && top >= dlHeight){\r\n reElem.addClass(CLASS + 'up');\r\n }\r\n\r\n followScroll();\r\n };\r\n \r\n // 隐藏下拉\r\n var hideDown = function(choose){\r\n reElem.removeClass(CLASS+'ed ' + CLASS+'up');\r\n input.blur();\r\n nearElem = null;\r\n \r\n if(choose) return;\r\n \r\n notOption(input.val(), function(none){\r\n var selectedIndex = select[0].selectedIndex;\r\n \r\n // 未查询到相关值\r\n if(none){\r\n initValue = $(select[0].options[selectedIndex]).html(); // 重新获得初始选中值\r\n \r\n // 如果是第一项,且文本值等于 placeholder,则清空初始值\r\n if(selectedIndex === 0 && initValue === input.attr('placeholder')){\r\n initValue = '';\r\n }\r\n\r\n // 如果有选中值,则将输入框纠正为该值。否则清空输入框\r\n input.val(initValue || '');\r\n }\r\n });\r\n };\r\n \r\n // 定位下拉滚动条\r\n var followScroll = function(){ \r\n var thisDd = dl.children('dd.'+ THIS);\r\n \r\n if(!thisDd[0]) return;\r\n \r\n var posTop = thisDd.position().top;\r\n var dlHeight = dl.height();\r\n var ddHeight = thisDd.height();\r\n \r\n // 若选中元素在滚动条不可见底部\r\n if(posTop > dlHeight){\r\n dl.scrollTop(posTop + dl.scrollTop() - dlHeight + ddHeight - 5);\r\n }\r\n \r\n // 若选择玄素在滚动条不可见顶部\r\n if(posTop < 0){\r\n dl.scrollTop(posTop + dl.scrollTop() - 5);\r\n }\r\n };\r\n \r\n // 点击标题区域\r\n title.on('click', function(e){\r\n reElem.hasClass(CLASS+'ed') ? (\r\n hideDown()\r\n ) : (\r\n hide(e, true), \r\n showDown()\r\n );\r\n dl.find('.'+NONE).remove();\r\n }); \r\n \r\n // 点击箭头获取焦点\r\n title.find('.layui-edge').on('click', function(){\r\n input.focus();\r\n });\r\n \r\n // select 中 input 键盘事件\r\n input.on('keyup', function(e){ // 键盘松开\r\n var keyCode = e.keyCode;\r\n \r\n // Tab键展开\r\n if(keyCode === 9){\r\n showDown();\r\n }\r\n }).on('keydown', function(e){ // 键盘按下\r\n var keyCode = e.keyCode;\r\n\r\n // Tab键隐藏\r\n if(keyCode === 9){\r\n hideDown();\r\n }\r\n \r\n // 标注 dd 的选中状态\r\n var setThisDd = function(prevNext, thisElem1){\r\n var nearDd, cacheNearElem\r\n e.preventDefault();\r\n\r\n // 得到当前队列元素 \r\n var thisElem = function(){\r\n var thisDd = dl.children('dd.'+ THIS);\r\n \r\n // 如果是搜索状态,且按 Down 键,且当前可视 dd 元素在选中元素之前,\r\n // 则将当前可视 dd 元素的上一个元素作为虚拟的当前选中元素,以保证递归不中断\r\n if(dl.children('dd.'+ HIDE)[0] && prevNext === 'next'){\r\n var showDd = dl.children('dd:not(.'+ HIDE +',.'+ DISABLED +')')\r\n ,firstIndex = showDd.eq(0).index();\r\n if(firstIndex >=0 && firstIndex < thisDd.index() && !showDd.hasClass(THIS)){\r\n return showDd.eq(0).prev()[0] ? showDd.eq(0).prev() : dl.children(':last');\r\n }\r\n }\r\n\r\n if(thisElem1 && thisElem1[0]){\r\n return thisElem1;\r\n }\r\n if(nearElem && nearElem[0]){\r\n return nearElem;\r\n }\r\n \r\n return thisDd;\r\n // return dds.eq(index);\r\n }();\r\n \r\n cacheNearElem = thisElem[prevNext](); // 当前元素的附近元素\r\n nearDd = thisElem[prevNext]('dd:not(.'+ HIDE +')'); // 当前可视元素的 dd 元素\r\n\r\n // 如果附近的元素不存在,则停止执行,并清空 nearElem\r\n if(!cacheNearElem[0]) return nearElem = null;\r\n \r\n // 记录附近的元素,让其成为下一个当前元素\r\n nearElem = thisElem[prevNext]();\r\n\r\n // 如果附近不是 dd ,或者附近的 dd 元素是禁用状态,则进入递归查找\r\n if((!nearDd[0] || nearDd.hasClass(DISABLED)) && nearElem[0]){\r\n return setThisDd(prevNext, nearElem);\r\n }\r\n \r\n nearDd.addClass(THIS).siblings().removeClass(THIS); // 标注样式\r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(keyCode === 38) setThisDd('prev'); // Up 键\r\n if(keyCode === 40) setThisDd('next'); // Down 键\r\n \r\n // Enter 键\r\n if(keyCode === 13){ \r\n e.preventDefault();\r\n dl.children('dd.'+THIS).trigger('click');\r\n }\r\n });\r\n \r\n // 检测值是否不属于 select 项\r\n var notOption = function(value, callback, origin){\r\n var num = 0;\r\n layui.each(dds, function(){\r\n var othis = $(this);\r\n var text = othis.text();\r\n\r\n // 是否区分大小写\r\n if(laySearch !== 'cs'){\r\n text = text.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n \r\n // 匹配\r\n var not = text.indexOf(value) === -1;\r\n \r\n if(value === '' || (origin === 'blur') ? value !== text : not) num++;\r\n origin === 'keyup' && othis[not ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n // 处理 select 分组元素\r\n origin === 'keyup' && layui.each(dts, function(){\r\n var othis = $(this)\r\n ,thisDds = othis.nextUntil('dt').filter('dd') // 当前分组下的dd元素\r\n ,allHide = thisDds.length == thisDds.filter('.' + HIDE).length; // 当前分组下所有dd元素都隐藏了\r\n othis[allHide ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n var none = num === dds.length;\r\n return callback(none), none;\r\n };\r\n \r\n // 搜索匹配\r\n var search = function(e){\r\n var value = this.value, keyCode = e.keyCode;\r\n \r\n if(keyCode === 9 || keyCode === 13 \r\n || keyCode === 37 || keyCode === 38 \r\n || keyCode === 39 || keyCode === 40\r\n ){\r\n return false;\r\n }\r\n \r\n notOption(value, function(none){\r\n if(none){\r\n dl.find('.'+NONE)[0] || dl.append('

                  无匹配项

                  ');\r\n } else {\r\n dl.find('.'+NONE).remove();\r\n }\r\n }, 'keyup');\r\n \r\n // 当搜索值清空时\r\n if(value === ''){\r\n // 取消选中项\r\n select.val('');\r\n dl.find('.'+ THIS).removeClass(THIS);\r\n (select[0].options[0] || {}).value || dl.children('dd:eq(0)').addClass(THIS);\r\n dl.find('.'+ NONE).remove();\r\n }\r\n \r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(isSearch){\r\n input.on('input propertychange', search).on('blur', function(e){\r\n var selectedIndex = select[0].selectedIndex;\r\n \r\n thatInput = input; // 当前的 select 中的 input 元素\r\n initValue = $(select[0].options[selectedIndex]).text(); // 重新获得初始选中值\r\n \r\n // 如果是第一项,且文本值等于 placeholder,则清空初始值\r\n if(selectedIndex === 0 && initValue === input.attr('placeholder')){\r\n initValue = '';\r\n }\r\n \r\n setTimeout(function(){\r\n notOption(input.val(), function(none){\r\n initValue || input.val(''); // none && !initValue\r\n }, 'blur');\r\n }, 200);\r\n });\r\n }\r\n\r\n // 选择\r\n dds.on('click', function(){\r\n var othis = $(this), value = othis.attr('lay-value');\r\n var filter = select.attr('lay-filter'); // 获取过滤器\r\n \r\n if(othis.hasClass(DISABLED)) return false;\r\n \r\n if(othis.hasClass('layui-select-tips')){\r\n input.val('');\r\n } else {\r\n input.val(othis.text());\r\n othis.addClass(THIS);\r\n }\r\n\r\n othis.siblings().removeClass(THIS);\r\n select.val(value).removeClass('layui-form-danger');\r\n\r\n layui.event.call(this, MOD_NAME, 'select('+ filter +')', {\r\n elem: select[0]\r\n ,value: value\r\n ,othis: reElem\r\n });\r\n\r\n hideDown(true);\r\n return false;\r\n });\r\n \r\n reElem.find('dl>dt').on('click', function(e){\r\n return false;\r\n });\r\n \r\n $(document).off('click', hide).on('click', hide); // 点击其它元素关闭 select\r\n }\r\n \r\n // 初始渲染 select 组件选项\r\n selects.each(function(index, select){\r\n var othis = $(this)\r\n ,hasRender = othis.next('.'+CLASS)\r\n ,disabled = this.disabled\r\n ,value = select.value\r\n ,selected = $(select.options[select.selectedIndex]) // 获取当前选中项\r\n ,optionsFirst = select.options[0];\r\n \r\n if(typeof othis.attr('lay-ignore') === 'string') return othis.show();\r\n \r\n var isSearch = typeof othis.attr('lay-search') === 'string'\r\n ,placeholder = optionsFirst ? (\r\n optionsFirst.value ? TIPS : (optionsFirst.innerHTML || TIPS)\r\n ) : TIPS;\r\n\r\n // 替代元素\r\n var reElem = $(['
                  '\r\n ,'
                  '\r\n ,('') // 禁用状态\r\n ,'
                  '\r\n ,'
                  '\r\n ,function(options){\r\n var arr = [];\r\n layui.each(options, function(index, item){\r\n var tagName = item.tagName.toLowerCase();\r\n\r\n if(index === 0 && !item.value && tagName !== 'optgroup'){\r\n arr.push('
                  '+ $.trim(item.innerHTML || TIPS) +'
                  ');\r\n } else if(tagName === 'optgroup'){\r\n arr.push('
                  '+ item.label +'
                  '); \r\n } else {\r\n arr.push('
                  '+ $.trim(item.innerHTML) +'
                  ');\r\n }\r\n });\r\n arr.length === 0 && arr.push('
                  没有选项
                  ');\r\n return arr.join('');\r\n }(othis.find('*')) +'
                  '\r\n ,'
                  '].join(''));\r\n \r\n hasRender[0] && hasRender.remove(); // 如果已经渲染,则Rerender\r\n othis.after(reElem); \r\n events.call(this, reElem, disabled, isSearch);\r\n });\r\n }\r\n \r\n // 复选框/开关\r\n ,checkbox: function(elem){\r\n var CLASS = {\r\n \"checkbox\": ['layui-form-checkbox', 'layui-form-checked', 'checkbox'],\r\n \"switch\": ['layui-form-switch', 'layui-form-onswitch', 'switch'],\r\n SUBTRA: 'layui-icon-indeterminate'\r\n };\r\n var checks = elem || elemForm.find('input[type=checkbox]');\r\n // 风格\r\n var skins = {\r\n \"primary\": true, // 默认风格\r\n \"tag\": true, // 标签风格\r\n \"switch\": true // 开关风格\r\n };\r\n // 事件\r\n var events = function(reElem, RE_CLASS){\r\n var check = $(this);\r\n \r\n // 勾选\r\n reElem.on('click', function(){\r\n var othis = $(this);\r\n var filter = check.attr('lay-filter') // 获取过滤器\r\n var title = (\r\n othis.next('*[lay-checkbox]')[0] \r\n ? othis.next().html()\r\n : check.attr('title') || ''\r\n );\r\n var skin = check.attr('lay-skin') || 'primary';\r\n\r\n // 开关\r\n title = skin === 'switch' ? title.split('|') : [title];\r\n\r\n // 禁用\r\n if(check[0].disabled) return;\r\n \r\n // 半选\r\n if (check[0].indeterminate) {\r\n check[0].indeterminate = false;\r\n reElem.find('.'+ CLASS.SUBTRA).removeClass(CLASS.SUBTRA).addClass('layui-icon-ok');\r\n }\r\n\r\n // 开关\r\n check[0].checked ? (\r\n check[0].checked = false,\r\n reElem.removeClass(RE_CLASS[1]),\r\n skin === 'switch' && reElem.children('div').html(title[1])\r\n ) : (\r\n check[0].checked = true,\r\n reElem.addClass(RE_CLASS[1]),\r\n skin === 'switch' && reElem.children('div').html(title[0])\r\n );\r\n \r\n // 事件\r\n layui.event.call(check[0], MOD_NAME, RE_CLASS[2]+'('+ filter +')', {\r\n elem: check[0],\r\n value: check[0].value,\r\n othis: reElem\r\n });\r\n });\r\n };\r\n \r\n // 遍历复选框\r\n checks.each(function(index, check){\r\n var othis = $(this);\r\n var skin = othis.attr('lay-skin') || 'primary';\r\n var title = util.escape($.trim(check.title || function(){ // 向下兼容 lay-text 属性\r\n return check.title = othis.attr('lay-text') || '';\r\n }()));\r\n var disabled = this.disabled;\r\n\r\n // if(!skins[skin]) skin = 'primary'; // 若非内置风格,则强制为默认风格\r\n var RE_CLASS = CLASS[skin] || CLASS.checkbox;\r\n\r\n // 替代元素\r\n var hasRender = othis.next('.' + RE_CLASS[0]);\r\n hasRender[0] && hasRender.remove(); // 若已经渲染,则 Rerender\r\n \r\n // 若存在标题模板,则优先读取标题模板\r\n if(othis.next('[lay-checkbox]')[0]){\r\n title = othis.next().html() || '';\r\n }\r\n\r\n // 若为开关,则对 title 进行分隔解析\r\n title = skin === 'switch' ? title.split('|') : [title];\r\n \r\n if(typeof othis.attr('lay-ignore') === 'string') return othis.show();\r\n \r\n // 替代元素\r\n var reElem = $(['
                  ',\r\n function(){ // 不同风格的内容\r\n var type = {\r\n // 复选框\r\n \"checkbox\": [\r\n (title[0] ? ('
                  '+ title[0] +'
                  ') : (skin === 'primary' ? '' : '
                  ')),\r\n ''\r\n ].join(''),\r\n // 开关\r\n \"switch\": '
                  '+ ((check.checked ? title[0] : title[1]) || '') +'
                  '\r\n };\r\n return type[skin] || type['checkbox'];\r\n }(),\r\n '
                  '].join(''));\r\n\r\n othis.after(reElem);\r\n events.call(this, reElem, RE_CLASS);\r\n });\r\n }\r\n \r\n // 单选框\r\n ,radio: function(elem){\r\n var CLASS = 'layui-form-radio';\r\n var ICON = ['layui-icon-radio', 'layui-icon-circle'];\r\n var radios = elem || elemForm.find('input[type=radio]');\r\n\r\n // 事件\r\n var events = function(reElem){\r\n var radio = $(this);\r\n var ANIM = 'layui-anim-scaleSpring';\r\n \r\n reElem.on('click', function(){\r\n var name = radio[0].name, forms = radio.parents(ELEM);\r\n var filter = radio.attr('lay-filter'); // 获取过滤器\r\n var sameRadio = forms.find('input[name='+ name.replace(/(\\.|#|\\[|\\])/g, '\\\\$1') +']'); // 找到相同name的兄弟\r\n \r\n if(radio[0].disabled) return;\r\n \r\n layui.each(sameRadio, function(){\r\n var next = $(this).next('.' + CLASS);\r\n this.checked = false;\r\n next.removeClass(CLASS + 'ed');\r\n next.children('.layui-icon').removeClass(ANIM + ' ' + ICON[0]).addClass(ICON[1]);\r\n });\r\n \r\n radio[0].checked = true;\r\n reElem.addClass(CLASS + 'ed');\r\n reElem.children('.layui-icon').addClass(ANIM + ' ' + ICON[0]);\r\n \r\n layui.event.call(radio[0], MOD_NAME, 'radio('+ filter +')', {\r\n elem: radio[0],\r\n value: radio[0].value,\r\n othis: reElem\r\n });\r\n });\r\n };\r\n \r\n // 初始渲染\r\n radios.each(function(index, radio){\r\n var othis = $(this), hasRender = othis.next('.' + CLASS);\r\n var disabled = this.disabled;\r\n \r\n if(typeof othis.attr('lay-ignore') === 'string') return othis.show();\r\n hasRender[0] && hasRender.remove(); // 如果已经渲染,则Rerender\r\n \r\n // 替代元素\r\n var reElem = $(['
                  ', // 禁用状态\r\n '',\r\n '
                  '+ function(){\r\n var title = util.escape(radio.title || '');\r\n if(othis.next('[lay-radio]')[0]){\r\n title = othis.next().html();\r\n }\r\n return title;\r\n }() +'
                  ',\r\n '
                  '].join(''));\r\n\r\n othis.after(reElem);\r\n events.call(this, reElem);\r\n });\r\n }\r\n };\r\n\r\n // 执行所有渲染项\r\n var renderItem = function(){\r\n layui.each(items, function(index, item){\r\n item();\r\n });\r\n };\r\n\r\n // jquery 对象\r\n if (layui.type(type) === 'object') {\r\n // 若对象为表单域容器\r\n if($(type).is(ELEM)){\r\n elemForm = $(type);\r\n renderItem();\r\n } else { // 对象为表单项\r\n type.each(function (index, item) {\r\n var elem = $(item);\r\n if (!elem.closest(ELEM).length) {\r\n return; // 若不在 layui-form 容器中直接跳过\r\n }\r\n if (item.tagName === 'SELECT') {\r\n items['select'](elem);\r\n } else if (item.tagName === 'INPUT') {\r\n var itemType = item.type;\r\n if (itemType === 'checkbox' || itemType === 'radio') {\r\n items[itemType](elem);\r\n } else {\r\n items['input'](elem);\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n type ? (\r\n items[type] ? items[type]() : hint.error('不支持的 \"'+ type + '\" 表单渲染')\r\n ) : renderItem();\r\n }\r\n return that;\r\n };\r\n\r\n // 主动触发验证 --- elem 即要验证的区域表单选择器 / return true or false\r\n Form.prototype.validate = function(elem) {\r\n var that = this;\r\n var intercept; // 拦截标识\r\n var options = that.config; // 获取全局配置项\r\n var verify = options.verify; // 验证规则\r\n var DANGER = 'layui-form-danger'; // 警示样式\r\n\r\n elem = $(elem);\r\n\r\n // 节点不存在可视为 true\r\n if (!elem[0]) return !0;\r\n\r\n // 若节点不存在特定属性,则查找容器内有待验证的子节点\r\n if (elem.attr('lay-verify') === undefined) {\r\n // 若校验的是一个不带验证规则的容器,校验内部的 lay-verify 节点\r\n if (that.validate(elem.find('*[lay-verify]')) === false) {\r\n return false;\r\n }\r\n }\r\n\r\n // 开始校验\r\n layui.each(elem, function(_, item) {\r\n var othis = $(this);\r\n var verifyStr = othis.attr('lay-verify') || '';\r\n var vers = verifyStr.split('|');\r\n var verType = othis.attr('lay-vertype'); // 提示方式\r\n var value = $.trim(othis.val());\r\n\r\n othis.removeClass(DANGER); // 移除警示样式\r\n \r\n // 遍历元素绑定的验证规则\r\n layui.each(vers, function(_, thisVer) {\r\n var verst; // 校验结果\r\n var errorText = ''; // 错误提示文本\r\n var rule = verify[thisVer]; // 获取校验规则\r\n \r\n // 匹配验证规则\r\n if (rule) {\r\n verst = typeof rule === 'function'\r\n ? errorText = rule(value, item) \r\n : !rule[0].test(value); // 兼容早期数组中的正则写法\r\n \r\n // 是否属于美化替换后的表单元素\r\n var isForm2Elem = item.tagName.toLowerCase() === 'select' || (\r\n /^(checkbox|radio)$/.test(item.type)\r\n );\r\n \r\n errorText = errorText || rule[1];\r\n \r\n // 获取自定义必填项提示文本\r\n if (thisVer === 'required') {\r\n errorText = othis.attr('lay-reqtext') || errorText;\r\n }\r\n \r\n // 若命中校验规则\r\n if (verst) {\r\n // 提示层风格\r\n if (verType === 'tips') {\r\n layer.tips(errorText, function(){\r\n if(typeof othis.attr('lay-ignore') !== 'string'){\r\n if(isForm2Elem){\r\n return othis.next();\r\n }\r\n }\r\n return othis;\r\n }(), {tips: 1});\r\n } else if(verType === 'alert') {\r\n layer.alert(errorText, {title: '提示', shadeClose: true});\r\n } \r\n // 若返回的为字符或数字,则自动弹出默认提示框;否则由 verify 方法中处理提示\r\n else if(/\\b(string|number)\\b/.test(typeof errorText)) {\r\n layer.msg(errorText, {icon: 5, shift: 6});\r\n }\r\n\r\n setTimeout(function() {\r\n (isForm2Elem ? othis.next().find('input') : item).focus();\r\n }, 7);\r\n \r\n othis.addClass(DANGER);\r\n return intercept = true;\r\n }\r\n }\r\n });\r\n\r\n if (intercept) return intercept;\r\n });\r\n\r\n return !intercept;\r\n };\r\n\r\n // 提交表单并校验\r\n var submit = Form.prototype.submit = function(filter, callback){\r\n var field = {}; // 字段集合\r\n var button = $(this); // 当前触发的按钮\r\n\r\n // 表单域 lay-filter 属性值\r\n var layFilter = typeof filter === 'string' \r\n ? filter \r\n : button.attr('lay-filter');\r\n\r\n // 当前所在表单域\r\n var elem = this.getFormElem \r\n ? this.getFormElem(layFilter) \r\n : button.parents(ELEM).eq(0);\r\n\r\n // 获取需要校验的元素\r\n var verifyElem = elem.find('*[lay-verify]');\r\n\r\n // 开始校验\r\n if(!form.validate(verifyElem)) return false;\r\n\r\n // 获取当前表单值\r\n field = form.getValue(null, elem);\r\n\r\n // 返回的参数\r\n var params = {\r\n elem: this.getFormElem ? (window.event && window.event.target) : this // 触发事件的对象\r\n ,form: this.getFormElem ? elem[0] : button.parents('form')[0] // 当前所在的 form 元素,如果存在的话\r\n ,field: field // 当前表单数据\r\n };\r\n \r\n // 回调\r\n typeof callback === 'function' && callback(params);\r\n \r\n // 事件\r\n return layui.event.call(this, MOD_NAME, 'submit('+ layFilter +')', params);\r\n };\r\n \r\n var form = new Form();\r\n var $dom = $(document);\r\n var $win = $(window);\r\n \r\n // 初始自动完成渲染\r\n $(function(){\r\n form.render();\r\n });\r\n \r\n // 表单 reset 重置渲染\r\n $dom.on('reset', ELEM, function(){\r\n var filter = $(this).attr('lay-filter');\r\n setTimeout(function(){\r\n form.render(null, filter);\r\n }, 50);\r\n });\r\n \r\n // 表单提交事件\r\n $dom.on('submit', ELEM, submit)\r\n .on('click', '*[lay-submit]', submit);\r\n \r\n exports(MOD_NAME, form);\r\n});\r\n\r\n \r\n","/**\n * layui.table\n * 表格组件\n */\n\nlayui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){\n \"use strict\";\n\n var $ = layui.$;\n var lay = layui.lay;\n var laytpl = layui.laytpl;\n var laypage = layui.laypage;\n var layer = layui.layer;\n var form = layui.form;\n var util = layui.util;\n var hint = layui.hint();\n var device = layui.device();\n\n // api\n var table = {\n config: { // 全局配置项\n checkName: 'LAY_CHECKED', // 是否选中状态的特定字段名\n indexName: 'LAY_INDEX', // 初始下标索引名,用于恢复当前页表格排序\n numbersName: 'LAY_NUM', // 序号\n disabledName: 'LAY_DISABLED' // 禁用状态的特定字段名\n },\n cache: {}, // 数据缓存\n index: layui.table ? (layui.table.index + 10000) : 0,\n\n // 设置全局项\n set: function(options){\n var that = this;\n that.config = $.extend({}, that.config, options);\n return that;\n },\n\n // 事件\n on: function(events, callback){\n return layui.onevent.call(this, MOD_NAME, events, callback);\n }\n };\n\n // 操作当前实例\n var thisTable = function(){\n var that = this;\n var options = that.config;\n var id = options.id || options.index;\n\n return {\n config: options,\n reload: function(options, deep){\n that.reload.call(that, options, deep);\n },\n reloadData: function(options, deep){\n table.reloadData(id, options, deep);\n },\n setColsWidth: function(){\n that.setColsWidth.call(that);\n },\n resize: function(){ // 重置表格尺寸/结构\n that.resize.call(that);\n }\n }\n };\n\n // 获取当前实例\n var getThisTable = function(id){\n var that = thisTable.that[id];\n if(!that) hint.error(id ? ('The table instance with ID \\''+ id +'\\' not found') : 'ID argument required');\n return that || null;\n };\n\n // 获取当前实例配置项\n var getThisTableConfig = function(id){\n var config = thisTable.config[id];\n if(!config) hint.error(id ? ('The table instance with ID \\''+ id +'\\' not found') : 'ID argument required');\n return config || null;\n };\n\n // 解析自定义模板数据\n var parseTempData = function(obj){\n obj = obj || {};\n\n var options = this.config || {};\n var item3 = obj.item3; // 表头数据\n var content = obj.content; // 原始内容\n if (item3.type === 'numbers') content = obj.tplData[table.config.numbersName];\n\n // 是否编码 HTML\n var escaped = 'escape' in item3 ? item3.escape : options.escape;\n if(escaped) content = util.escape(content);\n\n // 获取模板\n var templet = obj.text && item3.exportTemplet || (item3.templet || item3.toolbar);\n\n // 获取模板内容\n if(templet){\n content = typeof templet === 'function'\n ? templet.call(item3, obj.tplData, obj.obj)\n : laytpl($(templet).html() || String(content)).render($.extend({\n LAY_COL: item3\n }, obj.tplData));\n }\n\n // 是否只返回文本\n return obj.text ? $('
                  '+ content +'
                  ').text() : content;\n };\n\n // 字符\n var MOD_NAME = 'table';\n var ELEM = '.layui-table';\n var THIS = 'layui-this';\n var SHOW = 'layui-show';\n var HIDE = 'layui-hide';\n var HIDE_V = 'layui-hide-v';\n var DISABLED = 'layui-disabled';\n var NONE = 'layui-none';\n\n var ELEM_VIEW = 'layui-table-view';\n var ELEM_TOOL = '.layui-table-tool';\n var ELEM_BOX = '.layui-table-box';\n var ELEM_INIT = '.layui-table-init';\n var ELEM_HEADER = '.layui-table-header';\n var ELEM_BODY = '.layui-table-body';\n var ELEM_MAIN = '.layui-table-main';\n var ELEM_FIXED = '.layui-table-fixed';\n var ELEM_FIXL = '.layui-table-fixed-l';\n var ELEM_FIXR = '.layui-table-fixed-r';\n var ELEM_TOTAL = '.layui-table-total';\n var ELEM_PAGE = '.layui-table-page';\n var ELEM_PAGE_VIEW = '.layui-table-pageview';\n var ELEM_SORT = '.layui-table-sort';\n var ELEM_CHECKED = 'layui-table-checked';\n var ELEM_EDIT = 'layui-table-edit';\n var ELEM_HOVER = 'layui-table-hover';\n var ELEM_GROUP = 'laytable-cell-group';\n var ELEM_COL_SPECIAL = 'layui-table-col-special';\n var ELEM_TOOL_PANEL = 'layui-table-tool-panel';\n var ELEM_EXPAND = 'layui-table-expanded'\n\n var DATA_MOVE_NAME = 'LAY_TABLE_MOVE_DICT';\n\n // thead 区域模板\n var TPL_HEADER = function(options){\n var rowCols = '{{#var colspan = layui.type(item2.colspan2) === \\'number\\' ? item2.colspan2 : item2.colspan; if(colspan){}} colspan=\"{{=colspan}}\"{{#} if(item2.rowspan){}} rowspan=\"{{=item2.rowspan}}\"{{#}}}';\n\n options = options || {};\n return ['
                '\n ,''\n ,'{{# layui.each(d.data.cols, function(i1, item1){ }}'\n ,''\n ,'{{# layui.each(item1, function(i2, item2){ }}'\n ,'{{# if(item2.fixed && item2.fixed !== \"right\"){ left = true; } }}'\n ,'{{# if(item2.fixed === \"right\"){ right = true; } }}'\n ,function(){\n if(options.fixed && options.fixed !== 'right'){\n return '{{# if(item2.fixed && item2.fixed !== \"right\"){ }}';\n }\n if(options.fixed === 'right'){\n return '{{# if(item2.fixed === \"right\"){ }}';\n }\n return '';\n }()\n ,'{{# var isSort = !(item2.colGroup) && item2.sort; }}'\n ,''\n ,(options.fixed ? '{{# }; }}' : '')\n ,'{{# }); }}'\n ,''\n ,'{{# }); }}'\n ,''\n ,'
                \\' + item2.title + \\'\\').text() }}\"{{# } }}>'\n ,'
                '\n ,'{{# if(item2.type === \"checkbox\"){ }}' //复选框\n ,''\n ,'{{# } else { }}'\n ,'{{-item2.title||\"\"}}'\n ,'{{# if(isSort){ }}'\n ,''\n ,'{{# } }}'\n ,'{{# } }}'\n ,'
                '\n ,'
                '].join('');\n };\n\n // tbody 区域模板\n var TPL_BODY = [''\n ,''\n ,'
                '].join('');\n\n // 主模板\n var TPL_MAIN = [\n ,'{{# if(d.data.toolbar){ }}'\n ,'
                '\n ,'
                '\n ,'
                '\n ,'
                '\n ,'{{# } }}'\n\n ,'
                '\n ,'{{# if(d.data.loading){ }}'\n ,'
                '\n ,''\n ,'
                '\n ,'{{# } }}'\n\n ,'{{# var left, right; }}'\n ,'
                '\n ,TPL_HEADER()\n ,'
                '\n ,'
                '\n ,TPL_BODY\n ,'
                '\n\n ,'{{# if(left){ }}'\n ,'
                '\n ,'
                '\n ,TPL_HEADER({fixed: true})\n ,'
                '\n ,'
                '\n ,TPL_BODY\n ,'
                '\n ,'
                '\n ,'{{# }; }}'\n\n ,'{{# if(right){ }}'\n ,'
                '\n ,'
                '\n ,TPL_HEADER({fixed: 'right'})\n ,'
                '\n ,'
                '\n ,'
                '\n ,TPL_BODY\n ,'
                '\n ,'
                '\n ,'{{# }; }}'\n ,'
                '\n\n ,'{{# if(d.data.totalRow){ }}'\n ,'
                '\n ,''\n ,''\n , '
                Total
                '\n ,'
                '\n ,'{{# } }}'\n\n ,'
                '\n ,'
                '\n ,'
                '\n ].join('');\n\n var _WIN = $(window);\n var _DOC = $(document);\n\n // constructor\n var Class = function(options){\n var that = this;\n that.index = ++table.index;\n that.config = $.extend({}, that.config, table.config, options);\n that.render();\n };\n\n // 初始默认配置\n Class.prototype.config = {\n limit: 10, // 每页显示的数量\n loading: true, // 请求数据时,是否显示 loading\n escape: true, // 是否开启 HTML 编码功能,即转义 html 原文\n cellMinWidth: 60, // 所有单元格默认最小宽度\n cellMaxWidth: Number.MAX_VALUE, // 所有单元格默认最大宽度\n editTrigger: 'click', // 单元格编辑的事件触发方式\n defaultToolbar: ['filter', 'exports', 'print'], // 工具栏右侧图标\n defaultContextmenu: true, // 显示默认上下文菜单\n autoSort: true, // 是否前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)\n text: {\n none: '无数据'\n },\n cols: []\n };\n\n // 表格渲染\n Class.prototype.render = function(type){\n var that = this;\n var options = that.config;\n\n options.elem = $(options.elem);\n options.where = options.where || {};\n\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\n var id = options.id = 'id' in options ? options.id : (\n options.elem.attr('id') || that.index\n );\n\n thisTable.that[id] = that; // 记录当前实例对象\n thisTable.config[id] = options; // 记录当前实例配置项\n\n //请求参数的自定义格式\n options.request = $.extend({\n pageName: 'page',\n limitName: 'limit'\n }, options.request)\n\n // 响应数据的自定义格式\n options.response = $.extend({\n statusName: 'code', //规定数据状态的字段名称\n statusCode: 0, //规定成功的状态码\n msgName: 'msg', //规定状态信息的字段名称\n dataName: 'data', //规定数据总数的字段名称\n totalRowName: 'totalRow', //规定数据统计的字段名称\n countName: 'count'\n }, options.response);\n\n //如果 page 传入 laypage 对象\n if(options.page !== null && typeof options.page === 'object'){\n options.limit = options.page.limit || options.limit;\n options.limits = options.page.limits || options.limits;\n that.page = options.page.curr = options.page.curr || 1;\n delete options.page.elem;\n delete options.page.jump;\n }\n\n if(!options.elem[0]) return that;\n\n // 若元素未设 lay-filter 属性,则取实例 id 值\n if(!options.elem.attr('lay-filter')){\n options.elem.attr('lay-filter', options.id);\n }\n\n // 仅重载数据\n if(type === 'reloadData'){\n // 请求数据\n return that.pullData(that.page, {\n type: 'reloadData'\n });\n }\n\n // 初始化索引\n options.index = that.index;\n that.key = options.id || options.index;\n\n //初始化一些其他参数\n that.setInit();\n\n //高度铺满:full-差距值\n if(options.height && /^full-\\d+$/.test(options.height)){\n that.fullHeightGap = options.height.split('-')[1];\n options.height = _WIN.height() - that.fullHeightGap;\n } else if (options.height && /^#\\w+\\S*-\\d+$/.test(options.height)) {\n var parentDiv = options.height.split(\"-\");\n that.parentHeightGap = parentDiv.pop();\n that.parentDiv = parentDiv.join(\"-\");\n options.height = $(that.parentDiv).height() - that.parentHeightGap;\n }\n\n // 开始插入替代元素\n var othis = options.elem;\n var hasRender = othis.next('.' + ELEM_VIEW);\n\n // 主容器\n var reElem = that.elem = $('
                ');\n\n // 添加 className\n reElem.addClass(function(){\n var arr = [\n ELEM_VIEW,\n ELEM_VIEW +'-'+ that.index,\n 'layui-form',\n 'layui-border-box'\n ];\n if(options.className) arr.push(options.className);\n return arr.join(' ');\n }()).attr({\n 'lay-filter': 'LAY-TABLE-FORM-DF-'+ that.index,\n 'lay-id': options.id,\n 'style': function(){\n var arr = [];\n if(options.width) arr.push('width:'+ options.width + 'px;');\n // if(options.height) arr.push('height:'+ options.height + 'px;');\n return arr.join('')\n }()\n }).html(laytpl(TPL_MAIN, {\n open: '{{', // 标签符前缀\n close: '}}' // 标签符后缀\n }).render({\n data: options,\n index: that.index //索引\n }));\n\n // 初始化样式\n that.renderStyle();\n\n // 生成替代元素\n hasRender[0] && hasRender.remove(); // 如果已经渲染,则 Rerender\n othis.after(reElem);\n\n // 各级容器\n that.layTool = reElem.find(ELEM_TOOL);\n that.layBox = reElem.find(ELEM_BOX);\n that.layHeader = reElem.find(ELEM_HEADER);\n that.layMain = reElem.find(ELEM_MAIN);\n that.layBody = reElem.find(ELEM_BODY);\n that.layFixed = reElem.find(ELEM_FIXED);\n that.layFixLeft = reElem.find(ELEM_FIXL);\n that.layFixRight = reElem.find(ELEM_FIXR);\n that.layTotal = reElem.find(ELEM_TOTAL);\n that.layPage = reElem.find(ELEM_PAGE);\n\n // 初始化头部工具栏\n that.renderToolbar();\n\n // 初始化底部分页栏\n that.renderPagebar();\n\n // 让表格平铺\n that.fullSize();\n\n that.pullData(that.page); // 请求数据\n that.events(); // 事件\n };\n\n // 根据列类型,定制化参数\n Class.prototype.initOpts = function(item){\n var that = this\n var options = that.config;\n var initWidth = {\n checkbox: 50,\n radio: 50,\n space: 30,\n numbers: 60\n };\n\n // 让 type 参数兼容旧版本\n if(item.checkbox) item.type = \"checkbox\";\n if(item.space) item.type = \"space\";\n if(!item.type) item.type = \"normal\";\n\n if(item.type !== \"normal\"){\n item.unresize = true;\n item.width = item.width || initWidth[item.type];\n }\n };\n\n //初始化一些参数\n Class.prototype.setInit = function(type){\n var that = this;\n var options = that.config;\n\n options.clientWidth = options.width || function(){ //获取容器宽度\n //如果父元素宽度为0(一般为隐藏元素),则继续查找上层元素,直到找到真实宽度为止\n var getWidth = function(parent){\n var width, isNone;\n parent = parent || options.elem.parent()\n width = parent.width();\n try {\n isNone = parent.css('display') === 'none';\n } catch(e){}\n if(parent[0] && (!width || isNone)) return getWidth(parent.parent());\n return width;\n };\n return getWidth();\n }();\n\n if(type === 'width') return options.clientWidth;\n // 初始化高度配置,如果设置了最高高度,以最高高度形式为准\n options.height = options.maxHeight || options.height;\n\n // 初始化 css 参数\n if(options.css && options.css.indexOf(ELEM_VIEW) === -1){\n var css = options.css.split('}');\n layui.each(css, function(index, value){\n if(value){\n css[index] = '.'+ ELEM_VIEW + '-'+ that.index + ' ' + value;\n }\n });\n options.css = css.join('}');\n }\n\n // 封装对 col 的配置处理\n var initChildCols = function (i1, item1, i2, item2) {\n //如果列参数为空,则移除\n if (!item2) {\n item1.splice(i2, 1);\n return;\n }\n\n item2.key = [options.index, i1, i2].join('-');\n item2.colspan = item2.colspan || 0;\n item2.rowspan = item2.rowspan || 0;\n\n //根据列类型,定制化参数\n that.initOpts(item2);\n\n //设置列的父列索引\n //如果是组合列,则捕获对应的子列\n var indexChild = i1 + (parseInt(item2.rowspan) || 1);\n if (indexChild < options.cols.length) { // 只要不是最后一层都会有子列\n item2.colGroup = true;\n var childIndex = 0;\n layui.each(options.cols[indexChild], function (i22, item22) {\n //如果子列已经被标注为{HAS_PARENT},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环\n if (item22.HAS_PARENT || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;\n\n item22.HAS_PARENT = true;\n item22.parentKey = [options.index, i1, i2].join('-') // i1 + '-' + i2;\n childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1);\n initChildCols(indexChild, options.cols[indexChild], i22, item22);\n });\n } else {\n item2.colGroup = false;\n }\n item2.hide = item2.hide && !item2.colGroup || false; // 初始化中中间节点的hide信息不做处理,否则会出错,如果需要必须将其子节点也都同步成hide\n };\n\n // 初始化列参数\n layui.each(options.cols, function(i1, item1){\n layui.each(item1, function(i2, item2){\n if (i1) {\n delete item2.HAS_PARENT; // 去掉临时的计数排除标识,避免有新字段插入的时候重新计算被跳过导致下标出错的问题\n } else {\n initChildCols(i1, item1, i2, item2); // 只解析顶层节点由递归完成解析\n }\n });\n });\n\n };\n\n // 初始化样式\n Class.prototype.renderStyle = function() {\n var that = this;\n var options = that.config;\n var index = that.index;\n var text = [];\n\n // 单元格宽度\n layui.each(options.cols, function(i1, item1) {\n layui.each(item1, function(i2, item2) {\n var key = [index, i1, i2].join('-');\n var val = item2.width ? ['width: ', item2.width, 'px'].join('') : '';\n text.push('.laytable-cell-'+ key +'{'+ val +'}');\n });\n });\n\n // 自定义行样式\n (function (lineStyle) {\n if (!lineStyle) return;\n var trClassName = '.layui-table-view-'+ index +' .layui-table-body .layui-table tr';\n var rules = lineStyle.split(';');\n var cellMaxHeight = 'none';\n\n // 计算单元格最大高度\n layui.each(rules, function(i, rule) {\n rule = rule.split(':');\n if (rule[0] === 'height') {\n var val = parseFloat(rule[1]);\n if (!isNaN(val)) cellMaxHeight = (val - 1) + 'px';\n return true;\n }\n });\n\n // 多行相关样式\n layui.each([\n '{'+ lineStyle +'}',\n '.layui-table-cell{height: auto; max-height: '+ cellMaxHeight +'; white-space: normal; text-overflow: clip;}',\n '> td:hover > .layui-table-cell{overflow: auto;}'\n ].concat(\n device.ie ? [\n '.layui-table-edit{height: '+ cellMaxHeight +';}',\n 'td[data-edit]:hover:after{height: '+ cellMaxHeight +';}'\n ] : []\n ), function(i, val) {\n val && text.push(trClassName + ' ' + val);\n });\n })(options.lineStyle);\n\n // 自定义 css 属性\n if (options.css) text.push(options.css);\n\n // 生成 style\n lay.style({\n target: that.elem[0],\n text: text.join(''),\n id: 'DF-table-'+ index\n });\n };\n\n // 初始工具栏\n Class.prototype.renderToolbar = function(){\n var that = this\n var options = that.config\n\n // 添加工具栏左侧模板\n var leftDefaultTemp = [\n '
                ',\n '
                ',\n '
                '\n ].join('');\n var elemToolTemp = that.layTool.find('.layui-table-tool-temp');\n\n if(options.toolbar === 'default'){\n elemToolTemp.html(leftDefaultTemp);\n } else if(typeof options.toolbar === 'string'){\n var toolbarHtml = $(options.toolbar).html() || '';\n toolbarHtml && elemToolTemp.html(\n laytpl(toolbarHtml).render(options)\n );\n }\n\n // 添加工具栏右侧面板\n var layout = {\n filter: {\n title: '筛选列',\n layEvent: 'LAYTABLE_COLS',\n icon: 'layui-icon-cols'\n },\n exports: {\n title: '导出',\n layEvent: 'LAYTABLE_EXPORT',\n icon: 'layui-icon-export'\n },\n print: {\n title: '打印',\n layEvent: 'LAYTABLE_PRINT',\n icon: 'layui-icon-print'\n }\n }, iconElem = [];\n\n if(typeof options.defaultToolbar === 'object'){\n layui.each(options.defaultToolbar, function(i, item){\n var thisItem = typeof item === 'string' ? layout[item] : item;\n if(thisItem){\n iconElem.push('
                '\n +''\n +'
                ');\n }\n });\n }\n that.layTool.find('.layui-table-tool-self').html(iconElem.join(''));\n };\n\n // 分页栏\n Class.prototype.renderPagebar = function(){\n var that = this;\n var options = that.config;\n\n var layPagebar = that.layPagebar = $('
                ');\n\n // 开启分页栏自定义模板\n if(options.pagebar){\n var pagebarHtml = $(options.pagebar).html() || '';\n pagebarHtml && layPagebar.append(laytpl(pagebarHtml).render(options));\n that.layPage.append(layPagebar);\n }\n };\n\n // 同步表头父列的相关值\n Class.prototype.setParentCol = function(hide, parentKey){\n var that = this;\n var options = that.config;\n\n var parentTh = that.layHeader.find('th[data-key=\"'+ parentKey +'\"]'); // 获取父列元素\n var parentColspan = parseInt(parentTh.attr('colspan')) || 0;\n\n if(parentTh[0]){\n var arrParentKey = parentKey.split('-');\n var getThisCol = options.cols[arrParentKey[1]][arrParentKey[2]];\n\n hide ? parentColspan-- : parentColspan++;\n\n parentTh.attr('colspan', parentColspan);\n parentTh[parentColspan ? 'removeClass' : 'addClass'](HIDE); // 如果子列显示,父列必然需要显示\n\n getThisCol.colspan2 = parentColspan; // 更新实际的 colspan 数\n getThisCol.hide = parentColspan < 1; // 同步 hide 参数\n\n // 递归,继续往上查询是否有父列\n var nextParentKey = parentTh.data('parentkey');\n nextParentKey && that.setParentCol(hide, nextParentKey);\n }\n };\n\n // 多级表头补丁\n Class.prototype.setColsPatch = function(){\n var that = this;\n var options = that.config;\n\n // 同步表头父列的相关值\n layui.each(options.cols, function(i1, item1){\n layui.each(item1, function(i2, item2){\n if(item2.hide){\n that.setParentCol(item2.hide, item2.parentKey);\n }\n });\n });\n };\n\n // 设置组合表头的最大宽度\n Class.prototype.setGroupWidth = function(th){\n var that = this;\n var options = that.config;\n\n if(options.cols.length <= 1) return;\n\n // 获取表头组合\n var groups = that.layHeader.find((\n // 根据当前活动的表头 parentkey 属性查找其组合表头\n th ? ('th[data-key='+ th.data('parentkey') +']>') : ''\n ) + '.' + ELEM_GROUP); // 若无指向当前活动表头,则自下而上获取所有组合表头\n\n groups.css('width', 0);\n layui.each(groups.get().reverse(), function(){\n var othis = $(this);\n var key = othis.parent().data('key');\n var maxWidth = 0;\n\n that.layHeader.eq(0).find('th[data-parentkey='+ key +']').width(function(i, width){\n var oTh = $(this);\n if(oTh.hasClass(HIDE)) return;\n width > 0 && (maxWidth += width);\n });\n\n // 给组合表头赋值最大宽度\n if(maxWidth) othis.css('max-width', maxWidth - 1);\n\n // 若当前活动的组合表头仍存在上级,则继续向上设置\n if(th && othis.parent().data('parentkey')){\n that.setGroupWidth(othis.parent());\n }\n });\n groups.css('width', 'auto');\n };\n\n // 动态分配列宽\n Class.prototype.setColsWidth = function(){\n var that = this;\n var options = that.config;\n var colNums = 0; // 列个数\n var autoColNums = 0; // 自动列宽的列个数\n var autoWidth = 0; // 自动列分配的宽度\n var countWidth = 0; // 所有列总宽度和\n var cntrWidth = that.setInit('width');\n\n // 统计列个数\n that.eachCols(function(i, item){\n item.hide || colNums++;\n });\n\n // 减去边框差和滚动条宽\n cntrWidth = cntrWidth - function(){\n return (options.skin === 'line' || options.skin === 'nob') ? 2 : colNums + 1;\n }() - that.getScrollWidth(that.layMain[0]) - 1;\n\n // 计算自动分配的宽度\n var getAutoWidth = function(back){\n // 遍历所有列\n layui.each(options.cols, function(i1, item1){\n layui.each(item1, function(i2, item2){\n var width = 0;\n var minWidth = item2.minWidth || options.cellMinWidth; // 最小宽度\n var maxWidth = item2.maxWidth || options.cellMaxWidth; // 最大宽度\n\n if(!item2){\n item1.splice(i2, 1);\n return;\n }\n\n if(item2.colGroup || item2.hide) return;\n\n if(!back){\n width = item2.width || 0;\n if(/\\d+%$/.test(width)){ // 列宽为百分比\n width = Math.floor((parseFloat(width) / 100) * cntrWidth);\n width < minWidth && (width = minWidth);\n width > maxWidth && (width = maxWidth);\n } else if(!width){ // 列宽未填写\n item2.width = width = 0;\n autoColNums++;\n } else if(item2.type === 'normal'){\n // 若 width 小于 minWidth, 则将 width 值自动设为 minWidth 的值\n width < minWidth && (item2.width = width = minWidth);\n // 若 width 大于 maxWidth, 则将 width 值自动设为 maxWidth 的值\n width > maxWidth && (item2.width = width = maxWidth);\n }\n } else if(autoWidth && autoWidth < minWidth){\n autoColNums--;\n width = minWidth;\n } else if(autoWidth && autoWidth > maxWidth){\n autoColNums--;\n width = maxWidth;\n }\n\n if(item2.hide) width = 0;\n countWidth = countWidth + width;\n });\n });\n\n // 如果未填充满,则将剩余宽度平分\n (cntrWidth > countWidth && autoColNums > 0) && (\n autoWidth = (cntrWidth - countWidth) / autoColNums\n );\n }\n\n getAutoWidth();\n getAutoWidth(true); // 重新检测分配的宽度是否低于最小列宽\n\n // 记录自动列数\n that.autoColNums = autoColNums = autoColNums > 0 ? autoColNums : 0;\n\n // 设置列宽\n that.eachCols(function(i3, item3){\n var minWidth = item3.minWidth || options.cellMinWidth;\n var maxWidth = item3.maxWidth || options.cellMaxWidth;\n\n if(item3.colGroup || item3.hide) return;\n\n // 给未分配宽的列平均分配宽\n if(item3.width === 0){\n that.cssRules(item3.key, function(item){\n item.style.width = Math.floor(function(){\n if(autoWidth < minWidth) return minWidth;\n if(autoWidth > maxWidth) return maxWidth;\n return autoWidth;\n }()) + 'px';\n });\n }\n\n // 给设定百分比的列分配列宽\n else if(/\\d+%$/.test(item3.width)){\n that.cssRules(item3.key, function(item){\n var width = Math.floor((parseFloat(item3.width) / 100) * cntrWidth);\n width < minWidth && (width = minWidth);\n width > maxWidth && (width = maxWidth);\n item.style.width = width + 'px';\n });\n }\n\n // 给拥有普通 width 值的列分配最新列宽\n else {\n that.cssRules(item3.key, function(item){\n item.style.width = item3.width + 'px';\n });\n }\n });\n\n // 填补 Math.floor 造成的数差\n var patchNums = that.layMain.width() - that.getScrollWidth(that.layMain[0])\n - that.layMain.children('table').outerWidth();\n\n if(that.autoColNums > 0 && patchNums >= -colNums && patchNums <= colNums){\n var getEndTh = function(th){\n var field;\n th = th || that.layHeader.eq(0).find('thead > tr:first-child > th:last-child')\n field = th.data('field');\n if(!field && th.prev()[0]){\n return getEndTh(th.prev())\n }\n return th;\n };\n var th = getEndTh();\n var key = th.data('key');\n\n that.cssRules(key, function(item){\n var width = item.style.width || th.outerWidth();\n item.style.width = (parseFloat(width) + patchNums) + 'px';\n\n // 二次校验,如果仍然出现横向滚动条(通常是 1px 的误差导致)\n if(that.layMain.height() - that.layMain.prop('clientHeight') > 0){\n item.style.width = (parseFloat(item.style.width) - 1) + 'px';\n }\n });\n }\n\n that.setGroupWidth();\n\n // 如果表格内容为空(无数据 或 请求异常)\n if (that.layMain.find('tbody').is(\":empty\")) {\n // 将表格宽度设置为跟表头一样的宽度,使之可以出现底部滚动条,以便滚动查看所有字段\n var headerWidth = that.layHeader.first().children('table').width()\n that.layMain.find('table').width(headerWidth);\n } else {\n that.layMain.find('table').width('auto');\n }\n\n that.loading(!0);\n };\n\n // 重置表格尺寸/结构\n Class.prototype.resize = function(){\n var that = this;\n\n if (!that.layMain) return;\n\n that.fullSize(); // 让表格铺满\n that.setColsWidth(); // 自适应列宽\n that.scrollPatch(); // 滚动条补丁\n };\n\n // 表格重载\n Class.prototype.reload = function(options, deep, type){\n var that = this;\n\n options = options || {};\n delete that.haveInit;\n\n // 防止数组深度合并\n layui.each(options, function(key, item){\n if(layui.type(item) === 'array') delete that.config[key];\n });\n\n // 对参数进行深度或浅扩展\n that.config = $.extend(deep, {}, that.config, options);\n if (type !== 'reloadData') {\n layui.each(that.config.cols, function (i1, item1) {\n layui.each(item1, function (i2, item2) {\n delete item2.colspan2;\n })\n })\n delete that.config.HAS_SET_COLS_PATCH;\n }\n // 执行渲染\n that.render(type);\n };\n\n // 异常提示\n Class.prototype.errorView = function(html){\n var that = this\n ,elemNone = that.layMain.find('.'+ NONE)\n ,layNone = $('
                '+ (html || 'Error') +'
                ');\n\n if(elemNone[0]){\n that.layNone.remove();\n elemNone.remove();\n }\n\n that.layFixed.addClass(HIDE);\n that.layMain.find('tbody').html('');\n\n that.layMain.append(that.layNone = layNone);\n\n // 异常情况下对 page 和 total 的内容处理\n that.layTotal.addClass(HIDE_V);\n that.layPage.find(ELEM_PAGE_VIEW).addClass(HIDE_V);\n\n table.cache[that.key] = []; //格式化缓存数据\n\n that.syncCheckAll();\n that.renderForm();\n that.setColsWidth();\n };\n\n // 初始页码\n Class.prototype.page = 1;\n\n // 获得数据\n Class.prototype.pullData = function(curr, opts){\n var that = this;\n var options = that.config;\n // 同步表头父列的相关值\n options.HAS_SET_COLS_PATCH || that.setColsPatch();\n options.HAS_SET_COLS_PATCH = true;\n var request = options.request;\n var response = options.response;\n var res;\n var sort = function(){\n if(typeof options.initSort === 'object'){\n that.sort({\n field: options.initSort.field,\n type: options.initSort.type,\n reloadType: opts.type\n });\n }\n };\n var done = function(res, origin){\n that.setColsWidth();\n typeof options.done === 'function' && options.done(\n res, curr, res[response.countName], origin\n );\n };\n\n opts = opts || {};\n\n // 数据拉取前的回调\n typeof options.before === 'function' && options.before(\n options\n );\n that.startTime = new Date().getTime(); // 渲染开始时间\n\n if (opts.renderData) { // 将 cache 信息重新渲染\n res = {};\n res[response.dataName] = table.cache[that.key];\n res[response.countName] = options.url ? (layui.type(options.page) === 'object' ? options.page.count : res[response.dataName].length) : options.data.length;\n\n // 记录合计行数据\n if(typeof options.totalRow === 'object'){\n res[response.totalRowName] = $.extend({}, that.totalRow);\n }\n\n that.renderData({\n res: res,\n curr: curr,\n count: res[response.countName],\n type: opts.type,\n sort: true\n }), done(res, 'renderData');\n } else if(options.url){ // Ajax请求\n var params = {};\n // 当 page 开启,默认自动传递 page、limit 参数\n if(options.page){\n params[request.pageName] = curr;\n params[request.limitName] = options.limit;\n }\n\n // 参数\n var data = $.extend(params, options.where);\n if(options.contentType && options.contentType.indexOf(\"application/json\") == 0){ // 提交 json 格式\n data = JSON.stringify(data);\n }\n\n that.loading();\n\n $.ajax({\n type: options.method || 'get',\n url: options.url,\n contentType: options.contentType,\n data: data,\n dataType: options.dataType || 'json',\n jsonpCallback: options.jsonpCallback,\n headers: options.headers || {},\n complete: function(xhr,ts){\n typeof options.complete === 'function' && options.complete(xhr, ts);\n },\n success: function(res){\n // 若有数据解析的回调,则获得其返回的数据\n if(typeof options.parseData === 'function'){\n res = options.parseData(res) || res;\n }\n // 检查数据格式是否符合规范\n if(res[response.statusName] != response.statusCode){\n that.errorView(\n res[response.msgName] ||\n ('返回的数据不符合规范,正确的成功状态码应为:\"'+ response.statusName +'\": '+ response.statusCode)\n );\n } else {\n that.totalRow = res[response.totalRowName];\n that.renderData({\n res: res,\n curr: curr,\n count: res[response.countName],\n type: opts.type\n }), sort();\n\n // 耗时(接口请求+视图渲染)\n options.time = (new Date().getTime() - that.startTime) + ' ms';\n }\n done(res);\n },\n error: function(e, msg){\n that.errorView('请求异常,错误提示:'+ msg);\n typeof options.error === 'function' && options.error(e, msg);\n }\n });\n } else if(layui.type(options.data) === 'array'){ //已知数据\n res = {};\n var startLimit = curr*options.limit - options.limit;\n var newData = options.data.concat();\n\n res[response.dataName] = options.page\n ? newData.splice(startLimit, options.limit)\n : newData;\n res[response.countName] = options.data.length;\n\n // 记录合计行数据\n if(typeof options.totalRow === 'object'){\n res[response.totalRowName] = $.extend({}, options.totalRow);\n }\n that.totalRow = res[response.totalRowName];\n\n that.renderData({\n res: res,\n curr: curr,\n count: res[response.countName],\n type: opts.type\n }), sort();\n\n done(res);\n }\n };\n\n // 遍历表头\n Class.prototype.eachCols = function(callback){\n var that = this;\n table.eachCols(null, callback, that.config.cols);\n return that;\n };\n\n // 获取表头参数项\n Class.prototype.col = function(key){\n try {\n key = key.split('-');\n return this.config.cols[key[1]][key[2]] || {};\n } catch(e){\n hint.error(e);\n return {};\n }\n };\n\n Class.prototype.getTrHtml = function(data, sort, curr, trsObj) {\n var that = this;\n var options = that.config;\n var trs = trsObj && trsObj.trs || [];\n var trs_fixed = trsObj && trsObj.trs_fixed || [];\n var trs_fixed_r = trsObj && trsObj.trs_fixed_r || [];\n curr = curr || 1\n\n layui.each(data, function(i1, item1){\n var tds = [];\n var tds_fixed = [];\n var tds_fixed_r = [];\n var numbers = i1 + options.limit*(curr - 1) + 1; // 序号\n\n // 数组值是否为 object,如果不是,则自动转为 object\n if(typeof item1 !== 'object'){\n data[i1] = item1 = {LAY_KEY: item1};\n try {\n table.cache[that.key][i1] = item1;\n } catch(e) {}\n }\n\n //若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])\n if(layui.type(item1) === 'array' && item1.length === 0) return;\n\n // 加入序号保留字段\n item1[table.config.numbersName] = numbers;\n\n // 记录下标索引,用于恢复排序\n if(!sort) item1[table.config.indexName] = i1;\n\n // 遍历表头\n that.eachCols(function(i3, item3){\n var field = item3.field || i3;\n var key = item3.key;\n var content = item1[field];\n\n if(content === undefined || content === null) content = '';\n if(item3.colGroup) return;\n\n // td 内容\n var td = [''\n ,'
                '\n + function(){\n var tplData = $.extend(true, {\n LAY_COL: item3\n }, item1);\n var checkName = table.config.checkName;\n var disabledName = table.config.disabledName;\n\n // 渲染不同风格的列\n switch(item3.type){\n case 'checkbox': // 复选\n return '';\n //break;\n case 'radio': // 单选\n return '';\n //break;\n case 'numbers':\n return numbers;\n //break;\n }\n\n //解析工具列模板\n if(item3.toolbar){\n return laytpl($(item3.toolbar).html()||'').render(tplData);\n }\n return parseTempData.call(that, {\n item3: item3\n ,content: content\n ,tplData: tplData\n });\n }()\n ,'
                '].join('');\n\n tds.push(td);\n if(item3.fixed && item3.fixed !== 'right') tds_fixed.push(td);\n if(item3.fixed === 'right') tds_fixed_r.push(td);\n });\n\n // 添加 tr 属性\n var trAttr = function(){\n var arr = ['data-index=\"'+ i1 +'\"'];\n if(item1[table.config.checkName]) arr.push('class=\"'+ ELEM_CHECKED +'\"');\n return arr.join(' ');\n }();\n\n trs.push(''+ tds.join('') + '');\n trs_fixed.push(''+ tds_fixed.join('') + '');\n trs_fixed_r.push(''+ tds_fixed_r.join('') + '');\n });\n\n return {\n trs: trs,\n trs_fixed: trs_fixed,\n trs_fixed_r: trs_fixed_r\n }\n }\n\n // 返回行节点代码\n table.getTrHtml = function (id, data) {\n var that = getThisTable(id);\n return that.getTrHtml(data, null, that.page);\n }\n\n // 数据渲染\n Class.prototype.renderData = function(opts){\n var that = this;\n var options = that.config;\n\n var res = opts.res;\n var curr = opts.curr;\n var count = that.count = opts.count;\n var sort = opts.sort;\n\n var data = res[options.response.dataName] || []; //列表数据\n var totalRowData = res[options.response.totalRowName]; //合计行数据\n var trs = [];\n var trs_fixed = [];\n var trs_fixed_r = [];\n\n // 渲染视图\n var render = function(){ // 后续性能提升的重点\n if(!sort && that.sortKey){\n return that.sort({\n field: that.sortKey.field,\n type: that.sortKey.sort,\n pull: true,\n reloadType: opts.type\n });\n }\n that.getTrHtml(data, sort, curr, {\n trs: trs,\n trs_fixed: trs_fixed,\n trs_fixed_r: trs_fixed_r\n });\n\n // 容器的滚动条位置\n if(!(options.scrollPos === 'fixed' && opts.type === 'reloadData')){\n that.layBody.scrollTop(0);\n }\n if(options.scrollPos === 'reset'){\n that.layBody.scrollLeft(0);\n }\n\n that.layMain.find('.'+ NONE).remove();\n that.layMain.find('tbody').html(trs.join(''));\n that.layFixLeft.find('tbody').html(trs_fixed.join(''));\n that.layFixRight.find('tbody').html(trs_fixed_r.join(''));\n\n // 渲染表单\n that.syncCheckAll();\n that.renderForm();\n\n // 因为 page 参数有可能发生变化 先重新铺满\n that.fullSize();\n\n // 滚动条补丁\n that.haveInit ? that.scrollPatch() : setTimeout(function(){\n that.scrollPatch();\n }, 50);\n that.haveInit = true;\n\n layer.close(that.tipsIndex);\n };\n\n table.cache[that.key] = data; //记录数据\n\n //显示隐藏合计栏\n that.layTotal[data.length == 0 ? 'addClass' : 'removeClass'](HIDE_V);\n\n //显示隐藏分页栏\n that.layPage[(options.page || options.pagebar) ? 'removeClass' : 'addClass'](HIDE);\n that.layPage.find(ELEM_PAGE_VIEW)[\n (!options.page || count == 0 || (data.length === 0 && curr == 1))\n ? 'addClass'\n : 'removeClass'\n ](HIDE_V);\n\n //如果无数据\n if(data.length === 0){\n return that.errorView(options.text.none);\n } else {\n that.layFixLeft.removeClass(HIDE);\n }\n\n //如果执行初始排序\n if(sort){\n return render();\n }\n\n //正常初始化数据渲染\n render(); //渲染数据\n that.renderTotal(data, totalRowData); //数据合计\n that.layTotal && that.layTotal.removeClass(HIDE);\n\n //同步分页状态\n if(options.page){\n options.page = $.extend({\n elem: 'layui-table-page' + options.index,\n count: count,\n limit: options.limit,\n limits: options.limits || [10,20,30,40,50,60,70,80,90],\n groups: 3,\n layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],\n prev: '',\n next: '',\n jump: function(obj, first){\n if(!first){\n //分页本身并非需要做以下更新,下面参数的同步,主要是因为其它处理统一用到了它们\n //而并非用的是 options.page 中的参数(以确保分页未开启的情况仍能正常使用)\n that.page = obj.curr; //更新页码\n options.limit = obj.limit; //更新每页条数\n\n that.pullData(obj.curr);\n }\n }\n }, options.page);\n options.page.count = count; //更新总条数\n laypage.render(options.page);\n }\n };\n\n // 重新渲染数据\n table.renderData = function (id) {\n var that = getThisTable(id);\n if (!that) {\n return;\n }\n\n that.pullData(that.page, {\n renderData: true,\n type: 'reloadData'\n });\n }\n\n // 数据合计行\n Class.prototype.renderTotal = function(data, totalRowData){\n var that = this;\n var options = that.config;\n var totalNums = {};\n\n if(!options.totalRow) return;\n\n layui.each(data, function(i1, item1){\n // 若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])\n if(layui.type(item1) === 'array' && item1.length === 0) return;\n\n that.eachCols(function(i3, item3){\n var field = item3.field || i3\n ,content = item1[field];\n\n if(item3.totalRow){\n totalNums[field] = (totalNums[field] || 0) + (parseFloat(content) || 0);\n }\n });\n });\n\n that.dataTotal = []; // 记录合计行结果\n\n var tds = [];\n that.eachCols(function(i3, item3){\n var field = item3.field || i3;\n\n // 合计数据的特定字段\n var TOTAL_NUMS = totalRowData && totalRowData[item3.field];\n\n // 合计数据的小数点位数处理\n var decimals = 'totalRowDecimals' in item3 ? item3.totalRowDecimals : 2;\n var thisTotalNum = totalNums[field]\n ? parseFloat(totalNums[field] || 0).toFixed(decimals)\n : '';\n\n // td 显示内容\n var content = function(){\n var text = item3.totalRowText || '';\n var tplData = {\n LAY_COL: item3\n };\n\n tplData[field] = thisTotalNum;\n\n // 获取自动计算的合并内容\n var getContent = item3.totalRow ? (parseTempData.call(that, {\n item3: item3,\n content: thisTotalNum,\n tplData: tplData\n }) || text) : text;\n\n // 如果直接传入了合计行数据,则不输出自动计算的结果\n return TOTAL_NUMS || getContent;\n }();\n\n // 合计原始结果\n var total = TOTAL_NUMS || thisTotalNum || '';\n item3.field && that.dataTotal.push({\n field: item3.field,\n total: $('
                '+ content +'
                ').text()\n });\n\n // td 容器\n var td = ['',\n '
                ' + function(){\n var totalRow = item3.totalRow || options.totalRow;\n\n // 如果 totalRow 参数为字符类型,则解析为自定义模版\n if(typeof totalRow === 'string'){\n return laytpl(totalRow).render($.extend({\n TOTAL_NUMS: TOTAL_NUMS || totalNums[field],\n TOTAL_ROW: totalRowData || {},\n LAY_COL: item3\n }, item3));\n }\n return content;\n }(),\n '
                '].join('');\n\n tds.push(td);\n });\n\n var patchElem = that.layTotal.find('.layui-table-patch'); // 可能存在滚动条补丁\n that.layTotal.find('tbody').html('' + tds.join('') + (patchElem.length ? patchElem.get(0).outerHTML : '') + '');\n };\n\n //找到对应的列元素\n Class.prototype.getColElem = function(parent, key){\n var that = this;\n //var options = that.config;\n return parent.eq(0).find('.laytable-cell-'+ key + ':eq(0)');\n };\n\n // 渲染表单\n Class.prototype.renderForm = function(type){\n var that = this;\n var options = that.config;\n var filter = that.elem.attr('lay-filter');\n form.render(type, filter);\n };\n\n // 同步全选按钮状态\n Class.prototype.syncCheckAll = function(){\n var that = this;\n var options = that.config;\n var checkAllElem = that.layHeader.find('input[name=\"layTableCheckbox\"]');\n var syncColsCheck = function(checked){\n that.eachCols(function(i, item){\n if(item.type === 'checkbox'){\n item[options.checkName] = checked;\n }\n });\n return checked;\n };\n var checkStatus = table.checkStatus(that.key);\n\n if(!checkAllElem[0]) return;\n\n // 选中状态\n syncColsCheck(checkStatus.isAll);\n checkAllElem.prop({\n checked: checkStatus.isAll,\n indeterminate: !checkStatus.isAll && checkStatus.data.length // 半选\n });\n form.render(checkAllElem);\n };\n\n // 标记当前活动行背景色\n Class.prototype.setRowActive = function(index, className, removeClass){\n var that = this;\n var options = that.config;\n var tr = that.layBody.find('tr[data-index=\"'+ index +'\"]');\n className = className || 'layui-table-click';\n\n if(removeClass) return tr.removeClass(className);\n\n tr.addClass(className);\n tr.siblings('tr').removeClass(className);\n };\n\n // 设置行选中状态\n Class.prototype.setRowChecked = function(opts){\n var that = this;\n var options = that.config;\n var tr = that.layBody.find('tr'+ (\n opts.index === 'all' ? '' : '[data-index=\"'+ opts.index +'\"]'\n ));\n\n // 默认属性\n opts = $.extend({\n type: 'checkbox' // 选中方式\n }, opts);\n\n // 同步数据选中属性值\n var thisData = table.cache[that.key];\n var existChecked = 'checked' in opts;\n var getChecked = function(value){\n // 若为单选框,则单向选中;若为复选框,则切换选中。\n return opts.type === 'radio' ? true : (existChecked ? opts.checked : !value)\n };\n\n // 设置数据选中属性\n layui.each(thisData, function(i, item){\n if(layui.type(item) === 'array' || item[options.disabledName]) return; // 空项\n if(Number(opts.index) === i || opts.index === 'all'){\n var checked = item[options.checkName] = getChecked(item[options.checkName]);\n tr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED); // 标记当前选中行背景色\n // 若为 radio 类型,则取消其他行选中背景色\n if(opts.type === 'radio'){\n tr.siblings().removeClass(ELEM_CHECKED);\n }\n } else if(opts.type === 'radio') {\n delete item[options.checkName];\n }\n });\n\n // 若存在复选框或单选框,则标注选中状态样式\n var checkedElem = tr.find('input[lay-type=\"'+ ({\n radio: 'layTableRadio',\n checkbox: 'layTableCheckbox'\n }[opts.type] || 'checkbox') +'\"]:not(:disabled)');\n var checkedSameElem = checkedElem.last();\n var fixRElem = checkedSameElem.closest(ELEM_FIXR);\n\n ( opts.type === 'radio' && fixRElem.hasClass(HIDE)\n ? checkedElem.first()\n : checkedElem ).prop('checked', getChecked(checkedSameElem.prop('checked')));\n\n that.syncCheckAll();\n that.renderForm(opts.type);\n };\n\n // 数据排序\n Class.prototype.sort = function(opts){ // field, type, pull, fromEvent\n var that = this;\n var field;\n var res = {};\n var options = that.config;\n var filter = options.elem.attr('lay-filter');\n var data = table.cache[that.key], thisData;\n\n opts = opts || {};\n\n // 字段匹配\n if(typeof opts.field === 'string'){\n field = opts.field;\n that.layHeader.find('th').each(function(i, item){\n var othis = $(this);\n var _field = othis.data('field');\n if(_field === opts.field){\n opts.field = othis;\n field = _field;\n return false;\n }\n });\n }\n\n try {\n field = field || opts.field.data('field');\n var key = opts.field.data('key');\n\n // 如果欲执行的排序已在状态中,则不执行渲染\n if(that.sortKey && !opts.pull){\n if(field === that.sortKey.field && opts.type === that.sortKey.sort){\n return;\n }\n }\n\n var elemSort = that.layHeader.find('th .laytable-cell-'+ key).find(ELEM_SORT);\n that.layHeader.find('th').find(ELEM_SORT).removeAttr('lay-sort'); // 清除其它标题排序状态\n elemSort.attr('lay-sort', opts.type || null);\n that.layFixed.find('th')\n } catch(e){\n hint.error('Table modules: sort field \\''+ field +'\\' not matched');\n }\n\n // 记录排序索引和类型\n that.sortKey = {\n field: field,\n sort: opts.type\n };\n\n // 默认为前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)\n if(options.autoSort){\n if(opts.type === 'asc'){ //升序\n thisData = layui.sort(data, field, null, true);\n } else if(opts.type === 'desc'){ //降序\n thisData = layui.sort(data, field, true, true);\n } else { // 清除排序\n thisData = layui.sort(data, table.config.indexName, null, true);\n delete that.sortKey;\n delete options.initSort;\n }\n }\n\n res[options.response.dataName] = thisData || data;\n\n // 重载数据\n that.renderData({\n res: res,\n curr: that.page,\n count: that.count,\n sort: true,\n type: opts.reloadType\n });\n\n // 排序是否来自于点击表头事件触发\n if(opts.fromEvent){\n options.initSort = {\n field: field,\n type: opts.type\n };\n layui.event.call(opts.field, MOD_NAME, 'sort('+ filter +')', $.extend({\n config: options\n }, options.initSort));\n }\n };\n\n // 请求 loading\n Class.prototype.loading = function(hide){\n var that = this;\n var options = that.config;\n if(options.loading){\n if(hide){\n that.layInit && that.layInit.remove();\n delete that.layInit;\n that.layBox.find(ELEM_INIT).remove();\n } else {\n that.layInit = $(['
                ',\n '',\n '
                '].join(''));\n that.layBox.append(that.layInit);\n }\n }\n };\n\n // 获取对应单元格的 cssRules\n Class.prototype.cssRules = function(key, callback){\n var that = this;\n var style = that.elem.children('style')[0];\n\n lay.getStyleRules(style, function(item){\n if (item.selectorText === ('.laytable-cell-'+ key)) {\n return callback(item), true;\n }\n });\n };\n\n // 让表格铺满\n Class.prototype.fullSize = function(){\n var that = this;\n var options = that.config;\n var height = options.height;\n var bodyHeight;\n\n if(that.fullHeightGap){\n height = _WIN.height() - that.fullHeightGap;\n if(height < 135) height = 135;\n // that.elem.css('height', height);\n } else if (that.parentDiv && that.parentHeightGap) {\n height = $(that.parentDiv).height() - that.parentHeightGap;\n if (height < 135) height = 135;\n // that.elem.css(\"height\", height);\n }\n\n // 如果多级表头,则填补表头高度\n if(options.cols.length > 1){\n // 补全高度\n var th = that.layFixed.find(ELEM_HEADER).find('th');\n // 固定列表头同步跟本体 th 一致高度\n var headerMain = that.layHeader.first();\n layui.each(th, function (thIndex, thElem) {\n thElem = $(thElem);\n thElem.height(headerMain.find('th[data-key=\"' + thElem.attr('data-key') + '\"]').height() + 'px');\n })\n }\n\n if(!height) return;\n\n // 减去列头区域的高度 --- 此处的数字常量是为了防止容器处在隐藏区域无法获得高度的问题,只对默认尺寸表格做支持\n bodyHeight = parseFloat(height) - (that.layHeader.outerHeight() || 39)\n\n // 减去工具栏的高度\n if(options.toolbar){\n bodyHeight -= (that.layTool.outerHeight() || 51);\n }\n\n // 减去统计栏的高度\n if(options.totalRow){\n bodyHeight -= (that.layTotal.outerHeight() || 40);\n }\n\n // 减去分页栏的高度\n if(options.page || options.pagebar){\n bodyHeight -= (that.layPage.outerHeight() || 43);\n }\n\n if (options.maxHeight) {\n layui.each({elem: height, layMain: bodyHeight}, function (elemName, elemHeight) {\n that[elemName].css({\n height: 'auto',\n maxHeight: elemHeight + 'px'\n });\n });\n } else {\n that.layMain.outerHeight(bodyHeight);\n }\n };\n\n //获取滚动条宽度\n Class.prototype.getScrollWidth = function(elem){\n var width;\n if(elem){\n width = elem.offsetWidth - elem.clientWidth;\n } else {\n elem = document.createElement('div');\n elem.style.width = '100px';\n elem.style.height = '100px';\n elem.style.overflowY = 'scroll';\n\n document.body.appendChild(elem);\n width = elem.offsetWidth - elem.clientWidth;\n document.body.removeChild(elem);\n }\n return width;\n };\n\n // 滚动条补丁\n Class.prototype.scrollPatch = function(){\n var that = this;\n var layMainTable = that.layMain.children('table');\n var scrollWidth = that.layMain.width() - that.layMain.prop('clientWidth'); // 纵向滚动条宽度\n var scrollHeight = that.layMain.height() - that.layMain.prop('clientHeight'); // 横向滚动条高度\n var getScrollWidth = that.getScrollWidth(that.layMain[0]); // 获取主容器滚动条宽度,如果有的话\n var outWidth = layMainTable.outerWidth() - that.layMain.width(); // 表格内容器的超出宽度\n\n // 添加补丁\n var addPatch = function(elem){\n if(scrollWidth && scrollHeight){\n elem = elem.eq(0);\n if(!elem.find('.layui-table-patch')[0]){\n var patchElem = $('
                '); // 补丁元素\n patchElem.find('div').css({\n width: scrollWidth\n });\n elem.find('tr').append(patchElem);\n }\n } else {\n elem.find('.layui-table-patch').remove();\n }\n };\n\n addPatch(that.layHeader);\n addPatch(that.layTotal);\n\n // 固定列区域高度\n var mainHeight = that.layMain.height();\n var fixHeight = mainHeight - scrollHeight;\n\n that.layFixed.find(ELEM_BODY).css(\n 'height',\n layMainTable.height() >= fixHeight ? fixHeight : 'auto'\n ).scrollTop(that.layMain.scrollTop()); // 固定列滚动条高度\n\n // 表格宽度小于容器宽度时,隐藏固定列\n that.layFixRight[\n (table.cache[that.key] && table.cache[that.key].length) && outWidth > 0\n ? 'removeClass'\n : 'addClass'\n ](HIDE);\n\n // 操作栏\n that.layFixRight.css('right', scrollWidth - 1);\n };\n\n // 事件处理\n Class.prototype.events = function(){\n var that = this;\n var options = that.config;\n\n var filter = options.elem.attr('lay-filter');\n var th = that.layHeader.find('th');\n var ELEM_CELL = '.layui-table-cell';\n\n var _BODY = $('body');\n var dict = {};\n\n // 头部工具栏操作事件\n that.layTool.on('click', '*[lay-event]', function(e){\n var othis = $(this);\n var events = othis.attr('lay-event');\n var data = table.cache[options.id];\n var openPanel = function(sets){\n var list = $(sets.list);\n var panel = $('
                  ');\n\n panel.html(list);\n\n // 限制最大高度\n if(options.height){\n panel.css('max-height', options.height - (that.layTool.outerHeight() || 50));\n }\n\n // 插入元素\n othis.find('.' + ELEM_TOOL_PANEL)[0] || othis.append(panel);\n that.renderForm();\n\n panel.on('click', function(e){\n layui.stope(e);\n });\n\n sets.done && sets.done(panel, list)\n };\n\n layui.stope(e);\n _DOC.trigger('table.tool.panel.remove');\n layer.close(that.tipsIndex);\n\n switch(events){\n case 'LAYTABLE_COLS': // 筛选列\n openPanel({\n list: function(){\n var lis = [];\n that.eachCols(function(i, item){\n if(item.field && item.type == 'normal'){\n lis.push('
                • ' + (item.fieldTitle || item.title || item.field) + '
                • ').text()) +'\" lay-filter=\"LAY_TABLE_TOOL_COLS\">');\n }\n });\n return lis.join('');\n }()\n ,done: function(){\n form.on('checkbox(LAY_TABLE_TOOL_COLS)', function(obj){\n var othis = $(obj.elem);\n var checked = this.checked;\n var key = othis.data('key');\n var col = that.col(key);\n var hide = col.hide;\n var parentKey = othis.data('parentkey');\n\n if(!col.key) return;\n\n // 同步勾选列的 hide 值和隐藏样式\n col.hide = !checked;\n that.elem.find('*[data-key=\"'+ key +'\"]')[\n checked ? 'removeClass' : 'addClass'\n ](HIDE);\n\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\n if(hide != col.hide){\n that.setParentCol(!checked, parentKey);\n }\n\n // 重新适配尺寸\n that.resize();\n\n // 列筛选(显示或隐藏)后的事件\n layui.event.call(this, MOD_NAME, 'colToggled('+ filter +')', {\n col: col,\n config: options\n });\n });\n }\n });\n break;\n case 'LAYTABLE_EXPORT': // 导出\n if (!data.length) return layer.tips('当前表格无数据', this, {tips: 3});\n if(device.ie){\n layer.tips('导出功能不支持 IE,请用 Chrome 等高级浏览器导出', this, {\n tips: 3\n });\n } else {\n openPanel({\n list: function(){\n return [\n '
                • 导出 csv 格式文件
                • ',\n '
                • 导出 xls 格式文件
                • '\n ].join('')\n }(),\n done: function(panel, list){\n list.on('click', function(){\n var type = $(this).data('type')\n table.exportFile.call(that, options.id, null, type);\n });\n }\n });\n }\n break;\n case 'LAYTABLE_PRINT': // 打印\n if (!data.length) return layer.tips('当前表格无数据', this, {tips: 3});\n var printWin = window.open('about:blank', '_blank');\n var style = [''].join('')\n var html = $(that.layHeader.html()); // 输出表头\n\n html.append(that.layMain.find('table').html()); // 输出表体\n html.append(that.layTotal.find('table').html()) // 输出合计行\n\n html.find('th.layui-table-patch').remove(); // 移除补丁\n // 移除表头特殊列\n html.find('thead>tr>th.'+ ELEM_COL_SPECIAL).filter(function(i, thElem){\n return !$(thElem).children('.'+ ELEM_GROUP).length; // 父级表头除外\n }).remove();\n html.find('tbody>tr>td.'+ ELEM_COL_SPECIAL).remove(); // 移除表体特殊列\n\n printWin.document.write(style + html.prop('outerHTML'));\n printWin.document.close();\n\n if(layui.device('edg').edg){\n printWin.onafterprint = printWin.close;\n printWin.print();\n }else{\n printWin.print();\n printWin.close();\n }\n break;\n }\n\n layui.event.call(this, MOD_NAME, 'toolbar('+ filter +')', $.extend({\n event: events,\n config: options\n },{}));\n });\n\n // 表头自定义元素事件\n that.layHeader.on('click', '*[lay-event]', function(e){\n var othis = $(this);\n var events = othis.attr('lay-event');\n var th = othis.closest('th');\n var key = th.data('key');\n var col = that.col(key);\n\n layui.event.call(this, MOD_NAME, 'colTool('+ filter +')', $.extend({\n event: events,\n config: options,\n col: col\n },{}));\n });\n\n // 分页栏操作事件\n that.layPagebar.on('click', '*[lay-event]', function(e){\n var othis = $(this);\n var events = othis.attr('lay-event');\n\n layui.event.call(this, MOD_NAME, 'pagebar('+ filter +')', $.extend({\n event: events,\n config: options\n },{}));\n });\n\n // 拖拽调整宽度\n th.on('mousemove', function(e){\n var othis = $(this);\n var oLeft = othis.offset().left;\n var pLeft = e.clientX - oLeft;\n if(othis.data('unresize') || thisTable.eventMoveElem){\n return;\n }\n dict.allowResize = othis.width() - pLeft <= 10; //是否处于拖拽允许区域\n _BODY.css('cursor', (dict.allowResize ? 'col-resize' : ''));\n }).on('mouseleave', function(){\n var othis = $(this);\n if(thisTable.eventMoveElem) return;\n _BODY.css('cursor', '');\n }).on('mousedown', function(e){\n var othis = $(this);\n if(dict.allowResize){\n var key = othis.data('key');\n e.preventDefault();\n dict.offset = [e.clientX, e.clientY]; //记录初始坐标\n\n that.cssRules(key, function(item){\n var width = item.style.width || othis.outerWidth();\n dict.rule = item;\n dict.ruleWidth = parseFloat(width);\n dict.minWidth = othis.data('minwidth') || options.cellMinWidth;\n dict.maxWidth = othis.data('maxwidth') || options.cellMaxWidth;\n });\n\n // 临时记录当前拖拽信息\n othis.data(DATA_MOVE_NAME, dict);\n thisTable.eventMoveElem = othis;\n }\n });\n\n // 拖拽中\n if(!thisTable.docEvent){\n _DOC.on('mousemove', function(e){\n if(thisTable.eventMoveElem){\n var dict = thisTable.eventMoveElem.data(DATA_MOVE_NAME) || {};\n\n thisTable.eventMoveElem.data('resizing', 1);\n e.preventDefault();\n\n if(dict.rule){\n var setWidth = dict.ruleWidth + e.clientX - dict.offset[0];\n var id = thisTable.eventMoveElem.closest('.' + ELEM_VIEW).attr('lay-id');\n var thatTable = getThisTable(id);\n\n if(!thatTable) return;\n\n if(setWidth < dict.minWidth) setWidth = dict.minWidth;\n if(setWidth > dict.maxWidth) setWidth = dict.maxWidth;\n\n dict.rule.style.width = setWidth + 'px';\n thatTable.setGroupWidth(thisTable.eventMoveElem);\n layer.close(that.tipsIndex);\n }\n }\n }).on('mouseup', function(e){\n if(thisTable.eventMoveElem){\n var th = thisTable.eventMoveElem; // 当前触发拖拽的 th 元素\n var id = th.closest('.' + ELEM_VIEW).attr('lay-id');\n var thatTable = getThisTable(id);\n\n if(!thatTable) return;\n\n var key = th.data('key');\n var col = thatTable.col(key);\n var filter = thatTable.config.elem.attr('lay-filter');\n\n // 重置过度信息\n dict = {};\n _BODY.css('cursor', '');\n thatTable.scrollPatch();\n\n // 清除当前拖拽信息\n th.removeData(DATA_MOVE_NAME);\n delete thisTable.eventMoveElem;\n\n // 列拖拽宽度后的事件\n thatTable.cssRules(key, function(item){\n col.width = parseFloat(item.style.width);\n layui.event.call(th[0], MOD_NAME, 'colResized('+ filter +')', {\n col: col,\n config: thatTable.config\n });\n });\n }\n });\n }\n\n // 已给 document 执行全局事件,避免重复绑定\n thisTable.docEvent = true;\n\n\n // 排序\n th.on('click', function(e){\n var othis = $(this);\n var elemSort = othis.find(ELEM_SORT);\n var nowType = elemSort.attr('lay-sort');\n var type;\n\n // 排序不触发的条件\n if(!elemSort[0] || othis.data('resizing') === 1){\n return othis.removeData('resizing');\n }\n\n if(nowType === 'asc'){\n type = 'desc';\n } else if(nowType === 'desc'){\n type = null;\n } else {\n type = 'asc';\n }\n that.sort({\n field: othis,\n type: type,\n fromEvent: true\n });\n }).find(ELEM_SORT+' .layui-edge ').on('click', function(e){\n var othis = $(this);\n var index = othis.index();\n var field = othis.parents('th').eq(0).data('field');\n layui.stope(e);\n if(index === 0){\n that.sort({\n field: field,\n type: 'asc',\n fromEvent: true\n });\n } else {\n that.sort({\n field: field,\n type: 'desc',\n fromEvent: true\n });\n }\n });\n\n //数据行中的事件返回的公共对象成员\n var commonMember = that.commonMember = function(sets){\n var othis = $(this);\n var index = othis.parents('tr').eq(0).data('index');\n var tr = that.layBody.find('tr[data-index=\"'+ index +'\"]');\n var data = table.cache[that.key] || [];\n\n data = data[index] || {};\n\n // 事件返回的公共成员\n var obj = {\n tr: tr, // 行元素\n config: options,\n data: table.clearCacheKey(data), // 当前行数据\n dataCache: data, // 当前行缓存中的数据\n index: index,\n del: function(){ // 删除行数据\n table.cache[that.key][index] = [];\n tr.remove();\n that.scrollPatch();\n },\n update: function(fields, related){ // 修改行数据\n fields = fields || {};\n layui.each(fields, function(key, value){\n var td = tr.children('td[data-field=\"'+ key +'\"]');\n var cell = td.children(ELEM_CELL); // 获取当前修改的列\n\n // 更新缓存中的数据\n data[key] = obj.data[key] = value;\n\n // 更新相应列视图\n that.eachCols(function(i, item3){\n if(item3.field == key){\n cell.html(parseTempData.call(that, {\n item3: item3\n ,content: value\n ,tplData: $.extend({\n LAY_COL: item3\n }, data)\n }));\n td.data('content', value);\n }\n // 更新其他包含自定义模板且可能有所关联的列视图\n else if(related && (item3.templet || item3.toolbar)){\n var thisTd = tr.children('td[data-field=\"'+ (item3.field || i) +'\"]');\n var content = data[item3.field];\n\n thisTd.children(ELEM_CELL).html(parseTempData.call(that, {\n item3: item3\n ,content: content\n ,tplData: $.extend({\n LAY_COL: item3\n }, data)\n }));\n thisTd.data('content', content);\n }\n });\n });\n\n that.renderForm();\n },\n // 设置行选中状态\n setRowChecked: function(opts){\n that.setRowChecked($.extend({\n index: index\n }, opts));\n }\n // 获取当前列\n };\n\n return $.extend(obj, sets);\n };\n\n // 复选框选择(替代元素的 click 事件)\n that.elem.on('click', 'input[name=\"layTableCheckbox\"]+', function(e){\n var othis = $(this);\n var td = othis.closest('td');\n var checkbox = othis.prev();\n var children = that.layBody.find('input[name=\"layTableCheckbox\"]');\n var index = checkbox.parents('tr').eq(0).data('index');\n var checked = checkbox[0].checked;\n var isAll = checkbox.attr('lay-filter') === 'layTableAllChoose';\n\n if(checkbox[0].disabled) return;\n\n // 全选\n if(isAll){\n that.setRowChecked({\n index: 'all',\n checked: checked\n });\n } else {\n that.setRowChecked({\n index: index,\n checked: checked\n });\n layui.stope(e);\n }\n\n // 事件\n layui.event.call(\n checkbox[0],\n MOD_NAME, 'checkbox('+ filter +')',\n commonMember.call(checkbox[0], {\n checked: checked,\n type: isAll ? 'all' : 'one',\n getCol: function(){ // 获取当前列的表头配置信息\n return that.col(td.data('key'));\n }\n })\n );\n });\n\n // 单选框选择\n that.elem.on('click', 'input[lay-type=\"layTableRadio\"]+', function(e){\n var othis = $(this);\n var td = othis.closest('td');\n var radio = othis.prev();\n var checked = radio[0].checked;\n var index = radio.parents('tr').eq(0).data('index');\n\n layui.stope(e);\n if(radio[0].disabled) return false;\n\n // 标注选中样式\n that.setRowChecked({\n type: 'radio',\n index: index\n });\n\n // 事件\n layui.event.call(\n radio[0],\n MOD_NAME, 'radio('+ filter +')',\n commonMember.call(radio[0], {\n checked: checked,\n getCol: function(){ // 获取当前列的表头配置信息\n return that.col(td.data('key'));\n }\n })\n );\n });\n\n // 行事件\n that.layBody.on('mouseenter', 'tr', function(){ // 鼠标移入行\n var othis = $(this);\n var index = othis.index();\n if(othis.data('off')) return; // 不触发事件\n that.layBody.find('tr:eq('+ index +')').addClass(ELEM_HOVER)\n }).on('mouseleave', 'tr', function(){ // 鼠标移出行\n var othis = $(this);\n var index = othis.index();\n if(othis.data('off')) return; // 不触发事件\n that.layBody.find('tr:eq('+ index +')').removeClass(ELEM_HOVER)\n }).on('click', 'tr', function(e){ // 单击行\n // 不支持行单击事件的元素\n var UNROW = [\n '.layui-form-checkbox',\n '.layui-form-switch',\n '.layui-form-radio',\n '[lay-unrow]'\n ].join(',');\n if( $(e.target).is(UNROW) || $(e.target).closest(UNROW)[0]){\n return;\n }\n setRowEvent.call(this, 'row');\n }).on('dblclick', 'tr', function(){ // 双击行\n setRowEvent.call(this, 'rowDouble');\n }).on('contextmenu', 'tr', function(e){ // 菜单\n if (!options.defaultContextmenu) e.preventDefault();\n setRowEvent.call(this, 'rowContextmenu');\n });\n\n // 创建行单击、双击、菜单事件\n var setRowEvent = function(eventType){\n var othis = $(this);\n if(othis.data('off')) return; //不触发事件\n layui.event.call(this,\n MOD_NAME, eventType + '('+ filter +')',\n commonMember.call(othis.children('td')[0])\n );\n };\n\n // 渲染单元格编辑状态\n var renderGridEdit = function(othis, e){\n othis = $(othis);\n\n if(othis.data('off')) return; // 不触发事件\n\n var field = othis.data('field');\n var key = othis.data('key');\n var col = that.col(key);\n var index = othis.closest('tr').data('index');\n var data = table.cache[that.key][index];\n var elemCell = othis.children(ELEM_CELL);\n\n // 是否开启编辑\n // 若 edit 传入函数,则根据函数的返回结果判断是否开启编辑\n var editType = typeof col.edit === 'function'\n ? col.edit(data)\n : col.edit;\n\n // 显示编辑表单\n if(editType){\n var input = $(function(){\n var inputElem = '';\n if(editType === 'textarea') {\n inputElem = '';\n }\n return inputElem;\n }());\n\n input[0].value = othis.data('content') || data[field] || elemCell.text();\n othis.find('.'+ELEM_EDIT)[0] || othis.append(input);\n input.focus();\n e && layui.stope(e);\n }\n };\n\n // 单元格编辑 - 输入框内容被改变的事件\n that.layBody.on('change', '.'+ ELEM_EDIT, function(){\n var othis = $(this);\n var td = othis.parent();\n var value = this.value;\n var field = othis.parent().data('field');\n var index = othis.closest('tr').data('index');\n var data = table.cache[that.key][index];\n\n //事件回调的参数对象\n var params = commonMember.call(td[0], {\n value: value,\n field: field,\n oldValue: data[field], // 编辑前的值\n td: td,\n reedit: function(){ // 重新编辑\n setTimeout(function(){\n // 重新渲染为编辑状态\n renderGridEdit(params.td);\n\n // 将字段缓存的值恢复到编辑之前的值\n var obj = {};\n obj[field] = params.oldValue;\n params.update(obj);\n });\n },\n getCol: function(){ // 获取当前列的表头配置信息\n return that.col(td.data('key'));\n }\n });\n\n // 更新缓存中的值\n var obj = {}; //变更的键值\n obj[field] = value;\n params.update(obj);\n\n // 执行 API 编辑事件\n layui.event.call(td[0], MOD_NAME, 'edit('+ filter +')', params);\n }).on('blur', '.'+ ELEM_EDIT, function(){ // 单元格编辑 - 恢复非编辑状态事件\n $(this).remove(); // 移除编辑状态\n });\n\n // 表格主体单元格触发编辑的事件\n that.layBody.on(options.editTrigger, 'td', function(e){\n renderGridEdit(this, e)\n }).on('mouseenter', 'td', function(){\n showGridExpandIcon.call(this)\n }).on('mouseleave', 'td', function(){\n showGridExpandIcon.call(this, 'hide');\n });\n\n // 表格合计栏单元格 hover 显示展开图标\n that.layTotal.on('mouseenter', 'td', function(){\n showGridExpandIcon.call(this)\n }).on('mouseleave', 'td', function(){\n showGridExpandIcon.call(this, 'hide');\n });\n\n // 显示单元格展开图标\n var ELEM_GRID = 'layui-table-grid';\n var ELEM_GRID_DOWN = 'layui-table-grid-down';\n var ELEM_GRID_PANEL = 'layui-table-grid-panel';\n var showGridExpandIcon = function(hide){\n var othis = $(this);\n var elemCell = othis.children(ELEM_CELL);\n\n if(othis.data('off')) return; // 不触发事件\n if(othis.parent().hasClass(ELEM_EXPAND)) return; // 是否已为展开状态\n\n if(hide){\n othis.find('.layui-table-grid-down').remove();\n } else if((\n elemCell.prop('scrollWidth') > elemCell.outerWidth() ||\n elemCell.find(\"br\").length > 0\n ) && !options.lineStyle){\n if(elemCell.find('.'+ ELEM_GRID_DOWN)[0]) return;\n othis.append('
                  ');\n }\n };\n // 展开单元格内容\n var gridExpand = function(e){\n var othis = $(this);\n var td = othis.parent();\n var key = td.data('key');\n var col = that.col(key);\n var index = td.parent().data('index');\n var elemCell = td.children(ELEM_CELL);\n var ELEM_CELL_C = 'layui-table-cell-c';\n var elemCellClose = $('');\n var expandedMode = col.expandedMode || options.cellExpandedMode;\n\n // 展开风格\n if (expandedMode === 'tips') { // TIPS 展开风格\n that.tipsIndex = layer.tips([\n '
                  ',\n elemCell.html(),\n '
                  ',\n ''\n ].join(''), elemCell[0], {\n tips: [3, ''],\n time: -1,\n anim: -1,\n maxWidth: (device.ios || device.android) ? 300 : that.elem.width()/2,\n isOutAnim: false,\n skin: 'layui-table-tips',\n success: function(layero, index){\n layero.find('.layui-table-tips-c').on('click', function(){\n layer.close(index);\n });\n }\n });\n } else { // 多行展开风格\n // 恢复其他已经展开的单元格\n that.elem.find('.'+ ELEM_CELL_C).trigger('click');\n\n // 设置当前单元格展开宽度\n that.cssRules(key, function(item){\n var width = item.style.width;\n var expandedWidth = col.expandedWidth || options.cellExpandedWidth;\n\n // 展开后的宽度不能小于当前宽度\n if(expandedWidth < parseFloat(width)) expandedWidth = parseFloat(width);\n\n elemCellClose.data('cell-width', width);\n item.style.width = expandedWidth + 'px';\n\n setTimeout(function(){\n that.scrollPatch(); // 滚动条补丁\n });\n });\n\n // 设置当前单元格展开样式\n that.setRowActive(index, ELEM_EXPAND);\n\n // 插入关闭按钮\n if(!elemCell.next('.'+ ELEM_CELL_C)[0]){\n elemCell.after(elemCellClose);\n }\n\n // 关闭展开状态\n elemCellClose.on('click', function(){\n var $this = $(this);\n that.setRowActive(index, ELEM_EXPAND, true); // 移除单元格展开样式\n that.cssRules(key, function(item){\n item.style.width = $this.data('cell-width'); // 恢复单元格展开前的宽度\n that.resize(); // 滚动条补丁\n });\n $this.remove();\n });\n }\n\n othis.remove();\n layui.stope(e);\n };\n\n // 表格主体单元格展开事件\n that.layBody.on('click', '.'+ ELEM_GRID_DOWN, function(e){\n gridExpand.call(this, e);\n });\n // 表格合计栏单元格展开事件\n that.layTotal.on('click', '.'+ ELEM_GRID_DOWN, function(e){\n gridExpand.call(this, e);\n });\n\n // 行工具条操作事件\n var toolFn = function(type){\n var othis = $(this);\n var td = othis.closest('td');\n var index = othis.parents('tr').eq(0).data('index');\n // 标记当前活动行\n that.setRowActive(index);\n\n // 执行事件\n layui.event.call(\n this,\n MOD_NAME,\n (type || 'tool') + '('+ filter +')',\n commonMember.call(this, {\n event: othis.attr('lay-event'),\n getCol: function(){ // 获取当前列的表头配置信息\n return that.col(td.data('key'));\n }\n })\n );\n };\n\n // 行工具条单击事件\n that.layBody.on('click', '*[lay-event]', function(e){\n toolFn.call(this);\n layui.stope(e);\n }).on('dblclick', '*[lay-event]', function(e){ //行工具条双击事件\n toolFn.call(this, 'toolDouble');\n layui.stope(e);\n });\n\n // 同步滚动条\n that.layMain.on('scroll', function(){\n var othis = $(this);\n var scrollLeft = othis.scrollLeft();\n var scrollTop = othis.scrollTop();\n\n that.layHeader.scrollLeft(scrollLeft);\n that.layTotal.scrollLeft(scrollLeft);\n that.layFixed.find(ELEM_BODY).scrollTop(scrollTop);\n\n layer.close(that.tipsIndex);\n });\n\n // 固定列滚轮事件 - 临时兼容方案\n that.layFixed.find(ELEM_BODY).on('mousewheel DOMMouseScroll', function(e) {\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail;\n var scrollTop = that.layMain.scrollTop();\n var step = 30;\n\n e.preventDefault();\n that.layMain.scrollTop(scrollTop + (delta > 0 ? -step : step));\n });\n };\n\n // 全局事件\n (function(){\n // 自适应尺寸\n _WIN.on('resize', function(){\n layui.each(thisTable.that, function(){\n this.resize();\n });\n });\n\n // 全局点击\n _DOC.on('click', function(){\n _DOC.trigger('table.remove.tool.panel');\n });\n\n // 工具面板移除事件\n _DOC.on('table.remove.tool.panel', function(){\n $('.' + ELEM_TOOL_PANEL).remove();\n });\n })();\n\n // 初始化\n table.init = function(filter, settings){\n settings = settings || {};\n var that = this;\n var inst = null;\n var elemTable = typeof filter === 'object' ? filter : (\n typeof filter === 'string'\n ? $('table[lay-filter=\"'+ filter +'\"]')\n : $(ELEM + '[lay-data], '+ ELEM + '[lay-options]')\n );\n var errorTips = 'Table element property lay-data configuration item has a syntax error: ';\n\n //遍历数据表格\n elemTable.each(function(){\n var othis = $(this);\n var attrData = othis.attr('lay-data');\n var tableData = lay.options(this, {\n attr: attrData ? 'lay-data' : null,\n errorText: errorTips + (attrData || othis.attr('lay-options'))\n });\n\n var options = $.extend({\n elem: this\n ,cols: []\n ,data: []\n ,skin: othis.attr('lay-skin') //风格\n ,size: othis.attr('lay-size') //尺寸\n ,even: typeof othis.attr('lay-even') === 'string' //偶数行背景\n }, table.config, settings, tableData);\n\n filter && othis.hide();\n\n //获取表头数据\n othis.find('thead>tr').each(function(i){\n options.cols[i] = [];\n $(this).children().each(function(ii){\n var th = $(this);\n var attrData = th.attr('lay-data');\n var itemData = lay.options(this, {\n attr: attrData ? 'lay-data' : null,\n errorText: errorTips + (attrData || th.attr('lay-options'))\n });\n\n var row = $.extend({\n title: th.text()\n ,colspan: parseInt(th.attr('colspan')) || 1 //列单元格\n ,rowspan: parseInt(th.attr('rowspan')) || 1 //行单元格\n }, itemData);\n\n options.cols[i].push(row);\n });\n });\n\n //缓存静态表体数据\n var trElem = othis.find('tbody>tr');\n\n //执行渲染\n var tableIns = table.render(options);\n\n //获取表体数据\n if (trElem.length && !settings.data && !tableIns.config.url) {\n var tdIndex = 0;\n table.eachCols(tableIns.config.id, function (i3, item3) {\n trElem.each(function(i1){\n options.data[i1] = options.data[i1] || {};\n var tr = $(this);\n var field = item3.field;\n options.data[i1][field] = tr.children('td').eq(tdIndex).html();\n });\n tdIndex++;\n })\n\n tableIns.reloadData({\n data: options.data\n });\n }\n });\n\n return that;\n };\n\n //记录所有实例\n thisTable.that = {}; //记录所有实例对象\n thisTable.config = {}; //记录所有实例配置项\n\n var eachChildCols = function (index, cols, i1, item2) {\n //如果是组合列,则捕获对应的子列\n if (item2.colGroup) {\n var childIndex = 0;\n index++;\n item2.CHILD_COLS = [];\n // 找到它的子列所在cols的下标\n var i2 = i1 + (parseInt(item2.rowspan) || 1);\n layui.each(cols[i2], function (i22, item22) {\n if (item22.parentKey) { // 如果字段信息中包含了parentKey和key信息\n if (item22.parentKey === item2.key) {\n item22.PARENT_COL_INDEX = index;\n item2.CHILD_COLS.push(item22);\n eachChildCols(index, cols, i2, item22);\n }\n } else {\n // 没有key信息以colspan数量所谓判断标准\n //如果子列已经被标注为{PARENT_COL_INDEX},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环\n if (item22.PARENT_COL_INDEX || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;\n item22.PARENT_COL_INDEX = index;\n item2.CHILD_COLS.push(item22);\n childIndex = childIndex + (parseInt(item22.colspan > 1 ? item22.colspan : 1));\n eachChildCols(index, cols, i2, item22);\n }\n });\n }\n };\n\n // 遍历表头\n table.eachCols = function(id, callback, cols){\n var config = thisTable.config[id] || {};\n var arrs = [], index = 0;\n\n cols = $.extend(true, [], cols || config.cols);\n\n //重新整理表头结构\n layui.each(cols, function(i1, item1){\n if (i1) return true; // 只需遍历第一层\n layui.each(item1, function(i2, item2){\n eachChildCols(index, cols, i1, item2);\n if(item2.PARENT_COL_INDEX) return; //如果是子列,则不进行追加,因为已经存储在父列中\n arrs.push(item2)\n });\n });\n\n //重新遍历列,如果有子列,则进入递归\n var eachArrs = function(obj){\n layui.each(obj || arrs, function(i, item){\n if(item.CHILD_COLS) return eachArrs(item.CHILD_COLS);\n typeof callback === 'function' && callback(i, item);\n });\n };\n\n eachArrs();\n };\n\n // 获取表格选中状态\n table.checkStatus = function(id){\n var nums = 0;\n var invalidNum = 0;\n var arr = [];\n var data = table.cache[id] || [];\n\n //计算全选个数\n layui.each(data, function(i, item){\n if(layui.type(item) === 'array' || item[table.config.disabledName]){\n invalidNum++; // 无效数据,或已删除的\n return;\n }\n if(item[table.config.checkName]){\n nums++;\n if(!item[table.config.disabledName]){\n arr.push(table.clearCacheKey(item));\n }\n }\n });\n return {\n data: arr, // 选中的数据\n isAll: data.length ? (nums === (data.length - invalidNum)) : false // 是否全选\n };\n };\n\n // 设置行选中状态\n table.setRowChecked = function(id, opts){\n var that = getThisTable(id);\n if(!that) return;\n that.setRowChecked(opts);\n };\n\n // 获取表格当前页的所有行数据\n table.getData = function(id){\n var arr = [];\n var data = table.cache[id] || [];\n layui.each(data, function(i, item){\n if(layui.type(item) === 'array'){\n return;\n }\n arr.push(table.clearCacheKey(item));\n });\n return arr;\n };\n\n // 重置表格尺寸结构\n table.resize = function(id){\n // 若指定表格唯一 id,则只执行该 id 对应的表格实例\n if(id){\n var config = getThisTableConfig(id); // 获取当前实例配置项\n if(!config) return;\n\n getThisTable(id).resize();\n\n } else { // 否则重置所有表格实例尺寸\n layui.each(thisTable.that, function(){\n this.resize();\n });\n }\n };\n\n // 表格导出\n table.exportFile = function(id, data, opts){\n data = data || table.clearCacheKey(table.cache[id]);\n opts = typeof opts === 'object' ? opts : function(){\n var obj = {};\n opts && (obj.type = opts);\n return obj;\n }();\n\n var type = opts.type || 'csv';\n var thatTable = thisTable.that[id];\n var config = thisTable.config[id] || {};\n var textType = ({\n csv: 'text/csv',\n xls: 'application/vnd.ms-excel'\n })[type];\n var alink = document.createElement(\"a\");\n\n if(device.ie) return hint.error('IE_NOT_SUPPORT_EXPORTS');\n\n // 处理 treeTable 数据\n if (config.tree && config.tree.view) {\n try {\n data = $.extend(true, [], table.cache[id]);\n data = (function fn(data) {\n return data.reduce(function (acc, obj){\n var children = obj.children || [];\n delete obj.children;\n return acc.concat(obj, fn(children));\n }, []);\n })(Array.from(data));\n } catch (e) {}\n }\n\n alink.href = 'data:'+ textType +';charset=utf-8,\\ufeff'+ encodeURIComponent(function(){\n var dataTitle = [];\n var dataMain = [];\n var dataTotal = [];\n var fieldsIsHide = {};\n\n // 表头和表体\n layui.each(data, function(i1, item1){\n var vals = [];\n if(typeof id === 'object'){ // 若 id 参数直接为表头数据\n layui.each(id, function(i, item){\n i1 == 0 && dataTitle.push(item || '');\n });\n layui.each(layui.isArray(item1) ? $.extend([], item1) : table.clearCacheKey(item1), function(i2, item2){\n vals.push('\"'+ (item2 || '') +'\"');\n });\n } else {\n table.eachCols(id, function(i3, item3){\n if(item3.ignoreExport === false || item3.field && item3.type == 'normal'){\n // 不导出隐藏列,除非设置 ignoreExport 强制导出\n if (\n (item3.hide && item3.ignoreExport !== false) ||\n item3.ignoreExport === true // 忽略导出\n ) {\n if(i1 == 0) fieldsIsHide[item3.field] = true; // 记录隐藏列\n return;\n }\n\n var content = item1[item3.field];\n if(content === undefined || content === null) content = '';\n\n i1 == 0 && dataTitle.push(item3.fieldTitle || item3.title || item3.field || '');\n\n // 解析内容\n content = parseTempData.call(thatTable, {\n item3: item3,\n content: content,\n tplData: item1,\n text: 'text',\n obj: {\n td: function(field){\n var td = thatTable.layBody.find('tr[data-index=\"'+ i1 +'\"]>td');\n return td.filter('[data-field=\"'+ field +'\"]');\n }\n }\n });\n\n // 异常处理\n content = content.replace(/\"/g, '\"\"'); // 避免内容存在「双引号」导致异常分隔\n // content += '\\t'; // 加「水平制表符」 避免内容被转换格式\n content = '\"'+ content +'\"'; // 避免内容存在「逗号」导致异常分隔\n\n // 插入内容\n vals.push(content);\n }\n });\n }\n dataMain.push(vals.join(','));\n });\n\n // 表合计\n thatTable && layui.each(thatTable.dataTotal, function(i, o){\n fieldsIsHide[o.field] || dataTotal.push('\"' + (o.total || '') + '\"');\n });\n\n return dataTitle.join(',') + '\\r\\n' + dataMain.join('\\r\\n') + '\\r\\n' + dataTotal.join(',');\n }());\n\n alink.download = (opts.title || config.title || 'table_'+ (config.index || '')) + '.' + type;\n document.body.appendChild(alink);\n alink.click();\n document.body.removeChild(alink);\n };\n\n // 获取表格配置信息\n table.getOptions = function (id) {\n return getThisTableConfig(id);\n }\n\n // 显示或隐藏列\n table.hideCol = function (id, cols) {\n var that = getThisTable(id);\n if (!that) {\n return;\n }\n\n if (layui.type(cols) === 'boolean') {\n // 显示全部或者隐藏全部\n that.eachCols(function (i2, item2) {\n var key = item2.key;\n var col = that.col(key);\n var parentKey = item2.parentKey;\n // 同步勾选列的 hide 值和隐藏样式\n if (col.hide != cols) {\n var hide = col.hide = cols;\n that.elem.find('*[data-key=\"'+ key +'\"]')[\n hide ? 'addClass' : 'removeClass'\n ](HIDE);\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\n that.setParentCol(hide, parentKey);\n }\n })\n } else {\n cols = layui.isArray(cols) ? cols : [cols];\n layui.each(cols, function (i1, item1) {\n that.eachCols(function (i2, item2) {\n if (item1.field === item2.field) {\n var key = item2.key;\n var col = that.col(key);\n var parentKey = item2.parentKey;\n // 同步勾选列的 hide 值和隐藏样式\n if ('hide' in item1 && col.hide != item1.hide) {\n var hide = col.hide = !!item1.hide;\n that.elem.find('*[data-key=\"'+ key +'\"]')[\n hide ? 'addClass' : 'removeClass'\n ](HIDE);\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\n that.setParentCol(hide, parentKey);\n }\n }\n })\n });\n }\n $('.' + ELEM_TOOL_PANEL).remove(); // 关闭字段筛选面板如果打开的话\n // 重新适配尺寸\n that.resize();\n }\n\n // 重载\n table.reload = function(id, options, deep, type){\n var config = getThisTableConfig(id); //获取当前实例配置项\n if(!config) return;\n\n var that = getThisTable(id);\n that.reload(options, deep, type);\n\n return thisTable.call(that);\n };\n\n // 仅重载数据\n table.reloadData = function(){\n var args = $.extend([], arguments);\n args[3] = 'reloadData';\n\n // 重载时,影响整个结构的参数,不适合更新的参数\n var dataParams = new RegExp('^('+ [\n 'elem', 'id', 'cols', 'width', 'height', 'maxHeight',\n 'toolbar', 'defaultToolbar',\n 'className', 'css', 'pagebar'\n ].join('|') + ')$');\n\n // 过滤与数据无关的参数\n layui.each(args[1], function (key, value) {\n if(dataParams.test(key)){\n delete args[1][key];\n }\n });\n\n return table.reload.apply(null, args);\n };\n\n // 核心入口\n table.render = function(options){\n var inst = new Class(options);\n return thisTable.call(inst);\n };\n\n // 清除临时 Key\n table.clearCacheKey = function(data){\n data = $.extend({}, data);\n delete data[table.config.checkName];\n delete data[table.config.indexName];\n delete data[table.config.numbersName];\n delete data[table.config.disabledName];\n return data;\n };\n\n // 自动完成渲染\n $(function(){\n table.init();\n });\n\n exports(MOD_NAME, table);\n});\n","/**\r\n * layui.treeTable\r\n * 树表组件\r\n */\r\n\r\nlayui.define(['table'], function (exports) {\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var form = layui.form;\r\n var table = layui.table;\r\n var hint = layui.hint();\r\n\r\n // api\r\n var treeTable = {\r\n config: {},\r\n // 事件\r\n on: table.on,\r\n // 遍历字段\r\n eachCols: table.eachCols,\r\n index: table.index,\r\n set: function (options) {\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n resize: table.resize,\r\n getOptions: table.getOptions,\r\n hideCol: table.hideCol,\r\n renderData: table.renderData\r\n };\r\n\r\n // 操作当前实例\r\n var thisTreeTable = function () {\r\n var that = this;\r\n var options = that.config\r\n var id = options.id || options.index;\r\n\r\n return {\r\n config: options,\r\n reload: function (options, deep) {\r\n that.reload.call(that, options, deep);\r\n },\r\n reloadData: function (options, deep) {\r\n treeTable.reloadData(id, options, deep);\r\n }\r\n }\r\n }\r\n\r\n // 获取当前实例\r\n var getThisTable = function (id) {\r\n var that = thisTreeTable.that[id];\r\n if (!that) hint.error(id ? ('The treeTable instance with ID \\'' + id + '\\' not found') : 'ID argument required');\r\n return that || null;\r\n }\r\n\r\n // 字符\r\n var MOD_NAME = 'treeTable';\r\n var HIDE = 'layui-hide';\r\n\r\n var ELEM_VIEW = '.layui-table-view';\r\n var ELEM_TREE = '.layui-table-tree';\r\n var ELEM_TOOL = '.layui-table-tool';\r\n var ELEM_BOX = '.layui-table-box';\r\n var ELEM_HEADER = '.layui-table-header';\r\n var ELEM_BODY = '.layui-table-body';\r\n var ELEM_MAIN = '.layui-table-main';\r\n var ELEM_FIXED = '.layui-table-fixed';\r\n var ELEM_FIXL = '.layui-table-fixed-l';\r\n var ELEM_FIXR = '.layui-table-fixed-r';\r\n var ELEM_CHECKED = 'layui-table-checked';\r\n\r\n var TABLE_TREE = 'layui-table-tree';\r\n var LAY_DATA_INDEX = 'LAY_DATA_INDEX';\r\n var LAY_DATA_INDEX_HISTORY = 'LAY_DATA_INDEX_HISTORY';\r\n var LAY_PARENT_INDEX = 'LAY_PARENT_INDEX';\r\n var LAY_CHECKBOX_HALF = 'LAY_CHECKBOX_HALF';\r\n var LAY_EXPAND = 'LAY_EXPAND';\r\n var LAY_HAS_EXPANDED = 'LAY_HAS_EXPANDED';\r\n var LAY_ASYNC_STATUS = 'LAY_ASYNC_STATUS';\r\n var LAY_CASCADE = ['all', 'parent', 'children', 'none'];\r\n\r\n // 构造器\r\n var Class = function (options) {\r\n var that = this;\r\n that.index = ++treeTable.index;\r\n that.config = $.extend(true, {}, that.config, treeTable.config, options);\r\n // 处理一些属性\r\n that.init();\r\n that.render();\r\n };\r\n\r\n var updateCache = function (id, childrenKey, data) {\r\n var tableCache = table.cache[id];\r\n layui.each(data || tableCache, function (index, item) {\r\n var itemDataIndex = item[LAY_DATA_INDEX];\r\n if (itemDataIndex.indexOf('-') !== -1) {\r\n tableCache[itemDataIndex] = item\r\n }\r\n item[childrenKey] && updateCache(id, childrenKey, item[childrenKey]);\r\n })\r\n }\r\n\r\n var updateOptions = function (id, options, reload) {\r\n var that = getThisTable(id);\r\n reload === 'reloadData' || (that.status = { // 用于记录一些状态信息\r\n expand: {} // 折叠状态\r\n });\r\n var thatOptionsTemp = $.extend(true, {}, that.getOptions(), options);\r\n var treeOptions = thatOptionsTemp.tree;\r\n var childrenKey = treeOptions.customName.children;\r\n var idKey = treeOptions.customName.id;\r\n // 处理属性\r\n delete options.hasNumberCol;\r\n delete options.hasChecboxCol;\r\n delete options.hasRadioCol;\r\n table.eachCols(null, function (i1, item1) {\r\n if (item1.type === 'numbers') {\r\n options.hasNumberCol = true;\r\n } else if (item1.type === 'checkbox') {\r\n options.hasChecboxCol = true;\r\n } else if (item1.type === 'radio') {\r\n options.hasRadioCol = true;\r\n }\r\n }, thatOptionsTemp.cols)\r\n\r\n var parseData = options.parseData;\r\n var done = options.done;\r\n\r\n if (thatOptionsTemp.url) {\r\n // 异步加载的时候需要处理parseData进行转换\r\n if (!reload || (reload && parseData && !parseData.mod)) {\r\n options.parseData = function () {\r\n var parseDataThat = this;\r\n var args = arguments;\r\n var retData = args[0];\r\n if (layui.type(parseData) === 'function') {\r\n retData = parseData.apply(parseDataThat, args) || args[0];\r\n }\r\n var dataName = parseDataThat.response.dataName;\r\n // 处理 isSimpleData\r\n if (treeOptions.data.isSimpleData && !treeOptions.async.enable) { // 异步加载和 isSimpleData 不应该一起使用\r\n retData[dataName] = that.flatToTree(retData[dataName]);\r\n }\r\n // 处理节点状态\r\n updateStatus(retData[dataName], function (item) {\r\n item[LAY_EXPAND] = LAY_EXPAND in item ? item[LAY_EXPAND] : (item[idKey] !== undefined && that.status.expand[item[idKey]])\r\n }, childrenKey);\r\n\r\n if (parseDataThat.autoSort && parseDataThat.initSort && parseDataThat.initSort.type) {\r\n layui.sort(retData[dataName], parseDataThat.initSort.field, parseDataThat.initSort.type === 'desc', true)\r\n }\r\n\r\n that.initData(retData[dataName]);\r\n\r\n return retData;\r\n }\r\n options.parseData.mod = true\r\n }\r\n } else {\r\n options.data = options.data || [];\r\n // 处理 isSimpleData\r\n if (treeOptions.data.isSimpleData) {\r\n options.data = that.flatToTree(options.data);\r\n }\r\n that.initData(options.data);\r\n }\r\n\r\n if (!reload || (reload && done && !done.mod)) {\r\n options.done = function () {\r\n var args = arguments;\r\n var doneThat = this;\r\n var isRenderData = args[3]; // 是否是 renderData\r\n if (!isRenderData) {\r\n delete that.isExpandAll;\r\n }\r\n\r\n var tableView = this.elem.next();\r\n that.updateStatus(null, {\r\n LAY_HAS_EXPANDED: false // 去除已经打开过的状态\r\n });\r\n // 更新cache中的内容 将子节点也存到cache中\r\n updateCache(id, childrenKey);\r\n // 更新全选框的状态\r\n var layTableAllChooseElem = tableView.find('[name=\"layTableCheckbox\"][lay-filter=\"layTableAllChoose\"]');\r\n if (layTableAllChooseElem.length) {\r\n var checkStatus = treeTable.checkStatus(id);\r\n layTableAllChooseElem.prop({\r\n checked: checkStatus.isAll && checkStatus.data.length,\r\n indeterminate: !checkStatus.isAll && checkStatus.data.length\r\n })\r\n }\r\n if (!isRenderData && thatOptionsTemp.autoSort && thatOptionsTemp.initSort && thatOptionsTemp.initSort.type) {\r\n treeTable.sort(id);\r\n }\r\n\r\n that.renderTreeTable(tableView);\r\n\r\n if (layui.type(done) === 'function') {\r\n return done.apply(doneThat, args);\r\n }\r\n }\r\n options.done.mod = true;\r\n }\r\n }\r\n\r\n Class.prototype.init = function () {\r\n var that = this;\r\n var options = that.config;\r\n var cascade = options.tree.data.cascade;\r\n if (LAY_CASCADE.indexOf(cascade) === -1) {\r\n options.tree.data.cascade = 'all'; // 超出范围的都重置为全联动\r\n }\r\n\r\n // 先初始一个空的表格以便拿到对应的表格实例信息\r\n var tableIns = table.render($.extend({}, options, {\r\n data: [],\r\n url: '',\r\n done: null\r\n }))\r\n var id = tableIns.config.id;\r\n thisTreeTable.that[id] = that; // 记录当前实例对象\r\n that.tableIns = tableIns;\r\n\r\n updateOptions(id, options);\r\n }\r\n\r\n // 初始默认配置\r\n Class.prototype.config = {\r\n tree: {\r\n customName: {\r\n children: \"children\", // 节点数据中保存子节点数据的属性名称\r\n isParent: \"isParent\", // 节点数据保存节点是否为父节点的属性名称\r\n name: \"name\", // 节点数据保存节点名称的属性名称\r\n id: \"id\", // 唯一标识的属性名称\r\n pid: \"parentId\", // 父节点唯一标识的属性名称\r\n icon: \"icon\" // 图标的属性名称\r\n },\r\n view: {\r\n indent: 14, // 层级缩进量\r\n flexIconClose: '', // 关闭时候的折叠图标\r\n flexIconOpen: '', // 打开时候的折叠图标\r\n showIcon: true, // 是否显示图标(节点类型图标)\r\n icon: '', // 节点图标,如果设置了这个属性或者数据中有这个字段信息,不管打开还是关闭都以这个图标的值为准\r\n iconClose: '', // 关闭时候的图标\r\n iconOpen: '', // 打开时候的图标\r\n iconLeaf: '', // 叶子节点的图标\r\n showFlexIconIfNotParent: false, // 当节点不是父节点的时候是否显示折叠图标\r\n dblClickExpand: true, // 双击节点时,是否自动展开父节点的标识\r\n expandAllDefault: false // 默认展开所有节点\r\n },\r\n data: {\r\n isSimpleData: false, // 是否简单数据模式\r\n rootPid: null, // 根节点的父 ID 值\r\n cascade: 'all' // 级联方式 默认全部级联:all 可选 级联父 parent 级联子 children\r\n },\r\n async: {\r\n enable: false, // 是否开启异步加载模式,只有开启的时候其他参数才起作用\r\n url: '', // 异步加载的接口,可以根据需要设置与顶层接口不同的接口,如果相同可以不设置该参数\r\n type: null, // 请求的接口类型,设置可缺省同上\r\n contentType: null, // 提交参数的数据类型,设置可缺省同上\r\n headers: null, // 设置可缺省同上\r\n where: null, // 设置可缺省同上\r\n autoParam: [] // 自动参数\r\n },\r\n callback: {\r\n beforeExpand: null, // 展开前的回调 return false 可以阻止展开的动作\r\n onExpand: null // 展开之后的回调\r\n }\r\n },\r\n };\r\n\r\n Class.prototype.getOptions = function () {\r\n var that = this;\r\n if (that.tableIns) {\r\n return table.getOptions(that.tableIns.config.id); // 获取表格的实时配置信息\r\n } else {\r\n return that.config;\r\n }\r\n };\r\n\r\n function flatToTree(flatArr, idKey, pIdKey, childrenKey, rootPid) {\r\n idKey = idKey || 'id';\r\n pIdKey = pIdKey || 'parentId';\r\n childrenKey = childrenKey || 'children';\r\n // 创建一个空的 nodes 对象,用于保存所有的节点\r\n var nodes = {};\r\n // 遍历所有节点,将其加入 nodes 对象中\r\n var idTemp = '';\r\n layui.each(flatArr, function (index, item) {\r\n idTemp = idKey + item[idKey];\r\n nodes[idTemp] = $.extend({}, item);\r\n nodes[idTemp][childrenKey] = [];\r\n })\r\n // 遍历所有节点,将其父子关系加入 nodes 对象\r\n var pidTemp = '';\r\n layui.each(nodes, function (index, item) {\r\n pidTemp = idKey + item[pIdKey];\r\n if (pidTemp && nodes[pidTemp]) {\r\n nodes[pidTemp][childrenKey].push(item);\r\n }\r\n })\r\n // 返回顶层节点\r\n return Object.keys(nodes)\r\n .map(function(k) {\r\n return nodes[k];\r\n })\r\n .filter(function (item) {\r\n return rootPid ? item[pIdKey] === rootPid : !item[pIdKey];\r\n })\r\n }\r\n\r\n Class.prototype.flatToTree = function (tableData) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var tableId = options.id;\r\n\r\n tableData = tableData || table.cache[tableId];\r\n\r\n return flatToTree(tableData, customName.id, customName.pid, customName.children, treeOptions.data.rootPid)\r\n }\r\n\r\n Class.prototype.treeToFlat = function (tableData, parentId, parentIndex) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var childrenKey = customName.children;\r\n var pIdKey = customName.pid;\r\n\r\n var flat = [];\r\n layui.each(tableData, function (i1, item1) {\r\n var dataIndex = (parentIndex ? parentIndex + '-' : '') + i1;\r\n var dataNew = $.extend({}, item1);\r\n dataNew[pIdKey] = item1[pIdKey] || parentId;\r\n flat.push(dataNew);\r\n flat = flat.concat(that.treeToFlat(item1[childrenKey], item1[customName.id], dataIndex));\r\n });\r\n\r\n return flat;\r\n }\r\n\r\n // 通过当前行数据返回 treeNode 信息\r\n Class.prototype.getTreeNode = function (data) {\r\n var that = this;\r\n if (!data) {\r\n return hint.error('找不到节点数据');\r\n }\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var customName = treeOptions.customName;\r\n\r\n // 带上一些常用的方法\r\n return {\r\n data: data,\r\n dataIndex: data[LAY_DATA_INDEX],\r\n getParentNode: function () {\r\n return that.getNodeByIndex(data[LAY_PARENT_INDEX])\r\n },\r\n };\r\n }\r\n\r\n // 通过 index 返回节点信息\r\n Class.prototype.getNodeByIndex = function (index) {\r\n var that = this;\r\n var treeNodeData = that.getNodeDataByIndex(index);\r\n if (!treeNodeData) {\r\n return hint.error('找不到节点数据');\r\n }\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var parentKey = customName.parent;\r\n var tableId = options.id;\r\n\r\n var treeNode = {\r\n data: treeNodeData,\r\n dataIndex: treeNodeData[LAY_DATA_INDEX],\r\n getParentNode: function () {\r\n return that.getNodeByIndex(treeNodeData[LAY_PARENT_INDEX])\r\n },\r\n update: function (data) {\r\n return treeTable.updateNode(tableId, index, data)\r\n },\r\n remove: function () {\r\n return treeTable.removeNode(tableId, index)\r\n },\r\n expand: function (opts) {\r\n return treeTable.expandNode(tableId, $.extend({}, opts, {\r\n index: index\r\n }))\r\n },\r\n setChecked: function (opts) {\r\n return treeTable.setRowChecked(tableId, $.extend({}, opts, {\r\n index: index\r\n }))\r\n }\r\n };\r\n\r\n treeNode.dataIndex = index;\r\n return treeNode;\r\n }\r\n\r\n // 通过 id 获取节点信息\r\n Class.prototype.getNodeById = function (id) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var idKey = customName.id;\r\n\r\n // 通过 id 拿到数据的 dataIndex\r\n var dataIndex = '';\r\n var tableDataFlat = treeTable.getData(options.id, true);\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[idKey] === id) {\r\n dataIndex = item1[LAY_DATA_INDEX];\r\n return true;\r\n }\r\n })\r\n if (!dataIndex) {\r\n return;\r\n }\r\n\r\n // 用 index\r\n return that.getNodeByIndex(dataIndex);\r\n }\r\n\r\n // 通过 index 获取节点数据\r\n Class.prototype.getNodeDataByIndex = function (index, clone, newValue) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableCache = table.cache[tableId];\r\n\r\n // 获取当前行中的数据\r\n var dataCache = tableCache[index];\r\n\r\n // 若非删除操作,则返回合并后的数据\r\n if (newValue !== 'delete' && dataCache) {\r\n $.extend(dataCache, newValue);\r\n return clone ? $.extend({}, dataCache) : dataCache;\r\n }\r\n\r\n // 删除操作\r\n var dataRet = tableCache;\r\n var indexArr = String(index).split('-');\r\n\r\n // if (options.url || indexArr.length > 1) tableCache = null // 只有在删除根节点的时候才需要处理\r\n\r\n // 根据 index 进行数据处理\r\n for (var i = 0, childrenKey = treeOptions.customName.children; i < indexArr.length; i++) {\r\n if (newValue && i === indexArr.length - 1) {\r\n if (newValue === 'delete') { // 删除并返回当前数据\r\n // 同步 cache --- 此段代码注释缘由:data 属性模式造成数据重复执行 splice (@Gitee: #I7Z0A/I82E2S)\r\n /*if (tableCache) {\r\n layui.each(tableCache, function (i1, item1) {\r\n if (item1[LAY_DATA_INDEX] === index) {\r\n tableCache.splice(i1, 1);\r\n return true;\r\n }\r\n })\r\n }*/\r\n return (i ? dataRet[childrenKey] : dataRet).splice(indexArr[i], 1)[0];\r\n } else { // 更新值\r\n $.extend((i ? dataRet[childrenKey] : dataRet)[indexArr[i]], newValue);\r\n }\r\n }\r\n dataRet = i ? dataRet[childrenKey][indexArr[i]] : dataRet[indexArr[i]];\r\n }\r\n return clone ? $.extend({}, dataRet) : dataRet;\r\n }\r\n\r\n treeTable.getNodeDataByIndex = function (id, index) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n return that.getNodeDataByIndex(index, true);\r\n }\r\n\r\n // 判断是否是父节点\r\n var checkIsParent = function (data, isParentKey, childrenKey) {\r\n isParentKey = isParentKey || 'isParent';\r\n childrenKey = childrenKey || 'children';\r\n layui.each(data, function (i1, item1) {\r\n if (!(isParentKey in item1)) {\r\n item1[isParentKey] = !!(item1[childrenKey] && item1[childrenKey].length);\r\n checkIsParent(item1[childrenKey]);\r\n }\r\n })\r\n }\r\n\r\n Class.prototype.initData = function (data, parentIndex) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n\r\n data = data || that.getTableData();\r\n\r\n var customName = treeOptions.customName;\r\n var isParentKey = customName.isParent;\r\n var childrenKey = customName.children;\r\n\r\n layui.each(data, function (i1, item1) {\r\n if (!(isParentKey in item1)) {\r\n item1[isParentKey] = !!(item1[childrenKey] && item1[childrenKey].length);\r\n }\r\n item1[LAY_DATA_INDEX_HISTORY] = item1[LAY_DATA_INDEX];\r\n item1[LAY_PARENT_INDEX] = parentIndex = parentIndex || '';\r\n var dataIndex = item1[LAY_DATA_INDEX] = (parentIndex ? parentIndex + '-' : '') + i1;\r\n that.initData(item1[childrenKey] || [], dataIndex);\r\n });\r\n\r\n updateCache(tableId, childrenKey, data);\r\n\r\n return data;\r\n }\r\n\r\n // 与 tableId 有关带防抖的方法\r\n var debounceFn = (function () {\r\n var fn = {};\r\n return function (tableId, func, wait) {\r\n if (!fn[tableId]) {\r\n fn[tableId] = layui.debounce(func, wait);\r\n }\r\n return fn[tableId];\r\n }\r\n })()\r\n\r\n // 优化参数,添加一个 getNodeByIndex 方法 只传 表格id 和行 dataIndex 分几步优化 todo\r\n var expandNode = function (treeNode, expandFlag, sonSign, focus, callbackFlag) {\r\n // treeNode // 需要展开的节点\r\n var trElem = treeNode.trElem;\r\n var tableViewElem = treeNode.tableViewElem || trElem.closest(ELEM_VIEW);\r\n var tableId = treeNode.tableId || tableViewElem.attr('lay-id');\r\n var options = treeNode.options || table.getOptions(tableId);\r\n var dataIndex = treeNode.dataIndex || trElem.attr('lay-data-index'); // 可能出现多层\r\n var treeTableThat = getThisTable(tableId);\r\n\r\n var treeOptions = options.tree || {};\r\n var customName = treeOptions.customName || {};\r\n var isParentKey = customName.isParent;\r\n\r\n var trData = treeTableThat.getNodeDataByIndex(dataIndex);\r\n\r\n // 后续调优:对已经展开的节点进行展开和已经关闭的节点进行关闭应该做优化减少不必要的代码执行 todo\r\n var isToggle = layui.type(expandFlag) !== 'boolean';\r\n var trExpand = isToggle ? !trData[LAY_EXPAND] : expandFlag;\r\n var retValue = trData[isParentKey] ? trExpand : null;\r\n\r\n if (callbackFlag && trExpand != trData[LAY_EXPAND] && (!trData[LAY_ASYNC_STATUS] || trData[LAY_ASYNC_STATUS] === 'local')) {\r\n var beforeExpand = treeOptions.callback.beforeExpand;\r\n if (layui.type(beforeExpand) === 'function') {\r\n if (beforeExpand(tableId, trData, expandFlag) === false) {\r\n return retValue;\r\n }\r\n }\r\n }\r\n\r\n var trExpanded = trData[LAY_HAS_EXPANDED]; // 展开过,包括异步加载\r\n\r\n // 找到表格中的同类节点(需要找到lay-data-index一致的所有行)\r\n var trsElem = tableViewElem.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n // 处理折叠按钮图标\r\n var flexIconElem = trsElem.find('.layui-table-tree-flexIcon');\r\n flexIconElem.html(trExpand ? treeOptions.view.flexIconOpen : treeOptions.view.flexIconClose)\r\n trData[isParentKey] && flexIconElem.css('visibility', 'visible');\r\n // 处理节点图标\r\n treeOptions.view.showIcon && trsElem\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(trExpand ? treeOptions.view.iconOpen : treeOptions.view.iconClose);\r\n trData[LAY_EXPAND] = trExpand;\r\n var trDataId = trData[customName.id];\r\n trDataId !== undefined && (treeTableThat.status.expand[trDataId] = trExpand);\r\n if (retValue === null) {\r\n return retValue;\r\n }\r\n\r\n var childNodes = trData[customName.children] || [];\r\n // 处理子节点展示与否\r\n if (trExpand) {\r\n // 展开\r\n if (trExpanded) { // 已经展开过\r\n if (!childNodes.length) return ;//异步如果子节点没有数据情况下双点行展开所有已展开的节点问题解决\r\n trsElem.nextAll(childNodes.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).removeClass(HIDE);\r\n layui.each(childNodes, function (i1, item1) {\r\n if (!item1[isParentKey]) {\r\n return;\r\n }\r\n\r\n if (sonSign && !isToggle && !item1[LAY_EXPAND]) { // 非状态切换的情况下\r\n // 级联展开子节点\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n } else if (item1[LAY_EXPAND]) { // 初始化级联展开\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, true);\r\n }\r\n });\r\n } else {\r\n var asyncSetting = treeOptions.async || {};\r\n var asyncUrl = asyncSetting.url || options.url;\r\n if (asyncSetting.enable && trData[isParentKey] && !trData[LAY_ASYNC_STATUS]) {\r\n trData[LAY_ASYNC_STATUS] = 'loading';\r\n flexIconElem.html('');\r\n\r\n // 异步获取子节点数据成功之后处理方法\r\n var asyncSuccessFn = function (data) {\r\n trData[LAY_ASYNC_STATUS] = 'success';\r\n trData[customName.children] = data;\r\n treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX])\r\n expandNode(treeNode, true, isToggle ? false : sonSign, focus, callbackFlag);\r\n }\r\n\r\n var format = asyncSetting.format; // 自定义数据返回方法\r\n if (layui.type(format) === 'function') {\r\n format(trData, options, asyncSuccessFn);\r\n return retValue;\r\n }\r\n\r\n var params = {};\r\n // 参数\r\n var data = $.extend(params, asyncSetting.where || options.where);\r\n var asyncAutoParam = asyncSetting.autoParam;\r\n layui.each(asyncAutoParam, function (index, item) {\r\n var itemStr = item;\r\n var itemArr = item.split('=');\r\n data[itemArr[0].trim()] = trData[(itemArr[1] || itemArr[0]).trim()]\r\n })\r\n\r\n var asyncContentType = asyncSetting.contentType || options.contentType;\r\n if (asyncContentType && asyncContentType.indexOf(\"application/json\") == 0) { // 提交 json 格式\r\n data = JSON.stringify(data);\r\n }\r\n var asyncType = asyncSetting.method || options.method;\r\n var asyncDataType = asyncSetting.dataType || options.dataType;\r\n var asyncJsonpCallback = asyncSetting.jsonpCallback || options.jsonpCallback;\r\n var asyncHeaders = asyncSetting.headers || options.headers;\r\n var asyncParseData = asyncSetting.parseData || options.parseData;\r\n var asyncResponse = asyncSetting.response || options.response;\r\n\r\n $.ajax({\r\n type: asyncType || 'get',\r\n url: asyncUrl,\r\n contentType: asyncContentType,\r\n data: data,\r\n dataType: asyncDataType || 'json',\r\n jsonpCallback: asyncJsonpCallback,\r\n headers: asyncHeaders || {},\r\n success: function (res) {\r\n // 若有数据解析的回调,则获得其返回的数据\r\n if (typeof asyncParseData === 'function') {\r\n res = asyncParseData.call(options, res) || res;\r\n }\r\n // 检查数据格式是否符合规范\r\n if (res[asyncResponse.statusName] != asyncResponse.statusCode) {\r\n trData[LAY_ASYNC_STATUS] = 'error';\r\n // 异常处理 todo\r\n flexIconElem.html('');\r\n // 事件\r\n } else {\r\n // 正常返回\r\n asyncSuccessFn(res[asyncResponse.dataName]);\r\n }\r\n },\r\n error: function (e, msg) {\r\n trData[LAY_ASYNC_STATUS] = 'error';\r\n // 异常处理 todo\r\n typeof options.error === 'function' && options.error(e, msg);\r\n }\r\n });\r\n return retValue;\r\n }\r\n trExpanded = trData[LAY_HAS_EXPANDED] = true;\r\n if (childNodes.length) {\r\n // 判断是否需要排序\r\n if (options.initSort && (!options.url || options.autoSort)) {\r\n var initSort = options.initSort;\r\n if (initSort.type) {\r\n layui.sort(childNodes, initSort.field, initSort.type === 'desc', true);\r\n } else {\r\n // 恢复默认\r\n layui.sort(childNodes, table.config.indexName, null, true);\r\n }\r\n }\r\n treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX]);\r\n // 将数据通过模板得出节点的html代码\r\n var str2 = table.getTrHtml(tableId, childNodes, null, null, dataIndex);\r\n\r\n var str2Obj = {\r\n trs: $(str2.trs.join('')),\r\n trs_fixed: $(str2.trs_fixed.join('')),\r\n trs_fixed_r: $(str2.trs_fixed_r.join(''))\r\n }\r\n var dataLevel = dataIndex.split('-').length - 1;\r\n var dataLevelNew = (dataLevel || 0) + 1;\r\n layui.each(childNodes, function (childIndex, childItem) {\r\n str2Obj.trs.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n })\r\n str2Obj.trs_fixed.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n })\r\n str2Obj.trs_fixed_r.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n })\r\n })\r\n\r\n tableViewElem.find(ELEM_MAIN).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs);\r\n tableViewElem.find(ELEM_FIXL).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs_fixed);\r\n tableViewElem.find(ELEM_FIXR).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs_fixed_r);\r\n\r\n // 初始化新增的节点中的内容\r\n treeTableThat.renderTreeTable(str2Obj.trs, dataLevelNew);\r\n\r\n if (sonSign && !isToggle) { // 非状态切换的情况下\r\n // 级联展开/关闭子节点\r\n layui.each(childNodes, function (i1, item1) {\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n })\r\n }\r\n }\r\n }\r\n } else {\r\n treeTableThat.isExpandAll = false;\r\n // 关闭\r\n if (sonSign && !isToggle) { // 非状态切换的情况下\r\n layui.each(childNodes, function (i1, item1) {\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n });\r\n tableViewElem.find(childNodes.map(function (value, index, array) { // 只隐藏直接子节点,其他由递归的处理\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).addClass(HIDE);\r\n } else {\r\n var childNodesFlat = treeTableThat.treeToFlat(childNodes, trData[customName.id], dataIndex);\r\n tableViewElem.find(childNodesFlat.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).addClass(HIDE);\r\n }\r\n }\r\n\r\n\r\n debounceFn('resize-' + tableId, function () {\r\n treeTable.resize(tableId);\r\n }, 0)();\r\n\r\n if (callbackFlag && trData[LAY_ASYNC_STATUS] !== 'loading') {\r\n var onExpand = treeOptions.callback.onExpand;\r\n layui.type(onExpand) === 'function' && onExpand(tableId, trData, trExpand);\r\n }\r\n\r\n return retValue;\r\n }\r\n\r\n /**\r\n * 展开或关闭一个节点\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {Number|String} opts.index 展开行的数据下标\r\n * @param {Boolean} [opts.expandFlag] 展开、关闭、切换\r\n * @param {Boolean} [opts.inherit] 是否级联子节点\r\n * @param {Boolean} [opts.callbackFlag] 是否触发事件\r\n * @return [{Boolean}] 状态结果\r\n * */\r\n treeTable.expandNode = function (id, opts) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n opts = opts || {};\r\n\r\n var index = opts.index;\r\n var expandFlag = opts.expandFlag;\r\n var sonSign = opts.inherit;\r\n var callbackFlag = opts.callbackFlag;\r\n\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n return expandNode({\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + index + '\"]').first()\r\n }, expandFlag, sonSign, null, callbackFlag)\r\n };\r\n\r\n /**\r\n * 展开或关闭全部节点\r\n * @param {String} id 树表id\r\n * @param {Boolean} expandFlag 展开或关闭\r\n * */\r\n treeTable.expandAll = function (id, expandFlag) {\r\n if (layui.type(expandFlag) !== 'boolean') {\r\n return hint.error('expandAll 的展开状态参数只接收true/false')\r\n }\r\n\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n that.isExpandAll = expandFlag;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var isParentKey = treeOptions.customName.isParent;\r\n var idKey = treeOptions.customName.id;\r\n var showFlexIconIfNotParent = treeOptions.view.showFlexIconIfNotParent;\r\n\r\n if (!expandFlag) {\r\n // 关闭所有\r\n // 将所有已经打开的节点的状态设置为关闭,\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = false;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = false);\r\n }\r\n }) // 只处理当前页,如果需要处理全部表格,需要用treeTable.updateStatus\r\n // 隐藏所有非顶层的节点\r\n tableView.find('.layui-table-box tbody tr[data-level!=\"0\"]').addClass(HIDE);\r\n\r\n tableView.find('.layui-table-tree-flexIcon').html(treeOptions.view.flexIconClose);\r\n treeOptions.view.showIcon && tableView\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(treeOptions.view.iconClose);\r\n } else {\r\n var tableDataFlat = treeTable.getData(id, true);\r\n // 展开所有\r\n // 存在异步加载\r\n if (treeOptions.async.enable) {\r\n // 判断是否有未加载过的节点\r\n var isAllAsyncDone = true;\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[isParentKey] && !item1[LAY_ASYNC_STATUS]) {\r\n isAllAsyncDone = false;\r\n return true;\r\n }\r\n })\r\n // 有未加载过的节点\r\n if (!isAllAsyncDone) {\r\n // 逐个展开\r\n layui.each(treeTable.getData(id), function (i1, item1) {\r\n treeTable.expandNode(id, {\r\n index: item1[LAY_DATA_INDEX],\r\n expandFlag: true,\r\n inherit: true\r\n })\r\n })\r\n return;\r\n }\r\n }\r\n\r\n // 先判断是否全部打开过了\r\n var isAllExpanded = true;\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[isParentKey] && !item1[LAY_HAS_EXPANDED]) {\r\n isAllExpanded = false;\r\n return true;\r\n }\r\n })\r\n // 如果全部节点已经都打开过,就可以简单处理跟隐藏所有节点反操作\r\n if (isAllExpanded) {\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = true;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = true);\r\n }\r\n });\r\n // 显示所有子节点\r\n tableView.find('tbody tr[data-level!=\"0\"]').removeClass(HIDE);\r\n // 处理节点的图标\r\n tableView.find('.layui-table-tree-flexIcon').html(treeOptions.view.flexIconOpen);\r\n treeOptions.view.showIcon && tableView\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(treeOptions.view.iconOpen);\r\n } else {\r\n // 如果有未打开过的父节点,将 tr 内容全部重新生成\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = true;\r\n d[LAY_HAS_EXPANDED] = true;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = true);\r\n }\r\n });\r\n if (options.initSort && options.initSort.type && options.autoSort) {\r\n return treeTable.sort(id);\r\n }\r\n var trAll = table.getTrHtml(id, tableDataFlat);\r\n\r\n var trAllObj = {\r\n trs: $(trAll.trs.join('')),\r\n trs_fixed: $(trAll.trs_fixed.join('')),\r\n trs_fixed_r: $(trAll.trs_fixed_r.join(''))\r\n }\r\n var props;\r\n layui.each(tableDataFlat, function (dataIndex, dataItem) {\r\n var dataLevel = dataItem[LAY_DATA_INDEX].split('-').length - 1;\r\n props = {\r\n 'data-index': dataItem[LAY_DATA_INDEX],\r\n 'lay-data-index': dataItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevel\r\n };\r\n trAllObj.trs.eq(dataIndex).attr(props)\r\n trAllObj.trs_fixed.eq(dataIndex).attr(props)\r\n trAllObj.trs_fixed_r.eq(dataIndex).attr(props)\r\n })\r\n layui.each(['main', 'fixed-l', 'fixed-r'], function (i, item) {\r\n tableView.find('.layui-table-' + item + ' tbody').html(trAllObj[['trs', 'trs_fixed', 'trs_fixed_r'][i]]);\r\n });\r\n that.renderTreeTable(tableView, 0, false);\r\n }\r\n }\r\n treeTable.resize(id);\r\n }\r\n\r\n Class.prototype.renderTreeTable = function (tableView, level, sonSign) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n !tableViewElem.hasClass(TABLE_TREE) && tableViewElem.addClass(TABLE_TREE);\r\n var tableId = options.id;\r\n var treeOptions = options.tree || {};\r\n var treeOptionsData = treeOptions.data || {};\r\n var treeOptionsView = treeOptions.view || {};\r\n var customName = treeOptions.customName || {};\r\n var isParentKey = customName.isParent;\r\n var tableFilterId = tableViewElem.attr('lay-filter');\r\n var treeTableThat = that;\r\n // var tableData = treeTableThat.getTableData();\r\n\r\n level = level || 0;\r\n\r\n if (!level) {\r\n // 初始化的表格里面没有level信息,可以作为顶层节点的判断\r\n tableViewElem.find('.layui-table-body tr:not([data-level])').attr('data-level', level);\r\n layui.each(table.cache[tableId], function (dataIndex, dataItem) {\r\n tableViewElem.find('.layui-table-main tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n tableViewElem.find('.layui-table-fixed-l tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n tableViewElem.find('.layui-table-fixed-r tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n })\r\n }\r\n\r\n var dataExpand = null; // 记录需要展开的数据\r\n var nameKey = customName.name;\r\n var indent = treeOptionsView.indent || 14;\r\n layui.each(tableView.find('td[data-field=\"' + nameKey + '\"]'), function (index, item) {\r\n item = $(item);\r\n var trElem = item.closest('tr');\r\n var itemCell = item.children('.layui-table-cell');\r\n if (itemCell.hasClass('layui-table-tree-item')) {\r\n return;\r\n }\r\n var trIndex = trElem.attr('lay-data-index');\r\n if (!trIndex) { // 排除在统计行中的节点\r\n return;\r\n }\r\n trElem = tableViewElem.find('tr[lay-data-index=\"' + trIndex + '\"]');\r\n var trData = treeTableThat.getNodeDataByIndex(trIndex);\r\n\r\n if (trData[LAY_EXPAND] && trData[isParentKey]) {\r\n // 需要展开\r\n dataExpand = dataExpand || {};\r\n dataExpand[trIndex] = true;\r\n }\r\n if (trData[LAY_CHECKBOX_HALF]) {\r\n trElem.find('input[type=\"checkbox\"][name=\"layTableCheckbox\"]').prop('indeterminate', true);\r\n }\r\n\r\n var htmlTemp = itemCell.html();\r\n itemCell = trElem.find('td[data-field=\"' + nameKey + '\"]>div.layui-table-cell');\r\n itemCell.addClass('layui-table-tree-item');\r\n var flexIconElem = itemCell\r\n .html(['
                  ',\r\n trData[LAY_EXPAND] ? treeOptionsView.flexIconOpen : treeOptionsView.flexIconClose, // 折叠图标\r\n '
                  ',\r\n treeOptionsView.showIcon ? '
                  ' +\r\n (trData[customName.icon] || treeOptionsView.icon ||\r\n (trData[isParentKey] ?\r\n (trData[LAY_EXPAND] ? treeOptionsView.iconOpen : treeOptionsView.iconClose) :\r\n treeOptionsView.iconLeaf) ||\r\n '') + '
                  ' : '', // 区分父子节点\r\n htmlTemp].join('')) // 图标要可定制\r\n .find('.layui-table-tree-flexIcon');\r\n\r\n // 添加展开按钮的事件\r\n flexIconElem.on('click', function (event) {\r\n layui.stope(event);\r\n // 处理数据\r\n // var trElem = item.closest('tr');\r\n expandNode({trElem: trElem}, null, null, null, true);\r\n });\r\n });\r\n\r\n if (!level && treeOptions.view.expandAllDefault && that.isExpandAll === undefined) {\r\n return treeTable.expandAll(tableId, true); // 默认展开全部\r\n }\r\n\r\n // 当前层的数据看看是否需要展开\r\n if (sonSign !== false && dataExpand) {\r\n layui.each(dataExpand, function (index, item) {\r\n var trDefaultExpand = tableViewElem.find('tr[lay-data-index=\"' + index + '\"]');\r\n trDefaultExpand.find('.layui-table-tree-flexIcon').html(treeOptionsView.flexIconOpen);\r\n expandNode({trElem: trDefaultExpand.first()}, true);\r\n });\r\n } else {\r\n debounceFn('renderTreeTable-' + tableId, function () {\r\n options.hasNumberCol && formatNumber(that);\r\n form.render($('.layui-table-tree[lay-id=\"' + tableId + '\"]'));\r\n }, 0)();\r\n }\r\n }\r\n\r\n var formatNumber = function (that) {\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n\r\n var num = 0;\r\n var trMain = tableViewElem.find('.layui-table-main tbody tr');\r\n var trFixedL = tableViewElem.find('.layui-table-fixed-l tbody tr');\r\n var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr');\r\n layui.each(that.treeToFlat(table.cache[options.id]), function (i1, item1) {\r\n if (item1['LAY_HIDE']) return;\r\n var itemData = that.getNodeDataByIndex(item1[LAY_DATA_INDEX]);\r\n itemData['LAY_NUM'] = ++num;\r\n trMain.eq(i1).find('.laytable-cell-numbers').html(num);\r\n trFixedL.eq(i1).find('.laytable-cell-numbers').html(num);\r\n trFixedR.eq(i1).find('.laytable-cell-numbers').html(num);\r\n })\r\n }\r\n\r\n // 树表渲染\r\n Class.prototype.render = function (type) {\r\n var that = this;\r\n that.tableIns = table[type === 'reloadData' ? 'reloadData' : 'reload'](that.tableIns.config.id, $.extend(true, {}, that.config));\r\n that.config = that.tableIns.config;\r\n };\r\n\r\n // 表格重载\r\n Class.prototype.reload = function (options, deep, type) {\r\n var that = this;\r\n\r\n options = options || {};\r\n delete that.haveInit;\r\n\r\n // 防止数组深度合并\r\n layui.each(options, function (key, item) {\r\n if (layui.type(item) === 'array') delete that.config[key];\r\n });\r\n\r\n // 根据需要处理options中的一些参数\r\n updateOptions(that.getOptions().id, options, type || true);\r\n\r\n // 对参数进行深度或浅扩展\r\n that.config = $.extend(deep, {}, that.config, options);\r\n\r\n // 执行渲染\r\n that.render(type);\r\n };\r\n\r\n // 仅重载数据\r\n treeTable.reloadData = function () {\r\n var args = $.extend(true, [], arguments);\r\n args[3] = 'reloadData';\r\n\r\n return treeTable.reload.apply(null, args);\r\n };\r\n\r\n var updateStatus = function (data, statusObj, childrenKey, notCascade) {\r\n var dataUpdated = [];\r\n layui.each(data, function (i1, item1) {\r\n if (layui.type(statusObj) === 'function') {\r\n statusObj(item1);\r\n } else {\r\n $.extend(item1, statusObj);\r\n }\r\n dataUpdated.push($.extend({}, item1));\r\n notCascade || (dataUpdated = dataUpdated.concat(updateStatus(item1[childrenKey], statusObj, childrenKey, notCascade)));\r\n });\r\n return dataUpdated;\r\n }\r\n\r\n Class.prototype.updateStatus = function (data, statusObj, notCascade) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n data = data || table.cache[options.id];\r\n\r\n return updateStatus(data, statusObj, treeOptions.customName.children, notCascade);\r\n }\r\n\r\n Class.prototype.getTableData = function () {\r\n var that = this;\r\n var options = that.getOptions();\r\n // return options.url ? table.cache[options.id] : options.data;\r\n return table.cache[options.id];\r\n }\r\n\r\n treeTable.updateStatus = function (id, statusObj, data) {\r\n var that = getThisTable(id);\r\n var options = that.getOptions();\r\n if (!data) {\r\n if (options.url) {\r\n data = table.cache[options.id];\r\n } else {\r\n data = options.data;\r\n }\r\n }\r\n return that.updateStatus(data, statusObj);\r\n }\r\n\r\n treeTable.sort = function (id) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n if (options.autoSort) {\r\n that.initData();\r\n treeTable.renderData(id);\r\n }\r\n }\r\n\r\n // 处理事件\r\n var updateObjParams = function (obj) {\r\n var tableId = obj.config.id;\r\n var tableThat = getThisTable(tableId);\r\n var trData = obj.data = treeTable.getNodeDataByIndex(tableId, obj.index); // 克隆的\r\n var trIndex = trData[LAY_DATA_INDEX];\r\n obj.dataIndex = trIndex;\r\n\r\n // 处理update方法\r\n var updateFn = obj.update;\r\n obj.update = function () {\r\n var updateThat = this;\r\n var args = arguments;\r\n $.extend(tableThat.getNodeDataByIndex(trIndex), args[0]);\r\n var ret = updateFn.apply(updateThat, args); // 主要负责更新节点内容\r\n var nameKey = obj.config.tree.customName.name;\r\n nameKey in args[0] && obj.tr.find('td[data-field=\"' + nameKey + '\"]').children('div.layui-table-cell').removeClass('layui-table-tree-item');\r\n tableThat.renderTreeTable(obj.tr, obj.tr.attr('data-level'), false);\r\n return ret;\r\n }\r\n\r\n // 处理del方法\r\n obj.del = function () {\r\n treeTable.removeNode(tableId, trData);\r\n }\r\n\r\n // 处理setRowChecked\r\n obj.setRowChecked = function (checked) {\r\n treeTable.setRowChecked(tableId, {\r\n index: trData,\r\n checked: checked\r\n });\r\n }\r\n }\r\n\r\n // 更新数据\r\n treeTable.updateNode = function (id, index, newNode) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var trElem = tableView.find('tr[lay-data-index=\"' + index + '\"]');\r\n var trIndex = trElem.attr('data-index');\r\n var trLevel = trElem.attr('data-level')\r\n\r\n if (!newNode) {\r\n return;\r\n }\r\n // 更新值\r\n var newNodeTemp = that.getNodeDataByIndex(index, false, newNode);\r\n // 获取新的tr替换\r\n var trNew = table.getTrHtml(id, [newNodeTemp]);\r\n // 重新渲染tr\r\n layui.each(['main', 'fixed-l', 'fixed-r'], function (i, item) {\r\n tableView.find('.layui-table-' + item + ' tbody tr[lay-data-index=\"' + index + '\"]').replaceWith($(trNew[['trs', 'trs_fixed', 'trs_fixed_r'][i]].join('')).attr({\r\n 'data-index': trIndex,\r\n 'lay-data-index': index,\r\n 'data-level': trLevel\r\n }));\r\n });\r\n that.renderTreeTable(tableView.find('tr[lay-data-index=\"' + index + '\"]'), trLevel);\r\n }\r\n\r\n // 删除数据\r\n treeTable.removeNode = function (id, node) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var delNode;\r\n var indexArr = [];\r\n delNode = that.getNodeDataByIndex(layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX], false, 'delete');\r\n var nodeP = that.getNodeDataByIndex(delNode[LAY_PARENT_INDEX]);\r\n that.updateCheckStatus(nodeP);\r\n var delNodesFlat = that.treeToFlat([delNode], delNode[treeOptions.customName.pid], delNode[LAY_PARENT_INDEX]);\r\n layui.each(delNodesFlat, function (i2, item2) {\r\n indexArr.push('tr[lay-data-index=\"' + item2[LAY_DATA_INDEX] + '\"]');\r\n })\r\n\r\n tableView.find(indexArr.join(',')).remove(); // 删除行\r\n // 重新整理数据\r\n var tableData = that.initData();\r\n // index发生变化需要更新页面tr中对应的lay-data-index 新增和删除都要注意数据结构变动之后的index问题\r\n layui.each(that.treeToFlat(tableData), function (i3, item3) {\r\n if (item3[LAY_DATA_INDEX_HISTORY] && item3[LAY_DATA_INDEX_HISTORY] !== item3[LAY_DATA_INDEX]) {\r\n tableView.find('tr[lay-data-index=\"' + item3[LAY_DATA_INDEX_HISTORY] + '\"]').attr({\r\n 'data-index': item3[LAY_DATA_INDEX],\r\n 'lay-data-index': item3[LAY_DATA_INDEX],\r\n });\r\n // item3[LAY_DATA_INDEX_HISTORY] = item3[LAY_DATA_INDEX]\r\n }\r\n });\r\n // 重新更新顶层节点的data-index;\r\n layui.each(table.cache[id], function (i4, item4) {\r\n tableView.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]').attr('data-index', i4);\r\n })\r\n options.hasNumberCol && formatNumber(that);\r\n\r\n // 重新适配尺寸\r\n treeTable.resize(id);\r\n }\r\n\r\n /**\r\n * 新增数据节点\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {String|Number} opts.parentIndex 指定的父节点,如果增加根节点,请设置 parentIndex 为 null 即可\r\n * @param {Number} opts.index 新节点插入的位置(从 0 开始)index = -1(默认) 时,插入到最后\r\n * @param {Object|Array} opts.data 新增的节点,单个或者多个\r\n * @param {Boolean} opts.focus 新增的节点,单个或者多个\r\n * @return {Array} 新增的节点\r\n * */\r\n treeTable.addNodes = function (id, opts) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableViewElem = options.elem.next();\r\n var checkName = table.config.checkName;\r\n\r\n opts = opts || {};\r\n\r\n var parentIndex = opts.parentIndex;\r\n var index = opts.index;\r\n var newNodes = opts.data;\r\n var focus = opts.focus;\r\n\r\n parentIndex = layui.type(parentIndex) === 'number' ? parentIndex.toString() : parentIndex;\r\n var parentNode = parentIndex ? that.getNodeDataByIndex(parentIndex) : null;\r\n index = layui.type(index) === 'number' ? index : -1;\r\n\r\n // 添加数据\r\n newNodes = $.extend(true, [], (layui.isArray(newNodes) ? newNodes : [newNodes]));\r\n\r\n // 若未传入 LAY_CHECKED 属性,则继承父节点的 checked 状态\r\n layui.each(newNodes, function(i, item){\r\n if(!(checkName in item) && parentNode){\r\n item[checkName] = parentNode[checkName];\r\n }\r\n })\r\n\r\n var tableData = that.getTableData(), dataAfter;\r\n if (!parentNode) {\r\n // 添加到根节点\r\n dataAfter = table.cache[id].splice(index === -1 ? table.cache[id].length : index);\r\n table.cache[id] = table.cache[id].concat(newNodes, dataAfter);\r\n if (!options.url) {\r\n // 静态data模式\r\n if (!options.page) {\r\n options.data = table.cache[id];\r\n } else {\r\n var pageOptions = options.page;\r\n options.data.splice.apply(options.data, [pageOptions.limit * (pageOptions.curr - 1), pageOptions.limit].concat(table.cache[id]))\r\n }\r\n }\r\n // 将新节点添加到页面\r\n tableData = that.initData();\r\n\r\n if (tableViewElem.find('.layui-none').length) {\r\n table.renderData(id);\r\n return newNodes;\r\n }\r\n\r\n var newNodesHtml = table.getTrHtml(id, newNodes);\r\n var newNodesHtmlObj = {\r\n trs: $(newNodesHtml.trs.join('')),\r\n trs_fixed: $(newNodesHtml.trs_fixed.join('')),\r\n trs_fixed_r: $(newNodesHtml.trs_fixed_r.join(''))\r\n }\r\n\r\n var attrs = {};\r\n layui.each(newNodes, function (newNodeIndex, newNodeItem) {\r\n attrs = {\r\n 'data-index': newNodeItem[LAY_DATA_INDEX],\r\n 'lay-data-index': newNodeItem[LAY_DATA_INDEX],\r\n 'data-level': '0'\r\n };\r\n newNodesHtmlObj.trs.eq(newNodeIndex).attr(attrs)\r\n newNodesHtmlObj.trs_fixed.eq(newNodeIndex).attr(attrs)\r\n newNodesHtmlObj.trs_fixed_r.eq(newNodeIndex).attr(attrs)\r\n })\r\n var trIndexPrev = parseInt(newNodes[0][LAY_DATA_INDEX]) - 1;\r\n var tableViewElemMAIN = tableViewElem.find(ELEM_MAIN);\r\n var tableViewElemFIXL = tableViewElem.find(ELEM_FIXL);\r\n var tableViewElemFIXR = tableViewElem.find(ELEM_FIXR);\r\n if (trIndexPrev === -1) {\r\n // 插入到开头\r\n tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs_fixed_r);\r\n } else {\r\n if (index === -1) {\r\n // 追加到最后\r\n tableViewElemMAIN.find('tbody').append(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tbody').append(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tbody').append(newNodesHtmlObj.trs_fixed_r);\r\n } else {\r\n var trIndexNext = dataAfter[0][LAY_DATA_INDEX_HISTORY];\r\n tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs_fixed_r);\r\n }\r\n\r\n }\r\n\r\n // 重新更新顶层节点的data-index;\r\n layui.each(table.cache[id], function (i4, item4) {\r\n tableViewElem.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]').attr('data-index', i4);\r\n })\r\n\r\n that.renderTreeTable(tableViewElem.find(newNodes.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')));\r\n } else {\r\n var isParentKey = treeOptions.customName.isParent;\r\n var childKey = treeOptions.customName.children;\r\n\r\n parentNode[isParentKey] = true;\r\n var childrenNodes = parentNode[childKey];\r\n if (!childrenNodes) {\r\n childrenNodes = parentNode[childKey] = newNodes;\r\n } else {\r\n dataAfter = childrenNodes.splice(index === -1 ? childrenNodes.length : index);\r\n childrenNodes = parentNode[childKey] = childrenNodes.concat(newNodes, dataAfter);\r\n }\r\n // 删除已经存在的同级节点以及他们的子节点,并且把中间节点的已展开过的状态设置为false\r\n that.updateStatus(childrenNodes, function (d) {\r\n if (d[isParentKey] || treeOptions.view.showFlexIconIfNotParent) {\r\n d[LAY_HAS_EXPANDED] = false;\r\n }\r\n });\r\n var childrenNodesFlat = that.treeToFlat(childrenNodes);\r\n tableViewElem.find(childrenNodesFlat.map(function (value) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).remove();\r\n\r\n tableData = that.initData();\r\n // 去掉父节点的已经展开过的状态,重新执行一次展开的方法\r\n parentNode[LAY_HAS_EXPANDED] = false;\r\n parentNode[LAY_ASYNC_STATUS] = 'local'; // 转为本地数据,应该规定异步加载子节点的时候addNodes的规则\r\n expandNode({trElem: tableViewElem.find('tr[lay-data-index=\"' + parentIndex + '\"]')}, true)\r\n }\r\n that.updateCheckStatus(parentNode);\r\n treeTable.resize(id);\r\n if (focus) {\r\n // 滚动到第一个新增的节点\r\n tableViewElem.find(ELEM_MAIN).find('tr[lay-data-index=\"' + newNodes[0][LAY_DATA_INDEX] + '\"]').get(0).scrollIntoViewIfNeeded();\r\n }\r\n\r\n return newNodes;\r\n }\r\n\r\n // 获取表格选中状态\r\n treeTable.checkStatus = function (id, includeHalfCheck) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var checkName = table.config.checkName;\r\n\r\n // 需要区分单双选\r\n var tableData = treeTable.getData(id, true);\r\n var checkedData = tableData.filter(function (value, index, array) {\r\n return value[checkName] || (includeHalfCheck && value[LAY_CHECKBOX_HALF]);\r\n });\r\n\r\n var isAll = true;\r\n layui.each(treeOptions.data.cascade === 'all' ? table.cache[id] : treeTable.getData(id, true), function (i1, item1) {\r\n if (!item1[checkName]) {\r\n isAll = false;\r\n return true;\r\n }\r\n })\r\n\r\n return {\r\n data: checkedData,\r\n isAll: isAll\r\n }\r\n }\r\n\r\n // 排序之后重新渲染成树表\r\n treeTable.on('sort', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n treeTable.sort(tableId);\r\n }\r\n });\r\n\r\n // 行点击\r\n treeTable.on('row', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // 行双击\r\n treeTable.on('rowDouble', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n\r\n var treeOptions = options.tree || {};\r\n if (treeOptions.view.dblClickExpand) {\r\n expandNode({trElem: obj.tr.first()}, null, null, null, true);\r\n }\r\n }\r\n })\r\n\r\n // 菜单\r\n treeTable.on('rowContextmenu', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // tr中带lay-event节点点击\r\n treeTable.on('tool', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // 行内编辑\r\n treeTable.on('edit', function (obj) {\r\n // 如果编辑涉及到关键的name字段需要重新更新一下tr节点\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n if (obj.field === options.tree.customName.name) {\r\n var updateData = {};\r\n updateData[obj.field] = obj.value;\r\n obj.update(updateData); // 通过update调用执行tr节点的更新\r\n }\r\n }\r\n });\r\n\r\n // 单选\r\n treeTable.on('radio', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n var that = getThisTable(tableId);\r\n updateObjParams(obj);\r\n checkNode.call(that, obj.tr, obj.checked)\r\n }\r\n })\r\n\r\n // 设置或取消行选中样式\r\n Class.prototype.setRowCheckedClass = function(tr, checked){\r\n var that = this;\r\n var options = that.getOptions();\r\n\r\n var index = tr.data('index');\r\n var tableViewElem = options.elem.next();\r\n \r\n tr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED); // 主体行\r\n\r\n // 右侧固定行\r\n tr.each(function(){\r\n var index = $(this).data('index');\r\n var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr[data-index=\"'+ index +'\"]');\r\n trFixedR[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED);\r\n });\r\n };\r\n\r\n // 更新表格的复选框状态\r\n Class.prototype.updateCheckStatus = function (dataP, checked) {\r\n var that = this;\r\n var options = that.getOptions();\r\n if (!options.hasChecboxCol) {\r\n return false; // 如果没有复选列则不需要更新状态\r\n }\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableView = options.elem.next();\r\n\r\n var checkName = table.config.checkName;\r\n\r\n var cascade = treeOptions.data.cascade;\r\n var isCascadeParent = cascade === 'all' || cascade === 'parent';\r\n\r\n // 如有必要更新父节点们的状态\r\n if (isCascadeParent && dataP) {\r\n var trsP = that.updateParentCheckStatus(dataP, layui.type(checked) === 'boolean' ? checked : null);\r\n layui.each(trsP, function (indexP, itemP) {\r\n var checkboxElem = tableView.find('tr[lay-data-index=\"' + itemP[LAY_DATA_INDEX] + '\"] input[name=\"layTableCheckbox\"]:not(:disabled)');\r\n var checked = itemP[checkName];\r\n\r\n // 标记父节点行背景色\r\n that.setRowCheckedClass(checkboxElem.closest('tr'), checked);\r\n \r\n // 设置原始复选框 checked 属性值并渲染\r\n form.render(checkboxElem.prop({\r\n checked: checked,\r\n indeterminate: itemP[LAY_CHECKBOX_HALF]\r\n }))\r\n })\r\n }\r\n\r\n // 更新全选的状态\r\n var isAll = true;\r\n var isIndeterminate = false;\r\n var data = treeOptions.data.cascade === 'all' ? table.cache[tableId] : treeTable.getData(tableId, true);\r\n data = data.filter(function (item) {\r\n return !item[options.disabledName];\r\n });\r\n layui.each(data, function (i1, item1) {\r\n if (item1[checkName] || item1[LAY_CHECKBOX_HALF]) {\r\n isIndeterminate = true;\r\n }\r\n if (!item1[checkName]) {\r\n isAll = false;\r\n }\r\n if (isIndeterminate && !isAll) {\r\n return true;\r\n }\r\n })\r\n isIndeterminate = isIndeterminate && !isAll;\r\n form.render(tableView.find('input[name=\"layTableCheckbox\"][lay-filter=\"layTableAllChoose\"]').prop({\r\n 'checked': isAll,\r\n indeterminate: isIndeterminate\r\n }));\r\n\r\n return isAll\r\n }\r\n\r\n // 更新父节点的选中状态\r\n Class.prototype.updateParentCheckStatus = function (dataP, checked) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var checkName = table.config.checkName;\r\n var childrenKey = treeOptions.customName.children;\r\n\r\n var dataRet = [];\r\n dataP[LAY_CHECKBOX_HALF] = false; // 先设置为非半选,是否为半选又下面逻辑判断\r\n if (checked === true) {\r\n // 为真需要判断子节点的情况\r\n if (!dataP[childrenKey].length) {\r\n checked = false;\r\n } else {\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (!item[checkName]) { // 只要有一个子节点为false\r\n checked = false;\r\n dataP[LAY_CHECKBOX_HALF] = true;\r\n return true; // 跳出循环\r\n }\r\n });\r\n }\r\n } else if (checked === false) {\r\n // 判断是否为半选\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (item[checkName] || item[LAY_CHECKBOX_HALF]) { // 只要有一个子节点为选中或者半选状态\r\n dataP[LAY_CHECKBOX_HALF] = true;\r\n return true;\r\n }\r\n });\r\n } else {\r\n // 状态不确定的情况下根据子节点的信息\r\n checked = false;\r\n var checkedNum = 0;\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (item[checkName]) {\r\n checkedNum++;\r\n }\r\n });\r\n checked = dataP[childrenKey].length ? dataP[childrenKey].length === checkedNum : dataP[checkName]; // 如果没有子节点保留原来的状态;\r\n dataP[LAY_CHECKBOX_HALF] = checked ? false : checkedNum > 0;\r\n }\r\n dataP[checkName] = checked;\r\n dataRet.push($.extend({}, dataP));\r\n if (dataP[LAY_PARENT_INDEX]) {\r\n dataRet = dataRet.concat(that.updateParentCheckStatus(table.cache[tableId][dataP[LAY_PARENT_INDEX]], checked));\r\n }\r\n return dataRet\r\n }\r\n\r\n var checkNode = function (trElem, checked, callbackFlag) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableView = options.elem.next();\r\n var inputElem = (trElem.length ? trElem : tableView).find('.laytable-cell-radio, .laytable-cell-checkbox').children('input').last();\r\n // 判断是单选还是多选 不应该同时存在radio列和checkbox列\r\n var isRadio = inputElem.attr('type') === 'radio';\r\n\r\n if (callbackFlag) {\r\n var triggerEvent = function () {\r\n var fn = function (event) {\r\n layui.stope(event);\r\n }\r\n inputElem.parent().on('click', fn); // 添加临时的阻止冒泡事件\r\n inputElem.next().click();\r\n inputElem.parent().off('click', fn);\r\n }\r\n // 如果需要触发事件可以简单的触发对应节点的click事件\r\n if (isRadio) {\r\n // 单选只能选中或者切换其他的不能取消选中 后续看是否有支持的必要 todo\r\n if (checked && !inputElem.prop('checked')) {\r\n triggerEvent()\r\n }\r\n } else {\r\n if (layui.type(checked) === 'boolean') {\r\n if (inputElem.prop('checked') !== checked) {\r\n // 如果当前已经是想要修改的状态则不做处理\r\n triggerEvent()\r\n }\r\n } else {\r\n // 切换\r\n triggerEvent()\r\n }\r\n }\r\n } else {\r\n var trData = that.getNodeDataByIndex(trElem.attr('data-index'));\r\n var checkName = table.config.checkName;\r\n // 如果不触发事件应该有一个方法可以更新数据以及页面的节点\r\n if (isRadio) {\r\n if (!trData) {\r\n // 单选必须是一个存在的行\r\n return;\r\n }\r\n var statusChecked = {};\r\n statusChecked[checkName] = false;\r\n // that.updateStatus(null, statusChecked); // 取消其他的选中状态\r\n that.updateStatus(null, function (d) {\r\n if (d[checkName]) {\r\n var radioElem = tableView.find('tr[lay-data-index=\"' + d[LAY_DATA_INDEX] + '\"] input[type=\"radio\"][lay-type=\"layTableRadio\"]');\r\n d[checkName] = false;\r\n\r\n // 取消当前选中行背景色\r\n that.setRowCheckedClass(radioElem.closest('tr'), false);\r\n form.render(radioElem.prop('checked', false));\r\n }\r\n }); // 取消其他的选中状态\r\n trData[checkName] = checked;\r\n\r\n that.setRowCheckedClass(trElem, checked); // 标记当前选中行背景色\r\n that.setRowCheckedClass(trElem.siblings(), false); // 取消其他行背景色\r\n\r\n form.render(trElem.find('input[type=\"radio\"][lay-type=\"layTableRadio\"]').prop('checked', checked));\r\n } else {\r\n // 切换只能用到单条,全选到这一步的时候应该是一个确定的状态\r\n checked = layui.type(checked) === 'boolean' ? checked : !trData[checkName]; // 状态切换,如果遇到不可操作的节点待处理 todo\r\n // 全选或者是一个父节点,将子节点的状态同步为当前节点的状态\r\n // 处理不可操作的信息\r\n var checkedStatusFn = function (d) {\r\n if (!d[table.config.disabledName]) { // 节点不可操作的不处理\r\n d[checkName] = checked;\r\n d[LAY_CHECKBOX_HALF] = false;\r\n }\r\n }\r\n\r\n var trs = that.updateStatus(trData ? [trData] : table.cache[tableId], checkedStatusFn, trData && ['parent', 'none'].indexOf(treeOptions.data.cascade) !== -1);\r\n var checkboxElem = tableView.find(trs.map(function (value) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"] input[name=\"layTableCheckbox\"]:not(:disabled)';\r\n }).join(','));\r\n\r\n that.setRowCheckedClass(checkboxElem.closest('tr'), checked); // 标记当前选中行背景色\r\n form.render(checkboxElem.prop({checked: checked, indeterminate: false}));\r\n\r\n var trDataP;\r\n\r\n // 更新父节点以及更上层节点的状态\r\n if (trData && trData[LAY_PARENT_INDEX]) {\r\n // 找到父节点,然后判断父节点的子节点是否全部选中\r\n trDataP = that.getNodeDataByIndex(trData[LAY_PARENT_INDEX]);\r\n }\r\n\r\n return that.updateCheckStatus(trDataP, checked);\r\n }\r\n }\r\n }\r\n\r\n // 多选\r\n treeTable.on('checkbox', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n var that = getThisTable(tableId);\r\n var checked = obj.checked;\r\n updateObjParams(obj)\r\n obj.isAll = checkNode.call(that, obj.tr, checked);\r\n }\r\n })\r\n\r\n /**\r\n * 设置行选中状态\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {Object|String} opts.index 节点下标\r\n * @param {Boolean} opts.checked 选中或取消\r\n * @param {Boolean} [opts.callbackFlag] 是否触发事件回调\r\n * */\r\n treeTable.setRowChecked = function (id, opts) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var tableView = options.elem.next();\r\n\r\n opts = opts || {};\r\n\r\n var node = opts.index;\r\n var checked = opts.checked;\r\n var callbackFlag = opts.callbackFlag;\r\n\r\n var dataIndex = layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX];\r\n // 判断是否在当前页面中\r\n var nodeData = that.getNodeDataByIndex(dataIndex);\r\n if (!nodeData) {\r\n // 目前只能处理当前页的数据\r\n return;\r\n }\r\n\r\n var collectNeedExpandNodeIndex = function(index){\r\n needExpandIndex.push(index);\r\n var trElem = tableView.find('tr[lay-data-index=\"' + index + '\"]');\r\n if (!trElem.length) {\r\n var nodeData = that.getNodeDataByIndex(index);\r\n var parentIndex = nodeData[LAY_PARENT_INDEX];\r\n parentIndex && collectNeedExpandNodeIndex(parentIndex);\r\n }\r\n }\r\n\r\n // 判断是否展开过\r\n var trElem = tableView.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n if (!trElem.length) {\r\n var parentIndex = nodeData[LAY_PARENT_INDEX];\r\n var needExpandIndex = [];\r\n collectNeedExpandNodeIndex(parentIndex);\r\n // 如果还没有展开没有渲染的要先渲染出来\r\n layui.each(needExpandIndex.reverse(),function(index, nodeIndex){\r\n treeTable.expandNode(id, {\r\n index: nodeIndex,\r\n expandFlag: true\r\n });\r\n })\r\n trElem = tableView.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n }\r\n checkNode.call(that, trElem, checked, callbackFlag);\r\n }\r\n\r\n treeTable.checkAllNodes = function (id, checked) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var tableView = options.elem.next();\r\n\r\n checkNode.call(that, tableView.find('tr[data-index=\"NONE\"]'), !!checked)\r\n }\r\n\r\n /**\r\n * 获得数据\r\n * @param {String} id 表格id\r\n * @param {Boolean} [isSimpleData] 是否返回平铺结构的数据\r\n * @return {Array} 表格数据\r\n * */\r\n treeTable.getData = function (id, isSimpleData) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n var tableData = [];\r\n layui.each($.extend(true, [], table.cache[id] || []), function (index, item) {\r\n // 遍历排除掉临时的数据\r\n tableData.push(item);\r\n })\r\n return isSimpleData ? that.treeToFlat(tableData) : tableData;\r\n }\r\n\r\n /**\r\n * 重新加载子节点\r\n * @param {String} id 表格id\r\n * @param {String} dataIndex 父节点的dataIndex\r\n * */\r\n treeTable.reloadAsyncNode = function (id, dataIndex) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n if (!treeOptions.async || !treeOptions.async.enable) {\r\n return;\r\n }\r\n var dataP = that.getNodeDataByIndex(dataIndex);\r\n if (!dataP) {\r\n return;\r\n }\r\n dataP[LAY_HAS_EXPANDED] = false;\r\n dataP[LAY_EXPAND] = false;\r\n dataP[LAY_ASYNC_STATUS] = false;\r\n layui.each(that.treeToFlat(dataP[treeOptions.customName.children]).reverse(), function (i1, item1) {\r\n treeTable.removeNode(id, item1[LAY_DATA_INDEX]);\r\n })\r\n // 重新展开\r\n treeTable.expandNode(id, {\r\n index: dataIndex,\r\n expandFlag: true,\r\n callbackFlag: true,\r\n })\r\n }\r\n\r\n /**\r\n * 通过数据id获取节点对象\r\n * */\r\n treeTable.getNodeById = function (id, dataId) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n return that.getNodeById(dataId);\r\n }\r\n\r\n /**\r\n * 根据自定义规则搜索节点数据\r\n * @param {String} id 树表id\r\n * @param {Function} filter 自定义过滤器函数\r\n * @param {Object} [opts]\r\n * @param {Boolean} [opts.isSingle] 是否只找到第一个\r\n * @param {Object} [opts.parentNode] 在指定在某个父节点下的子节点中搜索\r\n * @return {Object} 节点对象\r\n * */\r\n treeTable.getNodesByFilter = function (id, filter, opts) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n var options = that.getOptions();\r\n\r\n opts = opts || {};\r\n var isSingle = opts.isSingle;\r\n var parentNode = opts.parentNode;\r\n var dataP = parentNode && parentNode.data;\r\n // dataP = dataP || table.cache[id];\r\n var nodes = that.treeToFlat(dataP ? (dataP[options.tree.customName.children] || []) : table.cache[id]).filter(filter);\r\n var nodesResult = [];\r\n layui.each(nodes, function (i1, item1) {\r\n nodesResult.push(that.getNodeByIndex(item1[LAY_DATA_INDEX]));\r\n if (isSingle) {\r\n return true;\r\n }\r\n });\r\n\r\n return nodesResult;\r\n }\r\n\r\n\r\n // 记录所有实例\r\n thisTreeTable.that = {}; // 记录所有实例对象\r\n // thisTreeTable.config = {}; // 记录所有实例配置项\r\n\r\n // 重载\r\n treeTable.reload = function (id, options, deep, type) {\r\n // deep = deep !== false; // 默认采用深拷贝\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n that.reload(options, deep, type);\r\n return thisTreeTable.call(that);\r\n };\r\n\r\n // 核心入口\r\n treeTable.render = function (options) {\r\n var inst = new Class(options);\r\n return thisTreeTable.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, treeTable);\r\n});\r\n","/**\r\n * tree 树组件\r\n */\r\n\r\nlayui.define('form', function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var form = layui.form;\r\n var layer = layui.layer;\r\n \r\n // 模块名\r\n var MOD_NAME = 'tree';\r\n\r\n // 外部接口\r\n var tree = {\r\n config: {\r\n customName: { // 自定义 data 字段名\r\n id: 'id',\r\n title: 'title',\r\n children: 'children'\r\n }\r\n },\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || that.index;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n thisModule.config[id] = options; // 记录当前实例配置项\r\n \r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n getChecked: function(){\r\n return that.getChecked.call(that);\r\n },\r\n setChecked: function(id){// 设置值\r\n return that.setChecked.call(that, id);\r\n }\r\n }\r\n };\r\n \r\n // 获取当前实例配置项\r\n var getThisModuleConfig = function(id){\r\n var config = thisModule.config[id];\r\n if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');\r\n return config || null;\r\n }\r\n\r\n // 字符常量\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var NONE = 'layui-none';\r\n var DISABLED = 'layui-disabled';\r\n \r\n var ELEM_VIEW = 'layui-tree';\r\n var ELEM_SET = 'layui-tree-set';\r\n var ICON_CLICK = 'layui-tree-iconClick';\r\n var ICON_ADD = 'layui-icon-addition';\r\n var ICON_SUB = 'layui-icon-subtraction';\r\n var ELEM_ENTRY = 'layui-tree-entry';\r\n var ELEM_MAIN = 'layui-tree-main';\r\n var ELEM_TEXT = 'layui-tree-txt';\r\n var ELEM_PACK = 'layui-tree-pack';\r\n var ELEM_SPREAD = 'layui-tree-spread';\r\n var ELEM_LINE_SHORT = 'layui-tree-setLineShort';\r\n var ELEM_SHOW = 'layui-tree-showLine';\r\n var ELEM_EXTEND = 'layui-tree-lineExtend';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++tree.index;\r\n that.config = $.extend({}, that.config, tree.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n data: [], // 数据\r\n \r\n showCheckbox: false, // 是否显示复选框\r\n showLine: true, // 是否开启连接线\r\n accordion: false, // 是否开启手风琴模式\r\n onlyIconControl: false, // 是否仅允许节点左侧图标控制展开收缩\r\n isJump: false, // 是否允许点击节点时弹出新窗口跳转\r\n edit: false, // 是否开启节点的操作图标\r\n \r\n text: {\r\n defaultNodeName: '未命名', // 节点默认名称\r\n none: '无数据' // 数据为空时的文本提示\r\n }\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n \r\n layui.each(options, function(key, item){\r\n if(layui.type(item) === 'array') delete that.config[key];\r\n });\r\n \r\n that.config = $.extend(true, {}, that.config, options);\r\n that.render();\r\n };\r\n\r\n // 主体渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, tree.config.customName, options.customName);\r\n \r\n that.checkids = [];\r\n\r\n var temp = $('
                  ');\r\n that.tree(temp);\r\n\r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return;\r\n\r\n // 索引\r\n that.key = options.id || that.index;\r\n \r\n // 插入组件结构\r\n that.elem = temp;\r\n that.elemNone = $('
                  '+ options.text.none +'
                  ');\r\n othis.html(that.elem);\r\n\r\n if(that.elem.find('.layui-tree-set').length == 0){\r\n return that.elem.append(that.elemNone);\r\n };\r\n \r\n // 复选框渲染\r\n if(options.showCheckbox){\r\n that.renderForm('checkbox');\r\n };\r\n\r\n that.elem.find('.layui-tree-set').each(function(){\r\n var othis = $(this);\r\n // 最外层\r\n if(!othis.parent('.layui-tree-pack')[0]){\r\n othis.addClass('layui-tree-setHide');\r\n };\r\n\r\n // 没有下一个节点 上一层父级有延伸线\r\n if(!othis.next()[0] && othis.parents('.layui-tree-pack').eq(1).hasClass('layui-tree-lineExtend')){\r\n othis.addClass(ELEM_LINE_SHORT);\r\n };\r\n \r\n // 没有下一个节点 外层最后一个\r\n if(!othis.next()[0] && !othis.parents('.layui-tree-set').eq(0).next()[0]){\r\n othis.addClass(ELEM_LINE_SHORT);\r\n };\r\n });\r\n\r\n that.events();\r\n };\r\n \r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n form.render(type, 'LAY-tree-'+ this.index);\r\n };\r\n\r\n // 节点解析\r\n Class.prototype.tree = function(elem, children){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var data = children || options.data;\r\n\r\n // 遍历数据\r\n layui.each(data, function(index, item){\r\n var hasChild = item[customName.children] && item[customName.children].length > 0;\r\n var packDiv = $('
                  ');\r\n var entryDiv = $(['
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n // 箭头\r\n ,function(){\r\n if(options.showLine){\r\n if(hasChild){\r\n return '';\r\n }else{\r\n return '';\r\n };\r\n }else{\r\n return '';\r\n };\r\n }()\r\n \r\n // 复选框\r\n ,function(){\r\n return options.showCheckbox ? '' : '';\r\n }()\r\n \r\n // 节点\r\n ,function(){\r\n if(options.isJump && item.href){\r\n return ''+ (item[customName.title] || item.label || options.text.defaultNodeName) +'';\r\n }else{\r\n return ''+ (item[customName.title] || item.label || options.text.defaultNodeName) +'';\r\n }\r\n }()\r\n ,'
                  '\r\n \r\n // 节点操作图标\r\n ,function(){\r\n if(!options.edit) return '';\r\n \r\n var editIcon = {\r\n add: ''\r\n ,update: ''\r\n ,del: ''\r\n }, arr = ['
                  '];\r\n \r\n if(options.edit === true){\r\n options.edit = ['update', 'del']\r\n }\r\n \r\n if(typeof options.edit === 'object'){\r\n layui.each(options.edit, function(i, val){\r\n arr.push(editIcon[val] || '')\r\n });\r\n return arr.join('') + '
                  ';\r\n }\r\n }()\r\n ,'
                  '].join(''));\r\n\r\n // 如果有子节点,则递归继续生成树\r\n if(hasChild){\r\n entryDiv.append(packDiv);\r\n that.tree(packDiv, item[customName.children]);\r\n };\r\n\r\n elem.append(entryDiv);\r\n \r\n // 若有前置节点,前置节点加连接线\r\n if(entryDiv.prev('.'+ELEM_SET)[0]){\r\n entryDiv.prev().children('.layui-tree-pack').addClass('layui-tree-showLine');\r\n };\r\n \r\n // 若无子节点,则父节点加延伸线\r\n if(!hasChild){\r\n entryDiv.parent('.layui-tree-pack').addClass('layui-tree-lineExtend');\r\n };\r\n\r\n // 展开节点操作\r\n that.spread(entryDiv, item);\r\n \r\n // 选择框\r\n if(options.showCheckbox){\r\n item.checked && that.checkids.push(item[customName.id]);\r\n that.checkClick(entryDiv, item);\r\n }\r\n \r\n // 操作节点\r\n options.edit && that.operate(entryDiv, item);\r\n \r\n });\r\n };\r\n\r\n // 展开节点\r\n Class.prototype.spread = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var entry = elem.children('.'+ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n var elemCheckbox = elemMain.find('input[same=\"layuiTreeCheck\"]');\r\n var elemIcon = entry.find('.'+ ICON_CLICK);\r\n var elemText = entry.find('.'+ ELEM_TEXT);\r\n var touchOpen = options.onlyIconControl ? elemIcon : elemMain; // 判断展开通过节点还是箭头图标\r\n var state = '';\r\n \r\n // 展开收缩\r\n touchOpen.on('click', function(e){\r\n var packCont = elem.children('.'+ELEM_PACK)\r\n ,iconClick = touchOpen.children('.layui-icon')[0] ? touchOpen.children('.layui-icon') : touchOpen.find('.layui-tree-icon').children('.layui-icon');\r\n\r\n // 若没有子节点\r\n if(!packCont[0]){\r\n state = 'normal';\r\n }else{\r\n if(elem.hasClass(ELEM_SPREAD)){\r\n elem.removeClass(ELEM_SPREAD);\r\n packCont.slideUp(200);\r\n iconClick.removeClass(ICON_SUB).addClass(ICON_ADD); \r\n that.updateFieldValue(item, 'spread', false);\r\n }else{\r\n elem.addClass(ELEM_SPREAD);\r\n packCont.slideDown(200);\r\n iconClick.addClass(ICON_SUB).removeClass(ICON_ADD);\r\n that.updateFieldValue(item, 'spread', true);\r\n\r\n // 是否手风琴\r\n if(options.accordion){\r\n var sibls = elem.siblings('.'+ELEM_SET);\r\n sibls.removeClass(ELEM_SPREAD);\r\n sibls.children('.'+ELEM_PACK).slideUp(200);\r\n sibls.find('.layui-tree-icon').children('.layui-icon').removeClass(ICON_SUB).addClass(ICON_ADD);\r\n };\r\n };\r\n };\r\n });\r\n \r\n // 点击回调\r\n elemText.on('click', function(){\r\n var othis = $(this);\r\n \r\n // 判断是否禁用状态\r\n if(othis.hasClass(DISABLED)) return;\r\n \r\n // 判断展开收缩状态\r\n if(elem.hasClass(ELEM_SPREAD)){\r\n state = options.onlyIconControl ? 'open' : 'close';\r\n } else {\r\n state = options.onlyIconControl ? 'close' : 'open';\r\n }\r\n\r\n // 获取选中状态\r\n if(elemCheckbox[0]){\r\n that.updateFieldValue(item, 'checked', elemCheckbox.prop('checked'));\r\n }\r\n \r\n // 点击产生的回调\r\n options.click && options.click({\r\n elem: elem,\r\n state: state,\r\n data: item\r\n });\r\n });\r\n };\r\n\r\n // 更新数据源 checked,spread 字段值\r\n Class.prototype.updateFieldValue = function(obj, field, value){\r\n if(field in obj) obj[field] = value;\r\n };\r\n \r\n // 计算复选框选中状态\r\n Class.prototype.setCheckbox = function(elem, item, elemCheckbox){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var checked = elemCheckbox.prop('checked');\r\n \r\n if(elemCheckbox.prop('disabled')) return;\r\n\r\n // 同步子节点选中状态\r\n if(typeof item[customName.children] === 'object' || elem.find('.'+ELEM_PACK)[0]){\r\n var elemCheckboxs = elem.find('.'+ ELEM_PACK).find('input[same=\"layuiTreeCheck\"]');\r\n elemCheckboxs.each(function(index){\r\n if(this.disabled) return; // 不可点击则跳过\r\n var children = item[customName.children][index];\r\n if(children) that.updateFieldValue(children, 'checked', checked);\r\n that.updateFieldValue(this, 'checked', checked);\r\n });\r\n };\r\n\r\n // 同步父节点选中状态\r\n var setParentsChecked = function(thisNodeElem){\r\n // 若无父节点,则终止递归\r\n if(!thisNodeElem.parents('.'+ ELEM_SET)[0]) return;\r\n\r\n var state;\r\n var parentPack = thisNodeElem.parent('.'+ ELEM_PACK);\r\n var parentNodeElem = parentPack.parent();\r\n var parentCheckbox = parentPack.prev().find('input[same=\"layuiTreeCheck\"]');\r\n\r\n // 如果子节点有任意一条选中,则父节点为选中状态\r\n if(checked){\r\n parentCheckbox.prop('checked', checked);\r\n } else { // 如果当前节点取消选中,则根据计算“兄弟和子孙”节点选中状态,来同步父节点选中状态\r\n parentPack.find('input[same=\"layuiTreeCheck\"]').each(function(){\r\n if(this.checked){\r\n state = true;\r\n }\r\n });\r\n \r\n // 如果兄弟子孙节点全部未选中,则父节点也应为非选中状态\r\n state || parentCheckbox.prop('checked', false);\r\n }\r\n \r\n // 向父节点递归\r\n setParentsChecked(parentNodeElem);\r\n };\r\n \r\n setParentsChecked(elem);\r\n\r\n that.renderForm('checkbox');\r\n };\r\n \r\n // 复选框选择\r\n Class.prototype.checkClick = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var entry = elem.children('.'+ ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n \r\n \r\n \r\n // 点击复选框\r\n elemMain.on('click', 'input[same=\"layuiTreeCheck\"]+', function(e){\r\n layui.stope(e); // 阻止点击节点事件\r\n\r\n var elemCheckbox = $(this).prev();\r\n var checked = elemCheckbox.prop('checked');\r\n \r\n if(elemCheckbox.prop('disabled')) return;\r\n \r\n that.setCheckbox(elem, item, elemCheckbox);\r\n that.updateFieldValue(item, 'checked', checked);\r\n\r\n // 复选框点击产生的回调\r\n options.oncheck && options.oncheck({\r\n elem: elem,\r\n checked: checked,\r\n data: item\r\n });\r\n });\r\n };\r\n\r\n // 节点操作\r\n Class.prototype.operate = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var entry = elem.children('.'+ ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n\r\n entry.children('.layui-tree-btnGroup').on('click', '.layui-icon', function(e){\r\n layui.stope(e); // 阻止节点操作\r\n\r\n var type = $(this).data(\"type\");\r\n var packCont = elem.children('.'+ELEM_PACK);\r\n var returnObj = {\r\n data: item,\r\n type: type,\r\n elem:elem\r\n };\r\n // 增加\r\n if(type == 'add'){\r\n // 若节点本身无子节点\r\n if(!packCont[0]){\r\n // 若开启连接线,更改图标样式\r\n if(options.showLine){\r\n elemMain.find('.'+ICON_CLICK).addClass('layui-tree-icon');\r\n elemMain.find('.'+ICON_CLICK).children('.layui-icon').addClass(ICON_ADD).removeClass('layui-icon-file');\r\n // 若未开启连接线,显示箭头\r\n } else {\r\n elemMain.find('.layui-tree-iconArrow').removeClass(HIDE);\r\n };\r\n // 节点添加子节点容器\r\n elem.append('
                  ');\r\n };\r\n\r\n // 新增节点\r\n var key = options.operate && options.operate(returnObj);\r\n var obj = {};\r\n\r\n obj[customName.title] = options.text.defaultNodeName;\r\n obj[customName.id] = key;\r\n that.tree(elem.children('.'+ELEM_PACK), [obj]);\r\n \r\n // 放在新增后面,因为要对元素进行操作\r\n if(options.showLine){\r\n // 节点本身无子节点\r\n if(!packCont[0]){\r\n // 遍历兄弟节点,判断兄弟节点是否有子节点\r\n var siblings = elem.siblings('.'+ELEM_SET)\r\n var num = 1;\r\n var parentPack = elem.parent('.'+ELEM_PACK);\r\n\r\n layui.each(siblings, function(index, i){\r\n if(!$(i).children('.'+ELEM_PACK)[0]){\r\n num = 0;\r\n };\r\n });\r\n\r\n // 若兄弟节点都有子节点\r\n if(num == 1){\r\n // 兄弟节点添加连接线\r\n siblings.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n siblings.children('.'+ELEM_PACK).children('.'+ELEM_SET).removeClass(ELEM_LINE_SHORT);\r\n elem.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n // 父级移除延伸线\r\n parentPack.removeClass(ELEM_EXTEND);\r\n // 同层节点最后一个更改线的状态\r\n parentPack.children('.'+ELEM_SET).last().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n } else {\r\n elem.children('.'+ELEM_PACK).children('.'+ELEM_SET).addClass(ELEM_LINE_SHORT);\r\n };\r\n } else {\r\n // 添加延伸线\r\n if(!packCont.hasClass(ELEM_EXTEND)){\r\n packCont.addClass(ELEM_EXTEND);\r\n };\r\n // 子节点添加延伸线\r\n elem.find('.'+ELEM_PACK).each(function(){\r\n $(this).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n });\r\n // 如果前一个节点有延伸线\r\n if(packCont.children('.'+ELEM_SET).last().prev().hasClass(ELEM_LINE_SHORT)){\r\n packCont.children('.'+ELEM_SET).last().prev().removeClass(ELEM_LINE_SHORT);\r\n }else{\r\n // 若之前的没有,说明处于连接状态\r\n packCont.children('.'+ELEM_SET).last().removeClass(ELEM_LINE_SHORT);\r\n };\r\n // 若是最外层,要始终保持相连的状态\r\n if(!elem.parent('.'+ELEM_PACK)[0] && elem.next()[0]){\r\n packCont.children('.'+ELEM_SET).last().removeClass(ELEM_LINE_SHORT);\r\n };\r\n };\r\n };\r\n if(!options.showCheckbox) return;\r\n // 若开启复选框,同步新增节点状态\r\n if(elemMain.find('input[same=\"layuiTreeCheck\"]')[0].checked){\r\n var packLast = elem.children('.'+ELEM_PACK).children('.'+ELEM_SET).last();\r\n packLast.find('input[same=\"layuiTreeCheck\"]')[0].checked = true;\r\n };\r\n that.renderForm('checkbox');\r\n \r\n // 修改\r\n } else if(type == 'update') {\r\n var text = elemMain.children('.'+ ELEM_TEXT).html();\r\n elemMain.children('.'+ ELEM_TEXT).html('');\r\n // 添加输入框,覆盖在文字上方\r\n elemMain.append('');\r\n // 获取焦点\r\n elemMain.children('.layui-tree-editInput').val(text).focus();\r\n // 嵌入文字移除输入框\r\n var getVal = function(input){\r\n var textNew = input.val().trim();\r\n textNew = textNew ? textNew : options.text.defaultNodeName;\r\n input.remove();\r\n elemMain.children('.'+ ELEM_TEXT).html(textNew);\r\n \r\n // 同步数据\r\n returnObj.data[customName.title] = textNew;\r\n \r\n // 节点修改的回调\r\n options.operate && options.operate(returnObj);\r\n };\r\n // 失去焦点\r\n elemMain.children('.layui-tree-editInput').blur(function(){\r\n getVal($(this));\r\n });\r\n // 回车\r\n elemMain.children('.layui-tree-editInput').on('keydown', function(e){\r\n if(e.keyCode === 13){\r\n e.preventDefault();\r\n getVal($(this));\r\n };\r\n });\r\n\r\n // 删除\r\n } else {\r\n layer.confirm('确认删除该节点 \"'+ (item[customName.title] || '') +'\" 吗?', function(index){\r\n options.operate && options.operate(returnObj); // 节点删除的回调\r\n returnObj.status = 'remove'; // 标注节点删除\r\n \r\n layer.close(index);\r\n \r\n // 若删除最后一个,显示空数据提示\r\n if(!elem.prev('.'+ELEM_SET)[0] && !elem.next('.'+ELEM_SET)[0] && !elem.parent('.'+ELEM_PACK)[0]){\r\n elem.remove();\r\n that.elem.append(that.elemNone);\r\n return;\r\n };\r\n // 若有兄弟节点\r\n if(elem.siblings('.'+ELEM_SET).children('.'+ELEM_ENTRY)[0]){\r\n // 若开启复选框\r\n if(options.showCheckbox){\r\n // 若开启复选框,进行下步操作\r\n var elemDel = function(elem){\r\n // 若无父结点,则不执行\r\n if(!elem.parents('.'+ELEM_SET)[0]) return;\r\n var siblingTree = elem.siblings('.'+ELEM_SET).children('.'+ELEM_ENTRY);\r\n var parentTree = elem.parent('.'+ELEM_PACK).prev();\r\n var checkState = parentTree.find('input[same=\"layuiTreeCheck\"]')[0];\r\n var state = 1;\r\n var num = 0;\r\n\r\n // 若父节点未勾选\r\n if(checkState.checked == false){\r\n // 遍历兄弟节点\r\n siblingTree.each(function(i, item1){\r\n var input = $(item1).find('input[same=\"layuiTreeCheck\"]')[0]\r\n if(input.checked == false && !input.disabled){\r\n state = 0;\r\n };\r\n // 判断是否全为不可勾选框\r\n if(!input.disabled){\r\n num = 1;\r\n };\r\n });\r\n // 若有可勾选选择框并且已勾选\r\n if(state == 1 && num == 1){\r\n // 勾选父节点\r\n checkState.checked = true;\r\n that.renderForm('checkbox');\r\n // 向上遍历祖先节点\r\n elemDel(parentTree.parent('.'+ELEM_SET));\r\n };\r\n };\r\n };\r\n elemDel(elem);\r\n };\r\n // 若开启连接线\r\n if(options.showLine){\r\n // 遍历兄弟节点,判断兄弟节点是否有子节点\r\n var siblings = elem.siblings('.'+ELEM_SET);\r\n var num = 1;\r\n var parentPack = elem.parent('.'+ELEM_PACK);\r\n\r\n layui.each(siblings, function(index, i){\r\n if(!$(i).children('.'+ELEM_PACK)[0]){\r\n num = 0;\r\n };\r\n });\r\n // 若兄弟节点都有子节点\r\n if(num == 1){\r\n // 若节点本身无子节点\r\n if(!packCont[0]){\r\n // 父级去除延伸线,因为此时子节点里没有空节点\r\n parentPack.removeClass(ELEM_EXTEND);\r\n siblings.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n siblings.children('.'+ELEM_PACK).children('.'+ELEM_SET).removeClass(ELEM_LINE_SHORT);\r\n };\r\n // 若为最后一个节点\r\n if(!elem.next()[0]){\r\n elem.prev().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n }else{\r\n parentPack.children('.'+ELEM_SET).last().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n };\r\n // 若为最外层最后一个节点,去除前一个结点的连接线\r\n if(!elem.next()[0] && !elem.parents('.'+ELEM_SET)[1] && !elem.parents('.'+ELEM_SET).eq(0).next()[0]){\r\n elem.prev('.'+ELEM_SET).addClass(ELEM_LINE_SHORT);\r\n };\r\n }else{\r\n // 若为最后一个节点且有延伸线\r\n if(!elem.next()[0] && elem.hasClass(ELEM_LINE_SHORT)){\r\n elem.prev().addClass(ELEM_LINE_SHORT);\r\n };\r\n };\r\n };\r\n \r\n } else {\r\n // 若无兄弟节点\r\n var prevDiv = elem.parent('.'+ELEM_PACK).prev();\r\n // 若开启了连接线\r\n if(options.showLine){\r\n prevDiv.find('.'+ICON_CLICK).removeClass('layui-tree-icon');\r\n prevDiv.find('.'+ICON_CLICK).children('.layui-icon').removeClass(ICON_SUB).addClass('layui-icon-file');\r\n // 父节点所在层添加延伸线\r\n var pare = prevDiv.parents('.'+ELEM_PACK).eq(0);\r\n pare.addClass(ELEM_EXTEND);\r\n\r\n // 兄弟节点最后子节点添加延伸线\r\n pare.children('.'+ELEM_SET).each(function(){\r\n $(this).children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n });\r\n }else{\r\n // 父节点隐藏箭头\r\n prevDiv.find('.layui-tree-iconArrow').addClass(HIDE);\r\n };\r\n // 移除展开属性\r\n elem.parents('.'+ELEM_SET).eq(0).removeClass(ELEM_SPREAD);\r\n // 移除节点容器\r\n elem.parent('.'+ELEM_PACK).remove();\r\n };\r\n\r\n elem.remove();\r\n });\r\n \r\n };\r\n });\r\n };\r\n\r\n // 部分事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n var checkWarp = that.elem.find('.layui-tree-checkedFirst');\r\n \r\n // 初始选中\r\n that.setChecked(that.checkids);\r\n \r\n // 搜索\r\n that.elem.find('.layui-tree-search').on('keyup', function(){\r\n var input = $(this);\r\n var val = input.val();\r\n var pack = input.nextAll();\r\n var arr = [];\r\n\r\n // 遍历所有的值\r\n pack.find('.'+ ELEM_TEXT).each(function(){\r\n var entry = $(this).parents('.'+ELEM_ENTRY);\r\n // 若值匹配,加一个类以作标识\r\n if($(this).html().indexOf(val) != -1){\r\n arr.push($(this).parent());\r\n \r\n var select = function(div){\r\n div.addClass('layui-tree-searchShow');\r\n // 向上父节点渲染\r\n if(div.parent('.'+ELEM_PACK)[0]){\r\n select(div.parent('.'+ELEM_PACK).parent('.'+ELEM_SET));\r\n };\r\n };\r\n select(entry.parent('.'+ELEM_SET));\r\n };\r\n });\r\n\r\n // 根据标志剔除\r\n pack.find('.'+ELEM_ENTRY).each(function(){\r\n var parent = $(this).parent('.'+ELEM_SET);\r\n if(!parent.hasClass('layui-tree-searchShow')){\r\n parent.addClass(HIDE);\r\n };\r\n });\r\n if(pack.find('.layui-tree-searchShow').length == 0){\r\n that.elem.append(that.elemNone);\r\n };\r\n\r\n // 节点过滤的回调\r\n options.onsearch && options.onsearch({\r\n elem: arr\r\n });\r\n });\r\n\r\n // 还原搜索初始状态\r\n that.elem.find('.layui-tree-search').on('keydown', function(){\r\n $(this).nextAll().find('.'+ELEM_ENTRY).each(function(){\r\n var parent = $(this).parent('.'+ELEM_SET);\r\n parent.removeClass('layui-tree-searchShow '+ HIDE);\r\n });\r\n if($('.layui-tree-emptyText')[0]) $('.layui-tree-emptyText').remove();\r\n });\r\n };\r\n\r\n // 得到选中节点\r\n Class.prototype.getChecked = function(){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var checkId = [];\r\n var checkData = [];\r\n \r\n // 遍历节点找到选中索引\r\n that.elem.find('.layui-form-checked').each(function(){\r\n checkId.push($(this).prev()[0].value);\r\n });\r\n \r\n // 遍历节点\r\n var eachNodes = function(data, checkNode){\r\n layui.each(data, function(index, item){\r\n layui.each(checkId, function(index2, item2){\r\n if(item[customName.id] == item2){\r\n that.updateFieldValue(item, 'checked', true);\r\n\r\n var cloneItem = $.extend({}, item);\r\n delete cloneItem[customName.children];\r\n\r\n checkNode.push(cloneItem);\r\n \r\n if(item[customName.children]){\r\n cloneItem[customName.children] = [];\r\n eachNodes(item[customName.children], cloneItem[customName.children]);\r\n }\r\n return true\r\n }\r\n });\r\n });\r\n };\r\n\r\n eachNodes($.extend({}, options.data), checkData);\r\n \r\n return checkData;\r\n };\r\n\r\n // 设置选中节点\r\n Class.prototype.setChecked = function(checkedId){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 初始选中\r\n that.elem.find('.'+ELEM_SET).each(function(i, item){\r\n var thisId = $(this).data('id');\r\n var input = $(item).children('.'+ELEM_ENTRY).find('input[same=\"layuiTreeCheck\"]');\r\n var reInput = input.next();\r\n \r\n // 若返回数字\r\n if(typeof checkedId === 'number'){\r\n if(thisId.toString() == checkedId.toString()){\r\n if(!input[0].checked){\r\n reInput.click();\r\n };\r\n return false;\r\n };\r\n } \r\n // 若返回数组\r\n else if(typeof checkedId === 'object'){\r\n layui.each(checkedId, function(index, value){\r\n if(value.toString() == thisId.toString() && !input[0].checked){\r\n reInput.click();\r\n return true;\r\n }\r\n });\r\n };\r\n });\r\n };\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n thisModule.config = {}; // 记录所有实例配置项\r\n \r\n // 重载实例\r\n tree.reload = function(id, options){\r\n var that = thisModule.that[id];\r\n that.reload(options);\r\n \r\n return thisModule.call(that);\r\n };\r\n \r\n // 获得选中的节点数据\r\n tree.getChecked = function(id){\r\n var that = thisModule.that[id];\r\n return that.getChecked();\r\n };\r\n \r\n // 设置选中节点\r\n tree.setChecked = function(id, checkedId){\r\n var that = thisModule.that[id];\r\n return that.setChecked(checkedId);\r\n };\r\n \r\n // 核心入口\r\n tree.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, tree);\r\n})","/**\r\n * transfer 穿梭框组件\r\n */\r\n\r\nlayui.define(['laytpl', 'form'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var laytpl = layui.laytpl;\r\n var form = layui.form;\r\n \r\n // 模块名\r\n var MOD_NAME = 'transfer';\r\n\r\n // 外部接口\r\n var transfer = {\r\n config: {},\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || that.index;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n thisModule.config[id] = options; // 记录当前实例配置项\r\n \r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n // 获取右侧数据\r\n getData: function(){\r\n return that.getData.call(that);\r\n }\r\n }\r\n };\r\n \r\n // 获取当前实例配置项\r\n var getThisModuleConfig = function(id){\r\n var config = thisModule.config[id];\r\n if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');\r\n return config || null;\r\n };\r\n\r\n // 字符常量\r\n var ELEM = 'layui-transfer';\r\n var HIDE = 'layui-hide'; \r\n var DISABLED = 'layui-btn-disabled';\r\n var NONE = 'layui-none';\r\n var ELEM_BOX = 'layui-transfer-box';\r\n var ELEM_HEADER = 'layui-transfer-header';\r\n var ELEM_SEARCH = 'layui-transfer-search';\r\n var ELEM_ACTIVE = 'layui-transfer-active';\r\n var ELEM_DATA = 'layui-transfer-data';\r\n \r\n // 穿梭框模板\r\n var TPL_BOX = function(obj){\r\n obj = obj || {};\r\n return ['
                  '\r\n ,'
                  '\r\n ,''\r\n ,'
                  '\r\n ,'{{# if(d.data.showSearch){ }}'\r\n ,'
                  '\r\n ,''\r\n ,''\r\n ,'
                  '\r\n ,'{{# } }}'\r\n ,'
                    '\r\n ,'
                    '].join('');\r\n };\r\n \r\n // 主模板\r\n var TPL_MAIN = ['
                    '\r\n ,TPL_BOX({\r\n index: 0\r\n ,checkAllName: 'layTransferLeftCheckAll'\r\n })\r\n ,'
                    '\r\n ,''\r\n ,''\r\n ,'
                    '\r\n ,TPL_BOX({\r\n index: 1\r\n ,checkAllName: 'layTransferRightCheckAll'\r\n })\r\n ,'
                    '].join('');\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++transfer.index;\r\n that.config = $.extend({}, that.config, transfer.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n title: ['列表一', '列表二'],\r\n width: 200,\r\n height: 360,\r\n data: [], // 数据源\r\n value: [], // 选中的数据\r\n showSearch: false, // 是否开启搜索\r\n id: '', // 唯一索引,默认自增 index\r\n text: {\r\n none: '无数据',\r\n searchNone: '无匹配数据'\r\n }\r\n };\r\n \r\n //重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.render();\r\n };\r\n\r\n //渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n //解析模板\r\n var thisElem = that.elem = $(laytpl(TPL_MAIN, {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n }).render({\r\n data: options\r\n ,index: that.index //索引\r\n }));\r\n \r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return;\r\n \r\n //初始化属性\r\n options.data = options.data || [];\r\n options.value = options.value || [];\r\n \r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n that.key = options.id;\r\n \r\n //插入组件结构\r\n othis.html(that.elem);\r\n \r\n //各级容器\r\n that.layBox = that.elem.find('.'+ ELEM_BOX)\r\n that.layHeader = that.elem.find('.'+ ELEM_HEADER)\r\n that.laySearch = that.elem.find('.'+ ELEM_SEARCH)\r\n that.layData = thisElem.find('.'+ ELEM_DATA);\r\n that.layBtn = thisElem.find('.'+ ELEM_ACTIVE + ' .layui-btn');\r\n \r\n //初始化尺寸\r\n that.layBox.css({\r\n width: options.width\r\n ,height: options.height\r\n });\r\n that.layData.css({\r\n height: function(){\r\n var height = options.height - that.layHeader.outerHeight();\r\n if(options.showSearch){\r\n height -= that.laySearch.outerHeight();\r\n }\r\n return height - 2;\r\n }()\r\n });\r\n \r\n that.renderData(); //渲染数据\r\n that.events(); //事件\r\n };\r\n \r\n // 渲染数据\r\n Class.prototype.renderData = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 左右穿梭框差异数据\r\n var arr = [{\r\n checkName: 'layTransferLeftCheck',\r\n views: []\r\n }, {\r\n checkName: 'layTransferRightCheck',\r\n views: []\r\n }];\r\n \r\n // 解析格式\r\n that.parseData(function(item){ \r\n // 标注为 selected 的为右边的数据\r\n var _index = item.selected ? 1 : 0\r\n var listElem = ['
                  • ',\r\n '',\r\n '
                  • '].join('');\r\n // 按照 options.value 顺序排列右侧数据\r\n if(_index){\r\n layui.each(options.value, function(i, v){\r\n if(v == item.value && item.selected){\r\n arr[_index].views[i] = listElem;\r\n }\r\n });\r\n } else {\r\n arr[_index].views.push(listElem);\r\n }\r\n delete item.selected;\r\n });\r\n \r\n that.layData.eq(0).html(arr[0].views.join(''));\r\n that.layData.eq(1).html(arr[1].views.join(''));\r\n \r\n that.renderCheckBtn();\r\n };\r\n \r\n //渲染表单\r\n Class.prototype.renderForm = function(type){\r\n form.render(type, 'LAY-transfer-'+ this.index);\r\n };\r\n \r\n //同步复选框和按钮状态\r\n Class.prototype.renderCheckBtn = function(obj){\r\n var that = this\r\n ,options = that.config;\r\n \r\n obj = obj || {};\r\n \r\n that.layBox.each(function(_index){\r\n var othis = $(this)\r\n ,thisDataElem = othis.find('.'+ ELEM_DATA)\r\n ,allElemCheckbox = othis.find('.'+ ELEM_HEADER).find('input[type=\"checkbox\"]')\r\n ,listElemCheckbox = thisDataElem.find('input[type=\"checkbox\"]');\r\n \r\n //同步复选框和按钮状态\r\n var nums = 0\r\n ,haveChecked = false;\r\n listElemCheckbox.each(function(){\r\n var isHide = $(this).data('hide');\r\n if(this.checked || this.disabled || isHide){\r\n nums++;\r\n }\r\n if(this.checked && !isHide){\r\n haveChecked = true;\r\n }\r\n });\r\n \r\n allElemCheckbox.prop('checked', haveChecked && nums === listElemCheckbox.length); //全选复选框状态\r\n that.layBtn.eq(_index)[haveChecked ? 'removeClass' : 'addClass'](DISABLED); //对应的按钮状态\r\n \r\n //无数据视图\r\n if(!obj.stopNone){\r\n var isNone = thisDataElem.children('li:not(.'+ HIDE +')').length\r\n that.noneView(thisDataElem, isNone ? '' : options.text.none);\r\n }\r\n });\r\n \r\n that.renderForm('checkbox');\r\n };\r\n \r\n //无数据视图\r\n Class.prototype.noneView = function(thisDataElem, text){\r\n var createNoneElem = $('

                    '+ (text || '') +'

                    ');\r\n if(thisDataElem.find('.'+ NONE)[0]){\r\n thisDataElem.find('.'+ NONE).remove();\r\n }\r\n text.replace(/\\s/g, '') && thisDataElem.append(createNoneElem);\r\n };\r\n \r\n //同步 value 属性值\r\n Class.prototype.setValue = function(){\r\n var that = this\r\n ,options = that.config\r\n ,arr = [];\r\n that.layBox.eq(1).find('.'+ ELEM_DATA +' input[type=\"checkbox\"]').each(function(){\r\n var isHide = $(this).data('hide');\r\n isHide || arr.push(this.value);\r\n });\r\n options.value = arr;\r\n \r\n return that;\r\n };\r\n\r\n //解析数据\r\n Class.prototype.parseData = function(callback){\r\n var that = this\r\n ,options = that.config\r\n ,newData = [];\r\n \r\n layui.each(options.data, function(index, item){\r\n //解析格式\r\n item = (typeof options.parseData === 'function' \r\n ? options.parseData(item) \r\n : item) || item;\r\n \r\n newData.push(item = $.extend({}, item))\r\n \r\n layui.each(options.value, function(index2, item2){\r\n if(item2 == item.value){\r\n item.selected = true;\r\n }\r\n });\r\n callback && callback(item);\r\n });\r\n \r\n options.data = newData;\r\n return that;\r\n };\r\n \r\n //获得右侧面板数据\r\n Class.prototype.getData = function(value){\r\n var that = this\r\n ,options = that.config\r\n ,selectedData = [];\r\n \r\n that.setValue();\r\n \r\n layui.each(value || options.value, function(index, item){\r\n layui.each(options.data, function(index2, item2){\r\n delete item2.selected;\r\n if(item == item2.value){\r\n selectedData.push(item2);\r\n };\r\n });\r\n });\r\n return selectedData;\r\n };\r\n\r\n //执行穿梭\r\n Class.prototype.transfer = function (_index, elem) {\r\n var that = this\r\n ,options = that.config\r\n ,thisBoxElem = that.layBox.eq(_index)\r\n ,arr = []\r\n\r\n if (!elem) {\r\n //通过按钮触发找到选中的进行移动\r\n thisBoxElem.each(function(_index){\r\n var othis = $(this)\r\n ,thisDataElem = othis.find('.'+ ELEM_DATA);\r\n\r\n thisDataElem.children('li').each(function(){\r\n var thisList = $(this)\r\n ,thisElemCheckbox = thisList.find('input[type=\"checkbox\"]')\r\n ,isHide = thisElemCheckbox.data('hide');\r\n\r\n if(thisElemCheckbox[0].checked && !isHide){\r\n thisElemCheckbox[0].checked = false;\r\n thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());\r\n thisList.remove();\r\n\r\n //记录当前穿梭的数据\r\n arr.push(thisElemCheckbox[0].value);\r\n }\r\n\r\n that.setValue();\r\n });\r\n });\r\n } else {\r\n //双击单条记录移动\r\n var thisList = elem\r\n ,thisElemCheckbox = thisList.find('input[type=\"checkbox\"]')\r\n\r\n thisElemCheckbox[0].checked = false;\r\n thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());\r\n thisList.remove();\r\n\r\n //记录当前穿梭的数据\r\n arr.push(thisElemCheckbox[0].value);\r\n\r\n that.setValue();\r\n }\r\n\r\n that.renderCheckBtn();\r\n\r\n //穿梭时,如果另外一个框正在搜索,则触发匹配\r\n var siblingInput = thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_SEARCH +' input')\r\n siblingInput.val() === '' || siblingInput.trigger('keyup');\r\n\r\n //穿梭时的回调\r\n options.onchange && options.onchange(that.getData(arr), _index);\r\n }\r\n\r\n //事件\r\n Class.prototype.events = function(){\r\n var that = this\r\n ,options = that.config;\r\n \r\n //左右复选框\r\n that.elem.on('click', 'input[lay-filter=\"layTransferCheckbox\"]+', function(){ \r\n var thisElemCheckbox = $(this).prev()\r\n ,checked = thisElemCheckbox[0].checked\r\n ,thisDataElem = thisElemCheckbox.parents('.'+ ELEM_BOX).eq(0).find('.'+ ELEM_DATA);\r\n \r\n if(thisElemCheckbox[0].disabled) return;\r\n \r\n //判断是否全选\r\n if(thisElemCheckbox.attr('lay-type') === 'all'){\r\n thisDataElem.find('input[type=\"checkbox\"]').each(function(){\r\n if(this.disabled) return;\r\n this.checked = checked;\r\n });\r\n }\r\n\r\n setTimeout(function () {\r\n that.renderCheckBtn({stopNone: true});\r\n }, 0)\r\n });\r\n\r\n // 双击穿梭\r\n that.elem.on('dblclick', '.' + ELEM_DATA + '>li', function(event){\r\n var elemThis = $(this)\r\n ,thisElemCheckbox = elemThis.children('input[type=\"checkbox\"]')\r\n ,thisDataElem = elemThis.parent()\r\n ,thisBoxElem = thisDataElem.parent()\r\n\r\n if(thisElemCheckbox[0].disabled) return;\r\n\r\n that.transfer(thisBoxElem.data('index'), elemThis);\r\n })\r\n\r\n // 穿梭按钮事件\r\n that.layBtn.on('click', function(){\r\n var othis = $(this)\r\n ,_index = othis.data('index')\r\n if(othis.hasClass(DISABLED)) return;\r\n\r\n that.transfer(_index);\r\n });\r\n \r\n //搜索\r\n that.laySearch.find('input').on('keyup', function(){\r\n var value = this.value;\r\n var thisDataElem = $(this).parents('.'+ ELEM_SEARCH).eq(0).siblings('.'+ ELEM_DATA);\r\n var thisListElem = thisDataElem.children('li');\r\n\r\n thisListElem.each(function(){\r\n var thisList = $(this);\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n var title = thisElemCheckbox[0].title;\r\n\r\n // 是否区分大小写\r\n if(options.showSearch !== 'cs'){\r\n title = title.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n\r\n var isMatch = title.indexOf(value) !== -1;\r\n\r\n thisList[isMatch ? 'removeClass': 'addClass'](HIDE);\r\n thisElemCheckbox.data('hide', isMatch ? false : true);\r\n });\r\n\r\n that.renderCheckBtn();\r\n \r\n //无匹配数据视图\r\n var isNone = thisListElem.length === thisDataElem.children('li.'+ HIDE).length;\r\n that.noneView(thisDataElem, isNone ? options.text.searchNone : '');\r\n });\r\n };\r\n \r\n //记录所有实例\r\n thisModule.that = {}; //记录所有实例对象\r\n thisModule.config = {}; //记录所有实例配置项\r\n \r\n //重载实例\r\n transfer.reload = function(id, options){\r\n var that = thisModule.that[id];\r\n that.reload(options);\r\n \r\n return thisModule.call(that);\r\n };\r\n \r\n //获得选中的数据(右侧面板)\r\n transfer.getData = function(id){\r\n var that = thisModule.that[id];\r\n return that.getData();\r\n };\r\n\r\n //核心入口\r\n transfer.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, transfer);\r\n});\r\n","/**\r\n * carousel 轮播模块\r\n * MIT Licensed \r\n */\r\n \r\nlayui.define(['jquery', 'lay'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n\r\n // 外部接口\r\n var carousel = {\r\n config: {}, // 全局配置项\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n \r\n // 字符常量\r\n var MOD_NAME = 'carousel';\r\n var ELEM = '.layui-carousel';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled'\r\n \r\n var ELEM_ITEM = '>*[carousel-item]>*';\r\n var ELEM_LEFT = 'layui-carousel-left';\r\n var ELEM_RIGHT = 'layui-carousel-right';\r\n var ELEM_PREV = 'layui-carousel-prev';\r\n var ELEM_NEXT = 'layui-carousel-next';\r\n var ELEM_ARROW = 'layui-carousel-arrow';\r\n var ELEM_IND = 'layui-carousel-ind';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, carousel.config, options);\r\n that.render();\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n width: '600px',\r\n height: '280px',\r\n full: false, // 是否全屏\r\n arrow: 'hover', // 切换箭头默认显示状态:hover/always/none\r\n indicator: 'inside', // 指示器位置:inside/outside/none\r\n autoplay: true, // 是否自动切换\r\n interval: 3000, // 自动切换的时间间隔,不能低于800ms\r\n anim: '', // 动画类型:default/updown/fade\r\n trigger: 'click', // 指示器的触发方式:click/hover\r\n index: 0 // 初始开始的索引\r\n };\r\n \r\n // 轮播渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n carousel.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n options.elem = $(options.elem);\r\n if(!options.elem[0]) return;\r\n that.elemItem = options.elem.find(ELEM_ITEM);\r\n \r\n if(options.index < 0) options.index = 0;\r\n if(options.index >= that.elemItem.length) options.index = that.elemItem.length - 1;\r\n if(options.interval < 800) options.interval = 800;\r\n\r\n // 是否全屏模式\r\n if(options.full){\r\n options.elem.css({\r\n position: 'fixed',\r\n width: '100%',\r\n height: '100%',\r\n zIndex: 9999\r\n });\r\n } else {\r\n options.elem.css({\r\n width: options.width,\r\n height: options.height\r\n });\r\n }\r\n \r\n options.elem.attr('lay-anim', options.anim);\r\n \r\n // 初始焦点状态\r\n that.elemItem.eq(options.index).addClass(THIS);\r\n\r\n // 指示器等动作\r\n if(that.elemItem.length <= 1) return;\r\n\r\n that.indicator();\r\n that.arrow();\r\n that.autoplay();\r\n that.events();\r\n };\r\n \r\n // 重置轮播\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n clearInterval(that.timer);\r\n that.config = $.extend({}, that.config, options);\r\n that.render();\r\n };\r\n \r\n // 获取上一个等待条目的索引\r\n Class.prototype.prevIndex = function(){\r\n var that = this;\r\n var options = that.config;\r\n var prevIndex = options.index - 1;\r\n\r\n if(prevIndex < 0){\r\n prevIndex = that.elemItem.length - 1;\r\n }\r\n\r\n return prevIndex;\r\n };\r\n \r\n // 获取下一个等待条目的索引\r\n Class.prototype.nextIndex = function(){\r\n var that = this;\r\n var options = that.config;\r\n var nextIndex = options.index + 1;\r\n\r\n if(nextIndex >= that.elemItem.length){\r\n nextIndex = 0;\r\n }\r\n\r\n return nextIndex;\r\n };\r\n \r\n // 索引递增\r\n Class.prototype.addIndex = function(num){\r\n var that = this;\r\n var options = that.config;\r\n \r\n num = num || 1;\r\n options.index = options.index + num;\r\n \r\n // index 不能超过轮播总数量\r\n if(options.index >= that.elemItem.length){\r\n options.index = 0;\r\n }\r\n };\r\n \r\n // 索引递减\r\n Class.prototype.subIndex = function(num){\r\n var that = this;\r\n var options = that.config;\r\n \r\n num = num || 1;\r\n options.index = options.index - num;\r\n \r\n // index 不能超过轮播总数量\r\n if(options.index < 0){\r\n options.index = that.elemItem.length - 1;\r\n }\r\n };\r\n \r\n // 自动轮播\r\n Class.prototype.autoplay = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n if(!options.autoplay) return;\r\n clearInterval(that.timer);\r\n \r\n that.timer = setInterval(function(){\r\n that.slide();\r\n }, options.interval);\r\n };\r\n \r\n // 箭头\r\n Class.prototype.arrow = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 模板\r\n var tplArrow = $([\r\n '',\r\n ''\r\n ].join(''));\r\n \r\n // 预设基础属性\r\n options.elem.attr('lay-arrow', options.arrow);\r\n \r\n // 避免重复插入\r\n if(options.elem.find('.'+ELEM_ARROW)[0]){\r\n options.elem.find('.'+ELEM_ARROW).remove();\r\n }\r\n options.elem.append(tplArrow);\r\n \r\n // 事件\r\n tplArrow.on('click', function(){\r\n var othis = $(this);\r\n var type = othis.attr('lay-type')\r\n that.slide(type);\r\n });\r\n };\r\n\r\n // 跳转到特定下标\r\n Class.prototype.goto = function(index){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(index > options.index){\r\n that.slide('add', index - options.index);\r\n } else if(index < options.index){\r\n that.slide('sub', options.index - index);\r\n }\r\n }\r\n \r\n // 指示器\r\n Class.prototype.indicator = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 模板\r\n var tplInd = that.elemInd = $(['
                      ',\r\n function(){\r\n var li = [];\r\n layui.each(that.elemItem, function(index){\r\n li.push('');\r\n });\r\n return li.join('');\r\n }(),\r\n '
                    '].join(''));\r\n \r\n // 预设基础属性\r\n options.elem.attr('lay-indicator', options.indicator);\r\n \r\n // 避免重复插入\r\n if(options.elem.find('.'+ELEM_IND)[0]){\r\n options.elem.find('.'+ELEM_IND).remove();\r\n }\r\n options.elem.append(tplInd);\r\n \r\n if(options.anim === 'updown'){\r\n tplInd.css('margin-top', -(tplInd.height()/2));\r\n }\r\n \r\n // 事件\r\n tplInd.find('li').on(options.trigger === 'hover' ? 'mouseover' : options.trigger, function(){\r\n that.goto($(this).index());\r\n });\r\n };\r\n \r\n // 滑动切换\r\n Class.prototype.slide = function(type, num){\r\n var that = this;\r\n var elemItem = that.elemItem;\r\n var options = that.config;\r\n var thisIndex = options.index;\r\n var filter = options.elem.attr('lay-filter');\r\n \r\n if(that.haveSlide) return;\r\n \r\n // 滑动方向\r\n if(type === 'sub'){\r\n that.subIndex(num);\r\n elemItem.eq(options.index).addClass(ELEM_PREV);\r\n setTimeout(function(){\r\n elemItem.eq(thisIndex).addClass(ELEM_RIGHT);\r\n elemItem.eq(options.index).addClass(ELEM_RIGHT);\r\n }, 50);\r\n } else { // 默认递增滑\r\n that.addIndex(num);\r\n elemItem.eq(options.index).addClass(ELEM_NEXT);\r\n setTimeout(function(){\r\n elemItem.eq(thisIndex).addClass(ELEM_LEFT);\r\n elemItem.eq(options.index).addClass(ELEM_LEFT);\r\n }, 50); \r\n }\r\n \r\n // 移除过渡类\r\n setTimeout(function(){\r\n elemItem.removeClass(THIS + ' ' + ELEM_PREV + ' ' + ELEM_NEXT + ' ' + ELEM_LEFT + ' ' + ELEM_RIGHT);\r\n elemItem.eq(options.index).addClass(THIS);\r\n that.haveSlide = false; // 解锁\r\n }, 350);\r\n \r\n // 指示器焦点\r\n that.elemInd.find('li').eq(options.index).addClass(THIS)\r\n .siblings().removeClass(THIS);\r\n \r\n that.haveSlide = true;\r\n \r\n // 回调返回的参数\r\n var params = {\r\n index: options.index,\r\n prevIndex: thisIndex,\r\n item: elemItem.eq(options.index)\r\n };\r\n \r\n typeof options.change === 'function' && options.change(params);\r\n layui.event.call(this, MOD_NAME, 'change('+ filter +')', params);\r\n };\r\n \r\n // 事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n if(options.elem.data('haveEvents')) return;\r\n \r\n // 移入移出容器\r\n options.elem.on('mouseenter', function(){\r\n if (that.config.autoplay === 'always') return;\r\n clearInterval(that.timer);\r\n }).on('mouseleave', function(){\r\n if (that.config.autoplay === 'always') return;\r\n that.autoplay();\r\n });\r\n \r\n options.elem.data('haveEvents', true);\r\n };\r\n \r\n // 核心入口\r\n carousel.render = function(options){\r\n return new Class(options);\r\n };\r\n \r\n exports(MOD_NAME, carousel);\r\n});\r\n\r\n \r\n","/**\r\n * rate 评分评星组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'],function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.jquery;\r\n var lay = layui.lay;\r\n\r\n // 外部接口\r\n var rate = {\r\n config: {},\r\n index: layui.rate ? (layui.rate.index + 10000) : 0,\r\n\r\n //设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n //事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n }\r\n\r\n // 操作当前实例\r\n var thisRate = function () {\r\n var that = this;\r\n var options = that.config;\r\n\r\n return {\r\n setvalue: function (value) {\r\n that.setvalue.call(that, value);\r\n },\r\n config: options\r\n }\r\n };\r\n\r\n //字符常量\r\n var MOD_NAME = 'rate';\r\n var ELEM_VIEW = 'layui-rate';\r\n var ICON_RATE = 'layui-icon-rate';\r\n var ICON_RATE_SOLID = 'layui-icon-rate-solid';\r\n var ICON_RATE_HALF = 'layui-icon-rate-half';\r\n var ICON_SOLID_HALF = 'layui-icon-rate-solid layui-icon-rate-half';\r\n var ICON_SOLID_RATE = 'layui-icon-rate-solid layui-icon-rate';\r\n var ICON_HALF_RATE = 'layui-icon-rate layui-icon-rate-half';\r\n\r\n //构造器\r\n var Class = function (options) {\r\n var that = this;\r\n that.index = ++rate.index;\r\n that.config = $.extend({}, that.config, rate.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n length: 5, //初始长度\r\n text: false, //是否显示评分等级\r\n readonly: false, //是否只读\r\n half: false, //是否可以半星\r\n value: 0, //星星选中个数\r\n theme: '' //主题颜色\r\n };\r\n\r\n //评分渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n rate.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n // 自定义主题\r\n var style = options.theme ? ('style=\"color: '+ options.theme + ';\"') : '';\r\n\r\n options.elem = $(options.elem);\r\n\r\n //最大值不能大于总长度\r\n if(options.value > options.length){\r\n options.value = options.length;\r\n }\r\n\r\n //如果没有选择半星的属性,却给了小数的数值,统一向上或向下取整\r\n if(parseInt(options.value) !== options.value){\r\n if(!options.half){\r\n options.value = (Math.ceil(options.value) - options.value) < 0.5 ? Math.ceil(options.value): Math.floor(options.value)\r\n }\r\n }\r\n\r\n //组件模板\r\n var temp = '
                      ';\r\n for(var i = 1;i <= options.length;i++){\r\n var item = '
                    • Math.floor(options.value)?ICON_RATE:ICON_RATE_SOLID)\r\n + '\" '+ style +'>
                    • ';\r\n\r\n if(options.half&&parseInt(options.value) !== options.value&&i == Math.ceil(options.value)){\r\n temp = temp + '
                    • ';\r\n }else{\r\n temp = temp +item;\r\n }\r\n }\r\n temp += '
                    ' + (options.text ? (''+ options.value + '星') : '') + '';\r\n\r\n //开始插入替代元素\r\n var othis = options.elem;\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n\r\n //生成替代元素\r\n hasRender[0] && hasRender.remove(); //如果已经渲染,则Rerender\r\n\r\n that.elemTemp = $(temp);\r\n\r\n options.span = that.elemTemp.next('span');\r\n\r\n options.setText && options.setText(options.value);\r\n\r\n othis.html(that.elemTemp);\r\n\r\n othis.addClass(\"layui-inline\");\r\n\r\n //如果不是只读,那么进行触控事件\r\n if(!options.readonly) that.action();\r\n\r\n };\r\n\r\n //评分重置\r\n Class.prototype.setvalue = function(value){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.value = value ;\r\n that.render();\r\n };\r\n\r\n //li触控事件\r\n Class.prototype.action = function(){\r\n var that = this;\r\n var options = that.config;\r\n var _ul = that.elemTemp;\r\n var wide = _ul.find(\"i\").width();\r\n\r\n _ul.children(\"li\").each(function(index){\r\n var ind = index + 1;\r\n var othis = $(this);\r\n\r\n //点击\r\n othis.on('click', function(e){\r\n //将当前点击li的索引值赋给value\r\n options.value = ind;\r\n if(options.half){\r\n //获取鼠标在li上的位置\r\n var x = e.pageX - $(this).offset().left;\r\n if(x <= wide / 2){\r\n options.value = options.value - 0.5;\r\n }\r\n }\r\n\r\n if(options.text) _ul.next(\"span\").text(options.value + \"星\");\r\n\r\n options.choose && options.choose(options.value);\r\n options.setText && options.setText(options.value);\r\n });\r\n\r\n //移入\r\n othis.on('mousemove', function(e){\r\n _ul.find(\"i\").each(function(){\r\n $(this).addClass(ICON_RATE).removeClass(ICON_SOLID_HALF)\r\n });\r\n _ul.find(\"i:lt(\" + ind + \")\").each(function(){\r\n $(this).addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE)\r\n });\r\n // 如果设置可选半星,那么判断鼠标相对li的位置\r\n if(options.half){\r\n var x = e.pageX - $(this).offset().left;\r\n if(x <= wide / 2){\r\n othis.children(\"i\").addClass(ICON_RATE_HALF).removeClass(ICON_RATE_SOLID)\r\n }\r\n }\r\n })\r\n\r\n //移出\r\n othis.on('mouseleave', function(){\r\n _ul.find(\"i\").each(function(){\r\n $(this).addClass(ICON_RATE).removeClass(ICON_SOLID_HALF)\r\n });\r\n _ul.find(\"i:lt(\" + Math.floor(options.value) + \")\").each(function(){\r\n $(this).addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE)\r\n });\r\n //如果设置可选半星,根据分数判断是否有半星\r\n if(options.half){\r\n if(parseInt(options.value) !== options.value){\r\n _ul.children(\"li:eq(\" + Math.floor(options.value) + \")\").children(\"i\").addClass(ICON_RATE_HALF).removeClass(ICON_SOLID_RATE)\r\n }\r\n }\r\n })\r\n\r\n })\r\n };\r\n\r\n //事件处理\r\n Class.prototype.events = function () {\r\n var that = this;\r\n //var options = that.config;\r\n };\r\n\r\n //核心入口\r\n rate.render = function(options){\r\n var inst = new Class(options);\r\n return thisRate.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, rate);\r\n})\r\n","/**\r\n * flow 流加载组件\r\n */\r\n\r\n\r\nlayui.define('jquery', function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$, Flow = function(options){}\r\n ,ELEM_MORE = 'layui-flow-more'\r\n ,ELEM_LOAD = '';\r\n\r\n //主方法\r\n Flow.prototype.load = function(options){\r\n var that = this, page = 0, lock, isOver, lazyimg, timer;\r\n options = options || {};\r\n\r\n var elem = $(options.elem); if(!elem[0]) return;\r\n var scrollElem = $(options.scrollElem || document); //滚动条所在元素\r\n var mb = options.mb || 50; //与底部的临界距离\r\n var isAuto = 'isAuto' in options ? options.isAuto : true; //是否自动滚动加载\r\n var end = options.end || '没有更多了'; //“末页”显示文案\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //加载更多\r\n var ELEM_TEXT = '加载更多'\r\n ,more = $('');\r\n\r\n if(!elem.find('.layui-flow-more')[0]){\r\n elem.append(more);\r\n }\r\n\r\n //加载下一个元素\r\n var next = function(html, over){\r\n html = $(html);\r\n more.before(html);\r\n over = over == 0 ? true : null;\r\n over ? more.html(end) : more.find('a').html(ELEM_TEXT);\r\n isOver = over;\r\n lock = null;\r\n lazyimg && lazyimg();\r\n };\r\n\r\n //触发请求\r\n var done = function(){\r\n lock = true;\r\n more.find('a').html(ELEM_LOAD);\r\n typeof options.done === 'function' && options.done(++page, next);\r\n };\r\n\r\n done();\r\n\r\n //不自动滚动加载\r\n more.find('a').on('click', function(){\r\n var othis = $(this);\r\n if(isOver) return;\r\n lock || done();\r\n });\r\n\r\n //如果允许图片懒加载\r\n if(options.isLazyimg){\r\n lazyimg = that.lazyimg({\r\n elem: options.elem + ' img'\r\n ,scrollElem: options.scrollElem\r\n });\r\n }\r\n\r\n if(!isAuto) return that;\r\n\r\n scrollElem.on('scroll', function(){\r\n var othis = $(this), top = othis.scrollTop();\r\n\r\n if(timer) clearTimeout(timer);\r\n if(isOver || !elem.width()) return; //如果已经结束,或者元素处于隐藏状态,则不执行滚动加载\r\n\r\n timer = setTimeout(function(){\r\n //计算滚动所在容器的可视高度\r\n var height = notDocument ? othis.height() : $(window).height();\r\n\r\n //计算滚动所在容器的实际高度\r\n var scrollHeight = notDocument\r\n ? othis.prop('scrollHeight')\r\n : document.documentElement.scrollHeight;\r\n\r\n //临界点\r\n if(scrollHeight - top - height <= mb){\r\n lock || done();\r\n }\r\n }, 100);\r\n });\r\n\r\n return that;\r\n };\r\n\r\n //图片懒加载\r\n Flow.prototype.lazyimg = function(options){\r\n var that = this, index = 0, haveScroll;\r\n options = options || {};\r\n\r\n var scrollElem = $(options.scrollElem || document); //滚动条所在元素\r\n var elem = options.elem || 'img';\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //显示图片\r\n var show = function(item, height){\r\n var start = scrollElem.scrollTop(), end = start + height;\r\n var elemTop = notDocument ? function(){\r\n return item.offset().top - scrollElem.offset().top + start;\r\n }() : item.offset().top;\r\n\r\n /* 始终只加载在当前屏范围内的图片 */\r\n if(elemTop >= start && elemTop <= end){\r\n if(item.attr('lay-src')){\r\n var src = item.attr('lay-src');\r\n layui.img(src, function(){\r\n var next = that.lazyimg.elem.eq(index);\r\n item.attr('src', src).removeAttr('lay-src');\r\n\r\n /* 当前图片加载就绪后,检测下一个图片是否在当前屏 */\r\n next[0] && render(next);\r\n index++;\r\n }, function(){\r\n var next = that.lazyimg.elem.eq(index);\r\n item.removeAttr('lay-src');\r\n });\r\n }\r\n }\r\n }, render = function(othis, scroll){\r\n\r\n //计算滚动所在容器的可视高度\r\n var height = notDocument ? (scroll||scrollElem).height() : $(window).height();\r\n var start = scrollElem.scrollTop(), end = start + height;\r\n\r\n that.lazyimg.elem = $(elem);\r\n\r\n if(othis){\r\n show(othis, height);\r\n } else {\r\n //计算未加载过的图片\r\n for(var i = 0; i < that.lazyimg.elem.length; i++){\r\n var item = that.lazyimg.elem.eq(i), elemTop = notDocument ? function(){\r\n return item.offset().top - scrollElem.offset().top + start;\r\n }() : item.offset().top;\r\n\r\n show(item, height);\r\n index = i;\r\n\r\n //如果图片的top坐标,超出了当前屏,则终止后续图片的遍历\r\n if(elemTop > end) break;\r\n }\r\n }\r\n };\r\n\r\n render();\r\n\r\n if(!haveScroll){\r\n var timer;\r\n scrollElem.on('scroll', function(){\r\n var othis = $(this);\r\n if(timer) clearTimeout(timer)\r\n timer = setTimeout(function(){\r\n render(null, othis);\r\n }, 50);\r\n });\r\n haveScroll = true;\r\n }\r\n return render;\r\n };\r\n\r\n //暴露接口\r\n exports('flow', new Flow());\r\n});\r\n","/**\r\n * code\r\n * Code 预览组件\r\n */\r\n\r\nlayui.define(['lay', 'util', 'element', 'form'], function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var util = layui.util;\r\n var element = layui.element;\r\n var form = layui.form;\r\n var layer = layui.layer;\r\n var hint = layui.hint();\r\n\r\n // 常量\r\n var CONST = {\r\n ELEM_VIEW: 'layui-code-view',\r\n ELEM_TAB: 'layui-tab',\r\n ELEM_HEADER: 'layui-code-header',\r\n ELEM_FULL: 'layui-code-full',\r\n ELEM_PREVIEW: 'layui-code-preview',\r\n ELEM_ITEM: 'layui-code-item',\r\n ELEM_SHOW: 'layui-show',\r\n ELEM_LINE: 'layui-code-line',\r\n ELEM_LINE_NUM: 'layui-code-line-number',\r\n ELEM_LN_MODE: 'layui-code-ln-mode',\r\n CDDE_DATA_CLASS: 'LayuiCodeDataClass',\r\n LINE_RAW_WIDTH: 45, // 行号初始宽度,需与 css 保持一致\r\n };\r\n\r\n // 默认参数项\r\n var config = {\r\n elem: '', // 元素选择器\r\n about: '', // 代码栏右上角信息\r\n ln: true, // 代码区域是否显示行号\r\n header: false, // 是否显示代码栏头部区域\r\n encode: true, // 是否对 code 进行编码(若开启预览,则强制开启)\r\n copy: true, // 是否开启代码区域复制功能图标\r\n // 默认文本\r\n text: {\r\n code: util.escape(''),\r\n preview: 'Preview',\r\n },\r\n wordWrap: true, // 是否自动换行\r\n lang: 'text', // 指定语言类型\r\n highlighter: false, // 是否开启语法高亮,'hljs','prism','shiki'\r\n langMarker: false, // 代码区域是否显示语言类型标记\r\n };\r\n\r\n // 初始索引\r\n var codeIndex = layui.code ? (layui.code.index + 10000) : 0;\r\n\r\n // 去除尾部空格\r\n var trimEnd = function(str){\r\n return String(str).replace(/\\s+$/, '');\r\n }\r\n // 保留首行缩进\r\n var trim = function(str){\r\n return trimEnd(str).replace(/^\\n|\\n$/, '');\r\n };\r\n\r\n // export api\r\n exports('code', function(options, mode){\r\n options = $.extend(true, {}, config, options);\r\n\r\n // 返回对象\r\n var ret = {\r\n config: options,\r\n reload: function(opts) { // 重载\r\n layui.code(this.updateOptions(opts));\r\n },\r\n updateOptions: function(opts) { // 更新属性(选项)\r\n opts = opts || {};\r\n delete opts.elem;\r\n return $.extend(true, options, opts);\r\n },\r\n reloadCode: function(opts) { // 仅重载 code\r\n layui.code(this.updateOptions(opts), 'reloadCode');\r\n }\r\n };\r\n\r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n // 是否正向渲染\r\n layui.each(options.obverse ? elem : elem.get().reverse(), function(){\r\n layui.code($.extend({}, options, {\r\n elem: this\r\n }), mode);\r\n });\r\n return ret;\r\n }\r\n\r\n // 目标元素是否存在\r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return ret;\r\n\r\n // 合并属性上的参数,并兼容旧版本属性写法 lay-*\r\n $.extend(true, options, lay.options(othis[0]), function(obj){\r\n var attrs = ['title', 'height', 'encode', 'skin', 'about'];\r\n layui.each(attrs, function(i, attr){\r\n var value = othis.attr('lay-'+ attr);\r\n if(typeof value === 'string'){\r\n obj[attr] = value;\r\n }\r\n })\r\n return obj;\r\n }({}));\r\n\r\n // codeRender 需要关闭编码\r\n // 未使用 codeRender 时若开启了预览,则强制开启编码\r\n options.encode = (options.encode || options.preview) && !options.codeRender;\r\n\r\n // 获得初始 code\r\n options.code = options.code || function(){\r\n var arr = [];\r\n var textarea = othis.children('textarea');\r\n\r\n // 若内容放置在 textarea 中\r\n textarea.each(function(){\r\n arr.push(trim(this.value));\r\n });\r\n\r\n // 内容直接放置在元素外层\r\n if(arr.length === 0){\r\n arr.push(trim(othis.html()));\r\n }\r\n\r\n return arr.join('');\r\n }();\r\n\r\n // 创建 code 行结构\r\n var createCode = function(html) {\r\n // codeRender\r\n if(typeof options.codeRender === 'function') {\r\n html = options.codeRender(String(html), options);\r\n }\r\n\r\n // code 行\r\n var lines = String(html).split(/\\r?\\n/g);\r\n\r\n // 包裹 code 行结构\r\n html = $.map(lines, function(line, num) {\r\n return [\r\n '
                    ',\r\n (\r\n options.ln ? [\r\n '
                    ',\r\n (util.digit(num + 1) + '.'),\r\n '
                    ',\r\n ].join('') : ''\r\n ),\r\n '
                    ',\r\n (line || ' '),\r\n '
                    ',\r\n '
                    '\r\n ].join('');\r\n });\r\n\r\n return {\r\n lines: lines,\r\n html: html\r\n };\r\n };\r\n\r\n // 原始 code\r\n var rawCode = options.code;\r\n\r\n // 最终 code\r\n var finalCode = function(code) {\r\n return typeof options.codeParse === 'function' ?\r\n options.codeParse(code, options) :\r\n code;\r\n };\r\n\r\n // 仅重载 code\r\n if (mode === 'reloadCode') {\r\n return othis.children('.layui-code-wrap').html(\r\n createCode(finalCode(rawCode)).html\r\n ), ret;\r\n }\r\n\r\n // 自增索引\r\n var index = layui.code.index = ++codeIndex;\r\n othis.attr('lay-code-index', index);\r\n\r\n // 初始化 className\r\n var hasDataClass = CONST.CDDE_DATA_CLASS in othis.data();\r\n if (hasDataClass) {\r\n othis.attr('class', othis.data(CONST.CDDE_DATA_CLASS) || '');\r\n }\r\n\r\n // 记录初始 className\r\n if (!hasDataClass) {\r\n othis.data(CONST.CDDE_DATA_CLASS, othis.attr('class'));\r\n }\r\n\r\n // 工具栏\r\n var tools = {\r\n copy: {\r\n className: 'file-b',\r\n title: ['复制代码'],\r\n event: function(obj){\r\n var code = util.unescape(finalCode(options.code));\r\n\r\n // 写入剪切板\r\n lay.clipboard.writeText({\r\n text: code,\r\n done: function() {\r\n layer.msg('已复制', {icon: 1});\r\n },\r\n error: function() {\r\n layer.msg('复制失败', {icon: 2});\r\n }\r\n });\r\n\r\n typeof options.onCopy === 'function' && options.onCopy(code);\r\n }\r\n }\r\n };\r\n\r\n // 移除包裹结构\r\n var unwrap = (function fn() {\r\n var elemViewHas = othis.parent('.' + CONST.ELEM_PREVIEW);\r\n var elemTabHas = elemViewHas.children('.'+ CONST.ELEM_TAB);\r\n var elemPreviewViewHas = elemViewHas.children('.' + CONST.ELEM_ITEM +'-preview');\r\n\r\n // 移除旧结构\r\n elemTabHas.remove(); // 移除 tab\r\n elemPreviewViewHas.remove(); // 移除预览区域\r\n if (elemViewHas[0]) othis.unwrap(); // 移除外层容器\r\n\r\n return fn;\r\n })();\r\n\r\n // 是否开启预览\r\n if(options.preview){\r\n var FILTER_VALUE = 'LAY-CODE-DF-'+ index;\r\n var layout = options.layout || ['code', 'preview'];\r\n var isIframePreview = options.preview === 'iframe';\r\n\r\n // 追加 Tab 组件\r\n var elemView = $('
                    ');\r\n var elemTabView = $('
                    ');\r\n var elemHeaderView = $('
                    ');\r\n var elemPreviewView = $('
                    ');\r\n var elemToolbar = $('
                    ');\r\n\r\n\r\n if(options.id) elemView.attr('id', options.id);\r\n elemView.addClass(options.className);\r\n elemTabView.attr('lay-filter', FILTER_VALUE);\r\n\r\n // 标签头\r\n layui.each(layout, function(i, v){\r\n var li = $('
                  • ');\r\n if(i === 0) li.addClass('layui-this');\r\n li.html(options.text[v]);\r\n elemHeaderView.append(li);\r\n });\r\n\r\n // 工具栏\r\n $.extend(tools, {\r\n 'full': {\r\n className: 'screen-full',\r\n title: ['最大化显示', '还原显示'],\r\n event: function(obj){\r\n var el = obj.elem;\r\n var elemView = el.closest('.'+ CONST.ELEM_PREVIEW);\r\n var classNameFull = 'layui-icon-'+ this.className;\r\n var classNameRestore = 'layui-icon-screen-restore';\r\n var title = this.title;\r\n var htmlElem = $('html,body');\r\n var ELEM_SCROLLBAR_HIDE = 'layui-scrollbar-hide';\r\n\r\n if(el.hasClass(classNameFull)){\r\n elemView.addClass(CONST.ELEM_FULL);\r\n el.removeClass(classNameFull).addClass(classNameRestore);\r\n el.attr('title', title[1]);\r\n htmlElem.addClass(ELEM_SCROLLBAR_HIDE);\r\n } else {\r\n elemView.removeClass(CONST.ELEM_FULL);\r\n el.removeClass(classNameRestore).addClass(classNameFull);\r\n el.attr('title', title[0]);\r\n htmlElem.removeClass(ELEM_SCROLLBAR_HIDE);\r\n }\r\n }\r\n },\r\n 'window': {\r\n className: 'release',\r\n title: ['在新窗口预览'],\r\n event: function(obj){\r\n util.openWin({\r\n content: finalCode(options.code)\r\n });\r\n }\r\n }\r\n });\r\n\r\n // copy\r\n if(options.copy){\r\n if(layui.type(options.tools) === 'array'){\r\n // 若 copy 未存在于 tools 中,则追加到最前\r\n if(options.tools.indexOf('copy') === -1){\r\n options.tools.unshift('copy');\r\n }\r\n } else {\r\n options.tools = ['copy'];\r\n }\r\n }\r\n\r\n // 工具栏事件\r\n elemToolbar.on('click', '>i', function(){\r\n var oi = $(this);\r\n var type = oi.data('type');\r\n var parameters = {\r\n elem: oi,\r\n type: type,\r\n options: options, // 当前属性选项\r\n rawCode: options.code, // 原始 code\r\n finalCode: util.unescape(finalCode(options.code)) // 最终 code\r\n };\r\n\r\n // 内部 tools event\r\n tools[type] && typeof tools[type].event === 'function' && tools[type].event(parameters);\r\n\r\n // 外部 tools event\r\n typeof options.toolsEvent === 'function' && options.toolsEvent(parameters);\r\n });\r\n\r\n // 增加工具栏\r\n if (options.addTools && options.tools) {\r\n options.tools = [].concat(options.tools, options.addTools);\r\n }\r\n\r\n // 渲染工具栏\r\n layui.each(options.tools, function(i, v){\r\n var viso = typeof v === 'object'; // 若为 object 值,则可自定义更多属性\r\n var tool = viso ? v : (\r\n tools[v] || {\r\n className: v,\r\n title: [v]\r\n }\r\n );\r\n\r\n var className = tool.className || tool.type;\r\n var title = tool.title || [''];\r\n var type = viso ? ( tool.type || className ) : v;\r\n\r\n if (!type) return;\r\n\r\n // 若非内置 tool,则合并到 tools 中\r\n if (!tools[type]) {\r\n var obj = {};\r\n obj[type] = tool;\r\n $.extend(tools, obj);\r\n }\r\n\r\n elemToolbar.append(\r\n ''\r\n );\r\n });\r\n\r\n othis.addClass(CONST.ELEM_ITEM).wrap(elemView); // 包裹外层容器\r\n elemTabView.append(elemHeaderView); // 追加标签头\r\n options.tools && elemTabView.append(elemToolbar); // 追加工具栏\r\n othis.before(elemTabView); // 追加标签结构\r\n\r\n // 追加预览\r\n if(isIframePreview){\r\n elemPreviewView.html('');\r\n }\r\n\r\n // 执行预览\r\n var runPreview = function(thisItemBody){\r\n var iframe = thisItemBody.children('iframe')[0];\r\n\r\n // 是否 iframe 方式预览\r\n if(isIframePreview && iframe){\r\n iframe.srcdoc = finalCode(options.code);\r\n } else {\r\n thisItemBody.html(options.code);\r\n }\r\n\r\n // 当前实例预览完毕后的回调\r\n setTimeout(function(){\r\n typeof options.done === 'function' && options.done({\r\n container: thisItemBody,\r\n options: options,\r\n render: function(){\r\n form.render(thisItemBody.find('.layui-form'));\r\n element.render();\r\n }\r\n });\r\n },3);\r\n };\r\n\r\n if(layout[0] === 'preview'){\r\n elemPreviewView.addClass(CONST.ELEM_SHOW);\r\n othis.before(elemPreviewView);\r\n runPreview(elemPreviewView);\r\n } else {\r\n othis.addClass(CONST.ELEM_SHOW).after(elemPreviewView);\r\n }\r\n\r\n // 内容项初始化样式\r\n options.previewStyle = [options.style, options.previewStyle].join('');\r\n elemPreviewView.attr('style', options.previewStyle);\r\n\r\n // tab change\r\n element.on('tab('+ FILTER_VALUE +')', function(data){\r\n var $this = $(this);\r\n var thisElem = $(data.elem).closest('.'+ CONST.ELEM_PREVIEW);\r\n var elemItemBody = thisElem.find('.'+ CONST.ELEM_ITEM);\r\n var thisItemBody = elemItemBody.eq(data.index);\r\n\r\n elemItemBody.removeClass(CONST.ELEM_SHOW);\r\n thisItemBody.addClass(CONST.ELEM_SHOW);\r\n\r\n if($this.attr('lay-id') === 'preview'){\r\n runPreview(thisItemBody);\r\n }\r\n\r\n setCodeLayout();\r\n });\r\n }\r\n\r\n // 创建 code 容器\r\n var codeElem = $(''); // 此处的闭合标签是为了兼容 IE8\r\n\r\n // 添加主容器 className\r\n othis.addClass(function(arr) {\r\n if (!options.wordWrap) arr.push('layui-code-nowrap');\r\n return arr.join(' ')\r\n }(['layui-code-view layui-border-box']));\r\n\r\n // code 主题风格\r\n var theme = options.theme || options.skin;\r\n if (theme) {\r\n othis.removeClass('layui-code-theme-dark layui-code-theme-light');\r\n othis.addClass('layui-code-theme-'+ theme);\r\n }\r\n\r\n // 添加高亮必要的 className\r\n if (options.highlighter) {\r\n othis.addClass([\r\n options.highlighter,\r\n 'language-' + options.lang,\r\n 'layui-code-hl'\r\n ].join(' '));\r\n }\r\n\r\n // 获取 code 行结构\r\n var createCodeRst = createCode(\r\n options.encode ? util.escape(finalCode(rawCode)) : rawCode // 是否编码\r\n );\r\n var lines = createCodeRst.lines;\r\n\r\n // 插入 code\r\n othis.html(codeElem.html(createCodeRst.html));\r\n\r\n // 插入行号边栏\r\n if (options.ln) {\r\n othis.append('
                    ');\r\n }\r\n\r\n // 兼容旧版本 height 属性\r\n if (options.height) {\r\n codeElem.css('max-height', options.height);\r\n }\r\n\r\n // code 区域样式\r\n options.codeStyle = [options.style, options.codeStyle].join('');\r\n if (options.codeStyle) {\r\n codeElem.attr('style', function(i, val) {\r\n return (val || '') + options.codeStyle;\r\n });\r\n }\r\n\r\n // 动态设置样式\r\n var cssRules = [\r\n {\r\n selector: '>.layui-code-wrap>.layui-code-line{}',\r\n setValue: function(item, value) {\r\n item.style['padding-left'] = value + 'px';\r\n }\r\n },\r\n {\r\n selector: '>.layui-code-wrap>.layui-code-line>.layui-code-line-number{}',\r\n setValue: function(item, value) {\r\n item.style.width = value + 'px';\r\n }\r\n },\r\n {\r\n selector: '>.layui-code-ln-side{}',\r\n setValue: function(item, value) {\r\n item.style.width = value + 'px';\r\n }\r\n }\r\n ];\r\n\r\n // 生成初始 style 元素\r\n var styleElem = lay.style({\r\n target: othis[0],\r\n id: 'DF-code-'+ index,\r\n text: $.map($.map(cssRules, function(val){\r\n return val.selector;\r\n }), function(val, i) {\r\n return ['.layui-code-view[lay-code-index=\"'+ index + '\"]', val].join(' ');\r\n }).join('')\r\n })\r\n\r\n // 动态设置 code 布局\r\n var setCodeLayout = (function fn() {\r\n if (options.ln) {\r\n var multiLine = Math.floor(lines.length / 100);\r\n var lineElem = codeElem.children('.'+ CONST.ELEM_LINE);\r\n var width = lineElem.last().children('.'+ CONST.ELEM_LINE_NUM).outerWidth();\r\n\r\n othis.addClass(CONST.ELEM_LN_MODE);\r\n\r\n // 若超出 100 行\r\n if (multiLine && width > CONST.LINE_RAW_WIDTH) {\r\n lay.getStyleRules(styleElem, function(item, i) {\r\n try {\r\n cssRules[i].setValue(item, width);\r\n } catch(e) { }\r\n });\r\n }\r\n }\r\n\r\n return fn;\r\n })();\r\n\r\n // 创建 code header\r\n if (options.header) {\r\n var headerElem = $('
                    ');\r\n headerElem.html(options.title || options.text.code);\r\n othis.prepend(headerElem);\r\n }\r\n\r\n // 创建 code 区域固定条\r\n var elemFixbar = $('
                    ');\r\n\r\n // 若开启复制,且未开启预览,则单独生成复制图标\r\n if(options.copy && !options.preview){\r\n var copyElem = $(['',\r\n '',\r\n ''].join(''));\r\n\r\n // 点击复制\r\n copyElem.on('click', function(){\r\n tools.copy.event();\r\n });\r\n\r\n elemFixbar.append(copyElem);\r\n }\r\n\r\n // 创建 language marker\r\n if (options.langMarker) {\r\n elemFixbar.append('' + options.lang + '');\r\n }\r\n\r\n // 创建 about 自定义内容\r\n if (options.about) {\r\n elemFixbar.append(options.about);\r\n }\r\n\r\n // 生成 code fixbar\r\n othis.append(elemFixbar);\r\n\r\n // code 渲染完毕后的回调\r\n if (!options.preview) {\r\n setTimeout(function(){\r\n typeof options.done === 'function' && options.done({});\r\n },3);\r\n }\r\n\r\n // 所有实例渲染完毕后的回调\r\n if(options.elem.length === index + 1){\r\n typeof options.allDone === 'function' && options.allDone();\r\n }\r\n\r\n return ret;\r\n });\r\n});\r\n\r\n// 若为源码版,则自动加载该组件依赖的 css 文件\r\nif(!layui['layui.all']){\r\n layui.addcss('modules/code.css?v=6', 'skincodecss');\r\n}\r\n"]} \ No newline at end of file +{"version":3,"sources":["layui.js","modules/layui.all.js","modules/lay.js","modules/laytpl.js","modules/laypage.js","modules/laydate.js","modules/jquery.js","modules/layer.js","modules/util.js","modules/dropdown.js","modules/slider.js","modules/colorpicker.js","modules/element.js","modules/upload.js","modules/form.js","modules/table.js","modules/treeTable.js","modules/tree.js","modules/transfer.js","modules/carousel.js","modules/rate.js","modules/flow.js","modules/code.js"],"names":["win","jsPath","doc","document","config","modules","status","timeout","event","Layui","this","v","GLOBAL","LAYUI_GLOBAL","getPath","currentScript","src","js","scripts","last","length","i","readyState","dir","substring","lastIndexOf","error","msg","type","console","isOpera","opera","toString","builtin","lay","layer","laydate","laypage","laytpl","form","upload","dropdown","transfer","tree","table","treeTable","element","rate","colorpicker","slider","carousel","flow","util","code","jquery","all","layui.all","EV_REMOVE","prototype","cache","define","deps","factory","use","setApp","app","exports","layui","callback","apps","from","node","url","that","head","getElementsByTagName","item","jQuery","fn","on","each","index","splice","$","onScriptLoad","e","readyRegExp","navigator","platform","test","currentTarget","srcElement","removeChild","poll","onCallback","setTimeout","push","slice","apply","host","match","location","base","replace","createElement","async","charset","version","Date","getTime","appendChild","attachEvent","indexOf","addEventListener","disuse","isArray","getStyle","name","style","currentStyle","getComputedStyle","getPropertyValue","link","href","cssname","id","STAUTS_NAME","debug","rel","media","getElementById","getLinkElem","parseInt","removeAttribute","getAttribute","setAttribute","addcss","firename","modName","img","Image","complete","onload","onerror","options","key","o","clone","extend","router","hash","data","path","search","split","obj","pathname","_index","substr","settings","storage","localStorage","JSON","parse","value","remove","stringify","sessionData","sessionStorage","device","agent","userAgent","toLowerCase","getVersion","label","exp","RegExp","result","os","ie","ActiveXObject","weixin","android","ios","mobile","hint","_typeof","operand","String","Object","call","_isArray","len","callFn","sort","arr","desc","notClone","o1","o2","v1","v2","isNaN","isNum","reverse","stope","thisEvent","stopPropagation","cancelBubble","onevent","events","params","filter","eventName","filterName","_","off","debounce","func","wait","context","args","arguments","clearTimeout","throttle","cooldown","window","selector","Class","elem","querySelectorAll","Array","searchElement","fromIndex","rst","val","constructor","ai","target","digit","num","str","Math","pow","elemName","attr","hasScrollbar","body","scrollHeight","innerHeight","documentElement","clientHeight","getStyleRules","rules","sheet","styleSheet","cssRules","styleText","text","cssText","innerHTML","styleElem","find","append","position","opts","scrollArea","winArea","margin","left","top","rect1","clickType","rect","clientX","clientY","right","bottom","getBoundingClientRect","elemWidth","offsetWidth","elemHeight","offsetHeight","align","allowBottomOut","SYSTEM_RELOAD","othis","attrName","attrValue","Function","ev","errorText","join","isTopElem","topElems","matched","clipboard","writeText","legacyCopy","opacity","select","execCommand","done","err","then","addStr","new_str","ii","removeStr","isObject","children","contains","child","addClass","className","removeClass","hasClass","has","css","parseValue","undefined","thisKey","thisValue","width","height","removeAttr","html","parentNode","detachEvent","removeEventListener","open","close","tool","escape","inner","source","template","tagExp","__","jss","jsse","tag","start","render","DISABLED","view","skipText","elemArr","plate","groups","Number","layout","count","curr","limits","limit","pages","ceil","prev","next","views","page","pager","first","halve","floor","end","max","theme","def","limitTemplet","refresh","skip","jump","isskip","childs","btn","input","nodeName","keyCode","load","even","isLayui","ready","MOD_ID","weekStart","laydate_dir","set","thisModule","inst","content","reload","MOD_NAME","THIS","LIMIT_YEAR","ELEM_STATIC","ELEM_LIST","ELEM_SELECTED","ELEM_HINT","ELEM_PREV","ELEM_NEXT","ELEM_CONFIRM","ELEM_TIME_TEXT","ELEM_TIME_BTN","ELEM_PREVIEW","ELEM_SHADE","newThat","getThis","init","dateType","formatArr","format","isLeapYear","year","range","isInitValue","min","trigger","show","showBottom","isPreview","btns","lang","calendar","mark","holidays","zIndex","change","autoConfirm","shade","cn","weeks","time","timeTips","startTime","endTime","dateTips","month","tools","confirm","clear","now","invalidDate","formatError","preview","en","isStatic","date","datetime","eventElem","fullPanel","rangeStr","rangeLinked","autoCalendarModel","state","startDate","endDate","auto","rangeElem","EXP_IF","EXP_SPLIT","EXP","EXP_IF_ONE","isInput","0-1-1","0-2-14","0-3-8","0-3-12","0-4-1","0-5-1","0-5-4","0-6-1","0-9-10","0-10-1","0-12-25","ymd","hms","day","tDate","newDate","getFullYear","getMonth","getDate","hours","minutes","seconds","thisDate","getHours","getMinutes","getSeconds","elemID","setValue","systemDate","themeStr","shortcutBtns","colorTheme","class","elemMain","elemHeader","elemCont","elemTable","divFooter","footer","divShortcut","shortcut","divHeader","headerChild","spanY","spanM","divContent","thead","theadTr","tr","insertRow","j","th","insertCell","insertBefore","ELEM_MAIN","title","shortcuts","btnSetting","dataset","timeBtn","dateTime","endState","listYM","checkDate","click","main","isPrimaryColor","thisElemDate","thisId","insertAdjacentHTML","changeEvent","renderAdditional","div","hinTimer","ms","getAsYM","Y","M","thisMaxDate","vals","arrDate","minMaxError","checkValid","getEndDate","initDate","startEnd","thisv","parseFloat","EYM","_i","_v","getDateTime","td","YMD","keys","idx","dayStr","timestamp","isOut","thisDateTime","startWeek","prevMaxDate","isAlone","tds","elemYM","firstDate","setFullYear","getDay","index_","st","list","setBtnStatus","timeParams","stampRange","yearNum","setTimeStatus","span","scroll","ul","haveList","isCN","startY","li","lay-ym","ol","childUL","ym","closeList","choose","scrollTop","haveSpan","tips","elemBtn","elemPreview","color","thisTime","param","panelIndex","isChange","YM","isSameDate","dateTimeTemp","active","addSubYear","isYear","isMonth","prevYear","prevMonth","nextMonth","nextYear","header","layYM","layType","tagName","toLocaleLowerCase","showEvent","eventHandler","unbind","run","closeStop","preventDefault","getInst","one","concat","amd","global","module","w","Error","noGlobal","deletedIds","class2type","hasOwn","hasOwnProperty","support","rtrim","rmsPrefix","rdashAlpha","fcamelCase","letter","toUpperCase","isArrayLike","isWindow","toArray","get","pushStack","elems","ret","merge","prevObject","map","eq","copyIsArray","copy","deep","isFunction","isPlainObject","expando","random","isReady","noop","isNumeric","realStringObj","isEmptyObject","nodeType","ownFirst","globalEval","trim","execScript","camelCase","string","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","guid","proxy","tmp","Symbol","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","escaped","escapedWhitespace","high","fromCharCode","unloadHandler","childNodes","els","seed","m","nid","nidselect","newSelector","newContext","ownerDocument","exec","getElementsByClassName","qsa","toSelector","testContext","qsaError","cacheLength","shift","markFunction","assert","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createPositionalPseudo","argument","matchIndexes","parent","defaultView","createComment","getById","getElementsByName","attrId","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","hasCompare","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","not","matcher","unmatched","innerText","elemLang","root","focus","activeElement","hasFocus","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","button","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","addCombinator","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","matcherIn","matcherOut","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","rparentsprev","charAt","parseHTML","guaranteedUnique","contents","sibling","targets","closest","l","pos","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","contentWindow","readyList","rnotwhite","detach","completed","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Deferred","tuples","promise","always","deferred","fail","fns","newDefer","tuple","returned","progress","notify","resolve","reject","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","remaining","updateFunc","values","notifyWith","resolveWith","readyWait","holdReady","hold","triggerHandler","doScroll","frameElement","doScrollCheck","inlineBlockNeedsLayout","container","zoom","deleteExpando","shrinkWrapBlocksVal","acceptData","noData","rbrace","rmultiDash","dataAttr","parseJSON","isEmptyDataObject","internalData","pvt","internalKey","isNode","toJSON","thisCache","internalRemoveData","cleanData","applet ","embed ","object ","hasData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","shrinkWrapBlocks","pnum","rcssNum","cssExpand","isHidden","el","adjustCSS","prop","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","access","chainable","emptyGet","raw","bulk","rcheckableType","rtagName","rscriptType","rleadingWhitespace","nodeNames","createSafeFragment","safeFrag","createDocumentFragment","fragment","leadingWhitespace","tbody","htmlSerialize","html5Clone","cloneNode","outerHTML","appendChecked","noCloneChecked","checkClone","noCloneEvent","wrapMap","option","legend","area","col","_default","getAll","found","setGlobalEval","refElements","optgroup","tfoot","colgroup","caption","rhtml","rtbody","fixDefaultChecked","defaultChecked","buildFragment","selection","ignored","wrap","safe","nodes","htmlPrefilter","createTextNode","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","types","origFn","t","handleObjIn","special","eventHandle","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","handleObj","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","rnamespace","noBubble","parentWindow","isPropagationStopped","isDefaultPrevented","fix","handlerQueue","delegateTarget","preDispatch","isImmediatePropagationStopped","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","metaKey","original","which","charCode","eventDoc","fromElement","pageX","scrollLeft","clientLeft","pageY","clientTop","relatedTarget","toElement","blur","beforeunload","returnValue","simulate","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","_submitBubble","propertyName","_justChanged","attaches","rinlinejQuery","rnoshimcache","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","fragmentDiv","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","oldData","curData","domManip","collection","hasScripts","iNoClone","_evalUrl","keepData","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","fixCloneNodeIssues","defaultSelected","forceAcceptData","prepend","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","HTML","BODY","actualDisplay","display","defaultDisplay","write","pixelPositionVal","pixelMarginRightVal","boxSizingReliableVal","reliableHiddenOffsetsVal","reliableMarginRightVal","reliableMarginLeftVal","rmargin","rnumnonpx","swap","old","computeStyleTests","divStyle","marginLeft","marginRight","getClientRects","borderCollapse","cssFloat","backgroundClip","clearCloneStyle","boxSizing","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","boxSizingReliable","pixelMarginRight","pixelPosition","reliableMarginRight","reliableMarginLeft","getStyles","curCSS","rposition","addGetHookIf","conditionFn","hookFn","opener","computed","maxWidth","minWidth","rs","rsLeft","runtimeStyle","pixelLeft","ralpha","ropacity","rdisplayswap","rnumsplit","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","showHide","hidden","setPositiveNumber","subtract","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","Tween","easing","cssHooks","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","cssProps","float","origName","isFinite","$1","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","propHooks","percent","eased","duration","step","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rrun","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","tick","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","rejectWith","timer","anim","*","tweener","oldfire","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","rspaces","valHooks","optionSet","nodeHook","boolHook","ruseDefault","getSetInput","rfocusable","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rclickable","rclass","removeProp","tabindex","for","getClass","classes","clazz","finalValue","curValue","toggleClass","stateVal","classNames","hover","fnOver","fnOut","nonce","rquery","rvalidtokens","rhash","requireNonComma","depth","comma","parseXML","DOMParser","parseFromString","loadXML","rts","rheaders","rnoContent","rprotocol","rurl","transports","allTypes","ajaxLocation","ajaxLocParts","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxConvert","s","response","isSuccess","conv2","current","conv","converters","responseFields","dataFilter","filterHidden","lastModified","etag","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","abort","statusText","finalText","success","method","crossDomain","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","firstDataType","ct","finalDataType","modified","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","buildParams","serialize","serializeArray","xhr","createActiveXHR","documentMode","createStandardXHR","xhrId","xhrCallbacks","xhrSupported","XMLHttpRequest","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","scriptCharset","oldCallbacks","rjsonp","_load","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","getWindow","animated","offset","setOffset","curCSSTop","curTop","curOffset","curCSSLeft","curElem","curLeft","curPosition","using","box","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","delegate","undelegate","size","andSelf","layer_dir","removeFocus","resize","minStackIndex","minStackArr","STATUS_NAME","alert","yes","cancel","btn2","rskin","skin","doms","closeBtn","icon","follow","fixed","setings","creat","pt","0","1","2","3","4","5","6","slideLeft","slideRight","SHADE","MOVE","move","isOutAnim","minStack","moveType","scrollbar","vessel","conType","times","titype","ismax","maxmin","titleHTML","face","animClass","additFaceClass","btnAlign","layero","elemShade","restore","hideOnClose","closeAll","tipsMore","moveElem","shadeo","setScrollbar","background-color","innerWidth","outerWidth","titHeight","outerHeight","btnHeight","setHeight","maxHeight","offsetTop","offsetLeft","layArea","goal","tipsG","guide","autoLeft","tipLeft","where","tipTop","padding-right","_DOC","DATA_NAME","resizeElem","dict","eventMoveElem","eventResizeElem","docEvent","setRig","setBot","X","stX","stY","moveOut","resizing","moveEnd","openLayer","IE6","shadeClose","full","reselect","sthis","setTop","record","restScrollbar","removeProperty","getChildFrame","getFrameIndex","iframeAuto","heg","iframeSrc","contElem","elemMin","hasMinLeft","maxminStatus","minLeft","edgeIndex","isfix","closeAnim","WRAP","domsElem","closeLast","prompt","placeholder","formType","maxlength","tab","photos","loop","toolbar","imgIndex","pushData","alt","pid","thumb","imgprev","tabimg","imgnext","errorMsg","keyup","isNumber","getTransform","transforms","rotate","scaleX","imgElem","transform","ratio","delta","wheelDelta","detail","zoomElem","loadi","loadImage","winarea","imgarea","wh","_$","isMobile","_win","propSuffix","deliver","fixbar","elemTopBar","setTopBar","ELEM","$doc","$target","bars","default","$scroll","bar1","bar2","elemBar","lay-type","bgcolor","countdown","clock","countTime","d","h","setTime","timeAgo","onlyDate","stamp","toDateString","years","days","milliseconds","meridiem","getMilliseconds","customMeridiem","hm","yy","yyyy","MM","dd","H","HH","hh","A","mm","ss","SSS","unescape","openWin","specs","toVisibleArea","scrollElem","SCROLL_NAME","OFFSET_NAME","scrollValue","scrollOffset","thisOffset","thisElem","vertical","attrSelector","CALLBACK","_WIN","ELEM_LI","clickOrMousedown","MOD_INDEX","customName","reloadData","STR_ELEM","STR_ITEM_UP","STR_ITEM_DOWN","STR_MENU_TITLE","STR_ITEM_GROUP","STR_ITEM_PARENT","STR_ITEM_CHECKED","STR_ITEM_CHECKED2","STR_MENU_PANEL","STR_MENU_PANEL_L","STR_ELEM_SHADE","STR_GROUP_TITLE","isAllowSpread","isSpreadItem","accordion","rerender","elemView","elemBody","getDefaultView","elemUl","eachItemView","isChild","templet","group","-","viewLi","viewText","elemPanel","TPL_MAIN","delayRemove","prevElem","isClickAllScope","clickScope","elemGroup","spread","elemPrev","prevElemCallback","isAccordion","contentElem","needSpread","groupSibs","ELEM_LI_PAR","dataParams","SLIDER_BAR","SLIDER_WRAP","SLIDER_WRAP_BTN","SLIDER_TIPS","SLIDER_INPUT_TXT","ELEM_HOVER","showstep","minValue","maxValue","scaleFir","scaleSec","hasRender","elemTemp","number","elemInput","slide","sliderWidth","sliderWrap","tipsTxt","setTips","margin-bottom","sliderAct","sliderTxt","inputValue","offsetValue","round","arrValue","firLeft","valueTo","secLeft","wrapWidth","abs","selfValue","oldLeft","elemMove","up","upCall","oldleft","oldx","reaLeft","inputScale","getInputValue","realValue","ICON_PICKER_DOWN","ICON_PICKER_CLOSE","PICKER_TRIG_SPAN","PICKER_TRIG_I","PICKER_SIDE_SLIDER","PICKER_BASIS","PICKER_ALPHA_BG","PICKER_ALPHA_SLIDER","PICKER_BASIS_CUR","PICKER_INPUT","RGBToHSB","rgb","hsb","r","g","HSBToRGB","t1","t3","t2","HSBToHEX","hex","nr","RGBSTo","rgbs","re","$win","alpha","predefine","colors","elemColorBox","bgstr","background","renderPicker","elemPicker","removePicker","thisElemInd","thisColor","pickerEvents","bindElem","elemPickerInput","backgroundColor","side","basis","alphacolor","alphaslider","_h","_b","_s","_a","pre","x","y","z","createMoveElem","oldtop","oldy","maxh","maxw","sidetop","elemColorBoxSpan","colorValue","attrEvent","SHOW","TITLE","Element","NAV_ELEM","tabAdd","layAttr","tabElem","titElem","barElem","tabChange","tabAuto","tabDelete","layid","liElem","tabClick","dom","headerElem","NAV_ITEM","NAV_BAR","NAV_TREE","NAV_CHILD","NAV_MORE","NAV_ANIM","bodyElem","elemA","isJump","unselect","MORE","BAR","CLOSE","STOPE","isSpread","hideTabMore","tsbTitle","clickThis","NAV_ITEMED","needExpand","parentSibs","collapse","isNone","elemFilter","items","nav","timerMore","timeEnd","NAV_TITLE","bar","itemElem","thisA","breadcrumb","ATTE_SPR","separator","aNode","elemTitle","files","ELEM_FILE","ELEM_FORM","ELEM_IFRAME","ELEM_CHOOSE","UPLOADING","accept","exts","bindAction","force","field","acceptMime","drag","multiple","cross-domain","data-format-error","check-error","limit-number","limit-size","elemFile","isFile","initIE","elemForm","FileReader","chooseFiles","reader","readAsDataURL","limitSize","getFiles","ajaxSend","successful","failed","allDone","fileLength","total","request","sets","formData","FormData","resetFileState","unified","res","lengthComputable","loaded","iframeSend","iframeBody","thisFile","pushFile","resetFile","filename","newFile","File","typeName","images","video","audio","toFixed","setChooseFile","setChooseText","dataTransfer","HIDE","Form","verify","required","phone","email","identity","autocomplete","getFormElem","itemForm","getValue","nameIndex","fieldElem","init_name","inputs","handleInputNumber","eventType","rawValue","precision","noAction","isInit","decimals","controlBtn","increment","decrement","affix","CLASS_WRAP","CLASS_SUFFIX","CLASS_AFFIX","showAffix","renderAffix","affixOptions","elemAffix","elemIcon","hasElemAffix","hasElemSuffix","inputFilter","eye","SHOW_NAME","isShow","thatInput","TIPS","NONE","initValue","selects","reElem","isSearch","nearElem","laySearch","showDown","hideDown","followScroll","notOption","dl","dds","dts","dlHeight","none","posTop","thisDd","ddHeight","setThisDd","prevNext","thisElem1","showDd","firstIndex","cacheNearElem","nearDd","origin","thisDds","optionsFirst","switch","SUBTRA","checks","RE_CLASS","indeterminate","ICON","radios","ANIM","forms","sameRadio","renderItem","itemType","validate","intercept","DANGER","vers","verType","thisVer","rule","verst","isForm2Elem","layFilter","verifyElem","$dom","checkName","indexName","numbersName","disabledName","thisTable","setColsWidth","getThisTable","getThisTableConfig","parseTempData","item3","tplData","exportTemplet","LAY_COL","HIDE_V","ELEM_VIEW","ELEM_HEADER","ELEM_BODY","ELEM_FIXR","ELEM_PAGE_VIEW","ELEM_SORT","ELEM_CHECKED","ELEM_EDIT","ELEM_GROUP","ELEM_COL_SPECIAL","ELEM_TOOL_PANEL","ELEM_EXPAND","DATA_MOVE_NAME","TPL_HEADER","TPL_BODY","eachChildCols","loading","cellMinWidth","cellMaxWidth","MAX_VALUE","editTrigger","defaultToolbar","defaultContextmenu","autoSort","cols","pageName","limitName","statusName","msgName","dataName","totalRowName","countName","pullData","setInit","fullHeightGap","parentDiv","parentHeightGap","lay-filter","lay-id","renderStyle","layTool","layBox","layHeader","layMain","layBody","layFixed","layFixLeft","layFixRight","layTotal","layPage","renderToolbar","renderPagebar","fullSize","initOpts","space","unresize","numbers","getWidth","clientWidth","initChildCols","i1","item1","i2","item2","indexChild","childIndex","colspan","rowspan","colGroup","i22","item22","HAS_PARENT","parentKey","lineStyle","trClassName","cellMaxHeight","leftDefaultTemp","elemToolTemp","toolbarHtml","layEvent","print","iconElem","thisItem","pagebarHtml","layPagebar","pagebar","setParentCol","parentTh","parentColspan","arrParentKey","getThisCol","colspan2","nextParentKey","setColsPatch","setGroupWidth","getEndTh","colNums","autoColNums","autoWidth","countWidth","cntrWidth","getAutoWidth","eachCols","getScrollWidth","back","patchNums","i3","headerWidth","scrollPatch","haveInit","HAS_SET_COLS_PATCH","errorView","elemNone","layNone","syncCheckAll","renderForm","startLimit","initSort","reloadType","renderData","totalRow","parseData","newData","getTrHtml","trsObj","trs","trs_fixed","trs_fixed_r","tds_fixed","tds_fixed_r","LAY_KEY","edit","trAttr","totalRowData","sortKey","pull","scrollPos","tipsIndex","renderTotal","totalNums","dataTotal","TOTAL_NUMS","totalRowDecimals","thisTotalNum","totalRowText","getContent","TOTAL_ROW","patchElem","getColElem","checkAllElem","checkStatus","isAll","setRowActive","setRowChecked","thisData","existChecked","getChecked","checkedElem","checkedSameElem","fixRElem","_field","elemSort","fromEvent","layInit","selectorText","headerMain","thIndex","thElem","bodyHeight","layMainTable","scrollWidth","outWidth","addPatch","fixHeight","ELEM_CELL","_BODY","commonMember","lis","openPanel","panel","fieldTitle","exportFile","printWin","edg","onafterprint","oLeft","pLeft","allowResize","ruleWidth","thatTable","setWidth","nowType","clearCacheKey","dataCache","del","update","fields","cell","thisTd","setRowEvent","getCol","UNROW","renderGridEdit","elemCell","editType","ELEM_GRID_DOWN","oldValue","reedit","showGridExpandIcon","gridExpand","expandedMode","ELEM_CELL_C","elemCellClose","cellExpandedMode","expandedWidth","cellExpandedWidth","$this","toolFn","errorTips","tdIndex","attrData","tableData","trElem","itemData","row","tableIns","CHILD_COLS","PARENT_COL_INDEX","arrs","eachArrs","nums","invalidNum","getData","dataTitle","dataMain","fieldsIsHide","textType","csv","xls","alink","reduce","acc","ignoreExport","download","getOptions","hideCol","thisTreeTable","ELEM_FIXL","TABLE_TREE","LAY_DATA_INDEX","LAY_DATA_INDEX_HISTORY","LAY_PARENT_INDEX","LAY_CHECKBOX_HALF","LAY_EXPAND","LAY_HAS_EXPANDED","LAY_ASYNC_STATUS","LAY_CASCADE","updateCache","childrenKey","tableCache","itemDataIndex","updateOptions","thatOptionsTemp","treeOptions","idKey","hasNumberCol","hasChecboxCol","hasRadioCol","mod","parseDataThat","retData","isSimpleData","enable","flatToTree","updateStatus","initData","isRenderData","tableView","isExpandAll","layTableAllChooseElem","renderTreeTable","cascade","isParent","indent","flexIconClose","flexIconOpen","showIcon","iconClose","iconOpen","iconLeaf","showFlexIconIfNotParent","dblClickExpand","expandAllDefault","rootPid","autoParam","beforeExpand","onExpand","pIdKey","idTemp","pidTemp","tableId","flatArr","k","treeToFlat","parentId","parentIndex","flat","dataIndex","dataNew","getTreeNode","getParentNode","getNodeByIndex","treeNode","treeNodeData","getNodeDataByIndex","updateNode","removeNode","expandNode","setChecked","getNodeById","tableDataFlat","newValue","dataRet","indexArr","getTableData","isParentKey","debounceFn","expandFlag","sonSign","callbackFlag","tableViewElem","treeTableThat","trData","isToggle","trExpand","retValue","trExpanded","trsElem","flexIconElem","trDataId","array","asyncSuccessFn","asyncContentType","asyncDataType","asyncJsonpCallback","asyncHeaders","asyncParseData","asyncResponse","str2","str2Obj","dataLevelNew","asyncSetting","asyncUrl","asyncAutoParam","itemArr","asyncType","childItem","data-index","lay-data-index","data-level","childNodesFlat","formatNumber","inherit","expandAll","isAllAsyncDone","isAllExpanded","trAll","trAllObj","dataItem","dataLevel","level","treeOptionsView","dataExpand","nameKey","htmlTemp","itemCell","trIndex","trDefaultExpand","trMain","trFixedL","trFixedR","statusObj","notCascade","dataUpdated","updateObjParams","tableThat","updateFn","checkNode","newNode","trLevel","newNodeTemp","trNew","delNodesFlat","delNode","nodeP","updateCheckStatus","i4","item4","addNodes","newNodes","childKey","childrenNodes","dataAfter","childrenNodesFlat","pageOptions","newNodesHtml","newNodesHtmlObj","trIndexPrev","newNodeIndex","newNodeItem","tableViewElemMAIN","tableViewElemFIXL","tableViewElemFIXR","trIndexNext","scrollIntoViewIfNeeded","includeHalfCheck","checkedData","updateData","setRowCheckedClass","dataP","trsP","isIndeterminate","updateParentCheckStatus","indexP","itemP","checkboxElem","checkedNum","inputElem","isRadio","triggerEvent","trDataP","radioElem","collectNeedExpandNodeIndex","needExpandIndex","nodeData","checkAllNodes","reloadAsyncNode","dataId","getNodesByFilter","isSingle","nodesResult","ELEM_SET","ICON_CLICK","ICON_ADD","ICON_SUB","ELEM_ENTRY","ELEM_TEXT","ELEM_PACK","ELEM_SPREAD","ELEM_LINE_SHORT","ELEM_SHOW","ELEM_EXTEND","showCheckbox","showLine","onlyIconControl","defaultNodeName","checkids","editIcon","hasChild","packDiv","entryDiv","checkClick","operate","entry","elemCheckbox","elemText","touchOpen","packCont","iconClick","updateFieldValue","sibls","setCheckbox","setParentsChecked","thisNodeElem","parentNodeElem","parentCheckbox","parentPack","oncheck","getVal","returnObj","textNew","elemDel","pare","siblingTree","checkState","parentTree","prevDiv","pack","onsearch","checkId","checkData","eachNodes","index2","cloneItem","checkedId","reInput","ELEM_BOX","ELEM_SEARCH","ELEM_DATA","TPL_BOX","checkAllName","showSearch","searchNone","layData","layBtn","listElem","renderCheckBtn","thisDataElem","allElemCheckbox","listElemCheckbox","haveChecked","isHide","stopNone","noneView","createNoneElem","selectedData","thisElemCheckbox","thisBoxElem","siblingInput","thisList","onchange","elemThis","thisListElem","isMatch","ELEM_LEFT","ELEM_RIGHT","ELEM_ARROW","ELEM_IND","arrow","indicator","autoplay","elemItem","prevIndex","nextIndex","addIndex","subIndex","tplArrow","goto","tplInd","elemInd","thisIndex","haveSlide","ICON_RATE","ICON_RATE_SOLID","ICON_RATE_HALF","ICON_SOLID_HALF","ICON_HALF_RATE","readonly","half","setText","action","setvalue","_ul","wide","ind","Flow","isOver","lazyimg","mb","isAuto","notDocument","more","over","isLazyimg","elemTop","CONST","ELEM_TAB","ELEM_FULL","ELEM_ITEM","ELEM_LINE","ELEM_LINE_NUM","ELEM_LN_MODE","CDDE_DATA_CLASS","LINE_RAW_WIDTH","about","ln","encode","wordWrap","highlighter","langMarker","codeIndex","mode","rawCode","finalCode","isIframePreview","elemHeaderView","elemToolbar","runPreview","codeElem","createCodeRst","lines","setCodeLayout","elemFixbar","copyElem","reloadCode","obverse","codeRender","createCode","line","codeParse","hasDataClass","onCopy","elemViewHas","elemTabHas","elemPreviewViewHas","FILTER_VALUE","elemTabView","elemPreviewView","classNameFull","classNameRestore","htmlElem","ELEM_SCROLLBAR_HIDE","oi","parameters","toolsEvent","addTools","viso","thisItemBody","srcdoc","previewStyle","elemItemBody","codeStyle","multiLine"],"mappings":"oCAMC,CAAC,SAASA,GACT,aAEA,IAiBMC,EAjBFC,EAAMF,EAAIG,SACVC,EAAS,CACXC,QAAS,GACTC,OAAQ,GACRC,QAAS,GACTC,MAAO,EACT,EAEIC,EAAQ,WACVC,KAAKC,EAAI,cACX,EAGIC,EAASZ,EAAIa,cAAgB,GAG7BC,GACEb,EAASC,EAAIa,cAAgBb,EAAIa,cAAcC,IAAM,WAIvD,IAHA,IAEIA,EAFAC,EAAKf,EAAIgB,QACTC,EAAOF,EAAGG,OAAS,EAEfC,EAAIF,EAAU,EAAJE,EAAOA,CAAC,GACxB,GAAwB,gBAArBJ,EAAGI,GAAGC,WAA6B,CACpCN,EAAMC,EAAGI,GAAGL,IACZ,KACF,CAEF,OAAOA,GAAOC,EAAGE,GAAMH,GACzB,EAAE,EAEKZ,EAAOmB,IAAMX,EAAOW,KAAOtB,EAAOuB,UAAU,EAAGvB,EAAOwB,YAAY,GAAG,EAAI,CAAC,GAI/EC,EAAQ,SAASC,EAAKC,GACxBA,EAAOA,GAAQ,MACf5B,EAAI6B,SAAWA,QAAQD,IAASC,QAAQD,GAAM,qBAAuBD,CAAG,CAC1E,EAEIG,EAA2B,aAAjB,OAAOC,OAA8C,mBAArBA,MAAMC,SAAS,EAGzD3B,EAAUD,EAAO6B,QAAU,CAC7BC,IAAK,MACLC,MAAO,QACPC,QAAS,UACTC,QAAS,UACTC,OAAQ,SACRC,KAAM,OACNC,OAAQ,SACRC,SAAU,WACVC,SAAU,WACVC,KAAM,OACNC,MAAO,QACPC,UAAW,YACXC,QAAS,UACTC,KAAM,OACNC,YAAa,cACbC,OAAQ,SACRC,SAAU,WACVC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,OAAQ,SAERC,IAAK,MACLC,YAAa,WACf,EAooBIC,GAjoBJhD,EAAMiD,UAAUC,MAAQvD,EAGxBK,EAAMiD,UAAUE,OAAS,SAASC,EAAMC,GAuBtC,MArB2B,YAAhB,OAAOD,IAgBhBC,EAAUD,EACVA,EAAO,IAlBEnD,KAqBNqD,IAAIF,EAnBM,WACb,IAAIG,EAAS,SAASC,EAAKC,GACzBC,MAAMF,GAAOC,EACb9D,EAAOE,OAAO2D,GAAO,CAAA,CACvB,EAOA,MANmB,YAAnB,OAAOH,GAA0BA,EAAQ,SAASG,EAAKC,GACrDF,EAAOC,EAAKC,CAAO,EACnB9D,EAAOgE,SAASH,GAAO,WACrBH,EAAQE,CAAM,CAChB,CACF,CAAC,EACMtD,IACT,EAOyB,KAAM,QAAQ,EArB5BA,IAuBb,EAGAD,EAAMiD,UAAUK,IAAM,SAASM,EAAMD,EAAUF,EAASI,GACtD,IA0FMC,EATNC,EAjFIC,EAAO/D,KACPa,EAAMnB,EAAOmB,IAAMnB,EAAOmB,KAAmBT,EAC7C4D,EAAOxE,EAAIyE,qBAAqB,MAAM,EAAE,GAwBxCC,GAtBJP,EACqB,UAAhB,OAAOA,EACD,CAACA,GAGc,YAAhB,OAAOA,GACbD,EAAWC,EACJ,CAAC,QAEHA,EAINrE,EAAI6E,QAAUA,OAAOC,GAAGC,KACzBN,EAAKO,KAAKX,EAAM,SAASY,EAAOL,GAClB,WAATA,GACDP,EAAKa,OAAOD,EAAO,CAAC,CAExB,CAAC,EACDd,MAAMb,OAASa,MAAMgB,EAAIN,QAGhBR,EAAK,IACZ9D,EAAU,EAQd,SAAS6E,EAAaC,EAAGb,GACvB,IAAIc,EAAqC,kBAAvBC,UAAUC,SAA+B,aAAe,sBAC3D,SAAXH,EAAEzD,MAAmB,CAAC0D,EAAYG,MAAMJ,EAAEK,eAAiBL,EAAEM,YAAYrE,UAAW,IACtFlB,EAAOC,QAAQuE,GAAQJ,EACvBE,EAAKkB,YAAYrB,CAAI,EACpB,SAASsB,IACR,MAAG,EAAEtF,EAA2B,IAAjBH,EAAOG,QAAiB,EAC9BmB,EAAMkD,EAAO,yBAA0B,OAAO,EAEvDxE,KAAAA,EAAOE,OAAOsE,GAAQkB,EAAW,EAAIC,WAAWF,EAAM,CAAC,EACzD,EAAG,EAEP,CAGA,SAASC,IACP5B,EAAQ8B,KAAK7B,MAAMS,EAAK,EACV,EAAdP,EAAKjD,OACHqD,EAAKV,IAAIM,EAAK4B,MAAM,CAAC,EAAG7B,EAAUF,EAASI,CAAI,EACzB,YAApB,OAAOF,IAEND,MAAMb,QAAkC,YAAxB,OAAOa,MAAMb,QAAkC,WAATgB,EAChDH,MAAMb,OAAO,WAClBc,EAAS8B,MAAM/B,MAAOD,CAAO,CAC/B,CAAC,EAEHE,EAAS8B,MAAM/B,MAAOD,CAAO,EAEjC,CA8DA,OAhGAA,EAAUA,GAAW,GAGrB9D,EAAO+F,KAAO/F,EAAO+F,OAAS5E,EAAI6E,MAAM,kBAAkB,GAAG,CAAC,KAAMC,SAASF,KAAM,MAAM,GAkCrE,IAAhB9B,EAAKjD,QAAiB+C,MAAM,cAAgB9D,EAAQuE,GAC/CkB,EAAW,GAcpBtB,GAAMA,GAHMnE,EAAQuE,GAASrD,EAAM,WAC9B,CAAA,UAAUkE,KAAKhB,EAAKpE,QAAQuE,EAAK,GAAUxE,EAAOkG,MAAQ,KAC1D7B,EAAKpE,QAAQuE,IAASA,GAAQ,OACzB2B,QAAQ,UAAW,EAAE,EAG5B,CAACnG,EAAOC,QAAQuE,IAAST,MAAMS,KAChCxE,EAAOC,QAAQuE,GAAQJ,GAIrBpE,EAAOC,QAAQuE,GA0BhB,SAASiB,IACR,MAAG,EAAEtF,EAA2B,IAAjBH,EAAOG,QAAiB,EAC9BmB,EAAMkD,EAAO,yBAA0B,OAAO,EAEvD,KAAiC,UAAhC,OAAOxE,EAAOC,QAAQuE,IAAsBxE,EAAOE,OAAOsE,GACzDkB,EAAW,EACXC,WAAWF,EAAM,CAAC,EACtB,EAAG,IAhCCtB,EAAOrE,EAAIsG,cAAc,QAAQ,GAEhCC,SAAQ,CAAA,EACblC,EAAKmC,QAAU,QACfnC,EAAKvD,IAAMwD,IACLmC,EAA6B,CAAA,IAAnBvG,EAAOuG,QAClBvG,EAAOO,IAAK,IAAKiG,MAAQC,QAAQ,EACjCzG,EAAOuG,SAAS,IACD,MAAQA,EAAW,IAGvCjC,EAAKoC,YAAYvC,CAAI,EAElBA,CAAAA,EAAKwC,aAAiBxC,EAAKwC,YAAY/E,UAAYuC,EAAKwC,YAAY/E,SAAS,EAAEgF,QAAQ,cAAc,EAAI,GAAOlF,EAKjHyC,EAAK0C,iBAAiB,OAAQ,SAAS5B,GACrCD,EAAaC,EAAGb,CAAG,CACrB,EAAG,CAAA,CAAK,EANRD,EAAKwC,YAAY,qBAAsB,SAAS1B,GAC9CD,EAAaC,EAAGb,CAAG,CACrB,CAAC,EAOHpE,EAAOC,QAAQuE,GAAQJ,IAYlBC,CACT,EAGAhE,EAAMiD,UAAUwD,OAAS,SAAS7C,GAChC,IAAII,EAAO/D,KAYX,OAXA2D,EAAOI,EAAK0C,QAAQ9C,CAAI,EAAIA,EAAO,CAACA,GACpCI,EAAKO,KAAKX,EAAM,SAAUY,EAAOL,GAC1BxE,EAAOE,OAAOsE,GAGnB,OAAOH,EAAKG,GACZ,OAAOvE,EAAQuE,GACf,OAAOH,EAAKpE,QAAQuE,GACpB,OAAOxE,EAAOE,OAAOsE,GACrB,OAAOxE,EAAOC,QAAQuE,EACxB,CAAC,EACMH,CACT,EAGAhE,EAAMiD,UAAU0D,SAAW,SAAS7C,EAAM8C,GACpCC,EAAQ/C,EAAKgD,cAAmCvH,EAAIwH,iBAAiBjD,EAAM,IAAI,EACnF,OAAO+C,EAAMA,EAAMG,iBAAmB,mBAAqB,gBAAgBJ,CAAI,CACjF,EAGA5G,EAAMiD,UAAUgE,KAAO,SAASC,EAAM7C,EAAI8C,GACxC,IAAInD,EAAO/D,KACPgE,EAAOxE,EAAIyE,qBAAqB,MAAM,EAAE,GACxC+C,EAAOxH,EAAIsG,cAAc,MAAM,EAK/BqB,EAAK,cAHkBD,EAAV,UAAd,OAAO9C,EAA2BA,EAE1B8C,IAAWD,GAAMpB,QAAQ,SAAU,EAAE,EAE5CuB,EAAc,WACdvH,EAAU,EAiDd,OA/CAmH,EAAKC,KAAOA,GAAQvH,EAAO2H,MAAQ,OAAM,IAAInB,MAAOC,QAAQ,EAAI,IAChEa,EAAKM,IAAM,aACXN,EAAKG,GAAKA,EACVH,EAAKO,MAAQ,MAET/H,EAAIgI,eAAeL,CAAE,GACvBnD,EAAKoC,YAAYY,CAAI,EAGN,YAAd,OAAO5C,GAGT,SAASe,EAAKvF,GACb,IACI6H,EAAcjI,EAAIgI,eAAeL,CAAE,EAGvC,MAAG,EAAEtH,EAA2B,IAAjBH,EAAOG,QAJV,IAKHmB,EAAMiG,EAAO,UAAU,EAIhC,KAAqD,OAAlDS,SAAS3D,EAAK2C,SAASe,EAAa,OAAO,CAAC,GAE1C7H,IAAWwH,GAAaK,EAAYE,gBAAgB,YAAY,EAEnEF,EAAYG,aAAa,YAAY,IAAMR,EAAc/B,WAAWF,EAb1D,GAaqE,EAAIf,EAAG,IAEtFqD,EAAYI,aAAa,aAAcT,CAAW,EAClD/B,WAAW,WACTF,EAAKiC,CAAW,CAClB,EAlBU,GAkBF,GAEZ,EAAG,EAcIrD,CACT,EAGAhE,EAAMiD,UAAU8E,OAAS,SAASC,EAAU3D,EAAI8C,GAC9C,OAAOzD,MAAMuD,KAAKtH,EAAOmB,IAAM,OAASkH,EAAU3D,EAAI8C,CAAO,CAC/D,EAGAxH,EAAOgE,SAAW,GAGlB3D,EAAMiD,UAAUI,QAAU,SAAS4E,GACjC,GAAGvE,MAAMuE,GACP,MAA2C,YAApC,OAAOtI,EAAOgE,SAASsE,GAC1BtI,EAAOgE,SAASsE,GAClB,IAEN,EAGAjI,EAAMiD,UAAUiF,IAAM,SAASnE,EAAKJ,EAAU1C,GAC5C,IAAIiH,EAAM,IAAIC,MAEd,GADAD,EAAI3H,IAAMwD,EACPmE,EAAIE,SACL,OAAOzE,EAASuE,CAAG,EAErBA,EAAIG,OAAS,WACXH,EAAIG,OAAS,KACO,YAApB,OAAO1E,GAA2BA,EAASuE,CAAG,CAChD,EACAA,EAAII,QAAU,SAAS1D,GACrBsD,EAAII,QAAU,KACG,YAAjB,OAAOrH,GAAwBA,EAAM2D,CAAC,CACxC,CACF,EAGA5E,EAAMiD,UAAUtD,OAAS,SAAS4I,GAEhC,IAAI,IAAIC,KADRD,EAAUA,GAAW,GAEnB5I,EAAO6I,GAAOD,EAAQC,GAExB,OAAOvI,IACT,EAGAD,EAAMiD,UAAUrD,QAAU,WACxB,IACQ6I,EADJC,EAAQ,GACZ,IAAQD,KAAK7I,EACX8I,EAAMD,GAAK7I,EAAQ6I,GAErB,OAAOC,CACT,EAAE,EAGF1I,EAAMiD,UAAU0F,OAAS,SAASJ,GAKhC,IAJA,IAIQE,KADRF,EAAUA,GAAW,GAHVtI,KAKDwI,IALCxI,KAKUL,QAAQ6I,GACzBxH,EAAMwH,EAAG,yBAA0B,OAAO,EANnCxI,KAQFL,QAAQ6I,GAAKF,EAAQE,GAI9B,OAZWxI,IAab,EAGAD,EAAMiD,UAAU2F,OAAS5I,EAAMiD,UAAU4F,KAAO,SAASA,GACvD,IAEIC,EAAO,CACTC,KAAM,GACNC,OAAQ,GACRH,OAAOA,EAJEA,GAAQjD,SAASiD,MAIdlD,MAAM,YAAY,GAAK,IAAI,IAAM,EAC/C,EAgBA,MAdI,OAAOX,KAAK6D,CAAI,IAEpBA,EAAOA,EAAK/C,QAAQ,OAAQ,EAAE,EAC9BgD,EAAK5B,KAAO,IAAM2B,EAClBA,EAAOA,EAAK/C,QAAQ,eAAgB,IAAI,EAAEmD,MAAM,GAAG,GAAK,GAZ7ChJ,KAeNsE,KAAKsE,EAAM,SAASrE,EAAOL,GAC9B,QAAQa,KAAKb,CAAI,GACfA,EAAOA,EAAK8E,MAAM,GAAG,EACrBH,EAAKE,OAAO7E,EAAK,IAAMA,EAAK,IACxB2E,EAAKC,KAAKxD,KAAKpB,CAAI,CAC3B,CAAC,GAEM2E,CACT,EAGA9I,EAAMiD,UAAUc,IAAM,SAASmD,GAC7B,IAeQgC,EACAF,EAhBJhF,EAAO/D,KAqDX,MApDW,CAETkJ,UACiBjC,IAEAA,EAAKvB,MAAM,cAAc,GAAK,IAAI,IAAM,IACxCG,QAAQ,UAAW,EAAE,EAAEA,QAAQ,OAAQ,EAAE,EAEtDF,SAASuD,UACKrD,QAAQ,MAAO,EAAE,EAAEmD,MAAM,GAAG,EAI9CD,QACME,EAAM,GACNF,GAAU9B,IAECA,EAAKvB,MAAM,MAAM,GAAK,IAAI,IAAM,IAChCG,QAAQ,OAAQ,EAAE,EAE7BF,SAASoD,QACXlD,QAAQ,OAAQ,EAAE,EAAEmD,MAAM,GAAG,EAG/BjF,EAAKO,KAAKyE,EAAQ,SAASxE,EAAOL,GAChC,IAAIiF,EAASjF,EAAKoC,QAAQ,GAAG,EAC5BiC,EACIY,EAAS,EACHjF,EAAKkF,OAAO,EAAGlF,EAAKxD,MAAM,EACd,IAAXyI,GAGDjF,EAAKkF,OAAO,EAAGD,CAAM,EAI7BZ,IACDU,EAAIV,GAAgB,EAATY,EAAajF,EAAKkF,OAAOD,EAAS,CAAC,EAAI,KAEtD,CAAC,EAEMF,GAITL,KAAM7E,EAAK4E,OACF1B,GACDA,EAAKvB,MAAM,KAAK,GAAK,IAAI,IAAM,IACnCC,SAASiD,IACV,CACL,CAGF,EAGA7I,EAAMiD,UAAU6F,KAAO,SAAS3G,EAAOmH,EAAUC,GAI/C,GAHApH,EAAQA,GAAS,QACjBoH,EAAUA,GAAWC,aAEjBjK,EAAIkK,MAASlK,EAAIkK,KAAKC,MAA1B,CAGA,GAAgB,OAAbJ,EACD,OAAO,OAAOC,EAAQpH,GAGxBmH,EAA+B,UAApB,OAAOA,EACdA,EACF,CAACd,IAAKc,CAAQ,EAEhB,IACE,IAAIR,EAAOW,KAAKC,MAAMH,EAAQpH,EAAM,CAGtC,CAFE,MAAMyC,GACFkE,EAAO,EACb,CAMA,MAJG,UAAWQ,IAAUR,EAAKQ,EAASd,KAAOc,EAASK,OACnDL,EAASM,QAAQ,OAAOd,EAAKQ,EAASd,KACzCe,EAAQpH,GAASsH,KAAKI,UAAUf,CAAI,EAE7BQ,EAASd,IAAMM,EAAKQ,EAASd,KAAOM,CArBJ,CAsBzC,EAGA9I,EAAMiD,UAAU6G,YAAc,SAAS3H,EAAOmH,GAC5C,OAAOrJ,KAAK6I,KAAK3G,EAAOmH,EAAUS,cAAc,CAClD,EAGA/J,EAAMiD,UAAU+G,OAAS,SAASxB,GAChC,IAAIyB,EAAQnF,UAAUoF,UAAUC,YAAY,EAGxCC,EAAa,SAASC,GACxB,IAAIC,EAAM,IAAIC,OAAOF,EAAQ,kBAAkB,EAE/C,OADAA,GAASJ,EAAMtE,MAAM2E,CAAG,GAAG,IAAI,KACf,CAAA,CAClB,EAGIE,EAAS,CACXC,GACK,UAAUzF,KAAKiF,CAAK,EACd,UACC,QAAQjF,KAAKiF,CAAK,EACnB,QACC,uBAAuBjF,KAAKiF,CAAK,EAClC,MACC,MAAMjF,KAAKiF,CAAK,EACjB,MADF,KAAA,EAITS,GACS,CAAA,EAAGnL,EAAIoL,eAAiB,kBAAmBpL,MAC/C0K,EAAMtE,MAAM,aAAa,GAAK,IAAI,IAAM,MAG7CiF,OAAQR,EAAW,gBAAgB,CACrC,EAYA,OATG5B,GAAO,CAACgC,EAAOhC,KAChBgC,EAAOhC,GAAO4B,EAAW5B,CAAG,GAI9BgC,EAAOK,QAAU,UAAU7F,KAAKiF,CAAK,EACrCO,EAAOM,IAAoB,QAAdN,EAAOC,GACpBD,EAAOO,OAAUP,EAAOK,SAAWL,EAAOM,IAEnCN,CACT,EAGAxK,EAAMiD,UAAU+H,KAAO,WACrB,MAAO,CACL/J,MAAOA,CACT,CACF,EAGAjB,EAAMiD,UAAUgI,QAAUjL,EAAMiD,UAAU9B,KAAO,SAAS+J,GACxD,OAAe,OAAZA,EAAyBC,OAAOD,CAAO,EAGf,UAAnB,OAAOA,GAA2C,YAAnB,OAAOA,GAI5C/J,GAAOA,EAHIiK,OAAOnI,UAAU1B,SAAS8J,KAAKH,CAAO,EAAEvF,MAAM,WAAW,GAAK,IAG7D,IAAM,SAGX,IAAI4E,OAAO,wDAA0B,EAAEvF,KAAK7D,CAAI,EACnDA,EAAKgJ,YAAY,EACnB,UACE,OAAOe,EAV2D,IAItE/J,CAOJ,EAGAnB,EAAMiD,UAAUqI,SAAWtL,EAAMiD,UAAUyD,QAAU,SAASwC,GAC5D,IACIqC,EACApK,EAFOlB,KAEKkB,KAAK+H,CAAG,EAExB,MAAG,EAACA,CAAAA,GAAuB,UAAf,OAAOA,GAAqBA,IAAQ3J,KAEhDgM,EAAM,WAAYrC,GAAOA,EAAIvI,OACb,UAATQ,GAA4B,IAARoK,GACV,UAAf,OAAOA,GAA0B,EAANA,GAAYA,EAAM,KAAMrC,EAEvD,EAGAlJ,EAAMiD,UAAUsB,KAAO,SAAS2E,EAAK7E,GACnC,IAAImE,EAEAgD,EAAS,SAAShD,EAAKU,GACzB,OAAO7E,EAAGgH,KAAKnC,EAAIV,GAAMA,EAAKU,EAAIV,EAAI,CACxC,EAEA,GAAiB,YAAd,OAAOnE,EAIV,GATWpE,KASHyG,QAHRwC,EAAMA,GAAO,EAGM,EACjB,IAAIV,EAAM,EAAGA,EAAMU,EAAIvI,QAClB6K,CAAAA,EAAOhD,EAAKU,CAAG,EADWV,CAAG,SAIlC,IAAIA,KAAOU,EACT,GAAGsC,EAAOhD,EAAKU,CAAG,EAAG,MAIzB,OAnBWjJ,IAoBb,EAGAD,EAAMiD,UAAUwI,KAAO,SAASC,EAAKlD,EAAKmD,EAAMC,GAE1ClD,EAAQkD,EAAYF,GAAO,GAAMjC,KAAKC,MACxCD,KAAKI,UAAU6B,GAAO,EAAE,CAC1B,EAGA,GAAsB,WANXzL,KAMHkB,KAAKuK,CAAG,GAAmBlD,EAAnC,CAEO,GAAkB,UAAf,OAAOkD,EACf,MAAO,CAAChD,GAIVA,EAAM+C,KAAK,SAASI,EAAIC,GACtB,IAAIC,EAAKF,EAAGrD,GACRwD,EAAKF,EAAGtD,GAQZ,GAAG,CAACyD,MAAMJ,CAAE,GAAK,CAACI,MAAMH,CAAE,EAAG,OAAOD,EAAKC,EAEzC,GAAG,CAACG,MAAMJ,CAAE,GAAKI,MAAMH,CAAE,EAAE,CACzB,GAAGtD,CAAAA,GAAqB,UAAd,OAAOsD,EAGf,MAAO,CAAC,EAFRC,EAAKF,CAIT,MAAO,GAAII,MAAMJ,CAAE,GAAK,CAACI,MAAMH,CAAE,EAAE,CACjC,GAAGtD,CAAAA,GAAqB,UAAd,OAAOqD,EAGf,OAAO,EAFPG,EAAKF,CAIT,CASII,EAAQ,CAAC,CAACD,MAAMF,CAAE,EAAG,CAACE,MAAMD,CAAE,GAGlC,OAAGE,EAAM,IAAMA,EAAM,GAChBH,GAAO,CAACC,GAAa,IAAPA,EACR,EACE,CAACD,GAAa,IAAPA,GAAaC,EACtB,CAAC,EAEDD,EAAKC,EASZE,EAAM,IAAOA,EAAM,GAYpBA,EAAM,IAAM,CAACA,EAAM,GACb,CAAC,EACA,CAACA,EAAM,IAAMA,EAAM,GACpB,EADF,KAAA,EAZGF,EAALD,EACM,EACEA,EAAKC,EACP,CAAC,EAED,CAWb,CAAC,EAEDL,GAAQjD,EAAMyD,QAAQ,CA1EtB,CA2EA,OAAOzD,CACT,EAGA1I,EAAMiD,UAAUmJ,MAAQ,SAASC,GAC/BA,EAAYA,GAAa9M,EAAIQ,MAC7B,IAAMsM,EAAUC,gBAAgB,CAEhC,CAFoC,MAAM1H,GACxCyH,EAAUE,aAAe,CAAA,CAC3B,CACF,EAGgB,sBAGhBvM,EAAMiD,UAAUuJ,QAAU,SAASvE,EAASwE,EAAQ9I,GAClD,MAAsB,UAAnB,OAAOsE,GACa,YAApB,OAAOtE,EAAgC1D,KAEnCD,EAAMD,MAAMkI,EAASwE,EAAQ,KAAM9I,CAAQ,CACpD,EAGA3D,EAAMiD,UAAUlD,MAAQC,EAAMD,MAAQ,SAASkI,EAASwE,EAAQC,EAAQrI,GACtE,IAAIL,EAAO/D,KACPuK,EAAS,KACTmC,GAAUF,GAAU,IAAI9G,MAAM,WAAW,GAAG,GAC5CiH,GAAa3E,EAAU,IAAKwE,GAAQ3G,QAAQ6G,EAAO,GAAI,EAAE,EACzDE,EAAaF,EAAO,IAAM,GAC1BhJ,EAAW,SAASmJ,EAAG3I,GAEjB,CAAA,KADEA,GAAQA,EAAKkH,KAAKrH,EAAM0I,CAAM,IACZ,OAAXlC,IAAoBA,EAAS,CAAA,EAChD,EAGA,OAAGkC,IAAW1J,GACZ,OAAQgB,EAAKd,MAAMnD,MAAM6M,IAAc,IAAIC,GACpC7I,GAINK,GACD1E,EAAOI,MAAM6M,GAAajN,EAAOI,MAAM6M,IAAc,GAEjDC,EAEFlN,EAAOI,MAAM6M,GAAWC,GAAc,CAACxI,IAGvC1E,EAAOI,MAAM6M,GAAWC,GAAclN,EAAOI,MAAM6M,GAAWC,IAAe,GAC7ElN,EAAOI,MAAM6M,GAAWC,GAAYtH,KAAKlB,CAAE,GAEtCpE,OAITyD,MAAMa,KAAK5E,EAAOI,MAAM6M,GAAY,SAASpE,EAAKrE,IAE9B,QAAf0I,IAMK,KAARrE,GAAc9E,MAAMa,KAAKJ,EAAMR,CAAQ,EACtCkJ,GAAcrE,IAAQqE,KAAenJ,MAAMa,KAAKJ,EAAMR,CAAQ,CACjE,CAAC,EAEM6G,EACT,EAGAxK,EAAMiD,UAAUqB,GAAK,SAASmI,EAAQxE,EAAStE,GAE7C,OADW1D,KACCuM,QAAQnB,KADTpL,KACoBgI,EAASwE,EAAQ9I,CAAQ,CAC1D,EAGA3D,EAAMiD,UAAU8J,IAAM,SAASN,EAAQxE,GAErC,OADWhI,KACCF,MAAMsL,KADPpL,KACkBgI,EAASwE,EAAQzJ,CAAS,CACzD,EAGAhD,EAAMiD,UAAU+J,SAAW,SAAUC,EAAMC,GACzC,IAAIpN,EACJ,OAAO,WACL,IAAIqN,EAAUlN,KACVmN,EAAOC,UACXC,aAAaxN,CAAO,EACpBA,EAAUwF,WAAW,WACnB2H,EAAKxH,MAAM0H,EAASC,CAAI,CAC1B,EAAGF,CAAI,CACT,CACF,EAGAlN,EAAMiD,UAAUsK,SAAW,SAAUN,EAAMC,GACzC,IAAIM,EAAW,CAAA,EACf,OAAO,WAGAA,IACHP,EAAKxH,MAHOxF,KACHoN,SAEe,EACxBG,EAAW,CAAA,EACXlI,WAAW,WACTkI,EAAW,CAAA,CACb,EAAGN,CAAI,EAEX,CACF,EAGA3N,EAAImE,MAAQ,IAAI1D,CAElB,EAAEyN,MAAM,ECnzBR/J,MAAMP,OAAO,SAASM,GACpB,IAAIP,EAAQQ,MAAMR,MAClBQ,MAAM/D,OAAO,CACXmB,IAAKoC,EAAMpC,IAAIgF,QAAQ,eAAgB,EAAE,CAC3C,CAAC,EACDrC,EAAQ,YAAaC,MAAMxD,CAAC,CAC9B,CAAC,ECPA,CAAC,SAASuN,GACT,aAEA,IAwFMxD,EAvFFvK,EAAW+N,EAAO/N,SAMlB+B,EAAM,SAASiM,GACjB,OAAO,IAAIC,EAAMD,CAAQ,CAC3B,EAGIC,EAAQ,SAASD,GACnB,IAAI1J,EAAO/D,KACP2N,EAA2B,UAApB,OAAOF,EAEThK,MAAMgD,QAAQgH,CAAQ,EAAIA,EAAW,CAACA,IAE7CzN,KAAKyN,SAAWA,EAChBhO,EAASmO,iBAAiBH,GAAY,IAAI,GAG5CjM,EAAI8C,KAAKqJ,EAAM,SAASpJ,EAAOL,GAC7BH,EAAKuB,KAAKqI,EAAKpJ,EAAM,CACvB,CAAC,CACH,EAKAsJ,MAAM7K,UAAUsD,QAAUuH,MAAM7K,UAAUsD,SAAW,SAASwH,EAAeC,GAC3E,IAAIC,EAAM,CAAC,EAQX,OAPAD,EAAYA,GAAa,EACzBtK,MAAMa,KAAKtE,KAAM,SAASuE,EAAO0J,GAC/B,GAAIH,IAAkBG,GAAgBF,GAATxJ,EAE3B,OADAyJ,EAAMzJ,EACC,CAAA,CAEX,CAAC,EACMyJ,CACT,EAMAN,EAAMtJ,GAAKsJ,EAAM1K,UAAY,GAC7B0K,EAAMtJ,GAAG8J,YAAcR,EAUvBlM,EAAIkH,OAAS,WACX,IACIhI,EADAyN,EAAK,EAELhB,EAAOC,UACP3E,EAAQ,SAAS2F,EAAQnF,GAE3B,IAAI,IAAItI,KADRyN,EAASA,IAA+B,UAApB3K,MAAMvC,KAAK+H,CAAG,EAAgB,GAAK,IAC1CA,EAEXmF,EAAOzN,GAAMsI,EAAItI,IAAMsI,EAAItI,GAAGuN,cAAgB/C,OAC1C1C,EAAM2F,EAAOzN,GAAIsI,EAAItI,EAAE,EACzBsI,EAAItI,GAER,OAAOyN,CACT,EAKA,IAHAjB,EAAK,GAAwB,UAAnB,OAAOA,EAAK,GAAkBA,EAAK,GAAK,GAClDzM,EAASyM,EAAKzM,OAERyN,EAAKzN,EAAQyN,CAAE,GACI,UAApB,OAAOhB,EAAKgB,IACb1F,EAAM0E,EAAK,GAAIA,EAAKgB,EAAG,EAG3B,OAAOhB,EAAK,EACd,EAMA3L,EAAIiJ,IACET,EAAQnF,UAAUoF,UAAUC,YAAY,EACrC,CAAA,EAAGsD,EAAO9C,eAAiB,kBAAmB8C,MAClDxD,EAAMtE,MAAM,aAAa,GAAK,IAAI,IAAM,OAS7ClE,EAAIiC,MAAQA,OAAS,GACrBjC,EAAIpB,QAAUqD,MAAMR,MAAMpC,IAC1BW,EAAI2K,MAAQ1I,MAAM0I,MAClB3K,EAAI8C,KAAO,WAET,OADAb,MAAMa,KAAKkB,MAAM/B,MAAO2J,SAAS,EAC1BpN,IACT,EAcAwB,EAAI6M,MAAQ,SAASC,EAAK5N,GACxB,GAAoB,UAAf,OAAO4N,GAAmC,UAAf,OAAOA,EAAmB,MAAO,GAEjE,IAAIC,EAAM,GAEV7N,EAASA,GAAU,EACnB,IAAI,IAAIC,GAFR2N,EAAMpD,OAAOoD,CAAG,GAEA5N,OAAQC,EAAID,EAAQC,CAAC,GACnC4N,GAAO,IAET,OAAOD,EAAME,KAAKC,IAAI,GAAI/N,CAAM,EAAI6N,EAAMD,EAAMA,CAClD,EAYA9M,EAAImM,KAAO,SAASe,EAAUC,GAC5B,IAAIhB,EAAOlO,EAASqG,cAAc4I,CAAQ,EAI1C,OAHAlN,EAAI8C,KAAKqK,GAAQ,GAAI,SAASpG,EAAKmB,GACjCiE,EAAK9F,aAAaU,EAAKmB,CAAK,CAC9B,CAAC,EACMiE,CACT,EAUAnM,EAAIoN,aAAe,WACjB,OAAOnP,EAASoP,KAAKC,cAAgBtB,EAAOuB,aAAetP,EAASuP,gBAAgBC,aACtF,EA2BAzN,EAAI0N,cAAgB,SAAStI,EAAOlD,GAClC,GAAKkD,EAWL,OARIuI,GADAC,EAAQxI,EAAMwI,OAASxI,EAAMyI,YAAc,IAC7BC,UAAYF,EAAMD,MAEZ,YAApB,OAAOzL,GACTD,MAAMa,KAAK6K,EAAO,SAASxO,EAAGuD,GAC5B,GAAIR,EAASQ,EAAMvD,CAAC,EAAG,MAAO,CAAA,CAChC,CAAC,EAGIwO,CACT,EAsBA3N,EAAIoF,MAAQ,SAAS0B,GACnBA,EAAUA,GAAW,GAErB,IAAI1B,EAAQpF,EAAImM,KAAK,OAAO,EACxB4B,EAAYjH,EAAQkH,MAAQ,GAC5BpB,EAAS9F,EAAQ8F,OAErB,GAAKmB,EAuBL,MApBI,eAAgB3I,GAClBA,EAAMiB,aAAa,OAAQ,UAAU,EACrCjB,EAAMyI,WAAWI,QAAUF,GAE3B3I,EAAM8I,UAAYH,EAIpB3I,EAAMO,GAAK,cAAemB,EAAQnB,KAAe5C,EAG/C/C,EAAIoF,MAAMrC,OAAS,EAFnB/C,EAAIoF,MAAMrC,KAAK,GACR,MAAOA,IAIZ6J,KACEuB,EAAYnO,EAAI4M,CAAM,EAAEwB,KAAK,IAAKhJ,EAAMO,EAAE,GACpC,IAAMwI,EAAUhG,OAAO,EACjCnI,EAAI4M,CAAM,EAAEyB,OAAOjJ,CAAK,GAGnBA,CACT,EAiCApF,EAAIsO,SAAW,SAAS1B,EAAQT,EAAMoC,GACpC,IAUMpL,EAYFqL,EAMAC,EAGAC,EACAC,EACAC,EA6CAN,EASEO,EAvFF1C,IACJoC,EAAOA,GAAQ,GAGZ3B,IAAW3O,GAAY2O,IAAW5M,EAAI,MAAM,EAAE,KAC/CuO,EAAKO,UAAY,SAIfC,EAA0B,UAAnBR,EAAKO,UAEP,CACLH,MAFExL,EAAIoL,EAAKpL,GAAK6I,EAAO1N,OAAS,IAExB0Q,QACRJ,IAAKzL,EAAE8L,QACPC,MAAO/L,EAAE6L,QACTG,OAAQhM,EAAE8L,OACZ,EACIrC,EAAOwC,sBAAsB,EAC/BC,EAAYlD,EAAKmD,YACjBC,EAAapD,EAAKqD,aAGlBhB,EAAa,SAAS9O,GAExB,OAAOzB,EAASoP,KADhB3N,EAAOA,EAAO,aAAe,aACAzB,EAASuP,gBAAgB9N,EACxD,EAGI+O,EAAU,SAAS/O,GACrB,OAAOzB,EAASuP,gBAAgB9N,EAAO,cAAgB,eACzD,EACIgP,EAAS,WAAYH,EAAOA,EAAKG,OAAS,EAC1CC,EAAOI,EAAKJ,KACZC,EAAMG,EAAKI,OAGG,WAAfZ,EAAKkB,MACNd,IAAeU,EAAYzC,EAAO0C,aAAe,EAC1B,UAAff,EAAKkB,QACbd,EAAOA,EAAOU,EAAYzC,EAAO0C,cAKjCX,EADCA,EAAOU,EAAYX,EAASD,EAAQ,OAAO,EACrCA,EAAQ,OAAO,EAAIY,EAAYX,EAGrCC,GAAOD,IAAQC,EAAOD,GAItBK,EAAKI,OAASI,EAAab,EAASD,EAAQ,IAE1CM,EAAKH,IAAMW,EAAab,GAAUK,EAAKH,KAAOH,EAAQ,EACvDG,EAAMG,EAAKH,IAAMW,EAAoB,EAAPb,EACrBH,EAAKmB,iBACdd,EAAMH,EAAQ,EAAIc,EAAoB,EAAPb,GACtB,IAAGE,EAAM,KAqBlBN,EAAWC,EAAKD,YACPnC,EAAK/G,MAAMkJ,SAAWA,GAGnCnC,EAAK/G,MAAMuJ,KAAOA,GAAqB,UAAbL,EAAuB,EAAIE,EAAW,CAAC,GAAK,KACtErC,EAAK/G,MAAMwJ,IAAMA,GAAoB,UAAbN,EAAuB,EAAIE,EAAW,GAAK,KAG/DxO,EAAIoN,aAAa,IACfyB,EAAQ1C,EAAKiD,sBAAsB,EAEpC,CAACb,EAAKoB,eAAkBd,EAAMM,OAAST,EAAUD,EAAQ,IAC1DF,EAAKoB,cAAgB,CAAA,EACrB9L,WAAW,WACT7D,EAAIsO,SAAS1B,EAAQT,EAAMoC,CAAI,CACjC,EAAG,EAAE,IAGX,EAqBAvO,EAAI8G,QAAU,SAASqF,EAAMoC,GAG3B,GAFAA,EAAuB,UAAhB,OAAOA,EAAoBA,EAAO,CAACpB,KAAMoB,CAAI,EAEjDpC,IAASlO,EAAU,MAAO,GAE7B,IAAI2R,EAAQ5P,EAAImM,CAAI,EAChB0D,EAAWtB,EAAKpB,MAAQ,cACxB2C,EAAYF,EAAMzC,KAAK0C,CAAQ,EAEnC,IAKE,OAAO,IAAIE,SAAS,WAAYD,GAAa,KAAK,EAAE,CAOtD,CANE,MAAME,GAKN,OAJA/N,MAAMsH,KAAK,EAAE/J,MAAM+O,EAAK0B,WAAa,CACnCJ,EAAW,KAAMC,EAAY,IAC7B,kBAAmBE,GACnBE,KAAK,IAAI,EAAG,OAAO,EACd,EACT,CACF,EAYAlQ,EAAImQ,UAAY,SAAShE,GACvB,IAAIiE,EAAW,CAACnS,EAAU+B,EAAI,MAAM,EAAE,IACrCqQ,EAAU,CAAA,EAMX,OALArQ,EAAI8C,KAAKsN,EAAU,SAASrN,EAAOL,GACjC,GAAGA,IAASyJ,EACV,OAAOkE,EAAU,CAAA,CAErB,CAAC,EACMA,CACT,EAGArQ,EAAIsQ,UAAY,CAgBdC,UAAW,SAASzJ,GAClB,IAAIkH,EAAOtE,OAAO5C,EAAQkH,IAAI,EAW9B,SAASwC,IACP,IAAIrE,EAAOlO,EAASqG,cAAc,UAAU,EAE5C6H,EAAKjE,MAAQ8F,EACb7B,EAAK/G,MAAMkJ,SAAW,QACtBnC,EAAK/G,MAAMqL,QAAU,IACrBtE,EAAK/G,MAAMwJ,IAAM,MACjBzC,EAAK/G,MAAMuJ,KAAO,MAElB1Q,EAASoP,KAAKzI,YAAYuH,CAAI,EAC9BA,EAAKuE,OAAO,EAEZ,IACEzS,EAAS0S,YAAY,MAAM,EACH,YAAxB,OAAO7J,EAAQ8J,MAAuB9J,EAAQ8J,KAAK,CAKrD,CAJE,MAAMC,GACmB,YAAzB,OAAO/J,EAAQtH,OAAwBsH,EAAQtH,MAAMqR,CAAG,CAC1D,CAAE,QACA1E,EAAKhE,OAASgE,EAAKhE,OAAO,EAAIlK,EAASoP,KAAK3J,YAAYyI,CAAI,CAC9D,CACF,CA7BG9I,WAAa,cAAeA,UAC7BA,UAAUiN,UAAUC,UAAUvC,CAAI,EAC/B8C,KAAKhK,EAAQ8J,KAAM,WAClBJ,EAAW,CACf,CAAC,EAEDA,EAAW,CAwBf,CACF,EASAtE,EAAM6E,OAAS,SAAShE,EAAKiE,GAQ3B,OAPAjE,EAAMA,EAAI1I,QAAQ,MAAO,GAAG,EAC5B2M,EAAUA,EAAQ3M,QAAQ,MAAO,GAAG,EAAEmD,MAAM,GAAG,EAC/CxH,EAAI8C,KAAKkO,EAAS,SAASC,EAAIvO,GACzB,IAAIoG,OAAO,MAAOpG,EAAO,KAAK,EAAEa,KAAKwJ,CAAG,IAC1CA,EAAMA,EAAM,IAAMrK,EAEtB,CAAC,EACMqK,EAAI1I,QAAQ,UAAW,EAAE,CAClC,EAGA6H,EAAMgF,UAAY,SAASnE,EAAKiE,GAS9B,OARAjE,EAAMA,EAAI1I,QAAQ,MAAO,GAAG,EAC5B2M,EAAUA,EAAQ3M,QAAQ,MAAO,GAAG,EAAEmD,MAAM,GAAG,EAC/CxH,EAAI8C,KAAKkO,EAAS,SAASC,EAAIvO,GACzBmG,EAAM,IAAIC,OAAO,MAAOpG,EAAO,KAAK,EACrCmG,EAAItF,KAAKwJ,CAAG,IACbA,EAAMA,EAAI1I,QAAQwE,EAAK,EAAE,EAE7B,CAAC,EACMkE,EAAI1I,QAAQ,MAAO,GAAG,EAAEA,QAAQ,UAAW,EAAE,CACtD,EAGA6H,EAAMtJ,GAAGwL,KAAO,SAASnC,GACvB,IACIE,EAAO,GACPgF,EAA+B,UAApB,OAAOlF,EAYtB,OAVAzN,KAAKsE,KAAK,SAAS3D,EAAGuD,GAChB0O,EAAWD,GAAYzO,EAAK2O,SAASpF,CAAQ,EAC7CA,EACFvJ,EAAK0J,iBAAiBH,GAAY,IAAI,EAExCjM,EAAI8C,KAAKsO,EAAU,SAASrO,EAAOuO,GACjCnF,EAAKrI,KAAKwN,CAAK,CACjB,CAAC,CACH,CAAC,EAEMtR,EAAImM,CAAI,CACjB,EAGAD,EAAMtJ,GAAGE,KAAO,SAASF,GACvB,OAAO5C,EAAI8C,KAAK8G,KAAKpL,KAAMA,KAAMoE,CAAE,CACrC,EAGAsJ,EAAMtJ,GAAG2O,SAAW,SAASC,EAAW9R,GACtC,OAAOlB,KAAKsE,KAAK,SAASC,EAAOL,GAC/BA,EAAK8O,UAAYtF,EAAMxM,EAAO,YAAc,UAAUgD,EAAK8O,UAAWA,CAAS,CACjF,CAAC,CACH,EAGAtF,EAAMtJ,GAAG6O,YAAc,SAASD,GAC9B,OAAOhT,KAAK+S,SAASC,EAAW,CAAA,CAAI,CACtC,EAGAtF,EAAMtJ,GAAG8O,SAAW,SAASF,GAC3B,IAAIG,EAAM,CAAA,EAMV,OALAnT,KAAKsE,KAAK,SAASC,EAAOL,GACrB,IAAIoG,OAAO,MAAO0I,EAAW,KAAK,EAAEjO,KAAKb,EAAK8O,SAAS,IACxDG,EAAM,CAAA,EAEV,CAAC,EACMA,CACT,EAGAzF,EAAMtJ,GAAGgP,IAAM,SAAS7K,EAAKmB,GAC3B,IAAI3F,EAAO/D,KACPqT,EAAa,SAASpT,GACxB,OAAO+L,MAAM/L,CAAC,EAAIA,EAAKA,EAAG,IAC5B,EACO,MAAgB,UAAf,OAAOsI,GAAoBmB,IAAU4J,UAEvCvP,EAAKO,KAAK,SAASC,EAAOL,GACf,UAAf,OAAOqE,EAAmB/G,EAAI8C,KAAKiE,EAAK,SAASgL,EAASC,GACxDtP,EAAK0C,MAAM2M,GAAWF,EAAWG,CAAS,CAC5C,CAAC,EAAItP,EAAK0C,MAAM2B,GAAO8K,EAAW3J,CAAK,CACzC,CAAC,EALkB,EAAd3F,EAAKrD,OAAmBqD,EAAK,GAAG6C,MAAM2B,GAAzC,KAAA,CAMJ,EAGAmF,EAAMtJ,GAAGqP,MAAQ,SAAS/J,GACxB,IAAI3F,EAAO/D,KACJ0J,OAAAA,IAAU4J,UAEXvP,EAAKO,KAAK,SAASC,EAAOL,GAC9BH,EAAKqP,IAAI,QAAS1J,CAAK,CACzB,CAAC,EAHkB,EAAd3F,EAAKrD,OAAmBqD,EAAK,GAAG+M,YAAnC,KAAA,CAIJ,EAGApD,EAAMtJ,GAAGsP,OAAS,SAAShK,GACzB,IAAI3F,EAAO/D,KACJ0J,OAAAA,IAAU4J,UAEXvP,EAAKO,KAAK,SAASC,EAAOL,GAC9BH,EAAKqP,IAAI,SAAU1J,CAAK,CAC1B,CAAC,EAHkB,EAAd3F,EAAKrD,OAAmBqD,EAAK,GAAGiN,aAAnC,KAAA,CAIJ,EAGAtD,EAAMtJ,GAAGuK,KAAO,SAASpG,EAAKmB,GAC5B,IAAI3F,EAAO/D,KACJ0J,OAAAA,IAAU4J,UAEXvP,EAAKO,KAAK,SAASC,EAAOL,GAC9BA,EAAK2D,aAAaU,EAAKmB,CAAK,CAC9B,CAAC,EAHkB,EAAd3F,EAAKrD,OAAmBqD,EAAK,GAAG6D,aAAaW,CAAG,EAAnD,KAAA,CAIJ,EAGAmF,EAAMtJ,GAAGuP,WAAa,SAASpL,GAC7B,OAAOvI,KAAKsE,KAAK,SAASC,EAAOL,GAC/BA,EAAKyD,gBAAgBY,CAAG,CAC1B,CAAC,CACH,EAGAmF,EAAMtJ,GAAGwP,KAAO,SAASA,GACvB,IAAI7P,EAAO/D,KACJ4T,OAAAA,IAASN,UAEVtT,KAAKsE,KAAK,SAASC,EAAOL,GAC9BA,EAAKwL,UAAYkE,CACnB,CAAC,EAHkB,EAAd7P,EAAKrD,OAAmBqD,EAAK,GAAG2L,UAAnC,KAAA,CAIJ,EAGAhC,EAAMtJ,GAAG6J,IAAM,SAASvE,GACtB,IAAI3F,EAAO/D,KACJ0J,OAAAA,IAAU4J,UAEXtT,KAAKsE,KAAK,SAASC,EAAOL,GAC5BA,EAAKwF,MAAQA,CACjB,CAAC,EAHkB,EAAd3F,EAAKrD,OAAmBqD,EAAK,GAAG2F,MAAnC,KAAA,CAIJ,EAGAgE,EAAMtJ,GAAGyL,OAAS,SAASlC,GACzB,OAAO3N,KAAKsE,KAAK,SAASC,EAAOL,GACf,UAAhB,OAAOyJ,EACHzJ,EAAKkC,YAAYuH,CAAI,EACtBzJ,EAAKwL,UAAYxL,EAAKwL,UAAY/B,CACvC,CAAC,CACH,EAGAD,EAAMtJ,GAAGuF,OAAS,SAASgE,GACzB,OAAO3N,KAAKsE,KAAK,SAASC,EAAOL,GAC/ByJ,EAAOzJ,EAAKgB,YAAYyI,CAAI,EAAIzJ,EAAK2P,WAAW3O,YAAYhB,CAAI,CAClE,CAAC,CACH,EAGAwJ,EAAMtJ,GAAGC,GAAK,SAASsI,EAAWvI,GAChC,OAAOpE,KAAKsE,KAAK,SAASC,EAAOL,GAC/BA,EAAKmC,YAAcnC,EAAKmC,YAAY,KAAOsG,EAAW,SAAShI,GAC7DA,EAAEyJ,OAASzJ,EAAEM,WACbb,EAAGgH,KAAKlH,EAAMS,CAAC,CACjB,CAAC,EAAIT,EAAKqC,iBAAiBoG,EAAWvI,EAAI,CAAA,CAAK,CACjD,CAAC,CACH,EAGAsJ,EAAMtJ,GAAG0I,IAAM,SAASH,EAAWvI,GACjC,OAAOpE,KAAKsE,KAAK,SAASC,EAAOL,GAC/BA,EAAK4P,YACD5P,EAAK4P,YAAY,KAAMnH,EAAWvI,CAAE,EACtCF,EAAK6P,oBAAoBpH,EAAWvI,EAAI,CAAA,CAAK,CACjD,CAAC,CACH,EAGAoJ,EAAOhM,IAAMA,EAGVgM,EAAO/J,OAASA,MAAMP,QACvBO,MAAMP,OAAO,SAASM,GACpBA,EAprBW,MAorBOhC,CAAG,CACvB,CAAC,CAGL,EAAEgM,OAAQA,OAAO/N,QAAQ,EC1rBzBgE,MAAMP,OAAO,SAASM,GACpB,aAGA,IAAI9D,EAAS,CACXsU,KAAM,KACNC,MAAO,IACT,EAGIC,EAAO,CACTC,OAAQ,SAASP,GAEf,OAAGA,IAASN,WAAsB,OAATM,EAAsB,GADrC,6BAIF7O,KADR6O,GAAQ,EACS,EAEVA,EAAK/N,QAAQ,wBAAyB,OAAO,EACnDA,QAAQ,KAAM,MAAM,EAAEA,QAAQ,KAAM,MAAM,EAC1CA,QAAQ,KAAM,OAAO,EAAEA,QAAQ,KAAM,QAAQ,EAJnB+N,CAK7B,CACF,EAGIQ,EACG,SAAS7F,GACZ,OAAO,IAAIjE,OAAOiE,EAAK,GAAG,CAC5B,EAHE6F,EAKK,SAASzP,EAAG0P,GACjB,IAAIrT,EAAQ,iBAEZ,MADmB,UAAnB,OAAOG,SAAwBA,QAAQH,MAAMA,EAAQ2D,EAAI,MAAO0P,GAAU,GAAG,EACtErT,EAAQ2D,CACjB,EAIE+I,EAAQ,SAAS4G,EAAUhM,GAC7B,IAAIvE,EAAO/D,KAKP0I,GAJJ3E,EAAKrE,OAASqE,EAAKrE,QAAU,GAC7BqE,EAAKuQ,SAAWA,EAGH,SAASrL,GACpB,IAAI,IAAItI,KAAKsI,EACXlF,EAAKrE,OAAOiB,GAAKsI,EAAItI,EAEzB,GAEA+H,EAAOhJ,CAAM,EACbgJ,EAAOJ,CAAO,CAChB,EAyFI1G,GAtFJ8L,EAAM1K,UAAUuR,OAAS,SAASrT,EAAM2L,EAAG2H,GACzC,IAAIlM,EAAUtI,KAAKN,OAMnB,OAAO0U,GAAWvH,GAAG,IAAMvE,EAAQ0L,KALvB,CACV,gBACA,cACA9S,GAAQ,GAEwCoH,EAAQ2L,OAASO,GAAI,GAAG,CAC5E,EAGA9G,EAAM1K,UAAUyG,MAAQ,SAAS6K,EAAUzL,GACzC,IAAI9E,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACf2U,EAASC,EACTG,EAAML,EAAU,IAAK9L,EAAQ0L,KAAM,IAAK,EAAE,EAC1CU,EAAON,EAAU9L,EAAQ2L,MAAO,IAAK,EAAE,EAG3C,GAAuB,UAApB,OAAOK,EAAuB,OAAOA,EAuCxCA,EAAW,6BApCXA,EAAWA,EAASzO,QAAQ,gBAAiB,GAAG,EAC/CA,QAAQuO,EAAU9L,EAAQ0L,KAAM,GAAG,EAAG1L,EAAQ0L,KAAM,IAAI,EACxDnO,QAAQuO,EAAU9L,EAAQ2L,MAAO,GAAG,EAAG,KAAM3L,EAAQ2L,KAAK,EAAEpO,QAAQ,MAAO,MAAM,EAGjFA,QAAQuO,EAAU9L,EAAQ0L,KAAO,UAAY1L,EAAQ2L,KAAK,EAAG,SAAS1F,GAMrE,OALAA,EAAMA,EAAI1I,QAAQuO,EAAU,IAAK9L,EAAQ0L,KAAO,GAAG,EAAG,EAAE,EACvDnO,QAAQuO,EAAU,IAAK9L,EAAQ2L,KAAK,EAAG,EAAE,EACzCpO,QAAQuO,EAAU9L,EAAQ0L,KAAO,IAAM1L,EAAQ2L,KAAK,EAAG,SAASU,GAC/D,OAAOA,EAAI9O,QAAQ,OAAQ,MAAM,CACnC,CAAC,CAEH,CAAC,EAGAA,QAAQ,WAAY,IAAI,EAAEA,QAAQ9B,EAAKwQ,OAAO,EAAG,SAAShG,GAEzD,MAAO,MADPA,EAAMA,EAAI1I,QAAQ4O,EAAK,EAAE,EAAE5O,QAAQ6O,EAAM,EAAE,GACzB7O,QAAQ,SAAU,IAAI,EAAI,UAC9C,CAAC,EAGAA,QAAQ9B,EAAKwQ,OAAO,CAAC,EAAG,SAAShG,GAChC,IAAIqG,EAAQ,mBACZ,OAAGrG,EAAI1I,QAAQ,MAAO,EAAE,IAAMyC,EAAQ0L,KAAO1L,EAAQ2L,MAC5C,IAET1F,EAAMA,EAAI1I,QAAQuO,EAAU9L,EAAQ0L,KAAO,IAAM1L,EAAQ2L,KAAK,EAAG,EAAE,EAChE,KAAKlP,KAAKwJ,CAAG,EACdA,EAAMA,EAAI1I,QAAQ,KAAM,EAAE,EAClB,KAAKd,KAAKwJ,CAAG,IACrBA,EAAMA,EAAI1I,QAAQ,KAAM,EAAE,EAC1B+O,EAAQ,OAEHA,EAAQrG,EAAI1I,QAAQ,SAAU,IAAI,EAAI,MAC/C,CAAC,GAEmD,iBAEpD,IAME,OADA9B,EAAKd,MAAQqR,EAAW,IAAI/C,SAAS,YAAa+C,CAAQ,EACnDA,EAASzL,EAAMqL,CAAI,CAI5B,CAHE,MAAMvP,GAEN,OADA,OAAOZ,EAAKd,MACLmR,EAAYzP,EAAG0P,CAAM,CAC9B,CACF,EAGA3G,EAAM1K,UAAU6R,OAAS,SAAShM,EAAMnF,GACtCmF,EAAOA,GAAQ,GAEf,IAAI9E,EAAO/D,KACPuK,EAASxG,EAAKd,MAAQc,EAAKd,MAAM4F,EAAMqL,CAAI,EAAInQ,EAAK0F,MAAM1F,EAAKuQ,SAAUzL,CAAI,EAIjF,MADoB,YAApB,OAAOnF,GAA2BA,EAAS6G,CAAM,EAC1CA,CACT,EAGa,SAAS+J,EAAUhM,GAC9B,OAAO,IAAIoF,EAAM4G,EAAUhM,CAAO,CACpC,GAGA1G,EAAOlC,OAAS,SAAS4I,GAEvB,IAAI,IAAI3H,KADR2H,EAAUA,GAAW,GAEnB5I,EAAOiB,GAAK2H,EAAQ3H,EAExB,EAEAiB,EAAO3B,EAAI,QAGXuD,EAAQ,SAAU5B,CAAM,CAC1B,CAAC,EC7JD6B,MAAMP,OAAO,SAASM,GACpB,aAEA,IAAIhE,EAAMC,SACN0H,EAAK,iBACLwN,EAAM,uBAING,EAAW,iBAGXpH,EAAQ,SAASpF,GACnB,IAAIvE,EAAO/D,KACX+D,EAAKrE,OAAS4I,GAAW,GACzBvE,EAAKrE,OAAO6E,MAAQ,EAAE5C,EAAQ4C,MAC9BR,EAAK8Q,OAAO,CAAA,CAAI,CAClB,EA8SIlT,GA3SJ+L,EAAM1K,UAAU9B,KAAO,WACrB,IAAIxB,EAASM,KAAKN,OAClB,GAA0B,UAAvB,OAAOA,EAAOiO,KACf,OAAOjO,EAAOiO,KAAKjN,SAAW4S,UAAY,EAAI,CAElD,EAGA5F,EAAM1K,UAAU+R,KAAO,WACrB,IA0JQC,EA7BAC,EA+CAC,EA3KJxV,EADOM,KACON,OAGdyV,EAASzV,EAAOyV,OAAS,WAAYzV,EACpC0V,OAAO1V,EAAOyV,MAAM,GAAK,EAC5B,EAuCE5Q,GApCJ7E,EAAO2V,OAAkC,UAAzB,OAAO3V,EAAO2V,OAC1B3V,EAAO2V,OACT,CAAC,OAAQ,OAAQ,QAEnB3V,EAAO4V,MAAQF,OAAO1V,EAAO4V,KAAK,GAAK,EACvC5V,EAAO6V,KAAOH,OAAO1V,EAAO6V,IAAI,GAAK,EAGrC7V,EAAO8V,OAAkC,UAAzB,OAAO9V,EAAO8V,OAC1B9V,EAAO8V,OACT,CAAC,GAAI,GAAI,GAAI,GAAI,IAGnB9V,EAAO+V,MAAQL,OAAO1V,EAAO+V,KAAK,GAAK,GAGvC/V,EAAOgW,MAAQlH,KAAKmH,KAAKjW,EAAO4V,MAAM5V,EAAO+V,KAAK,GAAK,EAGpD/V,EAAO6V,KAAO7V,EAAOgW,MACtBhW,EAAO6V,KAAO7V,EAAOgW,MACbhW,EAAO6V,KAAO,IACtB7V,EAAO6V,KAAO,GAIbJ,EAAS,EACVA,EAAS,EACAA,EAASzV,EAAOgW,QACzBP,EAASzV,EAAOgW,OAGlBhW,EAAOkW,KAAO,SAAUlW,EAASA,EAAOkW,KAAO,2BAC/ClW,EAAOmW,KAAO,SAAUnW,EAASA,EAAOmW,KAAO,2BAGnCnW,EAAOgW,MAAQP,EACvB3G,KAAKmH,MAAOjW,EAAO6V,MAAiB,EAATJ,EAAa,EAAI,KAAgB,EAATA,EAAaA,EAAS,EAAG,EAC9E,GAGEW,EAAQ,CAEVF,KACSlW,EAAOkW,KACV,gCAAgD,GAAflW,EAAO6V,KAAa,IAAMT,EAAY,IAAK,iBAAkBpV,EAAO6V,KAAO,GAAI,KAAM7V,EAAOkW,KAAM,OACrI,GAIJG,KAAM,WACJ,IAAIC,EAAQ,GAGZ,GAAGtW,EAAO4V,MAAQ,EAChB,MAAO,GAIE,EAAR/Q,GAA8B,CAAA,IAAjB7E,EAAOuW,OAA8B,IAAXd,GACxCa,EAAM1Q,KAAK,2EAA4E5F,EAAOuW,OAAS,GAAI,MAAM,EAInH,IAAIC,EAAQ1H,KAAK2H,OAAOhB,EAAO,GAAG,CAAC,EAC/BP,EAAgB,EAARrQ,EAAY7E,EAAO6V,KAAOW,EAAQ,EAC1CE,EAAc,EAAR7R,GACJ8R,EAAM3W,EAAO6V,MAAQJ,EAASe,EAAQ,IAC7BxW,EAAOgW,MAAQhW,EAAOgW,MAAQW,EACtClB,EAaP,IAVGiB,EAAMxB,EAAQO,EAAS,IACxBP,EAAQwB,EAAMjB,EAAS,GAIL,CAAA,IAAjBzV,EAAOuW,OAA2B,EAARrB,GAC3BoB,EAAM1Q,KAAK,iDAAiD,EAIxDsP,GAASwB,EAAKxB,CAAK,GACpBA,IAAUlV,EAAO6V,KAElBS,EAAM1Q,KAAK,kEAAmE,KAAKP,KAAKrF,EAAO4W,KAAK,EAAI,2BAA4B5W,EAAO4W,MAAO,KAAO,IAAK,aAAc1B,EAAO,cAAc,EAEjMoB,EAAM1Q,KAAK,iBAAkBsP,EAAO,KAAMA,EAAO,MAAM,EAc3D,OATGlV,EAAOgW,MAAQP,GAAUzV,EAAOgW,MAAQU,GAAuB,CAAA,IAAhB1W,EAAOe,OACpD2V,EAAM,EAAI1W,EAAOgW,OAClBM,EAAM1Q,KAAK,iDAAiD,EAEhD,IAAX6P,IACDa,EAAM1Q,KAAK,sEAAuE5F,EAAOgW,MAAO,MAAOhW,EAAOe,MAAQf,EAAOgW,OAAQ,MAAM,EAIxIM,EAAMtE,KAAK,EAAE,CACtB,EAAE,EAGFmE,KACSnW,EAAOmW,KACV,gCAAiCnW,EAAO6V,MAAQ7V,EAAOgW,MAAS,IAAMZ,EAAY,IAAK,iBAAkBpV,EAAO6V,KAAO,GAAI,KAAM7V,EAAOmW,KAAM,OAChJ,GAIJP,MAAO,4CAAwC5V,EAAO4V,MAAO,iBAG7DG,OACMR,EAAU,CAAC,0DASfxR,MAAMa,KAAK5E,EAAO8V,OAAQ,SAASjR,EAAOL,GAR3B,IACTqS,EAQJtB,EAAQ3P,KACN,kBAAmBpB,EAAM,KAAMA,IAASxE,EAAO+V,MAAQ,YAAc,IAAK,KATxEc,GADkBrS,EAWPA,GAVC,iBACsB,YAA/B,OAAOxE,EAAO8W,cAChB9W,EAAO8W,aAAatS,CAAI,GAC3BqS,GAQE,WACJ,CACF,CAAC,EAEMtB,EAAQvD,KAAK,EAAE,EAAG,oBAI3B+E,QAAS,CACP,iBAAkB/W,EAAO6V,KAAM,mCAC7B,gDACF,QACA7D,KAAK,EAAE,EAGTgF,KAMS,CACL,qCANE1B,EAAsC,UAA3B,OAAOtV,EAAOsV,SAAwBtV,EAAOsV,SAAW,CACrE,mBACA,WACA,qBAG8C,GAC5C,qCAAsCtV,EAAO6V,KAAM,yBACnDP,EAAS,GAAI,mDAAoDA,EAAS,GAAI,YAChF,WACAtD,KAAK,EAAE,CAEb,EAEA,MAAO,CAAC,sDAAuDhS,EAAO4W,MACpE,KAAKvR,KAAKrF,EAAO4W,KAAK,EAAI,OAAS5W,EAAO4W,MACxC,WAAY,uBAAwB5W,EAAO6E,MAAO,MAE9C2Q,EAAQ,GACZzR,MAAMa,KAAK5E,EAAO2V,OAAQ,SAAS9Q,EAAOL,GACrC4R,EAAM5R,IACPgR,EAAM5P,KAAKwQ,EAAM5R,EAAK,CAE1B,CAAC,EACMgR,EAAMxD,KAAK,EAAE,GAExB,UAAUA,KAAK,EAAE,CACnB,EAGAhE,EAAM1K,UAAU2T,KAAO,SAAShJ,EAAMiJ,GACpC,GAAIjJ,EAAJ,CAEA,IAAI5J,EAAO/D,KACPN,EAASqE,EAAKrE,OACdmX,EAASlJ,EAAKiF,SACdkE,EAAMnJ,EAAKgH,GAAK,QAAQ,EAAE,GAC1BoC,EAAQpJ,EAAKgH,GAAK,OAAO,EAAE,GAC3BzC,EAASvE,EAAKgH,GAAK,QAAQ,EAAE,GAC7B+B,EAAO,WACT,IAAInB,EAAOH,OAAO2B,EAAMrN,MAAM7D,QAAQ,SAAU,EAAE,CAAC,EAChD0P,IACD7V,EAAO6V,KAAOA,EACdxR,EAAK8Q,OAAO,EAEhB,EAEA,GAAG+B,EAAQ,OAAOF,EAAK,EAGvB,IAAI,IAAI/V,EAAI,EAAG2K,EAAMuL,EAAOnW,OAAQC,EAAI2K,EAAK3K,CAAC,GACJ,MAArCkW,EAAOlW,GAAGqW,SAAS9M,YAAY,GAChCvI,EAAQ0C,GAAGwS,EAAOlW,GAAI,QAAS,WAC7B,IAAI4U,EAAOH,OAAOpV,KAAK4H,aAAa,WAAW,CAAC,EAC7C2N,EAAO,GAAKA,EAAO7V,EAAOgW,QAC7BhW,EAAO6V,KAAOA,EACdxR,EAAK8Q,OAAO,EACd,CAAC,EAKF3C,GACDvQ,EAAQ0C,GAAG6N,EAAQ,SAAU,WAC3B,IAAIxI,EAAQ1J,KAAK0J,MACdhK,EAAO6V,KAAK7L,EAAQhK,EAAO4V,QAC5B5V,EAAO6V,KAAO/G,KAAKmH,KAAKjW,EAAO4V,MAAM5L,CAAK,GAE5ChK,EAAO+V,MAAQ/L,EACf3F,EAAK8Q,OAAO,CACd,CAAC,EAIAiC,GACDnV,EAAQ0C,GAAGyS,EAAK,QAAS,WACvBJ,EAAK,CACP,CAAC,CA9Ca,CAgDlB,EAGAhJ,EAAM1K,UAAU0T,KAAO,SAAS/I,GAC9B,IAEI5J,EACAgT,EAHApJ,IAEA5J,EAAO/D,KACP+W,EAAQpJ,EAAKgH,GAAK,OAAO,EAAE,KAK/BhT,EAAQ0C,GAAG0S,EAAO,QAAS,SAASpS,GAClC,IAAI+E,EAAQ1J,KAAK0J,MACbuN,EAAUtS,EAAEsS,QAEb,kBAAkBlS,KAAKkS,CAAO,IAE9B,KAAKlS,KAAK2E,CAAK,IAChB1J,KAAK0J,MAAQA,EAAM7D,QAAQ,KAAM,EAAE,GAEtB,KAAZoR,GACDlT,EAAK4S,KAAKhJ,EAAM,CAAA,CAAI,EAExB,CAAC,CACH,EAGAD,EAAM1K,UAAU6R,OAAS,SAASqC,GAChC,IAAInT,EAAO/D,KACPN,EAASqE,EAAKrE,OACdwB,EAAO6C,EAAK7C,KAAK,EACjB6T,EAAOhR,EAAKgR,KAAK,EAcjBpH,GAZQ,IAATzM,EACDxB,EAAOiO,OAASjO,EAAOiO,KAAK+B,UAAYqF,GACvB,IAAT7T,EACRxB,EAAOiO,KAAKiG,KAAKmB,CAAI,EAElBvV,EAAI2H,GAAIzH,EAAOiO,IAAI,IACpBnO,EAAI2H,GAAIzH,EAAOiO,IAAI,EAAE+B,UAAYqF,GAIrCrV,EAAOiX,MAAQjX,EAAOiX,KAAKjX,EAAQwX,CAAI,EAE5B1X,EAAI2H,GAAI,iBAAmBzH,EAAO6E,KAAK,GAClDR,EAAK4S,KAAKhJ,CAAI,EAEXjO,EAAOkJ,MAAQ,CAACsO,IACjBvR,SAASiD,KAAO,IAAKlJ,EAAOkJ,KAAM,IAAKlJ,EAAO6V,MAGhDxR,EAAK2S,KAAK/I,CAAI,CAChB,EAGc,CAEZkH,OAAQ,SAASvM,GAEf,OADQ,IAAIoF,EAAMpF,CAAO,EAChB/D,KACX,EACAA,MAAOd,MAAM9B,QAAW8B,MAAM9B,QAAQ4C,MAAQ,IAAS,EACvDF,GAAI,SAASsJ,EAAMwJ,EAAM/S,GAKvB,OAJAuJ,EAAKtH,YAAcsH,EAAKtH,YAAY,KAAM8Q,EAAM,SAASxS,GACvDA,EAAEyJ,OAASzJ,EAAEM,WACbb,EAAGgH,KAAKuC,EAAMhJ,CAAC,CACjB,CAAC,EAAIgJ,EAAKpH,iBAAiB4Q,EAAM/S,EAAI,CAAA,CAAK,EACnCpE,IACT,CACF,GAEAwD,EAvUe,UAuUG7B,CAAO,CAC3B,CAAC,EClVA,CAAC,SAAS6L,EAAQ/N,GACjB,aAEA,IAAI2X,EAAU5J,EAAO/J,OAASA,MAAMP,OAAQmU,EAAQ,CAClDjX,QAAUoN,EAAOhM,KAAOA,IAAIpB,QAAWoB,IAAIpB,QAAU,GAGpD4G,KAAM,SAASC,EAAM7C,EAAI8C,GAGpBxF,EAAQoH,MAGT0E,EAAOhM,KAAOA,IAAIiC,OACnBjC,IAAIiC,MAAMuD,KAAKtF,EAAQoH,KAAO7B,EAAM7C,EAAI8C,CAAO,CAEnD,CACF,EAGIhH,EAASsN,EAAOrN,cAAgB,GAIhCmX,EAAS,mBAGT5V,EAAU,CACZzB,EAAG,QACFP,OAAQ,CACP6X,UAAW,CACb,EACChT,MAAQiJ,EAAO9L,SAAW8L,EAAO9L,QAAQzB,EAAK,IAAS,EACvD6I,KAAM5I,EAAOsX,aAAeH,EAAMjX,QAGlCqX,IAAK,SAASnP,GACb,IAAIvE,EAAO/D,KAEX,OADA+D,EAAKrE,OAAS8B,IAAIkH,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EAC1CvE,CACT,EAGCsT,MAAO,SAAS3T,GACf,IAAIwD,EAAU,UAEV4B,GAAQsO,EAAU,WAAa,IAAM,iBAAkB1V,EAAQzB,EAQnE,OANAmX,EACE3T,MAAM,aACmB,YAApB,OAAOC,GAA2BA,EAAS,EAC9CD,MAAMqE,OAAOgB,EAAMpF,EAAUwD,CAAO,EACpCmQ,EAAMrQ,KAAK8B,EAAMpF,EAAUwD,CAAO,EAE/BlH,IACT,CACF,EAGI0X,EAAa,WACf,IAAI3T,EAAO/D,KAEPmH,EADUpD,EAAKrE,OACFyH,GAIjB,OAFAuQ,EAAW3T,KAAKoD,GAAMpD,GAEV4T,KAAO,CAEjB5M,KAAM,SAAS6M,GACb7T,EAAKgH,KAAKK,KAAKrH,EAAM6T,CAAO,CAC9B,EAEAC,OAAQ,SAASvP,GACfvE,EAAK8T,OAAOzM,KAAKrH,EAAMuE,CAAO,CAChC,EACA5I,OAAQqE,EAAKrE,MACf,CACF,EAGIoY,EAAW,UAEXC,EAAO,aAGPjD,EAAW,mBACXkD,EAAa,CAAC,IAAK,KAEnBC,EAAc,uBACdC,EAAY,qBACZC,EAAgB,mBAChBC,EAAY,qBAEZC,EAAY,mBACZC,EAAY,mBAIZC,EAAe,wBACfC,EAAiB,oBACjBC,EAAgB,oBAChBC,EAAe,wBAEfC,EAAa,sBAGbjL,EAAQ,SAASpF,GACnB,IAoBMsQ,EApBF7U,EAAO/D,KAKP2N,GAJJ5J,EAAKQ,MAAQ,EAAE7C,EAAQ6C,MACvBR,EAAKrE,OAAS8B,IAAIkH,OAAO,GAAI3E,EAAKrE,OAAQgC,EAAQhC,OAAQ4I,CAAO,EAGtD9G,IAAI8G,EAAQqF,MAAQ5J,EAAKrE,OAAOiO,IAAI,GAC/C,OAAiB,EAAdA,EAAKjN,QACNc,IAAI8C,KAAKqJ,EAAM,WACbjM,EAAQmT,OAAOrT,IAAIkH,OAAO,GAAI3E,EAAKrE,OAAQ,CACzCiO,KAAM3N,IACR,CAAC,CAAC,CACJ,CAAC,EACM+D,IAITuE,EAAU9G,IAAIkH,OAAO3E,EAAKrE,OAAQ8B,IAAI8G,QAAQqF,EAAK,EAAE,CAAC,EAGnDA,EAAK,IAAMA,EAAKgB,KAAK2I,CAAM,GACxBsB,EAAUlB,EAAWmB,QAAQlL,EAAKgB,KAAK2I,CAAM,CAAC,GAE3CsB,EAAQf,OAAOvP,CAAO,EADhB,KAAA,GAKfA,EAAQnB,GAAK,OAAQmB,EAAUA,EAAQnB,GACrCwG,EAAKgB,KAAK,IAAI,GAAK5K,EAAKQ,MAI1B+D,EAAQ/D,MAAQR,EAAKQ,MALrB+D,KAQA5G,EAAQ2V,MAAM,WACZtT,EAAK+U,KAAK,CACZ,CAAC,GACH,EAGIC,EAAW,kCAGfrB,EAAWsB,UAAY,SAASC,GAC9B,OAAQA,GAAU,IAAIvT,MAAM,IAAI4E,OAAOyO,EAAW,KAAM,GAAG,CAAC,GAAK,EACnE,EAOArL,EAAMwL,WAAa,SAASC,GAC1B,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,CAChE,EAGAzL,EAAM1K,UAAUtD,OAAS,CACvBwB,KAAM,OACLkY,MAAO,CAAA,EACPH,OAAQ,aACRvP,MAAO,KACP2P,YAAa,CAAA,EACbC,IAAK,WACLjD,IAAK,aACLkD,QAAS,QACTC,KAAM,CAAA,EACNC,WAAY,CAAA,EACZC,UAAW,CAAA,EACXC,KAAM,CAAC,QAAS,MAAO,WACvBC,KAAM,KACNtD,MAAO,UACPxG,SAAU,KACV+J,SAAU,CAAA,EACVC,KAAM,GACNC,SAAU,KACVC,OAAQ,KACR5H,KAAM,KACN6H,OAAQ,KACRC,YAAa,CAAA,EACbC,MAAO,CACV,EAGAzM,EAAM1K,UAAU4W,KAAO,WACrB,IAECpK,EAAO,CACN4K,GAAI,CACFC,MAAO,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACrCC,KAAM,CAAC,SAAK,SAAK,UACjBC,SAAU,2BACVC,UAAW,2BACXC,QAAS,2BACTC,SAAU,2BACVC,MAAO,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,eAAM,gBAChEC,MAAO,CACNC,QAAS,eACRC,MAAO,eACPC,IAAK,cACR,EACClb,QAAS,6GACTmb,YAAa,2EACbC,YAAa,CAAC,2GAA4B,sCAC1CC,QAAS,4CACZ,EACCC,GAAI,CACHd,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC3CC,KAAM,CAAC,QAAS,UAAW,WAC3BC,SAAU,cACVC,UAAW,aACXC,QAAS,WACTC,SAAU,cACVC,MAAO,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACrFC,MAAO,CACNC,QAAS,UACRC,MAAO,QACPC,IAAK,KACR,EACClb,QAAS,8DACTmb,YAAa,eACbC,YAAa,CAAC,sDAAkD,yBAChEC,QAAS,qBACZ,CACF,EACA,OAAO1L,EAxCIxP,KACKN,OAuCIka,OAASpK,EAAS,EACxC,EAGA9B,EAAM1K,UAAU6U,OAAS,SAASvP,GACrBtI,KACNN,OAAS8B,IAAIkH,OAAO,GADd1I,KACuBN,OAAQ4I,CAAO,EADtCtI,KAEN8Y,KAAK,CACZ,EAGApL,EAAM1K,UAAU8V,KAAO,WACrB,IAAI/U,EAAO/D,KACVsI,EAAUvE,EAAKrE,OACf0b,EAAgC,WAArB9S,EAAQwH,SACnBmJ,EAAS,CACRE,KAAM,OACLwB,MAAO,UACPU,KAAM,aACNf,KAAM,WACNgB,SAAU,qBACb,EAEAhT,EAAQqF,KAAOnM,IAAI8G,EAAQqF,IAAI,EAC/BrF,EAAQiT,UAAY/Z,IAAI8G,EAAQiT,SAAS,EAErCjT,EAAQqF,KAAK,KAEa,UAA9BlK,MAAMvC,KAAKoH,EAAQgO,KAAK,IAAkBhO,EAAQgO,MAAQ,CAAChO,EAAQgO,QAE/DhO,EAAQkT,YACW,aAAjBlT,EAAQpH,MAAuBoH,EAAQ8Q,QAEzC,OAAO9Q,EAAQkT,UAKnBzX,EAAK0X,SAAYnT,EAAQ8Q,MACE,UAAzB,OAAO9Q,EAAQ8Q,MAAqB9Q,EAAQ8Q,MAAQ,IAClD,GAGJrV,EAAK2X,YAAc,EAAGpT,CAAAA,EAAQ8Q,OAAS9Q,CAAAA,EAAQoT,aAAiC,SAAjBpT,EAAQpH,MAAoC,aAAjBoH,EAAQpH,MAGlG6C,EAAK4X,kBAAoB,WACvB,IAAIC,EAAQ7X,EAAK2X,YAIjB,OAHA3X,EAAK2X,YAAepT,EAAQ8Q,QAA2B,SAAjB9Q,EAAQpH,MAAoC,aAAjBoH,EAAQpH,QAClE,CAAC6C,EAAK8X,WAAa,CAAC9X,EAAK+X,SAAa/X,EAAK8X,WAAa9X,EAAK+X,SAAW/X,EAAK8X,UAAU1C,OAASpV,EAAK+X,QAAQ3C,MAAQpV,EAAK8X,UAAUlB,QAAU5W,EAAK+X,QAAQnB,OAClKnZ,IAAIuC,EAAK4J,IAAI,EAAE5J,EAAK2X,YAAc,WAAa,eAAe,uBAAuB,EAC9E3X,EAAK2X,aAAeE,CAC7B,EAGA7X,EAAK4X,kBAAkBI,KAAOhY,EAAK2X,aAAuC,SAAxBpT,EAAQoT,YAGzB,UAA9BjY,MAAMvC,KAAKoH,EAAQ8Q,KAAK,IACzBrV,EAAKiY,UAAY,CACfxa,IAAI8G,EAAQ8Q,MAAM,EAAE,EACpB5X,IAAI8G,EAAQ8Q,MAAM,EAAE,IAKpBH,EAAO3Q,EAAQpH,QACjBsM,EAAOrM,SAAWA,QAAQH,OAASG,QAAQH,MAAM,uBAAyBsH,EAAQpH,KAAO,oBAAqB,EAC9GoH,EAAQpH,KAAO,QAIdoH,EAAQ2Q,SAAWA,EAAOoC,OAC3B/S,EAAQ2Q,OAASA,EAAO3Q,EAAQpH,OAAS+X,EAAOoC,MAIlDtX,EAAKkV,OAASvB,EAAWsB,UAAU1Q,EAAQ2Q,MAAM,EAG7C3Q,EAAQiP,WACL,CAAA,UAAUxS,KAAKuD,EAAQiP,SAAS,IAC/BqC,EAAO7V,EAAK6V,KAAK,EACrBtR,EAAQiP,UAAYqC,EAAKS,MAAM/T,QAAQgC,EAAQiP,SAAS,EAC9B,CAAC,IAAvBjP,EAAQiP,aAAkBjP,EAAQiP,UAAY,GAKtDxT,EAAKkY,OAAS,GACdlY,EAAKmY,UAAY,GACjB1a,IAAI8C,KAAKP,EAAKkV,OAAQ,SAAStY,EAAGuD,GAC5BiY,EAAO,IAAI7R,OAAOyO,CAAQ,EAAEhU,KAAKb,CAAI,EACrC,QACG,IAAIoG,OAAOyO,CAAQ,EAAEhU,KAAKhB,EAAKkV,OAAa,IAANtY,EAAUA,EAAI,EAAIA,EAAI,IAAI,EAAE,EAChE,WAAWoE,KAAKb,CAAI,EAAU,EAC1BA,EAAKxD,OAEX,SAASqE,KAAKb,CAAI,EAAU,MAC5B,MAAMa,KAAKb,CAAI,EAAU,QACrB,OACJ,IACL,KAAOA,EACTH,EAAKkY,OAASlY,EAAKkY,OAASE,EAC5BpY,EAAKmY,UAAYnY,EAAKmY,UAAY,IAAMC,EAAM,GAChD,CAAC,EAEDpY,EAAKqY,WAAa,IAAI9R,OAAO,IAAKvG,EAAKkY,OAAQ,GAAG,EAClDlY,EAAKkY,OAAS,IAAI3R,OAAO,KACvBhC,EAAQ8Q,MACNrV,EAAKkY,OAAS,QAASlY,EAAK0X,SAAW,MAAQ1X,EAAKkY,OACpDlY,EAAKkY,QACN,GAAG,EACNlY,EAAKmY,UAAY,IAAI5R,OAAO,IAAKvG,EAAKmY,UAAW,IAAK,EAAE,EAGpDnY,EAAKsY,QAAQ/T,EAAQqF,KAAK,EAAE,GACP,UAApBrF,EAAQiR,UACTjR,EAAQiR,QAAU,SAKtBjR,EAAQqF,KAAKgB,KAAK,UAAW5K,EAAKQ,KAAK,EACvC+D,EAAQiT,UAAU5M,KAAK,UAAW5K,EAAKQ,KAAK,EAC5C+D,EAAQqF,KAAKgB,KAAK2I,EAAQhP,EAAQnB,EAAE,EAGpCmB,EAAQwR,KAAOtY,IAAIkH,OAAO,GAAKJ,EAAQuR,UAA6B,OAAjBvR,EAAQsR,KAAiB,CAC1E0C,QAAS,eACRC,SAAU,eACVC,QAAS,eACTC,SAAU,eACVC,QAAS,eACTC,QAAS,eACTC,QAAS,eACTC,QAAS,eACTC,SAAU,eACVC,SAAU,eACVC,UAAW,cACd,EAAI,GAAI1U,EAAQwR,IAAI,EAGpBtY,IAAI8C,KAAK,CAAC,MAAO,OAAQ,SAAS3D,EAAGuD,GACnC,IAAI+Y,EAAM,GACNC,EAAM,GACV,GAA4B,UAAzB,OAAO5U,EAAQpE,GAChB,IAAIiZ,EAAM7U,EAAQpE,GACjBkZ,EAAQ,IAAIlX,KACZoU,EAAOvW,EAAKsZ,QAAQ,CACnBlE,KAAMiE,EAAME,YAAY,EACvB3C,MAAOyC,EAAMG,SAAS,EACtBlC,KAAM+B,EAAMI,QAAQ,EACpBC,MAAO9c,EAAI,GAAK,EAChB+c,QAAS/c,EAAI,GAAK,EAClBgd,QAAShd,EAAI,GAAK,CACrB,CAAC,EAAEwF,QAAQ,EAEVyX,EAAW,IAAI1X,KACdiX,EACEA,EAHK,MAGS7C,EAHT,MAGgB6C,EAAYA,EAC/B7C,CACN,EACA2C,EAAM,CAACW,EAASN,YAAY,EAAGM,EAASL,SAAS,EAAI,EAAGK,EAASJ,QAAQ,GACzEN,EAAM,CAACU,EAASC,SAAS,EAAGD,EAASE,WAAW,EAAGF,EAASG,WAAW,QAClE,GAA4B,UAAzB,OAAOzV,EAAQpE,GACvB+Y,GAAO3U,EAAQpE,GAAMwB,MAAM,aAAa,GAAK,CAAC,KAAK,GAAGsD,MAAM,GAAG,EAC/DkU,GAAO5U,EAAQpE,GAAMwB,MAAM,aAAa,GAAK,CAAC,KAAK,GAAGsD,MAAM,GAAG,OAC1D,GAA4B,UAAzB,OAAOV,EAAQpE,GACvB,OAAOoE,EAAQpE,GAEjBoE,EAAQpE,GAAQ,CACdiV,KAAe,EAAT8D,EAAI,KAAU,IAAI/W,MAAOoX,YAAY,EAC1C3C,MAAOsC,EAAI,IAAe,EAATA,EAAI,IAAU,GAAI,IAAI/W,MAAOqX,SAAS,EACvDlC,KAAe,EAAT4B,EAAI,KAAU,IAAI/W,MAAOsX,QAAQ,EACvCC,MAAgB,EAATP,EAAI,GACXQ,QAAkB,EAATR,EAAI,GACbS,QAAkB,EAATT,EAAI,EAChB,CACF,CAAC,EAEDnZ,EAAKia,OAAS,gBAAiB1V,EAAQqF,KAAKgB,KAAK,SAAS,GAEvDrG,EAAQkR,MAAQ4B,IAAUrX,EAAK8Q,OAAO,EACzCuG,GAAYrX,EAAKyI,OAAO,EAGrBlE,EAAQoB,QAASpB,EAAQ+Q,cACO,SAA9B5V,MAAMvC,KAAKoH,EAAQoB,KAAK,EACzB3F,EAAKka,SAASla,EAAK0F,MAAM,EAAG1F,EAAKma,WAAW5V,EAAQoB,KAAK,CAAC,CAAC,EAE3D3F,EAAKka,SAAS3V,EAAQoB,KAAK,EAGjC,EAGAgE,EAAM1K,UAAU6R,OAAS,WACvB,IAgBUsJ,EAoHOxE,EAsBTyE,EA8EJC,EAxOAta,EAAO/D,KACVsI,EAAUvE,EAAKrE,OACfka,EAAO7V,EAAK6V,KAAK,EACjBwB,EAAgC,WAArB9S,EAAQwH,SAGnBnC,EAAO5J,EAAK4J,KAAOnM,IAAImM,KAAK,MAAO,CAClCxG,GAAIpD,EAAKia,OACRM,QAAS,CACR,gBACChW,EAAQ8Q,MAAQ,uBAAyB,GACzCrV,EAAK2X,YAAc,yBAA2B,GAC9CN,EAAY,IAAKnD,EAAe,GAChC3P,EAAQkT,UAAY,2BAA6B,IAG5C2C,EAAW,GACf3c,IAAI8C,KAAKgE,EAAQgO,MAAO,SAAU/R,EAAO+R,GACzB,YAAVA,GAAwB,KAAKvR,KAAKuR,CAAK,IACzC6H,GAAY,kBAAoB7H,EAEpC,CAAC,EACM6H,IAETzM,KAAK,EAAE,CACX,CAAC,EAGA6M,EAAWxa,EAAKwa,SAAW,GAC3BC,EAAaza,EAAKya,WAAa,GAC/BC,EAAW1a,EAAK0a,SAAW,GAC3BC,EAAY3a,EAAK7B,MAAQ,GAGzByc,EAAY5a,EAAK6a,OAASpd,IAAImM,KAAK,MAAO,CACzC2Q,QAlXc,sBAmXhB,CAAC,EAGAO,EAAc9a,EAAK+a,SAAWtd,IAAImM,KAAK,KAAM,CAC5C2Q,QAtXgB,wBAuXlB,CAAC,EA6LG1X,GA3LD0B,EAAQ0R,SAAQrM,EAAK/G,MAAMoT,OAAS1R,EAAQ0R,QAG/CxY,IAAI8C,KAAK,IAAIuJ,MAAM,CAAC,EAAG,SAASlN,GAC9B,GAAG,CAAC2H,EAAQ8Q,OAAa,EAAJzY,EACnB,MAAO,CAAA,EAIT,IAAIoe,EAAYvd,IAAImM,KAAK,MAAO,CAC9B2Q,QAAS,sBACX,CAAC,EAGAU,EAAc,GACTrR,EAAOnM,IAAImM,KAAK,IAAK,CACvB2Q,QAAS,wCACX,CAAC,GACI5O,UAAY,WACV/B,KAEHA,EAAOnM,IAAImM,KAAK,IAAK,CACvB2Q,QAAS,wCACX,CAAC,GACI5O,UAAY,WACV/B,IAEHA,EAAOnM,IAAImM,KAAK,MAAO,CACzB2Q,QAAS,gBACX,CAAC,EAAGW,EAAQzd,IAAImM,KAAK,MAAM,EAAGuR,EAAQ1d,IAAImM,KAAK,MAAM,EACrDA,EAAKvH,YAAY6Y,CAAK,EACtBtR,EAAKvH,YAAY8Y,CAAK,EACfvR,KAEHA,EAAOnM,IAAImM,KAAK,IAAK,CACvB2Q,QAAS,wCACX,CAAC,GACI5O,UAAY,WACV/B,KAEHA,EAAOnM,IAAImM,KAAK,IAAK,CACvB2Q,QAAS,wCACX,CAAC,GACI5O,UAAY,WACV/B,IAIRwR,EAAa3d,IAAImM,KAAK,MAAO,CAC5B2Q,QAAS,uBACX,CAAC,EACApc,EAAQV,IAAImM,KAAK,OAAO,EACxByR,EAAQ5d,IAAImM,KAAK,OAAO,EAAG0R,EAAU7d,IAAImM,KAAK,IAAI,EAGnDnM,IAAI8C,KAAK0a,EAAa,SAASre,EAAGuD,GAChC6a,EAAU3Y,YAAYlC,CAAI,CAC5B,CAAC,EAGDkb,EAAMhZ,YAAYiZ,CAAO,EACzB7d,IAAI8C,KAAK,IAAIuJ,MAAM,CAAC,EAAG,SAASlN,GAC9B,IAAI2e,EAAKpd,EAAMqd,UAAU,CAAC,EAC1B/d,IAAI8C,KAAK,IAAIuJ,MAAM,CAAC,EAAG,SAAS2R,GAC9B,IACMC,EADG,IAAN9e,KACG8e,EAAKje,IAAImM,KAAK,IAAI,GACnB+B,UAAYkK,EAAKS,OAAOmF,EAAIlX,EAAQiP,WAAa,GACpD8H,EAAQjZ,YAAYqZ,CAAE,GAExBH,EAAGI,WAAWF,CAAC,CACjB,CAAC,CACH,CAAC,EACDtd,EAAMyd,aAAaP,EAAOld,EAAM0Q,SAAS,EAAE,EAC3CuM,EAAW/Y,YAAYlE,CAAK,EAE5Bqc,EAAS5d,GAAKa,IAAImM,KAAK,MAAO,CAC5B2Q,QAASsB,wCAAmCjf,CAC9C,CAAC,EAED4d,EAAS5d,GAAGyF,YAAY2Y,CAAS,EACjCR,EAAS5d,GAAGyF,YAAY+Y,CAAU,EAElCX,EAAWlZ,KAAK0Z,CAAW,EAC3BP,EAASnZ,KAAK6Z,CAAU,EACxBT,EAAUpZ,KAAKpD,CAAK,CACtB,CAAC,EAGDV,IAAImd,CAAS,EAAE/K,MACTA,EAAO,GAAI+F,EAAO,GACF,aAAjBrR,EAAQpH,MACT0S,EAAKtO,KAAK,oCAAqCmT,EAAe,KAAMmB,EAAKW,SAAU,SAAS,GAExFjS,EAAQ8Q,OAA0B,aAAjB9Q,EAAQpH,MAAwBoH,EAAQkT,YAC7D5H,EAAKtO,KAAK,gBAAiBoT,EAAc,YAAakB,EAAKsB,QAAS,WAAW,EAGjF1Z,IAAI8C,KAAKgE,EAAQqR,KAAM,SAAShZ,EAAGuD,GACjC,IAAI2b,EAAQjG,EAAKgB,MAAM1W,IAAS,MAC7BoE,EAAQ8Q,OAAkB,QAATlV,IACjBkX,GAAqB,UAATlX,IAAkB2b,EAAyB,OAAjBvX,EAAQsR,KAAgB,eAAO,SACxED,EAAKrU,KAAK,mBAAoBpB,EAAM,yBAA0BA,EAAM,KAAM2b,EAAO,SAAS,EAC5F,CAAC,EACDjM,EAAKtO,KAAK,oCAAqCqU,EAAKjI,KAAK,EAAE,EAAG,QAAQ,EAC/DkC,EAAKlC,KAAK,EAAE,EAClB,EAGCpJ,EAAQwX,YACVnS,EAAKvH,YAAYyY,CAAW,EAC5Brd,IAAIqd,CAAW,EAAEjL,MACXwK,EAAe,GACnB5c,IAAI8C,KAAKgE,EAAQwX,UAAW,SAAUnf,EAAGuD,GACvCka,EAAa9Y,KAAK,mBAAqB3E,EAAI,KAAKuD,EAAKsL,KAAK,OAAO,CACnE,CAAC,EACM4O,EAAa1M,KAAK,EAAE,EAC1B,EAAE9B,KAAK,IAAI,EAAEvL,GAAG,QAAS,SAAUvE,GACpC,IAAIigB,EAAazX,EAAQwX,UAAU9f,KAAKggB,QAAe,QAAM,GACzDtW,GAAqC,YAA5B,OAAOqW,EAAWrW,MAC3BqW,EAAWrW,MAAM,EACjBqW,EAAWrW,QAAU,GAIrBxI,GAHCuC,MAAMgD,QAAQiD,CAAK,IACtBA,EAAQ,CAACA,IAEApB,EAAQpH,MAgCf+e,GA/BJze,IAAI8C,KAAKoF,EAAO,SAAU/I,EAAGuD,GAC3B,IAAIgc,EAAW,CAAC5X,EAAQ4X,SAAUnc,EAAK+X,SAASnb,GACnC,SAATO,GAAwC,SAArBuC,MAAMvC,KAAKgD,CAAI,EAChCH,EAAKkY,OAAOlX,KAAKb,CAAI,IACvBA,GAAQA,EAAKwB,MAAM3B,EAAKmY,SAAS,GAAK,IAAI3W,MAAM,CAAC,EACjD/D,IAAIkH,OAAOwX,EAAU,CAACzC,MAAiB,EAAVvZ,EAAK,GAAQwZ,QAAmB,EAAVxZ,EAAK,GAAQyZ,QAAmB,EAAVzZ,EAAK,EAAM,CAAC,GAGvF1C,IAAIkH,OAAOwX,EAAUnc,EAAKma,WAAgC,SAArBza,MAAMvC,KAAKgD,CAAI,EAAeA,EAAO,IAAIgC,KAAKhC,CAAI,CAAC,CAAC,EAG9E,SAAThD,GAA4B,aAATA,IACrB6C,EAAK,CAAC,YAAa,WAAWpD,IAAM,CAClC8c,MAAOyC,EAASzC,MAChBC,QAASwC,EAASxC,QAClBC,QAASuC,EAASvC,OACpB,GAEQ,IAANhd,EACFoD,EAAK8X,UAAYra,IAAIkH,OAAO,GAAIwX,CAAQ,EAExCnc,EAAKoc,SAAW,CAAA,EAEL,SAATjf,GAA4B,UAATA,GAA6B,SAATA,EACzC6C,EAAKqc,OAAOzf,GAAK,CAACuf,EAAS/G,KAAM+G,EAASvF,MAAQ,GACzCha,GACToD,EAAK4X,kBAAkBI,MAAQhY,EAAK4X,kBAAkB,CAE1D,CAAC,EACD5X,EAAKsc,UAAU,OAAO,EAAExG,SAAS,KAAM,KAAM,MAAM,EAErCrY,IAAIuC,EAAK6a,MAAM,EAAEhP,KAAK,IAAK6I,CAAa,EAAExF,YAAY6B,CAAQ,GAC5EmL,GAAwC,SAA7BA,EAAQtR,KAAK,UAAU,GAAgBsR,EAAQ,GAAGK,MAAM,EACnEvc,EAAKqO,KAAK,KAAM,QAAQ,EAExB5Q,IAAIxB,IAAI,EAAE+S,SAASgF,CAAI,EAGC,WAArBzP,EAAQwH,UACT/L,EAAKka,SAASla,EAAK0F,MAAM,CAAC,EAAE2I,KAAK,EAAEzI,OAAO,CAa9C,CAAC,GAIHnI,IAAI8C,KAAKia,EAAU,SAAS5d,EAAG4f,GAC7B5S,EAAKvH,YAAYma,CAAI,CACvB,CAAC,EACDjY,EAAQmR,YAAc9L,EAAKvH,YAAYuY,CAAS,EAGpCnd,IAAImM,KAAK,OAAO,GACxB4B,EAAY,GAEZiR,EAAiB,CAAA,EAoDjBrG,GAnDJ3Y,IAAI8C,KAAKgE,EAAQgO,MAAO,SAAU/R,EAAO+R,GAEpCkK,GAAkB,KAAKzb,KAAKuR,CAAK,GAElCkK,EAAiB,EADjBnC,EAAa,CAAA,GAEb9O,EAAUjK,KAAK,CACb,6DACA,0FACoC,CAAC,IAArCgD,EAAQgO,MAAMhQ,QAAQ,QAAQ,EAAW,GAAK,8DAC9C,wDACA,sEACAoL,KAAK,EAAE,EAAE7L,QAAQ,UAAW9B,EAAKia,MAAM,EAAEnY,QAAQ,aAAcyQ,CAAK,CAAC,GAItE,CAACkK,GAAkB,KAAKzb,KAAKuR,CAAK,GACnC/G,EAAUjK,KAAK,CACb,wEACA,+EACAoM,KAAK,EAAE,EAAE7L,QAAQ,UAAW9B,EAAKia,MAAM,EAAEnY,QAAQ,aAAcyQ,CAAK,CAAC,CAE3E,CAAC,EAEGhO,EAAQwX,WAAaxX,EAAQ8Q,OAC/B7J,EAAUjK,KAAK,6CAA6CO,QAAQ,UAAW9B,EAAKia,MAAM,CAAC,EAEzFzO,EAAU7O,SACZ6O,EAAYA,EAAUmC,KAAK,EAAE,EAC1B,eAAgB9K,GACjBA,EAAMiB,aAAa,OAAQ,UAAU,EACrCjB,EAAMyI,WAAWI,QAAUF,GAE3B3I,EAAM8I,UAAYH,EAGpB8O,GAAc7c,IAAImM,CAAI,EAAEoF,SAAS,oBAAoB,EACrDpF,EAAKvH,YAAYQ,CAAK,GAIxB7C,EAAK4F,OAAO+D,EAAM+S,YAAY,EAG9B/e,EAAQgf,OAASpY,EAAQnB,GAGzBiU,EAAW9S,EAAQqF,KAAKkC,OAAOlC,CAAI,GACjClO,EAASoP,KAAKzI,YAAYuH,CAAI,EAC7B5J,EAAK+L,SAAS,GAGLxH,EAAQ6R,MAAS,eAAgBxB,EAA0B,qBAAajR,SAASjE,MAAMiD,SAASiH,EAAM,SAAS,CAAC,EAAE,GAAI,wBAA0BrF,EAAQ6R,MAAM,IAAM,QAAU,eAAiB7R,EAAQ6R,MAAM,IAAM7R,EAAQ6R,OAAS,WAAc,IAC9PxM,EAAKgT,mBAAmB,cAAexG,CAAK,EAE5CpW,EAAKsc,UAAU,EAAExG,SAAS,KAAM,EAAG,MAAM,EACzC9V,EAAK6c,YAAY,EAEjBlT,EAAM+S,aAAe1c,EAAKia,OAE1Bja,EAAK8c,iBAAiB,EACG,YAAzB,OAAOvY,EAAQ+O,OAAwB/O,EAAQ+O,MAAM7V,IAAIkH,OAAO,GAAIJ,EAAQ4X,SAAU,CACpFvF,MAAOrS,EAAQ4X,SAASvF,MAAQ,CAClC,CAAC,CAAC,EAEF5W,EAAKmX,QAAQ,CACf,EAGAxN,EAAM1K,UAAU2G,OAAS,SAASiM,GAChC,IAAI7R,EAAO/D,KACVsI,EAAUvE,EAAKrE,OACfiO,EAAOnM,IAAI,KAAMoU,GAAQ7R,EAAKia,OAAO,EAiBtC,OAhBIrQ,EAAK,KAELA,EAAKuF,SAAS+E,CAAW,GAC3BlU,EAAKsc,UAAU,WACb1S,EAAKhE,OAAO,EAEZ,OAAO5F,EAAK8X,UACZ,OAAO9X,EAAK+X,QACZ,OAAO/X,EAAKoc,SACZ,OAAOpc,EAAKyW,UACZ,OAAOzW,EAAK0W,QACZ,OAAO/Y,EAAQgf,OACU,YAAzB,OAAOpY,EAAQ2L,OAAwB3L,EAAQ2L,MAAMlQ,CAAI,CAC3D,CAAC,EAEHvC,IAAI,IAAMmX,CAAU,EAAEhP,OAAO,GACtB5F,CACT,EAGA2J,EAAM1K,UAAU8M,SAAW,WACzB,IACCxH,EADUtI,KACKN,OAIhB,OAHA8B,IAAIsO,SAASxH,EAAQqF,KAAK,GAFf3N,KAEwB2N,KAAM,CACvCmC,SAAUxH,EAAQwH,QACpB,CAAC,EAJU9P,IAMb,EAGA0N,EAAM1K,UAAU+H,KAAO,SAASgF,GAC9B,IAAIhM,EAAO/D,KAEP8gB,GADU/c,EAAKrE,OACT8B,IAAImM,KAAK,MAAO,CACxB2Q,QAASlG,CACX,CAAC,GAEGrU,EAAK4J,OAWTmT,EAAIpR,WAPFK,EADiB,UAAhB,OAAOA,EACDA,GAAQ,GAER,CACL6H,QAAS7H,CACX,GAGmB6H,SAAW,GAChCpW,IAAIuC,EAAK4J,IAAI,EAAEiC,KAAK,IAAKwI,CAAS,EAAEzO,OAAO,EAC3C5F,EAAK4J,KAAKvH,YAAY0a,CAAG,EAEzBzT,aAAatJ,EAAKgd,QAAQ,EAC1Bhd,EAAKgd,SAAW1b,WAAW,WACzB7D,IAAIuC,EAAK4J,IAAI,EAAEiC,KAAK,IAAKwI,CAAS,EAAEzO,OAAO,CAC7C,EAAG,OAAQoG,EAAOA,EAAKiR,GAAK,GAAI,EAClC,EAGAtT,EAAM1K,UAAUie,QAAU,SAASC,EAAGC,EAAGjgB,GAUvC,OATAA,EAAOigB,CAAC,GAAKA,CAAC,GACXA,EAAI,IACLA,EAAI,GACJD,CAAC,IAEI,GAAJC,IACDA,EAAI,EACJD,CAAC,IAEI,CAACA,EAAGC,EACb,EAGAzT,EAAM1K,UAAUkb,WAAa,SAASb,GACpC,IAAIO,EAAWP,GAAW,IAAInX,KAC9B,MAAO,CACLiT,KAAMyE,EAASN,YAAY,EAC1B3C,MAAOiD,EAASL,SAAS,EACzBlC,KAAMuC,EAASJ,QAAQ,EACvBC,MAAOJ,EAAUA,EAAQQ,SAAS,EAAI,EACtCH,QAASL,EAAUA,EAAQS,WAAW,EAAI,EAC1CH,QAASN,EAAUA,EAAQU,WAAW,EAAI,CAC7C,CACF,EAGArQ,EAAM1K,UAAUqd,UAAY,SAASjc,GACnC,IAKCgd,EAAapgB,EAuJNqgB,EACHC,EAsBDC,EAnLAxd,EAAO/D,KAEVsI,GADW,IAAIpC,KACLnC,EAAKrE,QACfka,EAAO7V,EAAK6V,KAAK,EACjBsG,EAAW5X,EAAQ4X,SAAW5X,EAAQ4X,UAAYnc,EAAKma,WAAW,EAGlEvQ,EAAOrF,EAAQqF,KAAK,GAEpBjE,GADU3F,EAAKsY,QAAQ1O,CAAI,EACnB,WAEP,GAAG5J,EAAKiY,UAAU,CAChB,IAAIqF,EAAO,CAACtd,EAAKiY,UAAU,GAAG/N,IAAI,EAAGlK,EAAKiY,UAAU,GAAG/N,IAAI,GAE3D,GAAGoT,EAAK,IAAMA,EAAK,GACjB,OAAOA,EAAK3P,KAAK,IAAM3N,EAAK0X,SAAW,GAAG,CAE9C,CACA,OAAO1X,EAAKsY,QAAQ1O,CAAI,EACpBA,EAAKjE,MACe,WAArBpB,EAAQwH,SAAwB,GAAKtO,IAAImM,CAAI,EAAEgB,KAAK,UAAU,CACnE,EAAE,GAGD6S,EAAa,SAAStB,GAChBA,IAGFA,EAAS/G,KAAOnB,EAAW,KAAIkI,EAAS/G,KAAOnB,EAAW,GAAIhX,EAAQ,CAAA,GACrD,GAAjBkf,EAASvF,QAAYuF,EAASvF,MAAQ,GAAI3Z,EAAQ,CAAA,GAC/B,GAAnBkf,EAASvC,UAAcuC,EAASvC,QAAU,EAAGuC,EAASxC,OAAO,GAAI1c,EAAQ,CAAA,GACtD,GAAnBkf,EAASxC,UAAcwC,EAASxC,QAAU,EAAGwC,EAASzC,KAAK,GAAIzc,EAAQ,CAAA,GACtD,GAAjBkf,EAASzC,QAAYyC,EAASzC,MAAQ,EAAGzc,EAAQ,CAAA,GAGpDogB,EAAc1f,EAAQ+f,WAAWvB,EAASvF,MAAQ,EAAGuF,EAAS/G,IAAI,EAC/D+G,EAAS7E,KAAO+F,KAAalB,EAAS7E,KAAO+F,EAAapgB,EAAQ,CAAA,EACvE,EAGC0gB,EAAW,SAASxB,EAAUxW,EAAOnF,GACpC,IAAIod,EAAW,CAAC,YAAa,WAC7BjY,GAASA,EAAMhE,MAAM3B,EAAKmY,SAAS,GAAK,IAAI3W,MAAM,CAAC,EACnDhB,EAAQA,GAAS,EAEd+D,EAAQ8Q,QACTrV,EAAK4d,EAASpd,IAAUR,EAAK4d,EAASpd,KAAW,IAEnD/C,IAAI8C,KAAKP,EAAKkV,OAAQ,SAAStY,EAAGuD,GAChC,IAAI0d,EAAQC,WAAWnY,EAAM/I,EAAE,EAC5B+I,EAAM/I,GAAGD,OAASwD,EAAKxD,SAAQM,EAAQ,CAAA,GACvC,SAAS+D,KAAKb,CAAI,GAChB0d,EAAQ5J,EAAW,KAAI4J,EAAQ5J,EAAW,GAAIhX,EAAQ,CAAA,GACzDkf,EAAS/G,KAAOyI,GACR,OAAO7c,KAAKb,CAAI,GACrB0d,EAAQ,IAAGA,EAAQ,EAAG5gB,EAAQ,CAAA,GACjCkf,EAASvF,MAAQiH,EAAQ,GACjB,OAAO7c,KAAKb,CAAI,GACrB0d,EAAQ,IAAGA,EAAQ,EAAG5gB,EAAQ,CAAA,GACjCkf,EAAS7E,KAAOuG,GACR,OAAO7c,KAAKb,CAAI,GACpB0d,EAAQ,IAAc5gB,EAAQ,EAAnB4gB,EAAQ,IACX,GAARA,IAAYA,EAAQ,GAAI5gB,EAAQ,CAAA,GACpCkf,EAASzC,MAAQmE,EACjBtZ,EAAQ8Q,QAAUrV,EAAK4d,EAASpd,IAAQkZ,MAAQmE,IACxC,OAAO7c,KAAKb,CAAI,GACpB0d,EAAQ,IAAc5gB,EAAQ,EAAnB4gB,EAAQ,IACX,GAARA,IAAYA,EAAQ,GAAI5gB,EAAQ,CAAA,GACpCkf,EAASxC,QAAUkE,EACnBtZ,EAAQ8Q,QAAUrV,EAAK4d,EAASpd,IAAQmZ,QAAUkE,IAC1C,OAAO7c,KAAKb,CAAI,IACpB0d,EAAQ,IAAc5gB,EAAQ,EAAnB4gB,EAAQ,IACX,GAARA,IAAYA,EAAQ,GAAI5gB,EAAQ,CAAA,GACpCkf,EAASvC,QAAUiE,EACnBtZ,EAAQ8Q,SAAUrV,EAAK4d,EAASpd,IAAQoZ,QAAUiE,EAEtD,CAAC,EACDJ,EAAWtB,CAAQ,CACrB,EAkJA,MAhJU,UAAP9b,EACGkE,EAAQ8Q,OACVoI,EAAWzd,EAAK2X,YAAc3X,EAAK8X,UAAYqE,CAAQ,EACvDnc,EAAK+X,SAAW0F,EAAWzd,EAAK+X,OAAO,GAEvC0F,EAAWtB,CAAQ,GAMH,UAAjB,OADHxW,EAAQA,GAASpB,EAAQoB,SAEvBA,EAAQA,EAAM7D,QAAQ,OAAQ,GAAG,EAAEA,QAAQ,WAAY,EAAE,IAIvD4b,EAAa,WAEmD,IAC1DxY,EACHiX,EACA4B,EAJFxZ,EAAQ8Q,QACTrV,EAAK+X,QAAU/X,EAAK+X,SAAWta,IAAIkH,OAAO,GAAIJ,EAAQ4X,UAChDjX,EAAM,GACTiX,EAAW5X,EAAQ4X,SACnB4B,EAAM/d,EAAKkd,QAAQf,EAAS/G,KAAM+G,EAASvF,KAAK,EAG7B,SAAjBrS,EAAQpH,KACT+H,EAAIkQ,KAAO+G,EAAS/G,KAAO,EACF,SAAjB7Q,EAAQpH,OAChB+H,EAAIkQ,KAAO2I,EAAI,GACf7Y,EAAI0R,MAAQmH,EAAI,IAIE,aAAjBxZ,EAAQpH,MAAwC,SAAjBoH,EAAQpH,OACxC+H,EAAIwU,MAAQ,GACZxU,EAAIyU,QAAUzU,EAAI0U,QAAU,IAGvB1U,EACN,EAEP,GACW,EAES,UAAjB,OAAOS,GAAsBA,EAC3B3F,EAAKkY,OAAOlX,KAAK2E,CAAK,EACpBpB,EAAQ8Q,OACT1P,EAAQA,EAAMV,MAAM,IAAKjF,EAAK0X,SAAU,GAAG,EAC3Cja,IAAI8C,KAAK,CAACgE,EAAQ4X,SAAUnc,EAAK+X,SAAU,SAASnb,EAAGuD,GACrDwd,EAASxd,EAAMwF,EAAM/I,GAAIA,CAAC,CAC5B,CAAC,GAED+gB,EAASxB,EAAUxW,CAAK,GAI1B3F,EAAKgH,KAAK6O,EAAKqB,YAAY,IACzB3S,EAAQ8Q,MAAS9Q,EAAQ2Q,OAAS,IAAKlV,EAAK0X,SAAU,IAAMnT,EAAQ2Q,OAAU3Q,EAAQ2Q,QACpFW,EAAKqB,YAAY,EAAE,EACvBja,EAAQ,CAAA,GAEF0I,GAA+B,SAAtBjG,MAAMvC,KAAKwI,CAAK,EACjCpB,EAAQ4X,SAAWnc,EAAKma,WAAWxU,CAAK,GAGxCpB,EAAQ4X,SAAWnc,EAAKma,WAAW,EACnC,OAAOna,EAAKyW,UAGZ,OAAOzW,EAAK+X,QACZ2F,EAAW,EACX,OAAO1d,EAAK0W,SAKT1W,EAAKiY,YACFqF,EAAO,CAACtd,EAAKiY,UAAU,GAAG/N,IAAI,EAAGlK,EAAKiY,UAAU,GAAG/N,IAAI,GAC1DqT,EAAU,CAAChZ,EAAQ4X,SAAUnc,EAAK+X,SACnCta,IAAI8C,KAAK+c,EAAM,SAASU,EAAIC,GACvBje,EAAKqY,WAAWrX,KAAKid,CAAE,GACxBN,EAASJ,EAAQS,GAAKC,EAAID,CAAE,CAEhC,CAAC,GAKLP,EAAWtB,CAAQ,EAChB5X,EAAQ8Q,OAAOoI,EAAWzd,EAAK+X,OAAO,EAGtC9a,GAAS0I,GACV3F,EAAKka,SACH3V,CAAAA,EAAQ8Q,OAASrV,EAAK+X,QAA+B/X,EAAK0F,MAAM,EAAjB,EACjD,EAMC1F,EAAKke,YAAY/B,CAAQ,EAAInc,EAAKke,YAAY3Z,EAAQ+N,GAAG,GAC1D6J,EAAW5X,EAAQ4X,SAAW1e,IAAIkH,OAAO,GAAIJ,EAAQ+N,GAAG,EACxDkL,EAAc,CAAA,GACNxd,EAAKke,YAAY/B,CAAQ,EAAInc,EAAKke,YAAY3Z,EAAQgR,GAAG,IACjE4G,EAAW5X,EAAQ4X,SAAW1e,IAAIkH,OAAO,GAAIJ,EAAQgR,GAAG,EACxDiI,EAAc,CAAA,GAIbjZ,EAAQ8Q,SACNrV,EAAKke,YAAYle,EAAK+X,OAAO,EAAI/X,EAAKke,YAAY3Z,EAAQgR,GAAG,GAAKvV,EAAKke,YAAYle,EAAK+X,OAAO,EAAI/X,EAAKke,YAAY3Z,EAAQ+N,GAAG,KAChItS,EAAK+X,QAAUta,IAAIkH,OAAO,GAAIJ,EAAQ+N,GAAG,EACzCkL,EAAc,CAAA,GAGhBxd,EAAKyW,UAAY,CACfiD,MAAOnV,EAAQ4X,SAASzC,MACxBC,QAASpV,EAAQ4X,SAASxC,QAC1BC,QAASrV,EAAQ4X,SAASvC,OAC5B,EACA5Z,EAAK0W,QAAU,CACbgD,MAAO1Z,EAAK+X,QAAQ2B,MACpBC,QAAS3Z,EAAK+X,QAAQ4B,QACtBC,QAAS5Z,EAAK+X,QAAQ6B,OACxB,EAEqB,UAAjBrV,EAAQpH,QACVoH,EAAQ4X,SAAS7E,KAAO,EACxBtX,EAAK+X,QAAQT,KAAO,GAKrBkG,GAAe7X,IAChB3F,EAAKka,SAASla,EAAK0F,MAAM,CAAC,EAC1B1F,EAAKgH,KAAK,SAAW6O,EAAKoB,YAAcpB,EAAKqB,YAAY,EAAE,GAI7DlX,EAAK8X,UAAY9X,EAAK8X,WAAanS,GAASlI,IAAIkH,OAAO,GAAIJ,EAAQ4X,QAAQ,EAC3Enc,EAAK4X,kBAAkBI,MAAQhY,EAAK4X,kBAAkB,EACtD5X,EAAKoc,SAAW,CAAC7X,EAAQ8Q,OAAS,CAACrV,EAAK2X,aAAe,EAAG3X,CAAAA,EAAK8X,WAAa9X,CAAAA,EAAK+X,SAEjF1X,GAAMA,EAAG,GACFL,CACT,EAGA2J,EAAM1K,UAAU8W,KAAO,SAASoI,EAAIC,GAClC,IACCrI,EAAMxR,EADItI,KACWN,OAWtB,OAVA8B,IAAI8C,KAAKgE,EAAQwR,KAAM,SAASvR,EAAKsX,GAC/BuC,EAAO7Z,EAAIS,MAAM,GAAG,EACpBoZ,EAAK,IAAMD,EAAI,IAAiB,GAAXC,EAAK,IAC1BA,EAAK,IAAMD,EAAI,IAAiB,GAAXC,EAAK,IAC3BA,EAAK,IAAMD,EAAI,KAChBrI,EAAO+F,GAASsC,EAAI,GAExB,CAAC,EACDrI,GAAQoI,EAAGtS,KAAK,KAAK,EAAEgE,KAAK,kCAAmCkG,EAAM,SAAS,EAVnE9Z,IAab,EAGA0N,EAAM1K,UAAU+W,SAAW,SAASmI,EAAIC,GACtC,IACI7Z,EADOtI,KACQN,OACfwB,EAAO,CAAC,GAAI,QAchB,MAZoC,UAAjCuC,MAAMvC,KAAKoH,EAAQyR,QAAQ,GAE9BvY,IAAI8C,KAAKgE,EAAQyR,SAAU,SAASsI,EAAKne,GACvC1C,IAAI8C,KAAKJ,EAAM,SAASvD,EAAG2hB,GACtBA,IAAWJ,EAAGvT,KAAK,SAAS,GAC7BuT,EAAGtS,KAAK,KAAK,EAAEgE,KAAK,sCAClB1S,EAAKmhB,GAAQ,SAAUnhB,EAAKmhB,GAAM,IAAO,IACvC,IAAMF,EAAI,GAAK,SAAS,CAEhC,CAAC,CACH,CAAC,EAdUniB,IAiBb,EAGA0N,EAAM1K,UAAUyS,MAAQ,SAAS1F,GAC/BA,EAAOA,GAAQ,GAEf,IAAIhM,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACf6iB,EAAY,GACZrC,EAAWnQ,EAAKxL,OAASwL,EAAKuK,KAAO,EAAI,IAAMvW,EAAK+X,QAAUxT,EAAQ4X,SAwB1E,OArBA1e,IAAI8C,KAAK,CACPyW,IAAKvZ,IAAIkH,OAAO,GAAIwX,EAAUnQ,EAAKsL,MAAQ,EAAE,EAC5C/B,IAAKhR,EAAQgR,IACbjD,IAAK/N,EAAQ+N,GAChB,EAAG,SAAS9N,EAAKrE,GAKZ,IACGgZ,EALNqF,EAAUha,GAAOxE,EAAKsZ,QAAQ7b,IAAIkH,OAAO,CACvCyQ,KAAMjV,EAAKiV,KACVwB,MAAqB,SAAd5K,EAAK7O,KAAkB,EAAIgD,EAAKyW,MACvCU,KAAqB,SAAdtL,EAAK7O,MAAiC,UAAd6O,EAAK7O,KAAoB,EAAIgD,EAAKmX,IACpE,GACM6B,EAAM,GACV1b,IAAI8C,KAAKyL,EAAKuK,KAAM,SAAS3Z,EAAGyhB,GAC9BlF,EAAIkF,GAAQle,EAAKke,EACnB,CAAC,EACMlF,EACN,CAAC,EAAE/W,QAAQ,CAChB,CAAC,EAEDqc,EAAQD,EAAUxH,IAAMwH,EAAUjJ,KAAuBiJ,EAAUlM,IAA1BkM,EAAUxH,IACnDhL,EAAKpC,MAAQoC,EAAKpC,KAAK6U,EAAQ,WAAa,eAAe1N,CAAQ,EAE5D0N,CACT,EAGA9U,EAAM1K,UAAUyf,aAAe,SAASle,GACtC,IACC+D,EADUtI,KACKN,OAChB,OAAO6E,EAFIvE,KAES8b,QAASxT,EAAQ4X,QACvC,EAGAxS,EAAM1K,UAAU6W,SAAW,SAASnQ,EAAOnF,EAAOrD,GAChDqD,EAAQA,EAAQ,EAAI,EACpB,IAGwBme,EAAWC,EAAavB,EAH5Crd,EAAO/D,KACVsI,EAAUvE,EAAKrE,OACfwgB,EAAWxW,GAAS3F,EAAK0e,aAAale,CAAK,EAC3CqZ,EAAW,IAAI1X,KACf0T,EAAO7V,EAAK6V,KAAK,EAEjBgJ,EAA2B,SAAjBta,EAAQpH,MAAoC,aAAjBoH,EAAQpH,KAC7C2hB,EAAMrhB,IAAIuC,EAAK7B,MAAMqC,EAAM,EAAEqL,KAAK,IAAI,EACtCkT,EAASthB,IAAIuC,EAAKya,WAAWja,GAAO,EAAE,EAAEqL,KAAK,MAAM,EA8HpD,OA5HGsQ,EAAS/G,KAAOnB,EAAW,KAAIkI,EAAS/G,KAAOnB,EAAW,GAAIjU,EAAKgH,KAAK6O,EAAKoB,WAAW,GACxFkF,EAAS/G,KAAOnB,EAAW,KAAIkI,EAAS/G,KAAOnB,EAAW,GAAIjU,EAAKgH,KAAK6O,EAAKoB,WAAW,GAGvFjX,EAAKgf,YACPhf,EAAKgf,UAAYvhB,IAAIkH,OAAO,GAAIwX,CAAQ,GAI1CtC,EAASoF,YAAY9C,EAAS/G,KAAM+G,EAASvF,MAAO,CAAC,EACrD+H,GAAa9E,EAASqF,OAAO,GAAK,EAAI3a,EAAQiP,YAAc,EAE5DoL,EAAcjhB,EAAQ+f,WAAWvB,EAASvF,OAAS,GAAIuF,EAAS/G,IAAI,EACpEiI,EAAc1f,EAAQ+f,WAAWvB,EAASvF,MAAQ,EAAGuF,EAAS/G,IAAI,EAGlE3X,IAAI8C,KAAKue,EAAK,SAASK,EAAQhf,GAC7B,IAA2Cif,EAAvChB,EAAM,CAACjC,EAAS/G,KAAM+G,EAASvF,QACnCzW,EAAO1C,IAAI0C,CAAI,GACVyP,WAAW,OAAO,EACpBuP,EAASR,GACVS,EAAKR,EAAcD,EAAYQ,EAC/Bhf,EAAK6O,SAAS,kBAAkB,EAChCoP,EAAMpe,EAAKkd,QAAQf,EAAS/G,KAAM+G,EAASvF,MAAO,KAAK,GACrC+H,GAAVQ,GAAuBA,EAAS9B,EAAcsB,GACtDS,EAAKD,EAASR,EACT3e,EAAK2X,aACRyH,EAAK,IAAMjD,EAAS7E,MAAQnX,EAAK6O,SAASgF,CAAI,IAGhDoL,EAAKD,EAAS9B,EAAcsB,EAC5Bxe,EAAK6O,SAAS,kBAAkB,EAChCoP,EAAMpe,EAAKkd,QAAQf,EAAS/G,KAAM+G,EAASvF,KAAK,GAElDwH,EAAI,EAAE,GACNA,EAAI,GAAKgB,EAAK,EACdjf,EAAKyK,KAAK,UAAWwT,EAAIzQ,KAAK,GAAG,CAAC,EAAEkC,KAAK,QAAUuO,EAAI,GAAK,QAAQ,EACpEpe,EAAK+V,KAAK5V,EAAMie,CAAG,EAAEpI,SAAS7V,EAAMie,CAAG,EAAE1M,MAAM,CAC7C9H,KAAMzJ,EACNmX,KAAM,CACJlC,KAAMgJ,EAAI,GACVxH,MAAOwH,EAAI,GAAK,EAChB9G,KAAM8G,EAAI,EACZ,EACA5d,MAAO2e,CACT,CAAC,CACH,CAAC,EAGD1hB,IAAIshB,EAAO,EAAE,EAAEnU,KAAK,SAAUuR,EAAS/G,KAAO,KAAO+G,EAASvF,MAAQ,EAAE,EACxEnZ,IAAIshB,EAAO,EAAE,EAAEnU,KAAK,SAAUuR,EAAS/G,KAAO,KAAO+G,EAASvF,MAAQ,EAAE,EAEpD,OAAjBrS,EAAQsR,MACTpY,IAAIshB,EAAO,EAAE,EAAEnU,KAAK,WAAY,MAAM,EAAEiF,KAAKsM,EAAS/G,KAAO,SAAI,EACjE3X,IAAIshB,EAAO,EAAE,EAAEnU,KAAK,WAAY,OAAO,EAAEiF,KAAMsM,EAASvF,MAAQ,EAAK,SAAI,IAEzEnZ,IAAIshB,EAAO,EAAE,EAAEnU,KAAK,WAAY,OAAO,EAAEiF,KAAKgG,EAAKe,MAAMuF,EAASvF,MAAM,EACxEnZ,IAAIshB,EAAO,EAAE,EAAEnU,KAAK,WAAY,MAAM,EAAEiF,KAAKsM,EAAS/G,IAAI,GAIzDyJ,IACEta,EAAQ8Q,MACN1P,CAAAA,GAAkB,SAATxI,IACV6C,EAAKqc,OAAS,CACZ,EAAErc,EAAK8X,WAAavT,EAAQ4X,UAAU/G,MAAOpV,EAAK8X,WAAavT,EAAQ4X,UAAUvF,MAAQ,GACxF,CAAC5W,EAAK+X,QAAQ3C,KAAMpV,EAAK+X,QAAQnB,MAAQ,IAE5C5W,EAAKqf,KAAK9a,EAAQpH,KAAM,CAAC,EAAEkiB,KAAK9a,EAAQpH,KAAM,CAAC,EAG9B,SAAjBoH,EAAQpH,KAAkB6C,EAAKsf,aAAa,eACzC7hB,IAAIkH,OAAO,GAAI3E,EAAKma,WAAW,EAAGna,EAAKyW,SAAS,EAChDhZ,IAAIkH,OAAO,GAAI3E,EAAKma,WAAW,EAAGna,EAAK0W,OAAO,CACjD,EAAI1W,EAAKsf,aAAa,CAAA,CAAI,IAG5Btf,EAAKqc,OAAS,CAAC,CAACF,EAAS/G,KAAM+G,EAASvF,MAAQ,IAChD5W,EAAKqf,KAAK9a,EAAQpH,KAAM,CAAC,IAK1BoH,EAAQ8Q,OAAkB,SAATlY,IAEd6C,EAAK2X,aACHoG,EAAM/d,EAAKkd,QAAQf,EAAS/G,KAAM+G,EAASvF,MAAOpW,EAAQ,MAAQ,IAAI,EAC1ER,EAAK8V,SAASrY,IAAIkH,OAAO,GAAIwX,EAAU,CACrC/G,KAAM2I,EAAI,GACTnH,MAAOmH,EAAI,EACd,CAAC,EAAG,EAAIvd,CAAK,GAEbR,EAAK8V,SAAS,KAAM,EAAItV,CAAK,GAK7B+D,EAAQ8Q,QACNkK,EAAa,CAAC,QAAS,UAAW,WAGtCvf,EAAK0R,MAAM,CACT9H,KAAMnM,IAAIuC,EAAK6a,MAAM,EAAEhP,KA3nCd,mBA2nC2B,EACpCyL,KAAMtX,EAAKma,WAAW,oBAAoBnZ,KAAKuD,EAAQpH,IAAI,EAAI,IAAIgF,KAAS,IAAI,EAChF3B,MAAO,EACP+V,KAAMgJ,CACR,CAAC,EAEDvf,EAAK0R,MAAM,CACT9H,KAAMnM,IAAIuC,EAAK6a,MAAM,EAAEhP,KAAK2I,CAAY,EACxChU,MAAO,EACP+V,KAAMgJ,CACR,CAAC,GAIHvf,EAAKsf,aAAa,EAGlB7hB,IAAIuC,EAAK+a,QAAQ,EAAElP,KAAK,MAAQmI,CAAI,EAAE9E,YAAY8E,CAAI,EAGnDzP,EAAQ8Q,OAAS,CAACwJ,GAAoB,SAAT1hB,GAAiB6C,EAAKwf,WAAW,EAE1Dxf,CACT,EAGA2J,EAAM1K,UAAUogB,KAAO,SAASliB,EAAMqD,GACpC,IA4BMif,EA8EAC,EA6GAC,EAKHC,EA5NC5f,EAAO/D,KACVsI,EAAUvE,EAAKrE,OACfwgB,EAAWnc,EAAK2X,YAAcpT,EAAQ4X,SAAW,CAAC5X,EAAQ4X,SAAUnc,EAAK+X,SAASvX,GAClFqV,EAAO7V,EAAK6V,KAAK,EACjBgJ,EAAUta,EAAQ8Q,OAA0B,SAAjB9Q,EAAQpH,MAAoC,aAAjBoH,EAAQpH,KAE9D0iB,EAAKpiB,IAAImM,KAAK,KAAM,CACnB2Q,QAASpG,EAAY,IAAM,CACzBiB,KAAM,oBACLwB,MAAO,qBACPL,KAAM,mBACR,EAAEpZ,EACL,CAAC,EACAsd,EAAaza,EAAKya,WAAWja,GAC7Bue,EAASthB,IAAIgd,EAAW,EAAE,EAAE5O,KAAK,MAAM,EACvC6O,EAAW1a,EAAK0a,SAASla,GAAS,GAClCsf,EAAWriB,IAAIid,CAAQ,EAAE7O,KAAK,IAAKsI,CAAS,EAAE,GAC9C4L,EAAwB,OAAjBxb,EAAQsR,KACfpK,EAAOsU,EAAO,SAAM,GAEpB1D,EAASrc,EAAKqc,OAAO7b,IAAU,GAC/B2Y,EAAM,CAAC,QAAS,UAAW,WAC3ByE,EAAW,CAAC,YAAa,WAAWpd,GAuPrC,OArPG6b,EAAO,GAAK,IAAGA,EAAO,GAAK,GAGlB,SAATlf,GACY6iB,EAASP,EAAUpD,EAAO,GAAK,EAAtBoD,EACV,IAAGO,EAASP,EAAU,GAClChiB,IAAI8C,KAAK,IAAIuJ,MAAM,EAAE,EAAG,SAASlN,GAC/B,IAAIqjB,EAAKxiB,IAAImM,KAAK,KAAM,CACtBsW,SAAUT,CACZ,CAAC,EACAvG,EAAM,CACL9D,KAAMqK,EACL7I,MAAO,EACPU,KAAM,CACT,EAEAmI,GAAWpD,EAAO,IAAM5e,IAAIwiB,CAAE,EAAEjR,SAASgF,CAAI,EAC7CiM,EAAGtU,UAAY8T,EAAUhU,EACzBoU,EAAGxd,YAAY4d,CAAE,EAYjBjgB,EAAK0R,MAAM,CACT9H,KAAMnM,IAAIwiB,CAAE,EACZ3I,KAAM4B,EACN1Y,MAAOA,EACPrD,KAAMA,CACR,CAAC,EACDsiB,CAAO,EACT,CAAC,EAEDhiB,IAAIshB,EAAOgB,EAAO,EAAI,EAAE,EAAEnV,KAAK,SAAW6U,EAAU,EAAK,IAAMpD,EAAO,EAAE,EACvExM,KAAMmQ,EAASvU,EAAQ,OAASgU,EAAU,GAAIhU,CAAK,GAIrC,UAATtO,GACNM,IAAI8C,KAAK,IAAIuJ,MAAM,EAAE,EAAG,SAASlN,GAC/B,IAAIqjB,EAAKxiB,IAAImM,KAAK,KAAM,CACtBsW,SAAUtjB,CACZ,CAAC,EACAsc,EAAM,CACL9D,KAAMiH,EAAO,GACZzF,MAAOha,EACP0a,KAAM,CACT,EAEA1a,EAAI,GAAKyf,EAAO,IAAM5e,IAAIwiB,CAAE,EAAEjR,SAASgF,CAAI,EAC3CiM,EAAGtU,UAAYkK,EAAKe,MAAMha,IAAMmjB,EAAO,SAAM,IAC7CF,EAAGxd,YAAY4d,CAAE,EAUjBjgB,EAAK0R,MAAM,CACT9H,KAAMnM,IAAIwiB,CAAE,EACZ3I,KAAM4B,EACN1Y,MAAOA,EACPrD,KAAMA,CACR,CAAC,CACH,CAAC,EAEDM,IAAIshB,EAAOgB,EAAO,EAAI,EAAE,EAAEnV,KAAK,SAAUyR,EAAO,GAAK,IAAMA,EAAO,EAAE,EACnExM,KAAKwM,EAAO,GAAK5Q,CAAI,GAIP,SAATtO,IAEFuiB,EAAgB,WAClBjiB,IAAIoiB,CAAE,EAAEhU,KAAK,IAAI,EAAEtL,KAAK,SAAS3D,EAAGujB,GAClC1iB,IAAI0iB,CAAE,EAAEtU,KAAK,IAAI,EAAEtL,KAAK,SAASmO,EAAIuR,GACnCjgB,EAAK0R,MAAM,CACT9H,KAAMnM,IAAIwiB,CAAE,EACZ3I,KAAM,CAAC,CACLoC,MAAOhL,CACT,EAAG,CACDgL,MAAO1Z,EAAK4d,GAAUlE,MACrBC,QAASjL,CACZ,EAAG,CACDgL,MAAO1Z,EAAK4d,GAAUlE,MACrBC,QAAS3Z,EAAK4d,GAAUjE,QACxBC,QAASlL,CACZ,GAAG9R,GACH4D,MAAOA,EACP+V,KAAM,CACJ,CAAC,SACD,CAAC,QAAS,WACV,CAAC,QAAS,UAAW,YACrB3Z,EACJ,CAAC,CACH,CAAC,CACH,CAAC,EACG2H,EAAQ8Q,OACVrV,EAAK0R,MAAM,CACT9H,KAAMnM,IAAIuC,EAAK6a,MAAM,EAAEhP,KAAK2I,CAAY,EACxC8C,KAAMtX,EAAK4d,GACXpd,MAAO,EACP+V,KAAM,CAAC,QAAS,UAAW,UAC7B,CAAC,CAEL,EAGGhS,EAAQ8Q,MACLrV,EAAK4d,KACP5d,EAAK4d,GAAyB,cAAbA,EAA2BzB,EAAWnc,EAAK+X,SAG9D/X,EAAK4d,GAAYzB,EAInB1e,IAAI8C,KAAK,CAAC,GAAI,GAAI,IAAK,SAAS3D,EAAGuD,GACjC,IAAI8f,EAAKxiB,IAAImM,KAAK,IAAI,EAAGwW,EAAU,CAAC,MAAOvK,EAAKU,KAAK3Z,GAAI,YACzDa,IAAI8C,KAAK,IAAIuJ,MAAM3J,CAAI,EAAG,SAASuO,GACjC0R,EAAQ7e,KAAK,OAAQvB,EAAK4d,GAAUzE,EAAIvc,MAAQ8R,EAAK,WAAYsF,EAAM,IAAM,IAAK,IAAKvW,IAAI6M,MAAMoE,EAAI,CAAC,EAAG,OAAO,CAClH,CAAC,EACDuR,EAAGtU,UAAYyU,EAAQzS,KAAK,EAAE,EAAI,QAClCkS,EAAGxd,YAAY4d,CAAE,CACnB,CAAC,EACDP,EAAc,GAIbI,GAAUpF,EAASvZ,YAAY2e,CAAQ,EAC1CpF,EAASrY,YAAYwd,CAAE,EAGX,SAAT1iB,GAA4B,UAATA,GAEpBM,IAAIuC,EAAKwa,SAASha,EAAM,EAAEwO,SAAS,iBAAiB,EAGpDvR,IAAIoiB,CAAE,EAAEhU,KAAK,IAAI,EAAEvL,GAAG,QAAS,WAC7B,IAAI+f,EAAgC,EAA3B5iB,IAAIxB,IAAI,EAAE2O,KAAK,QAAQ,EAC7BnN,IAAIxB,IAAI,EAAEkT,SAAS4B,CAAQ,IAC1B/Q,EAAK2X,YACPla,IAAIkH,OAAOwX,EAAU,CACnB/G,KAAe,SAATjY,EAAkBkjB,EAAKhE,EAAO,GACnCzF,MAAgB,SAATzZ,EAAkBkf,EAAO,GAAK,EAAIgE,CAC5C,CAAC,EAEDlE,EAAShf,GAAQkjB,EAIkB,SAAjB9b,EAAQpH,MAAoC,UAAjBoH,EAAQpH,MAErDM,IAAIoiB,CAAE,EAAEhU,KAAK,IAAKmI,CAAI,EAAE9E,YAAY8E,CAAI,EACxCvW,IAAIxB,IAAI,EAAE+S,SAASgF,CAAI,EAGH,UAAjBzP,EAAQpH,MAA6B,SAATA,IAC7B6C,EAAKqc,OAAO7b,GAAO,GAAK6f,EACxBxB,KAAare,EAAQR,EAAK+X,QAAUoE,GAAU/G,KAAOiL,GACrDrgB,EAAKqf,KAAK,QAAS7e,CAAK,KAG1BR,EAAKsc,UAAU,OAAO,EAAExG,SAASqG,EAAU3b,EAAO,MAAM,EACxDR,EAAKsgB,UAAU,GAGjBtgB,EAAKsf,aAAa,EAKf,CAAC/a,EAAQ8Q,OAAS9Q,EAAQ4R,cACN,UAAjB5R,EAAQpH,MAA6B,UAATA,GAAuC,SAAjBoH,EAAQpH,MAA4B,SAATA,IAC/E6C,EAAKka,SAASla,EAAK0F,MAAM,CAAC,EAAE2I,KAAK,EAAEzI,OAAO,EAI7C5F,EAAK4X,kBAAkBI,MAAQ,CAAChY,EAAK2X,YAAe3X,EAAKugB,OAAO9iB,IAAIid,CAAQ,EAAE7O,KAAK,eAAe,EAAGrL,CAAK,EAAKR,EAAKoc,UAAYpc,EAAKqO,KAAK,KAAM,QAAQ,EACzJ5Q,IAAIuC,EAAK6a,MAAM,EAAEhP,KAAK,IAAK6I,CAAa,EAAExF,YAAY6B,CAAQ,EAChE,CAAC,IAEG4O,EAAOliB,IAAImM,KAAK,OAAQ,CAC1B2Q,QAAS9F,CACX,CAAC,EAGAmL,EAAS,WACRniB,IAAIoiB,CAAE,EAAEhU,KAAK,IAAI,EAAEtL,KAAK,SAAS3D,GAC/B,IAAIujB,EAAKlkB,KACRgkB,EAAKxiB,IAAI0iB,CAAE,EAAEtU,KAAK,IAAI,EACvBsU,EAAGK,UAAY,IAAIxgB,EAAK4d,GAAUzE,EAAIvc,IAAM,GACzCujB,EAAGK,WAAa,GACjBP,EAAG1f,KAAK,SAASmO,EAAIvO,GACnB,GAAG,CAAC1C,IAAIxB,IAAI,EAAEkT,SAAS4B,CAAQ,EAE7B,OADAoP,EAAGK,UAAY,IAAI9R,EAAK,GACjB,CAAA,CAEX,CAAC,CAEL,CAAC,CACH,EACC+R,EAAWhjB,IAAIgd,EAAW,EAAE,EAAE5O,KAAK,IAAK4I,CAAc,EAEvDmL,EAAO,EACPD,EAAKhU,UAAYpH,EAAQ8Q,MAAQ,CAACQ,EAAKY,UAAUZ,EAAKa,SAASlW,GAASqV,EAAKW,SAC7E/Y,IAAIuC,EAAKwa,SAASha,EAAM,EAAEwO,SAAS,mBAAmB,EAEnDyR,EAAS,IAAIA,EAAS7a,OAAO,EAChC6U,EAAW,GAAGpY,YAAYsd,CAAI,EAE9BliB,IAAIoiB,CAAE,EAAEhU,KAAK,IAAI,EAAEtL,KAAK,SAAS3D,GAC/B,IAAIujB,EAAKlkB,KAETwB,IAAI0iB,CAAE,EAAEtU,KAAK,IAAI,EAAEvL,GAAG,QAAS,WAC7B,IAAIqF,EAAyB,EAAjB1J,KAAK0P,UACdlO,IAAIxB,IAAI,EAAEkT,SAAS4B,CAAQ,IAE3BxM,EAAQ8Q,MACTrV,EAAK4d,GAAUzE,EAAIvc,IAAO+I,EAE1BwW,EAAShD,EAAIvc,IAAM+I,EAErBlI,IAAI0iB,CAAE,EAAEtU,KAAK,IAAKmI,CAAI,EAAE9E,YAAY8E,CAAI,EACxCvW,IAAIxB,IAAI,EAAE+S,SAASgF,CAAI,EAEvB0L,EAAc,EACdE,EAAO,GACN5f,EAAK+X,SAA4B,SAAjBxT,EAAQpH,MAAqC,aAAjBoH,EAAQpH,MAAuBoH,EAAQkT,YAAezX,EAAKqO,KAAK,KAAM,QAAQ,EAG3HrO,EAAKsf,aAAa,EACpB,CAAC,CACH,CAAC,GAGItf,CACT,EAGA2J,EAAM1K,UAAUod,OAAS,GAGzB1S,EAAM1K,UAAUqhB,UAAY,WAC1B,IAAItgB,EAAO/D,KACA+D,EAAKrE,OAEhB8B,IAAI8C,KAAKP,EAAK0a,SAAU,SAASla,EAAOL,GACtC1C,IAAIxB,IAAI,EAAE4P,KAAK,IAAKsI,CAAS,EAAEvO,OAAO,EACtCnI,IAAIuC,EAAKwa,SAASha,EAAM,EAAE0O,YAAY,mCAAmC,CAC3E,CAAC,EACDzR,IAAIuC,EAAK4J,IAAI,EAAEiC,KAAK,IAAK4I,CAAc,EAAE7O,OAAO,CAClD,EAGA+D,EAAM1K,UAAUqgB,aAAe,SAASoB,EAAM7P,EAAOwB,GACnD,IAAIrS,EAAO/D,KACVsI,EAAUvE,EAAKrE,OACfka,EAAO7V,EAAK6V,KAAK,EACV8K,EAAUljB,IAAIuC,EAAK6a,MAAM,EAAEhP,KAAK2I,CAAY,EACjDjQ,EAAQ8Q,OAA0B,SAAjB9Q,EAAQpH,OAC1B0T,EAAQA,IAAU7Q,EAAK2X,YAAc3X,EAAK8X,UAAYvT,EAAQ4X,UAC9D9J,EAAMA,GAAOrS,EAAK+X,QAClB0G,EAAQ,CAACze,EAAKoc,UAAYpc,EAAKsZ,QAAQzI,CAAK,EAAEzO,QAAQ,EAAIpC,EAAKsZ,QAAQjH,CAAG,EAAEjQ,QAAQ,EAGnFpC,EAAK0R,MAAM,CACV4F,KAAMzG,CACR,CAAC,GAAK7Q,EAAK0R,MAAM,CACf4F,KAAMjF,CACR,CAAC,EACGsO,EAAQ3R,SAAS+B,CAAQ,EAC3B4P,EAAQlC,EAAQ,WAAa,eAAe1N,CAAQ,EAGnD2P,IAAQjC,GAAOze,EAAKgH,KACL,UAAhB,OAAO0Z,EAAoB7K,EAAK/Z,QAAQgG,QAAQ,gBAAO4e,CAAI,EAAI7K,EAAK/Z,OACtE,CAEJ,EAGA6N,EAAM1K,UAAUyG,MAAQ,SAASmS,EAAOP,GACtC,IAAItX,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACfmc,EAAa9X,EAAK2X,YAAc3X,EAAK8X,UAAYvT,EAAQ4X,SACzDA,EAAW7E,IACJ,OAATO,EAAiBpa,IAAIkH,OAAO,GAAI3E,EAAK+X,QAAS/X,EAAK0W,OAAO,EACxDnS,EAAQ8Q,MACJ5X,IAAIkH,OAAO,GAAImT,GAAavT,EAAQ4X,SAAUnc,EAAKyW,SAAS,EAC9DlS,EAAQ4X,UAGVjH,EAASvX,EAAQ+H,MAAMyW,EAAUnc,EAAKkV,OAAQ,CAAC,EAGnD,OAAI3Q,EAAQ8Q,OAASwC,IAAUtI,UACtB2F,EAAS,IAAKlV,EAAK0X,SAAU,IAAM1X,EAAK0F,MAAM,KAAK,EAGrDwP,CACT,EAGAvL,EAAM1K,UAAUqa,QAAU,SAAS6C,GAEjC,OADAA,EAAWA,GAAY,GAChB,IAAIha,KACTga,EAAS/G,MAAQ,EAChB+G,EAASvF,OAAS,EAClBuF,EAAS7E,MAAQ,EACjB6E,EAASzC,OAAS,EAClByC,EAASxC,SAAW,EACpBwC,EAASvC,SAAW,CACvB,CACF,EAGAjQ,EAAM1K,UAAUif,YAAc,SAAShZ,GACrC,OAAOjJ,KAAKqd,QAAQpU,CAAG,EAAE9C,QAAQ,CACnC,EAGAuH,EAAM1K,UAAUib,SAAW,SAASvU,GAClC,IAAI3F,EAAO/D,KACVsI,EAAUvE,EAAKrE,OACfiO,EAAOrF,EAAQqF,KAAK,GA2BrB,MAxBwB,WAArBrF,EAAQwH,WAEXpG,EAAQA,GAAS,GAGd3F,EAAKsY,QAAQ1O,CAAI,EAClBnM,IAAImM,CAAI,EAAEM,IAAIvE,CAAK,GAGfsS,EAAYjY,EAAKiY,YAEM,UAAtBvY,MAAMvC,KAAKwI,CAAK,IACjBA,EAAQA,EAAMV,MAAM,IAAKjF,EAAK0X,SAAU,GAAG,GAE7CO,EAAU,GAAG/N,IAAIvE,EAAM,IAAM,EAAE,EAC/BsS,EAAU,GAAG/N,IAAIvE,EAAM,IAAM,EAAE,IAEG,IAA/BlI,IAAImM,CAAI,EAAEiC,KAAK,GAAG,EAAElP,QACrBc,IAAImM,CAAI,EAAEiG,KAAKlK,CAAK,EAEtBlI,IAAImM,CAAI,EAAEgB,KAAK,WAAYjF,CAAK,IAI7B3F,CACT,EAGA2J,EAAM1K,UAAUkY,QAAU,WACxB,IAKIyJ,EALA5gB,EAAO/D,KACVsI,EAAUvE,EAAKrE,OAEZ4I,EAAQoR,YAERiL,EAAenjB,IAAIuC,EAAK4J,IAAI,EAAEiC,KAAK,IAAK8I,CAAY,EACvDhP,EAAQpB,CAAAA,EAAQ8Q,QAAUrV,EAAK2X,YAAc3X,EAAKoc,SAAWpc,EAAK+X,SAAgC/X,EAAK0F,MAAM,EAAjB,GAG7Fkb,EAAY/Q,KAAKlK,CAAK,EAGPib,EAAY/Q,KAAK,KACnB+Q,EAAYvR,IAAI,CAC3BwR,MAAS,SACX,CAAC,EACDvf,WAAW,WACTsf,EAAYvR,IAAI,CACdwR,MAAS,MACX,CAAC,CACH,EAAG,GAAG,EACR,EAGAlX,EAAM1K,UAAU6d,iBAAmB,WACtB7gB,KACQN,OAGP8b,WAJDxb,KAKJojB,KAAK,OAAQ,CAAC,CAEvB,EAGA1V,EAAM1K,UAAUugB,WAAa,WAC3B,IAEqE9I,EAFjE1W,EAAO/D,KACRsI,EAAUvE,EAAKrE,OACf8a,EAAYzW,EAAK2X,YAAc3X,EAAK8X,UAAYvT,EAAQ4X,SACxD2C,EAAMrhB,IAAIuC,EAAK4J,IAAI,EAAEiC,KAAK,IAAI,EAE9BtH,EAAQ8Q,OAAS,CAACrV,EAAKoc,UAAU3e,IAAIuC,EAAK6a,MAAM,EAAEhP,KAAK2I,CAAY,EAAExF,SAAS+B,CAAQ,EAGzF0F,EAAYA,GAAazW,EAAKsZ,QAAQ,CACpClE,KAAMqB,EAAUrB,KACfwB,MAAOH,EAAUG,MACjBU,KAAMb,EAAUa,IACnB,CAAC,EAAElV,QAAQ,EAEXsU,EAAU1W,EAAKoc,UAAYpc,EAAK+X,SAAW/X,EAAKsZ,QAAQ,CACtDlE,KAAMpV,EAAK+X,QAAQ3C,KAClBwB,MAAO5W,EAAK+X,QAAQnB,MACpBU,KAAMtX,EAAK+X,QAAQT,IACtB,CAAC,EAAElV,QAAQ,EAIX3E,IAAI8C,KAAKue,EAAK,SAASliB,EAAGuD,GACxB,IAAI+Y,EAAMzb,IAAI0C,CAAI,EAAEyK,KAAK,SAAS,EAAE3F,MAAM,GAAG,EACzC6b,EAAW9gB,EAAKsZ,QAAQ,CAC1BlE,KAAM8D,EAAI,GACTtC,MAAOsC,EAAI,GAAK,EAChB5B,KAAM4B,EAAI,EACb,CAAC,EAAE9W,QAAQ,EAGRmC,EAAQoT,aAAe,CAAC3X,EAAK8X,WAC3BgJ,IAAa9gB,EAAKsZ,QAAQtZ,EAAKma,WAAW,CAAC,EAAE/X,QAAQ,GACtD3E,IAAI0C,CAAI,EAAE6O,SACRvR,IAAI0C,CAAI,EAAEgP,SAASmF,CAAS,GAAK7W,IAAI0C,CAAI,EAAEgP,SAASoF,CAAS,EACzD,GAxmDK,iBA0mDX,EAQJ9W,IAAI0C,CAAI,EAAE+O,YAAYkF,EAAgB,IAAMJ,CAAI,EAE7C8M,IAAarK,GAAaqK,IAAapK,IACvC1W,EAAK2X,aAAgB,CAAC3X,EAAK2X,cAAgB/a,EAAI,GAAKkkB,IAAarK,EAAYqK,IAAapK,KAC3FjZ,IAAI0C,CAAI,EAAE6O,SACRvR,IAAI0C,CAAI,EAAEgP,SAASmF,CAAS,GAAK7W,IAAI0C,CAAI,EAAEgP,SAASoF,CAAS,EACzDH,EACAJ,CACN,EAEYyC,EAAXqK,GAAwBA,EAAWpK,GACpCjZ,IAAI0C,CAAI,EAAE6O,SAASoF,CAAa,CAEpC,CAAC,CACH,EAGAzK,EAAM1K,UAAUoP,KAAO,SAAS0S,EAAO5jB,GACrC,IAAI6C,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACfkV,EAAQpT,IAAIkH,OAAO,GACrBlH,IAAIkH,OAAO3E,EAAK2X,YAAc3X,EAAK8X,UAAYvT,EAAQ4X,SAAUnc,EAAKyW,SAAS,CACjF,EACIpE,EAAM5U,IAAIkH,OAAO,GAAIlH,IAAIkH,OAAO3E,EAAK+X,QAAS/X,EAAK0W,OAAO,CAAC,EAe/D,OAbAjZ,IAAI8C,KAAK,CAACsQ,EAAOwB,GAAM,SAASzV,EAAGuD,GAC5B,UAAWA,GAChB1C,IAAIkH,OAAOxE,EAAM,CACfyW,MAAOzW,EAAKyW,MAAQ,CACtB,CAAC,CACH,CAAC,EAED5W,EAAKmX,QAAQ,EAEb4J,EAAQA,GAAS,CAAC/gB,EAAK0F,MAAM,EAAGmL,EAAOwB,GAC9B,WAATlV,GAAqB6C,EAAK8c,iBAAiB,EACR,YAAnC,OAAOvY,EAAQpH,GAAQ,SAA0BoH,EAAQpH,GAAQ,QAAQsE,MAAM8C,EAASwc,CAAK,EAEtF/gB,CACT,EAGA2J,EAAM1K,UAAUshB,OAAS,SAASpC,EAAI3d,GACpC,IAEIR,EACHuE,EACAyc,EAcG7E,EA+CI8E,EAuBEC,EAxFP/C,EAAGhP,SAAS4B,CAAQ,IAGtBxM,GADGvE,EAAO/D,MACKN,OACfqlB,EAAaxgB,EAEVR,EAAK2X,cACH3X,EAAKoc,UAAY,CAACpc,EAAK8X,WAEzBtX,EAAQ,EACRR,EAAKoc,SAAW,CAAA,EAChBpc,EAAK+X,QAAU,KAEfvX,EAAQ,EACRR,EAAKoc,SAAW,CAAA,IAIhBD,EAAWnc,EAAK0e,aAAale,CAAK,EAE/B/C,IAAIuC,EAAK4J,IAAI,EAAEiC,KAAK,IAAI,EAG/BuS,EAAM,CACJhJ,KAAe,GAATgJ,EAHDD,EAAGvT,KAAK,SAAS,EAAE3F,MAAM,GAAG,GAGvB,GACT2R,OAAiB,EAATwH,EAAI,IAAU,EACtB9G,KAAe,EAAT8G,EAAI,EACb,EAEA3gB,IAAIkH,OAAOwX,EAAUiC,CAAG,EAGrB7Z,EAAQ8Q,OAET5X,IAAI8C,KAAK,CAAC,YAAa,WAAY,SAAS3D,EAAGuD,GAC7CH,EAAKG,GAAQH,EAAKG,IAAS,CACzBuZ,MAAO9c,EAAI,GAAI,EACd+c,QAAS/c,EAAI,GAAI,EACjBgd,QAAShd,EAAI,GAAI,CACpB,EACI4D,IAAU5D,IAERoD,EAAKke,YAAYzgB,IAAIkH,OAAO,GAAIwX,EAAUnc,EAAKG,EAAK,CAAC,EAAIH,EAAKke,YAAY3Z,EAAQgR,GAAG,GACvFvV,EAAKG,GAAQ,CACXuZ,MAAOnV,EAAQgR,IAAImE,MAClBC,QAASpV,EAAQgR,IAAIoE,QACrBC,QAASrV,EAAQgR,IAAIqE,OACxB,EACAnc,IAAIkH,OAAOwX,EAAUnc,EAAKG,EAAK,GACtBH,EAAKke,YAAYzgB,IAAIkH,OAAO,GAAIwX,EAAUnc,EAAKG,EAAK,CAAC,EAAIH,EAAKke,YAAY3Z,EAAQ+N,GAAG,IAC9FtS,EAAKG,GAAQ,CACXuZ,MAAOnV,EAAQ+N,IAAIoH,MAClBC,QAASpV,EAAQ+N,IAAIqH,QACrBC,QAASrV,EAAQ+N,IAAIsH,OACxB,EACAnc,IAAIkH,OAAOwX,EAAUnc,EAAKG,EAAK,GAGrC,CAAC,EACIK,IACHR,EAAK8X,UAAYra,IAAIkH,OAAO,GAAIwX,CAAQ,GAGtCnc,EAAKoc,UAAY,CAACpc,EAAK0R,MAAM,CAAC4F,KAAMtX,EAAK0e,aAAa,EAAIle,CAAK,CAAC,CAAC,MAIjEygB,EADEjhB,EAAKoc,UAAYpc,EAAK4X,kBAAkBI,KAC/BhY,EAAK4X,kBAAkB,EAE/BqJ,IAAYjhB,EAAK2X,aAAe3X,EAAKoc,WAAapc,EAAKsZ,QAAQtZ,EAAK8X,SAAS,EAAI9X,EAAKsZ,QAAQtZ,EAAK+X,OAAO,IACzGoJ,EAAanhB,EAAK8X,UAAU1C,OAASpV,EAAK+X,QAAQ3C,MAAQpV,EAAK8X,UAAUlB,QAAU5W,EAAK+X,QAAQnB,OAAS5W,EAAK8X,UAAUR,OAAStX,EAAK+X,QAAQT,KAE9IQ,EAAY9X,EAAK8X,UACrB9X,EAAK8X,UAAYra,IAAIkH,OAAO,GAAI3E,EAAK+X,QAASoJ,EAAa,GAAKnhB,EAAKyW,SAAS,EAC9ElS,EAAQ4X,SAAW1e,IAAIkH,OAAO,GAAI3E,EAAK8X,SAAS,EAChD9X,EAAK+X,QAAUta,IAAIkH,OAAO,GAAImT,EAAWqJ,EAAa,GAAKnhB,EAAK0W,OAAO,EACvEyK,KACErJ,EAAY9X,EAAKyW,UACfzW,EAAKyW,UAAYzW,EAAK0W,QACtB1W,EAAK0W,QAAUoB,GAGrBmJ,KAAa1c,EAAQ4X,SAAW1e,IAAIkH,OAAO,GAAI3E,EAAK8X,SAAS,GAE3D9X,EAAK2X,aACHyJ,EAAe3jB,IAAIkH,OAAO,GAAIwX,CAAQ,EACtC6E,CAAAA,GAAexgB,GAAUygB,IAEvBC,EAAKlhB,EAAKkd,QAAQf,EAAS/G,KAAM+G,EAASvF,MAAO,KAAK,EAC1DnZ,IAAIkH,OAAOJ,EAAQ4X,SAAU,CAC3B/G,KAAM8L,EAAG,GACRtK,MAAOsK,EAAG,EACb,CAAC,GAEHlhB,EAAK8V,SAASsL,EAAcJ,EAAYC,EAAW,OAAS,IAAI,GAEhEjhB,EAAK8V,SAAS,KAAMtV,EAAOygB,EAAW,OAAS,IAAI,EAErDjhB,EAAKoc,UAAYpc,EAAKqO,KAAK,KAAM,QAAQ,GACZ,WAArB9J,EAAQwH,SAChB/L,EAAK8V,SAAS,EAAEzH,KAAK,EAAEA,KAAK,KAAM,QAAQ,EACjB,SAAjB9J,EAAQpH,KAChBoH,EAAQ4R,YAAcnW,EAAKka,SAASla,EAAK0F,MAAM,CAAC,EAAE2I,KAAK,EAAEzI,OAAO,EAAI5F,EAAK8V,SAAS,EAAEzH,KAAK,KAAM,QAAQ,EAC9E,aAAjB9J,EAAQpH,MAChB6C,EAAK8V,SAAS,EAAEzH,KAAK,KAAM,QAAQ,EAEvC,EAGA1E,EAAM1K,UAAUkR,KAAO,SAAS4C,EAAK5V,GACnC,IAAI6C,EAAO/D,KACVsI,EAAUvE,EAAKrE,OACfka,EAAO7V,EAAK6V,KAAK,EACjBsG,EAAW5X,EAAQ4X,SACnB9E,EAAgC,WAArB9S,EAAQwH,SACnBsV,EAAS,CAER9J,SAAU,WACL9Z,IAAIsV,CAAG,EAAE5D,SAAS4B,CAAQ,IAC7B/Q,EAAKqf,KAAK,OAAQ,CAAC,EACnB9a,EAAQ8Q,OAASrV,EAAKqf,KAAK,OAAQ,CAAC,EACpC5hB,IAAIsV,CAAG,EAAEnI,KAAK,WAAY,MAAM,EAAEiF,KAAK7P,EAAK6V,KAAK,EAAEc,QAAQ,EAC7D,EAGCW,KAAM,WACLtX,EAAKsgB,UAAU,EACf7iB,IAAIsV,CAAG,EAAEnI,KAAK,WAAY,UAAU,EAAEiF,KAAK7P,EAAK6V,KAAK,EAAEW,QAAQ,CACjE,EAGCO,MAAO,WACNM,IACE5Z,IAAIkH,OAAOwX,EAAUnc,EAAKgf,SAAS,EAClChf,EAAK8V,SAAS,GAEjBvR,EAAQ8Q,QACN,OAAO9Q,EAAQ4X,SACd,OAAOnc,EAAK+X,QACZ,OAAO/X,EAAKyW,UACZ,OAAOzW,EAAK0W,SAEf1W,EAAKka,SAAS,EAAE,EAChBla,EAAKqO,KAAK,KAAM,SAAS,EAAEA,KAAK,CAAC,GAAI,GAAI,GAAG,EAAEzI,OAAO,CACvD,EAGCoR,IAAK,WACJ,IAAI6C,EAAW,IAAI1X,KAGnB,GAAG1E,IAAIsV,CAAG,EAAE5D,SAAS4B,CAAQ,EAC3B,OAAO/Q,EAAKgH,KAAK6O,EAAKgB,MAAMG,IAAK,KAAMnB,EAAKoB,WAAW,EAGzDxZ,IAAIkH,OAAOwX,EAAUnc,EAAKma,WAAW,EAAG,CACtCT,MAAOG,EAASC,SAAS,EACxBH,QAASE,EAASE,WAAW,EAC7BH,QAASC,EAASG,WAAW,CAChC,CAAC,EAEDha,EAAKka,SAASla,EAAK0F,MAAM,CAAC,EAC1B2R,GAAYrX,EAAK8V,SAAS,EAC1B9V,EAAKqO,KAAK,KAAM,OAAO,EAAEA,KAAK,EAAEzI,OAAO,CACzC,EAGCkR,QAAS,WACR,GAAGvS,EAAQ8Q,OACT,GAAG5X,IAAIsV,CAAG,EAAE5D,SAAS4B,CAAQ,EAAG,OAAO/Q,EAAKgH,KACzB,SAAjBzC,EAAQpH,KAAkB0Y,EAAK/Z,QAAQgG,QAAQ,gBAAO,cAAI,EAAI+T,EAAK/Z,OACrE,CAAC,MAED,GAAG2B,IAAIsV,CAAG,EAAE5D,SAAS4B,CAAQ,EAAG,OAAO/Q,EAAKgH,KAAK6O,EAAKoB,WAAW,EAGnEjX,EAAKka,SAASla,EAAK0F,MAAM,CAAC,EAC1B1F,EAAKqO,KAAK,KAAM,WAAW,EAAEA,KAAK,EAAEzI,OAAO,CAC7C,CACF,EACAyb,EAAOlkB,IAASkkB,EAAOlkB,GAAM,CAC/B,EAGAwM,EAAM1K,UAAUiX,OAAS,SAAS1V,GAChC,IAAIR,EAAO/D,KACVsI,EAAUvE,EAAKrE,OACfwgB,EAAWnc,EAAK0e,aAAale,CAAK,EAClCqe,EAAUta,EAAQ8Q,QAA2B,SAAjB9Q,EAAQpH,MAAoC,UAAjBoH,EAAQpH,MAE/Dud,EAAW1a,EAAK0a,SAASla,GAAS,GAClC6b,EAASrc,EAAKqc,OAAO7b,GACrB8gB,EAAa,SAASnkB,GACrB,IAAIokB,EAAS9jB,IAAIid,CAAQ,EAAE7O,KAAK,oBAAoB,EAAE,GACrD2V,EAAU/jB,IAAIid,CAAQ,EAAE7O,KAAK,qBAAqB,EAAE,GA4BrD,OAzBG0V,IACDlF,EAAO,GAAKlf,EAAOkf,EAAO,GAAK,GAAKA,EAAO,GAAK,GAChDrc,EAAKqf,KAAK,OAAQ7e,CAAK,GAGtBghB,IACDrkB,EAAOkf,EAAO,EAAE,GAAKA,EAAO,EAAE,GAC9Brc,EAAKqf,KAAK,QAAS7e,CAAK,IAGvB+gB,GAAUC,KACX/jB,IAAIkH,OAAOwX,EAAU,CACnB/G,KAAMiH,EAAO,EACf,CAAC,EACEwC,IAAS1C,EAAS/G,KAAOiH,EAAO,IACnC9X,EAAQ8Q,OAASrV,EAAKqO,KAAK,KAAM,QAAQ,EACzC9J,EAAQ8Q,OAASrV,EAAK0R,MAAM,CAC1B9H,KAAMnM,IAAIuC,EAAK6a,MAAM,EAAEhP,KAAK2I,CAAY,EACxC8C,KAAM,CACJlC,KAAMiH,EAAO,EACf,CACF,CAAC,GAGHrc,EAAKsf,aAAa,EACXiC,GAAUC,CACnB,EAEA,MAAO,CACLC,SAAU,WACLH,EAAW,KAAK,IACfthB,EAAK2X,aACPpT,EAAQ4X,SAAS/G,IAAI,GACrBpV,EAAKsc,UAAU,OAAO,EAAExG,SAAS,KAAM,KAAM,MAAM,IAEnDqG,EAAS/G,IAAI,GACbpV,EAAKsc,UAAU,OAAO,EAAExG,SAAS,KAAMtV,CAAK,EAE5CR,EAAK4X,kBAAkBI,KAAOhY,EAAKugB,OAAO9iB,IAAIid,CAAQ,EAAE7O,KAAK,eAAe,EAAGrL,CAAK,EAAIR,EAAKqO,KAAK,KAAM,QAAQ,GAEpH,EACCqT,UAAW,WACN1hB,EAAK2X,cACPwE,EAAW5X,EAAQ4X,UAErB,IAAI+E,EAAKlhB,EAAKkd,QAAQf,EAAS/G,KAAM+G,EAASvF,MAAO,KAAK,EAC1DnZ,IAAIkH,OAAOwX,EAAU,CACnB/G,KAAM8L,EAAG,GACRtK,MAAOsK,EAAG,EACb,CAAC,EAEDlhB,EAAKsc,UAAU,OAAO,EAAExG,SAAS,KAAM,KAAM,MAAM,EAC9C9V,EAAK2X,cACR3X,EAAK4X,kBAAkBI,KAAOhY,EAAKugB,OAAO9iB,IAAIid,CAAQ,EAAE7O,KAAK,eAAe,EAAGrL,CAAK,EAAIR,EAAKqO,KAAK,KAAM,QAAQ,EAEpH,EACCsT,UAAW,WACN3hB,EAAK2X,cACPwE,EAAW5X,EAAQ4X,UAErB,IAAI+E,EAAKlhB,EAAKkd,QAAQf,EAAS/G,KAAM+G,EAASvF,KAAK,EACnDnZ,IAAIkH,OAAOwX,EAAU,CACnB/G,KAAM8L,EAAG,GACRtK,MAAOsK,EAAG,EACb,CAAC,EAEDlhB,EAAKsc,UAAU,OAAO,EAAExG,SAAS,KAAM,KAAM,MAAM,EAC9C9V,EAAK2X,cACR3X,EAAK4X,kBAAkBI,KAAOhY,EAAKugB,OAAO9iB,IAAIid,CAAQ,EAAE7O,KAAK,eAAe,EAAGrL,CAAK,EAAIR,EAAKqO,KAAK,KAAM,QAAQ,EAEpH,EACCuT,SAAU,WACNN,EAAW,IACVthB,EAAK2X,aACPpT,EAAQ4X,SAAS/G,IAAI,GACrBpV,EAAKsc,UAAU,OAAO,EAAExG,SAAS,KAAM,EAAG,MAAM,IAEhDqG,EAAS/G,IAAI,GACbpV,EAAKsc,UAAU,OAAO,EAAExG,SAAS,KAAMtV,CAAK,EAC5CR,EAAK4X,kBAAkBI,KAAOhY,EAAKugB,OAAO9iB,IAAIid,CAAQ,EAAE7O,KAAK,eAAe,EAAGrL,CAAK,EAAIR,EAAKqO,KAAK,KAAM,QAAQ,GAEpH,CACF,CACF,EAGA1E,EAAM1K,UAAU4d,YAAc,WAC5B,IAAI7c,EAAO/D,KACA+D,EAAKrE,OAGhB8B,IAAIuC,EAAK4J,IAAI,EAAEtJ,GAAG,QAAS,SAASM,GAClCnD,IAAI2K,MAAMxH,CAAC,CACb,CAAC,EAAEN,GAAG,YAAa,SAASM,GAC1BnD,IAAI2K,MAAMxH,CAAC,CACb,CAAC,EAGDnD,IAAI8C,KAAKP,EAAKya,WAAY,SAAS7d,EAAGilB,GAEpCpkB,IAAIokB,EAAO,EAAE,EAAEvhB,GAAG,QAAS,SAASM,GAClCZ,EAAKkW,OAAOtZ,CAAC,EAAE6kB,SAAS,CAC1B,CAAC,EAGDhkB,IAAIokB,EAAO,EAAE,EAAEvhB,GAAG,QAAS,SAASM,GAClCZ,EAAKkW,OAAOtZ,CAAC,EAAE8kB,UAAU,CAC3B,CAAC,EAGDjkB,IAAIokB,EAAO,EAAE,EAAEhW,KAAK,MAAM,EAAEvL,GAAG,QAAS,SAASM,GAC/C,IAAIyM,EAAQ5P,IAAIxB,IAAI,EACnB6lB,EAAQzU,EAAMzC,KAAK,QAAQ,EAC3BmX,EAAU1U,EAAMzC,KAAK,UAAU,EAE5BkX,IAEJA,EAAQA,EAAM7c,MAAM,GAAG,EAEvBjF,EAAKqc,OAAOzf,GAAK,CAAY,EAAXklB,EAAM,GAAmB,EAAXA,EAAM,IACtC9hB,EAAKqf,KAAK0C,EAASnlB,CAAC,EACpBa,IAAIuC,EAAK6a,MAAM,EAAEhP,KAAK,IAAK6I,CAAa,EAAE1F,SAAS+B,CAAQ,EAC7D,CAAC,EAGDtT,IAAIokB,EAAO,EAAE,EAAEvhB,GAAG,QAAS,SAASM,GAClCZ,EAAKkW,OAAOtZ,CAAC,EAAE+kB,UAAU,CAC3B,CAAC,EAGDlkB,IAAIokB,EAAO,EAAE,EAAEvhB,GAAG,QAAS,SAASM,GAClCZ,EAAKkW,OAAOtZ,CAAC,EAAEglB,SAAS,CAC1B,CAAC,CACH,CAAC,EAGDnkB,IAAI8C,KAAKP,EAAK7B,MAAO,SAASvB,EAAGuB,GACrBV,IAAIU,CAAK,EAAE0N,KAAK,IAAI,EAC1BvL,GAAG,QAAS,WACdN,EAAKugB,OAAO9iB,IAAIxB,IAAI,EAAGW,CAAC,CAC1B,CAAC,CACH,CAAC,EAGDa,IAAIuC,EAAK6a,MAAM,EAAEhP,KAAK,MAAM,EAAEvL,GAAG,QAAS,WACxC,IAAInD,EAAOM,IAAIxB,IAAI,EAAE2O,KAAK,UAAU,EACpC5K,EAAKmQ,KAAKlU,KAAMkB,CAAI,CACtB,CAAC,CACH,EAGAwM,EAAM1K,UAAUqZ,QAAU,SAAS1O,GACjC,MAAO,iBAAiB5I,KAAK4I,EAAKoY,QAAQC,kBAAkB,CAAC,GAAK,iBAAiBjhB,KAAK4I,EAAKoY,OAAO,CACtG,EAGArY,EAAM1K,UAAUwJ,OAAS,WACvB,IAKIyZ,EALAliB,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAEf4I,EAAQqF,KAAK,IAAMrF,CAAAA,EAAQqF,KAAK,GAAGuY,eASvC5d,EAAQqF,KAAKtJ,GAAGiE,EAAQiR,QAPpB0M,EAAY,WAEXvkB,EAAQgf,SAAWpY,EAAQnB,IAC9BpD,EAAK8Q,OAAO,CACd,CAG0C,EAC1CvM,EAAQqF,KAAK,GAAGuY,aAAe,CAAA,EAC/B5d,EAAQiT,UAAUlX,GAAGiE,EAAQiR,QAAS0M,CAAS,EAG/CliB,EAAKoiB,OAAS,WACZpiB,EAAK4F,OAAO,EACZrB,EAAQqF,KAAKb,IAAIxE,EAAQiR,QAAS0M,CAAS,EAC3C3d,EAAQqF,KAAKgG,WAAW,SAAS,EACjCrL,EAAQqF,KAAKgG,WAAW2D,CAAM,EAC9BhP,EAAQqF,KAAK,GAAGuY,aAAe,CAAA,EAC/B5d,EAAQiT,UAAUzO,IAAIxE,EAAQiR,QAAS0M,CAAS,EAChD3d,EAAQiT,UAAU5H,WAAW,SAAS,EACtC,OAAO+D,EAAW3T,KAAKuE,EAAQnB,GACjC,EACF,EAGAuQ,EAAW3T,KAAO,GAGlB2T,EAAWmB,QAAU,SAAS1R,GAC5B,IAAIpD,EAAO2T,EAAW3T,KAAKoD,GAE3B,MADG,CAACpD,GAAQqT,GAAS3T,MAAMsH,KAAK,EAAE/J,MAAMmG,EAAM2Q,EAAU,sBAAwB3Q,EAAI,cAAkB,sBAAsB,EACrHpD,CACT,EAGAsT,EAAM+O,IAAM,SAAS5kB,GAEnBA,EAAI/B,CAAQ,EAAE4E,GAAG,YAAa,SAASM,GACrC,IACIZ,EAGAuE,EAJA5G,EAAQgf,SACR3c,EAAO2T,EAAWmB,QAAQnX,EAAQgf,MAAM,KAGxCpY,EAAUvE,EAAKrE,OAGjBiF,EAAEyJ,SAAW9F,EAAQqF,KAAK,IAC1BhJ,EAAEyJ,SAAW9F,EAAQiT,UAAU,IAC/B5W,EAAEyJ,SAAW5M,EAAI8G,EAAQ+d,SAAS,EAAE,IACnC/d,EAAQqF,KAAK,IAAMrF,EAAQqF,KAAK,GAAGkF,SAASlO,EAAEyJ,MAAM,GAGvDrK,EAAK4F,OAAO,EAEd,CAAC,EAAEtF,GAAG,UAAW,SAASM,GACxB,IACIZ,EADArC,EAAQgf,SACR3c,EAAO2T,EAAWmB,QAAQnX,EAAQgf,MAAM,IAIhB,WAAzB3c,EAAKrE,OAAOoQ,UACE,KAAdnL,EAAEsS,SACAzV,EAAI,IAAKuC,EAAKia,MAAM,EAAE,IAAMja,EAAKia,SAAWtQ,EAAM+S,eACnD9b,EAAE2hB,eAAe,EACjB9kB,EAAIuC,EAAK6a,MAAM,EAAEhP,KAAK2I,CAAY,EAAE,GAAG+H,MAAM,EAGnD,CAAC,EAGD9e,EAAIgM,CAAM,EAAEnJ,GAAG,SAAU,WACvB,GAAI3C,EAAQgf,OAAZ,CACA,IAAI3c,EAAO2T,EAAWmB,QAAQnX,EAAQgf,MAAM,EAC5C,GAAI3c,EAEJ,MAAG,EAACA,CAAAA,EAAK4J,MAASnM,CAAAA,EAzlEX,gBAylEmB,EAAE,KAI5BuC,KAAAA,EAAK+L,SAAS,CARY,CAS5B,CAAC,CACH,EAGApO,EAAQmT,OAAS,SAASvM,GACpBqP,EAAO,IAAIjK,EAAMpF,CAAO,EAC5B,OAAOoP,EAAWtM,KAAKuM,CAAI,CAC7B,EAGAjW,EAAQmW,OAAS,SAAU1Q,EAAImB,GACzBvE,EAAO2T,EAAWmB,QAAQ1R,CAAE,EAChC,GAAIpD,EACJ,OAAOA,EAAK8T,OAAOvP,CAAO,CAC5B,EAGA5G,EAAQ6kB,QAAU,SAAUpf,GACtBpD,EAAO2T,EAAWmB,QAAQ1R,CAAE,EAChC,GAAGpD,EACD,OAAOA,EAAK4T,IAEhB,EAGAjW,EAAQqJ,KAAO,SAAS5D,EAAI4I,GACtBhM,EAAO2T,EAAWmB,QAAQ1R,CAAE,EAChC,GAAIpD,EACJ,OAAOA,EAAKgH,KAAKgF,CAAI,CACvB,EAGArO,EAAQykB,OAAS,SAAShf,GACpBpD,EAAO2T,EAAWmB,QAAQ1R,CAAE,EAChC,GAAIpD,EACJ,OAAOA,EAAKoiB,OAAO,CACrB,EAGAzkB,EAAQuS,MAAQ,SAAS9M,GACnBpD,EAAO2T,EAAWmB,QAAQ1R,GAAMzF,EAAQgf,MAAM,EAClD,GAAI3c,EACJ,OAAOA,EAAK4F,OAAO,CACrB,EAGAjI,EAAQ+H,MAAQ,SAASyW,EAAUjH,EAAQuN,GA2BzC,OA1BAtG,EAAWA,GAAY,GAOvBjH,IAHEA,EADmB,UAAlB,OAAOA,EACCvB,EAAWsB,UAAUC,CAAM,EAG5BA,IAAU,IAAIwN,OAAO,EAG/BjlB,IAAI8C,KAAK2U,EAAQ,SAAStY,EAAGuD,GACxB,SAASa,KAAKb,CAAI,EACnB+U,EAAOtY,GAAKa,IAAI6M,MAAM6R,EAAS/G,KAAMjV,EAAKxD,MAAM,EACxC,OAAOqE,KAAKb,CAAI,EACxB+U,EAAOtY,GAAKa,IAAI6M,MAAM6R,EAASvF,OAAS6L,GAAO,GAAItiB,EAAKxD,MAAM,EACtD,OAAOqE,KAAKb,CAAI,EACxB+U,EAAOtY,GAAKa,IAAI6M,MAAM6R,EAAS7E,KAAMnX,EAAKxD,MAAM,EACxC,OAAOqE,KAAKb,CAAI,EACxB+U,EAAOtY,GAAKa,IAAI6M,MAAM6R,EAASzC,MAAOvZ,EAAKxD,MAAM,EACzC,OAAOqE,KAAKb,CAAI,EACxB+U,EAAOtY,GAAKa,IAAI6M,MAAM6R,EAASxC,QAASxZ,EAAKxD,MAAM,EAC3C,OAAOqE,KAAKb,CAAI,IACxB+U,EAAOtY,GAAKa,IAAI6M,MAAM6R,EAASvC,QAASzZ,EAAKxD,MAAM,EAEvD,CAAC,EAEMuY,EAAOvH,KAAK,EAAE,CACvB,EAGAhQ,EAAQ+f,WAAa,SAAS9G,EAAOxB,GACnC,IAAIyE,EAAW,IAAI1X,KAOnB,OALA0X,EAASoF,YACP7J,GAAQyE,EAASN,YAAY,EAC5B3C,GAAUiD,EAASL,SAAS,EAAI,EAClC,CAAC,EAEK,IAAIrX,KAAK0X,EAASzX,QAAQ,EAAI,KAAa,EAAEqX,QAAQ,CAC9D,EAGApG,GACE1V,EAAQ2V,MAAM,EACb5T,MAAMP,OAAO,MAAO,SAASM,GAC5B9B,EAAQoH,KAAOrF,MAAMR,MAAMpC,IAC3BwW,EAAM+O,IAAI5kB,GAAG,EACbgC,EAAQsU,EAAUpW,CAAO,CAC3B,CAAC,GAEkB,YAAlB,OAAOwB,QAAyBA,OAAOwjB,IAAOxjB,OAAO,WAEpD,OADAmU,EAAM+O,IAAI5kB,GAAG,EACNE,CACT,CAAC,GACCA,EAAQ2V,MAAM,EACdA,EAAM+O,IAAI5Y,EAAOhM,GAAG,EACpBgM,EAAO9L,QAAUA,EAIvB,EAAE8L,OAAQA,OAAO/N,QAAQ,EC9wEzB,CAAC,SAAUknB,EAAQvjB,GAEK,UAAlB,OAAOwjB,QAAiD,UAA1B,OAAOA,OAAOpjB,QAQhDojB,OAAOpjB,QAAUmjB,EAAOlnB,SACvB2D,EAASujB,CAAa,EACtB,SAAUE,GACT,GAAMA,EAAEpnB,SAGR,OAAO2D,EAASyjB,CAAE,EAFjB,MAAM,IAAIC,MAAO,0CAA2C,CAG9D,EAED1jB,EAASujB,CAAO,CAIlB,EAAoB,aAAlB,OAAOnZ,OAAyBA,OAASxN,KAAM,SAAUwN,EAAQuZ,GAOnE,IAAIC,EAAa,GAEbvnB,EAAW+N,EAAO/N,SAElB8F,EAAQyhB,EAAWzhB,MAEnBkhB,EAASO,EAAWP,OAEpBnhB,EAAO0hB,EAAW1hB,KAElBgB,EAAU0gB,EAAW1gB,QAErB2gB,EAAa,GAEb3lB,EAAW2lB,EAAW3lB,SAEtB4lB,EAASD,EAAWE,eAEpBC,EAAU,GAKbnhB,EAAU,SAGV9B,EAAS,SAAUsJ,EAAUP,GAI5B,OAAO,IAAI/I,EAAOC,GAAG0U,KAAMrL,EAAUP,CAAQ,CAC9C,EAIAma,EAAQ,qCAGRC,EAAY,QACZC,EAAa,eAGbC,EAAa,SAAU3kB,EAAK4kB,GAC3B,OAAOA,EAAOC,YAAY,CAC3B,EA0dD,SAASC,EAAa1e,GAMrB,IAAIvI,EAAS,CAAC,CAACuI,GAAO,WAAYA,GAAOA,EAAIvI,OAC5CQ,EAAOiD,EAAOjD,KAAM+H,CAAI,EAEzB,MAAc,aAAT/H,GAAuBiD,CAAAA,EAAOyjB,SAAU3e,CAAI,IAIjC,UAAT/H,GAA+B,IAAXR,GACR,UAAlB,OAAOA,GAAgC,EAATA,GAAgBA,EAAS,KAAOuI,EAChE,CAveA9E,EAAOC,GAAKD,EAAOnB,UAAY,CAG9BJ,OAAQqD,EAERiI,YAAa/J,EAGbsJ,SAAU,GAGV/M,OAAQ,EAERmnB,QAAS,WACR,OAAOtiB,EAAM6F,KAAMpL,IAAK,CACzB,EAIA8nB,IAAK,SAAUxZ,GACd,OAAc,MAAPA,EAGJA,EAAM,EAAItO,KAAMsO,EAAMtO,KAAKU,QAAWV,KAAMsO,GAG9C/I,EAAM6F,KAAMpL,IAAK,CACnB,EAIA+nB,UAAW,SAAUC,GAGhBC,EAAM9jB,EAAO+jB,MAAOloB,KAAKkO,YAAY,EAAG8Z,CAAM,EAOlD,OAJAC,EAAIE,WAAanoB,KACjBioB,EAAI/a,QAAUlN,KAAKkN,QAGZ+a,CACR,EAGA3jB,KAAM,SAAUZ,GACf,OAAOS,EAAOG,KAAMtE,KAAM0D,CAAS,CACpC,EAEA0kB,IAAK,SAAU1kB,GACd,OAAO1D,KAAK+nB,UAAW5jB,EAAOikB,IAAKpoB,KAAM,SAAU2N,EAAMhN,GACxD,OAAO+C,EAAS0H,KAAMuC,EAAMhN,EAAGgN,CAAK,CACrC,CAAE,CAAE,CACL,EAEApI,MAAO,WACN,OAAOvF,KAAK+nB,UAAWxiB,EAAMC,MAAOxF,KAAMoN,SAAU,CAAE,CACvD,EAEA6I,MAAO,WACN,OAAOjW,KAAKqoB,GAAI,CAAE,CACnB,EAEA5nB,KAAM,WACL,OAAOT,KAAKqoB,GAAI,CAAC,CAAE,CACpB,EAEAA,GAAI,SAAU1nB,GACb,IAAI2K,EAAMtL,KAAKU,OACd8e,EAAI,CAAC7e,GAAMA,EAAI,EAAI2K,EAAM,GAC1B,OAAOtL,KAAK+nB,UAAgB,GAALvI,GAAUA,EAAIlU,EAAM,CAAEtL,KAAMwf,IAAQ,EAAG,CAC/D,EAEApJ,IAAK,WACJ,OAAOpW,KAAKmoB,YAAcnoB,KAAKkO,YAAY,CAC5C,EAIA5I,KAAMA,EACNkG,KAAMwb,EAAWxb,KACjBhH,OAAQwiB,EAAWxiB,MACpB,EAEAL,EAAOuE,OAASvE,EAAOC,GAAGsE,OAAS,WAClC,IAAS4f,EAAaC,EAAM5hB,EAAM2B,EAASG,EAC1C2F,EAAShB,UAAW,IAAO,GAC3BzM,EAAI,EACJD,EAAS0M,UAAU1M,OACnB8nB,EAAO,CAAA,EAsBR,IAnBuB,WAAlB,OAAOpa,IACXoa,EAAOpa,EAGPA,EAAShB,UAAWzM,IAAO,GAC3BA,CAAC,IAIqB,UAAlB,OAAOyN,GAAwBjK,EAAOskB,WAAYra,CAAO,IAC7DA,EAAS,IAILzN,IAAMD,IACV0N,EAASpO,KACTW,CAAC,IAGMA,EAAID,EAAQC,CAAC,GAGpB,GAAqC,OAA9B2H,EAAU8E,UAAWzM,IAG3B,IAAMgG,KAAQ2B,EACbhI,EAAM8N,EAAQzH,GAITyH,KAHLma,EAAOjgB,EAAS3B,MAQX6hB,GAAQD,IAAUpkB,EAAOukB,cAAeH,CAAK,IAC/CD,EAAcnkB,EAAOsC,QAAS8hB,CAAK,KAIpC9f,EAFI6f,GACJA,EAAc,CAAA,EACNhoB,GAAO6D,EAAOsC,QAASnG,CAAI,EAAIA,EAAM,IAGrCA,GAAO6D,EAAOukB,cAAepoB,CAAI,EAAIA,EAAM,GAIpD8N,EAAQzH,GAASxC,EAAOuE,OAAQ8f,EAAM/f,EAAO8f,CAAK,GAGvCA,IAASjV,YACpBlF,EAAQzH,GAAS4hB,IAOrB,OAAOna,CACR,EAEAjK,EAAOuE,OAAQ,CAGdigB,QAAS,UAAa1iB,EAAUuI,KAAKoa,OAAO,GAAI/iB,QAAS,MAAO,EAAG,EAGnEgjB,QAAS,CAAA,EAET7nB,MAAO,SAAUC,GAChB,MAAM,IAAI6lB,MAAO7lB,CAAI,CACtB,EAEA6nB,KAAM,aAKNL,WAAY,SAAUxf,GACrB,MAA8B,aAAvB9E,EAAOjD,KAAM+H,CAAI,CACzB,EAEAxC,QAASoH,MAAMpH,SAAW,SAAUwC,GACnC,MAA8B,UAAvB9E,EAAOjD,KAAM+H,CAAI,CACzB,EAEA2e,SAAU,SAAU3e,GAEnB,OAAc,MAAPA,GAAeA,GAAOA,EAAIuE,MAClC,EAEAub,UAAW,SAAU9f,GAMpB,IAAI+f,EAAgB/f,GAAOA,EAAI3H,SAAS,EACxC,MAAO,CAAC6C,EAAOsC,QAASwC,CAAI,GAA4D,GAArD+f,EAAgBnH,WAAYmH,CAAc,EAAI,CAClF,EAEAC,cAAe,SAAUhgB,GAExB,IADA,IAAItC,KACUsC,EACb,MAAO,CAAA,EAER,MAAO,CAAA,CACR,EAEAyf,cAAe,SAAUzf,GAMxB,GAAK,CAACA,GAA8B,WAAvB9E,EAAOjD,KAAM+H,CAAI,GAAkBA,EAAIigB,UAAY/kB,EAAOyjB,SAAU3e,CAAI,EACpF,MAAO,CAAA,EAGR,IAGC,GAAKA,EAAIiF,aACR,CAACgZ,EAAO9b,KAAMnC,EAAK,aAAc,GACjC,CAACie,EAAO9b,KAAMnC,EAAIiF,YAAYlL,UAAW,eAAgB,EACzD,MAAO,CAAA,CAMT,CAJE,MAAQ2B,GAGT,MAAO,CAAA,CACR,CAIA,GAAK,CAACyiB,EAAQ+B,SACb,IA1BD,IAAI5gB,KA0BUU,EACZ,OAAOie,EAAO9b,KAAMnC,EAAKV,CAAI,EAM/B,IAAMA,KAAOU,GAEb,OAAOV,IAAQ+K,WAAa4T,EAAO9b,KAAMnC,EAAKV,CAAI,CACnD,EAEArH,KAAM,SAAU+H,GACf,OAAY,MAAPA,EACGA,EAAM,GAEQ,UAAf,OAAOA,GAAmC,YAAf,OAAOA,EACxCge,EAAY3lB,EAAS8J,KAAMnC,CAAI,IAAO,SACtC,OAAOA,CACT,EAIAmgB,WAAY,SAAUvgB,GAChBA,GAAQ1E,EAAOklB,KAAMxgB,CAAK,IAK5B2E,EAAO8b,YAAc,SAAUzgB,GAChC2E,EAAe,KAAEpC,KAAMoC,EAAQ3E,CAAK,CACrC,GAAKA,CAAK,CAEZ,EAIA0gB,UAAW,SAAUC,GACpB,OAAOA,EAAO3jB,QAASyhB,EAAW,KAAM,EAAEzhB,QAAS0hB,EAAYC,CAAW,CAC3E,EAEAxQ,SAAU,SAAUrJ,EAAMhH,GACzB,OAAOgH,EAAKqJ,UAAYrJ,EAAKqJ,SAAS9M,YAAY,IAAMvD,EAAKuD,YAAY,CAC1E,EAEA5F,KAAM,SAAU2E,EAAKvF,GACpB,IAAIhD,EAAQC,EAAI,EAEhB,GAAKgnB,EAAa1e,CAAI,EAErB,IADAvI,EAASuI,EAAIvI,OACLC,EAAID,GACqC,CAAA,IAA3CgD,EAAS0H,KAAMnC,EAAKtI,GAAKA,EAAGsI,EAAKtI,EAAI,EADvBA,CAAC,SAMrB,IAAMA,KAAKsI,EACV,GAAgD,CAAA,IAA3CvF,EAAS0H,KAAMnC,EAAKtI,GAAKA,EAAGsI,EAAKtI,EAAI,EACzC,MAKH,OAAOsI,CACR,EAGAogB,KAAM,SAAU7Z,GACf,OAAe,MAARA,EACN,IACEA,EAAO,IAAK3J,QAASwhB,EAAO,EAAG,CACnC,EAGAoC,UAAW,SAAUhe,EAAKie,GACrBzB,EAAMyB,GAAW,GAarB,OAXY,MAAPje,IACCkc,EAAaxc,OAAQM,CAAI,CAAE,EAC/BtH,EAAO+jB,MAAOD,EACE,UAAf,OAAOxc,EACP,CAAEA,GAAQA,CACX,EAEAnG,EAAK8F,KAAM6c,EAAKxc,CAAI,GAIfwc,CACR,EAEA0B,QAAS,SAAUhc,EAAMlC,EAAK9K,GAC7B,IAAI2K,EAEJ,GAAKG,EAAM,CACV,GAAKnF,EACJ,OAAOA,EAAQ8E,KAAMK,EAAKkC,EAAMhN,CAAE,EAMnC,IAHA2K,EAAMG,EAAI/K,OACVC,EAAIA,EAAIA,EAAI,EAAI6N,KAAK6H,IAAK,EAAG/K,EAAM3K,CAAE,EAAIA,EAAI,EAErCA,EAAI2K,EAAK3K,CAAC,GAGjB,GAAKA,KAAK8K,GAAOA,EAAK9K,KAAQgN,EAC7B,OAAOhN,CAGV,CAEA,MAAO,CAAC,CACT,EAEAunB,MAAO,SAAUjS,EAAO2T,GAKvB,IAJA,IAAIte,EAAM,CAACse,EAAOlpB,OACjB8e,EAAI,EACJ7e,EAAIsV,EAAMvV,OAEH8e,EAAIlU,GACX2K,EAAOtV,CAAC,IAAOipB,EAAQpK,CAAC,IAKzB,GAAKlU,GAAQA,EACZ,KAAQse,EAAQpK,KAAQlM,WACvB2C,EAAOtV,CAAC,IAAOipB,EAAQpK,CAAC,IAM1B,OAFAvJ,EAAMvV,OAASC,EAERsV,CACR,EAEA4T,KAAM,SAAU7B,EAAOtkB,EAAUomB,GAShC,IARA,IACCC,EAAU,GACVppB,EAAI,EACJD,EAASsnB,EAAMtnB,OACfspB,EAAiB,CAACF,EAIXnpB,EAAID,EAAQC,CAAC,GACF,CAAC+C,EAAUskB,EAAOrnB,GAAKA,CAAE,GAClBqpB,GACxBD,EAAQzkB,KAAM0iB,EAAOrnB,EAAI,EAI3B,OAAOopB,CACR,EAGA3B,IAAK,SAAUJ,EAAOtkB,EAAUumB,GAC/B,IAAIvpB,EAAQgJ,EACX/I,EAAI,EACJsnB,EAAM,GAGP,GAAKN,EAAaK,CAAM,EAEvB,IADAtnB,EAASsnB,EAAMtnB,OACPC,EAAID,EAAQC,CAAC,GAGN,OAFd+I,EAAQhG,EAAUskB,EAAOrnB,GAAKA,EAAGspB,CAAI,IAGpChC,EAAI3iB,KAAMoE,CAAM,OAMlB,IAAM/I,KAAKqnB,EAGI,OAFdte,EAAQhG,EAAUskB,EAAOrnB,GAAKA,EAAGspB,CAAI,IAGpChC,EAAI3iB,KAAMoE,CAAM,EAMnB,OAAO+c,EAAOjhB,MAAO,GAAIyiB,CAAI,CAC9B,EAGAiC,KAAM,EAINC,MAAO,SAAU/lB,EAAI8I,GACpB,IAAIC,EAAaid,EAUjB,MARwB,UAAnB,OAAOld,IACXkd,EAAMhmB,EAAI8I,GACVA,EAAU9I,EACVA,EAAKgmB,GAKAjmB,EAAOskB,WAAYrkB,CAAG,GAK5B+I,EAAO5H,EAAM6F,KAAMgC,UAAW,CAAE,GAChC+c,EAAQ,WACP,OAAO/lB,EAAGoB,MAAO0H,GAAWlN,KAAMmN,EAAKsZ,OAAQlhB,EAAM6F,KAAMgC,SAAU,CAAE,CAAE,CAC1E,GAGM8c,KAAO9lB,EAAG8lB,KAAO9lB,EAAG8lB,MAAQ/lB,EAAO+lB,IAAI,GAEtCC,GAZC7W,SAaT,EAEAyH,IAAK,WACJ,MAAO,CAAC,IAAM7U,IACf,EAIAkhB,QAASA,CACV,CAAE,EAOqB,YAAlB,OAAOiD,SACXlmB,EAAOC,GAAIimB,OAAOC,UAAatD,EAAYqD,OAAOC,WAKnDnmB,EAAOG,KAAM,uEAAuE0E,MAAO,GAAI,EAC/F,SAAUrI,EAAGgG,GACZsgB,EAAY,WAAatgB,EAAO,KAAQA,EAAKuD,YAAY,CAC1D,CAAE,EAkBF,IAAIqgB,EAWJ,SAAW/c,GAEX,IAAI7M,EACHymB,EACAoD,EACAC,EACAC,EACAC,EACAC,EACA1Y,EACA2Y,EACAC,EACAC,EAGAC,EACAvrB,EACAwrB,EACAC,EACAC,EACAC,EACArB,EACAlX,EAGA8V,EAAU,UAAW,CAAI,IAAIziB,KAC7BmlB,EAAe7d,EAAO/N,SACtB6rB,EAAU,EACVlZ,EAAO,EACPmZ,EAAaC,GAAY,EACzBC,EAAaD,GAAY,EACzBE,EAAgBF,GAAY,EAC5BG,EAAY,SAAUC,EAAGC,GAIxB,OAHKD,IAAMC,IACVd,EAAe,CAAA,GAET,CACR,EAMA7D,EAAS,GAAKC,eACd1b,EAAM,GACNqgB,EAAMrgB,EAAIqgB,IACVC,EAActgB,EAAInG,KAClBA,EAAOmG,EAAInG,KACXC,EAAQkG,EAAIlG,MAGZe,EAAU,SAAU8c,EAAMzV,GAGzB,IAFA,IAAIhN,EAAI,EACP2K,EAAM8X,EAAK1iB,OACJC,EAAI2K,EAAK3K,CAAC,GACjB,GAAKyiB,EAAKziB,KAAOgN,EAChB,OAAOhN,EAGT,MAAO,CAAC,CACT,EAEAqrB,EAAW,6HAKXC,EAAa,sBAGbC,EAAa,mCAGbC,EAAa,MAAQF,EAAa,KAAOC,EAAa,OAASD,EAE9D,gBAAkBA,EAElB,2DAA6DC,EAAa,OAASD,EACnF,OAEDG,EAAU,KAAOF,EAKhB,wFAA6BC,EAG7B,eAGDE,EAAc,IAAI/hB,OAAQ2hB,EAAa,IAAK,GAAI,EAChD5E,EAAQ,IAAI/c,OAAQ,IAAM2hB,EAAa,8BAAgCA,EAAa,KAAM,GAAI,EAE9FK,EAAS,IAAIhiB,OAAQ,IAAM2hB,EAAa,KAAOA,EAAa,GAAI,EAChEM,EAAe,IAAIjiB,OAAQ,IAAM2hB,EAAa,WAAaA,EAAa,IAAMA,EAAa,GAAI,EAE/FO,GAAmB,IAAIliB,OAAQ,IAAM2hB,EAAa,iBAAmBA,EAAa,OAAQ,GAAI,EAE9FQ,GAAU,IAAIniB,OAAQ8hB,CAAQ,EAC9BM,GAAc,IAAIpiB,OAAQ,IAAM4hB,EAAa,GAAI,EAEjDS,EAAY,CACXC,GAAM,IAAItiB,OAAQ,MAAQ4hB,EAAa,GAAI,EAC3CW,MAAS,IAAIviB,OAAQ,QAAU4hB,EAAa,GAAI,EAChDY,IAAO,IAAIxiB,OAAQ,KAAO4hB,EAAa,OAAQ,EAC/Ca,KAAQ,IAAIziB,OAAQ,IAAM6hB,CAAW,EACrCa,OAAU,IAAI1iB,OAAQ,IAAM8hB,CAAQ,EACpCa,MAAS,IAAI3iB,OAAQ,yDAA2D2hB,EAC/E,+BAAiCA,EAAa,cAAgBA,EAC9D,aAAeA,EAAa,SAAU,GAAI,EAC3CiB,KAAQ,IAAI5iB,OAAQ,OAAS0hB,EAAW,KAAM,GAAI,EAGlDmB,aAAgB,IAAI7iB,OAAQ,IAAM2hB,EAAa,mDAC9CA,EAAa,mBAAqBA,EAAa,mBAAoB,GAAI,CACzE,EAEAmB,GAAU,sCACVC,GAAU,SAEVC,EAAU,yBAGVC,GAAa,mCAEbC,GAAW,OACXC,GAAU,QAGVC,EAAY,IAAIpjB,OAAQ,qBAAuB2hB,EAAa,MAAQA,EAAa,OAAQ,IAAK,EAC9F0B,EAAY,SAAU9gB,EAAG+gB,EAASC,GACjC,IAAIC,EAAO,KAAOF,EAAU,MAI5B,OAAOE,GAASA,GAAQD,EACvBD,EACAE,EAAO,EAEN5iB,OAAO6iB,aAAqB,MAAPD,CAAe,EAEpC5iB,OAAO6iB,aAAcD,GAAQ,GAAK,MAAe,KAAPA,EAAe,KAAO,CACnE,EAMAE,GAAgB,WACfhD,EAAY,CACb,EAGD,IACC1lB,EAAKE,MACHiG,EAAMlG,EAAM6F,KAAMigB,EAAa4C,UAAW,EAC3C5C,EAAa4C,UACd,EAGAxiB,EAAK4f,EAAa4C,WAAWvtB,QAASwoB,QAmBvC,CAlBE,MAAQvkB,GACTW,EAAO,CAAEE,MAAOiG,EAAI/K,OAGnB,SAAU0N,EAAQ8f,GACjBnC,EAAYvmB,MAAO4I,EAAQ7I,EAAM6F,KAAK8iB,CAAG,CAAE,CAC5C,EAIA,SAAU9f,EAAQ8f,GAIjB,IAHA,IAAI1O,EAAIpR,EAAO1N,OACdC,EAAI,EAEIyN,EAAOoR,CAAC,IAAM0O,EAAIvtB,CAAC,MAC5ByN,EAAO1N,OAAS8e,EAAI,CACrB,CACD,CACD,CAEA,SAAS+K,EAAQ9c,EAAUP,EAASwc,EAASyE,GAC5C,IAAIC,EAAGztB,EAAGgN,EAAM0gB,EAAKC,EAAW5oB,EAAOyP,EAAQoZ,EAC9CC,EAAathB,GAAWA,EAAQuhB,cAGhCvF,EAAWhc,EAAUA,EAAQgc,SAAW,EAKzC,GAHAQ,EAAUA,GAAW,GAGI,UAApB,OAAOjc,GAAyB,CAACA,GACxB,IAAbyb,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,OAAOQ,EAIR,GAAK,CAACyE,KAEEjhB,EAAUA,EAAQuhB,eAAiBvhB,EAAUme,KAAmB5rB,GACtEurB,EAAa9d,CAAQ,EAEtBA,EAAUA,GAAWzN,EAEhByrB,GAAiB,CAIrB,GAAkB,KAAbhC,IAAoBxjB,EAAQ6nB,GAAWmB,KAAMjhB,CAAS,GAG1D,GAAM2gB,EAAI1oB,EAAM,IAGf,GAAkB,IAAbwjB,EAAiB,CACrB,GAAK,EAACvb,EAAOT,EAAQ1F,eAAgB4mB,CAAE,GAUtC,OAAO1E,EALP,GAAK/b,EAAKxG,KAAOinB,EAEhB,OADA1E,EAAQpkB,KAAMqI,CAAK,EACZ+b,CAOV,MAKC,GAAK8E,IAAe7gB,EAAO6gB,EAAWhnB,eAAgB4mB,CAAE,IACvDvb,EAAU3F,EAASS,CAAK,GACxBA,EAAKxG,KAAOinB,EAGZ,OADA1E,EAAQpkB,KAAMqI,CAAK,EACZ+b,CAET,KAGM,CAAA,GAAKhkB,EAAM,GAEjB,OADAJ,EAAKE,MAAOkkB,EAASxc,EAAQjJ,qBAAsBwJ,CAAS,CAAE,EACvDic,EAGD,IAAM0E,EAAI1oB,EAAM,KAAO0hB,EAAQuH,wBACrCzhB,EAAQyhB,uBAGR,OADArpB,EAAKE,MAAOkkB,EAASxc,EAAQyhB,uBAAwBP,CAAE,CAAE,EAClD1E,CACR,CAID,GAAKtC,EAAQwH,KACZ,CAAClD,EAAeje,EAAW,OAC1B,CAAC0d,GAAa,CAACA,EAAUpmB,KAAM0I,CAAS,GAAK,CAE9C,GAAkB,IAAbyb,EACJsF,EAAathB,EACbqhB,EAAc9gB,OAMR,GAAwC,WAAnCP,EAAQ8J,SAAS9M,YAAY,EAAiB,CAazD,KAVMmkB,EAAMnhB,EAAQtF,aAAc,IAAK,GACtCymB,EAAMA,EAAIxoB,QAAS4nB,GAAS,MAAO,EAEnCvgB,EAAQrF,aAAc,KAAOwmB,EAAM1F,CAAS,EAK7ChoB,GADAwU,EAASwV,EAAUld,CAAS,GACjB/M,OACX4tB,EAAY5B,GAAY3nB,KAAMspB,CAAI,EAAI,IAAMA,EAAM,QAAUA,EAAM,KAC1D1tB,CAAC,IACRwU,EAAOxU,GAAK2tB,EAAY,IAAMO,EAAY1Z,EAAOxU,EAAG,EAErD4tB,EAAcpZ,EAAOzD,KAAM,GAAI,EAG/B8c,EAAahB,GAASzoB,KAAM0I,CAAS,GAAKqhB,GAAa5hB,EAAQ2G,UAAW,GACzE3G,CACF,CAEA,GAAKqhB,EACJ,IAIC,OAHAjpB,EAAKE,MAAOkkB,EACX8E,EAAW5gB,iBAAkB2gB,CAAY,CAC1C,EACO7E,CAMR,CALE,MAAQqF,IACR,QACIV,IAAQ1F,GACZzb,EAAQvF,gBAAiB,IAAK,CAEhC,CAEF,CACD,CAID,OAAOuK,EAAQzE,EAAS5H,QAASwhB,EAAO,IAAK,EAAGna,EAASwc,EAASyE,CAAK,CACxE,CAQA,SAAS3C,KACR,IAAIpJ,EAAO,GAEX,SAASnf,EAAOsF,EAAKmB,GAMpB,OAJK0Y,EAAK9c,KAAMiD,EAAM,GAAI,EAAIiiB,EAAKwE,aAElC,OAAO/rB,EAAOmf,EAAK6M,MAAM,GAElBhsB,EAAOsF,EAAM,KAAQmB,CAC9B,CACA,OAAOzG,CACR,CAMA,SAASisB,EAAc9qB,GAEtB,OADAA,EAAIukB,GAAY,CAAA,EACTvkB,CACR,CAMA,SAAS+qB,EAAQ/qB,GAChB,IAAI0c,EAAMrhB,EAASqG,cAAc,KAAK,EAEtC,IACC,MAAO,CAAC,CAAC1B,EAAI0c,CAAI,CAUlB,CATE,MAAOnc,GACR,MAAO,CAAA,CACR,CAAE,QAEImc,EAAIjN,YACRiN,EAAIjN,WAAW3O,YAAa4b,CAAI,CAIlC,CACD,CAOA,SAASsO,GAAWC,EAAOC,GAI1B,IAHA,IAAI7jB,EAAM4jB,EAAMrmB,MAAM,GAAG,EACxBrI,EAAI8K,EAAI/K,OAEDC,CAAC,IACR6pB,EAAK+E,WAAY9jB,EAAI9K,IAAO2uB,CAE9B,CAQA,SAASE,GAAc5D,EAAGC,GACzB,IAAI4D,EAAM5D,GAAKD,EACd8D,EAAOD,GAAsB,IAAf7D,EAAE1C,UAAiC,IAAf2C,EAAE3C,WACjC,CAAC2C,EAAE8D,aA7VQ,GAAK,KA8VhB,CAAC/D,EAAE+D,aA9VQ,GAAK,IAiWpB,GAAKD,EACJ,OAAOA,EAIR,GAAKD,EACJ,KAASA,EAAMA,EAAIG,aAClB,GAAKH,IAAQ5D,EACZ,MAAO,CAAC,EAKX,OAAOD,EAAI,EAAI,CAAC,CACjB,CA4BA,SAASiE,EAAwBzrB,GAChC,OAAO8qB,EAAa,SAAUY,GAE7B,OADAA,EAAW,CAACA,EACLZ,EAAa,SAAUf,EAAMpE,GAMnC,IALA,IAAIvK,EACHuQ,EAAe3rB,EAAI,GAAI+pB,EAAKztB,OAAQovB,CAAS,EAC7CnvB,EAAIovB,EAAarvB,OAGVC,CAAC,IACHwtB,EAAO3O,EAAIuQ,EAAapvB,MAC5BwtB,EAAK3O,GAAK,EAAEuK,EAAQvK,GAAK2O,EAAK3O,IAGjC,CAAC,CACF,CAAC,CACF,CAOA,SAASsP,GAAa5hB,GACrB,OAAOA,GAAmD,aAAxC,OAAOA,EAAQjJ,sBAAwCiJ,CAC1E,CA2gCA,IAAMvM,KAxgCNymB,EAAUmD,EAAOnD,QAAU,GAO3BsD,EAAQH,EAAOG,MAAQ,SAAU/c,GAG5BqB,EAAkBrB,IAASA,EAAK8gB,eAAiB9gB,GAAMqB,gBAC3D,MAAOA,CAAAA,CAAAA,GAA+C,SAA7BA,EAAgBgI,QAC1C,EAOAgU,EAAcT,EAAOS,YAAc,SAAUnnB,GAC5C,IACCrE,EAAMqE,EAAOA,EAAK4qB,eAAiB5qB,EAAOwnB,EAyW3C,OAtWK7rB,IAAQC,GAA6B,IAAjBD,EAAI0pB,UAAmB1pB,EAAIwP,kBAMpDic,GADAxrB,EAAWD,GACQwP,gBACnBkc,EAAiB,CAACR,EAAOjrB,CAAS,GAI5BuwB,EAASvwB,EAASwwB,cAAgBD,EAAO5f,MAAQ4f,IAEjDA,EAAOzpB,iBACXypB,EAAOzpB,iBAAkB,SAAUynB,GAAe,CAAA,CAAM,EAG7CgC,EAAO3pB,aAClB2pB,EAAO3pB,YAAa,WAAY2nB,EAAc,GAUhD5G,EAAQ+E,WAAagD,EAAO,SAAUrO,GAErC,OADAA,EAAI9N,UAAY,IACT,CAAC8N,EAAIlZ,aAAa,WAAW,CACrC,CAAC,EAMDwf,EAAQnjB,qBAAuBkrB,EAAO,SAAUrO,GAE/C,OADAA,EAAI1a,YAAa3G,EAASywB,cAAc,EAAE,CAAE,EACrC,CAACpP,EAAI7c,qBAAqB,GAAG,EAAEvD,MACvC,CAAC,EAGD0mB,EAAQuH,uBAAyBrB,EAAQvoB,KAAMtF,EAASkvB,sBAAuB,EAM/EvH,EAAQ+I,QAAUhB,EAAO,SAAUrO,GAElC,OADAmK,EAAQ7kB,YAAa0a,CAAI,EAAE3Z,GAAKwhB,EACzB,CAAClpB,EAAS2wB,mBAAqB,CAAC3wB,EAAS2wB,kBAAmBzH,CAAQ,EAAEjoB,MAC9E,CAAC,EAGI0mB,EAAQ+I,SACZ3F,EAAK5a,KAAS,GAAI,SAAUzI,EAAI+F,GAC/B,GAAuC,aAAlC,OAAOA,EAAQ1F,gBAAkC0jB,EAErD,OADIkD,EAAIlhB,EAAQ1F,eAAgBL,CAAG,GACxB,CAAEinB,GAAM,EAErB,EACA5D,EAAK9d,OAAW,GAAI,SAAUvF,GAC7B,IAAIkpB,EAASlpB,EAAGtB,QAAS6nB,EAAWC,CAAU,EAC9C,OAAO,SAAUhgB,GAChB,OAAOA,EAAK/F,aAAa,IAAI,IAAMyoB,CACpC,CACD,IAIA,OAAO7F,EAAK5a,KAAS,GAErB4a,EAAK9d,OAAW,GAAK,SAAUvF,GAC9B,IAAIkpB,EAASlpB,EAAGtB,QAAS6nB,EAAWC,CAAU,EAC9C,OAAO,SAAUhgB,GACZ9J,EAAwC,aAAjC,OAAO8J,EAAK2iB,kBACtB3iB,EAAK2iB,iBAAiB,IAAI,EAC3B,OAAOzsB,GAAQA,EAAK6F,QAAU2mB,CAC/B,CACD,GAID7F,EAAK5a,KAAU,IAAIwX,EAAQnjB,qBAC1B,SAAU0Q,EAAKzH,GACd,MAA6C,aAAxC,OAAOA,EAAQjJ,qBACZiJ,EAAQjJ,qBAAsB0Q,CAAI,EAG9ByS,EAAQwH,IACZ1hB,EAAQU,iBAAkB+G,CAAI,EAD/B,KAAA,CAGR,EAEA,SAAUA,EAAKzH,GACd,IAAIS,EACHyc,EAAM,GACNzpB,EAAI,EAEJ+oB,EAAUxc,EAAQjJ,qBAAsB0Q,CAAI,EAG7C,GAAa,MAARA,EASL,OAAO+U,EARN,KAAS/b,EAAO+b,EAAQ/oB,CAAC,KACD,IAAlBgN,EAAKub,UACTkB,EAAI9kB,KAAMqI,CAAK,EAIjB,OAAOyc,CAGT,EAGDI,EAAK5a,KAAY,MAAIwX,EAAQuH,wBAA0B,SAAU3b,EAAW9F,GAC3E,GAA+C,aAA1C,OAAOA,EAAQyhB,wBAA0CzD,EAC7D,OAAOhe,EAAQyhB,uBAAwB3b,CAAU,CAEnD,EAQAoY,EAAgB,GAOhBD,EAAY,IAEN/D,EAAQwH,IAAMtB,EAAQvoB,KAAMtF,EAASmO,gBAAiB,KAG3DuhB,EAAO,SAAUrO,GAMhBmK,EAAQ7kB,YAAa0a,CAAI,EAAEpR,UAAY,UAAYiZ,EAClD,qBAAiBA,EACjB,kEAMI7H,EAAIlT,iBAAiB,sBAAsB,EAAElN,QACjDyqB,EAAU7lB,KAAM,SAAW2mB,EAAa,cAAe,EAKlDnL,EAAIlT,iBAAiB,YAAY,EAAElN,QACxCyqB,EAAU7lB,KAAM,MAAQ2mB,EAAa,aAAeD,EAAW,GAAI,EAI9DlL,EAAIlT,iBAAkB,QAAU+a,EAAU,IAAK,EAAEjoB,QACtDyqB,EAAU7lB,KAAK,IAAI,EAMdwb,EAAIlT,iBAAiB,UAAU,EAAElN,QACtCyqB,EAAU7lB,KAAK,UAAU,EAMpBwb,EAAIlT,iBAAkB,KAAO+a,EAAU,IAAK,EAAEjoB,QACnDyqB,EAAU7lB,KAAK,UAAU,CAE3B,CAAC,EAED6pB,EAAO,SAAUrO,GAGhB,IAAI/J,EAAQtX,EAASqG,cAAc,OAAO,EAC1CiR,EAAMlP,aAAc,OAAQ,QAAS,EACrCiZ,EAAI1a,YAAa2Q,CAAM,EAAElP,aAAc,OAAQ,GAAI,EAI9CiZ,EAAIlT,iBAAiB,UAAU,EAAElN,QACrCyqB,EAAU7lB,KAAM,OAAS2mB,EAAa,aAAc,EAK/CnL,EAAIlT,iBAAiB,UAAU,EAAElN,QACtCyqB,EAAU7lB,KAAM,WAAY,WAAY,EAIzCwb,EAAIlT,iBAAiB,MAAM,EAC3Bud,EAAU7lB,KAAK,MAAM,CACtB,CAAC,IAGI8hB,EAAQmJ,gBAAkBjD,EAAQvoB,KAAOglB,EAAUkB,EAAQlB,SAChEkB,EAAQuF,uBACRvF,EAAQwF,oBACRxF,EAAQyF,kBACRzF,EAAQ0F,iBAAmB,IAE3BxB,EAAO,SAAUrO,GAGhBsG,EAAQwJ,kBAAoB7G,EAAQ3e,KAAM0V,EAAK,KAAM,EAIrDiJ,EAAQ3e,KAAM0V,EAAK,WAAY,EAC/BsK,EAAc9lB,KAAM,KAAM8mB,CAAQ,CACnC,CAAC,EAGFjB,EAAYA,EAAUzqB,QAAU,IAAI4J,OAAQ6gB,EAAUzZ,KAAK,GAAG,CAAE,EAChE0Z,EAAgBA,EAAc1qB,QAAU,IAAI4J,OAAQ8gB,EAAc1Z,KAAK,GAAG,CAAE,EAI5Emf,EAAavD,EAAQvoB,KAAMkmB,EAAQ6F,uBAAwB,EAK3Dje,EAAWge,GAAcvD,EAAQvoB,KAAMkmB,EAAQpY,QAAS,EACvD,SAAU+Y,EAAGC,GACZ,IAAIkF,EAAuB,IAAfnF,EAAE1C,SAAiB0C,EAAE5c,gBAAkB4c,EAClDoF,EAAMnF,GAAKA,EAAEhY,WACd,OAAO+X,IAAMoF,GAAO,EAAIA,CAAAA,GAAwB,IAAjBA,EAAI9H,UAAkB,EACpD6H,EAAMle,SACLke,EAAMle,SAAUme,CAAI,EACpBpF,EAAEkF,yBAA8D,GAAnClF,EAAEkF,wBAAyBE,CAAI,GAE/D,EACA,SAAUpF,EAAGC,GACZ,GAAKA,EACJ,KAASA,EAAIA,EAAEhY,YACd,GAAKgY,IAAMD,EACV,MAAO,CAAA,EAIV,MAAO,CAAA,CACR,EAMDD,EAAYkF,EACZ,SAAUjF,EAAGC,GAGZ,IAMIoF,EANJ,OAAKrF,IAAMC,GACVd,EAAe,CAAA,EACR,IAIJkG,EAAU,CAACrF,EAAEkF,wBAA0B,CAACjF,EAAEiF,2BAa/B,GAPfG,GAAYrF,EAAE6C,eAAiB7C,MAAUC,EAAE4C,eAAiB5C,GAC3DD,EAAEkF,wBAAyBjF,CAAE,EAG7B,IAIC,CAACzE,EAAQ8J,cAAgBrF,EAAEiF,wBAAyBlF,CAAE,IAAMqF,EAGxDrF,IAAMnsB,GAAYmsB,EAAE6C,gBAAkBpD,GAAgBxY,EAASwY,EAAcO,CAAC,EAC3E,CAAC,EAEJC,IAAMpsB,GAAYosB,EAAE4C,gBAAkBpD,GAAgBxY,EAASwY,EAAcQ,CAAC,EAC3E,EAIDf,EACJxkB,EAASwkB,EAAWc,CAAE,EAAItlB,EAASwkB,EAAWe,CAAE,EAClD,EAGe,EAAVoF,EAAc,CAAC,EAAI,EAC3B,EACA,SAAUrF,EAAGC,GAEZ,GAAKD,IAAMC,EAEV,OADAd,EAAe,CAAA,EACR,EAGR,IAAI0E,EACH9uB,EAAI,EACJwwB,EAAMvF,EAAE/X,WACRmd,EAAMnF,EAAEhY,WACRud,EAAK,CAAExF,GACPyF,EAAK,CAAExF,GAGR,GAAMsF,CAAAA,GAAQH,CAAAA,EACb,OAAOpF,IAAMnsB,EAAW,CAAC,EACxBosB,IAAMpsB,EAAW,EACjB0xB,EAAM,CAAC,EACPH,EAAM,EACNlG,EACExkB,EAASwkB,EAAWc,CAAE,EAAItlB,EAASwkB,EAAWe,CAAE,EAClD,EAGK,GAAKsF,IAAQH,EACnB,OAAOxB,GAAc5D,EAAGC,CAAE,EAK3B,IADA4D,EAAM7D,EACG6D,EAAMA,EAAI5b,YAClBud,EAAGE,QAAS7B,CAAI,EAGjB,IADAA,EAAM5D,EACG4D,EAAMA,EAAI5b,YAClBwd,EAAGC,QAAS7B,CAAI,EAIjB,KAAQ2B,EAAGzwB,KAAO0wB,EAAG1wB,IACpBA,CAAC,GAGF,OAAOA,EAEN6uB,GAAc4B,EAAGzwB,GAAI0wB,EAAG1wB,EAAG,EAG3BywB,EAAGzwB,KAAO0qB,EAAe,CAAC,EAC1BgG,EAAG1wB,KAAO0qB,EAAe,EACzB,CACF,GAEO5rB,CACR,EAEA8qB,EAAOR,QAAU,SAAUwH,EAAMC,GAChC,OAAOjH,EAAQgH,EAAM,KAAM,KAAMC,CAAS,CAC3C,EAEAjH,EAAOgG,gBAAkB,SAAU5iB,EAAM4jB,GASxC,IAPO5jB,EAAK8gB,eAAiB9gB,KAAWlO,GACvCurB,EAAard,CAAK,EAInB4jB,EAAOA,EAAK1rB,QAAS2mB,GAAkB,QAAS,EAE3CpF,EAAQmJ,iBAAmBrF,GAC/B,CAACQ,EAAe6F,EAAO,OACrB,CAACnG,GAAiB,CAACA,EAAcrmB,KAAMwsB,CAAK,KAC5C,CAACpG,GAAiB,CAACA,EAAUpmB,KAAMwsB,CAAK,GAE1C,IACC,IAAItJ,EAAM8B,EAAQ3e,KAAMuC,EAAM4jB,CAAK,EAGnC,GAAKtJ,GAAOb,EAAQwJ,mBAGlBjjB,EAAKlO,UAAuC,KAA3BkO,EAAKlO,SAASypB,SAChC,OAAOjB,CAEI,CAAX,MAAOtjB,IAGV,OAAyD,EAAlD4lB,EAAQgH,EAAM9xB,EAAU,KAAM,CAAEkO,EAAO,EAAEjN,MACjD,EAEA6pB,EAAO1X,SAAW,SAAU3F,EAASS,GAKpC,OAHOT,EAAQuhB,eAAiBvhB,KAAczN,GAC7CurB,EAAa9d,CAAQ,EAEf2F,EAAU3F,EAASS,CAAK,CAChC,EAEA4c,EAAO5b,KAAO,SAAUhB,EAAMhH,IAEtBgH,EAAK8gB,eAAiB9gB,KAAWlO,GACvCurB,EAAard,CAAK,EAGnB,IAAIvJ,EAAKomB,EAAK+E,WAAY5oB,EAAKuD,YAAY,GAE1C+D,EAAM7J,GAAM8iB,EAAO9b,KAAMof,EAAK+E,WAAY5oB,EAAKuD,YAAY,CAAE,EAC5D9F,EAAIuJ,EAAMhH,EAAM,CAACukB,CAAe,EAChC5X,UAEF,OAAOrF,IAAQqF,UACdrF,EACAmZ,EAAQ+E,YAAc,CAACjB,EACtBvd,EAAK/F,aAAcjB,CAAK,GACvBsH,EAAMN,EAAK2iB,iBAAiB3pB,CAAI,IAAMsH,EAAIwjB,UAC1CxjB,EAAIvE,MACJ,IACJ,EAEA6gB,EAAOvpB,MAAQ,SAAUC,GACxB,MAAM,IAAI6lB,MAAO,0CAA4C7lB,CAAI,CAClE,EAMAspB,EAAOmH,WAAa,SAAUhI,GAC7B,IAAI/b,EACHgkB,EAAa,GACbnS,EAAI,EACJ7e,EAAI,EAOL,GAJAoqB,EAAe,CAAC3D,EAAQwK,iBACxB9G,EAAY,CAAC1D,EAAQyK,YAAcnI,EAAQnkB,MAAO,CAAE,EACpDmkB,EAAQle,KAAMmgB,CAAU,EAEnBZ,EAAe,CACnB,KAASpd,EAAO+b,EAAQ/oB,CAAC,KACnBgN,IAAS+b,EAAS/oB,KACtB6e,EAAImS,EAAWrsB,KAAM3E,CAAE,GAGzB,KAAQ6e,CAAC,IACRkK,EAAQllB,OAAQmtB,EAAYnS,GAAK,CAAE,CAErC,CAMA,OAFAsL,EAAY,KAELpB,CACR,EAMAe,EAAUF,EAAOE,QAAU,SAAU9c,GACpC,IAAI9J,EACHokB,EAAM,GACNtnB,EAAI,EACJuoB,EAAWvb,EAAKub,SAEjB,GAAMA,GAMC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAGjE,GAAiC,UAA5B,OAAOvb,EAAKmkB,YAChB,OAAOnkB,EAAKmkB,YAGZ,IAAMnkB,EAAOA,EAAKokB,WAAYpkB,EAAMA,EAAOA,EAAKiiB,YAC/C3H,GAAOwC,EAAS9c,CAAK,CAGxB,MAAO,GAAkB,IAAbub,GAA+B,IAAbA,EAC7B,OAAOvb,EAAKqkB,SACb,MAjBC,KAASnuB,EAAO8J,EAAKhN,CAAC,KAErBsnB,GAAOwC,EAAS5mB,CAAK,EAkBvB,OAAOokB,CACR,GAEAuC,EAAOD,EAAO0H,UAAY,CAGzBjD,YAAa,GAEbkD,aAAchD,EAEdxpB,MAAOinB,EAEP4C,WAAY,GAEZ3f,KAAM,GAENuiB,SAAU,CACTC,IAAK,CAAEvxB,IAAK,aAAcoV,MAAO,CAAA,CAAK,EACtCoc,IAAK,CAAExxB,IAAK,YAAa,EACzByxB,IAAK,CAAEzxB,IAAK,kBAAmBoV,MAAO,CAAA,CAAK,EAC3Csc,IAAK,CAAE1xB,IAAK,iBAAkB,CAC/B,EAEA2xB,UAAW,CACVzF,KAAQ,SAAUrnB,GAUjB,OATAA,EAAM,GAAKA,EAAM,GAAGG,QAAS6nB,EAAWC,CAAU,EAGlDjoB,EAAM,IAAOA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAM,IAAKG,QAAS6nB,EAAWC,CAAU,EAElE,OAAbjoB,EAAM,KACVA,EAAM,GAAK,IAAMA,EAAM,GAAK,KAGtBA,EAAMH,MAAO,EAAG,CAAE,CAC1B,EAEA0nB,MAAS,SAAUvnB,GA6BlB,OAlBAA,EAAM,GAAKA,EAAM,GAAGwE,YAAY,EAEA,QAA3BxE,EAAM,GAAGH,MAAO,EAAG,CAAE,GAEnBG,EAAM,IACX6kB,EAAOvpB,MAAO0E,EAAM,EAAG,EAKxBA,EAAM,GAAK,EAAGA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAAK,GAAmB,SAAbA,EAAM,IAA8B,QAAbA,EAAM,KACzFA,EAAM,GAAK,EAAKA,EAAM,GAAKA,EAAM,IAAqB,QAAbA,EAAM,KAGpCA,EAAM,IACjB6kB,EAAOvpB,MAAO0E,EAAM,EAAG,EAGjBA,CACR,EAEAsnB,OAAU,SAAUtnB,GACnB,IAAI+sB,EACHC,EAAW,CAAChtB,EAAM,IAAMA,EAAM,GAE/B,OAAKinB,EAAiB,MAAE5nB,KAAMW,EAAM,EAAG,EAC/B,MAIHA,EAAM,GACVA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAGxBgtB,GAAYjG,GAAQ1nB,KAAM2tB,CAAS,IAE7CD,GAAAA,EAAS9H,EAAU+H,EAAU,CAAA,CAAK,IAEzBA,EAASpsB,QAAS,IAAKosB,EAAShyB,OAAS+xB,CAAO,EAAIC,EAAShyB,UAGvEgF,EAAM,GAAKA,EAAM,GAAGH,MAAO,EAAGktB,CAAO,EACrC/sB,EAAM,GAAKgtB,EAASntB,MAAO,EAAGktB,CAAO,GAI/B/sB,EAAMH,MAAO,EAAG,CAAE,EAC1B,CACD,EAEAmH,OAAQ,CAEPogB,IAAO,SAAU6F,GAChB,IAAI3b,EAAW2b,EAAiB9sB,QAAS6nB,EAAWC,CAAU,EAAEzjB,YAAY,EAC5E,MAA4B,MAArByoB,EACN,WAAa,MAAO,CAAA,CAAM,EAC1B,SAAUhlB,GACT,OAAOA,EAAKqJ,UAAYrJ,EAAKqJ,SAAS9M,YAAY,IAAM8M,CACzD,CACF,EAEA6V,MAAS,SAAU7Z,GAClB,IAAI4f,EAAUrH,EAAYvY,EAAY,KAEtC,OAAO4f,IACLA,EAAU,IAAItoB,OAAQ,MAAQ2hB,EAAa,IAAMjZ,EAAY,IAAMiZ,EAAa,KAAM,IACvFV,EAAYvY,EAAW,SAAUrF,GAChC,OAAOilB,EAAQ7tB,KAAgC,UAA1B,OAAO4I,EAAKqF,WAA0BrF,EAAKqF,WAA0C,aAA7B,OAAOrF,EAAK/F,cAAgC+F,EAAK/F,aAAa,OAAO,GAAK,EAAG,CAC3J,CAAC,CACH,EAEAmlB,KAAQ,SAAUpmB,EAAMksB,EAAUC,GACjC,OAAO,SAAUnlB,GACZpD,EAASggB,EAAO5b,KAAMhB,EAAMhH,CAAK,EAErC,OAAe,MAAV4D,EACgB,OAAbsoB,EAEFA,CAAAA,IAINtoB,GAAU,GAEU,MAAbsoB,EAAmBtoB,IAAWuoB,EACvB,OAAbD,EAAoBtoB,IAAWuoB,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BvoB,EAAOjE,QAASwsB,CAAM,EACtC,OAAbD,EAAoBC,GAAmC,CAAC,EAA3BvoB,EAAOjE,QAASwsB,CAAM,EACtC,OAAbD,EAAoBC,GAASvoB,EAAOhF,MAAO,CAACutB,EAAMpyB,MAAO,IAAMoyB,EAClD,OAAbD,EAA0F,CAAC,GAArE,IAAMtoB,EAAO1E,QAASwmB,EAAa,GAAI,EAAI,KAAM/lB,QAASwsB,CAAM,EACzE,OAAbD,IAAoBtoB,IAAWuoB,GAASvoB,EAAOhF,MAAO,EAAGutB,EAAMpyB,OAAS,CAAE,IAAMoyB,EAAQ,KAE1F,CACD,EAEA7F,MAAS,SAAU/rB,EAAM6xB,EAAMjD,EAAU7Z,EAAOxV,GAC/C,IAAIuyB,EAAgC,QAAvB9xB,EAAKqE,MAAO,EAAG,CAAE,EAC7B0tB,EAA+B,SAArB/xB,EAAKqE,MAAO,CAAC,CAAE,EACzB2tB,EAAkB,YAATH,EAEV,OAAiB,IAAV9c,GAAwB,IAATxV,EAGrB,SAAUkN,GACT,MAAO,CAAC,CAACA,EAAKkG,UACf,EAEA,SAAUlG,EAAMT,EAASimB,GACxB,IAAIlwB,EAAOmwB,EAAaC,EAAYxvB,EAAMyvB,EAAW1e,EACpD/T,EAAMmyB,GAAWC,EAAU,cAAgB,kBAC3CjD,EAASriB,EAAKkG,WACdlN,EAAOusB,GAAUvlB,EAAKqJ,SAAS9M,YAAY,EAC3CqpB,EAAW,CAACJ,GAAO,CAACD,EACpBxD,EAAO,CAAA,EAER,GAAKM,EAAS,CAGb,GAAKgD,EAAS,CACb,KAAQnyB,GAAM,CAEb,IADAgD,EAAO8J,EACE9J,EAAOA,EAAMhD,IACrB,GAAKqyB,EACJrvB,EAAKmT,SAAS9M,YAAY,IAAMvD,EACd,IAAlB9C,EAAKqlB,SAEL,MAAO,CAAA,EAITtU,EAAQ/T,EAAe,SAATK,GAAmB,CAAC0T,GAAS,aAC5C,CACA,MAAO,CAAA,CACR,CAKA,GAHAA,EAAQ,CAAEqe,EAAUjD,EAAO+B,WAAa/B,EAAOwD,WAG1CP,GAAWM,GAkBf,IAHA7D,GADA4D,GADArwB,GAHAmwB,GAJAC,GADAxvB,EAAOmsB,GACYrH,KAAc9kB,EAAM8kB,GAAY,KAIzB9kB,EAAK4vB,YAC7BJ,EAAYxvB,EAAK4vB,UAAa,KAEXvyB,IAAU,IACZ,KAAQoqB,GAAWroB,EAAO,KACzBA,EAAO,GAC3BY,EAAOyvB,GAAatD,EAAO/B,WAAYqF,GAE9BzvB,EAAO,EAAEyvB,GAAazvB,GAAQA,EAAMhD,KAG3C6uB,EAAO4D,EAAY,EAAM1e,EAAMkX,IAAI,IAGpC,GAAuB,IAAlBjoB,EAAKqlB,UAAkB,EAAEwG,GAAQ7rB,IAAS8J,EAAO,CACrDylB,EAAalyB,GAAS,CAAEoqB,EAASgI,EAAW5D,GAC5C,KACD,CACD,MAqBA,GAAc,CAAA,KALbA,EAZI6D,EAWJD,GADArwB,GAHAmwB,GAJAC,GADAxvB,EAAO8J,GACYgb,KAAc9kB,EAAM8kB,GAAY,KAIzB9kB,EAAK4vB,YAC7BJ,EAAYxvB,EAAK4vB,UAAa,KAEXvyB,IAAU,IACZ,KAAQoqB,GAAWroB,EAAO,GAMzCysB,GAEJ,MAAS7rB,EAAO,EAAEyvB,GAAazvB,GAAQA,EAAMhD,KAC3C6uB,EAAO4D,EAAY,EAAM1e,EAAMkX,IAAI,OAE7BoH,EACNrvB,EAAKmT,SAAS9M,YAAY,IAAMvD,EACd,IAAlB9C,EAAKqlB,WACL,CAAA,EAAEwG,IAGG6D,KAKJH,GAJAC,EAAaxvB,EAAM8kB,KAAc9kB,EAAM8kB,GAAY,KAIzB9kB,EAAK4vB,YAC7BJ,EAAYxvB,EAAK4vB,UAAa,KAEnBvyB,GAAS,CAAEoqB,EAASoE,IAG7B7rB,IAAS8J,MAUlB,OADA+hB,GAAQjvB,KACQwV,GAAWyZ,EAAOzZ,GAAU,GAAqB,GAAhByZ,EAAOzZ,CACzD,CACD,CACF,EAEA+W,OAAU,SAAU0G,EAAQ5D,GAK3B,IAAI3iB,EACH/I,EAAKomB,EAAK4B,QAASsH,IAAYlJ,EAAKmJ,WAAYD,EAAOxpB,YAAY,IAClEqgB,EAAOvpB,MAAO,uBAAyB0yB,CAAO,EAKhD,OAAKtvB,EAAIukB,GACDvkB,EAAI0rB,CAAS,EAIJ,EAAZ1rB,EAAG1D,QACPyM,EAAO,CAAEumB,EAAQA,EAAQ,GAAI5D,GACtBtF,EAAKmJ,WAAWxM,eAAgBuM,EAAOxpB,YAAY,CAAE,EAC3DglB,EAAa,SAAUf,EAAMpE,GAI5B,IAHA,IAAI1H,EACHxQ,EAAUzN,EAAI+pB,EAAM2B,CAAS,EAC7BnvB,EAAIkR,EAAQnR,OACLC,CAAC,IAERwtB,EADA9L,EAAM/b,EAAS6nB,EAAMtc,EAAQlR,EAAG,GAClB,EAAGopB,EAAS1H,GAAQxQ,EAAQlR,GAE5C,CAAC,EACD,SAAUgN,GACT,OAAOvJ,EAAIuJ,EAAM,EAAGR,CAAK,CAC1B,GAGK/I,CACR,CACD,EAEAgoB,QAAS,CAERwH,IAAO1E,EAAa,SAAUzhB,GAI7B,IAAIsJ,EAAQ,GACX2S,EAAU,GACVmK,EAAUjJ,EAASnd,EAAS5H,QAASwhB,EAAO,IAAK,CAAE,EAEpD,OAAOwM,EAASlL,GACfuG,EAAa,SAAUf,EAAMpE,EAAS7c,EAASimB,GAM9C,IALA,IAAIxlB,EACHmmB,EAAYD,EAAS1F,EAAM,KAAMgF,EAAK,EAAG,EACzCxyB,EAAIwtB,EAAKztB,OAGFC,CAAC,KACFgN,EAAOmmB,EAAUnzB,MACtBwtB,EAAKxtB,GAAK,EAAEopB,EAAQppB,GAAKgN,GAG5B,CAAC,EACD,SAAUA,EAAMT,EAASimB,GAKxB,OAJApc,EAAM,GAAKpJ,EACXkmB,EAAS9c,EAAO,KAAMoc,EAAKzJ,CAAQ,EAEnC3S,EAAM,GAAK,KACJ,CAAC2S,EAAQoC,IAAI,CACrB,CACF,CAAC,EAED3Y,IAAO+b,EAAa,SAAUzhB,GAC7B,OAAO,SAAUE,GAChB,OAAyC,EAAlC4c,EAAQ9c,EAAUE,CAAK,EAAEjN,MACjC,CACD,CAAC,EAEDmS,SAAYqc,EAAa,SAAU1f,GAElC,OADAA,EAAOA,EAAK3J,QAAS6nB,EAAWC,CAAU,EACnC,SAAUhgB,GAChB,MAAmF,CAAC,GAA3EA,EAAKmkB,aAAenkB,EAAKomB,WAAatJ,EAAS9c,CAAK,GAAIrH,QAASkJ,CAAK,CAChF,CACD,CAAC,EASDoK,KAAQsV,EAAc,SAAUtV,GAM/B,OAJM8S,GAAY3nB,KAAK6U,GAAQ,EAAE,GAChC2Q,EAAOvpB,MAAO,qBAAuB4Y,CAAK,EAE3CA,EAAOA,EAAK/T,QAAS6nB,EAAWC,CAAU,EAAEzjB,YAAY,EACjD,SAAUyD,GAChB,IAAIqmB,EACJ,GACC,GAAMA,EAAW9I,EAChBvd,EAAKiM,KACLjM,EAAK/F,aAAa,UAAU,GAAK+F,EAAK/F,aAAa,MAAM,EAGzD,OADAosB,EAAWA,EAAS9pB,YAAY,KACZ0P,GAA2C,IAAnCoa,EAAS1tB,QAASsT,EAAO,GAAI,CAC1D,QACUjM,EAAOA,EAAKkG,aAAiC,IAAlBlG,EAAKub,UAC3C,MAAO,CAAA,CACR,CACD,CAAC,EAGD9a,OAAU,SAAUT,GACnB,IAAI/E,EAAO4E,EAAO7H,UAAY6H,EAAO7H,SAASiD,KAC9C,OAAOA,GAAQA,EAAKrD,MAAO,CAAE,IAAMoI,EAAKxG,EACzC,EAEA8sB,KAAQ,SAAUtmB,GACjB,OAAOA,IAASsd,CACjB,EAEAiJ,MAAS,SAAUvmB,GAClB,OAAOA,IAASlO,EAAS00B,gBAAkB,CAAC10B,EAAS20B,UAAY30B,EAAS20B,SAAS,IAAM,CAAC,EAAEzmB,EAAKzM,MAAQyM,EAAK1G,MAAQ,CAAC0G,EAAK0mB,SAC7H,EAGAC,QAAW,SAAU3mB,GACpB,MAAyB,CAAA,IAAlBA,EAAK4mB,QACb,EAEAA,SAAY,SAAU5mB,GACrB,MAAyB,CAAA,IAAlBA,EAAK4mB,QACb,EAEAC,QAAW,SAAU7mB,GAGpB,IAAIqJ,EAAWrJ,EAAKqJ,SAAS9M,YAAY,EACzC,MAAqB,UAAb8M,GAAwB,CAAC,CAACrJ,EAAK6mB,SAA0B,WAAbxd,GAAyB,CAAC,CAACrJ,EAAK8mB,QACrF,EAEAA,SAAY,SAAU9mB,GAOrB,OAJKA,EAAKkG,YACTlG,EAAKkG,WAAW6gB,cAGQ,CAAA,IAAlB/mB,EAAK8mB,QACb,EAGAE,MAAS,SAAUhnB,GAKlB,IAAMA,EAAOA,EAAKokB,WAAYpkB,EAAMA,EAAOA,EAAKiiB,YAC/C,GAAKjiB,EAAKub,SAAW,EACpB,MAAO,CAAA,EAGT,MAAO,CAAA,CACR,EAEA8G,OAAU,SAAUriB,GACnB,MAAO,CAAC6c,EAAK4B,QAAe,MAAGze,CAAK,CACrC,EAGAiY,OAAU,SAAUjY,GACnB,OAAO0f,GAAQtoB,KAAM4I,EAAKqJ,QAAS,CACpC,EAEAD,MAAS,SAAUpJ,GAClB,OAAOyf,GAAQroB,KAAM4I,EAAKqJ,QAAS,CACpC,EAEA4d,OAAU,SAAUjnB,GACnB,IAAIhH,EAAOgH,EAAKqJ,SAAS9M,YAAY,EACrC,MAAgB,UAATvD,GAAkC,WAAdgH,EAAKzM,MAA8B,WAATyF,CACtD,EAEA6I,KAAQ,SAAU7B,GAEjB,MAAuC,UAAhCA,EAAKqJ,SAAS9M,YAAY,GAClB,SAAdyD,EAAKzM,OAImC,OAArCyN,EAAOhB,EAAK/F,aAAa,MAAM,IAAqC,SAAvB+G,EAAKzE,YAAY,EACnE,EAGA+L,MAAS4Z,EAAuB,WAC/B,MAAO,CAAE,EACV,CAAC,EAEDpvB,KAAQovB,EAAuB,SAAUE,EAAcrvB,GACtD,MAAO,CAAEA,EAAS,EACnB,CAAC,EAED2nB,GAAMwH,EAAuB,SAAUE,EAAcrvB,EAAQovB,GAC5D,MAAO,CAAEA,EAAW,EAAIA,EAAWpvB,EAASovB,EAC7C,CAAC,EAED3Y,KAAQ0Y,EAAuB,SAAUE,EAAcrvB,GAEtD,IADA,IAAIC,EAAI,EACAA,EAAID,EAAQC,GAAK,EACxBovB,EAAazqB,KAAM3E,CAAE,EAEtB,OAAOovB,CACR,CAAC,EAED8E,IAAOhF,EAAuB,SAAUE,EAAcrvB,GAErD,IADA,IAAIC,EAAI,EACAA,EAAID,EAAQC,GAAK,EACxBovB,EAAazqB,KAAM3E,CAAE,EAEtB,OAAOovB,CACR,CAAC,EAED+E,GAAMjF,EAAuB,SAAUE,EAAcrvB,EAAQovB,GAE5D,IADA,IAAInvB,EAAImvB,EAAW,EAAIA,EAAWpvB,EAASovB,EAC5B,GAAP,EAAEnvB,GACTovB,EAAazqB,KAAM3E,CAAE,EAEtB,OAAOovB,CACR,CAAC,EAEDgF,GAAMlF,EAAuB,SAAUE,EAAcrvB,EAAQovB,GAE5D,IADA,IAAInvB,EAAImvB,EAAW,EAAIA,EAAWpvB,EAASovB,EACnC,EAAEnvB,EAAID,GACbqvB,EAAazqB,KAAM3E,CAAE,EAEtB,OAAOovB,CACR,CAAC,CACF,CACD,GAEK3D,QAAa,IAAI5B,EAAK4B,QAAY,GAG5B,CAAE4I,MAAO,CAAA,EAAMC,SAAU,CAAA,EAAMC,KAAM,CAAA,EAAMC,SAAU,CAAA,EAAMC,MAAO,CAAA,CAAK,EACjF5K,EAAK4B,QAASzrB,GA3jCf,SAA4BO,GAC3B,OAAO,SAAUyM,GAEhB,MAAgB,UADLA,EAAKqJ,SAAS9M,YAAY,GACVyD,EAAKzM,OAASA,CAC1C,CACD,EAsjCwCP,CAAE,EAE1C,IAAMA,IAAK,CAAE00B,OAAQ,CAAA,EAAMC,MAAO,CAAA,CAAK,EACtC9K,EAAK4B,QAASzrB,GAnjCf,SAA6BO,GAC5B,OAAO,SAAUyM,GAChB,IAAIhH,EAAOgH,EAAKqJ,SAAS9M,YAAY,EACrC,OAAiB,UAATvD,GAA6B,WAATA,IAAsBgH,EAAKzM,OAASA,CACjE,CACD,EA8iCyCP,CAAE,EAI3C,SAASgzB,MAuET,SAAS9E,EAAY0G,GAIpB,IAHA,IAAI50B,EAAI,EACP2K,EAAMiqB,EAAO70B,OACb+M,EAAW,GACJ9M,EAAI2K,EAAK3K,CAAC,GACjB8M,GAAY8nB,EAAO50B,GAAG+I,MAEvB,OAAO+D,CACR,CAEA,SAAS+nB,GAAe3B,EAAS4B,EAAY7vB,GAC5C,IAAI/E,EAAM40B,EAAW50B,IACpB60B,EAAmB9vB,GAAgB,eAAR/E,EAC3B80B,EAAWvjB,CAAI,GAEhB,OAAOqjB,EAAWxf,MAEjB,SAAUtI,EAAMT,EAASimB,GACxB,KAASxlB,EAAOA,EAAM9M,IACrB,GAAuB,IAAlB8M,EAAKub,UAAkBwM,EAC3B,OAAO7B,EAASlmB,EAAMT,EAASimB,CAAI,CAGtC,EAGA,SAAUxlB,EAAMT,EAASimB,GACxB,IAAIyC,EAAuBvC,EAC1BwC,EAAW,CAAEvK,EAASqK,GAGvB,GAAKxC,GACJ,KAASxlB,EAAOA,EAAM9M,IACrB,IAAuB,IAAlB8M,EAAKub,UAAkBwM,IACtB7B,EAASlmB,EAAMT,EAASimB,CAAI,EAChC,MAAO,CAAA,CAGV,MAEA,KAASxlB,EAAOA,EAAM9M,IACrB,GAAuB,IAAlB8M,EAAKub,UAAkBwM,EAAmB,CAO9C,IAAME,GAFNxC,GAJAC,EAAa1lB,EAAMgb,KAAchb,EAAMgb,GAAY,KAIzBhb,EAAK8lB,YAAeJ,EAAY1lB,EAAK8lB,UAAa,KAE9C5yB,KAC7B+0B,EAAU,KAAQtK,GAAWsK,EAAU,KAAQD,EAG/C,OAAQE,EAAU,GAAMD,EAAU,GAMlC,IAHAxC,EAAavyB,GAAQg1B,GAGL,GAAMhC,EAASlmB,EAAMT,EAASimB,CAAI,EACjD,MAAO,CAAA,CAGV,CAGH,CACF,CAEA,SAAS2C,GAAgBC,GACxB,OAAyB,EAAlBA,EAASr1B,OACf,SAAUiN,EAAMT,EAASimB,GAExB,IADA,IAAIxyB,EAAIo1B,EAASr1B,OACTC,CAAC,IACR,GAAK,CAACo1B,EAASp1B,GAAIgN,EAAMT,EAASimB,CAAI,EACrC,MAAO,CAAA,EAGT,MAAO,CAAA,CACR,EACA4C,EAAS,EACX,CAWA,SAASC,GAAUlC,EAAW1L,EAAK1b,EAAQQ,EAASimB,GAOnD,IANA,IAAIxlB,EACHsoB,EAAe,GACft1B,EAAI,EACJ2K,EAAMwoB,EAAUpzB,OAChBw1B,EAAgB,MAAP9N,EAEFznB,EAAI2K,EAAK3K,CAAC,GACZ,EAACgN,EAAOmmB,EAAUnzB,KAChB+L,GAAUA,CAAAA,EAAQiB,EAAMT,EAASimB,CAAI,IAC1C8C,EAAa3wB,KAAMqI,CAAK,EACnBuoB,GACJ9N,EAAI9iB,KAAM3E,CAAE,GAMhB,OAAOs1B,CACR,CAEA,SAASE,GAAY3D,EAAW/kB,EAAUomB,EAASuC,EAAYC,EAAYC,GAO1E,OANKF,GAAc,CAACA,EAAYzN,KAC/ByN,EAAaD,GAAYC,CAAW,GAEhCC,GAAc,CAACA,EAAY1N,KAC/B0N,EAAaF,GAAYE,EAAYC,CAAa,GAE5CpH,EAAa,SAAUf,EAAMzE,EAASxc,EAASimB,GACrD,IAAIoD,EAAM51B,EAAGgN,EACZ6oB,EAAS,GACTC,EAAU,GACVC,EAAchN,EAAQhpB,OAGtBsnB,EAAQmG,GA5CX,SAA2B1gB,EAAUkpB,EAAUjN,GAG9C,IAFA,IAAI/oB,EAAI,EACP2K,EAAMqrB,EAASj2B,OACRC,EAAI2K,EAAK3K,CAAC,GACjB4pB,EAAQ9c,EAAUkpB,EAASh2B,GAAI+oB,CAAQ,EAExC,OAAOA,CACR,EAqCqCjc,GAAY,IAAKP,EAAQgc,SAAW,CAAEhc,GAAYA,EAAS,EAAG,EAGhG0pB,EAAYpE,CAAAA,GAAerE,CAAAA,GAAS1gB,EAEnCua,EADAgO,GAAUhO,EAAOwO,EAAQhE,EAAWtlB,EAASimB,CAAI,EAGlD0D,EAAahD,EAEZwC,IAAgBlI,EAAOqE,EAAYkE,GAAeN,GAGjD,GAGA1M,EACDkN,EAQF,GALK/C,GACJA,EAAS+C,EAAWC,EAAY3pB,EAASimB,CAAI,EAIzCiD,EAMJ,IALAG,EAAOP,GAAUa,EAAYJ,CAAQ,EACrCL,EAAYG,EAAM,GAAIrpB,EAASimB,CAAI,EAGnCxyB,EAAI41B,EAAK71B,OACDC,CAAC,KACFgN,EAAO4oB,EAAK51B,MACjBk2B,EAAYJ,EAAQ91B,IAAO,EAAEi2B,EAAWH,EAAQ91B,IAAOgN,IAK1D,GAAKwgB,GACJ,GAAKkI,GAAc7D,EAAY,CAC9B,GAAK6D,EAAa,CAIjB,IAFAE,EAAO,GACP51B,EAAIk2B,EAAWn2B,OACPC,CAAC,KACFgN,EAAOkpB,EAAWl2B,KAEvB41B,EAAKjxB,KAAOsxB,EAAUj2B,GAAKgN,CAAM,EAGnC0oB,EAAY,KAAOQ,EAAa,GAAKN,EAAMpD,CAAI,CAChD,CAIA,IADAxyB,EAAIk2B,EAAWn2B,OACPC,CAAC,KACFgN,EAAOkpB,EAAWl2B,KACmC,CAAC,GAA1D41B,EAAOF,EAAa/vB,EAAS6nB,EAAMxgB,CAAK,EAAI6oB,EAAO71B,MAEpDwtB,EAAKoI,GAAQ,EAAE7M,EAAQ6M,GAAQ5oB,GAGlC,CAAA,MAIAkpB,EAAab,GACZa,IAAenN,EACdmN,EAAWryB,OAAQkyB,EAAaG,EAAWn2B,MAAO,EAClDm2B,CACF,EACKR,EACJA,EAAY,KAAM3M,EAASmN,EAAY1D,CAAI,EAE3C7tB,EAAKE,MAAOkkB,EAASmN,CAAW,CAGnC,CAAC,CACF,CAwVA,OAzmBAlD,GAAW3wB,UAAYwnB,EAAKsM,QAAUtM,EAAK4B,QAC3C5B,EAAKmJ,WAAa,IAAIA,GAEtBhJ,EAAWJ,EAAOI,SAAW,SAAUld,EAAUspB,GAChD,IAAIllB,EAASnM,EAAO6vB,EAAQr0B,EAC3B81B,EAAO7hB,EAAQ8hB,EACfC,EAASzL,EAAYhe,EAAW,KAEjC,GAAKypB,EACJ,OAAOH,EAAY,EAAIG,EAAO3xB,MAAO,CAAE,EAOxC,IAJAyxB,EAAQvpB,EACR0H,EAAS,GACT8hB,EAAazM,EAAKgI,UAEVwE,GAAQ,CAyBf,IAAM91B,KAtBA2Q,GAAW,EAACnM,EAAQ4mB,EAAOoC,KAAMsI,CAAM,KACvCtxB,IAEJsxB,EAAQA,EAAMzxB,MAAOG,EAAM,GAAGhF,MAAO,GAAKs2B,GAE3C7hB,EAAO7P,KAAOiwB,EAAS,EAAI,GAG5B1jB,EAAU,CAAA,GAGJnM,EAAQ6mB,EAAamC,KAAMsI,CAAM,KACtCnlB,EAAUnM,EAAMupB,MAAM,EACtBsG,EAAOjwB,KAAK,CACXoE,MAAOmI,EAEP3Q,KAAMwE,EAAM,GAAGG,QAASwhB,EAAO,GAAI,CACpC,CAAC,EACD2P,EAAQA,EAAMzxB,MAAOsM,EAAQnR,MAAO,GAIvB8pB,EAAK9d,OACb,EAAChH,EAAQinB,EAAWzrB,GAAOwtB,KAAMsI,CAAM,IAAQC,EAAY/1B,IAC/D,EAACwE,EAAQuxB,EAAY/1B,GAAQwE,CAAM,KACnCmM,EAAUnM,EAAMupB,MAAM,EACtBsG,EAAOjwB,KAAK,CACXoE,MAAOmI,EACP3Q,KAAMA,EACN6oB,QAASrkB,CACV,CAAC,EACDsxB,EAAQA,EAAMzxB,MAAOsM,EAAQnR,MAAO,GAItC,GAAK,CAACmR,EACL,KAEF,CAKA,OAAOklB,EACNC,EAAMt2B,OACNs2B,EACCzM,EAAOvpB,MAAOyM,CAAS,EAEvBge,EAAYhe,EAAU0H,CAAO,EAAE5P,MAAO,CAAE,CAC3C,EAwXAqlB,EAAUL,EAAOK,QAAU,SAAUnd,EAAU/H,GAC9C,IAAI/E,EAhH8Bw2B,EAAiBC,EAC/CC,EACHC,EACAC,EA8GAH,EAAc,GACdD,EAAkB,GAClBD,EAASxL,EAAeje,EAAW,KAEpC,GAAK,CAACypB,EAAS,CAMd,IADAv2B,GAHM+E,EAAAA,GACGilB,EAAUld,CAAS,GAElB/M,OACFC,CAAC,MACRu2B,EAtLH,SAASM,EAAmBjC,GAwB3B,IAvBA,IAAIkC,EAAc5D,EAASrU,EAC1BlU,EAAMiqB,EAAO70B,OACbg3B,EAAkBlN,EAAK2H,SAAUoD,EAAO,GAAGr0B,MAC3Cy2B,EAAmBD,GAAmBlN,EAAK2H,SAAS,KACpDxxB,EAAI+2B,EAAkB,EAAI,EAG1BE,EAAepC,GAAe,SAAU7nB,GACvC,OAAOA,IAAS8pB,CACjB,EAAGE,EAAkB,CAAA,CAAK,EAC1BE,EAAkBrC,GAAe,SAAU7nB,GAC1C,MAAuC,CAAC,EAAjCrH,EAASmxB,EAAc9pB,CAAK,CACpC,EAAGgqB,EAAkB,CAAA,CAAK,EAC1B5B,EAAW,CAAE,SAAUpoB,EAAMT,EAASimB,GAOrC,OANIlL,EAAQ,CAACyP,IAAqBvE,GAAOjmB,IAAY2d,MACnD4M,EAAevqB,GAASgc,SACxB0O,EACAC,GADclqB,EAAMT,EAASimB,CAAI,EAGnCsE,EAAe,KACRxP,CACR,GAEOtnB,EAAI2K,EAAK3K,CAAC,GACjB,GAAMkzB,EAAUrJ,EAAK2H,SAAUoD,EAAO50B,GAAGO,MACxC60B,EAAW,CAAEP,GAAcM,GAAgBC,CAAS,EAAGlC,CAAO,OACxD,CAIN,IAHAA,EAAUrJ,EAAK9d,OAAQ6oB,EAAO50B,GAAGO,MAAOsE,MAAO,KAAM+vB,EAAO50B,GAAGopB,OAAQ,GAGzDpB,GAAY,CAGzB,IADAnJ,EAAI,EAAE7e,EACE6e,EAAIlU,GACNkf,CAAAA,EAAK2H,SAAUoD,EAAO/V,GAAGte,MADdse,CAAC,IAKlB,OAAO2W,GACF,EAAJx1B,GAASm1B,GAAgBC,CAAS,EAC9B,EAAJp1B,GAASkuB,EAER0G,EAAOhwB,MAAO,EAAG5E,EAAI,CAAE,EAAE8lB,OAAO,CAAE/c,MAAgC,MAAzB6rB,EAAQ50B,EAAI,GAAIO,KAAe,IAAM,EAAG,CAAC,CACnF,EAAE2E,QAASwhB,EAAO,IAAK,EACvBwM,EACAlzB,EAAI6e,GAAKgY,EAAmBjC,EAAOhwB,MAAO5E,EAAG6e,CAAE,CAAE,EACjDA,EAAIlU,GAAOksB,EAAoBjC,EAASA,EAAOhwB,MAAOia,CAAE,CAAG,EAC3DA,EAAIlU,GAAOujB,EAAY0G,CAAO,CAC/B,CACD,CACAQ,EAASzwB,KAAMuuB,CAAQ,CACxB,CAGD,OAAOiC,GAAgBC,CAAS,CACjC,EA8H+BrwB,EAAM/E,EAAG,GACxBgoB,GACZyO,EAEAD,GAFY7xB,KAAM4xB,CAAO,GAO3BA,EAASxL,EAAeje,GArIS0pB,EAqI2BA,EApIzDE,EAA6B,GADkBD,EAqI2BA,GApItD12B,OACvB42B,EAAqC,EAAzBH,EAAgBz2B,OAC5B62B,EAAe,SAAUpJ,EAAMjhB,EAASimB,EAAKzJ,EAASoO,GACrD,IAAInqB,EAAM6R,EAAGqU,EACZkE,EAAe,EACfp3B,EAAI,IACJmzB,EAAY3F,GAAQ,GACpB6J,EAAa,GACbC,EAAgBpN,EAEhB7C,EAAQmG,GAAQmJ,GAAa9M,EAAK5a,KAAU,IAAG,IAAKkoB,CAAU,EAE9DI,EAAiB5M,GAA4B,MAAjB2M,EAAwB,EAAIzpB,KAAKoa,OAAO,GAAK,GACzEtd,EAAM0c,EAAMtnB,OASb,IAPKo3B,IACJjN,EAAmB3d,IAAYzN,GAAYyN,GAAW4qB,GAM/Cn3B,IAAM2K,GAA4B,OAApBqC,EAAOqa,EAAMrnB,IAAaA,CAAC,GAAK,CACrD,GAAK22B,GAAa3pB,EAAO,CAMxB,IALA6R,EAAI,EACEtS,GAAWS,EAAK8gB,gBAAkBhvB,IACvCurB,EAAard,CAAK,EAClBwlB,EAAM,CAACjI,GAEC2I,EAAUsD,EAAgB3X,CAAC,KACnC,GAAKqU,EAASlmB,EAAMT,GAAWzN,EAAU0zB,CAAG,EAAI,CAC/CzJ,EAAQpkB,KAAMqI,CAAK,EACnB,KACD,CAEImqB,IACJxM,EAAU4M,EAEZ,CAGKb,KAEE1pB,EAAO,CAACkmB,GAAWlmB,IACxBoqB,CAAY,GAIR5J,IACJ2F,EAAUxuB,KAAMqI,CAAK,CAGxB,CAaA,GATAoqB,GAAgBp3B,EASX02B,GAAS12B,IAAMo3B,EAAe,CAElC,IADAvY,EAAI,EACKqU,EAAUuD,EAAY5X,CAAC,KAC/BqU,EAASC,EAAWkE,EAAY9qB,EAASimB,CAAI,EAG9C,GAAKhF,EAAO,CAEX,GAAoB,EAAf4J,EACJ,KAAQp3B,CAAC,IACDmzB,EAAUnzB,IAAMq3B,EAAWr3B,KACjCq3B,EAAWr3B,GAAKmrB,EAAI1gB,KAAMse,CAAQ,GAMrCsO,EAAahC,GAAUgC,CAAW,CACnC,CAGA1yB,EAAKE,MAAOkkB,EAASsO,CAAW,EAG3BF,GAAa,CAAC3J,GAA4B,EAApB6J,EAAWt3B,QACG,EAAtCq3B,EAAeX,EAAY12B,QAE7B6pB,EAAOmH,WAAYhI,CAAQ,CAE7B,CAQA,OALKoO,IACJxM,EAAU4M,EACVrN,EAAmBoN,GAGbnE,CACR,EAEMuD,EACNnI,EAAcqI,CAAa,EAC3BA,EAyB2F,GAGpF9pB,SAAWA,CACnB,CACA,OAAOypB,CACR,EAWAhlB,EAASqY,EAAOrY,OAAS,SAAUzE,EAAUP,EAASwc,EAASyE,GAC9D,IAAIxtB,EAAG40B,EAAQ4C,EAAOj3B,EAAM0O,EAC3BwoB,EAA+B,YAApB,OAAO3qB,GAA2BA,EAC7C/H,EAAQ,CAACyoB,GAAQxD,EAAWld,EAAW2qB,EAAS3qB,UAAYA,CAAU,EAMvE,GAJAic,EAAUA,GAAW,GAIC,IAAjBhkB,EAAMhF,OAAe,CAIzB,GAAqB,GADrB60B,EAAS7vB,EAAM,GAAKA,EAAM,GAAGH,MAAO,CAAE,GAC1B7E,QAA2C,QAA5By3B,EAAQ5C,EAAO,IAAIr0B,MAC5CkmB,EAAQ+I,SAAgC,IAArBjjB,EAAQgc,UAAkBgC,GAC7CV,EAAK2H,SAAUoD,EAAO,GAAGr0B,MAAS,CAGnC,GAAMgM,EADNA,GAAYsd,EAAK5a,KAAS,GAAGuoB,EAAMpO,QAAQ,GAAGlkB,QAAQ6nB,EAAWC,CAAS,EAAGzgB,CAAQ,GAAK,IAAK,IAE9F,OAAOwc,EAGI0O,IACXlrB,EAAUA,EAAQ2G,YAGnBpG,EAAWA,EAASlI,MAAOgwB,EAAOtG,MAAM,EAAEvlB,MAAMhJ,MAAO,CACxD,CAIA,IADAC,EAAIgsB,EAAwB,aAAE5nB,KAAM0I,CAAS,EAAI,EAAI8nB,EAAO70B,OACpDC,CAAC,KACRw3B,EAAQ5C,EAAO50B,GAGV6pB,CAAAA,EAAK2H,SAAWjxB,EAAOi3B,EAAMj3B,QAGlC,IAAM0O,EAAO4a,EAAK5a,KAAM1O,MAEjBitB,EAAOve,EACZuoB,EAAMpO,QAAQ,GAAGlkB,QAAS6nB,EAAWC,CAAU,EAC/CH,GAASzoB,KAAMwwB,EAAO,GAAGr0B,IAAK,GAAK4tB,GAAa5hB,EAAQ2G,UAAW,GAAK3G,CACzE,GAAK,CAKJ,GAFAqoB,EAAO/wB,OAAQ7D,EAAG,CAAE,EACpB8M,EAAW0gB,EAAKztB,QAAUmuB,EAAY0G,CAAO,EAM7C,MAHC,OADAjwB,EAAKE,MAAOkkB,EAASyE,CAAK,EACnBzE,CAIT,CAGH,CAWA,OAPE0O,GAAYxN,EAASnd,EAAU/H,CAAM,GACtCyoB,EACAjhB,EACA,CAACge,EACDxB,EACA,CAACxc,GAAWsgB,GAASzoB,KAAM0I,CAAS,GAAKqhB,GAAa5hB,EAAQ2G,UAAW,GAAK3G,CAC/E,EACOwc,CACR,EAKAtC,EAAQyK,WAAalJ,EAAQ3f,MAAM,EAAE,EAAEwC,KAAMmgB,CAAU,EAAEja,KAAK,EAAE,IAAMiX,EAItEvB,EAAQwK,iBAAmB,CAAC,CAAC7G,EAG7BC,EAAY,EAIZ5D,EAAQ8J,aAAe/B,EAAO,SAAUkJ,GAEvC,OAAuE,EAAhEA,EAAKvH,wBAAyBrxB,EAASqG,cAAc,KAAK,CAAE,CACpE,CAAC,EAKKqpB,EAAO,SAAUrO,GAEtB,OADAA,EAAIpR,UAAY,mBAC+B,MAAxCoR,EAAIiR,WAAWnqB,aAAa,MAAM,CAC1C,CAAC,GACAwnB,GAAW,yBAA0B,SAAUzhB,EAAMhH,EAAM+jB,GAC1D,GAAK,CAACA,EACL,OAAO/c,EAAK/F,aAAcjB,EAA6B,SAAvBA,EAAKuD,YAAY,EAAe,EAAI,CAAE,CAExE,CAAC,EAKIkd,EAAQ+E,YAAegD,EAAO,SAAUrO,GAG7C,OAFAA,EAAIpR,UAAY,WAChBoR,EAAIiR,WAAWlqB,aAAc,QAAS,EAAG,EACS,KAA3CiZ,EAAIiR,WAAWnqB,aAAc,OAAQ,CAC7C,CAAC,GACAwnB,GAAW,QAAS,SAAUzhB,EAAMhH,EAAM+jB,GACzC,GAAK,CAACA,GAAyC,UAAhC/c,EAAKqJ,SAAS9M,YAAY,EACxC,OAAOyD,EAAK2qB,YAEd,CAAC,EAKInJ,EAAO,SAAUrO,GACtB,OAAuC,MAAhCA,EAAIlZ,aAAa,UAAU,CACnC,CAAC,GACAwnB,GAAWpD,EAAU,SAAUre,EAAMhH,EAAM+jB,GAE1C,GAAK,CAACA,EACL,MAAwB,CAAA,IAAjB/c,EAAMhH,GAAkBA,EAAKuD,YAAY,GAC7C+D,EAAMN,EAAK2iB,iBAAkB3pB,CAAK,IAAMsH,EAAIwjB,UAC7CxjB,EAAIvE,MACL,IAEH,CAAC,EAGK6gB,CAEN,EAAG/c,CAAO,EAcP3M,GAVJsD,EAAOyL,KAAO2a,EACdpmB,EAAOotB,KAAOhH,EAAO0H,UACrB9tB,EAAOotB,KAAM,KAAQptB,EAAOotB,KAAKnF,QACjCjoB,EAAOutB,WAAavtB,EAAOo0B,OAAShO,EAAOmH,WAC3CvtB,EAAOqL,KAAO+a,EAAOE,QACrBtmB,EAAOq0B,SAAWjO,EAAOG,MACzBvmB,EAAO0O,SAAW0X,EAAO1X,SAIf,SAAUlF,EAAM9M,EAAK43B,GAI9B,IAHA,IAAI5mB,EAAU,GACb6mB,EAAWD,IAAUnlB,WAEZ3F,EAAOA,EAAM9M,KAA6B,IAAlB8M,EAAKub,UACtC,GAAuB,IAAlBvb,EAAKub,SAAiB,CAC1B,GAAKwP,GAAYv0B,EAAQwJ,CAAK,EAAEgrB,GAAIF,CAAM,EACzC,MAED5mB,EAAQvM,KAAMqI,CAAK,CACpB,CAED,OAAOkE,CACR,GAGI+mB,EAAW,SAAUC,EAAGlrB,GAG3B,IAFA,IAAIkE,EAAU,GAENgnB,EAAGA,EAAIA,EAAEjJ,YACI,IAAfiJ,EAAE3P,UAAkB2P,IAAMlrB,GAC9BkE,EAAQvM,KAAMuzB,CAAE,EAIlB,OAAOhnB,CACR,EAGIinB,EAAgB30B,EAAOotB,KAAK7rB,MAAMynB,aAElC4L,EAAa,gCAIbC,EAAY,iBAGhB,SAASC,EAAQzH,EAAU0H,EAAWtF,GACrC,GAAKzvB,EAAOskB,WAAYyQ,CAAU,EACjC,OAAO/0B,EAAO0lB,KAAM2H,EAAU,SAAU7jB,EAAMhN,GAE7C,MAAO,CAAC,CAACu4B,EAAU9tB,KAAMuC,EAAMhN,EAAGgN,CAAK,IAAMimB,CAC9C,CAAE,EAIH,GAAKsF,EAAUhQ,SACd,OAAO/kB,EAAO0lB,KAAM2H,EAAU,SAAU7jB,GACvC,OAASA,IAASurB,IAAgBtF,CACnC,CAAE,EAIH,GAA0B,UAArB,OAAOsF,EAAyB,CACpC,GAAKF,EAAUj0B,KAAMm0B,CAAU,EAC9B,OAAO/0B,EAAOuI,OAAQwsB,EAAW1H,EAAUoC,CAAI,EAGhDsF,EAAY/0B,EAAOuI,OAAQwsB,EAAW1H,CAAS,CAChD,CAEA,OAAOrtB,EAAO0lB,KAAM2H,EAAU,SAAU7jB,GACvC,MAA6C,CAAC,EAArCxJ,EAAOwlB,QAAShc,EAAMurB,CAAU,IAAatF,CACvD,CAAE,CACH,CAEAzvB,EAAOuI,OAAS,SAAU6kB,EAAMvJ,EAAO4L,GACtC,IAAIjmB,EAAOqa,EAAO,GAMlB,OAJK4L,IACJrC,EAAO,QAAUA,EAAO,KAGD,IAAjBvJ,EAAMtnB,QAAkC,IAAlBiN,EAAKub,SACjC/kB,EAAOyL,KAAK2gB,gBAAiB5iB,EAAM4jB,CAAK,EAAI,CAAE5jB,GAAS,GACvDxJ,EAAOyL,KAAKma,QAASwH,EAAMptB,EAAO0lB,KAAM7B,EAAO,SAAUra,GACxD,OAAyB,IAAlBA,EAAKub,QACb,CAAE,CAAE,CACN,EAEA/kB,EAAOC,GAAGsE,OAAQ,CACjBkH,KAAM,SAAUnC,GACf,IAAI9M,EACHsnB,EAAM,GACNkR,EAAOn5B,KACPsL,EAAM6tB,EAAKz4B,OAEZ,GAAyB,UAApB,OAAO+M,EACX,OAAOzN,KAAK+nB,UAAW5jB,EAAQsJ,CAAS,EAAEf,OAAQ,WACjD,IAAM/L,EAAI,EAAGA,EAAI2K,EAAK3K,CAAC,GACtB,GAAKwD,EAAO0O,SAAUsmB,EAAMx4B,GAAKX,IAAK,EACrC,MAAO,CAAA,CAGV,CAAE,CAAE,EAGL,IAAMW,EAAI,EAAGA,EAAI2K,EAAK3K,CAAC,GACtBwD,EAAOyL,KAAMnC,EAAU0rB,EAAMx4B,GAAKsnB,CAAI,EAMvC,OAFAA,EAAMjoB,KAAK+nB,UAAiB,EAANzc,EAAUnH,EAAOo0B,OAAQtQ,CAAI,EAAIA,CAAI,GACvDxa,SAAWzN,KAAKyN,SAAWzN,KAAKyN,SAAW,IAAMA,EAAWA,EACzDwa,CACR,EACAvb,OAAQ,SAAUe,GACjB,OAAOzN,KAAK+nB,UAAWkR,EAAQj5B,KAAMyN,GAAY,GAAI,CAAA,CAAM,CAAE,CAC9D,EACAmmB,IAAK,SAAUnmB,GACd,OAAOzN,KAAK+nB,UAAWkR,EAAQj5B,KAAMyN,GAAY,GAAI,CAAA,CAAK,CAAE,CAC7D,EACAkrB,GAAI,SAAUlrB,GACb,MAAO,CAAC,CAACwrB,EACRj5B,KAIoB,UAApB,OAAOyN,GAAyBqrB,EAAc/zB,KAAM0I,CAAS,EAC5DtJ,EAAQsJ,CAAS,EACjBA,GAAY,GACb,CAAA,CACD,EAAE/M,MACH,CACD,CAAE,EAOF,IAAI04B,EAKH7L,EAAa,sCA4HV8L,KA1HIl1B,EAAOC,GAAG0U,KAAO,SAAUrL,EAAUP,EAAS+mB,GAIpD,GAAMxmB,EAAN,CASA,GAHAwmB,EAAOA,GAAQmF,EAGU,UAApB,OAAO3rB,EA+EL,OAAKA,EAASyb,UACpBlpB,KAAKkN,QAAUlN,KAAM,GAAMyN,EAC3BzN,KAAKU,OAAS,EACPV,MAIImE,EAAOskB,WAAYhb,CAAS,EACV,aAAtB,OAAOwmB,EAAK5c,MAClB4c,EAAK5c,MAAO5J,CAAS,EAGrBA,EAAUtJ,CAAO,GAGdsJ,EAASA,WAAa6F,YAC1BtT,KAAKyN,SAAWA,EAASA,SACzBzN,KAAKkN,QAAUO,EAASP,SAGlB/I,EAAOslB,UAAWhc,EAAUzN,IAAK,GAtFvC,GAAK0F,EAPJA,EAL6B,MAAzB+H,EAAS6rB,OAAQ,CAAE,GACoB,MAA3C7rB,EAAS6rB,OAAQ7rB,EAAS/M,OAAS,CAAE,GAClB,GAAnB+M,EAAS/M,OAGD,CAAE,KAAM+M,EAAU,MAGlB8f,EAAWmB,KAAMjhB,CAAS,IAInB/H,CAAAA,EAAO,IAAQwH,EAwDxB,OAAK,CAACA,GAAWA,EAAQtK,OACtBsK,GAAW+mB,EAKbj0B,KAAKkO,YAAahB,CAAQ,GALN0C,KAAMnC,CAAS,EAtD1C,GAAK/H,EAAO,IAYX,GAXAwH,EAAUA,aAAmB/I,EAAS+I,EAAS,GAAMA,EAIrD/I,EAAO+jB,MAAOloB,KAAMmE,EAAOo1B,UAC1B7zB,EAAO,GACPwH,GAAWA,EAAQgc,SAAWhc,EAAQuhB,eAAiBvhB,EAAUzN,EACjE,CAAA,CACD,CAAE,EAGGs5B,EAAWh0B,KAAMW,EAAO,EAAI,GAAKvB,EAAOukB,cAAexb,CAAQ,EACnE,IAzCJ,IAAIxH,KAyCewH,EAGT/I,EAAOskB,WAAYzoB,KAAM0F,EAAQ,EACrC1F,KAAM0F,GAASwH,EAASxH,EAAQ,EAIhC1F,KAAK2O,KAAMjJ,EAAOwH,EAASxH,EAAQ,CAGtC,KAxBD,CAkCC,IAJAiI,EAAOlO,EAAS+H,eAAgB9B,EAAO,EAAI,IAI9BiI,EAAKkG,WAAa,CAI9B,GAAKlG,EAAKxG,KAAOzB,EAAO,GACvB,OAAO0zB,EAAWxpB,KAAMnC,CAAS,EAIlCzN,KAAKU,OAAS,EACdV,KAAM,GAAM2N,CACb,CAEA3N,KAAKkN,QAAUzN,EACfO,KAAKyN,SAAWA,CAEjB,CAzEF,CAwEG,OAAOzN,IAmCX,GAGIgD,UAAYmB,EAAOC,GAGxBg1B,EAAaj1B,EAAQ1E,CAAS,EAGX,kCAGlB+5B,GAAmB,CAClB5mB,SAAU,CAAA,EACV6mB,SAAU,CAAA,EACV5jB,KAAM,CAAA,EACND,KAAM,CAAA,CACP,EAkFD,SAAS8jB,GAASjK,EAAK5uB,GACtB,MACC4uB,EAAMA,EAAK5uB,KACsB,IAAjB4uB,EAAIvG,WAErB,OAAOuG,CACR,CAtFAtrB,EAAOC,GAAGsE,OAAQ,CACjByK,IAAK,SAAU/E,GACd,IAAIzN,EACHg5B,EAAUx1B,EAAQiK,EAAQpO,IAAK,EAC/BsL,EAAMquB,EAAQj5B,OAEf,OAAOV,KAAK0M,OAAQ,WACnB,IAAM/L,EAAI,EAAGA,EAAI2K,EAAK3K,CAAC,GACtB,GAAKwD,EAAO0O,SAAU7S,KAAM25B,EAASh5B,EAAI,EACxC,MAAO,CAAA,CAGV,CAAE,CACH,EAEAi5B,QAAS,SAAU3H,EAAW/kB,GAS7B,IARA,IAAIuiB,EACH9uB,EAAI,EACJk5B,EAAI75B,KAAKU,OACTmR,EAAU,GACVioB,EAAMhB,EAAc/zB,KAAMktB,CAAU,GAA0B,UAArB,OAAOA,EAC/C9tB,EAAQ8tB,EAAW/kB,GAAWlN,KAAKkN,OAAQ,EAC3C,EAEMvM,EAAIk5B,EAAGl5B,CAAC,GACf,IAAM8uB,EAAMzvB,KAAMW,GAAK8uB,GAAOA,IAAQviB,EAASuiB,EAAMA,EAAI5b,WAGxD,GAAK4b,EAAIvG,SAAW,KAAQ4Q,EACR,CAAC,EAApBA,EAAIv1B,MAAOkrB,CAAI,EAGE,IAAjBA,EAAIvG,UACH/kB,EAAOyL,KAAK2gB,gBAAiBd,EAAKwC,CAAU,GAAM,CAEnDpgB,EAAQvM,KAAMmqB,CAAI,EAClB,KACD,CAIF,OAAOzvB,KAAK+nB,UAA4B,EAAjBlW,EAAQnR,OAAayD,EAAOutB,WAAY7f,CAAQ,EAAIA,CAAQ,CACpF,EAIAtN,MAAO,SAAUoJ,GAGhB,OAAMA,EAKe,UAAhB,OAAOA,EACJxJ,EAAOwlB,QAAS3pB,KAAM,GAAKmE,EAAQwJ,CAAK,CAAE,EAI3CxJ,EAAOwlB,QAGbhc,EAAK/K,OAAS+K,EAAM,GAAMA,EAAM3N,IAAK,EAZ5BA,KAAM,IAAOA,KAAM,GAAI6T,WAAe7T,KAAKiW,MAAM,EAAE8jB,QAAQ,EAAEr5B,OAAS,CAAC,CAalF,EAEAs5B,IAAK,SAAUvsB,EAAUP,GACxB,OAAOlN,KAAK+nB,UACX5jB,EAAOutB,WACNvtB,EAAO+jB,MAAOloB,KAAK8nB,IAAI,EAAG3jB,EAAQsJ,EAAUP,CAAQ,CAAE,CACvD,CACD,CACD,EAEA+sB,QAAS,SAAUxsB,GAClB,OAAOzN,KAAKg6B,IAAiB,MAAZvsB,EAChBzN,KAAKmoB,WAAanoB,KAAKmoB,WAAWzb,OAAQe,CAAS,CACpD,CACD,CACD,CAAE,EAUFtJ,EAAOG,KAAM,CACZ0rB,OAAQ,SAAUriB,GACbqiB,EAASriB,EAAKkG,WAClB,OAAOmc,GAA8B,KAApBA,EAAO9G,SAAkB8G,EAAS,IACpD,EACAkK,QAAS,SAAUvsB,GAClB,OAAO9M,EAAK8M,EAAM,YAAa,CAChC,EACAwsB,aAAc,SAAUxsB,EAAMhN,EAAG83B,GAChC,OAAO53B,EAAK8M,EAAM,aAAc8qB,CAAM,CACvC,EACA5iB,KAAM,SAAUlI,GACf,OAAO+rB,GAAS/rB,EAAM,aAAc,CACrC,EACAiI,KAAM,SAAUjI,GACf,OAAO+rB,GAAS/rB,EAAM,iBAAkB,CACzC,EACAysB,QAAS,SAAUzsB,GAClB,OAAO9M,EAAK8M,EAAM,aAAc,CACjC,EACAosB,QAAS,SAAUpsB,GAClB,OAAO9M,EAAK8M,EAAM,iBAAkB,CACrC,EACA0sB,UAAW,SAAU1sB,EAAMhN,EAAG83B,GAC7B,OAAO53B,EAAK8M,EAAM,cAAe8qB,CAAM,CACxC,EACA6B,UAAW,SAAU3sB,EAAMhN,EAAG83B,GAC7B,OAAO53B,EAAK8M,EAAM,kBAAmB8qB,CAAM,CAC5C,EACAG,SAAU,SAAUjrB,GACnB,OAAOirB,GAAYjrB,EAAKkG,YAAc,IAAKke,WAAYpkB,CAAK,CAC7D,EACAiF,SAAU,SAAUjF,GACnB,OAAOirB,EAAUjrB,EAAKokB,UAAW,CAClC,EACA0H,SAAU,SAAU9rB,GACnB,OAAOxJ,EAAO6S,SAAUrJ,EAAM,QAAS,EACtCA,EAAK4sB,iBAAmB5sB,EAAK6sB,cAAc/6B,SAC3C0E,EAAO+jB,MAAO,GAAIva,EAAKsgB,UAAW,CACpC,CACD,EAAG,SAAUtnB,EAAMvC,GAClBD,EAAOC,GAAIuC,GAAS,SAAU8xB,EAAOhrB,GACpC,IAAIwa,EAAM9jB,EAAOikB,IAAKpoB,KAAMoE,EAAIq0B,CAAM,EAuBtC,OApBChrB,EADyB,UAArB9G,EAAKpB,MAAO,CAAC,CAAE,EACRkzB,EAGPhrB,IAAgC,UAApB,OAAOA,IACvBwa,EAAM9jB,EAAOuI,OAAQe,EAAUwa,CAAI,GAGjB,EAAdjoB,KAAKU,SAGH84B,GAAkB7yB,KACvBshB,EAAM9jB,EAAOutB,WAAYzJ,CAAI,GAIzBoR,GAAat0B,KAAM4B,CAAK,KAC5BshB,EAAMA,EAAI/b,QAAQ,GAIblM,KAAK+nB,UAAWE,CAAI,CAC5B,CACD,CAAE,EACF,IA+XIwS,GA+JA95B,GA9hBA+5B,EAAY,OAybhB,SAASC,KACHl7B,EAAS8G,kBACb9G,EAASsU,oBAAqB,mBAAoB6mB,CAAU,EAC5DptB,EAAOuG,oBAAqB,OAAQ6mB,CAAU,IAG9Cn7B,EAASqU,YAAa,qBAAsB8mB,CAAU,EACtDptB,EAAOsG,YAAa,SAAU8mB,CAAU,EAE1C,CAKA,SAASA,IAGHn7B,CAAAA,EAAS8G,kBACS,SAAtBiH,EAAO1N,MAAMoB,MACW,aAAxBzB,EAASmB,aAET+5B,GAAO,EACPx2B,EAAOkT,MAAM,EAEf,CA8EA,IAAM1W,MA5fNwD,EAAO02B,UAAY,SAAUvyB,GA9B7B,IAAwBA,EACnBwyB,EAiCJxyB,EAA6B,UAAnB,OAAOA,GAlCMA,EAmCPA,EAlCZwyB,EAAS,GACb32B,EAAOG,KAAMgE,EAAQ5C,MAAOg1B,CAAU,GAAK,GAAI,SAAU7tB,EAAGkuB,GAC3DD,EAAQC,GAAS,CAAA,CAClB,CAAE,EACKD,GA+BN32B,EAAOuE,OAAQ,GAAIJ,CAAQ,EAE5B,IACC0yB,EAGAC,EAGAC,EAGAC,EAGA/X,EAAO,GAGPgY,EAAQ,GAGRC,EAAc,CAAC,EAGfC,EAAO,WAQN,IALAH,EAAS7yB,EAAQizB,KAIjBL,EAAQF,EAAS,CAAA,EACTI,EAAM16B,OAAQ26B,EAAc,CAAC,EAEpC,IADAJ,EAASG,EAAMnM,MAAM,EACb,EAAEoM,EAAcjY,EAAK1iB,QAGmC,CAAA,IAA1D0iB,EAAMiY,GAAc71B,MAAOy1B,EAAQ,GAAKA,EAAQ,EAAI,GACxD3yB,EAAQkzB,cAGRH,EAAcjY,EAAK1iB,OACnBu6B,EAAS,CAAA,GAMN3yB,EAAQ2yB,SACbA,EAAS,CAAA,GAGVD,EAAS,CAAA,EAGJG,IAIH/X,EADI6X,EACG,GAIA,GAGV,EAGA9B,EAAO,CAGNa,IAAK,WA2BJ,OA1BK5W,IAGC6X,GAAU,CAACD,IACfK,EAAcjY,EAAK1iB,OAAS,EAC5B06B,EAAM91B,KAAM21B,CAAO,GAGpB,SAAWjB,EAAK7sB,GACfhJ,EAAOG,KAAM6I,EAAM,SAAUN,EAAGod,GAC1B9lB,EAAOskB,WAAYwB,CAAI,EACrB3hB,EAAQiwB,QAAWY,EAAKhmB,IAAK8W,CAAI,GACtC7G,EAAK9d,KAAM2kB,CAAI,EAELA,GAAOA,EAAIvpB,QAAiC,WAAvByD,EAAOjD,KAAM+oB,CAAI,GAGjD+P,EAAK/P,CAAI,CAEX,CAAE,CACD,EAAG7c,SAAU,EAEV6tB,IAAU,CAACD,GACfM,EAAK,EAGAt7B,IACR,EAGA2J,OAAQ,WAYP,OAXAxF,EAAOG,KAAM8I,UAAW,SAAUP,EAAGod,GAEpC,IADA,IAAI1lB,EACqD,CAAC,GAAhDA,EAAQJ,EAAOwlB,QAASM,EAAK7G,EAAM7e,CAAM,IAClD6e,EAAK5e,OAAQD,EAAO,CAAE,EAGjBA,GAAS82B,GACbA,CAAW,EAGd,CAAE,EACKr7B,IACR,EAIAmT,IAAK,SAAU/O,GACd,OAAOA,EACuB,CAAC,EAA9BD,EAAOwlB,QAASvlB,EAAIgf,CAAK,EACX,EAAdA,EAAK1iB,MACP,EAGAi0B,MAAO,WAIN,OAHKvR,EAAAA,GACG,GAEDpjB,IACR,EAKAy7B,QAAS,WAGR,OAFAN,EAASC,EAAQ,GACjBhY,EAAO6X,EAAS,GACTj7B,IACR,EACAu0B,SAAU,WACT,MAAO,CAACnR,CACT,EAKAsY,KAAM,WAKL,OAJAP,EAAS,CAAA,EACHF,GACL9B,EAAKsC,QAAQ,EAEPz7B,IACR,EACAm7B,OAAQ,WACP,MAAO,CAAC,CAACA,CACV,EAGAQ,SAAU,SAAUzuB,EAASC,GAS5B,OARMguB,IAELhuB,EAAO,CAAED,GADTC,EAAOA,GAAQ,IACQ5H,MAAQ4H,EAAK5H,MAAM,EAAI4H,GAC9CiuB,EAAM91B,KAAM6H,CAAK,EACX6tB,IACLM,EAAK,EAGAt7B,IACR,EAGAs7B,KAAM,WAEL,OADAnC,EAAKwC,SAAU37B,KAAMoN,SAAU,EACxBpN,IACR,EAGAk7B,MAAO,WACN,MAAO,CAAC,CAACA,CACV,CACD,EAED,OAAO/B,CACR,EAGAh1B,EAAOuE,OAAQ,CAEdkzB,SAAU,SAAU5uB,GACnB,IAAI6uB,EAAS,CAGX,CAAE,UAAW,OAAQ13B,EAAO02B,UAAW,aAAc,EAAG,YACxD,CAAE,SAAU,OAAQ12B,EAAO02B,UAAW,aAAc,EAAG,YACvD,CAAE,SAAU,WAAY12B,EAAO02B,UAAW,QAAS,IAEpDjf,EAAQ,UACRkgB,EAAU,CACTlgB,MAAO,WACN,OAAOA,CACR,EACAmgB,OAAQ,WAEP,OADAC,EAAS5pB,KAAMhF,SAAU,EAAE6uB,KAAM7uB,SAAU,EACpCpN,IACR,EACAsS,KAAM,WACL,IAAI4pB,EAAM9uB,UACV,OAAOjJ,EAAOy3B,SAAU,SAAUO,GACjCh4B,EAAOG,KAAMu3B,EAAQ,SAAUl7B,EAAGy7B,GACjC,IAAIh4B,EAAKD,EAAOskB,WAAYyT,EAAKv7B,EAAI,GAAKu7B,EAAKv7B,GAG/Cq7B,EAAUI,EAAO,IAAO,WACvB,IAAIC,EAAWj4B,GAAMA,EAAGoB,MAAOxF,KAAMoN,SAAU,EAC1CivB,GAAYl4B,EAAOskB,WAAY4T,EAASP,OAAQ,EACpDO,EAASP,QAAQ,EACfQ,SAAUH,EAASI,MAAO,EAC1BnqB,KAAM+pB,EAASK,OAAQ,EACvBP,KAAME,EAASM,MAAO,EAExBN,EAAUC,EAAO,GAAM,QACtBp8B,OAAS87B,EAAUK,EAASL,QAAQ,EAAI97B,KACxCoE,EAAK,CAAEi4B,GAAajvB,SACrB,CAEF,CAAE,CACH,CAAE,EACF8uB,EAAM,IACP,CAAE,EAAEJ,QAAQ,CACb,EAIAA,QAAS,SAAU7yB,GAClB,OAAc,MAAPA,EAAc9E,EAAOuE,OAAQO,EAAK6yB,CAAQ,EAAIA,CACtD,CACD,EACAE,EAAW,GAyCZ,OAtCAF,EAAQY,KAAOZ,EAAQxpB,KAGvBnO,EAAOG,KAAMu3B,EAAQ,SAAUl7B,EAAGy7B,GACjC,IAAIhZ,EAAOgZ,EAAO,GACjBO,EAAcP,EAAO,GAGtBN,EAASM,EAAO,IAAQhZ,EAAK4W,IAGxB2C,GACJvZ,EAAK4W,IAAK,WAGTpe,EAAQ+gB,CAGT,EAAGd,EAAY,EAAJl7B,GAAS,GAAI86B,QAASI,EAAQ,GAAK,GAAIH,IAAK,EAIxDM,EAAUI,EAAO,IAAQ,WAExB,OADAJ,EAAUI,EAAO,GAAM,QAAUp8B,OAASg8B,EAAWF,EAAU97B,KAAMoN,SAAU,EACxEpN,IACR,EACAg8B,EAAUI,EAAO,GAAM,QAAWhZ,EAAKuY,QACxC,CAAE,EAGFG,EAAQA,QAASE,CAAS,EAGrBhvB,GACJA,EAAK5B,KAAM4wB,EAAUA,CAAS,EAIxBA,CACR,EAGAY,KAAM,SAAUC,GACf,IA0BCC,EAAgBC,EAAkBC,EA1B/Br8B,EAAI,EACPs8B,EAAgB13B,EAAM6F,KAAMgC,SAAU,EACtC1M,EAASu8B,EAAcv8B,OAGvBw8B,EAAuB,IAAXx8B,GACTm8B,GAAe14B,EAAOskB,WAAYoU,EAAYf,OAAQ,EAAMp7B,EAAS,EAIxEs7B,EAAyB,IAAdkB,EAAkBL,EAAc14B,EAAOy3B,SAAS,EAG3DuB,EAAa,SAAUx8B,EAAGg2B,EAAUyG,GACnC,OAAO,SAAU1zB,GAChBitB,EAAUh2B,GAAMX,KAChBo9B,EAAQz8B,GAAyB,EAAnByM,UAAU1M,OAAa6E,EAAM6F,KAAMgC,SAAU,EAAI1D,EAC1D0zB,IAAWN,EACfd,EAASqB,WAAY1G,EAAUyG,CAAO,EAE1B,EAAIF,GAChBlB,EAASsB,YAAa3G,EAAUyG,CAAO,CAEzC,CACD,EAKD,GAAc,EAAT18B,EAIJ,IAHAo8B,EAAiB,IAAIjvB,MAAOnN,CAAO,EACnCq8B,EAAmB,IAAIlvB,MAAOnN,CAAO,EACrCs8B,EAAkB,IAAInvB,MAAOnN,CAAO,EAC5BC,EAAID,EAAQC,CAAC,GACfs8B,EAAet8B,IAAOwD,EAAOskB,WAAYwU,EAAet8B,GAAIm7B,OAAQ,EACxEmB,EAAet8B,GAAIm7B,QAAQ,EACzBQ,SAAUa,EAAYx8B,EAAGo8B,EAAkBD,CAAe,CAAE,EAC5D1qB,KAAM+qB,EAAYx8B,EAAGq8B,EAAiBC,CAAc,CAAE,EACtDhB,KAAMD,EAASS,MAAO,EAExB,EAAES,EAUL,OAJMA,GACLlB,EAASsB,YAAaN,EAAiBC,CAAc,EAG/CjB,EAASF,QAAQ,CACzB,CACD,CAAE,EAMF33B,EAAOC,GAAGiT,MAAQ,SAAUjT,GAK3B,OAFAD,EAAOkT,MAAMykB,QAAQ,EAAE1pB,KAAMhO,CAAG,EAEzBpE,IACR,EAEAmE,EAAOuE,OAAQ,CAGdmgB,QAAS,CAAA,EAIT0U,UAAW,EAGXC,UAAW,SAAUC,GACfA,EACJt5B,EAAOo5B,SAAS,GAEhBp5B,EAAOkT,MAAO,CAAA,CAAK,CAErB,EAGAA,MAAO,SAAUpK,IAGF,CAAA,IAATA,EAAgB,EAAE9I,EAAOo5B,UAAYp5B,EAAO0kB,WAKjD1kB,EAAO0kB,QAAU,CAAA,KAGZ5b,GAAsC,EAArB,EAAE9I,EAAOo5B,YAK/B9C,GAAU6C,YAAa79B,EAAU,CAAE0E,EAAS,EAGvCA,EAAOC,GAAGs5B,iBACdv5B,EAAQ1E,CAAS,EAAEi+B,eAAgB,OAAQ,EAC3Cv5B,EAAQ1E,CAAS,EAAEqN,IAAK,OAAQ,GAElC,CACD,CAAE,EA+BF3I,EAAOkT,MAAMykB,QAAU,SAAU7yB,GAChC,GAAK,CAACwxB,GAQL,GANAA,GAAYt2B,EAAOy3B,SAAS,EAMC,aAAxBn8B,EAASmB,YACa,YAAxBnB,EAASmB,YAA4B,CAACnB,EAASuP,gBAAgB2uB,SAGjEnwB,EAAOnI,WAAYlB,EAAOkT,KAAM,OAG1B,GAAK5X,EAAS8G,iBAGpB9G,EAAS8G,iBAAkB,mBAAoBq0B,CAAU,EAGzDptB,EAAOjH,iBAAkB,OAAQq0B,CAAU,MAGrC,CAGNn7B,EAAS4G,YAAa,qBAAsBu0B,CAAU,EAGtDptB,EAAOnH,YAAa,SAAUu0B,CAAU,EAIxC,IAAIxqB,EAAM,CAAA,EAEV,IACCA,EAA6B,MAAvB5C,EAAOowB,cAAwBn+B,EAASuP,eAChC,CAAb,MAAQrK,IAELyL,GAAOA,EAAIutB,UACf,CAAA,SAAWE,IACV,GAAK,CAAC15B,EAAO0kB,QAAU,CAEtB,IAICzY,EAAIutB,SAAU,MAAO,CAGtB,CAFE,MAAQh5B,GACT,OAAO6I,EAAOnI,WAAYw4B,EAAe,EAAG,CAC7C,CAGAlD,GAAO,EAGPx2B,EAAOkT,MAAM,CACd,CACC,EAAE,CAEN,CAED,OAAOojB,GAAUqB,QAAS7yB,CAAI,CAC/B,EAGA9E,EAAOkT,MAAMykB,QAAQ,EAQV33B,EAAQijB,CAAQ,EAC1B,MAEDA,EAAQ+B,SAAiB,MAANxoB,GAInBymB,EAAQ0W,uBAAyB,CAAA,EAGjC35B,EAAQ,WAGP,IAAS2c,EAAWid,EAEpBlvB,EAAOpP,EAASwE,qBAAsB,MAAO,EAAG,GAC1C4K,GAASA,EAAKjI,QAOpBka,EAAMrhB,EAASqG,cAAe,KAAM,GACpCi4B,EAAYt+B,EAASqG,cAAe,KAAM,GAChCc,MAAM6I,QAAU,iEAC1BZ,EAAKzI,YAAa23B,CAAU,EAAE33B,YAAa0a,CAAI,EAEhB,aAA1B,OAAOA,EAAIla,MAAMo3B,OAMrBld,EAAIla,MAAM6I,QAAU,gEAEpB2X,EAAQ0W,uBAAyB7vB,EAA0B,IAApB6S,EAAIhQ,YACtC7C,KAKJY,EAAKjI,MAAMo3B,KAAO,GAIpBnvB,EAAK3J,YAAa64B,CAAU,EAC7B,CAAE,EAIGjd,EAAMrhB,EAASqG,cAAe,KAAM,EAGxCshB,EAAQ6W,cAAgB,CAAA,EACxB,IACC,OAAOnd,EAAI/b,IAGZ,CAFE,MAAQJ,IACTyiB,EAAQ6W,cAAgB,CAAA,CACzB,CAKD,IAueKC,EAveDC,EAAa,SAAUxwB,GAC1B,IAAIywB,EAASj6B,EAAOi6B,QAAUzwB,EAAKqJ,SAAW,KAAM9M,YAAY,GAC/Dgf,EAAW,CAACvb,EAAKub,UAAY,EAG9B,OAAoB,IAAbA,GAA+B,IAAbA,KAIxB,CAACkV,GAAqB,CAAA,IAAXA,GAAmBzwB,EAAK/F,aAAc,SAAU,IAAMw2B,EACnE,EAKIC,GAAS,gCACZC,GAAa,WAEd,SAASC,GAAU5wB,EAAMpF,EAAKM,GAI7B,GAAKA,IAASyK,WAA+B,IAAlB3F,EAAKub,SAAiB,CAEhD,IAAIviB,EAAO,QAAU4B,EAAI1C,QAASy4B,GAAY,KAAM,EAAEp0B,YAAY,EAIlE,GAAqB,UAAhB,OAFLrB,EAAO8E,EAAK/F,aAAcjB,CAAK,GAEC,CAC/B,IACCkC,EAAgB,SAATA,GACG,UAATA,IACS,SAATA,EAAkB,KAGlB,CAACA,EAAO,KAAOA,EAAO,CAACA,EACvBw1B,GAAOt5B,KAAM8D,CAAK,EAAI1E,EAAOq6B,UAAW31B,CAAK,EAC7CA,EACa,CAAb,MAAQlE,IAGVR,EAAO0E,KAAM8E,EAAMpF,EAAKM,CAAK,CAE9B,MACCA,EAAOyK,SAET,CAEA,OAAOzK,CACR,CAGA,SAAS41B,GAAmBx1B,GAE3B,IADA,IAAItC,KACUsC,EAGb,IAAc,SAATtC,GAAmBxC,CAAAA,EAAO8kB,cAAehgB,EAAKtC,EAAO,IAG5C,WAATA,EACJ,OAIF,OAAO,CACR,CAEA,SAAS+3B,GAAc/wB,EAAMhH,EAAMkC,EAAM81B,GACxC,GAAMR,EAAYxwB,CAAK,EAAvB,CAIA,IAAIsa,EACH2W,EAAcz6B,EAAOwkB,QAIrBkW,EAASlxB,EAAKub,SAIdjmB,EAAQ47B,EAAS16B,EAAOlB,MAAQ0K,EAIhCxG,EAAK03B,EAASlxB,EAAMixB,GAAgBjxB,EAAMixB,IAAiBA,EAI5D,GAAQz3B,GAAOlE,EAAOkE,KAAWw3B,GAAQ17B,EAAOkE,GAAK0B,OACpDA,IAASyK,WAA6B,UAAhB,OAAO3M,EAkE9B,OAnDM1D,EAXAkE,EAAAA,IAIA03B,EACClxB,EAAMixB,GAAgB5X,EAAW8E,IAAI,GAAK3nB,EAAO+lB,IAAI,GAErD0U,MAQN37B,EAAOkE,GAAO03B,EAAS,GAAK,CAAEC,OAAQ36B,EAAO2kB,IAAK,GAK9B,UAAhB,OAAOniB,GAAqC,YAAhB,OAAOA,IAClCg4B,EACJ17B,EAAOkE,GAAOhD,EAAOuE,OAAQzF,EAAOkE,GAAMR,CAAK,EAE/C1D,EAAOkE,GAAK0B,KAAO1E,EAAOuE,OAAQzF,EAAOkE,GAAK0B,KAAMlC,CAAK,GAI3Do4B,EAAY97B,EAAOkE,GAKbw3B,IACCI,EAAUl2B,OACfk2B,EAAUl2B,KAAO,IAGlBk2B,EAAYA,EAAUl2B,MAGlBA,IAASyK,YACbyrB,EAAW56B,EAAOolB,UAAW5iB,CAAK,GAAMkC,GAKpB,UAAhB,OAAOlC,EAMC,OAHZshB,EAAM8W,EAAWp4B,MAMhBshB,EAAM8W,EAAW56B,EAAOolB,UAAW5iB,CAAK,IAGzCshB,EAAM8W,EAGA9W,CAtFP,CAuFD,CAEA,SAAS+W,GAAoBrxB,EAAMhH,EAAMg4B,GACxC,GAAMR,EAAYxwB,CAAK,EAAvB,CAIA,IAAIoxB,EAAWp+B,EACdk+B,EAASlxB,EAAKub,SAGdjmB,EAAQ47B,EAAS16B,EAAOlB,MAAQ0K,EAChCxG,EAAK03B,EAASlxB,EAAMxJ,EAAOwkB,SAAYxkB,EAAOwkB,QAI/C,GAAM1lB,EAAOkE,GAAb,CAIA,GAAKR,IAEJo4B,EAAYJ,EAAM17B,EAAOkE,GAAOlE,EAAOkE,GAAK0B,MAE3B,CA6BhBlI,GAHCgG,EAvBKxC,EAAOsC,QAASE,CAAK,EAuBnBA,EAAK8f,OAAQtiB,EAAOikB,IAAKzhB,EAAMxC,EAAOolB,SAAU,CAAE,EApBpD5iB,KAAQo4B,IAKZp4B,EAAOxC,EAAOolB,UAAW5iB,CAAK,KACjBo4B,EACL,CAAEp4B,GAEFA,EAAKqC,MAAO,GAAI,GAcjBtI,OACT,KAAQC,CAAC,IACR,OAAOo+B,EAAWp4B,EAAMhG,IAKzB,GAAKg+B,EAAM,CAACF,GAAmBM,CAAU,EAAI,CAAC56B,EAAO8kB,cAAe8V,CAAU,EAC7E,MAEF,EAIKJ,IACL,OAAO17B,EAAOkE,GAAK0B,KAIb41B,GAAmBx7B,EAAOkE,EAAK,MAMjC03B,EACJ16B,EAAO86B,UAAW,CAAEtxB,GAAQ,CAAA,CAAK,EAItByZ,EAAQ6W,eAAiBh7B,GAASA,EAAMuK,OAEnD,OAAOvK,EAAOkE,GAIdlE,EAAOkE,GAAOmM,UAvEf,CAbA,CAsFD,CAEAnP,EAAOuE,OAAQ,CACdzF,MAAO,GAIPm7B,OAAQ,CACPc,UAAW,CAAA,EACXC,SAAU,CAAA,EAGVC,UAAW,4CACZ,EAEAC,QAAS,SAAU1xB,GAElB,MAAO,CAAC,EADRA,EAAOA,EAAKub,SAAW/kB,EAAOlB,MAAO0K,EAAMxJ,EAAOwkB,UAAchb,EAAMxJ,EAAOwkB,WAC5D,CAAC8V,GAAmB9wB,CAAK,CAC3C,EAEA9E,KAAM,SAAU8E,EAAMhH,EAAMkC,GAC3B,OAAO61B,GAAc/wB,EAAMhH,EAAMkC,CAAK,CACvC,EAEAy2B,WAAY,SAAU3xB,EAAMhH,GAC3B,OAAOq4B,GAAoBrxB,EAAMhH,CAAK,CACvC,EAGA44B,MAAO,SAAU5xB,EAAMhH,EAAMkC,GAC5B,OAAO61B,GAAc/wB,EAAMhH,EAAMkC,EAAM,CAAA,CAAK,CAC7C,EAEA22B,YAAa,SAAU7xB,EAAMhH,GAC5B,OAAOq4B,GAAoBrxB,EAAMhH,EAAM,CAAA,CAAK,CAC7C,CACD,CAAE,EAEFxC,EAAOC,GAAGsE,OAAQ,CACjBG,KAAM,SAAUN,EAAKmB,GACpB,IAAI/I,EAAGgG,EAAMkC,EACZ8E,EAAO3N,KAAM,GACbqvB,EAAQ1hB,GAAQA,EAAKwe,WAMtB,GAAK5jB,IAAQ+K,UA0Bb,MAAoB,UAAf,OAAO/K,EACJvI,KAAKsE,KAAM,WACjBH,EAAO0E,KAAM7I,KAAMuI,CAAI,CACxB,CAAE,EAGuB,EAAnB6E,UAAU1M,OAGhBV,KAAKsE,KAAM,WACVH,EAAO0E,KAAM7I,KAAMuI,EAAKmB,CAAM,CAC/B,CAAE,EAIFiE,EAAO4wB,GAAU5wB,EAAMpF,EAAKpE,EAAO0E,KAAM8E,EAAMpF,CAAI,CAAE,EAAI+K,UAxCzD,GAAKtT,KAAKU,SACTmI,EAAO1E,EAAO0E,KAAM8E,CAAK,EAEF,IAAlBA,EAAKub,WAAkB,CAAC/kB,EAAOo7B,MAAO5xB,EAAM,aAAc,EAAI,CAElE,IADAhN,EAAI0uB,EAAM3uB,OACFC,CAAC,IAIH0uB,EAAO1uB,IAEsB,KADjCgG,EAAO0oB,EAAO1uB,GAAIgG,MACRL,QAAS,OAAQ,GAE1Bi4B,GAAU5wB,EADVhH,EAAOxC,EAAOolB,UAAW5iB,EAAKpB,MAAO,CAAE,CAAE,EACnBsD,EAAMlC,EAAO,EAItCxC,EAAOo7B,MAAO5xB,EAAM,cAAe,CAAA,CAAK,CACzC,CAGD,OAAO9E,CAoBT,EAEAy2B,WAAY,SAAU/2B,GACrB,OAAOvI,KAAKsE,KAAM,WACjBH,EAAOm7B,WAAYt/B,KAAMuI,CAAI,CAC9B,CAAE,CACH,CACD,CAAE,EAGFpE,EAAOuE,OAAQ,CACd0yB,MAAO,SAAUztB,EAAMzM,EAAM2H,GAC5B,IAAIuyB,EAEJ,GAAKztB,EAYJ,OAVAytB,EAAQj3B,EAAOo7B,MAAO5xB,EADtBzM,GAASA,GAAQ,MAAS,OACO,EAG5B2H,IACC,CAACuyB,GAASj3B,EAAOsC,QAASoC,CAAK,EACnCuyB,EAAQj3B,EAAOo7B,MAAO5xB,EAAMzM,EAAMiD,EAAOslB,UAAW5gB,CAAK,CAAE,EAE3DuyB,EAAM91B,KAAMuD,CAAK,GAGZuyB,GAAS,EAElB,EAEAqE,QAAS,SAAU9xB,EAAMzM,GACxBA,EAAOA,GAAQ,KAEf,IAAIk6B,EAAQj3B,EAAOi3B,MAAOztB,EAAMzM,CAAK,EACpCw+B,EAActE,EAAM16B,OACpB0D,EAAKg3B,EAAMnM,MAAM,EACjB0Q,EAAQx7B,EAAOy7B,YAAajyB,EAAMzM,CAAK,EAM5B,eAAPkD,IACJA,EAAKg3B,EAAMnM,MAAM,EACjByQ,CAAW,IAGPt7B,IAIU,OAATlD,GACJk6B,EAAM9J,QAAS,YAAa,EAI7B,OAAOqO,EAAME,KACbz7B,EAAGgH,KAAMuC,EApBF,WACNxJ,EAAOs7B,QAAS9xB,EAAMzM,CAAK,CAC5B,EAkBqBy+B,CAAM,GAGvB,CAACD,GAAeC,GACpBA,EAAMhL,MAAM2G,KAAK,CAEnB,EAIAsE,YAAa,SAAUjyB,EAAMzM,GAC5B,IAAIqH,EAAMrH,EAAO,aACjB,OAAOiD,EAAOo7B,MAAO5xB,EAAMpF,CAAI,GAAKpE,EAAOo7B,MAAO5xB,EAAMpF,EAAK,CAC5DosB,MAAOxwB,EAAO02B,UAAW,aAAc,EAAEb,IAAK,WAC7C71B,EAAOq7B,YAAa7xB,EAAMzM,EAAO,OAAQ,EACzCiD,EAAOq7B,YAAa7xB,EAAMpF,CAAI,CAC/B,CAAE,CACH,CAAE,CACH,CACD,CAAE,EAEFpE,EAAOC,GAAGsE,OAAQ,CACjB0yB,MAAO,SAAUl6B,EAAM2H,GACtB,IAAIi3B,EAAS,EAQb,MANqB,UAAhB,OAAO5+B,IACX2H,EAAO3H,EACPA,EAAO,KACP4+B,CAAM,IAGF1yB,UAAU1M,OAASo/B,EAChB37B,EAAOi3B,MAAOp7B,KAAM,GAAKkB,CAAK,EAG/B2H,IAASyK,UACftT,KACAA,KAAKsE,KAAM,WACV,IAAI82B,EAAQj3B,EAAOi3B,MAAOp7B,KAAMkB,EAAM2H,CAAK,EAG3C1E,EAAOy7B,YAAa5/B,KAAMkB,CAAK,EAEjB,OAATA,GAAgC,eAAfk6B,EAAO,IAC5Bj3B,EAAOs7B,QAASz/B,KAAMkB,CAAK,CAE7B,CAAE,CACJ,EACAu+B,QAAS,SAAUv+B,GAClB,OAAOlB,KAAKsE,KAAM,WACjBH,EAAOs7B,QAASz/B,KAAMkB,CAAK,CAC5B,CAAE,CACH,EACA6+B,WAAY,SAAU7+B,GACrB,OAAOlB,KAAKo7B,MAAOl6B,GAAQ,KAAM,EAAG,CACrC,EAIA46B,QAAS,SAAU56B,EAAM+H,GACxB,IAAImhB,EACH9U,EAAQ,EACR0qB,EAAQ77B,EAAOy3B,SAAS,EACxBpK,EAAWxxB,KACXW,EAAIX,KAAKU,OACT87B,EAAU,WACH,EAAIlnB,GACT0qB,EAAM1C,YAAa9L,EAAU,CAAEA,EAAW,CAE5C,EAQD,IANqB,UAAhB,OAAOtwB,IACX+H,EAAM/H,EACNA,EAAOoS,WAERpS,EAAOA,GAAQ,KAEPP,CAAC,KACRypB,EAAMjmB,EAAOo7B,MAAO/N,EAAU7wB,GAAKO,EAAO,YAAa,IAC3CkpB,EAAIuK,QACfrf,CAAK,GACL8U,EAAIuK,MAAMqF,IAAKwC,CAAQ,GAIzB,OADAA,EAAQ,EACDwD,EAAMlE,QAAS7yB,CAAI,CAC3B,CACD,CAAE,EAMDme,EAAQ6Y,iBAAmB,WAC1B,IAQInf,EAAKjS,EAAMkvB,EARf,OAA4B,MAAvBG,EACGA,GAIRA,EAAsB,CAAA,GAKtBrvB,EAAOpP,EAASwE,qBAAsB,MAAO,EAAG,KACjC4K,EAAKjI,OAOpBka,EAAMrhB,EAASqG,cAAe,KAAM,GACpCi4B,EAAYt+B,EAASqG,cAAe,KAAM,GAChCc,MAAM6I,QAAU,iEAC1BZ,EAAKzI,YAAa23B,CAAU,EAAE33B,YAAa0a,CAAI,EAIhB,aAA1B,OAAOA,EAAIla,MAAMo3B,OAGrBld,EAAIla,MAAM6I,QAIT,iJAGDqR,EAAI1a,YAAa3G,EAASqG,cAAe,KAAM,CAAE,EAAEc,MAAM6M,MAAQ,MACjEyqB,EAA0C,IAApBpd,EAAIhQ,aAG3BjC,EAAK3J,YAAa64B,CAAU,EAErBG,GA9BP,KAAA,EA+BD,EAGD,IAAIgC,EAAO,sCAA0C7rB,OAEjD8rB,GAAU,IAAI71B,OAAQ,iBAAmB41B,EAAO,cAAe,GAAI,EAGnEE,EAAY,CAAE,MAAO,QAAS,SAAU,QAExCC,GAAW,SAAU1yB,EAAM2yB,GAK7B,MAAyC,SAAlCn8B,EAAOiP,IADdzF,EAAO2yB,GAAM3yB,EACY,SAAU,GAClC,CAACxJ,EAAO0O,SAAUlF,EAAK8gB,cAAe9gB,CAAK,CAC7C,EAID,SAAS4yB,GAAW5yB,EAAM6yB,EAAMC,EAAYC,GAC3C,IAAIC,EACHC,EAAQ,EACRC,EAAgB,GAChBC,EAAeJ,EACd,WAAa,OAAOA,EAAMjR,IAAI,CAAG,EACjC,WAAa,OAAOtrB,EAAOiP,IAAKzF,EAAM6yB,EAAM,EAAG,CAAG,EACnDO,EAAUD,EAAa,EACvBE,EAAOP,GAAcA,EAAY,KAASt8B,EAAO88B,UAAWT,GAAS,GAAK,MAG1EU,GAAkB/8B,EAAO88B,UAAWT,IAAmB,OAATQ,GAAiB,CAACD,IAC/DZ,GAAQzR,KAAMvqB,EAAOiP,IAAKzF,EAAM6yB,CAAK,CAAE,EAEzC,GAAKU,GAAiBA,EAAe,KAAQF,EAW5C,IARAA,EAAOA,GAAQE,EAAe,GAG9BT,EAAaA,GAAc,GAG3BS,EAAgB,CAACH,GAAW,EAS3BG,GAHAN,EAAQA,GAAS,KAIjBz8B,EAAOyC,MAAO+G,EAAM6yB,EAAMU,EAAgBF,CAAK,EAK/CJ,KAAYA,EAAQE,EAAa,EAAIC,IAAuB,IAAVH,GAAe,EAAEC,IAiBrE,OAbKJ,IACJS,EAAgB,CAACA,GAAiB,CAACH,GAAW,EAG9CJ,EAAWF,EAAY,GACtBS,GAAkBT,EAAY,GAAM,GAAMA,EAAY,GACtD,CAACA,EAAY,GACTC,KACJA,EAAMM,KAAOA,EACbN,EAAM9rB,MAAQssB,EACdR,EAAMtqB,IAAMuqB,GAGPA,CACR,CAKA,IAAIQ,EAAS,SAAUnZ,EAAO5jB,EAAImE,EAAKmB,EAAO03B,EAAWC,EAAUC,GAClE,IAAI3gC,EAAI,EACPD,EAASsnB,EAAMtnB,OACf6gC,EAAc,MAAPh5B,EAGR,GAA4B,WAAvBpE,EAAOjD,KAAMqH,CAAI,EAErB,IAAM5H,KADNygC,EAAY,CAAA,EACD74B,EACV44B,EAAQnZ,EAAO5jB,EAAIzD,EAAG4H,EAAK5H,GAAK,CAAA,EAAM0gC,EAAUC,CAAI,OAI/C,GAAK53B,IAAU4J,YACrB8tB,EAAY,CAAA,EAENj9B,EAAOskB,WAAY/e,CAAM,IAC9B43B,EAAM,CAAA,GAQLl9B,EALGm9B,EAGCD,GACJl9B,EAAGgH,KAAM4c,EAAOte,CAAM,EACjB,OAIL63B,EAAOn9B,EACF,SAAUuJ,EAAMpF,EAAKmB,GACzB,OAAO63B,EAAKn2B,KAAMjH,EAAQwJ,CAAK,EAAGjE,CAAM,CACzC,GAIGtF,GACJ,KAAQzD,EAAID,EAAQC,CAAC,GACpByD,EACC4jB,EAAOrnB,GACP4H,EACA+4B,EAAM53B,EAAQA,EAAM0B,KAAM4c,EAAOrnB,GAAKA,EAAGyD,EAAI4jB,EAAOrnB,GAAK4H,CAAI,CAAE,CAChE,EAKH,OAAO64B,EACNpZ,EAGAuZ,EACCn9B,EAAGgH,KAAM4c,CAAM,EACftnB,EAAS0D,EAAI4jB,EAAO,GAAKzf,CAAI,EAAI84B,CACpC,EACIG,GAAiB,wBAEjBC,GAAW,aAEXC,GAAc,4BAEdC,GAAqB,OAErBC,GAAY,0LAMhB,SAASC,GAAoBpiC,GAC5B,IAAI2jB,EAAOwe,GAAU54B,MAAO,GAAI,EAC/B84B,EAAWriC,EAASsiC,uBAAuB,EAE5C,GAAKD,EAASh8B,cACb,KAAQsd,EAAK1iB,QACZohC,EAASh8B,cACRsd,EAAK0I,IAAI,CACV,EAGF,OAAOgW,CACR,CAIKhhB,EAAMrhB,EAASqG,cAAe,KAAM,EACvCk8B,EAAWviC,EAASsiC,uBAAuB,EAC3ChrB,EAAQtX,EAASqG,cAAe,OAAQ,EAGzCgb,EAAIpR,UAAY,qEAGhB0X,EAAQ6a,kBAAgD,IAA5BnhB,EAAIiR,WAAW7I,SAI3C9B,EAAQ8a,MAAQ,CAACphB,EAAI7c,qBAAsB,OAAQ,EAAEvD,OAIrD0mB,EAAQ+a,cAAgB,CAAC,CAACrhB,EAAI7c,qBAAsB,MAAO,EAAEvD,OAI7D0mB,EAAQgb,WACyD,kBAAhE3iC,EAASqG,cAAe,KAAM,EAAEu8B,UAAW,CAAA,CAAK,EAAEC,UAInDvrB,EAAM7V,KAAO,WACb6V,EAAMyd,QAAU,CAAA,EAChBwN,EAAS57B,YAAa2Q,CAAM,EAC5BqQ,EAAQmb,cAAgBxrB,EAAMyd,QAI9B1T,EAAIpR,UAAY,yBAChB0X,EAAQob,eAAiB,CAAC,CAAC1hB,EAAIuhB,UAAW,CAAA,CAAK,EAAE7O,UAAU8E,aAG3D0J,EAAS57B,YAAa0a,CAAI,GAI1B/J,EAAQtX,EAASqG,cAAe,OAAQ,GAClC+B,aAAc,OAAQ,OAAQ,EACpCkP,EAAMlP,aAAc,UAAW,SAAU,EACzCkP,EAAMlP,aAAc,OAAQ,GAAI,EAEhCiZ,EAAI1a,YAAa2Q,CAAM,EAIvBqQ,EAAQqb,WAAa3hB,EAAIuhB,UAAW,CAAA,CAAK,EAAEA,UAAW,CAAA,CAAK,EAAE7O,UAAUgB,QAIvEpN,EAAQsb,aAAe,CAAC,CAAC5hB,EAAIva,iBAK7Bua,EAAK3c,EAAOwkB,SAAY,EACxBvB,EAAQ+E,WAAa,CAACrL,EAAIlZ,aAAczD,EAAOwkB,OAAQ,EAKxD,IAAIga,EAAU,CACbC,OAAQ,CAAE,EAAG,+BAAgC,aAC7CC,OAAQ,CAAE,EAAG,aAAc,eAC3BC,KAAM,CAAE,EAAG,QAAS,UAGpBhe,MAAO,CAAE,EAAG,WAAY,aACxB1F,MAAO,CAAE,EAAG,UAAW,YACvBE,GAAI,CAAE,EAAG,iBAAkB,oBAC3ByjB,IAAK,CAAE,EAAG,mCAAoC,uBAC9C7gB,GAAI,CAAE,EAAG,qBAAsB,yBAI/B8gB,SAAU5b,EAAQ+a,cAAgB,CAAE,EAAG,GAAI,IAAO,CAAE,EAAG,SAAU,SAClE,EASA,SAASc,EAAQ/1B,EAASyH,GACzB,IAAIqT,EAAOra,EACVhN,EAAI,EACJuiC,EAAgD,aAAxC,OAAOh2B,EAAQjJ,qBACtBiJ,EAAQjJ,qBAAsB0Q,GAAO,GAAI,EACL,aAApC,OAAOzH,EAAQU,iBACdV,EAAQU,iBAAkB+G,GAAO,GAAI,EACrCrB,UAEH,GAAK,CAAC4vB,EACL,IAAMA,EAAQ,GAAIlb,EAAQ9a,EAAQ+gB,YAAc/gB,EACtB,OAAvBS,EAAOqa,EAAOrnB,IAChBA,CAAC,GAEI,CAACgU,GAAOxQ,EAAO6S,SAAUrJ,EAAMgH,CAAI,EACvCuuB,EAAM59B,KAAMqI,CAAK,EAEjBxJ,EAAO+jB,MAAOgb,EAAOD,EAAQt1B,EAAMgH,CAAI,CAAE,EAK5C,OAAOA,IAAQrB,WAAaqB,GAAOxQ,EAAO6S,SAAU9J,EAASyH,CAAI,EAChExQ,EAAO+jB,MAAO,CAAEhb,GAAWg2B,CAAM,EACjCA,CACF,CAIA,SAASC,GAAenb,EAAOob,GAG9B,IAFA,IAAIz1B,EACHhN,EAAI,EAC4B,OAAvBgN,EAAOqa,EAAOrnB,IAAeA,CAAC,GACvCwD,EAAOo7B,MACN5xB,EACA,aACA,CAACy1B,GAAej/B,EAAOo7B,MAAO6D,EAAaziC,GAAK,YAAa,CAC9D,CAEF,CA7CAgiC,EAAQU,SAAWV,EAAQC,OAE3BD,EAAQT,MAAQS,EAAQW,MAAQX,EAAQY,SAAWZ,EAAQa,QAAUb,EAAQvjB,MAC7EujB,EAAQljB,GAAKkjB,EAAQzgB,GA6CrB,IAAIuhB,GAAQ,YACXC,GAAS,UAEV,SAASC,GAAmBh2B,GACtB6zB,GAAez8B,KAAM4I,EAAKzM,IAAK,IACnCyM,EAAKi2B,eAAiBj2B,EAAK6mB,QAE7B,CAEA,SAASqP,GAAe7b,EAAO9a,EAAS1M,EAASsjC,EAAWC,GAW3D,IAVA,IAAIvkB,EAAG7R,EAAMkF,EACZuX,EAAKzV,EAAKutB,EAAO8B,EACjBnK,EAAI7R,EAAMtnB,OAGVujC,EAAOpC,GAAoB30B,CAAQ,EAEnCg3B,EAAQ,GACRvjC,EAAI,EAEGA,EAAIk5B,EAAGl5B,CAAC,GAGf,IAFAgN,EAAOqa,EAAOrnB,KAEQ,IAATgN,EAGZ,GAA6B,WAAxBxJ,EAAOjD,KAAMyM,CAAK,EACtBxJ,EAAO+jB,MAAOgc,EAAOv2B,EAAKub,SAAW,CAAEvb,GAASA,CAAK,OAG/C,GAAM81B,GAAM1+B,KAAM4I,CAAK,EAIvB,CAWN,IAVAyc,EAAMA,GAAO6Z,EAAK79B,YAAa8G,EAAQpH,cAAe,KAAM,CAAE,EAG9D6O,GAAQ8sB,GAAS/S,KAAM/gB,CAAK,GAAK,CAAE,GAAI,KAAQ,GAAIzD,YAAY,EAC/D85B,EAAOrB,EAAShuB,IAASguB,EAAQK,SAEjC5Y,EAAI1a,UAAYs0B,EAAM,GAAM7/B,EAAOggC,cAAex2B,CAAK,EAAIq2B,EAAM,GAGjExkB,EAAIwkB,EAAM,GACFxkB,CAAC,IACR4K,EAAMA,EAAIoJ,UASX,GALK,CAACpM,EAAQ6a,mBAAqBN,GAAmB58B,KAAM4I,CAAK,GAChEu2B,EAAM5+B,KAAM4H,EAAQk3B,eAAgBzC,GAAmBjT,KAAM/gB,CAAK,EAAG,EAAI,CAAE,EAIvE,CAACyZ,EAAQ8a,MAYb,IADA1iB,GARA7R,EAAe,UAARgH,GAAoB+uB,GAAO3+B,KAAM4I,CAAK,EAI9B,YAAdq2B,EAAM,IAAsBN,GAAO3+B,KAAM4I,CAAK,EAE7C,EADAyc,EAJDA,EAAI2H,aAOOpkB,EAAKsgB,WAAWvtB,OACpB8e,CAAC,IACHrb,EAAO6S,SAAYkrB,EAAQv0B,EAAKsgB,WAAYzO,GAAO,OAAQ,GAC/D,CAAC0iB,EAAMjU,WAAWvtB,QAElBiN,EAAKzI,YAAag9B,CAAM,EAW3B,IANA/9B,EAAO+jB,MAAOgc,EAAO9Z,EAAI6D,UAAW,EAGpC7D,EAAI0H,YAAc,GAGV1H,EAAI2H,YACX3H,EAAIllB,YAAaklB,EAAI2H,UAAW,EAIjC3H,EAAM6Z,EAAKzQ,SACZ,MAzDC0Q,EAAM5+B,KAAM4H,EAAQk3B,eAAgBz2B,CAAK,CAAE,EAyE9C,IAXKyc,GACJ6Z,EAAK/+B,YAAaklB,CAAI,EAKjBhD,EAAQmb,eACbp+B,EAAO0lB,KAAMoZ,EAAQiB,EAAO,OAAQ,EAAGP,EAAkB,EAG1DhjC,EAAI,EACMgN,EAAOu2B,EAAOvjC,CAAC,KAGxB,GAAKmjC,GAAiD,CAAC,EAArC3/B,EAAOwlB,QAAShc,EAAMm2B,CAAU,EAC5CC,GACJA,EAAQz+B,KAAMqI,CAAK,OAiBrB,GAXAkF,EAAW1O,EAAO0O,SAAUlF,EAAK8gB,cAAe9gB,CAAK,EAGrDyc,EAAM6Y,EAAQgB,EAAK79B,YAAauH,CAAK,EAAG,QAAS,EAG5CkF,GACJswB,GAAe/Y,CAAI,EAIf5pB,EAEJ,IADAgf,EAAI,EACM7R,EAAOyc,EAAK5K,CAAC,KACjBkiB,GAAY38B,KAAM4I,EAAKzM,MAAQ,EAAG,GACtCV,EAAQ8E,KAAMqI,CAAK,EAQvB,OAFAyc,EAAM,KAEC6Z,CACR,CAIC,IAAItjC,GAAGgM,GACNmU,GAAMrhB,EAASqG,cAAe,KAAM,EAGrC,IAAMnF,KAAK,CAAE00B,OAAQ,CAAA,EAAMpb,OAAQ,CAAA,EAAMoqB,QAAS,CAAA,CAAK,GAG9Cjd,EAASzmB,KAFjBgM,GAAY,KAAOhM,MAEiB6M,KAGnCsT,GAAIjZ,aAAc8E,GAAW,GAAI,EACjCya,EAASzmB,IAA8C,CAAA,IAAxCmgB,GAAIqL,WAAYxf,IAAYgc,SAS9C,IAAI2b,GAAa,+BAChBC,GAAY,OACZC,GAAc,iDACdC,GAAc,kCACdC,GAAiB,sBAElB,SAASC,KACR,MAAO,CAAA,CACR,CAEA,SAASC,IACR,MAAO,CAAA,CACR,CAIA,SAASC,KACR,IACC,OAAOplC,EAAS00B,aACC,CAAhB,MAAQ9hB,IACX,CAEA,SAAShO,GAAIsJ,EAAMm3B,EAAOr3B,EAAU5E,EAAMzE,EAAIoiB,GAC7C,IAAIue,EAAQ7jC,EAGZ,GAAsB,UAAjB,OAAO4jC,EAAqB,CAShC,IAAM5jC,IANmB,UAApB,OAAOuM,IAGX5E,EAAOA,GAAQ4E,EACfA,EAAW6F,WAEEwxB,EACbzgC,GAAIsJ,EAAMzM,EAAMuM,EAAU5E,EAAMi8B,EAAO5jC,GAAQslB,CAAI,EAEpD,OAAO7Y,CACR,CAqBA,GAnBa,MAAR9E,GAAsB,MAANzE,GAGpBA,EAAKqJ,EACL5E,EAAO4E,EAAW6F,WACD,MAANlP,IACc,UAApB,OAAOqJ,GAGXrJ,EAAKyE,EACLA,EAAOyK,YAIPlP,EAAKyE,EACLA,EAAO4E,EACPA,EAAW6F,YAGD,CAAA,IAAPlP,EACJA,EAAKwgC,OACC,GAAK,CAACxgC,EACZ,OAAOuJ,EAeR,OAZa,IAAR6Y,IACJue,EAAS3gC,GACTA,EAAK,SAAUtE,GAId,OADAqE,EAAO,EAAE2I,IAAKhN,CAAM,EACbilC,EAAOv/B,MAAOxF,KAAMoN,SAAU,CACtC,GAGG8c,KAAO6a,EAAO7a,OAAU6a,EAAO7a,KAAO/lB,EAAO+lB,IAAI,KAE9Cvc,EAAKrJ,KAAM,WACjBH,EAAOrE,MAAMk6B,IAAKh6B,KAAM8kC,EAAO1gC,EAAIyE,EAAM4E,CAAS,CACnD,CAAE,CACH,CAMAtJ,EAAOrE,MAAQ,CAEd6mB,OAAQ,GAERqT,IAAK,SAAUrsB,EAAMm3B,EAAOxV,EAASzmB,EAAM4E,GAC1C,IAASjB,EAAQw4B,EAAGC,EACnBC,EAASC,EACTC,EAAUlkC,EAAMmkC,EAAYC,EAC5BC,EAAWphC,EAAOo7B,MAAO5xB,CAAK,EAG/B,GAAM43B,EAuCN,IAlCKjW,EAAQA,UAEZA,GADA2V,EAAc3V,GACQA,QACtB7hB,EAAWw3B,EAAYx3B,UAIlB6hB,EAAQpF,OACboF,EAAQpF,KAAO/lB,EAAO+lB,IAAI,IAInB1d,GAAAA,EAAS+4B,EAAS/4B,UAChB+4B,EAAS/4B,OAAS,KAEpB24B,EAAcI,EAASC,WAC9BL,EAAcI,EAASC,OAAS,SAAU7gC,GAIzC,OAAyB,KAAA,IAAXR,GACVQ,GAAKR,EAAOrE,MAAM2lC,YAAc9gC,EAAEzD,KAErCoS,UADAnP,EAAOrE,MAAM4lC,SAASlgC,MAAO2/B,EAAYx3B,KAAMP,SAAU,CAE3D,GAIYO,KAAOA,GAKpBq3B,GADAF,GAAUA,GAAS,IAAKp/B,MAAOg1B,CAAU,GAAK,CAAE,KACtCh6B,OACFskC,CAAC,IAER9jC,EAAOokC,GADPlb,EAAMsa,GAAehW,KAAMoW,EAAOE,EAAI,GAAK,IACpB,GACvBK,GAAejb,EAAK,IAAO,IAAKphB,MAAO,GAAI,EAAEwC,KAAK,EAG5CtK,IAKNgkC,EAAU/gC,EAAOrE,MAAMolC,QAAShkC,IAAU,GAG1CA,GAASuM,EAAWy3B,EAAQS,aAAeT,EAAQU,WAAc1kC,EAGjEgkC,EAAU/gC,EAAOrE,MAAMolC,QAAShkC,IAAU,GAG1C2kC,EAAY1hC,EAAOuE,OAAQ,CAC1BxH,KAAMA,EACNokC,SAAUA,EACVz8B,KAAMA,EACNymB,QAASA,EACTpF,KAAMoF,EAAQpF,KACdzc,SAAUA,EACV0f,aAAc1f,GAAYtJ,EAAOotB,KAAK7rB,MAAMynB,aAAapoB,KAAM0I,CAAS,EACxEq4B,UAAWT,EAAW3zB,KAAM,GAAI,CACjC,EAAGuzB,CAAY,GAGPG,EAAW54B,EAAQtL,OAC1BkkC,EAAW54B,EAAQtL,GAAS,IACnB6kC,cAAgB,EAGnBb,EAAQc,OACiD,CAAA,IAA9Dd,EAAQc,MAAM56B,KAAMuC,EAAM9E,EAAMw8B,EAAYF,CAAY,KAGnDx3B,EAAKpH,iBACToH,EAAKpH,iBAAkBrF,EAAMikC,EAAa,CAAA,CAAM,EAErCx3B,EAAKtH,aAChBsH,EAAKtH,YAAa,KAAOnF,EAAMikC,CAAY,GAKzCD,EAAQlL,MACZkL,EAAQlL,IAAI5uB,KAAMuC,EAAMk4B,CAAU,EAE5BA,EAAUvW,QAAQpF,OACvB2b,EAAUvW,QAAQpF,KAAOoF,EAAQpF,OAK9Bzc,EACJ23B,EAAS5gC,OAAQ4gC,EAASW,aAAa,GAAI,EAAGF,CAAU,EAExDT,EAAS9/B,KAAMugC,CAAU,EAI1B1hC,EAAOrE,MAAM6mB,OAAQzlB,GAAS,CAAA,EAKhC,EAGAyI,OAAQ,SAAUgE,EAAMm3B,EAAOxV,EAAS7hB,EAAUw4B,GACjD,IAAIzmB,EAAGqmB,EAAWzb,EACjB8b,EAAWlB,EAAGx4B,EACd04B,EAASE,EAAUlkC,EACnBmkC,EAAYC,EACZC,EAAWphC,EAAOk7B,QAAS1xB,CAAK,GAAKxJ,EAAOo7B,MAAO5xB,CAAK,EAEzD,GAAM43B,IAAe/4B,EAAS+4B,EAAS/4B,QAAvC,CAOA,IADAw4B,GADAF,GAAUA,GAAS,IAAKp/B,MAAOg1B,CAAU,GAAK,CAAE,KACtCh6B,OACFskC,CAAC,IAMR,GAJA9jC,EAAOokC,GADPlb,EAAMsa,GAAehW,KAAMoW,EAAOE,EAAI,GAAK,IACpB,GACvBK,GAAejb,EAAK,IAAO,IAAKphB,MAAO,GAAI,EAAEwC,KAAK,EAG5CtK,EAAN,CAeA,IARAgkC,EAAU/gC,EAAOrE,MAAMolC,QAAShkC,IAAU,GAE1CkkC,EAAW54B,EADXtL,GAASuM,EAAWy3B,EAAQS,aAAeT,EAAQU,WAAc1kC,IACpC,GAC7BkpB,EAAMA,EAAK,IACV,IAAI9f,OAAQ,UAAY+6B,EAAW3zB,KAAM,eAAgB,EAAI,SAAU,EAGxEw0B,EAAY1mB,EAAI4lB,EAAS1kC,OACjB8e,CAAC,IACRqmB,EAAYT,EAAU5lB,GAEfymB,CAAAA,GAAeX,IAAaO,EAAUP,UACzChW,GAAWA,EAAQpF,OAAS2b,EAAU3b,MACtCE,GAAOA,CAAAA,EAAIrlB,KAAM8gC,EAAUC,SAAU,GACrCr4B,GAAYA,IAAao4B,EAAUp4B,WACxB,OAAbA,GAAqBo4B,CAAAA,EAAUp4B,YAChC23B,EAAS5gC,OAAQgb,EAAG,CAAE,EAEjBqmB,EAAUp4B,UACd23B,EAASW,aAAa,GAElBb,EAAQv7B,QACZu7B,EAAQv7B,OAAOyB,KAAMuC,EAAMk4B,CAAU,GAOnCK,GAAa,CAACd,EAAS1kC,SACrBwkC,EAAQiB,UACkD,CAAA,IAA/DjB,EAAQiB,SAAS/6B,KAAMuC,EAAM03B,EAAYE,EAASC,MAAO,GAEzDrhC,EAAOiiC,YAAaz4B,EAAMzM,EAAMqkC,EAASC,MAAO,EAGjD,OAAOh5B,EAAQtL,GAtChB,MAJC,IAAMA,KAAQsL,EACbrI,EAAOrE,MAAM6J,OAAQgE,EAAMzM,EAAO4jC,EAAOE,GAAK1V,EAAS7hB,EAAU,CAAA,CAAK,EA8CpEtJ,EAAO8kB,cAAezc,CAAO,IACjC,OAAO+4B,EAASC,OAIhBrhC,EAAOq7B,YAAa7xB,EAAM,QAAS,EAhEpC,CAkED,EAEA4L,QAAS,SAAUzZ,EAAO+I,EAAM8E,EAAM04B,GACrC,IAAIb,EAAQc,EACXC,EAAYrB,EAAS9a,EAAKzpB,EAC1B6lC,EAAY,CAAE74B,GAAQlO,GACtByB,EAAOgmB,EAAO9b,KAAMtL,EAAO,MAAO,EAAIA,EAAMoB,KAAOpB,EACnDulC,EAAane,EAAO9b,KAAMtL,EAAO,WAAY,EAAIA,EAAMgmC,UAAU98B,MAAO,GAAI,EAAI,GAEjFymB,EAAMrF,EAAMzc,EAAOA,GAAQlO,EAG3B,GAAuB,IAAlBkO,EAAKub,UAAoC,IAAlBvb,EAAKub,UAK5Bub,CAAAA,GAAY1/B,KAAM7D,EAAOiD,EAAOrE,MAAM2lC,SAAU,IAI1B,CAAC,EAAvBvkC,EAAKoF,QAAS,GAAI,IAItBpF,GADAmkC,EAAankC,EAAK8H,MAAO,GAAI,GACXimB,MAAM,EACxBoW,EAAW75B,KAAK,GAEjB86B,EAASplC,EAAKoF,QAAS,GAAI,EAAI,GAAK,KAAOpF,GAG3CpB,EAAQA,EAAOqE,EAAOwkB,SACrB7oB,EACA,IAAIqE,EAAOsiC,MAAOvlC,EAAuB,UAAjB,OAAOpB,GAAsBA,CAAM,GAGtD4mC,UAAYL,EAAe,EAAI,EACrCvmC,EAAMgmC,UAAYT,EAAW3zB,KAAM,GAAI,EACvC5R,EAAM6mC,WAAa7mC,EAAMgmC,UACxB,IAAIx7B,OAAQ,UAAY+6B,EAAW3zB,KAAM,eAAgB,EAAI,SAAU,EACvE,KAGD5R,EAAMyK,OAAS+I,UACTxT,EAAMsO,SACXtO,EAAMsO,OAAST,GAIhB9E,EAAe,MAARA,EACN,CAAE/I,GACFqE,EAAOslB,UAAW5gB,EAAM,CAAE/I,EAAQ,EAGnColC,EAAU/gC,EAAOrE,MAAMolC,QAAShkC,IAAU,GACpCmlC,GAAgBnB,CAAAA,EAAQ3rB,SAAmD,CAAA,IAAxC2rB,EAAQ3rB,QAAQ/T,MAAOmI,EAAM9E,CAAK,GAA3E,CAMA,GAAK,CAACw9B,GAAgB,CAACnB,EAAQ0B,UAAY,CAACziC,EAAOyjB,SAAUja,CAAK,EAAI,CAMrE,IAJA44B,EAAarB,EAAQS,cAAgBzkC,EAC/BujC,GAAY1/B,KAAMwhC,EAAarlC,CAAK,IACzCuuB,EAAMA,EAAI5b,YAEH4b,EAAKA,EAAMA,EAAI5b,WACtB2yB,EAAUlhC,KAAMmqB,CAAI,EACpBrF,EAAMqF,EAIFrF,KAAUzc,EAAK8gB,eAAiBhvB,IACpC+mC,EAAUlhC,KAAM8kB,EAAI6F,aAAe7F,EAAIyc,cAAgBr5B,CAAO,CAEhE,CAIA,IADA7M,EAAI,GACM8uB,EAAM+W,EAAW7lC,CAAC,MAAU,CAACb,EAAMgnC,qBAAqB,GAEjEhnC,EAAMoB,KAAW,EAAJP,EACZ4lC,EACArB,EAAQU,UAAY1kC,GAGrBskC,GAAWrhC,EAAOo7B,MAAO9P,EAAK,QAAS,GAAK,IAAM3vB,EAAMoB,OACvDiD,EAAOo7B,MAAO9P,EAAK,QAAS,IAG5B+V,EAAOhgC,MAAOiqB,EAAK5mB,CAAK,GAIzB28B,EAASc,GAAU7W,EAAK6W,KACTd,EAAOhgC,OAAS24B,EAAY1O,CAAI,IAC9C3vB,EAAMyK,OAASi7B,EAAOhgC,MAAOiqB,EAAK5mB,CAAK,EACjB,CAAA,IAAjB/I,EAAMyK,SACVzK,EAAMwmB,eAAe,EAOxB,GAHAxmB,EAAMoB,KAAOA,EAGR,CAACmlC,GAAgB,CAACvmC,EAAMinC,mBAAmB,IAG5C,CAAC7B,EAAQlC,UAC0C,CAAA,IAApDkC,EAAQlC,SAASx9B,MAAOghC,EAAU1a,IAAI,EAAGjjB,CAAK,IAC1Cs1B,EAAYxwB,CAAK,GAMjB24B,GAAU34B,EAAMzM,IAAU,CAACiD,EAAOyjB,SAAUja,CAAK,EAAI,EAGzDyc,EAAMzc,EAAM24B,MAGX34B,EAAM24B,GAAW,MAIlBniC,EAAOrE,MAAM2lC,UAAYvkC,EACzB,IACCyM,EAAMzM,GAAO,CAKd,CAJE,MAAQyD,IAKVR,EAAOrE,MAAM2lC,UAAYnyB,UAEpB8W,IACJzc,EAAM24B,GAAWlc,EAEnB,CAIF,OAAOtqB,EAAMyK,MAvFb,CAwFD,EAEAm7B,SAAU,SAAU5lC,GAGnBA,EAAQqE,EAAOrE,MAAMknC,IAAKlnC,CAAM,EAEhC,IAAIa,EAAG6e,EAAQ3N,EAASg0B,EACvBoB,EACA95B,EAAO5H,EAAM6F,KAAMgC,SAAU,EAC7Bg4B,GAAajhC,EAAOo7B,MAAOv/B,KAAM,QAAS,GAAK,IAAMF,EAAMoB,OAAU,GACrEgkC,EAAU/gC,EAAOrE,MAAMolC,QAASplC,EAAMoB,OAAU,GAOjD,IAJAiM,EAAM,GAAMrN,GACNonC,eAAiBlnC,KAGlBklC,CAAAA,EAAQiC,aAA2D,CAAA,IAA5CjC,EAAQiC,YAAY/7B,KAAMpL,KAAMF,CAAM,EAAlE,CASA,IAJAmnC,EAAe9iC,EAAOrE,MAAMslC,SAASh6B,KAAMpL,KAAMF,EAAOslC,CAAS,EAGjEzkC,EAAI,GACMkR,EAAUo1B,EAActmC,CAAC,MAAU,CAACb,EAAMgnC,qBAAqB,GAIxE,IAHAhnC,EAAMkF,cAAgB6M,EAAQlE,KAE9B6R,EAAI,GACMqmB,EAAYh0B,EAAQuzB,SAAU5lB,CAAC,MACxC,CAAC1f,EAAMsnC,8BAA8B,GAI/BtnC,EAAM6mC,YAAc7mC,CAAAA,EAAM6mC,WAAW5hC,KAAM8gC,EAAUC,SAAU,IAEpEhmC,EAAM+lC,UAAYA,EAClB/lC,EAAM+I,KAAOg9B,EAAUh9B,MAEvBof,IAAU9jB,EAAOrE,MAAMolC,QAASW,EAAUP,WAAc,IAAKE,QAC5DK,EAAUvW,SAAU9pB,MAAOqM,EAAQlE,KAAMR,CAAK,KAElCmG,WACoB,CAAA,KAAzBxT,EAAMyK,OAAS0d,KACrBnoB,EAAMwmB,eAAe,EACrBxmB,EAAMuM,gBAAgB,IAY3B,OAJK64B,EAAQmC,cACZnC,EAAQmC,aAAaj8B,KAAMpL,KAAMF,CAAM,EAGjCA,EAAMyK,MAvCb,CAwCD,EAEA66B,SAAU,SAAUtlC,EAAOslC,GAC1B,IAAIzkC,EAAGopB,EAASud,EAAKzB,EACpBoB,EAAe,GACflB,EAAgBX,EAASW,cACzBtW,EAAM3vB,EAAMsO,OAQb,GAAK23B,GAAiBtW,EAAIvG,WACR,UAAfppB,EAAMoB,MAAoB8K,MAAOlM,EAAM80B,MAAO,GAAK90B,EAAM80B,OAAS,GAGpE,KAAQnF,GAAOzvB,KAAMyvB,EAAMA,EAAI5b,YAAc7T,KAK5C,GAAsB,IAAjByvB,EAAIvG,WAAqC,CAAA,IAAjBuG,EAAI8E,UAAoC,UAAfz0B,EAAMoB,MAAqB,CAEhF,IADA6oB,EAAU,GACJppB,EAAI,EAAGA,EAAIolC,EAAeplC,CAAC,GAM3BopB,EAFLud,GAHAzB,EAAYT,EAAUzkC,IAGN8M,SAAW,OAEH6F,YACvByW,EAASud,GAAQzB,EAAU1Y,aACS,CAAC,EAApChpB,EAAQmjC,EAAKtnC,IAAK,EAAEuE,MAAOkrB,CAAI,EAC/BtrB,EAAOyL,KAAM03B,EAAKtnC,KAAM,KAAM,CAAEyvB,EAAM,EAAE/uB,QAErCqpB,EAASud,IACbvd,EAAQzkB,KAAMugC,CAAU,EAGrB9b,EAAQrpB,QACZumC,EAAa3hC,KAAM,CAAEqI,KAAM8hB,EAAK2V,SAAUrb,CAAQ,CAAE,CAEtD,CASF,OAJKgc,EAAgBX,EAAS1kC,QAC7BumC,EAAa3hC,KAAM,CAAEqI,KAAM3N,KAAMolC,SAAUA,EAAS7/B,MAAOwgC,CAAc,CAAE,CAAE,EAGvEkB,CACR,EAEAD,IAAK,SAAUlnC,GACd,GAAKA,EAAOqE,EAAOwkB,SAClB,OAAO7oB,EAIR,IAAIa,EAAG6/B,EAAMjY,EACZrnB,EAAOpB,EAAMoB,KACbqmC,EAAgBznC,EAChB0nC,EAAUxnC,KAAKynC,SAAUvmC,GAa1B,IAXMsmC,IACLxnC,KAAKynC,SAAUvmC,GAASsmC,EACvBhD,GAAYz/B,KAAM7D,CAAK,EAAIlB,KAAK0nC,WAChCnD,GAAUx/B,KAAM7D,CAAK,EAAIlB,KAAK2nC,SAC9B,IAEFpf,EAAOif,EAAQI,MAAQ5nC,KAAK4nC,MAAMnhB,OAAQ+gB,EAAQI,KAAM,EAAI5nC,KAAK4nC,MAEjE9nC,EAAQ,IAAIqE,EAAOsiC,MAAOc,CAAc,EAExC5mC,EAAI4nB,EAAK7nB,OACDC,CAAC,IAERb,EADA0gC,EAAOjY,EAAM5nB,IACG4mC,EAAe/G,GAmBhC,OAdM1gC,EAAMsO,SACXtO,EAAMsO,OAASm5B,EAActiC,YAAcxF,GAKb,IAA1BK,EAAMsO,OAAO8a,WACjBppB,EAAMsO,OAAStO,EAAMsO,OAAOyF,YAK7B/T,EAAM+nC,QAAU,CAAC,CAAC/nC,EAAM+nC,QAEjBL,EAAQ96B,OAAS86B,EAAQ96B,OAAQ5M,EAAOynC,CAAc,EAAIznC,CAClE,EAGA8nC,MAAO,+HACyD5+B,MAAO,GAAI,EAE3Ey+B,SAAU,GAEVE,SAAU,CACTC,MAAO,4BAA4B5+B,MAAO,GAAI,EAC9C0D,OAAQ,SAAU5M,EAAOgoC,GAOxB,OAJoB,MAAfhoC,EAAMioC,QACVjoC,EAAMioC,MAA6B,MAArBD,EAASE,SAAmBF,EAASE,SAAWF,EAAS7wB,SAGjEnX,CACR,CACD,EAEA4nC,WAAY,CACXE,MAAO,mGACoC5+B,MAAO,GAAI,EACtD0D,OAAQ,SAAU5M,EAAOgoC,GACxB,IAAUG,EAAUzoC,EACnBo1B,EAASkT,EAASlT,OAClBsT,EAAcJ,EAASI,YA6BxB,OA1BoB,MAAfpoC,EAAMqoC,OAAqC,MAApBL,EAASt3B,UAEpChR,GADAyoC,EAAWnoC,EAAMsO,OAAOqgB,eAAiBhvB,GAC1BuP,gBACfH,EAAOo5B,EAASp5B,KAEhB/O,EAAMqoC,MAAQL,EAASt3B,SACpBhR,GAAOA,EAAI4oC,YAAcv5B,GAAQA,EAAKu5B,YAAc,IACpD5oC,GAAOA,EAAI6oC,YAAcx5B,GAAQA,EAAKw5B,YAAc,GACvDvoC,EAAMwoC,MAAQR,EAASr3B,SACpBjR,GAAOA,EAAI+kB,WAAc1V,GAAQA,EAAK0V,WAAc,IACpD/kB,GAAOA,EAAI+oC,WAAc15B,GAAQA,EAAK05B,WAAc,IAInD,CAACzoC,EAAM0oC,eAAiBN,IAC5BpoC,EAAM0oC,cAAgBN,IAAgBpoC,EAAMsO,OAC3C05B,EAASW,UACTP,GAKIpoC,EAAMioC,OAASnT,IAAWthB,YAC/BxT,EAAMioC,MAAmB,EAATnT,EAAa,EAAe,EAATA,EAAa,EAAe,EAATA,EAAa,EAAI,GAGjE90B,CACR,CACD,EAEAolC,QAAS,CACRhuB,KAAM,CAGL0vB,SAAU,CAAA,CACX,EACA1S,MAAO,CAGN3a,QAAS,WACR,GAAKvZ,OAAS6kC,GAAkB,GAAK7kC,KAAKk0B,MACzC,IAEC,OADAl0B,KAAKk0B,MAAM,EACJ,CAAA,CAMR,CALE,MAAQvvB,IAOZ,EACAghC,aAAc,SACf,EACA+C,KAAM,CACLnvB,QAAS,WACR,GAAKvZ,OAAS6kC,GAAkB,GAAK7kC,KAAK0oC,KAEzC,OADA1oC,KAAK0oC,KAAK,EACH,CAAA,CAET,EACA/C,aAAc,UACf,EACArlB,MAAO,CAGN/G,QAAS,WACR,GAAKpV,EAAO6S,SAAUhX,KAAM,OAAQ,GAAmB,aAAdA,KAAKkB,MAAuBlB,KAAKsgB,MAEzE,OADAtgB,KAAKsgB,MAAM,EACJ,CAAA,CAET,EAGA0iB,SAAU,SAAUljC,GACnB,OAAOqE,EAAO6S,SAAUlX,EAAMsO,OAAQ,GAAI,CAC3C,CACD,EAEAu6B,aAAc,CACbtB,aAAc,SAAUvnC,GAIlBA,EAAMyK,SAAW+I,WAAaxT,EAAMynC,gBACxCznC,EAAMynC,cAAcqB,YAAc9oC,EAAMyK,OAE1C,CACD,CACD,EAGAs+B,SAAU,SAAU3nC,EAAMyM,EAAM7N,GAC3B6E,EAAIR,EAAOuE,OACd,IAAIvE,EAAOsiC,MACX3mC,EACA,CACCoB,KAAMA,EACN4nC,YAAa,CAAA,CAUd,CACD,EAEA3kC,EAAOrE,MAAMyZ,QAAS5U,EAAG,KAAMgJ,CAAK,EAE/BhJ,EAAEoiC,mBAAmB,GACzBjnC,EAAMwmB,eAAe,CAEvB,CACD,EAEAniB,EAAOiiC,YAAc3mC,EAASsU,oBAC7B,SAAUpG,EAAMzM,EAAMskC,GAGhB73B,EAAKoG,qBACTpG,EAAKoG,oBAAqB7S,EAAMskC,CAAO,CAEzC,EACA,SAAU73B,EAAMzM,EAAMskC,GACjB7+B,EAAO,KAAOzF,EAEbyM,EAAKmG,cAKoB,aAAxB,OAAOnG,EAAMhH,KACjBgH,EAAMhH,GAAS,MAGhBgH,EAAKmG,YAAanN,EAAM6+B,CAAO,EAEjC,EAEDrhC,EAAOsiC,MAAQ,SAAUnmC,EAAKsnC,GAG7B,GAAK,EAAG5nC,gBAAgBmE,EAAOsiC,OAC9B,OAAO,IAAItiC,EAAOsiC,MAAOnmC,EAAKsnC,CAAM,EAIhCtnC,GAAOA,EAAIY,MACflB,KAAKunC,cAAgBjnC,EACrBN,KAAKkB,KAAOZ,EAAIY,KAIhBlB,KAAK+mC,mBAAqBzmC,EAAIyoC,kBAC5BzoC,EAAIyoC,mBAAqBz1B,WAGL,CAAA,IAApBhT,EAAIsoC,YACLjE,GACAC,GAID5kC,KAAKkB,KAAOZ,EAIRsnC,GACJzjC,EAAOuE,OAAQ1I,KAAM4nC,CAAM,EAI5B5nC,KAAKgpC,UAAY1oC,GAAOA,EAAI0oC,WAAa7kC,EAAO4W,IAAI,EAGpD/a,KAAMmE,EAAOwkB,SAAY,CAAA,CAC1B,EAIAxkB,EAAOsiC,MAAMzjC,UAAY,CACxBkL,YAAa/J,EAAOsiC,MACpBM,mBAAoBnC,EACpBkC,qBAAsBlC,EACtBwC,8BAA+BxC,EAE/Bte,eAAgB,WACf,IAAI3hB,EAAI3E,KAAKunC,cAEbvnC,KAAK+mC,mBAAqBpC,GACpBhgC,IAKDA,EAAE2hB,eACN3hB,EAAE2hB,eAAe,EAKjB3hB,EAAEikC,YAAc,CAAA,EAElB,EACAv8B,gBAAiB,WAChB,IAAI1H,EAAI3E,KAAKunC,cAEbvnC,KAAK8mC,qBAAuBnC,GAEtBhgC,GAAK3E,CAAAA,KAAK8oC,cAKXnkC,EAAE0H,iBACN1H,EAAE0H,gBAAgB,EAKnB1H,EAAE2H,aAAe,CAAA,EAClB,EACA28B,yBAA0B,WACzB,IAAItkC,EAAI3E,KAAKunC,cAEbvnC,KAAKonC,8BAAgCzC,GAEhChgC,GAAKA,EAAEskC,0BACXtkC,EAAEskC,yBAAyB,EAG5BjpC,KAAKqM,gBAAgB,CACtB,CACD,EAUAlI,EAAOG,KAAM,CACZ4kC,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,YACf,EAAG,SAAUC,EAAMtC,GAClB7iC,EAAOrE,MAAMolC,QAASoE,GAAS,CAC9B3D,aAAcqB,EACdpB,SAAUoB,EAEVxB,OAAQ,SAAU1lC,GACjB,IAAImoB,EAEHshB,EAAUzpC,EAAM0oC,cAChB3C,EAAY/lC,EAAM+lC,UASnB,OALM0D,IAAaA,IANTvpC,MAMgCmE,EAAO0O,SANvC7S,KAMyDupC,CAAQ,KAC1EzpC,EAAMoB,KAAO2kC,EAAUP,SACvBrd,EAAM4d,EAAUvW,QAAQ9pB,MAAOxF,KAAMoN,SAAU,EAC/CtN,EAAMoB,KAAO8lC,GAEP/e,CACR,CACD,CACD,CAAE,EAGIb,EAAQiO,SAEblxB,EAAOrE,MAAMolC,QAAQ7P,OAAS,CAC7B2Q,MAAO,WAGN,GAAK7hC,EAAO6S,SAAUhX,KAAM,MAAO,EAClC,MAAO,CAAA,EAIRmE,EAAOrE,MAAMk6B,IAAKh6B,KAAM,iCAAkC,SAAU2E,GAG/DgJ,EAAOhJ,EAAEyJ,OACZvM,EAAOsC,EAAO6S,SAAUrJ,EAAM,OAAQ,GAAKxJ,EAAO6S,SAAUrJ,EAAM,QAAS,EAM1ExJ,EAAOq8B,KAAM7yB,EAAM,MAAO,EAC1B2F,UAEGzR,GAAQ,CAACsC,EAAOo7B,MAAO19B,EAAM,QAAS,IAC1CsC,EAAOrE,MAAMk6B,IAAKn4B,EAAM,iBAAkB,SAAU/B,GACnDA,EAAM0pC,cAAgB,CAAA,CACvB,CAAE,EACFrlC,EAAOo7B,MAAO19B,EAAM,SAAU,CAAA,CAAK,EAErC,CAAE,CAGH,EAEAwlC,aAAc,SAAUvnC,GAGlBA,EAAM0pC,gBACV,OAAO1pC,EAAM0pC,cACRxpC,KAAK6T,aAAc,CAAC/T,EAAM4mC,WAC9BviC,EAAOrE,MAAM+oC,SAAU,SAAU7oC,KAAK6T,WAAY/T,CAAM,CAG3D,EAEAqmC,SAAU,WAGT,GAAKhiC,EAAO6S,SAAUhX,KAAM,MAAO,EAClC,MAAO,CAAA,EAIRmE,EAAOrE,MAAM6J,OAAQ3J,KAAM,UAAW,CACvC,CACD,GAIKonB,EAAQnN,SAEb9V,EAAOrE,MAAMolC,QAAQjrB,OAAS,CAE7B+rB,MAAO,WAEN,GAAK1B,GAAWv/B,KAAM/E,KAAKgX,QAAS,EAoBnC,MAfmB,aAAdhX,KAAKkB,MAAqC,UAAdlB,KAAKkB,OACrCiD,EAAOrE,MAAMk6B,IAAKh6B,KAAM,yBAA0B,SAAUF,GACjB,YAArCA,EAAMynC,cAAckC,eACxBzpC,KAAK0pC,aAAe,CAAA,EAEtB,CAAE,EACFvlC,EAAOrE,MAAMk6B,IAAKh6B,KAAM,gBAAiB,SAAUF,GAC7CE,KAAK0pC,cAAgB,CAAC5pC,EAAM4mC,YAChC1mC,KAAK0pC,aAAe,CAAA,GAIrBvlC,EAAOrE,MAAM+oC,SAAU,SAAU7oC,KAAMF,CAAM,CAC9C,CAAE,GAEI,CAAA,EAIRqE,EAAOrE,MAAMk6B,IAAKh6B,KAAM,yBAA0B,SAAU2E,GACvDgJ,EAAOhJ,EAAEyJ,OAERk2B,GAAWv/B,KAAM4I,EAAKqJ,QAAS,GAAK,CAAC7S,EAAOo7B,MAAO5xB,EAAM,QAAS,IACtExJ,EAAOrE,MAAMk6B,IAAKrsB,EAAM,iBAAkB,SAAU7N,GAC9CE,CAAAA,KAAK6T,YAAe/T,EAAMgpC,aAAgBhpC,EAAM4mC,WACpDviC,EAAOrE,MAAM+oC,SAAU,SAAU7oC,KAAK6T,WAAY/T,CAAM,CAE1D,CAAE,EACFqE,EAAOo7B,MAAO5xB,EAAM,SAAU,CAAA,CAAK,EAErC,CAAE,CACH,EAEA63B,OAAQ,SAAU1lC,GACjB,IAAI6N,EAAO7N,EAAMsO,OAGjB,GAAKpO,OAAS2N,GAAQ7N,EAAMgpC,aAAehpC,EAAM4mC,WAChC,UAAd/4B,EAAKzM,MAAkC,aAAdyM,EAAKzM,KAEhC,OAAOpB,EAAM+lC,UAAUvW,QAAQ9pB,MAAOxF,KAAMoN,SAAU,CAExD,EAEA+4B,SAAU,WAGT,OAFAhiC,EAAOrE,MAAM6J,OAAQ3J,KAAM,UAAW,EAE/B,CAACskC,GAAWv/B,KAAM/E,KAAKgX,QAAS,CACxC,CACD,GAWKoQ,EAAQid,SACblgC,EAAOG,KAAM,CAAE4vB,MAAO,UAAWwU,KAAM,UAAW,EAAG,SAAUY,EAAMtC,GAGpE,IAAI1X,EAAU,SAAUxvB,GACvBqE,EAAOrE,MAAM+oC,SAAU7B,EAAKlnC,EAAMsO,OAAQjK,EAAOrE,MAAMknC,IAAKlnC,CAAM,CAAE,CACrE,EAEAqE,EAAOrE,MAAMolC,QAAS8B,GAAQ,CAC7BhB,MAAO,WACN,IAAIxmC,EAAMQ,KAAKyuB,eAAiBzuB,KAC/B2pC,EAAWxlC,EAAOo7B,MAAO//B,EAAKwnC,CAAI,EAE7B2C,GACLnqC,EAAI+G,iBAAkB+iC,EAAMha,EAAS,CAAA,CAAK,EAE3CnrB,EAAOo7B,MAAO//B,EAAKwnC,GAAO2C,GAAY,GAAM,CAAE,CAC/C,EACAxD,SAAU,WACT,IAAI3mC,EAAMQ,KAAKyuB,eAAiBzuB,KAC/B2pC,EAAWxlC,EAAOo7B,MAAO//B,EAAKwnC,CAAI,EAAI,EAEjC2C,EAILxlC,EAAOo7B,MAAO//B,EAAKwnC,EAAK2C,CAAS,GAHjCnqC,EAAIuU,oBAAqBu1B,EAAMha,EAAS,CAAA,CAAK,EAC7CnrB,EAAOq7B,YAAahgC,EAAKwnC,CAAI,EAI/B,CACD,CACD,CAAE,EAGH7iC,EAAOC,GAAGsE,OAAQ,CAEjBrE,GAAI,SAAUygC,EAAOr3B,EAAU5E,EAAMzE,GACpC,OAAOC,GAAIrE,KAAM8kC,EAAOr3B,EAAU5E,EAAMzE,CAAG,CAC5C,EACAoiB,IAAK,SAAUse,EAAOr3B,EAAU5E,EAAMzE,GACrC,OAAOC,GAAIrE,KAAM8kC,EAAOr3B,EAAU5E,EAAMzE,EAAI,CAAE,CAC/C,EACA0I,IAAK,SAAUg4B,EAAOr3B,EAAUrJ,GAC/B,IAAIyhC,EAAW3kC,EACf,GAAK4jC,GAASA,EAAMxe,gBAAkBwe,EAAMe,UAG3CA,EAAYf,EAAMe,UAClB1hC,EAAQ2gC,EAAMoC,cAAe,EAAEp6B,IAC9B+4B,EAAUC,UACTD,EAAUP,SAAW,IAAMO,EAAUC,UACrCD,EAAUP,SACXO,EAAUp4B,SACVo4B,EAAUvW,OACX,MAVD,CAaA,GAAsB,UAAjB,OAAOwV,EAiBZ,MATkB,CAAA,IAAbr3B,GAA0C,YAApB,OAAOA,IAGjCrJ,EAAKqJ,EACLA,EAAW6F,WAEA,CAAA,IAAPlP,IACJA,EAAKwgC,GAEC5kC,KAAKsE,KAAM,WACjBH,EAAOrE,MAAM6J,OAAQ3J,KAAM8kC,EAAO1gC,EAAIqJ,CAAS,CAChD,CAAE,EAhBD,IAAMvM,KAAQ4jC,EACb9kC,KAAK8M,IAAK5L,EAAMuM,EAAUq3B,EAAO5jC,EAAO,CAL1C,CAOC,OAAOlB,IAcT,EAEAuZ,QAAS,SAAUrY,EAAM2H,GACxB,OAAO7I,KAAKsE,KAAM,WACjBH,EAAOrE,MAAMyZ,QAASrY,EAAM2H,EAAM7I,IAAK,CACxC,CAAE,CACH,EACA09B,eAAgB,SAAUx8B,EAAM2H,GAC/B,IAAI8E,EAAO3N,KAAM,GACjB,GAAK2N,EACJ,OAAOxJ,EAAOrE,MAAMyZ,QAASrY,EAAM2H,EAAM8E,EAAM,CAAA,CAAK,CAEtD,CACD,CAAE,EAGF,IAAIi8B,GAAgB,6BACnBC,GAAe,IAAIv/B,OAAQ,OAASs3B,GAAY,WAAY,GAAI,EAChEkI,GAAY,2EAKZC,GAAe,wBAGfC,GAAW,oCACXC,GAAoB,cACpBC,GAAe,2CAEfC,GADetI,GAAoBpiC,CAAS,EACjB2G,YAAa3G,EAASqG,cAAe,KAAM,CAAE,EAIzE,SAASskC,GAAoBz8B,EAAMiK,GAClC,OAAOzT,EAAO6S,SAAUrJ,EAAM,OAAQ,GACrCxJ,EAAO6S,SAA+B,KAArBY,EAAQsR,SAAkBtR,EAAUA,EAAQma,WAAY,IAAK,EAE9EpkB,EAAK1J,qBAAsB,OAAQ,EAAG,IACrC0J,EAAKvH,YAAauH,EAAK8gB,cAAc3oB,cAAe,OAAQ,CAAE,EAC/D6H,CACF,CAGA,SAAS08B,GAAe18B,GAEvB,OADAA,EAAKzM,MAA8C,OAArCiD,EAAOyL,KAAKjB,KAAMhB,EAAM,MAAO,GAAe,IAAMA,EAAKzM,KAChEyM,CACR,CACA,SAAS28B,GAAe38B,GACvB,IAAIjI,EAAQukC,GAAkBvb,KAAM/gB,EAAKzM,IAAK,EAM9C,OALKwE,EACJiI,EAAKzM,KAAOwE,EAAO,GAEnBiI,EAAKhG,gBAAiB,MAAO,EAEvBgG,CACR,CAEA,SAAS48B,GAAgBjqC,EAAKkqC,GAC7B,GAAuB,IAAlBA,EAAKthB,UAAmB/kB,EAAOk7B,QAAS/+B,CAAI,EAAjD,CAIA,IAAIY,EAAMP,EAAGk5B,EACZ4Q,EAAUtmC,EAAOo7B,MAAOj/B,CAAI,EAC5BoqC,EAAUvmC,EAAOo7B,MAAOiL,EAAMC,CAAQ,EACtCj+B,EAASi+B,EAAQj+B,OAElB,GAAKA,EAIJ,IAAMtL,KAHN,OAAOwpC,EAAQlF,OACfkF,EAAQl+B,OAAS,GAEHA,EACb,IAAM7L,EAAI,EAAGk5B,EAAIrtB,EAAQtL,GAAOR,OAAQC,EAAIk5B,EAAGl5B,CAAC,GAC/CwD,EAAOrE,MAAMk6B,IAAKwQ,EAAMtpC,EAAMsL,EAAQtL,GAAQP,EAAI,EAMhD+pC,EAAQ7hC,OACZ6hC,EAAQ7hC,KAAO1E,EAAOuE,OAAQ,GAAIgiC,EAAQ7hC,IAAK,EApBhD,CAsBD,CAsEA,SAAS8hC,EAAUC,EAAYz9B,EAAMzJ,EAAUqgC,GAG9C52B,EAAOsZ,EAAOjhB,MAAO,GAAI2H,CAAK,EAE9B,IAAI8I,EAAOpS,EAAMgnC,EAChBrqC,EAAShB,EAAKwiC,EACdrhC,EAAI,EACJk5B,EAAI+Q,EAAWlqC,OACfoqC,EAAWjR,EAAI,EACfnwB,EAAQyD,EAAM,GACdsb,EAAatkB,EAAOskB,WAAY/e,CAAM,EAGvC,GAAK+e,GACG,EAAJoR,GAA0B,UAAjB,OAAOnwB,GACjB,CAAC0d,EAAQqb,YAAcuH,GAASjlC,KAAM2E,CAAM,EAC9C,OAAOkhC,EAAWtmC,KAAM,SAAUC,GACjC,IAAI40B,EAAOyR,EAAWviB,GAAI9jB,CAAM,EAC3BkkB,IACJtb,EAAM,GAAMzD,EAAM0B,KAAMpL,KAAMuE,EAAO40B,EAAKvlB,KAAK,CAAE,GAElD+2B,EAAUxR,EAAMhsB,EAAMzJ,EAAUqgC,CAAQ,CACzC,CAAE,EAGH,GAAKlK,IAEJ5jB,GADA+rB,EAAW6B,GAAe12B,EAAMy9B,EAAY,GAAInc,cAAe,CAAA,EAAOmc,EAAY7G,CAAQ,GACzEhS,WAEmB,IAA/BiQ,EAAS/T,WAAWvtB,SACxBshC,EAAW/rB,GAIPA,GAAS8tB,GAAU,CAOvB,IALA8G,GADArqC,EAAU2D,EAAOikB,IAAK6a,EAAQjB,EAAU,QAAS,EAAGqI,EAAc,GAC7C3pC,OAKbC,EAAIk5B,EAAGl5B,CAAC,GACfkD,EAAOm+B,EAEFrhC,IAAMmqC,IACVjnC,EAAOM,EAAOsE,MAAO5E,EAAM,CAAA,EAAM,CAAA,CAAK,EAGjCgnC,IAIJ1mC,EAAO+jB,MAAO1nB,EAASyiC,EAAQp/B,EAAM,QAAS,CAAE,EAIlDH,EAAS0H,KAAMw/B,EAAYjqC,GAAKkD,EAAMlD,CAAE,EAGzC,GAAKkqC,EAOJ,IANArrC,EAAMgB,EAASA,EAAQE,OAAS,GAAI+tB,cAGpCtqB,EAAOikB,IAAK5nB,EAAS8pC,EAAc,EAG7B3pC,EAAI,EAAGA,EAAIkqC,EAAYlqC,CAAC,GAC7BkD,EAAOrD,EAASG,GACX+gC,GAAY38B,KAAMlB,EAAK3C,MAAQ,EAAG,GACtC,CAACiD,EAAOo7B,MAAO17B,EAAM,YAAa,GAClCM,EAAO0O,SAAUrT,EAAKqE,CAAK,IAEtBA,EAAKvD,IAGJ6D,EAAO4mC,UACX5mC,EAAO4mC,SAAUlnC,EAAKvD,GAAI,EAG3B6D,EAAOilB,YACJvlB,EAAK2L,MAAQ3L,EAAKiuB,aAAejuB,EAAK6L,WAAa,IACnD7J,QAASqkC,GAAc,EAAG,CAC7B,GAOJlI,EAAmB,IACpB,CAGD,OAAO4I,CACR,CAEA,SAASjhC,GAAQgE,EAAMF,EAAUu9B,GAKhC,IAJA,IAAInnC,EACHmkB,EAAQva,EAAWtJ,EAAOuI,OAAQe,EAAUE,CAAK,EAAIA,EACrDhN,EAAI,EAE4B,OAAvBkD,EAAOmkB,EAAOrnB,IAAeA,CAAC,GAEjCqqC,GAA8B,IAAlBnnC,EAAKqlB,UACtB/kB,EAAO86B,UAAWgE,EAAQp/B,CAAK,CAAE,EAG7BA,EAAKgQ,aACJm3B,GAAY7mC,EAAO0O,SAAUhP,EAAK4qB,cAAe5qB,CAAK,GAC1Ds/B,GAAeF,EAAQp/B,EAAM,QAAS,CAAE,EAEzCA,EAAKgQ,WAAW3O,YAAarB,CAAK,GAIpC,OAAO8J,CACR,CAEAxJ,EAAOuE,OAAQ,CACdy7B,cAAe,SAAUvwB,GACxB,OAAOA,EAAK/N,QAASikC,GAAW,WAAY,CAC7C,EAEArhC,MAAO,SAAUkF,EAAMs9B,EAAeC,GACrC,IAAIC,EAActnC,EAAM4E,EAAO9H,EAAGyqC,EACjCC,EAASlnC,EAAO0O,SAAUlF,EAAK8gB,cAAe9gB,CAAK,EAapD,GAXKyZ,EAAQgb,YAAcj+B,EAAOq0B,SAAU7qB,CAAK,GAChD,CAACk8B,GAAa9kC,KAAM,IAAM4I,EAAKqJ,SAAW,GAAI,EAE9CvO,EAAQkF,EAAK00B,UAAW,CAAA,CAAK,GAI7B8H,GAAYz6B,UAAY/B,EAAK20B,UAC7B6H,GAAYjlC,YAAauD,EAAQ0hC,GAAYpY,UAAW,GAGpD,EAAG3K,EAAQsb,cAAiBtb,EAAQob,gBACnB,IAAlB70B,EAAKub,UAAoC,KAAlBvb,EAAKub,UAAsB/kB,EAAOq0B,SAAU7qB,CAAK,GAO3E,IAJAw9B,EAAelI,EAAQx6B,CAAM,EAC7B2iC,EAAcnI,EAAQt1B,CAAK,EAGrBhN,EAAI,EAAkC,OAA7BkD,EAAOunC,EAAazqC,IAAe,EAAEA,EAGnD,GAAKwqC,EAAcxqC,GAAM,CAzNXkI,EAAHlE,EAAVqS,EAD6BwzB,EAALlqC,EAAAA,KAAAA,EA2NxBgrC,IA1NAt0B,EAAUrS,EAAGkE,EADWvI,EA2NJuD,EA3NS2mC,EA2NHW,EAAcxqC,GAvN5C,GAAuB,IAAlB6pC,EAAKthB,SAAV,CAOA,GAHAlS,EAAWwzB,EAAKxzB,SAAS9M,YAAY,EAGhC,CAACkd,EAAQsb,cAAgB8H,EAAMrmC,EAAOwkB,SAAY,CAGtD,IAAMhkB,KAFNkE,EAAO1E,EAAOo7B,MAAOiL,CAAK,GAEVh+B,OACfrI,EAAOiiC,YAAaoE,EAAM7lC,EAAGkE,EAAK28B,MAAO,EAI1CgF,EAAK7iC,gBAAiBxD,EAAOwkB,OAAQ,CACtC,CAGkB,WAAb3R,GAAyBwzB,EAAKh7B,OAASlP,EAAIkP,MAC/C66B,GAAeG,CAAK,EAAEh7B,KAAOlP,EAAIkP,KACjC86B,GAAeE,CAAK,GAII,WAAbxzB,GACNwzB,EAAK32B,aACT22B,EAAKlI,UAAYhiC,EAAIgiC,WAOjBlb,EAAQgb,YAAgB9hC,EAAIoP,WAAa,CAACvL,EAAOklB,KAAMmhB,EAAK96B,SAAU,IAC1E86B,EAAK96B,UAAYpP,EAAIoP,YAGE,UAAbsH,GAAwBwqB,GAAez8B,KAAMzE,EAAIY,IAAK,GAMjEspC,EAAK5G,eAAiB4G,EAAKhW,QAAUl0B,EAAIk0B,QAIpCgW,EAAK9gC,QAAUpJ,EAAIoJ,QACvB8gC,EAAK9gC,MAAQpJ,EAAIoJ,QAKM,WAAbsN,EACXwzB,EAAKe,gBAAkBf,EAAK/V,SAAWn0B,EAAIirC,gBAInB,UAAbv0B,GAAqC,aAAbA,IACnCwzB,EAAKlS,aAAeh4B,EAAIg4B,aA1DzB,CAsNG,CAKF,GAAK2S,EACJ,GAAKC,EAIJ,IAHAE,EAAcA,GAAenI,EAAQt1B,CAAK,EAC1Cw9B,EAAeA,GAAgBlI,EAAQx6B,CAAM,EAEvC9H,EAAI,EAAkC,OAA7BkD,EAAOunC,EAAazqC,IAAeA,CAAC,GAClD4pC,GAAgB1mC,EAAMsnC,EAAcxqC,EAAI,OAGzC4pC,GAAgB58B,EAAMlF,CAAM,EAa9B,OAP2B,GAD3B0iC,EAAelI,EAAQx6B,EAAO,QAAS,GACrB/H,QACjByiC,GAAegI,EAAc,CAACE,GAAUpI,EAAQt1B,EAAM,QAAS,CAAE,EAGlEw9B,EAAeC,EAAcvnC,EAAO,KAG7B4E,CACR,EAEAw2B,UAAW,SAAUjX,EAAsBwjB,GAQ1C,IAPA,IAAI79B,EAAMzM,EAAMiG,EAAI0B,EACnBlI,EAAI,EACJi+B,EAAcz6B,EAAOwkB,QACrB1lB,EAAQkB,EAAOlB,MACfkpB,EAAa/E,EAAQ+E,WACrB+Y,EAAU/gC,EAAOrE,MAAMolC,QAES,OAAvBv3B,EAAOqa,EAAOrnB,IAAeA,CAAC,GACvC,IAAK6qC,GAAmBrN,EAAYxwB,CAAK,KAGxC9E,GADA1B,EAAKwG,EAAMixB,KACE37B,EAAOkE,IAER,CACX,GAAK0B,EAAK2D,OACT,IAAMtL,KAAQ2H,EAAK2D,OACb04B,EAAShkC,GACbiD,EAAOrE,MAAM6J,OAAQgE,EAAMzM,CAAK,EAIhCiD,EAAOiiC,YAAaz4B,EAAMzM,EAAM2H,EAAK28B,MAAO,EAM1CviC,EAAOkE,KAEX,OAAOlE,EAAOkE,GAMRglB,GAA8C,aAAhC,OAAOxe,EAAKhG,gBAO/BgG,EAAMixB,GAAgBtrB,UANtB3F,EAAKhG,gBAAiBi3B,CAAY,EASnC5X,EAAW1hB,KAAM6B,CAAG,EAEtB,CAGH,CACD,CAAE,EAEFhD,EAAOC,GAAGsE,OAAQ,CAGjBiiC,SAAUA,EAEVhQ,OAAQ,SAAUltB,GACjB,OAAO9D,GAAQ3J,KAAMyN,EAAU,CAAA,CAAK,CACrC,EAEA9D,OAAQ,SAAU8D,GACjB,OAAO9D,GAAQ3J,KAAMyN,CAAS,CAC/B,EAEA+B,KAAM,SAAU9F,GACf,OAAOy3B,EAAQnhC,KAAM,SAAU0J,GAC9B,OAAOA,IAAU4J,UAChBnP,EAAOqL,KAAMxP,IAAK,EAClBA,KAAK20B,MAAM,EAAE9kB,QACV7P,KAAM,IAAOA,KAAM,GAAIyuB,eAAiBhvB,GAAW2kC,eAAgB16B,CAAM,CAC5E,CACF,EAAG,KAAMA,EAAO0D,UAAU1M,MAAO,CAClC,EAEAmP,OAAQ,WACP,OAAO86B,EAAU3qC,KAAMoN,UAAW,SAAUO,GACpB,IAAlB3N,KAAKkpB,UAAoC,KAAlBlpB,KAAKkpB,UAAqC,IAAlBlpB,KAAKkpB,UAC3CkhB,GAAoBpqC,KAAM2N,CAAK,EACrCvH,YAAauH,CAAK,CAE3B,CAAE,CACH,EAEA89B,QAAS,WACR,OAAOd,EAAU3qC,KAAMoN,UAAW,SAAUO,GAC3C,IACKS,EADkB,IAAlBpO,KAAKkpB,UAAoC,KAAlBlpB,KAAKkpB,UAAqC,IAAlBlpB,KAAKkpB,WACpD9a,EAASg8B,GAAoBpqC,KAAM2N,CAAK,GACrCgS,aAAchS,EAAMS,EAAO2jB,UAAW,CAE/C,CAAE,CACH,EAEA2Z,OAAQ,WACP,OAAOf,EAAU3qC,KAAMoN,UAAW,SAAUO,GACtC3N,KAAK6T,YACT7T,KAAK6T,WAAW8L,aAAchS,EAAM3N,IAAK,CAE3C,CAAE,CACH,EAEA2rC,MAAO,WACN,OAAOhB,EAAU3qC,KAAMoN,UAAW,SAAUO,GACtC3N,KAAK6T,YACT7T,KAAK6T,WAAW8L,aAAchS,EAAM3N,KAAK4vB,WAAY,CAEvD,CAAE,CACH,EAEA+E,MAAO,WAIN,IAHA,IAAIhnB,EACHhN,EAAI,EAE2B,OAAtBgN,EAAO3N,KAAMW,IAAeA,CAAC,GAAK,CAQ3C,IALuB,IAAlBgN,EAAKub,UACT/kB,EAAO86B,UAAWgE,EAAQt1B,EAAM,CAAA,CAAM,CAAE,EAIjCA,EAAKokB,YACZpkB,EAAKzI,YAAayI,EAAKokB,UAAW,EAK9BpkB,EAAKrF,SAAWnE,EAAO6S,SAAUrJ,EAAM,QAAS,IACpDA,EAAKrF,QAAQ5H,OAAS,EAExB,CAEA,OAAOV,IACR,EAEAyI,MAAO,SAAUwiC,EAAeC,GAI/B,OAHAD,EAAiC,MAAjBA,GAAgCA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzDlrC,KAAKooB,IAAK,WAChB,OAAOjkB,EAAOsE,MAAOzI,KAAMirC,EAAeC,CAAkB,CAC7D,CAAE,CACH,EAEAt3B,KAAM,SAAUlK,GACf,OAAOy3B,EAAQnhC,KAAM,SAAU0J,GAC9B,IAAIiE,EAAO3N,KAAM,IAAO,GACvBW,EAAI,EACJk5B,EAAI75B,KAAKU,OAEV,GAAKgJ,IAAU4J,UACd,OAAyB,IAAlB3F,EAAKub,SACXvb,EAAK+B,UAAU7J,QAAS+jC,GAAe,EAAG,EAC1Ct2B,UAIF,GAAsB,UAAjB,OAAO5J,GAAsB,CAACqgC,GAAahlC,KAAM2E,CAAM,IACzD0d,EAAQ+a,eAAiB,CAAC0H,GAAa9kC,KAAM2E,CAAM,KACnD0d,EAAQ6a,mBAAqB,CAACN,GAAmB58B,KAAM2E,CAAM,IAC/D,CAACi5B,GAAWlB,GAAS/S,KAAMhlB,CAAM,GAAK,CAAE,GAAI,KAAQ,GAAIQ,YAAY,GAAM,CAE1ER,EAAQvF,EAAOggC,cAAez6B,CAAM,EAEpC,IACC,KAAQ/I,EAAIk5B,EAAGl5B,CAAC,GAIQ,KADvBgN,EAAO3N,KAAMW,IAAO,IACVuoB,WACT/kB,EAAO86B,UAAWgE,EAAQt1B,EAAM,CAAA,CAAM,CAAE,EACxCA,EAAK+B,UAAYhG,GAInBiE,EAAO,CAGO,CAAb,MAAQhJ,IACX,CAEKgJ,GACJ3N,KAAK20B,MAAM,EAAE9kB,OAAQnG,CAAM,CAE7B,EAAG,KAAMA,EAAO0D,UAAU1M,MAAO,CAClC,EAEAkrC,YAAa,WACZ,IAAI7H,EAAU,GAGd,OAAO4G,EAAU3qC,KAAMoN,UAAW,SAAUO,GAC3C,IAAIqiB,EAAShwB,KAAK6T,WAEb1P,EAAOwlB,QAAS3pB,KAAM+jC,CAAQ,EAAI,IACtC5/B,EAAO86B,UAAWgE,EAAQjjC,IAAK,CAAE,EAC5BgwB,IACJA,EAAO6b,aAAcl+B,EAAM3N,IAAK,CAKnC,EAAG+jC,CAAQ,CACZ,CACD,CAAE,EAEF5/B,EAAOG,KAAM,CACZwnC,SAAU,SACVC,UAAW,UACXpsB,aAAc,SACdqsB,YAAa,QACbC,WAAY,aACb,EAAG,SAAUtlC,EAAMmhC,GAClB3jC,EAAOC,GAAIuC,GAAS,SAAU8G,GAO7B,IANA,IAAIua,EACHrnB,EAAI,EACJsnB,EAAM,GACNikB,EAAS/nC,EAAQsJ,CAAS,EAC1BhN,EAAOyrC,EAAOxrC,OAAS,EAEhBC,GAAKF,EAAME,CAAC,GACnBqnB,EAAQrnB,IAAMF,EAAOT,KAAOA,KAAKyI,MAAO,CAAA,CAAK,EAC7CtE,EAAQ+nC,EAAQvrC,EAAI,EAAGmnC,GAAY9f,CAAM,EAGzC1iB,EAAKE,MAAOyiB,EAAKD,EAAMF,IAAI,CAAE,EAG9B,OAAO9nB,KAAK+nB,UAAWE,CAAI,CAC5B,CACD,CAAE,EAGF,IAAIkkB,GACHC,GAAc,CAIbC,KAAM,QACNC,KAAM,OACP,EASD,SAASC,GAAe5lC,EAAMnH,GACzBmO,EAAOxJ,EAAQ3E,EAAIsG,cAAea,CAAK,CAAE,EAAEmlC,SAAUtsC,EAAIqP,IAAK,EAEjE29B,EAAUroC,EAAOiP,IAAKzF,EAAM,GAAK,SAAU,EAM5C,OAFAA,EAAKgtB,OAAO,EAEL6R,CACR,CAMA,SAASC,GAAgBz1B,GACxB,IAAIxX,EAAMC,EACT+sC,EAAUJ,GAAap1B,GA2BxB,OAzBMw1B,IAIY,UAHjBA,EAAUD,GAAev1B,EAAUxX,CAAI,IAGXgtC,KAO3BhtC,IAJA2sC,IAAWA,IAAUhoC,EAAQ,gDAAiD,GAC5E2nC,SAAUtsC,EAAIwP,eAAgB,GAGhB,GAAIwrB,eAAiB2R,GAAQ,GAAI5R,iBAAkB96B,UAG/DitC,MAAM,EACVltC,EAAIyU,MAAM,EAEVu4B,EAAUD,GAAev1B,EAAUxX,CAAI,EACvC2sC,GAAOxR,OAAO,GAIfyR,GAAap1B,GAAaw1B,GAGpBA,CACR,CACA,IA8BKG,EAAkBC,GAAqBC,GAC1CC,GAA0BC,GAAwBC,GAClDjP,GACAjd,EAjCEmsB,GAAU,UAEVC,GAAY,IAAI5iC,OAAQ,KAAO41B,EAAO,kBAAmB,GAAI,EAE7DiN,GAAO,SAAUx/B,EAAMrF,EAAS5E,EAAUyJ,GAC7C,IAASxG,EACRymC,EAAM,GAGP,IAAMzmC,KAAQ2B,EACb8kC,EAAKzmC,GAASgH,EAAK/G,MAAOD,GAC1BgH,EAAK/G,MAAOD,GAAS2B,EAAS3B,GAM/B,IAAMA,KAHNshB,EAAMvkB,EAAS8B,MAAOmI,EAAMR,GAAQ,EAAG,EAGzB7E,EACbqF,EAAK/G,MAAOD,GAASymC,EAAKzmC,GAG3B,OAAOshB,CACR,EAGIjZ,GAAkBvP,EAASuP,gBA6F9B,SAASq+B,IACR,IAAcC,EACbt+B,EAAkBvP,EAASuP,gBAG5BA,EAAgB5I,YAAa23B,EAAU,EAEvCjd,EAAIla,MAAM6I,QAIT,0IAODk9B,EAAmBE,GAAuBG,GAAwB,CAAA,EAClEJ,GAAsBG,GAAyB,CAAA,EAG1Cv/B,EAAO1G,mBACXwmC,EAAW9/B,EAAO1G,iBAAkBga,CAAI,EACxC6rB,EAA8C,QAAzBW,GAAY,IAAKl9B,IACtC48B,GAA0D,SAAhCM,GAAY,IAAKC,WAC3CV,GAAkE,SAAzCS,GAAY,CAAE75B,MAAO,KAAM,GAAIA,MAIxDqN,EAAIla,MAAM4mC,YAAc,MACxBZ,GAA6E,SAArDU,GAAY,CAAEE,YAAa,KAAM,GAAIA,aAM7D/T,EAAW3Y,EAAI1a,YAAa3G,EAASqG,cAAe,KAAM,CAAE,GAGnDc,MAAM6I,QAAUqR,EAAIla,MAAM6I,QAIlC,8HAEDgqB,EAAS7yB,MAAM4mC,YAAc/T,EAAS7yB,MAAM6M,MAAQ,IACpDqN,EAAIla,MAAM6M,MAAQ,MAElBs5B,GACC,CAAClrB,YAAcrU,EAAO1G,iBAAkB2yB,CAAS,GAAK,IAAK+T,WAAY,EAExE1sB,EAAI5b,YAAau0B,CAAS,GAW3B3Y,EAAIla,MAAM4lC,QAAU,QACpBM,GAA2D,IAAhChsB,EAAI2sB,eAAe,EAAE/sC,UAE/CogB,EAAIla,MAAM4lC,QAAU,GACpB1rB,EAAIpR,UAAY,8CAChBoR,EAAImN,WAAY,GAAIrnB,MAAM8mC,eAAiB,YAC3CjU,EAAW3Y,EAAI7c,qBAAsB,IAAK,GAChC,GAAI2C,MAAM6I,QAAU,2CAC9Bq9B,GAA0D,IAA/BrT,EAAU,GAAIzoB,gBAExCyoB,EAAU,GAAI7yB,MAAM4lC,QAAU,GAC9B/S,EAAU,GAAI7yB,MAAM4lC,QAAU,OAC9BM,GAA0D,IAA/BrT,EAAU,GAAIzoB,cAK3ChC,EAAgB9J,YAAa64B,EAAU,CACxC,CAvKCA,GAAYt+B,EAASqG,cAAe,KAAM,GAC1Cgb,EAAMrhB,EAASqG,cAAe,KAAM,GAG3Bc,QAIVka,EAAIla,MAAM6I,QAAU,wBAIpB2X,EAAQnV,QAAgC,QAAtB6O,EAAIla,MAAMqL,QAI5BmV,EAAQumB,SAAW,CAAC,CAAC7sB,EAAIla,MAAM+mC,SAE/B7sB,EAAIla,MAAMgnC,eAAiB,cAC3B9sB,EAAIuhB,UAAW,CAAA,CAAK,EAAEz7B,MAAMgnC,eAAiB,GAC7CxmB,EAAQymB,gBAA+C,gBAA7B/sB,EAAIla,MAAMgnC,gBAEpC7P,GAAYt+B,EAASqG,cAAe,KAAM,GAChCc,MAAM6I,QAAU,4FAE1BqR,EAAIpR,UAAY,GAChBquB,GAAU33B,YAAa0a,CAAI,EAI3BsG,EAAQ0mB,UAAoC,KAAxBhtB,EAAIla,MAAMknC,WAA+C,KAA3BhtB,EAAIla,MAAMmnC,cAC7B,KAA9BjtB,EAAIla,MAAMonC,gBAEX7pC,EAAOuE,OAAQ0e,EAAS,CACvB6mB,sBAAuB,WAItB,OAHyB,MAApBtB,GACJU,EAAkB,EAEZP,EACR,EAEAoB,kBAAmB,WAOlB,OAHyB,MAApBvB,GACJU,EAAkB,EAEZR,EACR,EAEAsB,iBAAkB,WAMjB,OAHyB,MAApBxB,GACJU,EAAkB,EAEZT,EACR,EAEAwB,cAAe,WAId,OAHyB,MAApBzB,GACJU,EAAkB,EAEZV,CACR,EAEA0B,oBAAqB,WAMpB,OAHyB,MAApB1B,GACJU,EAAkB,EAEZN,EACR,EAEAuB,mBAAoB,WAMnB,OAHyB,MAApB3B,GACJU,EAAkB,EAEZL,EACR,CACD,CAAE,GAwFH,IAAIuB,EAAWC,EACdC,GAAY,4BA6Hb,SAASC,GAAcC,EAAaC,GAGnC,MAAO,CACN9mB,IAAK,WACJ,GAAK6mB,CAAAA,EAAY,EASjB,OAAS3uC,KAAK8nB,IAAM8mB,GAASppC,MAAOxF,KAAMoN,SAAU,EALnD,OAAOpN,KAAK8nB,GAMd,CACD,CACD,CA5IKta,EAAO1G,kBACXynC,EAAY,SAAU5gC,GAKrB,IAAIoH,EAAOpH,EAAK8gB,cAAcwB,YAM9B,OAHClb,EADKA,GAASA,EAAK85B,OAIb95B,EAHCvH,GAGI1G,iBAAkB6G,CAAK,CACpC,EAEA6gC,EAAS,SAAU7gC,EAAMhH,EAAMmoC,GAC9B,IAAqBC,EAAU9mB,EAC9BrhB,EAAQ+G,EAAK/G,MA2Cd,MAjCe,MALfqhB,GAHA6mB,EAAWA,GAAYP,EAAW5gC,CAAK,GAGtBmhC,EAAS/nC,iBAAkBJ,CAAK,GAAKmoC,EAAUnoC,GAAS2M,YAKpD2U,IAAQ3U,WAAgBnP,EAAO0O,SAAUlF,EAAK8gB,cAAe9gB,CAAK,IACtFsa,EAAM9jB,EAAOyC,MAAO+G,EAAMhH,CAAK,GAG3BmoC,GASC,CAAC1nB,EAAQ+mB,iBAAiB,GAAKjB,GAAUnoC,KAAMkjB,CAAI,GAAKglB,GAAQloC,KAAM4B,CAAK,IAG/E8M,EAAQ7M,EAAM6M,MACdu7B,EAAWpoC,EAAMooC,SACjBD,EAAWnoC,EAAMmoC,SAGjBnoC,EAAMooC,SAAWpoC,EAAMmoC,SAAWnoC,EAAM6M,MAAQwU,EAChDA,EAAM6mB,EAASr7B,MAGf7M,EAAM6M,MAAQA,EACd7M,EAAMooC,SAAWA,EACjBpoC,EAAMmoC,SAAWA,GAMZ9mB,IAAQ3U,UACd2U,EACAA,EAAM,EACR,GACWjZ,GAAgBnI,eAC3B0nC,EAAY,SAAU5gC,GACrB,OAAOA,EAAK9G,YACb,EAEA2nC,EAAS,SAAU7gC,EAAMhH,EAAMmoC,GAC9B,IAAI3+B,EAAM8+B,EAAIC,EACbtoC,EAAQ+G,EAAK/G,MA2Cd,OApCY,OAJZqhB,GADA6mB,EAAWA,GAAYP,EAAW5gC,CAAK,GACtBmhC,EAAUnoC,GAAS2M,YAIhB1M,GAASA,EAAOD,KACnCshB,EAAMrhB,EAAOD,IAYTumC,GAAUnoC,KAAMkjB,CAAI,GAAK,CAACwmB,GAAU1pC,KAAM4B,CAAK,IAGnDwJ,EAAOvJ,EAAMuJ,MAEb++B,GADAD,EAAKthC,EAAKwhC,eACKF,EAAG9+B,QAIjB8+B,EAAG9+B,KAAOxC,EAAK9G,aAAasJ,MAE7BvJ,EAAMuJ,KAAgB,aAATxJ,EAAsB,MAAQshB,EAC3CA,EAAMrhB,EAAMwoC,UAAY,KAGxBxoC,EAAMuJ,KAAOA,EACR++B,KACJD,EAAG9+B,KAAO++B,GAMLjnB,IAAQ3U,UACd2U,EACAA,EAAM,IAAM,MACd,GA0BD,IAEEonB,GAAS,kBACVC,GAAW,yBAMXC,GAAe,4BACfC,GAAY,IAAIllC,OAAQ,KAAO41B,EAAO,SAAU,GAAI,EAEpDuP,GAAU,CAAE3/B,SAAU,WAAY4/B,WAAY,SAAUlD,QAAS,OAAQ,EACzEmD,GAAqB,CACpBC,cAAe,IACfC,WAAY,KACb,EAEAC,GAAc,CAAE,SAAU,IAAK,MAAO,MACtCC,GAAatwC,EAASqG,cAAe,KAAM,EAAEc,MAI9C,SAASopC,GAAgBrpC,GAGxB,GAAKA,KAAQopC,GACZ,OAAOppC,EAOR,IAHA,IAAIspC,EAAUtpC,EAAK2yB,OAAQ,CAAE,EAAE5R,YAAY,EAAI/gB,EAAKpB,MAAO,CAAE,EAC5D5E,EAAImvC,GAAYpvC,OAETC,CAAC,IAER,IADAgG,EAAOmpC,GAAanvC,GAAMsvC,KACbF,GACZ,OAAOppC,CAGV,CAEA,SAASupC,GAAU1e,EAAUhY,GAM5B,IALA,IAAIgzB,EAAS7+B,EAAMwiC,EAClB/S,EAAS,GACT74B,EAAQ,EACR7D,EAAS8wB,EAAS9wB,OAEX6D,EAAQ7D,EAAQ6D,CAAK,IAC5BoJ,EAAO6jB,EAAUjtB,IACNqC,QAIXw2B,EAAQ74B,GAAUJ,EAAOo7B,MAAO5xB,EAAM,YAAa,EACnD6+B,EAAU7+B,EAAK/G,MAAM4lC,QAChBhzB,GAIE4jB,EAAQ74B,IAAuB,SAAZioC,IACxB7+B,EAAK/G,MAAM4lC,QAAU,IAMM,KAAvB7+B,EAAK/G,MAAM4lC,SAAkBnM,GAAU1yB,CAAK,IAChDyvB,EAAQ74B,GACPJ,EAAOo7B,MAAO5xB,EAAM,aAAc8+B,GAAgB9+B,EAAKqJ,QAAS,CAAE,KAGpEm5B,EAAS9P,GAAU1yB,CAAK,GAEnB6+B,GAAuB,SAAZA,GAAsB,CAAC2D,IACtChsC,EAAOo7B,MACN5xB,EACA,aACAwiC,EAAS3D,EAAUroC,EAAOiP,IAAKzF,EAAM,SAAU,CAChD,IAOH,IAAMpJ,EAAQ,EAAGA,EAAQ7D,EAAQ6D,CAAK,GAE/BoJ,EADNA,EAAO6jB,EAAUjtB,IACNqC,OAGL4S,GAA+B,SAAvB7L,EAAK/G,MAAM4lC,SAA6C,KAAvB7+B,EAAK/G,MAAM4lC,UACzD7+B,EAAK/G,MAAM4lC,QAAUhzB,EAAO4jB,EAAQ74B,IAAW,GAAK,QAItD,OAAOitB,CACR,CAEA,SAAS4e,GAAmBziC,EAAMjE,EAAO2mC,GACxC,IAAItmB,EAAUylB,GAAU9gB,KAAMhlB,CAAM,EACpC,OAAOqgB,EAGNvb,KAAK6H,IAAK,EAAG0T,EAAS,IAAQsmB,GAAY,EAAI,GAAMtmB,EAAS,IAAO,MACpErgB,CACF,CAEA,SAAS4mC,GAAsB3iC,EAAMhH,EAAM4pC,EAAOC,EAAaC,GAW9D,IAVA,IAAI9vC,EAAI4vC,KAAYC,EAAc,SAAW,WAG5C,EAGS,UAAT7pC,EAAmB,EAAI,EAEvBsH,EAAM,EAECtN,EAAI,EAAGA,GAAK,EAGJ,WAAV4vC,IACJtiC,GAAO9J,EAAOiP,IAAKzF,EAAM4iC,EAAQnQ,EAAWz/B,GAAK,CAAA,EAAM8vC,CAAO,GAG1DD,GAGW,YAAVD,IACJtiC,GAAO9J,EAAOiP,IAAKzF,EAAM,UAAYyyB,EAAWz/B,GAAK,CAAA,EAAM8vC,CAAO,GAIpD,WAAVF,IACJtiC,GAAO9J,EAAOiP,IAAKzF,EAAM,SAAWyyB,EAAWz/B,GAAM,QAAS,CAAA,EAAM8vC,CAAO,KAK5ExiC,GAAO9J,EAAOiP,IAAKzF,EAAM,UAAYyyB,EAAWz/B,GAAK,CAAA,EAAM8vC,CAAO,EAGnD,YAAVF,IACJtiC,GAAO9J,EAAOiP,IAAKzF,EAAM,SAAWyyB,EAAWz/B,GAAM,QAAS,CAAA,EAAM8vC,CAAO,IAK9E,OAAOxiC,CACR,CAEA,SAASyiC,GAAkB/iC,EAAMhH,EAAM4pC,GAGtC,IAAII,EAAmB,CAAA,EACtB1iC,EAAe,UAATtH,EAAmBgH,EAAKmD,YAAcnD,EAAKqD,aACjDy/B,EAASlC,EAAW5gC,CAAK,EACzB6iC,EAAcppB,EAAQ0mB,WAC8B,eAAnD3pC,EAAOiP,IAAKzF,EAAM,YAAa,CAAA,EAAO8iC,CAAO,EAK/C,GAAKxiC,GAAO,GAAY,MAAPA,EAAc,CAS9B,KANAA,EAAMugC,EAAQ7gC,EAAMhH,EAAM8pC,CAAO,GACtB,GAAY,MAAPxiC,KACfA,EAAMN,EAAK/G,MAAOD,IAIdumC,GAAUnoC,KAAMkJ,CAAI,EACxB,OAAOA,EAKR0iC,EAAmBH,IAChBppB,EAAQ8mB,kBAAkB,GAAKjgC,IAAQN,EAAK/G,MAAOD,IAGtDsH,EAAM4T,WAAY5T,CAAI,GAAK,CAC5B,CAGA,OAASA,EACRqiC,GACC3iC,EACAhH,EACA4pC,IAAWC,EAAc,SAAW,WACpCG,EACAF,CACD,EACG,IACL,CAmVA,SAASG,EAAOjjC,EAAMrF,EAASk4B,EAAMpqB,EAAKy6B,GACzC,OAAO,IAAID,EAAM5tC,UAAU8V,KAAMnL,EAAMrF,EAASk4B,EAAMpqB,EAAKy6B,CAAO,CACnE,CAnVA1sC,EAAOuE,OAAQ,CAIdooC,SAAU,CACT7+B,QAAS,CACR6V,IAAK,SAAUna,EAAMmhC,GACpB,GAAKA,EAIJ,MAAe,MADX7mB,EAAMumB,EAAQ7gC,EAAM,SAAU,GACd,IAAMsa,CAE5B,CACD,CACD,EAGAgZ,UAAW,CACV8P,wBAA2B,CAAA,EAC3BC,YAAe,CAAA,EACfC,YAAe,CAAA,EACfC,SAAY,CAAA,EACZC,WAAc,CAAA,EACdtB,WAAc,CAAA,EACduB,WAAc,CAAA,EACdn/B,QAAW,CAAA,EACXo/B,MAAS,CAAA,EACTC,QAAW,CAAA,EACXC,OAAU,CAAA,EACVv3B,OAAU,CAAA,EACVgkB,KAAQ,CAAA,CACT,EAIAwT,SAAU,CAGTC,QAASrqB,EAAQumB,SAAW,WAAa,YAC1C,EAGA/mC,MAAO,SAAU+G,EAAMhH,EAAM+C,EAAO6mC,GAGnC,GAAM5iC,GAA0B,IAAlBA,EAAKub,UAAoC,IAAlBvb,EAAKub,UAAmBvb,EAAK/G,MAAlE,CAKA,IAAIqhB,EAAK/mB,EAAMy+B,EACd+R,EAAWvtC,EAAOolB,UAAW5iB,CAAK,EAClCC,EAAQ+G,EAAK/G,MAUd,GARAD,EAAOxC,EAAOqtC,SAAUE,KACrBvtC,EAAOqtC,SAAUE,GAAa1B,GAAgB0B,CAAS,GAAKA,GAI/D/R,EAAQx7B,EAAO2sC,SAAUnqC,IAAUxC,EAAO2sC,SAAUY,GAG/ChoC,IAAU4J,UA0Cd,OAAKqsB,GAAS,QAASA,IACpB1X,EAAM0X,EAAM7X,IAAKna,EAAM,CAAA,EAAO4iC,CAAM,KAAQj9B,UAEvC2U,EAIDrhB,EAAOD,GArCd,GARc,YAHdzF,EAAO,OAAOwI,KAGcue,EAAMkY,GAAQzR,KAAMhlB,CAAM,IAAOue,EAAK,KACjEve,EAAQ62B,GAAW5yB,EAAMhH,EAAMshB,CAAI,EAGnC/mB,EAAO,UAIM,MAATwI,GAAiBA,GAAUA,IAKlB,WAATxI,IACJwI,GAASue,GAAOA,EAAK,KAAS9jB,EAAO88B,UAAWyQ,GAAa,GAAK,OAM7DtqB,EAAQymB,iBAA6B,KAAVnkC,GAAiD,IAAjC/C,EAAKL,QAAS,YAAa,IAC3EM,EAAOD,GAAS,WAIZ,EAACg5B,GAAY,QAASA,IACxBj2B,EAAQi2B,EAAMloB,IAAK9J,EAAMjE,EAAO6mC,CAAM,KAAQj9B,YAIhD,IACC1M,EAAOD,GAAS+C,CACF,CAAb,MAAQ/E,IAnDZ,CAkED,EAEAyO,IAAK,SAAUzF,EAAMhH,EAAM4pC,EAAOE,GACjC,IAASxiC,EACRyjC,EAAWvtC,EAAOolB,UAAW5iB,CAAK,EA0BnC,OAvBAA,EAAOxC,EAAOqtC,SAAUE,KACrBvtC,EAAOqtC,SAAUE,GAAa1B,GAAgB0B,CAAS,GAAKA,GAiBlD,YAJZzjC,GALAA,GAJD0xB,EAAQx7B,EAAO2sC,SAAUnqC,IAAUxC,EAAO2sC,SAAUY,KAGtC,QAAS/R,EAChBA,EAAM7X,IAAKna,EAAM,CAAA,EAAM4iC,CAAM,EAI/BtiC,KAAQqF,UACNk7B,EAAQ7gC,EAAMhH,EAAM8pC,CAAO,EAI7BxiC,IAAoBtH,KAAQgpC,KAChC1hC,EAAM0hC,GAAoBhpC,KAIZ,KAAV4pC,GAAgBA,KACpBjiC,EAAMuT,WAAY5T,CAAI,EACL,CAAA,IAAVsiC,GAAkBoB,SAAUrjC,CAAI,GAAIA,GAAO,EAE5CL,CACR,CACD,CAAE,EAEF9J,EAAOG,KAAM,CAAE,SAAU,SAAW,SAAU3D,EAAGgG,GAChDxC,EAAO2sC,SAAUnqC,GAAS,CACzBmhB,IAAK,SAAUna,EAAMmhC,EAAUyB,GAC9B,GAAKzB,EAIJ,OAAOS,GAAaxqC,KAAMZ,EAAOiP,IAAKzF,EAAM,SAAU,CAAE,GAClC,IAArBA,EAAKmD,YACJq8B,GAAMx/B,EAAM8hC,GAAS,WACpB,OAAOiB,GAAkB/iC,EAAMhH,EAAM4pC,CAAM,CAC5C,CAAE,EACFG,GAAkB/iC,EAAMhH,EAAM4pC,CAAM,CAExC,EAEA94B,IAAK,SAAU9J,EAAMjE,EAAO6mC,GAC3B,IAAIE,EAASF,GAAShC,EAAW5gC,CAAK,EACtC,OAAOyiC,GAAmBziC,EAAMjE,EAAO6mC,EACtCD,GACC3iC,EACAhH,EACA4pC,EACAnpB,EAAQ0mB,WAC4C,eAAnD3pC,EAAOiP,IAAKzF,EAAM,YAAa,CAAA,EAAO8iC,CAAO,EAC9CA,CACD,EAAI,CACL,CACD,CACD,CACD,CAAE,EAEIrpB,EAAQnV,UACb9N,EAAO2sC,SAAS7+B,QAAU,CACzB6V,IAAK,SAAUna,EAAMmhC,GAGpB,OAAOQ,GAASvqC,MAAQ+pC,GAAYnhC,EAAK9G,aACxC8G,EAAK9G,aACL8G,EAAK/G,OADa8F,QACK,EAAG,EACvB,IAAOmV,WAAYvX,OAAOsnC,EAAG,EAAM,GACrC9C,EAAW,IAAM,EACpB,EAEAr3B,IAAK,SAAU9J,EAAMjE,GACpB,IAAI9C,EAAQ+G,EAAK/G,MAChBC,EAAe8G,EAAK9G,aACpBoL,EAAU9N,EAAO4kB,UAAWrf,CAAM,EAAI,iBAA2B,IAARA,EAAc,IAAM,GAC7EgD,EAAS7F,GAAgBA,EAAa6F,QAAU9F,EAAM8F,QAAU,KAIjE9F,EAAMo3B,KAAO,IAKNt0B,GAAwB,KAAVA,IAC6B,KAAhDvF,EAAOklB,KAAM3c,EAAO7G,QAASwpC,GAAQ,EAAG,CAAE,GAC1CzoC,EAAMe,kBAKPf,EAAMe,gBAAiB,QAAS,EAIjB,KAAV+B,GAAgB7C,GAAgB,CAACA,EAAa6F,UAMpD9F,EAAM8F,OAAS2iC,GAAOtqC,KAAM2H,CAAO,EAClCA,EAAO7G,QAASwpC,GAAQp9B,CAAQ,EAChCvF,EAAS,IAAMuF,EACjB,CACD,GAGD9N,EAAO2sC,SAAStD,YAAckB,GAActnB,EAAQinB,oBACnD,SAAU1gC,EAAMmhC,GACf,GAAKA,EACJ,OAAO3B,GAAMx/B,EAAM,CAAE6+B,QAAW,cAAe,EAC9CgC,EAAQ,CAAE7gC,EAAM,cAAgB,CAEnC,CACD,EAEAxJ,EAAO2sC,SAASvD,WAAamB,GAActnB,EAAQknB,mBAClD,SAAU3gC,EAAMmhC,GACf,GAAKA,EACJ,OACCjtB,WAAY2sB,EAAQ7gC,EAAM,YAAa,CAAE,IAMvCxJ,EAAO0O,SAAUlF,EAAK8gB,cAAe9gB,CAAK,EAC3CA,EAAKiD,sBAAsB,EAAET,KAC5Bg9B,GAAMx/B,EAAM,CAAE4/B,WAAY,CAAE,EAAG,WAC9B,OAAO5/B,EAAKiD,sBAAsB,EAAET,IACrC,CAAE,EACH,IAEE,IAEN,CACD,EAGAhM,EAAOG,KAAM,CACZ4L,OAAQ,GACR2hC,QAAS,GACTC,OAAQ,OACT,EAAG,SAAUC,EAAQC,GACpB7tC,EAAO2sC,SAAUiB,EAASC,GAAW,CACpCC,OAAQ,SAAUvoC,GAOjB,IANA,IAAI/I,EAAI,EACPuxC,EAAW,GAGXC,EAAyB,UAAjB,OAAOzoC,EAAqBA,EAAMV,MAAO,GAAI,EAAI,CAAEU,GAEpD/I,EAAI,EAAGA,CAAC,GACfuxC,EAAUH,EAAS3R,EAAWz/B,GAAMqxC,GACnCG,EAAOxxC,IAAOwxC,EAAOxxC,EAAI,IAAOwxC,EAAO,GAGzC,OAAOD,CACR,CACD,EAEMjF,GAAQloC,KAAMgtC,CAAO,IAC1B5tC,EAAO2sC,SAAUiB,EAASC,GAASv6B,IAAM24B,GAE3C,CAAE,EAEFjsC,EAAOC,GAAGsE,OAAQ,CACjB0K,IAAK,SAAUzM,EAAM+C,GACpB,OAAOy3B,EAAQnhC,KAAM,SAAU2N,EAAMhH,EAAM+C,GAC1C,IAAI+mC,EAAQnlC,EACX8c,EAAM,GACNznB,EAAI,EAEL,GAAKwD,EAAOsC,QAASE,CAAK,EAAI,CAI7B,IAHA8pC,EAASlC,EAAW5gC,CAAK,EACzBrC,EAAM3E,EAAKjG,OAEHC,EAAI2K,EAAK3K,CAAC,GACjBynB,EAAKzhB,EAAMhG,IAAQwD,EAAOiP,IAAKzF,EAAMhH,EAAMhG,GAAK,CAAA,EAAO8vC,CAAO,EAG/D,OAAOroB,CACR,CAEA,OAAO1e,IAAU4J,UAChBnP,EAAOyC,MAAO+G,EAAMhH,EAAM+C,CAAM,EAChCvF,EAAOiP,IAAKzF,EAAMhH,CAAK,CACzB,EAAGA,EAAM+C,EAA0B,EAAnB0D,UAAU1M,MAAW,CACtC,EACA8Y,KAAM,WACL,OAAO02B,GAAUlwC,KAAM,CAAA,CAAK,CAC7B,EACAoyC,KAAM,WACL,OAAOlC,GAAUlwC,IAAK,CACvB,EACAqyC,OAAQ,SAAUz2B,GACjB,MAAsB,WAAjB,OAAOA,EACJA,EAAQ5b,KAAKwZ,KAAK,EAAIxZ,KAAKoyC,KAAK,EAGjCpyC,KAAKsE,KAAM,WACZ+7B,GAAUrgC,IAAK,EACnBmE,EAAQnE,IAAK,EAAEwZ,KAAK,EAEpBrV,EAAQnE,IAAK,EAAEoyC,KAAK,CAEtB,CAAE,CACH,CACD,CAAE,IAMFjuC,EAAOysC,MAAQA,GAET5tC,UAAY,CACjBkL,YAAa0iC,EACb93B,KAAM,SAAUnL,EAAMrF,EAASk4B,EAAMpqB,EAAKy6B,EAAQ7P,GACjDhhC,KAAK2N,KAAOA,EACZ3N,KAAKwgC,KAAOA,EACZxgC,KAAK6wC,OAASA,GAAU1sC,EAAO0sC,OAAO7N,SACtChjC,KAAKsI,QAAUA,EACftI,KAAK4U,MAAQ5U,KAAK+a,IAAM/a,KAAKyvB,IAAI,EACjCzvB,KAAKoW,IAAMA,EACXpW,KAAKghC,KAAOA,IAAU78B,EAAO88B,UAAWT,GAAS,GAAK,KACvD,EACA/Q,IAAK,WACJ,IAAIkQ,EAAQiR,EAAM0B,UAAWtyC,KAAKwgC,MAElC,OAAOb,GAASA,EAAM7X,IACrB6X,EACAiR,EAAM0B,UAAUtP,UADVlb,IAAK9nB,IAAK,CAElB,EACAomB,IAAK,SAAUmsB,GACd,IAAIC,EACH7S,EAAQiR,EAAM0B,UAAWtyC,KAAKwgC,MAoB/B,OAlBKxgC,KAAKsI,QAAQmqC,SACjBzyC,KAAK85B,IAAM0Y,EAAQruC,EAAO0sC,OAAQ7wC,KAAK6wC,QACtC0B,EAASvyC,KAAKsI,QAAQmqC,SAAWF,EAAS,EAAG,EAAGvyC,KAAKsI,QAAQmqC,QAC9D,EAEAzyC,KAAK85B,IAAM0Y,EAAQD,EAEpBvyC,KAAK+a,KAAQ/a,KAAKoW,IAAMpW,KAAK4U,OAAU49B,EAAQxyC,KAAK4U,MAE/C5U,KAAKsI,QAAQoqC,MACjB1yC,KAAKsI,QAAQoqC,KAAKtnC,KAAMpL,KAAK2N,KAAM3N,KAAK+a,IAAK/a,IAAK,GAG9C2/B,GAASA,EAAMloB,IACnBkoB,EAEAiR,EAAM0B,UAAUtP,UAFVvrB,IAAKzX,IAAK,EAIVA,IACR,CACD,GAEgB8Y,KAAK9V,UAAY4tC,EAAM5tC,WAEvC4tC,EAAM0B,UAAY,CACjBtP,SAAU,CACTlb,IAAK,SAAU4Y,GAKd,OAA6B,IAAxBA,EAAM/yB,KAAKub,UACa,MAA5BwX,EAAM/yB,KAAM+yB,EAAMF,OAAoD,MAAlCE,EAAM/yB,KAAK/G,MAAO85B,EAAMF,MACrDE,EAAM/yB,KAAM+yB,EAAMF,OAO1Bj2B,EAASpG,EAAOiP,IAAKstB,EAAM/yB,KAAM+yB,EAAMF,KAAM,EAAG,IAGnB,SAAXj2B,EAAwBA,EAAJ,CACvC,EACAkN,IAAK,SAAUipB,GAITv8B,EAAOwuC,GAAGD,KAAMhS,EAAMF,MAC1Br8B,EAAOwuC,GAAGD,KAAMhS,EAAMF,MAAQE,CAAM,EACD,IAAxBA,EAAM/yB,KAAKub,UACiC,MAArDwX,EAAM/yB,KAAK/G,MAAOzC,EAAOqtC,SAAU9Q,EAAMF,QAC1Cr8B,CAAAA,EAAO2sC,SAAUpQ,EAAMF,MAGxBE,EAAM/yB,KAAM+yB,EAAMF,MAASE,EAAM3lB,IAFjC5W,EAAOyC,MAAO85B,EAAM/yB,KAAM+yB,EAAMF,KAAME,EAAM3lB,IAAM2lB,EAAMM,IAAK,CAI/D,CACD,CACD,GAKgBzc,UAAYqsB,EAAM0B,UAAUlK,WAAa,CACxD3wB,IAAK,SAAUipB,GACTA,EAAM/yB,KAAKub,UAAYwX,EAAM/yB,KAAKkG,aACtC6sB,EAAM/yB,KAAM+yB,EAAMF,MAASE,EAAM3lB,IAEnC,CACD,EAEA5W,EAAO0sC,OAAS,CACf+B,OAAQ,SAAUC,GACjB,OAAOA,CACR,EACAC,MAAO,SAAUD,GAChB,MAAO,GAAMrkC,KAAKukC,IAAKF,EAAIrkC,KAAKwkC,EAAG,EAAI,CACxC,EACAhQ,SAAU,OACX,EAEA7+B,EAAOwuC,GAAK/B,EAAM5tC,UAAU8V,KAG5B3U,EAAOwuC,GAAGD,KAAO,GAKjB,IACCO,EAAOC,GA2nBNn8B,EAEA7E,EA5nBDihC,GAAW,yBACXC,GAAO,cAGR,SAASC,KAIR,OAHA7lC,EAAOnI,WAAY,WAClB4tC,EAAQ3/B,SACT,CAAE,EACO2/B,EAAQ9uC,EAAO4W,IAAI,CAC7B,CAGA,SAASu4B,GAAOpyC,EAAMqyC,GACrB,IAAIxL,EACH1Y,EAAQ,CAAE3b,OAAQxS,CAAK,EACvBP,EAAI,EAKL,IADA4yC,EAAeA,EAAe,EAAI,EAC1B5yC,EAAI,EAAIA,GAAK,EAAI4yC,EAExBlkB,EAAO,UADP0Y,EAAQ3H,EAAWz/B,KACS0uB,EAAO,UAAY0Y,GAAU7mC,EAO1D,OAJKqyC,IACJlkB,EAAMpd,QAAUod,EAAM5b,MAAQvS,GAGxBmuB,CACR,CAEA,SAASmkB,GAAa9pC,EAAO82B,EAAMiT,GAKlC,IAJA,IAAI/S,EACHkK,GAAe8I,EAAUC,SAAUnT,IAAU,IAAK/Z,OAAQitB,EAAUC,SAAU,IAAM,EACpFpvC,EAAQ,EACR7D,EAASkqC,EAAWlqC,OACb6D,EAAQ7D,EAAQ6D,CAAK,GAC5B,GAAOm8B,EAAQkK,EAAYrmC,GAAQ6G,KAAMqoC,EAAWjT,EAAM92B,CAAM,EAG/D,OAAOg3B,CAGV,CAwLA,SAASgT,EAAW/lC,EAAMimC,EAAYtrC,GACrC,IAAIiC,EACHspC,EAtCGtvC,EAAOoC,EAAMkqC,EAAQnnC,EAAOi2B,EAuC/Bp7B,EAAQ,EACR7D,EAASgzC,EAAUI,WAAWpzC,OAC9Bs7B,EAAW73B,EAAOy3B,SAAS,EAAEG,OAAQ,WAGpC,OAAOgY,EAAKpmC,IACb,CAAE,EACFomC,EAAO,WACN,GAAKF,EACJ,MAAO,CAAA,EAYR,IAVA,IAAIG,EAAcf,GAASI,GAAY,EACtCnW,EAAY1uB,KAAK6H,IAAK,EAAGo9B,EAAUj5B,UAAYi5B,EAAUhB,SAAWuB,CAAY,EAKhFzB,EAAU,GADHrV,EAAYuW,EAAUhB,UAAY,GAEzCluC,EAAQ,EACR7D,EAAS+yC,EAAUQ,OAAOvzC,OAEnB6D,EAAQ7D,EAAS6D,CAAK,GAC7BkvC,EAAUQ,OAAQ1vC,GAAQ6hB,IAAKmsB,CAAQ,EAKxC,OAFAvW,EAASqB,WAAY1vB,EAAM,CAAE8lC,EAAWlB,EAASrV,EAAY,EAExDqV,EAAU,GAAK7xC,EACZw8B,GAEPlB,EAASsB,YAAa3vB,EAAM,CAAE8lC,EAAY,EACnC,CAAA,EAET,EACAA,EAAYzX,EAASF,QAAS,CAC7BnuB,KAAMA,EACNi6B,MAAOzjC,EAAOuE,OAAQ,GAAIkrC,CAAW,EACrC7jC,KAAM5L,EAAOuE,OAAQ,CAAA,EAAM,CAC1BwrC,cAAe,GACfrD,OAAQ1sC,EAAO0sC,OAAO7N,QACvB,EAAG16B,CAAQ,EACX6rC,mBAAoBP,EACpBQ,gBAAiB9rC,EACjBkS,UAAWy4B,GAASI,GAAY,EAChCZ,SAAUnqC,EAAQmqC,SAClBwB,OAAQ,GACRT,YAAa,SAAUhT,EAAMpqB,GACxBsqB,EAAQv8B,EAAOysC,MAAOjjC,EAAM8lC,EAAU1jC,KAAMywB,EAAMpqB,EACpDq9B,EAAU1jC,KAAKmkC,cAAe1T,IAAUiT,EAAU1jC,KAAK8gC,MAAO,EAEhE,OADA4C,EAAUQ,OAAO3uC,KAAMo7B,CAAM,EACtBA,CACR,EACAb,KAAM,SAAUwU,GACf,IAAI9vC,EAAQ,EAIX7D,EAAS2zC,EAAUZ,EAAUQ,OAAOvzC,OAAS,EAC9C,GAAKmzC,CAAAA,EAAL,CAIA,IADAA,EAAU,CAAA,EACFtvC,EAAQ7D,EAAS6D,CAAK,GAC7BkvC,EAAUQ,OAAQ1vC,GAAQ6hB,IAAK,CAAE,EAK7BiuB,GACJrY,EAASqB,WAAY1vB,EAAM,CAAE8lC,EAAW,EAAG,EAAI,EAC/CzX,EAASsB,YAAa3vB,EAAM,CAAE8lC,EAAWY,EAAU,GAEnDrY,EAASsY,WAAY3mC,EAAM,CAAE8lC,EAAWY,EAAU,CAZnD,CAcA,OAAOr0C,IACR,CACD,CAAE,EACF4nC,EAAQ6L,EAAU7L,MArHCA,EAuHRA,EAvHesM,EAuHRT,EAAU1jC,KAAKmkC,cAnHlC,IAAM3vC,KAASqjC,EAed,GAbAiJ,EAASqD,EADTvtC,EAAOxC,EAAOolB,UAAWhlB,CAAM,GAE/BmF,EAAQk+B,EAAOrjC,GACVJ,EAAOsC,QAASiD,CAAM,IAC1BmnC,EAASnnC,EAAO,GAChBA,EAAQk+B,EAAOrjC,GAAUmF,EAAO,IAG5BnF,IAAUoC,IACdihC,EAAOjhC,GAAS+C,EAChB,OAAOk+B,EAAOrjC,KAGfo7B,EAAQx7B,EAAO2sC,SAAUnqC,KACX,WAAYg5B,EAMzB,IAAMp7B,KALNmF,EAAQi2B,EAAMsS,OAAQvoC,CAAM,EAC5B,OAAOk+B,EAAOjhC,GAIC+C,EACNnF,KAASqjC,IAChBA,EAAOrjC,GAAUmF,EAAOnF,GACxB2vC,EAAe3vC,GAAUssC,QAI3BqD,EAAevtC,GAASkqC,EAyF1B,KAAQtsC,EAAQ7D,EAAS6D,CAAK,GAE7B,GADAgG,EAASmpC,EAAUI,WAAYvvC,GAAQ6G,KAAMqoC,EAAW9lC,EAAMi6B,EAAO6L,EAAU1jC,IAAK,EAMnF,OAJK5L,EAAOskB,WAAYle,EAAOs1B,IAAK,IACnC17B,EAAOy7B,YAAa6T,EAAU9lC,KAAM8lC,EAAU1jC,KAAKqrB,KAAM,EAAEyE,KAC1D17B,EAAOgmB,MAAO5f,EAAOs1B,KAAMt1B,CAAO,GAE7BA,EAmBT,OAfApG,EAAOikB,IAAKwf,EAAO4L,GAAaC,CAAU,EAErCtvC,EAAOskB,WAAYgrB,EAAU1jC,KAAK6E,KAAM,GAC5C6+B,EAAU1jC,KAAK6E,MAAMxJ,KAAMuC,EAAM8lC,CAAU,EAG5CtvC,EAAOwuC,GAAG4B,MACTpwC,EAAOuE,OAAQqrC,EAAM,CACpBpmC,KAAMA,EACN6mC,KAAMf,EACNrY,MAAOqY,EAAU1jC,KAAKqrB,KACvB,CAAE,CACH,EAGOqY,EAAUnX,SAAUmX,EAAU1jC,KAAKusB,QAAS,EACjDlqB,KAAMqhC,EAAU1jC,KAAKqC,KAAMqhC,EAAU1jC,KAAK5H,QAAS,EACnD8zB,KAAMwX,EAAU1jC,KAAKksB,IAAK,EAC1BF,OAAQ0X,EAAU1jC,KAAKgsB,MAAO,CACjC,CAEA53B,EAAOuvC,UAAYvvC,EAAOuE,OAAQgrC,EAAW,CAE5CC,SAAU,CACTc,IAAK,CAAE,SAAUjU,EAAM92B,GACtB,IAAIg3B,EAAQ1gC,KAAKwzC,YAAahT,EAAM92B,CAAM,EAE1C,OADA62B,GAAWG,EAAM/yB,KAAM6yB,EAAML,GAAQzR,KAAMhlB,CAAM,EAAGg3B,CAAM,EACnDA,CACR,EACD,EAEAgU,QAAS,SAAU9M,EAAOlkC,GAYzB,IAJA,IAAI88B,EACHj8B,EAAQ,EACR7D,GAPAknC,EAFIzjC,EAAOskB,WAAYmf,CAAM,GAC7BlkC,EAAWkkC,EACH,CAAE,MAEFA,EAAMliC,MAAOg1B,CAAU,GAKhBh6B,OAER6D,EAAQ7D,EAAS6D,CAAK,GAC7Bi8B,EAAOoH,EAAOrjC,GACdmvC,EAAUC,SAAUnT,GAASkT,EAAUC,SAAUnT,IAAU,GAC3DkT,EAAUC,SAAUnT,GAAOlP,QAAS5tB,CAAS,CAE/C,EAEAowC,WAAY,CAvUb,SAA2BnmC,EAAMi6B,EAAO73B,GAEvC,IAAIywB,EAAM92B,EAAO2oC,EAAQ3R,EAAOf,EAAOgV,EAASnI,EAC/CgI,EAAOx0C,KACPspC,EAAO,GACP1iC,EAAQ+G,EAAK/G,MACbupC,EAASxiC,EAAKub,UAAYmX,GAAU1yB,CAAK,EACzCinC,EAAWzwC,EAAOo7B,MAAO5xB,EAAM,QAAS,EAsEzC,IAAM6yB,KAnEAzwB,EAAKqrB,QAEa,OADvBuE,EAAQx7B,EAAOy7B,YAAajyB,EAAM,IAAK,GAC5BknC,WACVlV,EAAMkV,SAAW,EACjBF,EAAUhV,EAAMhL,MAAM2G,KACtBqE,EAAMhL,MAAM2G,KAAO,WACZqE,EAAMkV,UACXF,EAAQ,CAEV,GAEDhV,EAAMkV,QAAQ,GAEdL,EAAKzY,OAAQ,WAIZyY,EAAKzY,OAAQ,WACZ4D,EAAMkV,QAAQ,GACR1wC,EAAOi3B,MAAOztB,EAAM,IAAK,EAAEjN,QAChCi/B,EAAMhL,MAAM2G,KAAK,CAEnB,CAAE,CACH,CAAE,GAIoB,IAAlB3tB,EAAKub,WAAoB,WAAY0e,GAAS,UAAWA,KAM7D73B,EAAK+kC,SAAW,CAAEluC,EAAMkuC,SAAUluC,EAAMmuC,UAAWnuC,EAAMouC,WAUnC,YAHK,UAH3BxI,EAAUroC,EAAOiP,IAAKzF,EAAM,SAAU,GAIrCxJ,EAAOo7B,MAAO5xB,EAAM,YAAa,GAAK8+B,GAAgB9+B,EAAKqJ,QAAS,EAAIw1B,KAEP,SAAhCroC,EAAOiP,IAAKzF,EAAM,OAAQ,IAIrDyZ,EAAQ0W,wBAA8D,WAApC2O,GAAgB9+B,EAAKqJ,QAAS,EAGrEpQ,EAAMo3B,KAAO,EAFbp3B,EAAM4lC,QAAU,gBAOdz8B,EAAK+kC,WACTluC,EAAMkuC,SAAW,SACX1tB,EAAQ6Y,iBAAiB,GAC9BuU,EAAKzY,OAAQ,WACZn1B,EAAMkuC,SAAW/kC,EAAK+kC,SAAU,GAChCluC,EAAMmuC,UAAYhlC,EAAK+kC,SAAU,GACjCluC,EAAMouC,UAAYjlC,EAAK+kC,SAAU,EAClC,CAAE,GAKUlN,EAEb,GADAl+B,EAAQk+B,EAAOpH,GACV2S,GAASzkB,KAAMhlB,CAAM,EAAI,CAG7B,GAFA,OAAOk+B,EAAOpH,GACd6R,EAASA,GAAoB,WAAV3oC,EACdA,KAAYymC,EAAS,OAAS,QAAW,CAI7C,GAAe,SAAVzmC,GAAoBkrC,CAAAA,GAAYA,EAAUpU,KAAWltB,UAGzD,SAFA68B,EAAS,CAAA,CAIX,CACA7G,EAAM9I,GAASoU,GAAYA,EAAUpU,IAAUr8B,EAAOyC,MAAO+G,EAAM6yB,CAAK,CAGzE,MACCgM,EAAUl5B,UAIZ,GAAMnP,EAAO8kB,cAAeqgB,CAAK,EAwCkD,YAAzD,SAAZkD,EAAqBC,GAAgB9+B,EAAKqJ,QAAS,EAAIw1B,KACpE5lC,EAAM4lC,QAAUA,QAdhB,IAAMhM,KA1BDoU,EACC,WAAYA,IAChBzE,EAASyE,EAASzE,QAGnByE,EAAWzwC,EAAOo7B,MAAO5xB,EAAM,SAAU,EAAG,EAIxC0kC,IACJuC,EAASzE,OAAS,CAACA,GAEfA,EACJhsC,EAAQwJ,CAAK,EAAE6L,KAAK,EAEpBg7B,EAAKpiC,KAAM,WACVjO,EAAQwJ,CAAK,EAAEykC,KAAK,CACrB,CAAE,EAEHoC,EAAKpiC,KAAM,WAGV,IAFA,IAAIouB,KACJr8B,EAAOq7B,YAAa7xB,EAAM,QAAS,EACrB27B,EACbnlC,EAAOyC,MAAO+G,EAAM6yB,EAAM8I,EAAM9I,EAAO,CAEzC,CAAE,EACY8I,EACb5I,EAAQ8S,GAAarD,EAASyE,EAAUpU,GAAS,EAAGA,EAAMgU,CAAK,EAEvDhU,KAAQoU,IACfA,EAAUpU,GAASE,EAAM9rB,MACpBu7B,IACJzP,EAAMtqB,IAAMsqB,EAAM9rB,MAClB8rB,EAAM9rB,MAAiB,UAAT4rB,GAA6B,WAATA,EAAoB,EAAI,GAS/D,GA0LCyU,UAAW,SAAUvxC,EAAU+nC,GACzBA,EACJiI,EAAUI,WAAWxiB,QAAS5tB,CAAS,EAEvCgwC,EAAUI,WAAWxuC,KAAM5B,CAAS,CAEtC,CACD,CAAE,EAEFS,EAAO+wC,MAAQ,SAAUA,EAAOrE,EAAQzsC,GACvC,IAAI+wC,EAAMD,GAA0B,UAAjB,OAAOA,EAAqB/wC,EAAOuE,OAAQ,GAAIwsC,CAAM,EAAI,CAC3E/sC,SAAU/D,GAAM,CAACA,GAAMysC,GACtB1sC,EAAOskB,WAAYysB,CAAM,GAAKA,EAC/BzC,SAAUyC,EACVrE,OAAQzsC,GAAMysC,GAAUA,GAAU,CAAC1sC,EAAOskB,WAAYooB,CAAO,GAAKA,CACnE,EAwBA,OAtBAsE,EAAI1C,SAAWtuC,EAAOwuC,GAAG7lC,IAAM,EAA4B,UAAxB,OAAOqoC,EAAI1C,SAAwB0C,EAAI1C,SACzE0C,EAAI1C,YAAYtuC,EAAOwuC,GAAGyC,OACzBjxC,EAAOwuC,GAAGyC,OAAQD,EAAI1C,UAAatuC,EAAOwuC,GAAGyC,OAAOpS,SAGpC,MAAbmS,EAAI/Z,OAA+B,CAAA,IAAd+Z,EAAI/Z,QAC7B+Z,EAAI/Z,MAAQ,MAIb+Z,EAAI/H,IAAM+H,EAAIhtC,SAEdgtC,EAAIhtC,SAAW,WACThE,EAAOskB,WAAY0sB,EAAI/H,GAAI,GAC/B+H,EAAI/H,IAAIhiC,KAAMpL,IAAK,EAGfm1C,EAAI/Z,OACRj3B,EAAOs7B,QAASz/B,KAAMm1C,EAAI/Z,KAAM,CAElC,EAEO+Z,CACR,EAEAhxC,EAAOC,GAAGsE,OAAQ,CACjB2sC,OAAQ,SAAUH,EAAOI,EAAIzE,EAAQntC,GAGpC,OAAO1D,KAAK0M,OAAQ2zB,EAAS,EAAEjtB,IAAK,UAAW,CAAE,EAAEoG,KAAK,EAGtDpD,IAAI,EAAEm/B,QAAS,CAAEtjC,QAASqjC,CAAG,EAAGJ,EAAOrE,EAAQntC,CAAS,CAC3D,EACA6xC,QAAS,SAAU/U,EAAM0U,EAAOrE,EAAQntC,GACvC,IAAIixB,EAAQxwB,EAAO8kB,cAAeuX,CAAK,EACtCgV,EAASrxC,EAAO+wC,MAAOA,EAAOrE,EAAQntC,CAAS,EAC/C+xC,EAAc,WAGb,IAAIjB,EAAOd,EAAW1zC,KAAMmE,EAAOuE,OAAQ,GAAI83B,CAAK,EAAGgV,CAAO,GAGzD7gB,GAASxwB,EAAOo7B,MAAOv/B,KAAM,QAAS,IAC1Cw0C,EAAK3U,KAAM,CAAA,CAAK,CAElB,EAGD,OAFC4V,EAAYC,OAASD,EAEf9gB,GAA0B,CAAA,IAAjB6gB,EAAOpa,MACtBp7B,KAAKsE,KAAMmxC,CAAY,EACvBz1C,KAAKo7B,MAAOoa,EAAOpa,MAAOqa,CAAY,CACxC,EACA5V,KAAM,SAAU3+B,EAAM6+B,EAAYsU,GACjC,IAAIsB,EAAY,SAAUhW,GACzB,IAAIE,EAAOF,EAAME,KACjB,OAAOF,EAAME,KACbA,EAAMwU,CAAQ,CACf,EAWA,MATqB,UAAhB,OAAOnzC,IACXmzC,EAAUtU,EACVA,EAAa7+B,EACbA,EAAOoS,WAEHysB,GAAuB,CAAA,IAAT7+B,GAClBlB,KAAKo7B,MAAOl6B,GAAQ,KAAM,EAAG,EAGvBlB,KAAKsE,KAAM,WACjB,IAAIm7B,EAAU,CAAA,EACbl7B,EAAgB,MAARrD,GAAgBA,EAAO,aAC/B00C,EAASzxC,EAAOyxC,OAChB/sC,EAAO1E,EAAOo7B,MAAOv/B,IAAK,EAE3B,GAAKuE,EACCsE,EAAMtE,IAAWsE,EAAMtE,GAAQs7B,MACnC8V,EAAW9sC,EAAMtE,EAAQ,OAG1B,IAAMA,KAASsE,EACTA,EAAMtE,IAAWsE,EAAMtE,GAAQs7B,MAAQuT,GAAKruC,KAAMR,CAAM,GAC5DoxC,EAAW9sC,EAAMtE,EAAQ,EAK5B,IAAMA,EAAQqxC,EAAOl1C,OAAQ6D,CAAK,IAC5BqxC,EAAQrxC,GAAQoJ,OAAS3N,MACnB,MAARkB,GAAgB00C,EAAQrxC,GAAQ62B,QAAUl6B,IAE5C00C,EAAQrxC,GAAQiwC,KAAK3U,KAAMwU,CAAQ,EACnC5U,EAAU,CAAA,EACVmW,EAAOpxC,OAAQD,EAAO,CAAE,GAOrBk7B,CAAAA,GAAY4U,GAChBlwC,EAAOs7B,QAASz/B,KAAMkB,CAAK,CAE7B,CAAE,CACH,EACAw0C,OAAQ,SAAUx0C,GAIjB,MAHc,CAAA,IAATA,IACJA,EAAOA,GAAQ,MAETlB,KAAKsE,KAAM,WACjB,IAAIC,EACHsE,EAAO1E,EAAOo7B,MAAOv/B,IAAK,EAC1Bo7B,EAAQvyB,EAAM3H,EAAO,SACrBy+B,EAAQ92B,EAAM3H,EAAO,cACrB00C,EAASzxC,EAAOyxC,OAChBl1C,EAAS06B,EAAQA,EAAM16B,OAAS,EAajC,IAVAmI,EAAK6sC,OAAS,CAAA,EAGdvxC,EAAOi3B,MAAOp7B,KAAMkB,EAAM,EAAG,EAExBy+B,GAASA,EAAME,MACnBF,EAAME,KAAKz0B,KAAMpL,KAAM,CAAA,CAAK,EAIvBuE,EAAQqxC,EAAOl1C,OAAQ6D,CAAK,IAC5BqxC,EAAQrxC,GAAQoJ,OAAS3N,MAAQ41C,EAAQrxC,GAAQ62B,QAAUl6B,IAC/D00C,EAAQrxC,GAAQiwC,KAAK3U,KAAM,CAAA,CAAK,EAChC+V,EAAOpxC,OAAQD,EAAO,CAAE,GAK1B,IAAMA,EAAQ,EAAGA,EAAQ7D,EAAQ6D,CAAK,GAChC62B,EAAO72B,IAAW62B,EAAO72B,GAAQmxC,QACrCta,EAAO72B,GAAQmxC,OAAOtqC,KAAMpL,IAAK,EAKnC,OAAO6I,EAAK6sC,MACb,CAAE,CACH,CACD,CAAE,EAEFvxC,EAAOG,KAAM,CAAE,SAAU,OAAQ,QAAU,SAAU3D,EAAGgG,GACvD,IAAIkvC,EAAQ1xC,EAAOC,GAAIuC,GACvBxC,EAAOC,GAAIuC,GAAS,SAAUuuC,EAAOrE,EAAQntC,GAC5C,OAAgB,MAATwxC,GAAkC,WAAjB,OAAOA,EAC9BW,EAAMrwC,MAAOxF,KAAMoN,SAAU,EAC7BpN,KAAKu1C,QAASjC,GAAO3sC,EAAM,CAAA,CAAK,EAAGuuC,EAAOrE,EAAQntC,CAAS,CAC7D,CACD,CAAE,EAGFS,EAAOG,KAAM,CACZwxC,UAAWxC,GAAO,MAAO,EACzByC,QAASzC,GAAO,MAAO,EACvB0C,YAAa1C,GAAO,QAAS,EAC7B2C,OAAQ,CAAEhkC,QAAS,MAAO,EAC1BikC,QAAS,CAAEjkC,QAAS,MAAO,EAC3BkkC,WAAY,CAAElkC,QAAS,QAAS,CACjC,EAAG,SAAUtL,EAAMihC,GAClBzjC,EAAOC,GAAIuC,GAAS,SAAUuuC,EAAOrE,EAAQntC,GAC5C,OAAO1D,KAAKu1C,QAAS3N,EAAOsN,EAAOrE,EAAQntC,CAAS,CACrD,CACD,CAAE,EAEFS,EAAOyxC,OAAS,GAChBzxC,EAAOwuC,GAAGoB,KAAO,WAChB,IAAIQ,EACHqB,EAASzxC,EAAOyxC,OAChBj1C,EAAI,EAIL,IAFAsyC,EAAQ9uC,EAAO4W,IAAI,EAEXpa,EAAIi1C,EAAOl1C,OAAQC,CAAC,IAC3B4zC,EAAQqB,EAAQj1C,IAGJ,GAAKi1C,EAAQj1C,KAAQ4zC,GAChCqB,EAAOpxC,OAAQ7D,CAAC,GAAI,CAAE,EAIlBi1C,EAAOl1C,QACZyD,EAAOwuC,GAAG9S,KAAK,EAEhBoT,EAAQ3/B,SACT,EAEAnP,EAAOwuC,GAAG4B,MAAQ,SAAUA,GAC3BpwC,EAAOyxC,OAAOtwC,KAAMivC,CAAM,EACrBA,EAAM,EACVpwC,EAAOwuC,GAAG/9B,MAAM,EAEhBzQ,EAAOyxC,OAAO9pB,IAAI,CAEpB,EAEA3nB,EAAOwuC,GAAGyD,SAAW,GAErBjyC,EAAOwuC,GAAG/9B,MAAQ,WACXs+B,GAAAA,IACK1lC,EAAO6oC,YAAalyC,EAAOwuC,GAAGoB,KAAM5vC,EAAOwuC,GAAGyD,QAAS,CAEnE,EAEAjyC,EAAOwuC,GAAG9S,KAAO,WAChBryB,EAAO8oC,cAAepD,EAAQ,EAC9BA,GAAU,IACX,EAEA/uC,EAAOwuC,GAAGyC,OAAS,CAClBmB,KAAM,IACNC,KAAM,IAGNxT,SAAU,GACX,EAKA7+B,EAAOC,GAAGqyC,MAAQ,SAAUn8B,EAAMpZ,GAIjC,OAHAoZ,EAAOnW,EAAOwuC,IAAKxuC,EAAOwuC,GAAGyC,OAAQ96B,IAAiBA,EAG/Cta,KAAKo7B,MAFZl6B,EAAOA,GAAQ,KAEU,SAAU2U,EAAM8pB,GACxC,IAAI9/B,EAAU2N,EAAOnI,WAAYwQ,EAAMyE,CAAK,EAC5CqlB,EAAME,KAAO,WACZryB,EAAOH,aAAcxN,CAAQ,CAC9B,CACD,CAAE,CACH,EAKEkX,EAAQtX,EAASqG,cAAe,OAAQ,EACxCgb,EAAMrhB,EAASqG,cAAe,KAAM,EACpCoM,EAASzS,EAASqG,cAAe,QAAS,EAC1CqvC,EAAMjjC,EAAO9L,YAAa3G,EAASqG,cAAe,QAAS,CAAE,GAI9Dgb,EADMrhB,EAASqG,cAAe,KAAM,GAChC+B,aAAc,YAAa,GAAI,EACnCiZ,EAAIpR,UAAY,qEAChBkc,EAAI9K,EAAI7c,qBAAsB,GAAI,EAAG,GAIrC8S,EAAMlP,aAAc,OAAQ,UAAW,EACvCiZ,EAAI1a,YAAa2Q,CAAM,GAEvB6U,EAAI9K,EAAI7c,qBAAsB,GAAI,EAAG,IAGnC2C,MAAM6I,QAAU,UAIlB2X,EAAQsvB,gBAAoC,MAAlB51B,EAAI9N,UAI9BoU,EAAQxgB,MAAQ,MAAM7B,KAAM6mB,EAAEhkB,aAAc,OAAQ,CAAE,EAItDwf,EAAQuvB,eAA8C,OAA7B/qB,EAAEhkB,aAAc,MAAO,EAGhDwf,EAAQwvB,QAAU,CAAC,CAAC7/B,EAAMrN,MAI1B0d,EAAQyvB,YAAc1B,EAAI1gB,SAG1BrN,EAAQ0vB,QAAU,CAAC,CAACr3C,EAASqG,cAAe,MAAO,EAAEgxC,QAIrD5kC,EAAOqiB,SAAW,CAAA,EAClBnN,EAAQ2vB,YAAc,CAAC5B,EAAI5gB,UAI3Bxd,EAAQtX,EAASqG,cAAe,OAAQ,GAClC+B,aAAc,QAAS,EAAG,EAChCuf,EAAQrQ,MAA0C,KAAlCA,EAAMnP,aAAc,OAAQ,EAG5CmP,EAAMrN,MAAQ,IACdqN,EAAMlP,aAAc,OAAQ,OAAQ,EACpCuf,EAAQ4vB,WAA6B,MAAhBjgC,EAAMrN,MAI5B,IAAIutC,GAAU,MACbC,GAAU,mBAEX/yC,EAAOC,GAAGsE,OAAQ,CACjBuF,IAAK,SAAUvE,GACd,IAAIi2B,EAAO1X,EAAKQ,EACf9a,EAAO3N,KAAM,GAEd,OAAMoN,UAAU1M,QA2BhB+nB,EAAatkB,EAAOskB,WAAY/e,CAAM,EAE/B1J,KAAKsE,KAAM,SAAU3D,GAGJ,IAAlBX,KAAKkpB,WAWE,OANXjb,EADIwa,EACE/e,EAAM0B,KAAMpL,KAAMW,EAAGwD,EAAQnE,IAAK,EAAEiO,IAAI,CAAE,EAE1CvE,GAKNuE,EAAM,GACoB,UAAf,OAAOA,EAClBA,GAAO,GACI9J,EAAOsC,QAASwH,CAAI,IAC/BA,EAAM9J,EAAOikB,IAAKna,EAAK,SAAUvE,GAChC,OAAgB,MAATA,EAAgB,GAAKA,EAAQ,EACrC,CAAE,IAGHi2B,EAAQx7B,EAAOgzC,SAAUn3C,KAAKkB,OAAUiD,EAAOgzC,SAAUn3C,KAAKgX,SAAS9M,YAAY,KAGjE,QAASy1B,GAAWA,EAAMloB,IAAKzX,KAAMiO,EAAK,OAAQ,IAAMqF,aACzEtT,KAAK0J,MAAQuE,EAEf,CAAE,GA1DIN,GACJgyB,EAAQx7B,EAAOgzC,SAAUxpC,EAAKzM,OAC7BiD,EAAOgzC,SAAUxpC,EAAKqJ,SAAS9M,YAAY,KAI3C,QAASy1B,IACP1X,EAAM0X,EAAM7X,IAAKna,EAAM,OAAQ,KAAQ2F,UAElC2U,EAKc,UAAf,OAFPA,EAAMta,EAAKjE,OAKVue,EAAIpiB,QAASoxC,GAAS,EAAG,EAGlB,MAAPhvB,EAAc,GAAKA,EAGrB,KAAA,CAoCF,CACD,CAAE,EAEF9jB,EAAOuE,OAAQ,CACdyuC,SAAU,CACTvU,OAAQ,CACP9a,IAAK,SAAUna,GACd,IAAIM,EAAM9J,EAAOyL,KAAKjB,KAAMhB,EAAM,OAAQ,EAC1C,OAAc,MAAPM,EACNA,EAMA9J,EAAOklB,KAAMllB,EAAOqL,KAAM7B,CAAK,CAAE,EAAE9H,QAASqxC,GAAS,GAAI,CAC3D,CACD,EACAhlC,OAAQ,CACP4V,IAAK,SAAUna,GAYd,IAXA,IAAWi1B,EACVt6B,EAAUqF,EAAKrF,QACf/D,EAAQoJ,EAAK+mB,cACblO,EAAoB,eAAd7Y,EAAKzM,MAAyBqD,EAAQ,EAC5C64B,EAAS5W,EAAM,KAAO,GACtBnQ,EAAMmQ,EAAMjiB,EAAQ,EAAI+D,EAAQ5H,OAChCC,EAAI4D,EAAQ,EACX8R,EACAmQ,EAAMjiB,EAAQ,EAGR5D,EAAI0V,EAAK1V,CAAC,GAIjB,KAHAiiC,EAASt6B,EAAS3H,IAGJ8zB,UAAY9zB,IAAM4D,KAG5B6iB,EAAQ2vB,YACT,CAACnU,EAAOrO,SAC8B,OAAtCqO,EAAOh7B,aAAc,UAAW,KAC/B,CAACg7B,EAAO/uB,WAAW0gB,UACpB,CAACpwB,EAAO6S,SAAU4rB,EAAO/uB,WAAY,UAAW,GAAM,CAMxD,GAHAnK,EAAQvF,EAAQy+B,CAAO,EAAE30B,IAAI,EAGxBuY,EACJ,OAAO9c,EAIR0zB,EAAO93B,KAAMoE,CAAM,CACpB,CAGD,OAAO0zB,CACR,EAEA3lB,IAAK,SAAU9J,EAAMjE,GAMpB,IALA,IAAI0tC,EAAWxU,EACdt6B,EAAUqF,EAAKrF,QACf80B,EAASj5B,EAAOslB,UAAW/f,CAAM,EACjC/I,EAAI2H,EAAQ5H,OAELC,CAAC,IAGR,GAFAiiC,EAASt6B,EAAS3H,GAEoD,CAAC,EAAlEwD,EAAOwlB,QAASxlB,EAAOgzC,SAASvU,OAAO9a,IAAK8a,CAAO,EAAGxF,CAAO,EAMjE,IACCwF,EAAOnO,SAAW2iB,EAAY,CAAA,CAM/B,CAJE,MAAQvqC,GAGT+1B,EAAO9zB,YACR,MAGA8zB,EAAOnO,SAAW,CAAA,EASpB,OAJM2iB,IACLzpC,EAAK+mB,cAAgB,CAAC,GAGhBpsB,CACR,CACD,CACD,CACD,CAAE,EAGFnE,EAAOG,KAAM,CAAE,QAAS,YAAc,WACrCH,EAAOgzC,SAAUn3C,MAAS,CACzByX,IAAK,SAAU9J,EAAMjE,GACpB,GAAKvF,EAAOsC,QAASiD,CAAM,EAC1B,OAASiE,EAAK6mB,QAA0D,CAAC,EAAjDrwB,EAAOwlB,QAASxlB,EAAQwJ,CAAK,EAAEM,IAAI,EAAGvE,CAAM,CAEtE,CACD,EACM0d,EAAQwvB,UACbzyC,EAAOgzC,SAAUn3C,MAAO8nB,IAAM,SAAUna,GACvC,OAAwC,OAAjCA,EAAK/F,aAAc,OAAQ,EAAa,KAAO+F,EAAKjE,KAC5D,EAEF,CAAE,EAKF,IAAI2tC,EAAUC,GACb/nB,EAAaprB,EAAOotB,KAAKhC,WACzBgoB,GAAc,0BACdb,EAAkBtvB,EAAQsvB,gBAC1Bc,GAAcpwB,EAAQrQ,MA8QnB0gC,IA5QJtzC,EAAOC,GAAGsE,OAAQ,CACjBiG,KAAM,SAAUhI,EAAM+C,GACrB,OAAOy3B,EAAQnhC,KAAMmE,EAAOwK,KAAMhI,EAAM+C,EAA0B,EAAnB0D,UAAU1M,MAAW,CACrE,EAEAiT,WAAY,SAAUhN,GACrB,OAAO3G,KAAKsE,KAAM,WACjBH,EAAOwP,WAAY3T,KAAM2G,CAAK,CAC/B,CAAE,CACH,CACD,CAAE,EAEFxC,EAAOuE,OAAQ,CACdiG,KAAM,SAAUhB,EAAMhH,EAAM+C,GAC3B,IAAIue,EAAK0X,EACR+X,EAAQ/pC,EAAKub,SAGd,GAAe,IAAVwuB,GAAyB,IAAVA,GAAyB,IAAVA,EAKnC,MAAkC,aAA7B,OAAO/pC,EAAK/F,aACTzD,EAAOq8B,KAAM7yB,EAAMhH,EAAM+C,CAAM,GAKxB,IAAVguC,GAAgBvzC,EAAOq0B,SAAU7qB,CAAK,IAC1ChH,EAAOA,EAAKuD,YAAY,EACxBy1B,EAAQx7B,EAAOwzC,UAAWhxC,KACvBxC,EAAOotB,KAAK7rB,MAAMwnB,KAAKnoB,KAAM4B,CAAK,EAAI2wC,GAAWD,IAGhD3tC,IAAU4J,UACC,OAAV5J,EACJvF,KAAAA,EAAOwP,WAAYhG,EAAMhH,CAAK,EAI1Bg5B,GAAS,QAASA,IACpB1X,EAAM0X,EAAMloB,IAAK9J,EAAMjE,EAAO/C,CAAK,KAAQ2M,UACtC2U,GAGRta,EAAK9F,aAAclB,EAAM+C,EAAQ,EAAG,EAC7BA,GAGHi2B,EAAAA,GAAS,QAASA,GAA+C,QAApC1X,EAAM0X,EAAM7X,IAAKna,EAAMhH,CAAK,KAOhD,OAHdshB,EAAM9jB,EAAOyL,KAAKjB,KAAMhB,EAAMhH,CAAK,GAGd2M,UAAY2U,EAClC,EAEA0vB,UAAW,CACVz2C,KAAM,CACLuW,IAAK,SAAU9J,EAAMjE,GACpB,IAKKuE,EALL,GAAK,CAACmZ,EAAQ4vB,YAAwB,UAAVttC,GAC3BvF,EAAO6S,SAAUrJ,EAAM,OAAQ,EAS/B,OALIM,EAAMN,EAAKjE,MACfiE,EAAK9F,aAAc,OAAQ6B,CAAM,EAC5BuE,IACJN,EAAKjE,MAAQuE,GAEPvE,CAET,CACD,CACD,EAEAiK,WAAY,SAAUhG,EAAMjE,GAC3B,IAAI/C,EAAMixC,EACTj3C,EAAI,EACJk3C,EAAYnuC,GAASA,EAAMhE,MAAOg1B,CAAU,EAE7C,GAAKmd,GAA+B,IAAlBlqC,EAAKub,SACtB,KAAUviB,EAAOkxC,EAAWl3C,CAAC,KAC5Bi3C,EAAWzzC,EAAO2zC,QAASnxC,IAAUA,EAGhCxC,EAAOotB,KAAK7rB,MAAMwnB,KAAKnoB,KAAM4B,CAAK,EAGjC6wC,IAAed,GAAmB,CAACa,GAAYxyC,KAAM4B,CAAK,EAC9DgH,EAAMiqC,GAAa,CAAA,EAKnBjqC,EAAMxJ,EAAOolB,UAAW,WAAa5iB,CAAK,GACzCgH,EAAMiqC,GAAa,CAAA,EAKrBzzC,EAAOwK,KAAMhB,EAAMhH,EAAM,EAAG,EAG7BgH,EAAKhG,gBAAiB+uC,EAAkB/vC,EAAOixC,CAAS,CAG3D,CACD,CAAE,EAGFN,GAAW,CACV7/B,IAAK,SAAU9J,EAAMjE,EAAO/C,GAgB3B,MAfe,CAAA,IAAV+C,EAGJvF,EAAOwP,WAAYhG,EAAMhH,CAAK,EACnB6wC,IAAed,GAAmB,CAACa,GAAYxyC,KAAM4B,CAAK,EAGrEgH,EAAK9F,aAAc,CAAC6uC,GAAmBvyC,EAAO2zC,QAASnxC,IAAUA,EAAMA,CAAK,EAM5EgH,EAAMxJ,EAAOolB,UAAW,WAAa5iB,CAAK,GAAMgH,EAAMhH,GAAS,CAAA,EAEzDA,CACR,CACD,EAEAxC,EAAOG,KAAMH,EAAOotB,KAAK7rB,MAAMwnB,KAAK7Y,OAAO3O,MAAO,MAAO,EAAG,SAAU/E,EAAGgG,GACxE,IAAIoxC,EAASxoB,EAAY5oB,IAAUxC,EAAOyL,KAAKjB,KAE1C6oC,IAAed,GAAmB,CAACa,GAAYxyC,KAAM4B,CAAK,EAC9D4oB,EAAY5oB,GAAS,SAAUgH,EAAMhH,EAAM+jB,GAC1C,IAAIzC,EAAKud,EAWT,OAVM9a,IAGL8a,EAASjW,EAAY5oB,GACrB4oB,EAAY5oB,GAASshB,EACrBA,EAAqC,MAA/B8vB,EAAQpqC,EAAMhH,EAAM+jB,CAAM,EAC/B/jB,EAAKuD,YAAY,EACjB,KACDqlB,EAAY5oB,GAAS6+B,GAEfvd,CACR,EAEAsH,EAAY5oB,GAAS,SAAUgH,EAAMhH,EAAM+jB,GAC1C,GAAK,CAACA,EACL,OAAO/c,EAAMxJ,EAAOolB,UAAW,WAAa5iB,CAAK,GAChDA,EAAKuD,YAAY,EACjB,IAEH,CAEF,CAAE,EAGIstC,IAAgBd,IACrBvyC,EAAOwzC,UAAUjuC,MAAQ,CACxB+N,IAAK,SAAU9J,EAAMjE,EAAO/C,GAC3B,GAAKxC,CAAAA,EAAO6S,SAAUrJ,EAAM,OAAQ,EAOnC,OAAO0pC,GAAYA,EAAS5/B,IAAK9J,EAAMjE,EAAO/C,CAAK,EAJnDgH,EAAK2qB,aAAe5uB,CAMtB,CACD,GAIKgtC,IAILW,EAAW,CACV5/B,IAAK,SAAU9J,EAAMjE,EAAO/C,GAG3B,IAAIshB,EAAMta,EAAK2iB,iBAAkB3pB,CAAK,EAUtC,GATMshB,GACLta,EAAKqqC,iBACF/vB,EAAMta,EAAK8gB,cAAcwpB,gBAAiBtxC,CAAK,CAClD,EAGDshB,EAAIve,MAAQA,GAAS,GAGP,UAAT/C,GAAoB+C,IAAUiE,EAAK/F,aAAcjB,CAAK,EAC1D,OAAO+C,CAET,CACD,EAGA6lB,EAAWpoB,GAAKooB,EAAW5oB,KAAO4oB,EAAW2oB,OAC5C,SAAUvqC,EAAMhH,EAAM+jB,GAErB,GAAK,CAACA,EACL,OAASzC,EAAMta,EAAK2iB,iBAAkB3pB,CAAK,IAAqB,KAAdshB,EAAIve,MACrDue,EAAIve,MACJ,IAEH,EAGDvF,EAAOgzC,SAASviB,OAAS,CACxB9M,IAAK,SAAUna,EAAMhH,GAChBshB,EAAMta,EAAK2iB,iBAAkB3pB,CAAK,EACtC,GAAKshB,GAAOA,EAAIwJ,UACf,OAAOxJ,EAAIve,KAEb,EACA+N,IAAK4/B,EAAS5/B,GACf,EAIAtT,EAAOwzC,UAAUQ,gBAAkB,CAClC1gC,IAAK,SAAU9J,EAAMjE,EAAO/C,GAC3B0wC,EAAS5/B,IAAK9J,EAAgB,KAAVjE,GAAuBA,EAAO/C,CAAK,CACxD,CACD,EAIAxC,EAAOG,KAAM,CAAE,QAAS,UAAY,SAAU3D,EAAGgG,GAChDxC,EAAOwzC,UAAWhxC,GAAS,CAC1B8Q,IAAK,SAAU9J,EAAMjE,GACpB,GAAe,KAAVA,EAEJ,OADAiE,EAAK9F,aAAclB,EAAM,MAAO,EACzB+C,CAET,CACD,CACD,CAAE,GAGG0d,EAAQxgB,QACbzC,EAAOwzC,UAAU/wC,MAAQ,CACxBkhB,IAAK,SAAUna,GAKd,OAAOA,EAAK/G,MAAM6I,SAAW6D,SAC9B,EACAmE,IAAK,SAAU9J,EAAMjE,GACpB,OAASiE,EAAK/G,MAAM6I,QAAU/F,EAAQ,EACvC,CACD,GAMgB,8CAChB0uC,GAAa,gBAsJVC,IApJJl0C,EAAOC,GAAGsE,OAAQ,CACjB83B,KAAM,SAAU75B,EAAM+C,GACrB,OAAOy3B,EAAQnhC,KAAMmE,EAAOq8B,KAAM75B,EAAM+C,EAA0B,EAAnB0D,UAAU1M,MAAW,CACrE,EAEA43C,WAAY,SAAU3xC,GAErB,OADAA,EAAOxC,EAAO2zC,QAASnxC,IAAUA,EAC1B3G,KAAKsE,KAAM,WAGjB,IACCtE,KAAM2G,GAAS2M,UACf,OAAOtT,KAAM2G,EACC,CAAb,MAAQhC,IACX,CAAE,CACH,CACD,CAAE,EAEFR,EAAOuE,OAAQ,CACd83B,KAAM,SAAU7yB,EAAMhH,EAAM+C,GAC3B,IAAIue,EAAK0X,EACR+X,EAAQ/pC,EAAKub,SAGd,GAAe,IAAVwuB,GAAyB,IAAVA,GAAyB,IAAVA,EAWnC,OAPe,IAAVA,GAAgBvzC,EAAOq0B,SAAU7qB,CAAK,IAG1ChH,EAAOxC,EAAO2zC,QAASnxC,IAAUA,EACjCg5B,EAAQx7B,EAAOmuC,UAAW3rC,IAGtB+C,IAAU4J,UACTqsB,GAAS,QAASA,IACpB1X,EAAM0X,EAAMloB,IAAK9J,EAAMjE,EAAO/C,CAAK,KAAQ2M,UACtC2U,EAGCta,EAAMhH,GAAS+C,EAGpBi2B,GAAS,QAASA,GAA+C,QAApC1X,EAAM0X,EAAM7X,IAAKna,EAAMhH,CAAK,GACtDshB,EAGDta,EAAMhH,EACd,EAEA2rC,UAAW,CACVje,SAAU,CACTvM,IAAK,SAAUna,GAMd,IAAI4qC,EAAWp0C,EAAOyL,KAAKjB,KAAMhB,EAAM,UAAW,EAElD,OAAO4qC,EACN7wC,SAAU6wC,EAAU,EAAG,EACvBd,GAAW1yC,KAAM4I,EAAKqJ,QAAS,GAC9BohC,GAAWrzC,KAAM4I,EAAKqJ,QAAS,GAAKrJ,EAAK1G,KACxC,EACA,CAAC,CACL,CACD,CACD,EAEA6wC,QAAS,CACRU,MAAO,UACPl6B,QAAS,WACV,CACD,CAAE,EAII8I,EAAQuvB,gBAGbxyC,EAAOG,KAAM,CAAE,OAAQ,OAAS,SAAU3D,EAAGgG,GAC5CxC,EAAOmuC,UAAW3rC,GAAS,CAC1BmhB,IAAK,SAAUna,GACd,OAAOA,EAAK/F,aAAcjB,EAAM,CAAE,CACnC,CACD,CACD,CAAE,EASGygB,EAAQyvB,cACb1yC,EAAOmuC,UAAU7d,SAAW,CAC3B3M,IAAK,SAAUna,GACVqiB,EAASriB,EAAKkG,WAUlB,OARKmc,IACJA,EAAO0E,cAGF1E,EAAOnc,aACXmc,EAAOnc,WAAW6gB,cAGb,IACR,EACAjd,IAAK,SAAU9J,GACVqiB,EAASriB,EAAKkG,WACbmc,IACJA,EAAO0E,cAEF1E,EAAOnc,aACXmc,EAAOnc,WAAW6gB,aAGrB,CACD,GAGDvwB,EAAOG,KAAM,CACZ,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,mBACE,WACFH,EAAO2zC,QAAS93C,KAAKkK,YAAY,GAAMlK,IACxC,CAAE,EAGIonB,EAAQ0vB,UACb3yC,EAAO2zC,QAAQhB,QAAU,YAMb,eAEb,SAAS2B,EAAU9qC,GAClB,OAAOxJ,EAAOwK,KAAMhB,EAAM,OAAQ,GAAK,EACxC,CAEAxJ,EAAOC,GAAGsE,OAAQ,CACjBqK,SAAU,SAAUrJ,GACnB,IAAIgvC,EAAS/qC,EAAM8hB,EAAekpB,EAAOn5B,EAAGo5B,EAC3Cj4C,EAAI,EAEL,GAAKwD,EAAOskB,WAAY/e,CAAM,EAC7B,OAAO1J,KAAKsE,KAAM,SAAUkb,GAC3Brb,EAAQnE,IAAK,EAAE+S,SAAUrJ,EAAM0B,KAAMpL,KAAMwf,EAAGi5B,EAAUz4C,IAAK,CAAE,CAAE,CAClE,CAAE,EAGH,GAAsB,UAAjB,OAAO0J,GAAsBA,EAGjC,IAFAgvC,EAAUhvC,EAAMhE,MAAOg1B,CAAU,GAAK,GAE5B/sB,EAAO3N,KAAMW,CAAC,KAKvB,GAJAk4C,EAAWJ,EAAU9qC,CAAK,EAC1B8hB,EAAwB,IAAlB9hB,EAAKub,WACR,IAAM2vB,EAAW,KAAMhzC,QAASwyC,GAAQ,GAAI,EAEpC,CAEV,IADA74B,EAAI,EACMm5B,EAAQD,EAASl5B,CAAC,KACtBiQ,EAAInpB,QAAS,IAAMqyC,EAAQ,GAAI,EAAI,IACvClpB,GAAOkpB,EAAQ,KAMZE,KADLD,EAAaz0C,EAAOklB,KAAMoG,CAAI,IAE7BtrB,EAAOwK,KAAMhB,EAAM,QAASirC,CAAW,CAEzC,CAIF,OAAO54C,IACR,EAEAiT,YAAa,SAAUvJ,GACtB,IAAIgvC,EAAS/qC,EAAM8hB,EAAekpB,EAAOn5B,EAAGo5B,EAC3Cj4C,EAAI,EAEL,GAAKwD,EAAOskB,WAAY/e,CAAM,EAC7B,OAAO1J,KAAKsE,KAAM,SAAUkb,GAC3Brb,EAAQnE,IAAK,EAAEiT,YAAavJ,EAAM0B,KAAMpL,KAAMwf,EAAGi5B,EAAUz4C,IAAK,CAAE,CAAE,CACrE,CAAE,EAGH,GAAK,CAACoN,UAAU1M,OACf,OAAOV,KAAK2O,KAAM,QAAS,EAAG,EAG/B,GAAsB,UAAjB,OAAOjF,GAAsBA,EAGjC,IAFAgvC,EAAUhvC,EAAMhE,MAAOg1B,CAAU,GAAK,GAE5B/sB,EAAO3N,KAAMW,CAAC,KAOvB,GANAk4C,EAAWJ,EAAU9qC,CAAK,EAG1B8hB,EAAwB,IAAlB9hB,EAAKub,WACR,IAAM2vB,EAAW,KAAMhzC,QAASwyC,GAAQ,GAAI,EAEpC,CAEV,IADA74B,EAAI,EACMm5B,EAAQD,EAASl5B,CAAC,KAG3B,KAA2C,CAAC,EAApCiQ,EAAInpB,QAAS,IAAMqyC,EAAQ,GAAI,GACtClpB,EAAMA,EAAI5pB,QAAS,IAAM8yC,EAAQ,IAAK,GAAI,EAMvCE,KADLD,EAAaz0C,EAAOklB,KAAMoG,CAAI,IAE7BtrB,EAAOwK,KAAMhB,EAAM,QAASirC,CAAW,CAEzC,CAIF,OAAO54C,IACR,EAEA84C,YAAa,SAAUpvC,EAAOqvC,GAC7B,IAAI73C,EAAO,OAAOwI,EAElB,MAAyB,WAApB,OAAOqvC,GAAmC,UAAT73C,EAC9B63C,EAAW/4C,KAAK+S,SAAUrJ,CAAM,EAAI1J,KAAKiT,YAAavJ,CAAM,EAG/DvF,EAAOskB,WAAY/e,CAAM,EACtB1J,KAAKsE,KAAM,SAAU3D,GAC3BwD,EAAQnE,IAAK,EAAE84C,YACdpvC,EAAM0B,KAAMpL,KAAMW,EAAG83C,EAAUz4C,IAAK,EAAG+4C,CAAS,EAChDA,CACD,CACD,CAAE,EAGI/4C,KAAKsE,KAAM,WACjB,IAAI0O,EAAWrS,EAAGw4B,EAAM6f,EAExB,GAAc,UAAT93C,EAOJ,IAJAP,EAAI,EACJw4B,EAAOh1B,EAAQnE,IAAK,EACpBg5C,EAAatvC,EAAMhE,MAAOg1B,CAAU,GAAK,GAE/B1nB,EAAYgmC,EAAYr4C,CAAC,KAG7Bw4B,EAAKjmB,SAAUF,CAAU,EAC7BmmB,EAAKlmB,YAAaD,CAAU,EAE5BmmB,EAAKpmB,SAAUC,CAAU,OAKhBtJ,IAAU4J,WAAsB,WAATpS,KAClC8R,EAAYylC,EAAUz4C,IAAK,IAI1BmE,EAAOo7B,MAAOv/B,KAAM,gBAAiBgT,CAAU,EAOhD7O,EAAOwK,KAAM3O,KAAM,QAClBgT,CAAAA,GAAuB,CAAA,IAAVtJ,GAEbvF,EAAOo7B,MAAOv/B,KAAM,eAAgB,GAAK,EAC1C,EAEF,CAAE,CACH,EAEAkT,SAAU,SAAUzF,GAKnB,IAJA,IAAeE,EACdhN,EAAI,EAELqS,EAAY,IAAMvF,EAAW,IACnBE,EAAO3N,KAAMW,CAAC,KACvB,GAAuB,IAAlBgN,EAAKub,UAEgB,CAAC,GADxB,IAAMuvB,EAAU9qC,CAAK,EAAI,KAAM9H,QAASwyC,GAAQ,GAAI,EACpD/xC,QAAS0M,CAAU,EAErB,MAAO,CAAA,EAIT,MAAO,CAAA,CACR,CACD,CAAE,EAQF7O,EAAOG,KAAM,0MAEsD0E,MAAO,GAAI,EAC7E,SAAUrI,EAAGgG,GAGbxC,EAAOC,GAAIuC,GAAS,SAAUkC,EAAMzE,GACnC,OAA0B,EAAnBgJ,UAAU1M,OAChBV,KAAKqE,GAAIsC,EAAM,KAAMkC,EAAMzE,CAAG,EAC9BpE,KAAKuZ,QAAS5S,CAAK,CACrB,CACD,CAAE,EAEFxC,EAAOC,GAAGsE,OAAQ,CACjBuwC,MAAO,SAAUC,EAAQC,GACxB,OAAOn5C,KAAKkpC,WAAYgQ,CAAO,EAAE/P,WAAYgQ,GAASD,CAAO,CAC9D,CACD,CAAE,EAGF,IAAIvzC,EAAW6H,EAAO7H,SAElByzC,GAAQj1C,EAAO4W,IAAI,EAEnBs+B,GAAS,KAITC,GAAe,mIAyElBC,IAvEDp1C,EAAOq6B,UAAY,SAAU31B,GAG5B,IAOI2wC,EACHC,EACAlrC,EATD,OAAKf,EAAOhE,MAAQgE,EAAOhE,KAAKC,MAIxB+D,EAAOhE,KAAKC,MAAOZ,EAAO,EAAG,GAIpC4wC,EAAQ,MACRlrC,EAAMpK,EAAOklB,KAAMxgB,EAAO,EAAG,IAIhB,CAAC1E,EAAOklB,KAAM9a,EAAI1I,QAASyzC,GAAc,SAAUnhB,EAAOuhB,EAAO1lC,EAAMC,GAQpF,OAAe,KAJdwlC,EADID,GAAmBE,EACf,EAIJD,GACGthB,GAIRqhB,EAAkBxlC,GAAQ0lC,EAM1BD,GAAS,CAACxlC,EAAQ,CAACD,EAGZ,GACR,CAAE,CAAE,EACDzC,SAAU,UAAYhD,CAAM,EAAE,EAChCpK,EAAOnD,MAAO,iBAAmB6H,CAAK,EACxC,EAIA1E,EAAOw1C,SAAW,SAAU9wC,GAC3B,IAAIsqB,EACJ,GAAK,CAACtqB,GAAwB,UAAhB,OAAOA,EACpB,OAAO,KAER,IACM2E,EAAOosC,UAEXzmB,GADM,IAAI3lB,EAAOosC,WACPC,gBAAiBhxC,EAAM,UAAW,IAE5CsqB,EAAM,IAAI3lB,EAAO9C,cAAe,kBAAmB,GAC/C3E,SAAQ,QACZotB,EAAI2mB,QAASjxC,CAAK,EAIpB,CAFE,MAAQlE,GACTwuB,EAAM7f,SACP,CAIA,OAHM6f,GAAQA,EAAInkB,iBAAmBmkB,CAAAA,EAAIlvB,qBAAsB,aAAc,EAAEvD,QAC9EyD,EAAOnD,MAAO,gBAAkB6H,CAAK,EAE/BsqB,CACR,EAIS,QACR4mB,GAAM,gBAGNC,GAAW,gCAIXC,GAAa,iBACbC,GAAY,QACZC,GAAO,4DAWPrG,GAAa,GAObsG,GAAa,GAGbC,GAAW,KAAK5zB,OAAQ,GAAI,EAG5B6zB,GAAe30C,EAASsB,KAGxBszC,EAAeJ,GAAKzrB,KAAM4rB,GAAapwC,YAAY,CAAE,GAAK,GAG3D,SAASswC,GAA6BC,GAGrC,OAAO,SAAUC,EAAoB1tC,GAED,UAA9B,OAAO0tC,IACX1tC,EAAO0tC,EACPA,EAAqB,KAGtB,IAAIC,EACHh6C,EAAI,EACJi6C,EAAYF,EAAmBxwC,YAAY,EAAExE,MAAOg1B,CAAU,GAAK,GAEpE,GAAKv2B,EAAOskB,WAAYzb,CAAK,EAG5B,KAAU2tC,EAAWC,EAAWj6C,CAAC,KAGF,MAAzBg6C,EAASrhB,OAAQ,CAAE,GACvBqhB,EAAWA,EAASp1C,MAAO,CAAE,GAAK,KAChCk1C,EAAWE,GAAaF,EAAWE,IAAc,IAAKrpB,QAAStkB,CAAK,IAIpEytC,EAAWE,GAAaF,EAAWE,IAAc,IAAKr1C,KAAM0H,CAAK,CAIvE,CACD,CAGA,SAAS6tC,GAA+BJ,EAAWnyC,EAAS8rC,EAAiB0G,GAE5E,IAAIC,EAAY,GACfC,EAAqBP,IAAcL,GAEpC,SAASa,EAASN,GACjB,IAAIlmB,EAcJ,OAbAsmB,EAAWJ,GAAa,CAAA,EACxBx2C,EAAOG,KAAMm2C,EAAWE,IAAc,GAAI,SAAU9tC,EAAGquC,GAClDC,EAAsBD,EAAoB5yC,EAAS8rC,EAAiB0G,CAAM,EAC9E,MAAoC,UAA/B,OAAOK,GACVH,GAAqBD,EAAWI,GAKtBH,EACJ,EAAGvmB,EAAW0mB,GADf,KAAA,GAHN7yC,EAAQsyC,UAAUtpB,QAAS6pB,CAAoB,EAC/CF,EAASE,CAAoB,EACtB,CAAA,EAIT,CAAE,EACK1mB,CACR,CAEA,OAAOwmB,EAAS3yC,EAAQsyC,UAAW,EAAI,GAAK,CAACG,EAAW,MAASE,EAAS,GAAI,CAC/E,CAKA,SAASG,GAAYhtC,EAAQ9N,GAC5B,IAAIkoB,EAAMjgB,EACT8yC,EAAcl3C,EAAOm3C,aAAaD,aAAe,GAElD,IAAM9yC,KAAOjI,EACPA,EAAKiI,KAAU+K,aACjB+nC,EAAa9yC,GAAQ6F,EAAWoa,EAAAA,GAAiB,IAAUjgB,GAAQjI,EAAKiI,IAO5E,OAJKigB,GACJrkB,EAAOuE,OAAQ,CAAA,EAAM0F,EAAQoa,CAAK,EAG5Bpa,CACR,CA+DA,SAASmtC,GAAaC,EAAGC,EAAUX,EAAOY,GACzC,IAAIC,EAAOC,EAASC,EAAMzxB,EAAKxU,EAC9BkmC,EAAa,GAGblB,EAAYY,EAAEZ,UAAUr1C,MAAM,EAG/B,GAAKq1C,EAAW,GACf,IAAMiB,KAAQL,EAAEM,WACfA,EAAYD,EAAK3xC,YAAY,GAAMsxC,EAAEM,WAAYD,GAOnD,IAHAD,EAAUhB,EAAU3rB,MAAM,EAGlB2sB,GAcP,GAZKJ,EAAEO,eAAgBH,KACtBd,EAAOU,EAAEO,eAAgBH,IAAcH,GAInC,CAAC7lC,GAAQ8lC,GAAaF,EAAEQ,aAC5BP,EAAWD,EAAEQ,WAAYP,EAAUD,EAAEb,QAAS,GAG/C/kC,EAAOgmC,EACPA,EAAUhB,EAAU3rB,MAAM,EAKzB,GAAiB,MAAZ2sB,EAEJA,EAAUhmC,OAGJ,GAAc,MAATA,GAAgBA,IAASgmC,EAAU,CAM9C,GAAK,EAHLC,EAAOC,EAAYlmC,EAAO,IAAMgmC,IAAaE,EAAY,KAAOF,IAI/D,IAAMD,KAASG,EAId,IADA1xB,EAAMuxB,EAAM3yC,MAAO,GAAI,GACb,KAAQ4yC,IAGjBC,EAAOC,EAAYlmC,EAAO,IAAMwU,EAAK,KACpC0xB,EAAY,KAAO1xB,EAAK,KACb,CAGG,CAAA,IAATyxB,EACJA,EAAOC,EAAYH,GAGgB,CAAA,IAAxBG,EAAYH,KACvBC,EAAUxxB,EAAK,GACfwwB,EAAUtpB,QAASlH,EAAK,EAAI,GAE7B,KACD,CAMH,GAAc,CAAA,IAATyxB,EAGJ,GAAKA,GAAQL,EAAY,UACxBC,EAAWI,EAAMJ,CAAS,OAE1B,IACCA,EAAWI,EAAMJ,CAAS,CAM3B,CALE,MAAQ92C,GACT,MAAO,CACNiX,MAAO,cACP5a,MAAO66C,EAAOl3C,EAAI,sBAAwBiR,EAAO,OAASgmC,CAC3D,CACD,CAGH,CAIF,MAAO,CAAEhgC,MAAO,UAAW/S,KAAM4yC,CAAS,CAC3C,CAgoBA,SAASQ,GAActuC,GAGtB,GAAK,CAACxJ,EAAO0O,SAAUlF,EAAK8gB,eAAiBhvB,EAAUkO,CAAK,EAC3D,MAAO,CAAA,EAER,KAAQA,GAA0B,IAAlBA,EAAKub,UAAiB,CACrC,GAA4B,WAXTvb,EAWFA,GAVN/G,OAAS+G,EAAK/G,MAAM4lC,SAAWroC,EAAOiP,IAAKzF,EAAM,SAAU,IAUlB,WAAdA,EAAKzM,KAC1C,MAAO,CAAA,EAERyM,EAAOA,EAAKkG,UACb,CAfD,IAAqBlG,EAgBpB,MAAO,CAAA,CACR,CA3oBAxJ,EAAOuE,OAAQ,CAGd0c,OAAQ,EAGR82B,aAAc,GACdC,KAAM,GAENb,aAAc,CACbx3C,IAAKw2C,GACLp5C,KAAM,MACNk7C,QAzRgB,4DAyRQr3C,KAAMw1C,EAAc,EAAI,EAChD5zB,OAAQ,CAAA,EACR01B,YAAa,CAAA,EACbt2C,QAAO,CAAA,EACPu2C,YAAa,mDAabC,QAAS,CACR9H,IAAK4F,GACL7qC,KAAM,aACNoE,KAAM,YACNuf,IAAK,4BACLqpB,KAAM,mCACP,EAEA/iB,SAAU,CACTtG,IAAK,UACLvf,KAAM,SACN4oC,KAAM,UACP,EAEAT,eAAgB,CACf5oB,IAAK,cACL3jB,KAAM,eACNgtC,KAAM,cACP,EAIAV,WAAY,CAGXW,SAAUvxC,OAGVwxC,YAAa,CAAA,EAGbC,YAAax4C,EAAOq6B,UAGpBoe,WAAYz4C,EAAOw1C,QACpB,EAMA0B,YAAa,CACZv3C,IAAK,CAAA,EACLoJ,QAAS,CAAA,CACV,CACD,EAKA2vC,UAAW,SAAUzuC,EAAQ/E,GAC5B,OAAOA,EAGN+xC,GAAYA,GAAYhtC,EAAQjK,EAAOm3C,YAAa,EAAGjyC,CAAS,EAGhE+xC,GAAYj3C,EAAOm3C,aAAcltC,CAAO,CAC1C,EAEA0uC,cAAetC,GAA6B1G,EAAW,EACvDiJ,cAAevC,GAA6BJ,EAAW,EAGvD4C,KAAM,SAAUl5C,EAAKwE,GAGA,UAAf,OAAOxE,IACXwE,EAAUxE,EACVA,EAAMwP,WAMP,IAMC3S,EAGAs8C,EAGAC,EAGAC,EAGAC,EAEAC,EAGAC,EAGA9B,EAAIr3C,EAAO04C,UAAW,GA5BvBv0C,EAAUA,GAAW,EA4Bc,EAGlCi1C,EAAkB/B,EAAEtuC,SAAWsuC,EAG/BgC,EAAqBhC,EAAEtuC,UACpBqwC,EAAgBr0B,UAAYq0B,EAAgB36C,QAC7CuB,EAAQo5C,CAAgB,EACxBp5C,EAAOrE,MAGTk8B,EAAW73B,EAAOy3B,SAAS,EAC3B6hB,EAAmBt5C,EAAO02B,UAAW,aAAc,EAGnD6iB,EAAalC,EAAEkC,YAAc,GAG7BC,EAAiB,GACjBC,EAAsB,GAGtBhiC,EAAQ,EAGRiiC,EAAW,WAGX/C,EAAQ,CACPl6C,WAAY,EAGZk9C,kBAAmB,SAAUv1C,GAC5B,IAAI7C,EACJ,GAAe,IAAVkW,EAAc,CAClB,GAAK,CAAC0hC,EAEL,IADAA,EAAkB,GACR53C,EAAQs0C,GAAStrB,KAAMwuB,CAAsB,GACtDI,EAAiB53C,EAAO,GAAIwE,YAAY,GAAMxE,EAAO,GAGvDA,EAAQ43C,EAAiB/0C,EAAI2B,YAAY,EAC1C,CACA,OAAgB,MAATxE,EAAgB,KAAOA,CAC/B,EAGAq4C,sBAAuB,WACtB,OAAiB,IAAVniC,EAAcshC,EAAwB,IAC9C,EAGAc,iBAAkB,SAAUr3C,EAAM+C,GACjC,IAAIu0C,EAAQt3C,EAAKuD,YAAY,EAK7B,OAJM0R,IACLjV,EAAOi3C,EAAqBK,GAAUL,EAAqBK,IAAWt3C,EACtEg3C,EAAgBh3C,GAAS+C,GAEnB1J,IACR,EAGAk+C,iBAAkB,SAAUh9C,GAI3B,OAHM0a,IACL4/B,EAAE2C,SAAWj9C,GAEPlB,IACR,EAGA09C,WAAY,SAAUt1B,GAErB,GAAKA,EACJ,GAAKxM,EAAQ,EACZ,IAHF,IAAIjZ,KAGYylB,EAGbs1B,EAAY/6C,GAAS,CAAE+6C,EAAY/6C,GAAQylB,EAAKzlB,SAKjDm4C,EAAM/e,OAAQ3T,EAAK0yB,EAAMl7C,OAAS,EAGpC,OAAOI,IACR,EAGAo+C,MAAO,SAAUC,GACZC,EAAYD,GAAcR,EAK9B,OAJKR,GACJA,EAAUe,MAAOE,CAAU,EAE5BlsC,EAAM,EAAGksC,CAAU,EACZt+C,IACR,CACD,EAwCD,GArCAg8B,EAASF,QAASgf,CAAM,EAAE3yC,SAAWs1C,EAAiBzjB,IACtD8gB,EAAMyD,QAAUzD,EAAM1oC,KACtB0oC,EAAM95C,MAAQ85C,EAAM7e,KAMpBuf,EAAE13C,MAAUA,GAAO03C,EAAE13C,KAAOw2C,IAAiB,IAC3Cz0C,QAAS0zC,GAAO,EAAG,EACnB1zC,QAASq0C,GAAWK,EAAc,GAAM,IAAK,EAG/CiB,EAAEt6C,KAAOoH,EAAQk2C,QAAUl2C,EAAQpH,MAAQs6C,EAAEgD,QAAUhD,EAAEt6C,KAGzDs6C,EAAEZ,UAAYz2C,EAAOklB,KAAMmyB,EAAEb,UAAY,GAAI,EAAEzwC,YAAY,EAAExE,MAAOg1B,CAAU,GAAK,CAAE,IAG/D,MAAjB8gB,EAAEiD,cACNtM,EAAQgI,GAAKzrB,KAAM8sB,EAAE13C,IAAIoG,YAAY,CAAE,EACvCsxC,EAAEiD,YAAc,EAAItM,CAAAA,GACjBA,EAAO,KAAQoI,EAAc,IAAOpI,EAAO,KAAQoI,EAAc,KAChEpI,EAAO,KAAwB,UAAfA,EAAO,GAAkB,KAAO,WAC/CoI,EAAc,KAA+B,UAAtBA,EAAc,GAAkB,KAAO,UAK/DiB,EAAE3yC,MAAQ2yC,EAAEa,aAAiC,UAAlB,OAAOb,EAAE3yC,OACxC2yC,EAAE3yC,KAAO1E,EAAO2gB,MAAO02B,EAAE3yC,KAAM2yC,EAAEkD,WAAY,GAI9C7D,GAA+B/G,GAAY0H,EAAGlzC,EAASwyC,CAAM,EAG9C,IAAVl/B,EAAL,CAuEA,IAAMjb,KAjENy8C,EAAcj5C,EAAOrE,OAAS07C,EAAE70B,SAGQ,GAApBxiB,EAAOihB,MAAM,IAChCjhB,EAAOrE,MAAMyZ,QAAS,WAAY,EAInCiiC,EAAEt6C,KAAOs6C,EAAEt6C,KAAKwmB,YAAY,EAG5B8zB,EAAEmD,WAAa,CAAC1E,GAAWl1C,KAAMy2C,EAAEt6C,IAAK,EAIxC+7C,EAAWzB,EAAE13C,IAGP03C,EAAEmD,aAGFnD,EAAE3yC,OACNo0C,EAAazB,EAAE13C,MAASu1C,GAAOt0C,KAAMk4C,CAAS,EAAI,IAAM,KAAQzB,EAAE3yC,KAGlE,OAAO2yC,EAAE3yC,MAIO,CAAA,IAAZ2yC,EAAEv4C,QACNu4C,EAAE13C,IAAMi2C,GAAIh1C,KAAMk4C,CAAS,EAG1BA,EAASp3C,QAASk0C,GAAK,OAASX,EAAK,EAAG,EAGxC6D,GAAa5D,GAAOt0C,KAAMk4C,CAAS,EAAI,IAAM,KAAQ,KAAO7D,EAAK,KAK/DoC,EAAEoD,aACDz6C,EAAO+3C,aAAce,IACzBnC,EAAMkD,iBAAkB,oBAAqB75C,EAAO+3C,aAAce,EAAW,EAEzE94C,EAAOg4C,KAAMc,KACjBnC,EAAMkD,iBAAkB,gBAAiB75C,EAAOg4C,KAAMc,EAAW,GAK9DzB,EAAE3yC,MAAQ2yC,EAAEmD,YAAgC,CAAA,IAAlBnD,EAAEc,aAAyBh0C,EAAQg0C,cACjExB,EAAMkD,iBAAkB,eAAgBxC,EAAEc,WAAY,EAIvDxB,EAAMkD,iBACL,SACAxC,EAAEZ,UAAW,IAAOY,EAAEe,QAASf,EAAEZ,UAAW,IAC3CY,EAAEe,QAASf,EAAEZ,UAAW,KACA,MAArBY,EAAEZ,UAAW,GAAc,KAAOP,GAAW,WAAa,IAC7DmB,EAAEe,QAAS,IACb,EAGWf,EAAEqD,QACZ/D,EAAMkD,iBAAkBr9C,EAAG66C,EAAEqD,QAASl+C,EAAI,EAI3C,GAAK66C,EAAEsD,aAC+C,CAAA,IAAnDtD,EAAEsD,WAAW1zC,KAAMmyC,EAAiBzC,EAAOU,CAAE,GAAyB,IAAV5/B,GAG9D,OAAOk/B,EAAMsD,MAAM,EAOpB,IAAMz9C,KAHNk9C,EAAW,QAGA,CAAEU,QAAS,EAAGv9C,MAAO,EAAGmH,SAAU,CAAE,EAC9C2yC,EAAOn6C,GAAK66C,EAAG76C,EAAI,EAOpB,GAHA08C,EAAYxC,GAA+BT,GAAYoB,EAAGlzC,EAASwyC,CAAM,EAKlE,CASN,GARAA,EAAMl6C,WAAa,EAGdw8C,GACJI,EAAmBjkC,QAAS,WAAY,CAAEuhC,EAAOU,EAAI,EAIvC,IAAV5/B,EACJ,OAAOk/B,EAIHU,EAAEz1C,UAAqB,EAAZy1C,EAAE37C,UACjBs9C,EAAe3vC,EAAOnI,WAAY,WACjCy1C,EAAMsD,MAAO,SAAU,CACxB,EAAG5C,EAAE37C,OAAQ,GAGd,IACC+b,EAAQ,EACRyhC,EAAU0B,KAAMpB,EAAgBvrC,CAAK,CAWtC,CAVE,MAAQzN,GAGT,GAAKiX,EAAAA,EAAQ,GAKZ,MAAMjX,EAJNyN,EAAM,CAAC,EAAGzN,CAAE,CAMd,CACD,MAnCCyN,EAAM,CAAC,EAAG,cAAe,CA9F1B,CAsPA,OAAO0oC,EAlHP,SAAS1oC,EAAMxS,EAAQo/C,EAAkBC,EAAWJ,GACnD,IAAeN,EAASv9C,EAAOy6C,EAC9B4C,EAAaW,EAGC,IAAVpjC,IAKLA,EAAQ,EAGHuhC,GACJ3vC,EAAOH,aAAc8vC,CAAa,EAKnCE,EAAY/pC,UAGZ4pC,EAAwB2B,GAAW,GAGnC/D,EAAMl6C,WAAsB,EAAThB,EAAa,EAAI,EAGpC87C,EAAsB,KAAV97C,GAAiBA,EAAS,KAAkB,MAAXA,EAGxCq/C,IACJxD,EA3kBJ,SAA8BD,EAAGV,EAAOmE,GAMvC,IALA,IAAIC,EAAeC,EAAIC,EAAel+C,EACrCu4B,EAAW+hB,EAAE/hB,SACbmhB,EAAYY,EAAEZ,UAGY,MAAnBA,EAAW,IAClBA,EAAU3rB,MAAM,EACXkwB,IAAO7rC,YACX6rC,EAAK3D,EAAE2C,UAAYrD,EAAMgD,kBAAmB,cAAe,GAK7D,GAAKqB,EACJ,IAAMj+C,KAAQu4B,EACb,GAAKA,EAAUv4B,IAAUu4B,EAAUv4B,GAAO6D,KAAMo6C,CAAG,EAAI,CACtDvE,EAAUtpB,QAASpwB,CAAK,EACxB,KACD,CAKF,GAAK05C,EAAW,KAAOqE,EACtBG,EAAgBxE,EAAW,OACrB,CAGN,IAAM15C,KAAQ+9C,EAAY,CACzB,GAAK,CAACrE,EAAW,IAAOY,EAAEM,WAAY56C,EAAO,IAAM05C,EAAW,IAAQ,CACrEwE,EAAgBl+C,EAChB,KACD,CACMg+C,EAAAA,GACWh+C,CAElB,CAGAk+C,EAAgBA,GAAiBF,CAClC,CAKA,GAAKE,EAIJ,OAHKA,IAAkBxE,EAAW,IACjCA,EAAUtpB,QAAS8tB,CAAc,EAE3BH,EAAWG,EAEpB,EAuhBoC5D,EAAGV,EAAOmE,CAAU,GAIrDxD,EAAWF,GAAaC,EAAGC,EAAUX,EAAOY,CAAU,EAGjDA,GAGCF,EAAEoD,cACNS,EAAWvE,EAAMgD,kBAAmB,eAAgB,KAEnD35C,EAAO+3C,aAAce,GAAaoC,GAEnCA,EAAWvE,EAAMgD,kBAAmB,MAAO,KAE1C35C,EAAOg4C,KAAMc,GAAaoC,GAKZ,MAAXz/C,GAA6B,SAAX47C,EAAEt6C,KACxBm9C,EAAa,YAGS,MAAXz+C,EACXy+C,EAAa,eAIbA,EAAa5C,EAAS7/B,MACtB2iC,EAAU9C,EAAS5yC,KAEnB6yC,EAAY,EADZ16C,EAAQy6C,EAASz6C,UAOlBA,EAAQq9C,EACHz+C,CAAAA,GAAWy+C,IACfA,EAAa,QACRz+C,EAAS,IACbA,EAAS,KAMZk7C,EAAMl7C,OAASA,EACfk7C,EAAMuD,YAAeW,GAAoBX,GAAe,GAGnD3C,EACJ1f,EAASsB,YAAaigB,EAAiB,CAAEgB,EAASF,EAAYvD,EAAQ,EAEtE9e,EAASsY,WAAYiJ,EAAiB,CAAEzC,EAAOuD,EAAYr9C,EAAQ,EAIpE85C,EAAM4C,WAAYA,CAAW,EAC7BA,EAAapqC,UAER8pC,GACJI,EAAmBjkC,QAASmiC,EAAY,cAAgB,YACvD,CAAEZ,EAAOU,EAAGE,EAAY6C,EAAUv9C,EAAQ,EAI5Cy8C,EAAiB9hB,SAAU4hB,EAAiB,CAAEzC,EAAOuD,EAAa,EAE7DjB,KACJI,EAAmBjkC,QAAS,eAAgB,CAAEuhC,EAAOU,EAAI,EAGnD,EAAIr3C,EAAOihB,QAChBjhB,EAAOrE,MAAMyZ,QAAS,UAAW,EAGpC,CAGD,EAEA+lC,QAAS,SAAUx7C,EAAK+E,EAAMnF,GAC7B,OAAOS,EAAO2jB,IAAKhkB,EAAK+E,EAAMnF,EAAU,MAAO,CAChD,EAEA67C,UAAW,SAAUz7C,EAAKJ,GACzB,OAAOS,EAAO2jB,IAAKhkB,EAAKwP,UAAW5P,EAAU,QAAS,CACvD,CACD,CAAE,EAEFS,EAAOG,KAAM,CAAE,MAAO,QAAU,SAAU3D,EAAG69C,GAC5Cr6C,EAAQq6C,GAAW,SAAU16C,EAAK+E,EAAMnF,EAAUxC,GAUjD,OAPKiD,EAAOskB,WAAY5f,CAAK,IAC5B3H,EAAOA,GAAQwC,EACfA,EAAWmF,EACXA,EAAOyK,WAIDnP,EAAO64C,KAAM74C,EAAOuE,OAAQ,CAClC5E,IAAKA,EACL5C,KAAMs9C,EACN7D,SAAUz5C,EACV2H,KAAMA,EACN01C,QAAS76C,CACV,EAAGS,EAAOukB,cAAe5kB,CAAI,GAAKA,CAAI,CAAE,CACzC,CACD,CAAE,EAGFK,EAAO4mC,SAAW,SAAUjnC,GAC3B,OAAOK,EAAO64C,KAAM,CACnBl5C,IAAKA,EAGL5C,KAAM,MACNy5C,SAAU,SACV13C,MAAO,CAAA,EACP8C,QAAO,CAAA,EACP4gB,OAAQ,CAAA,EACR64B,SAAU,CAAA,CACX,CAAE,CACH,EAGAr7C,EAAOC,GAAGsE,OAAQ,CACjB+2C,QAAS,SAAU7rC,GAClB,IASKowB,EATL,OAAK7/B,EAAOskB,WAAY7U,CAAK,EACrB5T,KAAKsE,KAAM,SAAU3D,GAC3BwD,EAAQnE,IAAK,EAAEy/C,QAAS7rC,EAAKxI,KAAMpL,KAAMW,CAAE,CAAE,CAC9C,CAAE,GAGEX,KAAM,KAGNgkC,EAAO7/B,EAAQyP,EAAM5T,KAAM,GAAIyuB,aAAc,EAAEpG,GAAI,CAAE,EAAE5f,MAAO,CAAA,CAAK,EAElEzI,KAAM,GAAI6T,YACdmwB,EAAKrkB,aAAc3f,KAAM,EAAI,EAG9BgkC,EAAK5b,IAAK,WAGT,IAFA,IAAIza,EAAO3N,KAEH2N,EAAKokB,YAA2C,IAA7BpkB,EAAKokB,WAAW7I,UAC1Cvb,EAAOA,EAAKokB,WAGb,OAAOpkB,CACR,CAAE,EAAEkC,OAAQ7P,IAAK,GAGXA,KACR,EAEA0/C,UAAW,SAAU9rC,GACpB,OAAKzP,EAAOskB,WAAY7U,CAAK,EACrB5T,KAAKsE,KAAM,SAAU3D,GAC3BwD,EAAQnE,IAAK,EAAE0/C,UAAW9rC,EAAKxI,KAAMpL,KAAMW,CAAE,CAAE,CAChD,CAAE,EAGIX,KAAKsE,KAAM,WACjB,IAAI60B,EAAOh1B,EAAQnE,IAAK,EACvBy5B,EAAWN,EAAKM,SAAS,EAErBA,EAAS/4B,OACb+4B,EAASgmB,QAAS7rC,CAAK,EAGvBulB,EAAKtpB,OAAQ+D,CAAK,CAEpB,CAAE,CACH,EAEAowB,KAAM,SAAUpwB,GACf,IAAI6U,EAAatkB,EAAOskB,WAAY7U,CAAK,EAEzC,OAAO5T,KAAKsE,KAAM,SAAU3D,GAC3BwD,EAAQnE,IAAK,EAAEy/C,QAASh3B,EAAa7U,EAAKxI,KAAMpL,KAAMW,CAAE,EAAIiT,CAAK,CAClE,CAAE,CACH,EAEA+rC,OAAQ,WACP,OAAO3/C,KAAKgwB,OAAO,EAAE1rB,KAAM,WACpBH,EAAO6S,SAAUhX,KAAM,MAAO,GACnCmE,EAAQnE,IAAK,EAAE4rC,YAAa5rC,KAAKiuB,UAAW,CAE9C,CAAE,EAAE7X,IAAI,CACT,CACD,CAAE,EAsBFjS,EAAOotB,KAAKuF,QAAQqZ,OAAS,SAAUxiC,GAItC,OAAOyZ,EAAQ6mB,sBAAsB,EAClCtgC,EAAKmD,aAAe,GAAKnD,EAAKqD,cAAgB,GAC/C,CAACrD,EAAK8/B,eAAe,EAAE/sC,OACvBu7C,GAActuC,CAAK,CACtB,EAEAxJ,EAAOotB,KAAKuF,QAAQ8oB,QAAU,SAAUjyC,GACvC,MAAO,CAACxJ,EAAOotB,KAAKuF,QAAQqZ,OAAQxiC,CAAK,CAC1C,EAKA,IAAIkyC,GAAM,OACTC,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,qCA0ChB97C,EAAO2gB,MAAQ,SAAU8G,EAAG8yB,GAC3B,IAAI3M,EACHyJ,EAAI,GACJxhB,EAAM,SAAUzxB,EAAKmB,GAGpBA,EAAQvF,EAAOskB,WAAY/e,CAAM,EAAIA,EAAM,EAAe,MAATA,EAAgB,GAAKA,EACtE8xC,EAAGA,EAAE96C,QAAWw/C,mBAAoB33C,CAAI,EAAI,IAAM23C,mBAAoBx2C,CAAM,CAC7E,EAQD,GALKg1C,IAAgBprC,YACpBorC,EAAcv6C,EAAOm3C,cAAgBn3C,EAAOm3C,aAAaoD,aAIrDv6C,EAAOsC,QAASmlB,CAAE,GAAOA,EAAEhpB,QAAU,CAACuB,EAAOukB,cAAekD,CAAE,EAGlEznB,EAAOG,KAAMsnB,EAAG,WACfoO,EAAKh6B,KAAK2G,KAAM3G,KAAK0J,KAAM,CAC5B,CAAE,OAMF,IAAMqoC,KAAUnmB,EACfu0B,CApEH,SAASA,EAAapO,EAAQ9oC,EAAKy1C,EAAa1kB,GAG/C,GAAK71B,EAAOsC,QAASwC,CAAI,EAGxB9E,EAAOG,KAAM2E,EAAK,SAAUtI,EAAGV,GACzBy+C,GAAeoB,GAAS/6C,KAAMgtC,CAAO,EAGzC/X,EAAK+X,EAAQ9xC,CAAE,EAKfkgD,EACCpO,EAAS,KAAqB,UAAb,OAAO9xC,GAAuB,MAALA,EAAYU,EAAI,IAAO,IACjEV,EACAy+C,EACA1kB,CACD,CAEF,CAAE,OAEI,GAAM0kB,GAAsC,WAAvBv6C,EAAOjD,KAAM+H,CAAI,EAU5C+wB,EAAK+X,EAAQ9oC,CAAI,OAPjB,IA1BD,IAAItC,KA0BWsC,EACbk3C,EAAapO,EAAS,IAAMprC,EAAO,IAAKsC,EAAKtC,GAAQ+3C,EAAa1kB,CAAI,CAQzE,EAgCgB+X,EAAQnmB,EAAGmmB,GAAU2M,EAAa1kB,CAAI,EAKrD,OAAOwhB,EAAE9pC,KAAM,GAAI,EAAE7L,QAASg6C,GAAK,GAAI,CACxC,EAEA17C,EAAOC,GAAGsE,OAAQ,CACjB03C,UAAW,WACV,OAAOj8C,EAAO2gB,MAAO9kB,KAAKqgD,eAAe,CAAE,CAC5C,EACAA,eAAgB,WACf,OAAOrgD,KAAKooB,IAAK,WAGhB,IAAIoJ,EAAWrtB,EAAOq8B,KAAMxgC,KAAM,UAAW,EAC7C,OAAOwxB,EAAWrtB,EAAOslB,UAAW+H,CAAS,EAAIxxB,IAClD,CAAE,EACD0M,OAAQ,WACR,IAAIxL,EAAOlB,KAAKkB,KAGhB,OAAOlB,KAAK2G,MAAQ,CAACxC,EAAQnE,IAAK,EAAE24B,GAAI,WAAY,GACnDsnB,GAAal7C,KAAM/E,KAAKgX,QAAS,GAAK,CAACgpC,GAAgBj7C,KAAM7D,CAAK,IAChElB,KAAKw0B,SAAW,CAACgN,GAAez8B,KAAM7D,CAAK,EAC/C,CAAE,EACDknB,IAAK,SAAUznB,EAAGgN,GAClB,IAAIM,EAAM9J,EAAQnE,IAAK,EAAEiO,IAAI,EAE7B,OAAc,MAAPA,EACN,KACA9J,EAAOsC,QAASwH,CAAI,EACnB9J,EAAOikB,IAAKna,EAAK,SAAUA,GAC1B,MAAO,CAAEtH,KAAMgH,EAAKhH,KAAM+C,MAAOuE,EAAIpI,QAASk6C,GAAO,MAAO,CAAE,CAC/D,CAAE,EACF,CAAEp5C,KAAMgH,EAAKhH,KAAM+C,MAAOuE,EAAIpI,QAASk6C,GAAO,MAAO,CAAE,CAC1D,CAAE,EAAEj4B,IAAI,CACT,CACD,CAAE,EAKF3jB,EAAOm3C,aAAagF,IAAM9yC,EAAO9C,gBAAkB4I,UAGlD,WAGC,OAAKtT,KAAKo8C,QACFmE,GAAgB,EASK,EAAxB9gD,EAAS+gD,aACNC,GAAkB,EASnB,wCAAwC17C,KAAM/E,KAAKkB,IAAK,GAC9Du/C,GAAkB,GAAKF,GAAgB,CACzC,EAGAE,GAED,IAAIC,GAAQ,EACXC,GAAe,GACfC,EAAez8C,EAAOm3C,aAAagF,IAAI,EA4KxC,SAASG,KACR,IACC,OAAO,IAAIjzC,EAAOqzC,cACJ,CAAb,MAAQl8C,IACX,CAEA,SAAS47C,KACR,IACC,OAAO,IAAI/yC,EAAO9C,cAAe,mBAAoB,CACvC,CAAb,MAAQ/F,IACX,CAjLK6I,EAAOnH,aACXmH,EAAOnH,YAAa,WAAY,WAC/B,IAAM,IAAIkC,KAAOo4C,GAChBA,GAAcp4C,GAAO+K,UAAW,CAAA,CAAK,CAEvC,CAAE,EAIH8T,EAAQ05B,KAAO,CAAC,CAACF,GAAkB,oBAAqBA,GACzCx5B,EAAQ41B,KAAO,CAAC,CAAC4D,IAK/Bz8C,EAAO44C,cAAe,SAAUz0C,GAG/B,IAEK5E,EAFL,GAAK,CAAC4E,EAAQm2C,aAAer3B,EAAQ05B,KAIpC,MAAO,CACN/B,KAAM,SAAUF,EAAS12C,GACxB,IAAIxH,EACH2/C,EAAMh4C,EAAQg4C,IAAI,EAClBn5C,EAAK,EAAEu5C,GAYR,GATAJ,EAAItsC,KACH1L,EAAQpH,KACRoH,EAAQxE,IACRwE,EAAQvC,SACRuC,EAAQy4C,SACRz4C,EAAQ6sB,QACT,EAGK7sB,EAAQ04C,UACZ,IAAMrgD,KAAK2H,EAAQ04C,UAClBV,EAAK3/C,GAAM2H,EAAQ04C,UAAWrgD,GAmBhC,IAAMA,KAdD2H,EAAQ61C,UAAYmC,EAAIpC,kBAC5BoC,EAAIpC,iBAAkB51C,EAAQ61C,QAAS,EAQlC71C,EAAQm2C,aAAgBI,EAAS,sBACtCA,EAAS,oBAAuB,kBAItBA,EAQLA,EAASl+C,KAAQ2S,WACrBgtC,EAAItC,iBAAkBr9C,EAAGk+C,EAASl+C,GAAM,EAAG,EAO7C2/C,EAAIvB,KAAQz2C,EAAQq2C,YAAcr2C,EAAQO,MAAU,IAAK,EAGzDnF,EAAW,SAAUmJ,EAAGo0C,GACvB,IAAIrhD,EAAQy+C,EAAYY,EAGxB,GAAKv7C,IAAcu9C,GAA8B,IAAnBX,EAAI1/C,YAQjC,GALA,OAAO+/C,GAAcx5C,GACrBzD,EAAW4P,UACXgtC,EAAIY,mBAAqB/8C,EAAO2kB,KAG3Bm4B,EACoB,IAAnBX,EAAI1/C,YACR0/C,EAAIlC,MAAM,MAEL,CACNa,EAAY,GACZr/C,EAAS0gD,EAAI1gD,OAKoB,UAA5B,OAAO0gD,EAAIa,eACflC,EAAUzvC,KAAO8wC,EAAIa,cAKtB,IACC9C,EAAaiC,EAAIjC,UAKlB,CAJE,MAAQ15C,GAGT05C,EAAa,EACd,CAOMz+C,GAAU0I,CAAAA,EAAQ8zC,SAAY9zC,EAAQm2C,YAIrB,OAAX7+C,IACXA,EAAS,KAJTA,EAASq/C,EAAUzvC,KAAO,IAAM,GAMlC,CAIIyvC,GACJ92C,EAAUvI,EAAQy+C,EAAYY,EAAWqB,EAAIvC,sBAAsB,CAAE,CAEvE,EAKMz1C,EAAQvC,SAIiB,IAAnBu6C,EAAI1/C,WAIf4M,EAAOnI,WAAY3B,CAAS,EAK5B48C,EAAIY,mBAAqBP,GAAcx5C,GAAOzD,EAV9CA,EAAS,CAYX,EAEA06C,MAAO,WACD16C,GACJA,EAAU4P,UAAW,CAAA,CAAK,CAE5B,CACD,CAEF,CAAE,EAoBHnP,EAAO04C,UAAW,CACjBN,QAAS,CACR6E,OAAQ,2FAET,EACA3nB,SAAU,CACT2nB,OAAQ,yBACT,EACAtF,WAAY,CACXuF,cAAe,SAAU7xC,GAExB,OADArL,EAAOilB,WAAY5Z,CAAK,EACjBA,CACR,CACD,CACD,CAAE,EAGFrL,EAAO24C,cAAe,SAAU,SAAUtB,GACpCA,EAAEv4C,QAAUqQ,YAChBkoC,EAAEv4C,MAAQ,CAAA,GAENu4C,EAAEiD,cACNjD,EAAEt6C,KAAO,MACTs6C,EAAE70B,OAAS,CAAA,EAEb,CAAE,EAGFxiB,EAAO44C,cAAe,SAAU,SAAUvB,GAGzC,IAEK4F,EACHp9C,EAHF,GAAKw3C,EAAEiD,YAKN,OAFCz6C,EAAOvE,EAASuE,MAAQG,EAAQ,MAAO,EAAG,IAAO1E,EAASuP,gBAEpD,CAEN+vC,KAAM,SAAUlyC,EAAGnJ,IAElB09C,EAAS3hD,EAASqG,cAAe,QAAS,GAEnCC,SAAQ,CAAA,EAEVy1C,EAAE8F,gBACNF,EAAOp7C,QAAUw1C,EAAE8F,eAGpBF,EAAO9gD,IAAMk7C,EAAE13C,IAGfs9C,EAAOh5C,OAASg5C,EAAOF,mBAAqB,SAAUr0C,EAAGo0C,GAEnDA,CAAAA,GAAYG,EAAOxgD,YAAc,CAAA,kBAAkBmE,KAAMq8C,EAAOxgD,UAAW,IAG/EwgD,EAAOh5C,OAASg5C,EAAOF,mBAAqB,KAGvCE,EAAOvtC,YACXutC,EAAOvtC,WAAW3O,YAAak8C,CAAO,EAIvCA,EAAS,KAGHH,IACLv9C,EAAU,IAAK,SAAU,CAG5B,EAIAM,EAAK2b,aAAcyhC,EAAQp9C,EAAK+tB,UAAW,CAC5C,EAEAqsB,MAAO,WACDgD,GACJA,EAAOh5C,OAAQkL,UAAW,CAAA,CAAK,CAEjC,CACD,CAEF,CAAE,EAKF,IAAIiuC,GAAe,GAClBC,GAAS,oBA+HNC,IA5HJt9C,EAAO04C,UAAW,CACjB6E,MAAO,WACPC,cAAe,WACd,IAAIj+C,EAAW69C,GAAaz1B,IAAI,GAAO3nB,EAAOwkB,QAAU,IAAQywB,EAAQ,GAExE,OADAp5C,KAAM0D,GAAa,CAAA,EACZA,CACR,CACD,CAAE,EAGFS,EAAO24C,cAAe,aAAc,SAAUtB,EAAGoG,EAAkB9G,GAElE,IAAI+G,EAAcC,EAAaC,EAC9BC,EAAuB,CAAA,IAAZxG,EAAEkG,QAAqBF,GAAOz8C,KAAMy2C,EAAE13C,GAAI,EACpD,MACkB,UAAlB,OAAO03C,EAAE3yC,MAE6C,KADnD2yC,EAAEc,aAAe,IACjBh2C,QAAS,mCAAoC,GAC/Ck7C,GAAOz8C,KAAMy2C,EAAE3yC,IAAK,GAAK,QAI5B,GAAKm5C,GAAiC,UAArBxG,EAAEZ,UAAW,GA8D7B,OA3DAiH,EAAerG,EAAEmG,cAAgBx9C,EAAOskB,WAAY+yB,EAAEmG,aAAc,EACnEnG,EAAEmG,cAAc,EAChBnG,EAAEmG,cAGEK,EACJxG,EAAGwG,GAAaxG,EAAGwG,GAAWn8C,QAAS27C,GAAQ,KAAOK,CAAa,EAC5C,CAAA,IAAZrG,EAAEkG,QACblG,EAAE13C,MAASu1C,GAAOt0C,KAAMy2C,EAAE13C,GAAI,EAAI,IAAM,KAAQ03C,EAAEkG,MAAQ,IAAMG,GAIjErG,EAAEM,WAAY,eAAkB,WAI/B,OAHMiG,GACL59C,EAAOnD,MAAO6gD,EAAe,iBAAkB,EAEzCE,EAAmB,EAC3B,EAGAvG,EAAEZ,UAAW,GAAM,OAGnBkH,EAAct0C,EAAQq0C,GACtBr0C,EAAQq0C,GAAiB,WACxBE,EAAoB30C,SACrB,EAGA0tC,EAAM/e,OAAQ,WAGR+lB,IAAgBxuC,UACpBnP,EAAQqJ,CAAO,EAAE8qC,WAAYuJ,CAAa,EAI1Cr0C,EAAQq0C,GAAiBC,EAIrBtG,EAAGqG,KAGPrG,EAAEmG,cAAgBC,EAAiBD,cAGnCJ,GAAaj8C,KAAMu8C,CAAa,GAI5BE,GAAqB59C,EAAOskB,WAAYq5B,CAAY,GACxDA,EAAaC,EAAmB,EAAI,EAGrCA,EAAoBD,EAAcxuC,SACnC,CAAE,EAGK,QAET,CAAE,EASFnP,EAAOo1B,UAAY,SAAU1wB,EAAMqE,EAAS+0C,GAC3C,GAAK,CAACp5C,GAAwB,UAAhB,OAAOA,EACpB,OAAO,KAEgB,WAAnB,OAAOqE,IACX+0C,EAAc/0C,EACdA,EAAU,CAAA,GAEXA,EAAUA,GAAWzN,EAErB,IAAIyiD,EAASnpB,EAAWrK,KAAM7lB,CAAK,EAClCrI,EAAU,CAACyhD,GAAe,GAG3B,OAAKC,EACG,CAAEh1C,EAAQpH,cAAeo8C,EAAQ,EAAI,IAG7CA,EAASre,GAAe,CAAEh7B,GAAQqE,EAAS1M,CAAQ,EAE9CA,GAAWA,EAAQE,QACvByD,EAAQ3D,CAAQ,EAAEmJ,OAAO,EAGnBxF,EAAO+jB,MAAO,GAAIg6B,EAAOj0B,UAAW,EAC5C,EAIY9pB,EAAOC,GAAG8S,MAsGtB,SAASirC,GAAWx0C,GACnB,OAAOxJ,EAAOyjB,SAAUja,CAAK,EAC5BA,EACkB,IAAlBA,EAAKub,WACJvb,EAAKsiB,aAAetiB,EAAKk5B,aAE5B,CAoSA,OA3YA1iC,EAAOC,GAAG8S,KAAO,SAAUpT,EAAK2I,EAAQ/I,GACvC,IAII+J,EAAUvM,EAAMu6C,EACnBtiB,EACArsB,EAND,MAAoB,UAAf,OAAOhJ,GAAoB29C,GACxBA,GAAMj8C,MAAOxF,KAAMoN,SAAU,GAIpC+rB,EAAOn5B,KAGG,CAAC,GAFX8M,EAAMhJ,EAAIwC,QAAS,GAAI,KAGvBmH,EAAWtJ,EAAOklB,KAAMvlB,EAAIyB,MAAOuH,EAAKhJ,EAAIpD,MAAO,CAAE,EACrDoD,EAAMA,EAAIyB,MAAO,EAAGuH,CAAI,GAIpB3I,EAAOskB,WAAYhc,CAAO,GAG9B/I,EAAW+I,EACXA,EAAS6G,WAGE7G,GAA4B,UAAlB,OAAOA,IAC5BvL,EAAO,QAIW,EAAdi4B,EAAKz4B,QACTyD,EAAO64C,KAAM,CACZl5C,IAAKA,EAKL5C,KAAMA,GAAQ,MACdy5C,SAAU,OACV9xC,KAAM4D,CACP,CAAE,EAAE2F,KAAM,SAAU+uC,GAGnB1F,EAAWruC,UAEX+rB,EAAKvlB,KAAMnG,EAIVtJ,EAAQ,OAAQ,EAAE0L,OAAQ1L,EAAOo1B,UAAW4nB,CAAa,CAAE,EAAEvxC,KAAMnC,CAAS,EAG5E0zC,CAAa,CAKf,CAAE,EAAEplB,OAAQr4B,GAAY,SAAUo3C,EAAOl7C,GACxCu5B,EAAK70B,KAAM,WACVZ,EAAS8B,MAAOxF,KAAMy7C,GAAY,CAAEX,EAAMqG,aAAcvhD,EAAQk7C,EAAQ,CACzE,CAAE,CACH,CAAE,EAGI96C,KACR,EAMAmE,EAAOG,KAAM,CACZ,YACA,WACA,eACA,YACA,cACA,YACE,SAAU3D,EAAGO,GACfiD,EAAOC,GAAIlD,GAAS,SAAUkD,GAC7B,OAAOpE,KAAKqE,GAAInD,EAAMkD,CAAG,CAC1B,CACD,CAAE,EAKFD,EAAOotB,KAAKuF,QAAQsrB,SAAW,SAAUz0C,GACxC,OAAOxJ,EAAO0lB,KAAM1lB,EAAOyxC,OAAQ,SAAUxxC,GAC5C,OAAOuJ,IAASvJ,EAAGuJ,IACpB,CAAE,EAAEjN,MACL,EAiBAyD,EAAOk+C,OAAS,CACfC,UAAW,SAAU30C,EAAMrF,EAAS3H,GACnC,IAA0B4hD,EAAWC,EAAQC,EAAWC,EACvD5yC,EAAW3L,EAAOiP,IAAKzF,EAAM,UAAW,EACxCg1C,EAAUx+C,EAAQwJ,CAAK,EACvBi6B,EAAQ,GAGS,WAAb93B,IACJnC,EAAK/G,MAAMkJ,SAAW,YAGvB2yC,EAAYE,EAAQN,OAAO,EAC3BE,EAAYp+C,EAAOiP,IAAKzF,EAAM,KAAM,EACpC+0C,EAAav+C,EAAOiP,IAAKzF,EAAM,MAAO,EASrCi1C,GARkC,aAAb9yC,GAAwC,UAAbA,IACM,CAAC,EAAvD3L,EAAOwlB,QAAS,OAAQ,CAAE44B,EAAWG,EAAa,GAMlDF,GADAK,EAAcF,EAAQ7yC,SAAS,GACVM,IACXyyC,EAAY1yC,OAEtBqyC,EAAS3gC,WAAY0gC,CAAU,GAAK,EAC1B1gC,WAAY6gC,CAAW,GAAK,GASnB,OAHnBp6C,EAHInE,EAAOskB,WAAYngB,CAAQ,EAGrBA,EAAQ8C,KAAMuC,EAAMhN,EAAGwD,EAAOuE,OAAQ,GAAI+5C,CAAU,CAAE,EAG5Dn6C,GAAQ8H,MACZw3B,EAAMx3B,IAAQ9H,EAAQ8H,IAAMqyC,EAAUryC,IAAQoyC,GAE1B,MAAhBl6C,EAAQ6H,OACZy3B,EAAMz3B,KAAS7H,EAAQ6H,KAAOsyC,EAAUtyC,KAASyyC,GAG7C,UAAWt6C,EACfA,EAAQw6C,MAAM13C,KAAMuC,EAAMi6B,CAAM,EAEhC+a,EAAQvvC,IAAKw0B,CAAM,CAErB,CACD,EAEAzjC,EAAOC,GAAGsE,OAAQ,CACjB25C,OAAQ,SAAU/5C,GACjB,IAQI2iB,EACH83B,EACAp1C,EACAnO,EAXD,OAAK4N,UAAU1M,OACP4H,IAAYgL,UAClBtT,KACAA,KAAKsE,KAAM,SAAU3D,GACpBwD,EAAOk+C,OAAOC,UAAWtiD,KAAMsI,EAAS3H,CAAE,CAC3C,CAAE,GAIHoiD,EAAM,CAAE3yC,IAAK,EAAGD,KAAM,CAAE,GAExB3Q,GADAmO,EAAO3N,KAAM,KACC2N,EAAK8gB,gBAMpBxD,EAAUzrB,EAAIwP,gBAGR7K,EAAO0O,SAAUoY,EAAStd,CAAK,GAMM,aAAtC,OAAOA,EAAKiD,wBAChBmyC,EAAMp1C,EAAKiD,sBAAsB,GAElCtR,EAAM6iD,GAAW3iD,CAAI,EACd,CACN4Q,IAAK2yC,EAAI3yC,KAAS9Q,EAAI0jD,aAAe/3B,EAAQ1G,YAAiB0G,EAAQsd,WAAc,GACpFp4B,KAAM4yC,EAAI5yC,MAAS7Q,EAAI2jD,aAAeh4B,EAAQmd,aAAiBnd,EAAQod,YAAc,EACtF,GAZQ0a,GARR,KAAA,EAqBD,EAEAjzC,SAAU,WACT,IAIIozC,EAAcb,EACjBc,EACAx1C,EAND,GAAM3N,KAAM,GAiCZ,OA5BCmjD,EAAe,CAAE/yC,IAAK,EAAGD,KAAM,CAAE,EACjCxC,EAAO3N,KAAM,GAI0B,UAAnCmE,EAAOiP,IAAKzF,EAAM,UAAW,EAGjC00C,EAAS10C,EAAKiD,sBAAsB,GAIpCsyC,EAAeljD,KAAKkjD,aAAa,EAGjCb,EAASriD,KAAKqiD,OAAO,GAEpBc,EADKh/C,EAAO6S,SAAUksC,EAAc,GAAK,MAAO,EAKjDC,EAJgBD,EAAab,OAAO,GAIvBjyC,KAAQjM,EAAOiP,IAAK8vC,EAAc,GAAK,iBAAkB,CAAA,CAAK,EAC3EC,EAAahzC,MAAQhM,EAAOiP,IAAK8vC,EAAc,GAAK,kBAAmB,CAAA,CAAK,GAMtE,CACN9yC,IAAMiyC,EAAOjyC,IAAO+yC,EAAa/yC,IAAMjM,EAAOiP,IAAKzF,EAAM,YAAa,CAAA,CAAK,EAC3EwC,KAAMkyC,EAAOlyC,KAAOgzC,EAAahzC,KAAOhM,EAAOiP,IAAKzF,EAAM,aAAc,CAAA,CAAK,CAC9E,CACD,EAEAu1C,aAAc,WACb,OAAOljD,KAAKooB,IAAK,WAGhB,IAFA,IAAI86B,EAAeljD,KAAKkjD,aAEhBA,GAAkB,CAAC/+C,EAAO6S,SAAUksC,EAAc,MAAO,GACrB,WAA3C/+C,EAAOiP,IAAK8vC,EAAc,UAAW,GACrCA,EAAeA,EAAaA,aAE7B,OAAOA,GAAgBl0C,EACxB,CAAE,CACH,CACD,CAAE,EAGF7K,EAAOG,KAAM,CAAE8jC,WAAY,cAAe7jB,UAAW,aAAc,EAAG,SAAUi6B,EAAQhe,GACvF,IAAIpwB,EAAM,IAAIrL,KAAMy7B,CAAK,EAEzBr8B,EAAOC,GAAIo6C,GAAW,SAAUvwC,GAC/B,OAAOkzB,EAAQnhC,KAAM,SAAU2N,EAAM6wC,EAAQvwC,GAC5C,IAAI3O,EAAM6iD,GAAWx0C,CAAK,EAE1B,GAAKM,IAAQqF,UACZ,OAAOhU,EAAQkhC,KAAQlhC,EAAQA,EAAKkhC,GACnClhC,EAAIG,SAASuP,gBAAiBwvC,GAC9B7wC,EAAM6wC,GAGHl/C,EACJA,EAAI8jD,SACFhzC,EAAYjM,EAAQ7E,CAAI,EAAE8oC,WAAW,EAA/Bn6B,EACPmC,EAAMnC,EAAM9J,EAAQ7E,CAAI,EAAEilB,UAAU,CACrC,EAGA5W,EAAM6wC,GAAWvwC,CAEnB,EAAGuwC,EAAQvwC,EAAKb,UAAU1M,OAAQ,IAAK,CACxC,CACD,CAAE,EAOFyD,EAAOG,KAAM,CAAE,MAAO,QAAU,SAAU3D,EAAG6/B,GAC5Cr8B,EAAO2sC,SAAUtQ,GAASkO,GAActnB,EAAQgnB,cAC/C,SAAUzgC,EAAMmhC,GACf,GAAKA,EAIJ,OAHAA,EAAWN,EAAQ7gC,EAAM6yB,CAAK,EAGvB0M,GAAUnoC,KAAM+pC,CAAS,EAC/B3qC,EAAQwJ,CAAK,EAAEmC,SAAS,EAAG0wB,GAAS,KACpCsO,CAEH,CACD,CACD,CAAE,EAIF3qC,EAAOG,KAAM,CAAE++C,OAAQ,SAAUC,MAAO,OAAQ,EAAG,SAAU38C,EAAMzF,GAClEiD,EAAOG,KAAM,CAAEutC,QAAS,QAAUlrC,EAAMiR,QAAS1W,EAAMqiD,GAAI,QAAU58C,CAAK,EAC1E,SAAU68C,EAAcC,GAGvBt/C,EAAOC,GAAIq/C,GAAa,SAAUvzC,EAAQxG,GACzC,IAAI03B,EAAYh0B,UAAU1M,SAAY8iD,GAAkC,WAAlB,OAAOtzC,GAC5DqgC,EAAQiT,IAA6B,CAAA,IAAXtzC,GAA6B,CAAA,IAAVxG,EAAiB,SAAW,UAE1E,OAAOy3B,EAAQnhC,KAAM,SAAU2N,EAAMzM,EAAMwI,GAC1C,IAAIlK,EAEJ,OAAK2E,EAAOyjB,SAAUja,CAAK,EAKnBA,EAAKlO,SAASuP,gBAAiB,SAAWrI,GAI3B,IAAlBgH,EAAKub,UACT1pB,EAAMmO,EAAKqB,gBAMJR,KAAK6H,IACX1I,EAAKkB,KAAM,SAAWlI,GAAQnH,EAAK,SAAWmH,GAC9CgH,EAAKkB,KAAM,SAAWlI,GAAQnH,EAAK,SAAWmH,GAC9CnH,EAAK,SAAWmH,EACjB,GAGM+C,IAAU4J,UAGhBnP,EAAOiP,IAAKzF,EAAMzM,EAAMqvC,CAAM,EAG9BpsC,EAAOyC,MAAO+G,EAAMzM,EAAMwI,EAAO6mC,CAAM,CACzC,EAAGrvC,EAAMkgC,EAAYlxB,EAASoD,UAAW8tB,EAAW,IAAK,CAC1D,CACD,CAAE,CACH,CAAE,EAGFj9B,EAAOC,GAAGsE,OAAQ,CAEjBg7C,KAAM,SAAU5e,EAAOj8B,EAAMzE,GAC5B,OAAOpE,KAAKqE,GAAIygC,EAAO,KAAMj8B,EAAMzE,CAAG,CACvC,EACA+hB,OAAQ,SAAU2e,EAAO1gC,GACxB,OAAOpE,KAAK8M,IAAKg4B,EAAO,KAAM1gC,CAAG,CAClC,EAEAu/C,SAAU,SAAUl2C,EAAUq3B,EAAOj8B,EAAMzE,GAC1C,OAAOpE,KAAKqE,GAAIygC,EAAOr3B,EAAU5E,EAAMzE,CAAG,CAC3C,EACAw/C,WAAY,SAAUn2C,EAAUq3B,EAAO1gC,GAGtC,OAA4B,IAArBgJ,UAAU1M,OAChBV,KAAK8M,IAAKW,EAAU,IAAK,EACzBzN,KAAK8M,IAAKg4B,EAAOr3B,GAAY,KAAMrJ,CAAG,CACxC,CACD,CAAE,EAGFD,EAAOC,GAAGy/C,KAAO,WAChB,OAAO7jD,KAAKU,MACb,EAEAyD,EAAOC,GAAG0/C,QAAU3/C,EAAOC,GAAG61B,QAqB9Bx2B,MAAMP,OAAO,SAASM,GAEpBA,EAAQ,SADRC,MAAMgB,EAAIN,CACc,CAC1B,CAAC,EAEMA,CACP,CAAE,EC/tVD,CAAC,SAASqJ,GACX,aAEA,IACI/I,EACAnF,EA8FI0K,EAhGJoN,EAAU5J,EAAO/J,OAASA,MAAMP,OAGhCmU,EAAQ,CACVjX,SACMb,EAASE,SAASY,cAAgBZ,SAASY,cAAcC,IAAM,WAIjE,IAHA,IAEIA,EAFAC,EAAKd,SAASe,QACdC,EAAOF,EAAGG,OAAS,EAEfC,EAAIF,EAAU,EAAJE,EAAOA,CAAC,GACxB,GAAwB,gBAArBJ,EAAGI,GAAGC,WAA6B,CACpCN,EAAMC,EAAGI,GAAGL,IACZ,KACF,CAEF,OAAOA,GAAOC,EAAGE,GAAMH,GACzB,EAAE,GACWkN,EAAOrN,cAAgB,IACtB4jD,WAAaxkD,EAAOuB,UAAU,EAAGvB,EAAOwB,YAAY,GAAG,EAAI,CAAC,GAE5ErB,OAAQ,CACNskD,YAAa,CAAA,CACf,EACA5tC,IAAK,GACL5J,OAAQ,CAACy3C,OAAQ,EAAE,EACnBC,cAAe,EACfC,YAAa,GACbrtC,IAAK,CAAC,mBAAoB,oBAG1B5V,KAAM,CAAC,SAAU,OAAQ,SAAU,UAAW,QAG9CwF,SAAU,SAAS7C,EAAM8C,GACnBC,EAAQ/C,EAAKgD,cAAmC2G,EAAO1G,iBAAiBjD,EAAM,IAAI,EACtF,OAAO+C,EAAMA,EAAMG,iBAAmB,mBAAqB,gBAAgBJ,CAAI,CACjF,EAGAK,KAAM,SAASC,EAAM7C,EAAI8C,GAEvB,IAEIlD,EACAgD,EAIAzD,EACA4D,EACAi9C,EACAvkD,EAVA4B,EAAMqH,OAEN9E,EAAOvE,SAASwE,qBAAqB,MAAM,EAAE,GAC7C+C,EAAOvH,SAASqG,cAAc,MAAM,EAIpCvC,IAFuB2D,EAAV,UAAd,OAAO9C,EAA2BA,EAE1B8C,IAAWD,GAAMpB,QAAQ,SAAU,EAAE,EAC5CsB,EAAK,YAAa5D,EAClB6gD,EAAc,WACdvkD,EAAU,EAEdmH,EAAKM,IAAM,aACXN,EAAKC,KAAOxF,EAAMqH,KAAO7B,EACzBD,EAAKG,GAAKA,EAEN1H,SAAS+H,eAAeL,CAAE,GAC5BnD,EAAKoC,YAAYY,CAAI,EAGN,YAAd,OAAO5C,IAGV,CAAC,SAASe,EAAKvF,GACb,IACI6H,EAAchI,SAAS+H,eAAeL,CAAE,EAG5C,OAAe,IAAZ,EAAEtH,EACI2N,EAAOrM,SAAWA,QAAQH,MAAMuC,EAAK,eAAe,EAI7D,KAAsD,OAAnDmE,SAAS2P,EAAM3Q,SAASe,EAAa,OAAO,CAAC,GAE3C7H,IAAWwkD,GAAa38C,EAAYE,gBAAgB,YAAY,EAEnEF,EAAYG,aAAa,YAAY,IAAMw8C,EAAc/+C,WAAWF,EAb1D,GAaqE,EAAIf,EAAG,IAEtFqD,EAAYI,aAAa,aAAcu8C,CAAW,EAClD/+C,WAAW,WACTF,EAAKi/C,CAAW,CAClB,EAlBU,GAkBF,GAIZ,EAAG,CAEL,CACF,EAGI3iD,EAAQ,CACVxB,EAAG,QACHwK,IACMT,EAAQnF,UAAUoF,UAAUC,YAAY,EACrC,CAAA,EAAGsD,EAAO9C,eAAiB,kBAAmB8C,MAClDxD,EAAMtE,MAAM,aAAa,GAAK,IAAI,IAAM,OAG7CnB,MAAQiJ,EAAO/L,OAAS+L,EAAO/L,MAAMxB,EAAK,IAAS,EACnD6I,KAAMuO,EAAMjX,QACZV,OAAQ,SAAS4I,EAASlE,GAgBxB,OAdA3C,EAAMwB,MAAQoU,EAAM3X,OAAS+E,EAAEiE,OAAO,GAAI2O,EAAM3X,OADhD4I,EAAUA,GAAW,EAC0C,EAC/D7G,EAAMqH,KAAOuO,EAAM3X,OAAOoJ,MAAQrH,EAAMqH,KACd,UAA1B,OAAOR,EAAQI,SAAwBJ,EAAQI,OAAS,CAACJ,EAAQI,SAG9D2O,EAAM3X,OAAOoJ,MAAMrH,EAAM4V,MAAM,EAE9B/O,EAAQI,SAGZ0O,EACI3T,MAAMqE,OAAO,iBAAmBQ,EAAQI,MAAM,EAChD2O,EAAMrQ,KAAK,OAASsB,EAAQI,MAAM,GAE7B1I,IACT,EAGAqX,MAAO,SAAS3T,GACd,IAAIwD,EAAU,QAEV4B,GAAQsO,EAAU,WAAa,QAAU,eAAgB3V,EAAMxB,EAQnE,OANAmX,EACE3T,MAAM,aACmB,YAApB,OAAOC,GAA2BA,EAAS,EAC9CD,MAAMqE,OAAOgB,EAAMpF,EAAUwD,CAAO,EACpCmQ,EAAMrQ,KAAK8B,EAAMpF,EAAUwD,CAAO,EAE/BlH,IACT,EAGAqkD,MAAO,SAASzsC,EAAStP,EAASg8C,GAChC,IAAIpjD,EAA0B,YAAnB,OAAOoH,EAElB,OAAO7G,EAAMuS,KAAKvP,EAAEiE,OAAO,CACzBkP,QAASA,EACT0sC,IAHOA,EAANpjD,EAAYoH,EAGRg8C,CACP,EAAGpjD,EAAO,GAAKoH,CAAO,CAAC,CACzB,EAEAuS,QAAS,SAASjD,EAAStP,EAASg8C,EAAKC,GACvC,IAAIrjD,EAA0B,YAAnB,OAAOoH,EAKlB,OAJGpH,IACDqjD,EAASD,EACTA,EAAMh8C,GAED7G,EAAMuS,KAAKvP,EAAEiE,OAAO,CACzBkP,QAASA,EACTd,IAAKO,EAAMP,IACXwtC,IAAKA,EACLE,KAAMD,CACR,EAAGrjD,EAAO,GAAKoH,CAAO,CAAC,CACzB,EAEArH,IAAK,SAAS2W,EAAStP,EAAS8N,GAC9B,IAAIlV,EAA0B,YAAnB,OAAOoH,EAAwBm8C,EAAQptC,EAAM3X,OAAOglD,KAC3DA,GAAQD,EAAQA,EAAQ,IAAMA,EAAQ,OAAS,KAAK,kBACpDjQ,EAAOmQ,EAAKnQ,KAAK9zC,OAAS,EAE9B,OADGQ,IAAMkV,EAAM9N,GACR7G,EAAMuS,KAAKvP,EAAEiE,OAAO,CACzBkP,QAASA,EACT0C,KAAM,IACNH,MAAO,CAAA,EACPuqC,KAAMA,EACN7kC,MAAO,CAAA,EACP+kC,SAAU,CAAA,EACV9tC,IAAK,CAAA,EACLmtC,OAAQ,CAAA,EACR7tC,IAAKA,EACL4tC,YAAa,CAAA,CACf,EAAI9iD,GAAQ,CAACmW,EAAM3X,OAAOglD,KAAQ,CAChCA,KAAMA,EAAO,mBACblQ,KAAMA,CACR,GAEuB,CAAC,KADrBlsC,EAAUA,GAAW,IACVu8C,OAzLhB,KAAA,IAyL+Bv8C,EAAQu8C,MAAuBxtC,EAAM3X,OAAOglD,QACpEp8C,EAAQo8C,KAAOA,EAAO,KAAOp8C,EAAQo8C,MAAM,oBAEtCp8C,EACP,CAAC,CACN,EAEA4O,KAAM,SAAS2tC,EAAMv8C,GACnB,OAAO7G,EAAMuS,KAAKvP,EAAEiE,OAAO,CACzBxH,KAAM,EACN2jD,KAAMA,GAAQ,EACdZ,OAAQ,CAAA,EACR9pC,MAAO,IACP6pC,YAAa,CAAA,CACf,EAAG17C,CAAO,CAAC,CACb,EAEAmc,KAAM,SAAS7M,EAASktC,EAAQx8C,GAC9B,OAAO7G,EAAMuS,KAAKvP,EAAEiE,OAAO,CACzBxH,KAAM,EACN0W,QAAS,CAACA,EAASktC,GACnBF,SAAU,CAAA,EACVtqC,KAAM,IACNH,MAAO,CAAA,EACP8pC,OAAQ,CAAA,EACRc,MAAO,CAAA,EACPhW,SAAU,IACViV,YAAa,CAAA,CACf,EAAG17C,CAAO,CAAC,CACb,CACF,EAEIoF,EAAQ,SAASs3C,GACnB,IAAIjhD,EAAO/D,KAAMilD,EAAQ,WACvBlhD,EAAKkhD,MAAM,CACb,EACAlhD,EAAKQ,MAAQ,EAAE9C,EAAM8C,MACrBR,EAAKrE,OAAOqvC,SAAWtqC,EAAEnF,CAAG,EAAEmU,MAAM,EAAI,GACxC1P,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ2X,EAAM3X,OAAQslD,CAAO,EAC7DvlD,SAASoP,KAAOo2C,EAAM,EAAI5/C,WAAW,WACnC4/C,EAAM,CACR,EAAG,EAAE,CACP,EAKIN,GAHJj3C,EAAMw3C,GAAKx3C,EAAM1K,UAGN,CAAC,cAAe,qBAAsB,oBAAqB,sBAAuB,qBAAsB,sBAAuB,kBAAmB,sBAwiCzJC,GAriCJ0hD,EAAKnQ,KAAO,CAEV2Q,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBAGH3P,UAAW,wBACX4P,UAAW,wBACX3P,QAAS,sBACT4P,WAAY,wBACd,EAEAhB,EAAKiB,MAAQ,oBACbjB,EAAKkB,KAAO,mBAGZn4C,EAAMw3C,GAAGxlD,OAAS,CAChBwB,KAAM,EACNiZ,MAAO,GACP4qC,MAAO,CAAA,EACPe,KAAMnB,EAAK,GACX9kC,MAAO,mBACPwiC,OAAQ,OACRvf,KAAM,OACN8hB,SAAU,EACVC,KAAM,CAAC,EACPvqC,KAAM,EACNN,OAAQ,SACR+0B,SAAU,IACVyF,KAAM,EACNuR,UAAW,CAAA,EACXC,SAAU,CAAA,EACVC,SAAU,EACVhC,OAAQ,CAAA,EACRiC,UAAW,CAAA,EACXzhC,KAAM,CACR,EAGA/W,EAAMw3C,GAAGiB,OAAS,SAASC,EAAS1iD,GAClC,IAgDcxC,EAhDGmlD,EAANrmD,KAAmBuE,MAAO7E,EAA1BM,KAAwCN,OAC/Csa,EAASta,EAAOsa,OAASqsC,EAAOC,EAAiC,UAAxB,OAAO5mD,EAAOmgB,MACvD0mC,EAAQ7mD,EAAO8mD,SAA2B,IAAhB9mD,EAAOwB,MAA8B,IAAhBxB,EAAOwB,MACtDulD,EAAa/mD,EAAOmgB,MAAQ,0CAA2CymC,EAAS5mD,EAAOmgB,MAAM,GAAK,IAAK,MACtGymC,EAAS5mD,EAAOmgB,MAAM,GAAKngB,EAAOmgB,OACrC,SAAW,GAkGb,OAhGAngB,EAAOsa,OAASA,EAChBtW,EAAS,CAEPhE,EAAOya,MAAS,eAAgBwqC,EAAKiB,MAAO,SAAUjB,EAAKiB,MAAQS,EAAO,YAAaA,EAAqB,qBAAarsC,EAAO,GAAW,aAAc,GAGzJ,eAAgB2qC,EAAK,GAAM,gBAAgBttC,EAAMnW,KAAKxB,EAAOwB,OAA2B,GAAfxB,EAAOwB,MAA4B,GAAfxB,EAAOwB,MAAexB,EAAOya,MAAiC,GAAxB,uBAA8B,KAAOza,EAAOglD,MAAM,IAAK,SAAUC,EAAK,GAAK0B,EAAO,WAAYhvC,EAAMnW,KAAKxB,EAAOwB,MAAO,YAAamlD,EAAO,eAAgB3mD,EAAO4a,KAAM,eAAgB8rC,EAAU,SAAW,UAAW,qBAAsBpsC,EAAQ,WAAYta,EAAOojC,KAAK,GAAK,WAAapjC,EAAOojC,KAAK,GAAK,cAAepjC,EAAOqlD,MAAQ,SAAW,aAAc,MACteqB,GAA0B,GAAf1mD,EAAOwB,KAAY,GAAKulD,GAGpC,QAAS/mD,EAAOyH,GAAK,QAASzH,EAAOyH,GAAI,IAAM,IAAK,+BAAgD,GAAfzH,EAAOwB,MAA6B,CAAC,IAAjBxB,EAAOmlD,KAAe,uBAAyB,KAAsB,GAAfnlD,EAAOwB,KAAY,uBAAuBxB,EAAOmlD,KAAO,IAAK,MAGtN6B,EAAO,CACT,kBACA,qBACA,mBACA,sBACA,kBACA,sBACA,yBAMEC,EAAY,+CAGE,GAAfjnD,EAAOwB,MAA6B,CAAC,IAAjBxB,EAAOmlD,KAKrB,2CAFL+B,EADgB,IAAflnD,EAAOmlD,KACS,iCAAkC8B,EAGnDC,IAAkBF,EAAKhnD,EAAOmlD,OAAS6B,EAAK,IAC3C,SAIa,GAAfhnD,EAAOwB,MACJA,EAAO,CACT,qBACA,wBAGgB,GAAfxB,EAAOmlD,KACD,qCAAsC8B,EAAW,WAEnD,kDACLzlD,EAAKxB,EAAOmlD,OAAS3jD,EAAK,IAC1B,IAAKylD,EAAW,UAGb,MAES,GAAfjnD,EAAOwB,MAAaklD,CAAAA,IAAgB1mD,EAAOkY,SAAS,IAIvD,0CACInM,EAAM,GAGP86C,IACD96C,EAAInG,KAAK,uCAAuC,EAChDmG,EAAInG,KAAK,uCAAuC,GAI/C5F,EAAOklD,UACRn5C,EAAInG,KAAK,4CAA6C,CACpDq/C,EAAK,GACLA,EAAK,IAAMjlD,EAAOmgB,MAAQngB,EAAOklD,SAA2B,GAAfllD,EAAOwB,KAAY,IAAM,MACtEwQ,KAAK,GAAG,EAAG,WAAW,EAGnBjG,EAAIiG,KAAK,EAAE,GACd,UAGHhS,EAAOoX,IAAM,WACd,IAAI8d,EAAS,GACS,UAAtB,OAAOl1B,EAAOoX,MAAqBpX,EAAOoX,IAAM,CAACpX,EAAOoX,MACxD,IAAI,IAIE9D,EAJErS,EAAI,EAAG2K,EAAM5L,EAAOoX,IAAIpW,OAAQC,EAAI2K,EAAK3K,CAAC,GAChDi0B,GAAU,aAAc+vB,EAAK,GAAQhkD,EAAG,KAAMjB,EAAOoX,IAAInW,GAAI,OAE/D,MAAO,gBACDqS,EAAY,CAAC2xC,EAAK,IACnBjlD,EAAOmnD,UAAU7zC,EAAU1N,KAAKq/C,EAAK,GAAK,IAAMjlD,EAAOmnD,QAAQ,EAC3D7zC,EAAUtB,KAAK,GAAG,GACtB,KAAMkjB,EAAQ,QACrB,EAAE,EAAI,KACHl1B,EAAOukD,OAAS,2CAA6C,IAChE,UACDwC,EAAWhiD,EAAE,eAAgBkgD,EAAKkB,KAAM,SAAUlB,EAAKkB,KAAM,UAAU,CAAC,EAtGhE7lD,IAwGb,EAGA0N,EAAMw3C,GAAGD,MAAQ,WACf,IAUQ6B,EACAviD,EACA+D,EACAy+C,EAqHFJ,EAlIF5iD,EAAO/D,KACPN,EAASqE,EAAKrE,OACd2mD,EAAQtiD,EAAKQ,MAEb6hD,EAA6B,UAAnB,OAAOxuC,EADPlY,EAAOkY,SAEjB/I,EAAOpK,EAAE,MAAM,EAGnB,GAAG/E,EAAOyH,IAAM1C,EAAE,IAAKkgD,EAAK,EAAE,EAAE/0C,KAAK,IAAKlQ,EAAOyH,EAAE,EAAE,GAE7C2/C,EAASriD,EAAE,IAAK/E,EAAOyH,EAAE,EAAEyyB,QAAQ,IAAK+qB,EAAK,EAAE,EAC/CpgD,EAAQuiD,EAAOn4C,KAAK,OAAO,EAC3BrG,EAAUw+C,EAAOj+C,KAAK,QAAQ,EAC9Bk+C,EAAYtiD,EAAE,IAAKkgD,EAAKiB,MAAQrhD,CAAK,EAIrB,SAFDuiD,EAAOj+C,KAAK,cAAc,GAAK,IAGhDpH,EAAMulD,QAAQziD,CAAK,EACX+D,EAAQ2+C,cAChBF,EAAUvtC,KAAK,EACfstC,EAAOttC,KAAK,OAblB,CAqCA,OAlBG9Z,EAAOskD,aACRvkD,SAAS00B,cAAcuU,KAAK,EAIJ,UAAvB,OAAOhpC,EAAOojC,OACfpjC,EAAOojC,KAAuB,SAAhBpjC,EAAOojC,KAAkB,CAAC,GAAI,IAAM,CAACpjC,EAAOojC,KAAM,KAI/DpjC,EAAOuvB,QACRvvB,EAAO80C,KAAO90C,EAAOuvB,OAGR,GAAZxtB,EAAMgJ,KACP/K,EAAOqlD,MAAQ,CAAA,GAGVrlD,EAAOwB,MACZ,KAAK,EACHxB,EAAOoX,IAAO,QAASpX,EAAUA,EAAOoX,IAAMO,EAAMP,IAAI,GACxDrV,EAAMylD,SAAS,QAAQ,EACzB,MACA,KAAK,EACH,IAAItvC,EAAUlY,EAAOkY,QAAUwuC,EAAU1mD,EAAOkY,QAAU,CAAClY,EAAOkY,SAAS,GAAI,QAC/ElY,EAAOkY,QAAU,uBAAwBlY,EAAOkY,QAAQ,IAAI,QAAS,kCAAmC+sC,EAAK,GAAQ0B,EAAO,WAAY1B,EAAK,GAAQ0B,EAAO,iFAAmF3mD,EAAOkY,QAAQ,GAAK,cACrQ,MACA,KAAK,EACH,OAAOlY,EAAOmgB,MACd,OAAOngB,EAAOklD,SACE,CAAC,IAAjBllD,EAAOmlD,MAAgBnlD,EAAOmlD,KAC9BpjD,EAAMylD,SAAS,SAAS,EAC1B,MACA,KAAK,EACHd,IAAY1mD,EAAOkY,QAAU,CAAClY,EAAOkY,QAAS,SAC9ClY,EAAOolD,OAASplD,EAAOkY,QAAQ,GAC/BlY,EAAOkY,QAAUlY,EAAOkY,QAAQ,GAAK,oCACrC,OAAOlY,EAAOmgB,MACdngB,EAAO+kB,KAA8B,UAAvB,OAAO/kB,EAAO+kB,KAAoB/kB,EAAO+kB,KAAO,CAAC/kB,EAAO+kB,KAAM,CAAA,GAC5E/kB,EAAOynD,UAAY1lD,EAAMylD,SAAS,MAAM,CAE5C,CAGAnjD,EAAKoiD,OAAOC,EAAS,SAASxyC,EAAM6yC,EAAWW,GAC7Cv4C,EAAKgB,OAAO+D,EAAK,EAAE,EACnBwyC,EACkB,GAAf1mD,EAAOwB,MAA4B,GAAfxB,EAAOwB,KAC1BuD,EAAE,MAAM,EAAEoL,OAAO+D,EAAK,EAAE,EAEpBgE,EAAQsiB,QAAQ,IAAIyqB,EAAK,EAAE,EAAE,KAC/B/sC,EAAQ/O,KAAK,UAAW+O,EAAQxE,IAAI,SAAS,CAAC,EAAEoG,KAAK,EAAEzG,SAAS,kBAAkB,EAAEixB,KAAKpwB,EAAK,EAAE,EAChGnP,EAAE,IAAKkgD,EAAK,GAAK0B,CAAK,EAAEz2C,KAAK,IAAI+0C,EAAK,EAAE,EAAEjZ,OAAO+a,CAAS,GAG1D53C,EAAKgB,OAAO+D,EAAK,EAAE,EACzBnP,EAAE,IAAKkgD,EAAKkB,IAAI,EAAE,IAAMh3C,EAAKgB,OAAOwH,EAAM+vC,SAAWA,CAAQ,EAE7DrjD,EAAK+iD,OAASriD,EAAE,IAAKkgD,EAAK,GAAK0B,CAAK,EACpCtiD,EAAKsjD,OAAS5iD,EAAE,IAAKkgD,EAAKiB,MAAQS,CAAK,EAEvC3mD,EAAOwmD,WAAa7uC,EAAMiwC,aAAajB,CAAK,CAC9C,CAAC,EAAEtqC,KAAKsqC,CAAK,EAGbtiD,EAAKsjD,OAAOj0C,IAAI,CACdm0C,mBAAoB7nD,EAAOya,MAAM,IAAM,OACtClI,QAAWvS,EAAOya,MAAM,IAAMza,EAAOya,KACxC,CAAC,EAEc,GAAfza,EAAOwB,MAAyB,GAAZO,EAAMgJ,IAAW1G,EAAK+iD,OAAOl3C,KAAK,QAAQ,EAAEjB,KAAK,MAAOiJ,EAAQ,EAAE,EAGvE,GAAflY,EAAOwB,KAAY6C,EAAK0gB,KAAK,GAC3B1gB,EAAKs+C,OAAO,EAEZ36C,SAAS2P,EAAM3Q,SAASjH,SAAS+H,eAAem9C,EAAKkB,IAAI,EAAG,SAAS,CAAC,IACpE9hD,EAAK+iD,OAAO1zC,IAAI,aAAc,QAAQ,EACtC3R,EAAM4V,MAAM,WACVtT,EAAKs+C,OAAO,EACZt+C,EAAK+iD,OAAO1zC,IAAI,aAAc,SAAS,CACzC,CAAC,IAKF1T,CAAAA,EAAOqlD,OACJ1tC,EAAM7K,OAAOy3C,OAAOlgD,EAAKQ,SAC3B8S,EAAM7K,OAAOy3C,OAAOlgD,EAAKQ,OAAS,WAChCR,EAAKkgD,OAAO,CACd,EAEA3kD,EAAI+E,GAAG,SAAUgT,EAAM7K,OAAOy3C,OAAOlgD,EAAKQ,MAAM,GAIpD7E,EAAO4a,MAAQ,GAAKjV,WAAW,WAC7B5D,EAAMwS,MAAMlQ,EAAKQ,KAAK,CACxB,EAAG7E,EAAO4a,IAAI,EACdvW,EAAK+hD,KAAK,EAAEpiD,SAAS,EAGlBihD,EAAKnQ,KAAK90C,EAAO80C,QACdmS,EAAY,cAAehC,EAAKnQ,KAAK90C,EAAO80C,MAChDzwC,EAAK+iD,OAAO/zC,SAAS4zC,CAAS,EAAEngC,IAAI,+EAAgF,WAClH/hB,EAAEzE,IAAI,EAAEiT,YAAY0zC,CAAS,CAC/B,CAAC,GAIH5iD,EAAK+iD,OAAOj+C,KAAK,SAAUnJ,CAAM,CAjHjC,CAkHF,EAGAgO,EAAMw3C,GAAGjB,OAAS,WAChB,IAAIlgD,EAAO/D,KACPN,EAASqE,EAAKrE,OAElBqE,EAAKs+C,OAAO,GACX,SAASt9C,KAAKrF,EAAOojC,KAAK,EAAE,GAAK,SAAS/9B,KAAKrF,EAAOojC,KAAK,EAAE,IAAM/+B,EAAKgY,KAAKhY,EAAKQ,KAAK,EACzE,GAAf7E,EAAOwB,MAAa6C,EAAK0gB,KAAK,CAChC,EAGA/W,EAAMw3C,GAAGnpC,KAAO,SAASxX,GACvB,IAAiB7E,EAANM,KAAoBN,OAAQonD,EAASriD,EAAE,IAAKkgD,EAAK,GAAKpgD,CAAK,EAUlEu+B,GARkB,KAAnBpjC,EAAOojC,KAAK,IAA+B,EAAlBpjC,EAAOqvC,WAE9BttC,EAAMgJ,IAAMhJ,EAAMgJ,GAAK,GAAK/K,EAAOoX,KACpCgwC,EAAOrzC,MAAMqzC,EAAOU,WAAW,CAAC,EAElCV,EAAOW,WAAW,EAAI/nD,EAAOqvC,WAAY+X,EAAOrzC,MAAM/T,EAAOqvC,QAAQ,EAG5D,CAAC+X,EAAOU,WAAW,EAAGV,EAAO/3C,YAAY,IAChD24C,EAAYZ,EAAOl3C,KAAK+0C,EAAK,EAAE,EAAEgD,YAAY,GAAK,EAClDC,EAAYd,EAAOl3C,KAAK,IAAI+0C,EAAK,EAAE,EAAEgD,YAAY,GAAK,EACtDE,EAAY,SAASl6C,IACvBA,EAAOm5C,EAAOl3C,KAAKjC,CAAI,GAClB+F,OAAOovB,EAAK,GAAK4kB,EAAYE,EAAY,GAAuC,EAApC/lC,WAAWlU,EAAKyF,IAAI,aAAa,CAAC,EAAI,CACzF,EAqBA,OAlBO,IADA1T,EAAOwB,KAEV2mD,EAAU,QAAQ,EAGI,KAAnBnoD,EAAOojC,KAAK,GACS,EAAnBpjC,EAAOooD,WAAiBhB,EAAOa,YAAY,EAAIjoD,EAAOooD,WACvDhlB,EAAK,GAAKpjC,EAAOooD,UACjBD,EAAU,IAAIlD,EAAK,EAAE,GACbjlD,EAAOqlD,OAASjiB,EAAK,IAAMxjC,EAAIoU,OAAO,IAC9CovB,EAAK,GAAKxjC,EAAIoU,OAAO,EACrBm0C,EAAU,IAAIlD,EAAK,EAAE,GAGvBkD,EAAU,IAAIlD,EAAK,EAAE,EAhChB3kD,IAsCb,EAGA0N,EAAMw3C,GAAG7C,OAAS,WAChB,IAAIt+C,EAAO/D,KAAMN,EAASqE,EAAKrE,OAAQonD,EAAS/iD,EAAK+iD,OACjDhkB,EAAO,CAACgkB,EAAOW,WAAW,EAAGX,EAAOa,YAAY,GAChDzmD,EAAgC,UAAzB,OAAOxB,EAAO2iD,OACzBt+C,EAAKgkD,WAAazoD,EAAIoU,OAAO,EAAIovB,EAAK,IAAI,EAC1C/+B,EAAKikD,YAAc1oD,EAAImU,MAAM,EAAIqvB,EAAK,IAAI,EAEvC5hC,GACD6C,EAAKgkD,UAAYroD,EAAO2iD,OAAO,GAC/Bt+C,EAAKikD,WAAatoD,EAAO2iD,OAAO,IAAIt+C,EAAKikD,YACf,SAAlBtoD,EAAO2iD,SAEM,MAAlB3iD,EAAO2iD,OACRt+C,EAAKgkD,UAAY,EACS,MAAlBroD,EAAO2iD,OACft+C,EAAKikD,WAAa1oD,EAAImU,MAAM,EAAIqvB,EAAK,GACX,MAAlBpjC,EAAO2iD,OACft+C,EAAKgkD,UAAYzoD,EAAIoU,OAAO,EAAIovB,EAAK,GACX,MAAlBpjC,EAAO2iD,OACft+C,EAAKikD,WAAa,EACQ,OAAlBtoD,EAAO2iD,QACft+C,EAAKgkD,UAAY,EACjBhkD,EAAKikD,WAAa,GACQ,OAAlBtoD,EAAO2iD,QACft+C,EAAKgkD,UAAYzoD,EAAIoU,OAAO,EAAIovB,EAAK,GACrC/+B,EAAKikD,WAAa,GACQ,OAAlBtoD,EAAO2iD,QACft+C,EAAKgkD,UAAY,EACjBhkD,EAAKikD,WAAa1oD,EAAImU,MAAM,EAAIqvB,EAAK,IACX,OAAlBpjC,EAAO2iD,QACft+C,EAAKgkD,UAAYzoD,EAAIoU,OAAO,EAAIovB,EAAK,GACrC/+B,EAAKikD,WAAa1oD,EAAImU,MAAM,EAAIqvB,EAAK,IAErC/+B,EAAKgkD,UAAYroD,EAAO2iD,QAKxB3iD,EAAOqlD,QACThhD,EAAKgkD,UAAY,KAAKhjD,KAAKhB,EAAKgkD,SAAS,EACvCzoD,EAAIoU,OAAO,EAAEmO,WAAW9d,EAAKgkD,SAAS,EAAE,IACxClmC,WAAW9d,EAAKgkD,SAAS,EAC3BhkD,EAAKikD,WAAa,KAAKjjD,KAAKhB,EAAKikD,UAAU,EACzC1oD,EAAImU,MAAM,EAAEoO,WAAW9d,EAAKikD,UAAU,EAAE,IACxCnmC,WAAW9d,EAAKikD,UAAU,EAC5BjkD,EAAKgkD,WAAazoD,EAAIilB,UAAU,EAChCxgB,EAAKikD,YAAc1oD,EAAI8oC,WAAW,GAID,QAAhC0e,EAAOj+C,KAAK,cAAc,IAC3B9E,EAAKgkD,UAAYzoD,EAAIoU,OAAO,GAAKozC,EAAOl3C,KAAK+0C,EAAK,EAAE,EAAEgD,YAAY,GAAK,GACvE5jD,EAAKikD,WAAalB,EAAO1zC,IAAI,MAAM,GAIrC0zC,EAAO1zC,IAAI,CACThD,IAAKrM,EAAKgkD,UACV53C,KAAMpM,EAAKikD,UACb,CAAC,CACH,EAGAt6C,EAAMw3C,GAAGzgC,KAAO,WACd,IAAiB/kB,EAANM,KAAoBN,OAAQonD,EAA5B9mD,KAA0C8mD,OACjDmB,EAAU,CAACnB,EAAOW,WAAW,EAAGX,EAAOa,YAAY,GAAI7C,EAASrgD,EAAE/E,EAAOolD,MAAM,EAE/EoD,EAAO,CACTz0C,OAFaqxC,EAAXA,EAAO,GAEFA,EAFergD,EAAE,MAAM,GAEhBgjD,WAAW,EACzB/zC,OAAQoxC,EAAO6C,YAAY,EAC3Bv3C,IAAK00C,EAAOzC,OAAO,EAAEjyC,IACrBD,KAAM20C,EAAOzC,OAAO,EAAElyC,IACxB,EAAGg4C,EAAQrB,EAAOl3C,KAAK,oBAAoB,EAEvCw4C,EAAQ1oD,EAAO+kB,KAAK,GACxB/kB,EAAO+kB,KAAK,IAAM0jC,EAAMx+C,OAAO,EAE/Bu+C,EAAKG,SAAW,WAC4B,EAAvCH,EAAK/3C,KAAO83C,EAAQ,GAAK3oD,EAAImU,MAAM,GACpCy0C,EAAKI,QAAUJ,EAAK/3C,KAAO+3C,EAAKz0C,MAAQw0C,EAAQ,GAChDE,EAAM/0C,IAAI,CAAC1C,MAAO,GAAIP,KAAM,MAAM,CAAC,GAEnC+3C,EAAKI,QAAUJ,EAAK/3C,IAExB,EAGA+3C,EAAKK,MAAQ,CAAC,WACZL,EAAKG,SAAS,EACdH,EAAKM,OAASN,EAAK93C,IAAM63C,EAAQ,GAAK,GACtCE,EAAMl1C,YAAY,mBAAmB,EAAEF,SAAS,mBAAmB,EAAEK,IAAI,qBAAsB1T,EAAO+kB,KAAK,EAAE,CAC/G,EAAG,WACDyjC,EAAKI,QAAUJ,EAAK/3C,KAAO+3C,EAAKz0C,MAAQ,GACxCy0C,EAAKM,OAASN,EAAK93C,IACnB+3C,EAAMl1C,YAAY,mBAAmB,EAAEF,SAAS,mBAAmB,EAAEK,IAAI,sBAAuB1T,EAAO+kB,KAAK,EAAE,CAChH,EAAG,WACDyjC,EAAKG,SAAS,EACdH,EAAKM,OAASN,EAAK93C,IAAM83C,EAAKx0C,OAAS,GACvCy0C,EAAMl1C,YAAY,mBAAmB,EAAEF,SAAS,mBAAmB,EAAEK,IAAI,qBAAsB1T,EAAO+kB,KAAK,EAAE,CAC/G,EAAG,WACDyjC,EAAKI,QAAUJ,EAAK/3C,KAAO83C,EAAQ,GAAK,GACxCC,EAAKM,OAASN,EAAK93C,IACnB+3C,EAAMl1C,YAAY,mBAAmB,EAAEF,SAAS,mBAAmB,EAAEK,IAAI,sBAAuB1T,EAAO+kB,KAAK,EAAE,CAChH,GACAyjC,EAAKK,MAAMH,EAAM,GAAG,EAGP,IAAVA,EACDF,EAAK93C,KAAO9Q,EAAIilB,UAAU,EAAI0jC,EAAQ,GAAK,IAAO,GAAKC,EAAKK,MAAM,GAAG,EACnD,IAAVH,EACoD,EAA5D9oD,EAAImU,MAAM,GAAKy0C,EAAK/3C,KAAO+3C,EAAKz0C,MAAQw0C,EAAQ,GAAK,KAAYC,EAAKK,MAAM,GAAG,EAC7D,IAAVH,EACuE,EAA9EF,EAAK93C,IAAM9Q,EAAIilB,UAAU,EAAI2jC,EAAKx0C,OAASu0C,EAAQ,GAAK,GAAO3oD,EAAIoU,OAAO,GAASw0C,EAAKK,MAAM,GAAG,EAChF,IAAVH,GACwB,EAA/BH,EAAQ,GAAK,GAAMC,EAAK/3C,MAAY+3C,EAAKK,MAAM,GAAG,EAGrDzB,EAAOl3C,KAAK,IAAI+0C,EAAK,EAAE,EAAEvxC,IAAI,CAC3Bm0C,mBAAoB7nD,EAAO+kB,KAAK,GAChCgkC,gBAAkB/oD,EAAOklD,SAAW,OAAS,EAC/C,CAAC,EACDkC,EAAO1zC,IAAI,CACTjD,KAAM+3C,EAAKI,SAAW5oD,EAAOqlD,MAAQzlD,EAAI8oC,WAAW,EAAI,GACxDh4B,IAAK83C,EAAKM,QAAW9oD,EAAOqlD,MAAQzlD,EAAIilB,UAAU,EAAI,EACxD,CAAC,CACH,EAGA7W,EAAMw3C,GAAGY,KAAO,WACd,IAAI/hD,EAAO/D,KACPN,EAASqE,EAAKrE,OACdgpD,EAAOjkD,EAAEhF,QAAQ,EACjBqnD,EAAS/iD,EAAK+iD,OACd6B,EAAY,CAAC,gBAAiB,mBAC9BvB,EAAWN,EAAOl3C,KAAKlQ,EAAOomD,IAAI,EAClC8C,EAAa9B,EAAOl3C,KAAK,qBAAqB,EAyHlD,OAtHGlQ,EAAOomD,MAAMsB,EAASh0C,IAAI,SAAU,MAAM,EAG7Cg0C,EAAS/iD,GAAG,YAAa,SAASM,GAChC,IACIyM,EACAy3C,EAFAlkD,EAAEiwB,SACFxjB,EAAQ3M,EAAEzE,IAAI,EACd6oD,EAAO,GAERnpD,EAAOomD,OACR+C,EAAK/B,OAASA,EACd+B,EAAKnpD,OAASA,EACdmpD,EAAKxG,OAAS,CACZ19C,EAAE6L,QAAUqR,WAAWilC,EAAO1zC,IAAI,MAAM,CAAC,EACzCzO,EAAE8L,QAAUoR,WAAWilC,EAAO1zC,IAAI,KAAK,CAAC,GAG1ChC,EAAMvI,KAAK8/C,EAAU,GAAIE,CAAI,EAC7BxxC,EAAMyxC,cAAgB13C,EACtBiG,EAAM+vC,SAASh0C,IAAI,SAAU,MAAM,EAAEoG,KAAK,GAG5C7U,EAAE2hB,eAAe,EACnB,CAAC,EAGDsiC,EAAWvkD,GAAG,YAAa,SAASM,GAClC,IAAIyM,EAAQ3M,EAAEzE,IAAI,EACd6oD,EAAO,GAERnpD,EAAOukD,SACR4E,EAAK/B,OAASA,EACd+B,EAAKnpD,OAASA,EACdmpD,EAAKxG,OAAS,CAAC19C,EAAE6L,QAAS7L,EAAE8L,SAC5Bo4C,EAAKtkD,MAAQR,EAAKQ,MAClBskD,EAAK/lB,KAAO,CACVgkB,EAAOW,WAAW,EACjBX,EAAOa,YAAY,GAGtBv2C,EAAMvI,KAAK8/C,EAAU,GAAIE,CAAI,EAC7BxxC,EAAM0xC,gBAAkB33C,EACxBiG,EAAM+vC,SAASh0C,IAAI,SAAU,WAAW,EAAEoG,KAAK,GAGjD7U,EAAE2hB,eAAe,CACnB,CAAC,EAGEjP,EAAM2xC,WACTN,EAAKrkD,GAAG,YAAa,SAASM,GAE5B,IAEGmiD,EAcKmC,EACAC,EAgBFL,EACAnpD,EAEAypD,EACAjoC,EArCH7J,EAAMyxC,gBAENhC,GAAS+B,EADCxxC,EAAMyxC,cAAcjgD,KAAK8/C,EAAU,EAAE,GAAK,IACtC7B,OACdpnD,EAASmpD,EAAKnpD,OAEXypD,EAAIxkD,EAAE6L,QAAUq4C,EAAKxG,OAAO,GAC5BnhC,EAAIvc,EAAE8L,QAAUo4C,EAAKxG,OAAO,GAC5B0C,EAAmC,UAA3B+B,EAAO1zC,IAAI,UAAU,EAEjCzO,EAAE2hB,eAAe,EAEjBuiC,EAAKO,IAAMrE,EAAQ,EAAIzlD,EAAI8oC,WAAW,EACtCygB,EAAKQ,IAAMtE,EAAQ,EAAIzlD,EAAIilB,UAAU,EAGjC7kB,EAAO4pD,UACLL,EAAS3pD,EAAImU,MAAM,EAAIqzC,EAAOW,WAAW,EAAIoB,EAAKO,IAClDF,EAAS5pD,EAAIoU,OAAO,EAAIozC,EAAOa,YAAY,EAAIkB,EAAKQ,IAEpDJ,GADaE,EAAjBA,EAAIN,EAAKO,IAAYP,EAAKO,IAC1BD,KAAeA,EAAIF,GAEfC,GADahoC,EAAjBA,EAAI2nC,EAAKQ,IAAYR,EAAKQ,IAC1BnoC,KAAeA,EAAIgoC,IAIrBpC,EAAO1zC,IAAI,CACTjD,KAAMg5C,EACN/4C,IAAK8Q,CACP,CAAC,GAIA7J,EAAM0xC,kBAEHrpD,GAASmpD,EADFxxC,EAAM0xC,gBAAgBlgD,KAAK8/C,EAAU,EAAE,GAAK,IACrCjpD,OAEdypD,EAAIxkD,EAAE6L,QAAUq4C,EAAKxG,OAAO,GAC5BnhC,EAAIvc,EAAE8L,QAAUo4C,EAAKxG,OAAO,GAEhC19C,EAAE2hB,eAAe,EAGjB7kB,EAAMmF,MAAMiiD,EAAKtkD,MAAO,CACtBkP,MAAOo1C,EAAK/lB,KAAK,GAAKqmB,EACrBz1C,OAAQm1C,EAAK/lB,KAAK,GAAK5hB,CAC1B,CAAC,EAEDxhB,EAAO6pD,WAAY7pD,EAAO6pD,SAASV,EAAK/B,MAAM,CAElD,CAAC,EAAEziD,GAAG,UAAW,SAASM,GACxB,IACMkkD,EACAnpD,EAFH2X,EAAMyxC,gBAEHppD,GADAmpD,EAAOxxC,EAAMyxC,cAAcjgD,KAAK8/C,EAAU,EAAE,GAAK,IACnCjpD,OAElB2X,EAAMyxC,cAAcxpB,WAAWqpB,EAAU,EAAE,EAC3C,OAAOtxC,EAAMyxC,cACbzxC,EAAM+vC,SAAShV,KAAK,EACpB1yC,EAAO8pD,UAAW9pD,EAAO8pD,QAAQX,EAAK/B,MAAM,EAE3CzvC,EAAM0xC,kBACP1xC,EAAM0xC,gBAAgBzpB,WAAWqpB,EAAU,EAAE,EAC7C,OAAOtxC,EAAM0xC,gBACb1xC,EAAM+vC,SAAShV,KAAK,EAExB,CAAC,EAED/6B,EAAM2xC,SAAW,CAAA,GACVjlD,CACT,EAEA2J,EAAMw3C,GAAGxhD,SAAW,WAClB,IAAIK,EAAO/D,KAAM8mD,EAAS/iD,EAAK+iD,OAAQpnD,EAASqE,EAAKrE,OACrDqE,EAAK0lD,UAAU,EACZ/pD,EAAO6+C,UACU,GAAf7+C,EAAOwB,KACR4lD,EAAOl3C,KAAK,QAAQ,EAAEvL,GAAG,OAAQ,WAC/B3E,EAAO6+C,QAAQuI,EAAQ/iD,EAAKQ,MAAOR,CAAI,CACzC,CAAC,EAEDrE,EAAO6+C,QAAQuI,EAAQ/iD,EAAKQ,MAAOR,CAAI,GAG/B,GAAZtC,EAAMgJ,IAAW1G,EAAK2lD,IAAI5C,CAAM,EAGhCA,EAAOl3C,KAAK,IAAK+0C,EAAK,EAAE,EAAE/xC,SAAS,GAAG,EAAEvO,GAAG,QAAS,WAClD,IAAIE,EAAQE,EAAEzE,IAAI,EAAEuE,MAAM,EACb,IAAVA,EACE7E,EAAO4kD,IACR5kD,EAAO4kD,IAAIvgD,EAAKQ,MAAOuiD,EAAQ/iD,CAAI,EAC3BrE,EAAa,KACrBA,EAAa,KAAEqE,EAAKQ,MAAOuiD,EAAQ/iD,CAAI,EAEvCtC,EAAMwS,MAAMlQ,EAAKQ,KAAK,EAId,CAAA,KADE7E,EAAO,OAAO6E,EAAM,KAAO7E,EAAO,OAAO6E,EAAM,IAAIR,EAAKQ,MAAOuiD,EAAQ/iD,CAAI,IACpEtC,EAAMwS,MAAMlQ,EAAKQ,KAAK,CAE7C,CAAC,EASDuiD,EAAOl3C,KAAK,IAAK+0C,EAAK,EAAE,EAAEtgD,GAAG,QAN7B,WAEY,CAAA,KADE3E,EAAO6kD,QAAU7kD,EAAO6kD,OAAOxgD,EAAKQ,MAAOuiD,EAAQ/iD,CAAI,IAChDtC,EAAMwS,MAAMlQ,EAAKQ,KAAK,CAC3C,CAG4C,EAGzC7E,EAAOiqD,YACR5lD,EAAKsjD,OAAOhjD,GAAG,QAAS,WACtB5C,EAAMwS,MAAMlQ,EAAKQ,KAAK,CACxB,CAAC,EAIHuiD,EAAOl3C,KAAK,kBAAkB,EAAEvL,GAAG,QAAS,WAElC,CAAA,KADE3E,EAAO4Z,KAAO5Z,EAAO4Z,IAAIwtC,EAAQ/iD,EAAKQ,MAAOR,CAAI,IAC1CtC,EAAM6X,IAAIvV,EAAKQ,MAAO7E,CAAM,CAC/C,CAAC,EAGDonD,EAAOl3C,KAAK,kBAAkB,EAAEvL,GAAG,QAAS,WACvCI,EAAEzE,IAAI,EAAEkT,SAAS,oBAAoB,GACtCzR,EAAMulD,QAAQjjD,EAAKQ,KAAK,EACxB7E,EAAOsnD,SAAWtnD,EAAOsnD,QAAQF,EAAQ/iD,EAAKQ,MAAOR,CAAI,IAEzDtC,EAAMmoD,KAAK7lD,EAAKQ,MAAO7E,CAAM,EAC7B2F,WAAW,WACT3F,EAAOkqD,MAAQlqD,EAAOkqD,KAAK9C,EAAQ/iD,EAAKQ,MAAOR,CAAI,CACrD,EAAG,GAAG,EAEV,CAAC,EAEDrE,EAAO0W,MAAQiB,EAAMjB,IAAIrS,EAAKQ,OAAS7E,EAAO0W,IAChD,EAGAiB,EAAMwyC,SAAW,WACfplD,EAAEH,KAAKG,EAAE,QAAQ,EAAG,SAASF,EAAQmF,GACnC,IAAIogD,EAAQrlD,EAAEzE,IAAI,EACd8pD,EAAM5vB,QAAQ,IAAIyqB,EAAK,EAAE,EAAE,IACL,GAAvBmF,EAAMn7C,KAAK,OAAO,GAAUlK,EAAE,IAAIkgD,EAAK,EAAE,EAAEjkD,OAAS,GAAMopD,EAAMn2C,WAAW,OAAO,EAAE6F,KAAK,CAG9F,CAAC,CACH,EAEA9L,EAAMw3C,GAAGwE,IAAM,SAAS5C,GAEtBriD,EAAE,QAAQ,EAAEH,KAAK,SAASC,EAAQmF,GAChC,IAAIogD,EAAQrlD,EAAEzE,IAAI,EACd8pD,EAAM5vB,QAAQ,IAAIyqB,EAAK,EAAE,EAAE,IACJ,SAAzBmF,EAAM12C,IAAI,SAAS,GAAgB02C,EAAMn7C,KAAK,CAAClN,MAAU,GAAG,CAAC,EAAE2wC,KAAK,CAGxE,CAAC,CACH,EAGA1kC,EAAMw3C,GAAGuE,UAAY,WAInBhoD,EAAMuY,OAHKha,KAGSN,OAAOsa,OAC3BvY,EAAMsoD,OAAS,SAASjD,GAOtB,OAFArlD,EAAMuY,OAAStS,SAASo/C,EAAO,GAAGlgD,MAAMoT,MAAM,EAC9C8sC,EAAOziD,GAAG,YALM,WACd5C,EAAMuY,MAAM,GACZ8sC,EAAO1zC,IAAI,UAAW3R,EAAMuY,OAAS,CAAC,CACxC,CAEgC,EACzBvY,EAAMuY,MACf,CACF,EAGA3C,EAAM2yC,OAAS,SAASlD,GACtB,GAAG,CAACA,EAAO,GAAI,OAAOt5C,EAAOrM,SAAWA,QAAQH,MAAM,aAAa,EACnE,IAAI8hC,EAAO,CACTgkB,EAAO,GAAGlgD,MAAM6M,OAASqzC,EAAOrzC,MAAM,EACtCqzC,EAAO,GAAGlgD,MAAM8M,QAAUozC,EAAOpzC,OAAO,EACxCozC,EAAOh3C,SAAS,EAAEM,IAClB02C,EAAOh3C,SAAS,EAAEK,KAAO0R,WAAWilC,EAAO1zC,IAAI,aAAa,CAAC,GAE/D0zC,EAAOl3C,KAAK,kBAAkB,EAAEmD,SAAS,oBAAoB,EAC7D+zC,EAAOn4C,KAAK,CAACm0B,KAAMA,CAAI,CAAC,CAC1B,EAGAzrB,EAAMiwC,aAAe,SAAS/iD,GAC5BogD,EAAK/wC,KAAKR,IAAI,WAAY,QAAQ,EAAEzE,KAAK,aAAcpK,CAAK,CAC9D,EAGA8S,EAAM4yC,cAAgB,SAAS1lD,GAC1BogD,EAAK/wC,KAAKjF,KAAK,YAAY,GAAKpK,IACjCogD,EAAK/wC,KAAK,GAAGhN,MAAM+9C,EAAK/wC,KAAK,GAAGhN,MAAMsjD,eAClC,iBACF,mBAAmB,UAAU,EAC/BvF,EAAK/wC,KAAKD,WAAW,YAAY,EAErC,GAIAnG,EAAO/L,MAAQA,GAGT0oD,cAAgB,SAAS18C,EAAUlJ,GAEvC,OADAA,EAAQA,GAASE,EAAE,IAAIkgD,EAAK,EAAE,EAAEh2C,KAAK,OAAO,EACrClK,EAAE,IAAKkgD,EAAK,GAAKpgD,CAAK,EAAEqL,KAAK,QAAQ,EAAE6pB,SAAS,EAAE7pB,KAAKnC,CAAQ,CACxE,EAGAhM,EAAM2oD,cAAgB,SAASzjD,GAC7B,OAAOlC,EAAE,IAAKkC,CAAI,EAAEuzB,QAAQ,IAAIyqB,EAAK,EAAE,EAAEh2C,KAAK,OAAO,CACvD,EAGAlN,EAAM4oD,WAAa,SAAS9lD,GAC1B,IACI+lD,EAEA5C,EACAE,EAJArjD,IACA+lD,EAAM7oD,EAAM0oD,cAAc,OAAQ5lD,CAAK,EAAEojD,YAAY,EAErDD,GADAZ,EAASriD,EAAE,IAAKkgD,EAAK,GAAKpgD,CAAK,GACZqL,KAAK+0C,EAAK,EAAE,EAAEgD,YAAY,GAAK,EAClDC,EAAYd,EAAOl3C,KAAK,IAAI+0C,EAAK,EAAE,EAAEgD,YAAY,GAAK,EAC1Db,EAAO1zC,IAAI,CAACM,OAAQ42C,EAAM5C,EAAYE,CAAS,CAAC,EAChDd,EAAOl3C,KAAK,QAAQ,EAAEwD,IAAI,CAACM,OAAQ42C,CAAG,CAAC,EACzC,EAGA7oD,EAAM8oD,UAAY,SAAShmD,EAAOT,GAChCW,EAAE,IAAKkgD,EAAK,GAAKpgD,CAAK,EAAEqL,KAAK,QAAQ,EAAEjB,KAAK,MAAO7K,CAAG,CACxD,EAGArC,EAAMmF,MAAQ,SAASrC,EAAO+D,EAASmN,GACrC,IAAIqxC,EAASriD,EAAE,IAAKkgD,EAAK,GAAKpgD,CAAK,EAC/BimD,EAAW1D,EAAOl3C,KAAK,sBAAsB,EAC7C1O,EAAO4lD,EAAOn4C,KAAK,MAAM,EACzB+4C,EAAYZ,EAAOl3C,KAAK+0C,EAAK,EAAE,EAAEgD,YAAY,GAAK,EAClDC,EAAYd,EAAOl3C,KAAK,IAAI+0C,EAAK,EAAE,EAAEgD,YAAY,GAAK,EAC5Cb,EAAOn4C,KAAK,SAAS,EAGhCzN,IAASmW,EAAMnW,KAAK,IAAMA,IAASmW,EAAMnW,KAAK,KAI7CuU,IACCoM,WAAWvZ,EAAQmL,KAAK,GAAK,MAC9BnL,EAAQmL,MAAQ,KAGfoO,WAAWvZ,EAAQoL,MAAM,EAAIg0C,EAAYE,GAAa,KACvDt/C,EAAQoL,OAAS,GAAKg0C,EAAYE,IAGtCd,EAAO1zC,IAAI9K,CAAO,EAClBs/C,EAAYd,EAAOl3C,KAAK,IAAI+0C,EAAK,EAAE,EAAEgD,YAAY,GAAK,EAEnDzmD,IAASmW,EAAMnW,KAAK,GACrB4lD,EAAOl3C,KAAK,QAAQ,EAAEwD,IAAI,CACxBM,QAAmC,UAA1B,OAAOpL,EAAQoL,OAAsBpL,EAAQoL,OAASozC,EAAOpzC,OAAO,GAAKg0C,EAAYE,CAChG,CAAC,EAED4C,EAASp3C,IAAI,CACXM,QAAmC,UAA1B,OAAOpL,EAAQoL,OAAsBpL,EAAQoL,OAASozC,EAAOpzC,OAAO,GAAKg0C,EAAYE,EAC5F/lC,WAAW2oC,EAASp3C,IAAI,aAAa,CAAC,EACtCyO,WAAW2oC,EAASp3C,IAAI,gBAAgB,CAAC,CAC7C,CAAC,EAEL,EAGA3R,EAAM6X,IAAM,SAAS/U,EAAO+D,GAC1B,IAUImiD,EACA/C,EAEAgD,EACAv6C,EACAL,EAEAzG,EAjBAy9C,EAASriD,EAAE,IAAKkgD,EAAK,GAAKpgD,CAAK,EAC/BomD,EAAe7D,EAAOj+C,KAAK,cAAc,EAEzB,QAAjB8hD,IACiB,QAAjBA,GAAwBlpD,EAAMulD,QAAQziD,CAAK,EAE9CuiD,EAAOj+C,KAAK,eAAgB,KAAK,EACjCP,EAAUA,GAAWw+C,EAAOj+C,KAAK,QAAQ,GAAK,GAE1Cw+C,EAAS5iD,EAAE,IAAKkgD,EAAKiB,MAAQrhD,CAAK,EAClCkmD,EAAU3D,EAAOl3C,KAAK,kBAAkB,EACxC83C,EAAYZ,EAAOl3C,KAAK+0C,EAAK,EAAE,EAAEgD,YAAY,GAAK,EAGlDx3C,GADAu6C,EAAgC,UAAnB,OADbE,EAAU9D,EAAOn4C,KAAK,SAAS,IAEXi8C,EAAW,IAAIvzC,EAAM6sC,cAAe,KACxDp0C,EAAWg3C,EAAO1zC,IAAI,UAAU,EAEhC/J,EAAW,CACboK,MAFa,IAGZC,OAAQg0C,EACR53C,SAAU,QACVglC,SAAU,QACb,EAEAz9B,EAAM2yC,OAAOlD,CAAM,EAGW,EAA3BzvC,EAAM8sC,YAAYzjD,SACnByP,EAAOkH,EAAM8sC,YAAY,GACzB9sC,EAAM8sC,YAAYl1B,MAAM,GAIvBpN,WAAW1R,CAAI,EAjBH,IAiBmB7Q,EAAImU,MAAM,IAC1CtD,EAAO7Q,EAAImU,MAAM,EAlBJ,KAmBX4D,EAAM8sC,YAAY0G,UAAYxzC,EAAM8sC,YAAY0G,WAAa,EACtDxzC,EAAM8sC,YAAY0G,WAAa,IAE9B,IAAG16C,EAAO,GAInB7H,EAAQ09C,WACT38C,EAAS8G,KAAOA,EAChB9G,EAAS+G,IAAM9Q,EAAIoU,OAAO,EAAIg0C,EAC9BgD,GAAcrzC,EAAM6sC,aAAa,GACjC4C,EAAOn4C,KAAK,UAAWwB,CAAI,GAG7B22C,EAAOn4C,KAAK,WAAYmB,CAAQ,EAChCrO,EAAMmF,MAAMrC,EAAO8E,EAAU,CAAA,CAAI,EAEjCohD,EAAQrY,KAAK,EACW,SAAxB0U,EAAOn4C,KAAK,MAAM,GAAgBm4C,EAAOl3C,KAAK+0C,EAAK,EAAE,EAAEvS,KAAK,EAC5D/6B,EAAM4yC,cAAc1lD,CAAK,EAGzB8iD,EAAOjV,KAAK,EACd,EAGA3wC,EAAMulD,QAAU,SAASziD,GACvB,IAAIuiD,EAASriD,EAAE,IAAKkgD,EAAK,GAAKpgD,CAAK,EAC/B8iD,EAAS5iD,EAAE,IAAKkgD,EAAKiB,MAAQrhD,CAAK,EAClCu+B,EAAOgkB,EAAOn4C,KAAK,MAAM,EAAE3F,MAAM,GAAG,EACpC9H,EAAO4lD,EAAOn4C,KAAK,MAAM,EACzBrG,EAAUw+C,EAAOj+C,KAAK,QAAQ,GAAK,GAEvCi+C,EAAOxnB,WAAW,cAAc,EAGhC79B,EAAMmF,MAAMrC,EAAO,CACjBkP,MAAOqvB,EAAK,GACZpvB,OAAQovB,EAAK,GACb1yB,IAAKyR,WAAWihB,EAAK,EAAE,EACvB3yB,KAAM0R,WAAWihB,EAAK,EAAE,EACxBhzB,SAAUg3C,EAAOn4C,KAAK,UAAU,EAChCmmC,SAAU,SACZ,EAAG,CAAA,CAAI,EAEPgS,EAAOl3C,KAAK,kBAAkB,EAAEqD,YAAY,oBAAoB,EAChE6zC,EAAOl3C,KAAK,kBAAkB,EAAE4J,KAAK,EAC5B,SAATtY,GAAmB4lD,EAAOl3C,KAAK+0C,EAAK,EAAE,EAAEnrC,KAAK,EAG7ClR,EAAQ49C,UAAY7uC,EAAM4yC,cAAc1lD,CAAK,EAAI8S,EAAMiwC,aAAa/iD,CAAK,EAGzE8iD,EAAO7tC,KAAK,CAEd,EAGA/X,EAAMmoD,KAAO,SAASrlD,GACpB,IAAIuiD,EAASriD,EAAE,IAAKkgD,EAAK,GAAKpgD,CAAK,EAC/BomD,EAAe7D,EAAOj+C,KAAK,cAAc,EAEzB,QAAjB8hD,IACiB,QAAjBA,GAAwBlpD,EAAMulD,QAAQziD,CAAK,EAE9CuiD,EAAOj+C,KAAK,eAAgB,KAAK,EACjCwO,EAAM2yC,OAAOlD,CAAM,EAEfnC,EAAK/wC,KAAKjF,KAAK,YAAY,GAC7B0I,EAAMiwC,aAAa/iD,CAAK,EAG1Bc,WAAW,WACT,IAAIylD,EAAmC,UAA3BhE,EAAO1zC,IAAI,UAAU,EACjC3R,EAAMmF,MAAMrC,EAAO,CACjB6L,IAAK06C,EAAQ,EAAIxrD,EAAIilB,UAAU,EAC/BpU,KAAM26C,EAAQ,EAAIxrD,EAAI8oC,WAAW,EACjC30B,MAAO,OACPC,OAAQ,MACV,EAAG,CAAA,CAAI,EACPozC,EAAOl3C,KAAK,kBAAkB,EAAEwiC,KAAK,CACvC,EAAG,GAAG,EACR,EAGA3wC,EAAMoe,MAAQ,SAASlZ,EAAMpC,GACfE,EAAE,IAAKkgD,EAAK,IAAMpgD,GAAS9C,EAAM8C,MAAM,EAAEqL,KAAK+0C,EAAK,EAAE,EAC3D/wC,KAAKjN,CAAI,CACjB,EAGAlF,EAAMwS,MAAQ,SAAS1P,EAAOb,GAC5B,IAcIqnD,EAQAphD,EAtBAm9C,GACEltB,EAAUn1B,EAAE,IAAKkgD,EAAK,EAAE,EAAE/xC,SAAS,IAAKrO,CAAK,EAAEq1B,QAAQ,IAAK+qB,EAAK,EAAE,GACxD,IACbpgD,EAAQq1B,EAAQjrB,KAAK,OAAO,EAC5BirB,GACEn1B,EAAE,IAAKkgD,EAAK,GAAKpgD,CAAK,EAExBrD,EAAO4lD,EAAOn4C,KAAK,MAAM,EACzBrG,EAAUw+C,EAAOj+C,KAAK,QAAQ,GAAK,GACnCo+C,EAAc3+C,EAAQnB,IAAMmB,EAAQ2+C,YAEpCH,EAAO,KAGPiE,EAAY,CACdjV,UAAW,4BACX4P,UAAW,4BACX3P,QAAS,0BACT4P,WAAY,4BACb,EAAEr9C,EAAQksC,OAAS,mBAGhB7qC,EAAS,WACX,IAAIqhD,EAAO,mBAGX,GAAG/D,EAED,OADAH,EAAO7zC,YAAY,cAAe83C,CAAS,EACpCjE,EAAO1U,KAAK,EAIrB,GAAGlxC,IAASmW,EAAMnW,KAAK,IAAiC,WAA3B4lD,EAAOn4C,KAAK,SAAS,EAAe,CAC/Dm4C,EAAOl0C,SAAS,SAAU+xC,EAAK,GAAI,GAAG,EAAEh7C,OAAO,EAE/C,IADA,IAAIq6B,EAAO8iB,EAAOl3C,KAAK,IAAIo7C,CAAI,EACvBrqD,EAAI,EAAGA,EAAI,EAAGA,CAAC,GACrBqjC,EAAK2b,OAAO,EAEd3b,EAAK5wB,IAAI,UAAW4wB,EAAKn7B,KAAK,SAAS,CAAC,EAAEoK,YAAY+3C,CAAI,CAC5D,KAAO,CAEL,GAAG9pD,IAASmW,EAAMnW,KAAK,GACrB,IACE,IAAIirC,EAAS1nC,EAAE,IAAKkgD,EAAK,GAAKpgD,CAAK,EAAE,GACrC4nC,EAAO3R,cAAc/6B,SAASitC,MAAM,EAAE,EACtCP,EAAO3R,cAAcvmB,MAAM,EAC3B6yC,EAAOl3C,KAAK,IAAI+0C,EAAK,EAAE,EAAE,GAAGz/C,YAAYinC,CAAM,CACrC,CAAT,MAAMxnC,IAEVmiD,EAAO,GAAGp3C,UAAY,GACtBo3C,EAAOn9C,OAAO,CAChB,CAE4B,YAA5B,OAAO0N,EAAMjB,IAAI7R,IAAyB8S,EAAMjB,IAAI7R,GAAO,EAC3D,OAAO8S,EAAMjB,IAAI7R,GACG,YAApB,OAAOb,GAA2BA,EAAS,EAGxC2T,EAAM7K,OAAOy3C,OAAO1/C,KACrBjF,EAAIwN,IAAI,SAAUuK,EAAM7K,OAAOy3C,OAAO1/C,EAAM,EAC5C,OAAO8S,EAAM7K,OAAOy3C,OAAO1/C,GAE/B,EAGEE,EAAE,IAAKkgD,EAAKiB,MAAQrhD,CAAK,EACvB0iD,EAAc,OAAS,UACvB,EAID3+C,EAAQy9C,WACTe,EAAO/zC,SAAS,cAAeg4C,CAAS,EAG9B,GAAZtpD,EAAMgJ,IAAW4M,EAAMwyC,SAAS,EAChCxyC,EAAM4yC,cAAc1lD,CAAK,EAGY,UAAlC,OAAOuiD,EAAOn4C,KAAK,SAAS,IAC7B0I,EAAM6sC,aAAa,GACnB7sC,EAAM8sC,YAAY7+C,KAAKwhD,EAAOn4C,KAAK,SAAS,CAAC,GAG3ClN,EAAMgJ,IAAMhJ,EAAMgJ,GAAK,IAAO,CAACnC,EAAQy9C,UACzCp8C,EAAO,EAEPtE,WAAW,WACTsE,EAAO,CACT,EAAG,GAAG,EAEV,EAGAlI,EAAMylD,SAAW,SAAShmD,EAAMwC,GACX,YAAhB,OAAOxC,IACRwC,EAAWxC,EACXA,EAAO,MAET,IAAI+pD,EAAWxmD,EAAE,IAAIkgD,EAAK,EAAE,EAC5BlgD,EAAEH,KAAK2mD,EAAU,SAAS9hD,GACxB,IAAIiI,EAAQ3M,EAAEzE,IAAI,EACd24B,EAAKz3B,EAAQkQ,EAAMzC,KAAK,MAAM,IAAMzN,EAAQ,EAChDy3B,GAAMl3B,EAAMwS,MAAM7C,EAAMzC,KAAK,OAAO,EAAGxF,IAAW8hD,EAASvqD,OAAS,EAAIgD,EAAW,IAAI,CAEzF,CAAC,EACsB,IAApBunD,EAASvqD,QAAkC,YAApB,OAAOgD,GAA2BA,EAAS,CACvE,EAGAjC,EAAMypD,UAAY,SAAShqD,GAEzBO,EAAMwS,MAAMxP,EAAE,iBADdvD,EAAOA,GAAQ,QACsB,OAAO,EAAEyN,KAAK,OAAO,CAAC,CAC7D,EAQYlN,EAAMwB,OAAS,IACvByhD,EAAO,SAASxjD,GAClB,OAAQ+B,EAAMyhD,KAAQ,IAAMzhD,EAAMyhD,KAAO,IAAMzhD,EAAMyhD,KAAO,IAAIxjD,EAAQ,EAC1E,EAGAO,EAAM0pD,OAAS,SAAS7iD,EAASg8C,GAC/B,IAAI19C,EAAQ,GAAIwkD,EAAc,GAGR,YAAnB,OAFH9iD,EAAUA,GAAW,MAEag8C,EAAMh8C,GAErCA,EAAQw6B,OAETl8B,EAAQ,kBADJk8B,EAAOx6B,EAAQw6B,MACY,GAAI,aAAcA,EAAK,GAAK,KAC3D,OAAOx6B,EAAQw6B,MAEbx6B,EAAQ8iD,cACVA,EAAc,iBAAmB9iD,EAAQ8iD,YAAc,KAEzD,IAAID,EAAQvzC,EAA8B,GAApBtP,EAAQ+iD,SAAgB,sCAAwCzkD,EAAQwkD,EAAc,eACnG,iBAAuC,GAApB9iD,EAAQ+iD,SAAgB,WAAa,QAAU,8BAAgCD,EAAc,IAGrH7M,EAAUj2C,EAAQi2C,QAGtB,OAFA,OAAOj2C,EAAQi2C,QAER98C,EAAMuS,KAAKvP,EAAEiE,OAAO,CACzBxH,KAAM,EACN4V,IAAK,CAAC,mBAAmB,oBACzBc,QAASA,EACT8sC,KAAM,qBAAuBA,EAAK,QAAQ,EAC1C3V,SAAUzvC,EAAImU,MAAM,EACpB8qC,QAAS,SAASuI,IAChBqE,EAASrE,EAAOl3C,KAAK,oBAAoB,GAClC3B,IAAI3F,EAAQoB,OAAS,EAAE,EAAEwqB,MAAM,EACnB,YAAnB,OAAOqqB,GAA0BA,EAAQuI,CAAM,CACjD,EACA7C,OAAQ,CAAA,EACRK,IAAK,SAAS//C,GACZ,IAAImF,EAAQyhD,EAAOl9C,IAAI,EACpBvE,EAAMhJ,QAAU4H,EAAQgjD,WAAW,KACpC7pD,EAAMgjB,KAAK,oCAAqCnc,EAAQgjD,WAAa,KAAM,2BAA4BH,EAAQ,CAAC1mC,KAAM,CAAC,CAAC,EAExH6/B,GAAOA,EAAI56C,EAAOnF,EAAO4mD,CAAM,CAEnC,CACF,EAAG7iD,CAAO,CAAC,CACb,EAGA7G,EAAM8pD,IAAM,SAASjjD,GAGnB,IAAIijD,GAFJjjD,EAAUA,GAAW,IAEHijD,KAAO,GACrBxzC,EAAO,aACPwmC,EAAUj2C,EAAQi2C,QAItB,OAFA,OAAOj2C,EAAQi2C,QAER98C,EAAMuS,KAAKvP,EAAEiE,OAAO,CACzBxH,KAAM,EACNwjD,KAAM,kBAAoBA,EAAK,KAAK,EACpCT,OAAQ,CAAA,EACRpkC,MAAO,WACL,IAAIvU,EAAMigD,EAAI7qD,OAAQ+R,EAAK,EAAGlE,EAAM,GACpC,GAAS,EAANjD,EAED,IADAiD,EAAM,gBAAiBwJ,EAAM,KAAMwzC,EAAI,GAAG1rC,MAAO,UAC3CpN,EAAKnH,EAAKmH,CAAE,GAChBlE,GAAO,SAAUg9C,EAAI94C,GAAIoN,MAAO,UAGpC,OAAOtR,CACT,EAAE,EACFqJ,QAAS,mCAAoC,WAC3C,IAAItM,EAAMigD,EAAI7qD,OAAQ+R,EAAK,EAAGlE,EAAM,GACpC,GAAS,EAANjD,EAED,IADAiD,EAAM,gCAAiCwJ,EAAM,MAAOwzC,EAAI,GAAG3zC,SAAW,cAAe,QAC/EnF,EAAKnH,EAAKmH,CAAE,GAChBlE,GAAO,kCAAmCg9C,EAAI94C,GAAImF,SAAW,eAAgB,QAGjF,OAAOrJ,CACT,EAAE,EAAG,QACLgwC,QAAS,SAASuI,GAChB,IAAIhwC,EAAMgwC,EAAOl3C,KAAK,oBAAoB,EAAEgD,SAAS,EACjD2N,EAAOumC,EAAOl3C,KAAK,sBAAsB,EAAEgD,SAAS,EACxDkE,EAAIzS,GAAG,YAAa,SAASM,GAC3BA,EAAE0H,gBAAkB1H,EAAE0H,gBAAgB,EAAI1H,EAAE2H,aAAe,CAAA,EAC3D,IAAI8E,EAAQ3M,EAAEzE,IAAI,EAAGuE,EAAQ6M,EAAM7M,MAAM,EACzC6M,EAAM2B,SAASgF,CAAI,EAAE6gB,SAAS,EAAE3lB,YAAY8E,CAAI,EAChDwI,EAAK8H,GAAG9jB,CAAK,EAAEiV,KAAK,EAAEof,SAAS,EAAEwZ,KAAK,EACZ,YAA1B,OAAO9pC,EAAQ2R,QAAyB3R,EAAQ2R,OAAO1V,CAAK,CAC9D,CAAC,EACkB,YAAnB,OAAOg6C,GAA0BA,EAAQuI,CAAM,CACjD,CACF,EAAGx+C,CAAO,CAAC,CACb,EAGA7G,EAAM+pD,OAAS,SAASljD,EAASmjD,EAAMljD,GACrC,IAAIsgD,EAAO,GAQX,IALAvgD,EAAU7D,EAAEiE,OAAO,CAAA,EAAM,CACvBgjD,QAAS,CAAA,EACT9sC,OAAQ,CAAA,CACV,EAAGtW,CAAO,GAEEkjD,OAAZ,CAGA,IAAI74C,EAAW,EAA4B,UAA1B,OAAOrK,EAAQkjD,QAAuBljD,EAAQkjD,kBAAkB/mD,GAC7E+mD,EAAS74C,EAAWrK,EAAQkjD,OAAS,GACrC3iD,EAAO2iD,EAAO3iD,MAAQ,GACtB+L,EAAQ42C,EAAO52C,OAAS,EACxB2pC,EAAUj2C,EAAQi2C,QAOtB,GALAsK,EAAK8C,SAAuB,GAAL,EAAN/2C,GACjBtM,EAAQL,IAAMK,EAAQL,KAAO,MAC7B,OAAOK,EAAQi2C,QAGX5rC,GAkCG,GAAoB,IAAhB9J,EAAKnI,OACd,OAAOe,EAAMR,IAAI,kCAAkC,CACrD,KApCa,CACX,IAAI+uB,EAASvrB,EAAE6D,EAAQkjD,MAAM,EAAGI,EAAW,WACzC/iD,EAAO,GACPmnB,EAAOpgB,KAAKtH,EAAQL,GAAG,EAAE3D,KAAK,SAASC,GACrC,IAAI6M,EAAQ3M,EAAEzE,IAAI,EAClBoR,EAAMzC,KAAK,cAAepK,CAAK,EAC/BsE,EAAKvD,KAAK,CACRumD,IAAKz6C,EAAMzC,KAAK,KAAK,EACrBm9C,IAAK16C,EAAMzC,KAAK,WAAW,EAC3BrO,IAAK8Q,EAAMzC,KAAK,SAAS,GAAKyC,EAAMzC,KAAK,WAAW,GAAKyC,EAAMzC,KAAK,KAAK,EACzEo9C,MAAO36C,EAAMzC,KAAK,KAAK,CACzB,CAAC,CACH,CAAC,CACH,EAIA,GAFAi9C,EAAS,EAEW,IAAhB/iD,EAAKnI,OAAc,OAgBvB,GAdA+qD,GAAQz7B,EAAO3rB,GAAG,QAASiE,EAAQL,IAAK,WACtC2jD,EAAS,EACT,IAAqBrnD,EAATE,EAAEzE,IAAI,EAAiB2O,KAAK,aAAa,EACrDlN,EAAM+pD,OAAO/mD,EAAEiE,OAAOJ,EAAS,CAC7BkjD,OAAQ,CACN52C,MAAOrQ,EACPsE,KAAMA,EACN0iD,IAAKjjD,EAAQijD,GACf,EACA3B,KAAMthD,EAAQshD,IAChB,CAAC,EAAG,CAAA,CAAI,CACV,CAAC,EAGG,CAAC6B,EAAM,MACb,CAKA5C,EAAKmD,QAAU,SAASzjD,GACtBsgD,EAAK8C,QAAQ,GACV9C,EAAK8C,SAAW,IACjB9C,EAAK8C,SAAW9iD,EAAKnI,QAEvBmoD,EAAKoD,OAAO1jD,CAAG,CACjB,EAGAsgD,EAAKqD,QAAU,SAAS3jD,EAAI4jD,GAC1BtD,EAAK8C,QAAQ,GACV9C,EAAK8C,SAAW9iD,EAAKnI,SACtBmoD,EAAK8C,SAAW,EACZQ,IAENtD,EAAKoD,OAAO1jD,CAAG,CACjB,EAGAsgD,EAAKuD,MAAQ,SAAStsD,GACpB,IACM6C,EADFkmD,EAAKzyC,MACHzT,EAAO7C,EAAMmX,QACjBnX,EAAMwmB,eAAe,EACT,KAAT3jB,EACDkmD,EAAKmD,QAAQ,CAAA,CAAI,EACA,KAATrpD,EACRkmD,EAAKqD,QAAQ,CAAA,CAAI,EACA,KAATvpD,GACRlB,EAAMwS,MAAM40C,EAAKtkD,KAAK,EAG5B,EAGAskD,EAAKoD,OAAS,SAAS1jD,GACrB,GAAGM,EAAAA,EAAKnI,QAAU,GAGlB,OAFA8qD,EAAO52C,MAAQi0C,EAAK8C,SAAW,EAC/BlqD,EAAMwS,MAAM40C,EAAKtkD,KAAK,EACf9C,EAAM+pD,OAAOljD,EAAS,CAAA,EAAMC,CAAG,CACxC,EAEAsgD,EAAKwD,SAAW,SAAUxzB,GACxB,MAAoB,UAAb,OAAOA,GAAkB,CAAC7sB,MAAM6sB,CAAC,CAC1C,EAEAgwB,EAAKzzB,MAAQ,GAEbyzB,EAAKyD,aAAe,SAASv8C,GAC3B,IAAIw8C,EAAa,GACbC,EAASz8C,EAAKy8C,OACdC,EAAS18C,EAAK08C,OACd7rB,EAAQ7wB,EAAK6wB,MAcjB,OAZIioB,EAAKwD,SAASG,CAAM,GAAgB,IAAXA,GAC3BD,EAAWjnD,KAAK,UAAYknD,EAAS,MAAM,EAGzC3D,EAAKwD,SAASI,CAAM,GAAgB,IAAXA,GAC3BF,EAAWjnD,KAAK,UAAYmnD,EAAS,GAAG,EAGtC5D,EAAKwD,SAASzrB,CAAK,GACrB2rB,EAAWjnD,KAAK,SAAWs7B,EAAQ,GAAG,EAGjC2rB,EAAW7rD,OAAS6rD,EAAW76C,KAAK,GAAG,EAAI,MACpD,EAGAm3C,EAAK/oD,MAAQ,SAASgnD,EAAQviD,EAAOR,GAEnC8kD,EAAKtoC,KAAK3Q,KAAK,0BAA0B,EAAEvL,GAAG,QAAS,SAASvE,GAC9DA,EAAMwmB,eAAe,EACrBuiC,EAAKmD,QAAQ,CAAA,CAAI,CACnB,CAAC,EAGDnD,EAAKtoC,KAAK3Q,KAAK,0BAA0B,EAAEvL,GAAG,QAAS,SAASvE,GAC9DA,EAAMwmB,eAAe,EACrBuiC,EAAKqD,QAAQ,CAAA,CAAI,CACnB,CAAC,EAEDznD,EAAEhF,QAAQ,EAAE4E,GAAG,QAASwkD,EAAKuD,KAAK,EAGlCtF,EAAOh6C,IAAI,OAAO,EAAEzI,GAAG,QAAQ,mBAAoB,WACjD,IAAI+M,EAAQ3M,EAAEzE,IAAI,EAElB,OADYoR,EAAMzC,KAAK,eAAe,GAEpC,IAAK,SACHk6C,EAAKzzB,MAAMo3B,SAAW3D,EAAKzzB,MAAMo3B,QAAU,GAAKp3C,OAAOhE,EAAMzC,KAAK,aAAa,CAAC,GAAK,IACrFk6C,EAAK6D,QAAQt5C,IAAI,CACfu5C,UAAW9D,EAAKyD,aAAazD,EAAKzzB,KAAK,CACzC,CAAC,EACD,MACF,IAAK,SACHyzB,EAAKzzB,MAAMq3B,OAA+B,CAAC,IAAvB5D,EAAKzzB,MAAMq3B,OAAgB,EAAI,CAAC,EACpD5D,EAAK6D,QAAQt5C,IAAI,CACfu5C,UAAW9D,EAAKyD,aAAazD,EAAKzzB,KAAK,CACzC,CAAC,EACD,MACF,IAAK,OACH,IAAIw3B,EAAQx3C,OAAOhE,EAAMzC,KAAK,aAAa,CAAC,EAC5Ck6C,EAAKzzB,MAAMwL,OAASioB,EAAKzzB,MAAMwL,OAAS,GAAKgsB,EAEzCA,EAAQ,GAAK/D,EAAKzzB,MAAMwL,MAAQ,EAAIgsB,IACtC/D,EAAKzzB,MAAMwL,MAAQ,EAAIgsB,GAEzB/D,EAAK6D,QAAQt5C,IAAI,CACfu5C,UAAW9D,EAAKyD,aAAazD,EAAKzzB,KAAK,CACzC,CAAC,EACD,MACF,IAAK,QACHyzB,EAAKzzB,MAAMq3B,OAAS,EACpB5D,EAAKzzB,MAAMwL,MAAQ,EACnBioB,EAAKzzB,MAAMo3B,OAAS,EACpB3D,EAAK6D,QAAQt5C,IAAI,CACfu5C,UAAW,MACb,CAAC,EACD,MACF,IAAK,QACHlrD,EAAMwS,MAAM1P,CAAK,CAErB,CACAR,EAAKs+C,OAAO,EACZt+C,EAAKgY,KAAKxX,CAAK,CACjB,CAAC,EAGDskD,EAAKtoC,KAAKlc,GAAG,4BAA6B,SAASM,GACjD,IAAIkoD,EAAQloD,EAAE4iC,cAAculB,YAAc,CAACnoD,EAAE4iC,cAAcwlB,OACvDC,EAAWnE,EAAKtoC,KAAK3Q,KAAK,wBAAwB,GAC1C,EAARi9C,EACFG,EAAS3kC,GAAG,CAAC,EAEb2kC,EAAS3kC,GAAG,CAAC,GAFE9O,QAAQ,OAAO,EAIhC5U,EAAE2hB,eAAe,CACnB,CAAC,CAEH,EAmBAuiC,EAAKoE,MAAQxrD,EAAMyV,KAAK,EAAG,CACzBiD,MAAO,EAAA,UAAW7R,IAAkB,GACpC49C,UAAW,CAAA,CACb,CAAC,EAEDgH,IArBmBppD,EAqBT+E,EAAK+L,GAAOtU,IArBEoD,EAqBG,SAASuE,GAClCxG,EAAMwS,MAAM40C,EAAKoE,KAAK,EAEtB,IAWQE,EAXJtB,EAAMhjD,EAAK+L,GAAOi3C,KAAO,GAG1BtjD,IAAKD,EAAQksC,KAAO,CAAC,GAGxBqU,EAAKtkD,MAAQ9C,EAAMuS,KAAKvP,EAAEiE,OAAO,CAC/BxH,KAAM,EACNiG,GAAI,qBACJ27B,MACMsqB,EAAU,CAACnlD,EAAIwL,MAAOxL,EAAIyL,QAC1By5C,EAAU,CAAC1oD,EAAE+I,CAAM,EAAEiG,MAAM,EAAI,IAAKhP,EAAE+I,CAAM,EAAEkG,OAAO,EAAI,KAG1D,CAACpL,EAAQshD,OAAoBuD,EAAQ,GAAnBC,EAAQ,IAA0BD,EAAQ,GAAnBC,EAAQ,OAC9CC,EAAK,CAACD,EAAQ,GAAGD,EAAQ,GAAGC,EAAQ,GAAGD,EAAQ,KACrC,GAAXE,EAAG,IACJD,EAAQ,GAAKA,EAAQ,GAAGC,EAAG,GAC3BD,EAAQ,GAAKA,EAAQ,GAAGC,EAAG,IACnBA,EAAG,GAAKA,EAAG,KACnBD,EAAQ,GAAKA,EAAQ,GAAGC,EAAG,GAC3BD,EAAQ,GAAKA,EAAQ,GAAGC,EAAG,KAIxB,CAACD,EAAQ,GAAG,KAAMA,EAAQ,GAAG,OAEtCvtC,MAAO,CAAA,EACP1F,MAAO,GACPwvC,WAAY,CAAA,EACZ/E,SAAU,CAAA,EACVkB,KAAM,+BACNG,SAAU,EACVC,UAAW,CAAA,EACXoD,QAAS,CAAA,EACT9U,KAAM,EACNuR,UAAW,CAAA,EACXrB,KAAM,qBAAuBA,EAAK,QAAQ,EAC1C9sC,QAAS,kDACS/O,EAAK+L,GAAOtU,IAAK,UAAWurD,EAAK,iBAAkBhjD,EAAK+L,GAAOk3C,KAAO,IAAK,MAErFrgD,EAAM,CAAC,4CAGO,EAAd5C,EAAKnI,QACP+K,EAAInG,KAAK,CAAC,wCACR,2EACA,4EACF,UAAUoM,KAAK,EAAE,CAAC,EAIhBpJ,EAAQojD,SACVjgD,EAAInG,KAAK,CACP,qEACE,0HACA,wGACA,4HACA,gIACA,0GACA,sGACF,UACAoM,KAAK,EAAE,CAAC,EAIRpJ,EAAQsW,QACVnT,EAAInG,KAAK,CAAC,qEACR,OAAQumD,EAAK,QACb,OAAQhD,EAAK8C,SAAU,MAAO9iD,EAAKnI,OAAQ,QAC3C,YAAamI,EAAK+L,GAAOtU,IAAK,iDAChC,UAAUoR,KAAK,EAAE,CAAC,EAGpBjG,EAAInG,KAAK,QAAQ,EACVmG,EAAIiG,KAAK,EAAE,GAErB,SACD6sC,QAAS,SAASuI,EAAQviD,EAAOR,GAC/B8kD,EAAKtoC,KAAOumC,EAAOl3C,KAAK,0BAA0B,EAClDi5C,EAAKjqC,OAASkoC,EAAOl3C,KAAK,4BAA4B,EACtDi5C,EAAK6D,QAAU7D,EAAKtoC,KAAK3N,SAAS,KAAK,EACvCi2C,EAAK/oD,MAAMgnD,EAAQviD,EAAOR,CAAI,EAC9BuE,EAAQijD,KAAOjjD,EAAQijD,IAAI1iD,EAAK+L,GAAQkyC,CAAM,EAC3B,YAAnB,OAAOvI,GAA0BA,EAAQuI,CAAM,CACjD,EAAG1wC,IAAK,WACNyyC,EAAKzyC,IAAM,CAAA,EACX3R,EAAEhF,QAAQ,EAAEqN,IAAI,QAAS+7C,EAAKuD,KAAK,CACrC,CACF,EAAG9jD,CAAO,CAAC,CACb,EAlHkCtH,EAkH/B,WACDS,EAAMwS,MAAM40C,EAAKoE,KAAK,EACtBxrD,EAAMR,IAAI,uJAAwJ,CAChKqZ,KAAM,IACNxD,IAAK,CAAC,2BAA4B,4BAClCwtC,IAAK,WACW,EAAdz7C,EAAKnI,QAAcmoD,EAAKqD,QAAQ,CAAA,EAAK,CAAA,CAAI,CAC3C,CACF,CAAC,CACH,EA1HMjkD,EAAM,IAAIC,OACdD,EAAI3H,IAAMwD,EACPmE,EAAIE,UACEzE,EAASuE,CAAG,GAErBA,EAAIG,OAAS,WACXH,EAAIG,OAAS,KACb1E,EAASuE,CAAG,CACd,EACAA,EAAII,QAAU,SAAS1D,GACrBsD,EAAII,QAAU,KACdrH,EAAM2D,CAAC,CACT,EAjNwB,CAgU5B,EAGA0S,EAAM+O,IAAM,SAASknC,GAEnBhuD,GADAmF,EAAI6oD,GACI9/C,CAAM,EAKd,IAAIxD,EAAQnF,UAAUoF,UAAUC,YAAY,EACxCqjD,EAAW,+BAA+BxoD,KAAKiF,CAAK,EACpDwjD,EAAO/oD,EAAE+I,CAAM,EAChB+/C,GACD9oD,EAAEH,KAAK,CAAC++C,OAAQ,SAAUC,MAAO,OAAO,EAAG,SAASmK,EAAYhK,GAC9D,IAAI7L,EAAW,QAAU6V,EACzBnuD,EAAImkD,GAAY,WACd,OAAO7L,KAAYpqC,EACfA,EAAOoqC,GACP4V,EAAK/J,GAAU,CACrB,CACF,CAAC,EAEHkB,EAAK/wC,KAAOnP,EAAE,MAAM,EACpBhD,EAAMuS,KAAO,SAAS05C,GAEpB,OADQ,IAAIhgD,EAAMggD,CAAO,EAChBnpD,KACX,CACF,EAGAiJ,EAAO/J,OAASA,MAAMP,QACpBzB,EAAM4V,MAAM,EACZ5T,MAAMP,OAAO,SAAU,SAASM,GAC9B/B,EAAMqH,KAAOrF,MAAMR,MAAMpC,IACzBwW,EAAM+O,IAAI3iB,MAAMgB,CAAC,EAIjBjB,EAAQ,QADRgK,EAAO/L,MAAQA,CACO,CACxB,CAAC,GAEkB,YAAlB,OAAOyB,QAAyBA,OAAOwjB,IAAOxjB,OAAO,CAAC,UAAW,WAEhE,OADAmU,EAAM+O,IAAI5Y,EAAOrJ,MAAM,EAChB1C,CACT,CAAC,GACCA,EAAM4V,MAAM,EACZA,EAAM+O,IAAI5Y,EAAOrJ,MAAM,EAI3B,EAAEqJ,MAAM,ECjvDR/J,MAAMP,OAAO,SAAU,SAASM,GAC9B,aAEA,IAAIiB,EAAIhB,MAAMgB,EACVsG,EAAOtH,MAAMsH,KAAK,EAGlBrI,EAAO,CAETirD,OAAQ,SAASrlD,GACf,IA2CIslD,EAuDElyB,EACAmyB,EAYFtZ,EA/GAuZ,EAAO,eACPC,EAAOtpD,EAAEhF,QAAQ,EAYjBuuD,GATJ1lD,EAAU7D,EAAEiE,OAAO,CAAA,EAAM,CACvB0F,OAAQ,OACR6/C,KAAM,GACNC,UAAW,CAAA,EACXh+C,OAAQ,IACRuiC,SAAU,GACZ,EAAGnqC,CAAO,EAGI7D,EAAE6D,EAAQ8F,MAAM,GAG1B+/C,EAAU7lD,EAAQqb,OAClBlf,EAAE6D,EAAQqb,MAAM,EAClBlf,EAAqB,SAAnB6D,EAAQ8F,OAAoB2/C,EAAOC,CAAO,EAwB1CrgD,GArBDrF,EAAiB,aAEfA,EAAQ8lD,MACT9lD,EAAQ2lD,KAAK3oD,KAAK,CAChBpE,KAAM,OACN2jD,KAAM,iBACR,CAAC,EAEAv8C,EAAQ+lD,MACT/lD,EAAQ2lD,KAAK3oD,KAAK,CAChBpE,KAAM,OACN2jD,KAAM,iBACR,CAAC,EAGHv8C,EAAQ2lD,KAAK3oD,KAAK,CAChBpE,KAAM,MACN2jD,KAAM,gBACR,CAAC,GAGQpgD,EAAE,MAAM,EAAEsO,SAAS+6C,CAAI,GAIlCrqD,MAAMa,KAAKgE,EAAQ2lD,KAAM,SAASttD,EAAGuD,GACnC,IAAIoqD,EAAU7pD,EAAE,yBAAyB,EAGzC6pD,EAAQv7C,SAAS7O,EAAK2gD,IAAI,EAAEl2C,KAAK,CAC/B4/C,WAAYrqD,EAAKhD,KACjB0F,MAAS1C,EAAK0C,QAAU0B,EAAQkmD,QAAU,qBAAsBlmD,EAAQkmD,QAAU,GACpF,CAAC,EAAE56C,KAAK1P,EAAK0T,OAAO,EAGpB02C,EAAQjqD,GAAG,QAAS,WAClB,IAAInD,EAAOuD,EAAEzE,IAAI,EAAE2O,KAAK,UAAU,EACtB,QAATzN,IAEoB,SAAnBoH,EAAQ8F,OACJ3J,EAAE,WAAW,EACf0pD,GACF5Y,QAAQ,CACRhxB,UAAY,CACd,EAAGjc,EAAQmqC,QAAQ,EAEI,YAAzB,OAAOnqC,EAAQgY,OAAwBhY,EAAQgY,MAAMlV,KAAKpL,KAAMkB,CAAI,CACtE,CAAC,EAG6B,WAA3BuC,MAAMvC,KAAKoH,EAAQjE,EAAE,GACtBZ,MAAMa,KAAKgE,EAAQjE,GAAI,SAASsI,EAAWjJ,GACzC4qD,EAAQjqD,GAAGsI,EAAW,WACpB,IAAIzL,EAAOuD,EAAEzE,IAAI,EAAE2O,KAAK,UAAU,EACd,YAApB,OAAOjL,GAA2BA,EAAS0H,KAAKpL,KAAMkB,CAAI,CAC5D,CAAC,CACH,CAAC,EAIc,QAAdgD,EAAKhD,OACNotD,EAAQv7C,SAAS,kBAAkB,EACnC66C,EAAaU,GAGf3gD,EAAKkC,OAAOy+C,CAAO,CACrB,CAAC,EAGDN,EAAQp+C,KAAK,IAAKk+C,CAAI,EAAEnkD,OAAO,EAGR,UAAvB,OAAOrB,EAAQ8K,KAAoBzF,EAAKyF,IAAI9K,EAAQ8K,GAAG,EACvD46C,EAAQn+C,OAAOlC,CAAI,EAGhBigD,IAEGC,EAAY,SAAUA,IAOxB,OANUM,EAAQ5pC,UAAU,GAClBjc,EAAQ4H,OAChBwrB,IAASkyB,EAAWp0C,KAAK,EAAGkiB,EAAO,GAEnCA,IAASkyB,EAAWxb,KAAK,EAAG1W,EAAO,GAE9BmyB,CACR,EAAE,GAKLM,EAAQ9pD,GAAG,SAAU,WACfwpD,IACJxgD,aAAaknC,CAAK,EAClBA,EAAQlvC,WAAW,WACjBwoD,EAAU,CACZ,EAAG,GAAG,EACR,CAAC,CACH,EAGAY,UAAW,SAASnmD,GAIlBA,EAAU7D,EAAEiE,OAAO,CAAA,EAAM,CACvB2S,KAAM,IAAInV,KACV6U,IAAK,IAAI7U,IACX,EAAGoC,CAAO,EANV,IASI6E,EAAOC,UAQPuK,GAPa,EAAdxK,EAAKzM,SACN4H,EAAQ+S,KAAO,IAAInV,KAAKiH,EAAK,EAAE,EAC/B7E,EAAQyS,IAAM,IAAI7U,KAAKiH,EAAK,EAAE,EAC9B7E,EAAQomD,MAAQvhD,EAAK,IAIZ,CACT7E,QAASA,EACTwS,MAAO,WACLzN,aAAasK,EAAK48B,KAAK,CACzB,EACA18B,OAAQ,SAAS9H,GACf/P,KAAK8a,MAAM,EACXrW,EAAEiE,OAAO,CAAA,EAAM1I,KAAKsI,QAAS,CAC3ByS,IAAK,IAAI7U,IACX,EAAG6J,CAAI,EACPuF,EAAM,CACR,CACF,GAKIA,GAHqB,YAAzB,OAAOhN,EAAQ+O,OAAwB/O,EAAQ+O,MAAM,EAGzC,SAAUjT,IACpB,IAAIiX,EAAO,IAAInV,KAAKoC,EAAQ+S,IAAI,EAC5BN,EAAM,IAAI7U,KAAKoC,EAAQyS,GAAG,EAC1B4zC,EACY,GADSr0C,EAEvBe,EAAKlV,QAAQ,EAAI4U,EAAI5U,QAAQ,GADXmU,EAAO,EAEvB/P,EAAS,CACXqkD,EAAGpgD,KAAK2H,MAAMw4C,EAAU,KAAe,EACvCE,EAAGrgD,KAAK2H,MAAMw4C,EAAU,IAAY,EAAI,GACxCvgC,EAAG5f,KAAK2H,MAAMw4C,EAAU,GAAS,EAAI,GACrCnT,EAAGhtC,KAAK2H,MAAMw4C,EAAU,GAAI,EAAI,EAClC,EAoBA,OAZiB,EAAdxhD,EAAKzM,SAAY6J,EAAS,CAACA,EAAOqkD,EAAErkD,EAAOskD,EAAEtkD,EAAO6jB,EAAE7jB,EAAOixC,IAGhE7jC,EAAK48B,MAAQlvC,WAVF,WACT0V,EAAI+zC,QAAQ/zC,EAAI5U,QAAQ,EAAI,GAAI,EAChCmC,EAAQyS,IAAMA,EACdzF,EAAM,CACR,EAM8B,GAAI,EACT,YAAzB,OAAOhN,EAAQomD,OAAwBpmD,EAAQomD,MAAMnkD,EAAQoN,CAAI,EAG9Dg3C,GAAa,IACdthD,aAAasK,EAAK48B,KAAK,EACC,YAAxB,OAAOjsC,EAAQ8J,OAAuB9J,EAAQ8J,KAAK7H,EAAQoN,CAAI,EAG1DvT,CACR,EAAE,GAEH,OAAOuT,CACT,EAGAo3C,QAAS,SAASz0C,EAAM00C,GACtB,IAAIjrD,EAAO/D,KACPyL,EAAM,CAAC,GAAI,IACXwjD,GAAQ,IAAI/oD,MAAOC,QAAQ,EAAI,IAAID,KAAKoU,CAAI,EAAEnU,QAAQ,EAG1D,OAAW,QAAR8oD,GACDA,EAAS,IAAI/oD,KAAKoU,CAAI,EACtB7O,EAAI,GAAG,GAAK1H,EAAKsK,MAAM4gD,EAAM3xC,YAAY,EAAG,CAAC,EAC7C7R,EAAI,GAAG,GAAK1H,EAAKsK,MAAM4gD,EAAM1xC,SAAS,EAAI,CAAC,EAC3C9R,EAAI,GAAG,GAAK1H,EAAKsK,MAAM4gD,EAAMzxC,QAAQ,CAAC,EAGlCwxC,IACFvjD,EAAI,GAAG,GAAK1H,EAAKsK,MAAM4gD,EAAMpxC,SAAS,CAAC,EACvCpS,EAAI,GAAG,GAAK1H,EAAKsK,MAAM4gD,EAAMnxC,WAAW,CAAC,EACzCrS,EAAI,GAAG,GAAK1H,EAAKsK,MAAM4gD,EAAMlxC,WAAW,CAAC,GAEpCtS,EAAI,GAAGiG,KAAK,GAAG,EAAI,IAAMjG,EAAI,GAAGiG,KAAK,GAAG,GAIrC,OAATu9C,GACQA,EAAM,IAAK,GAAG,GAAG,GAAI,GAAK,gBAClB,MAATA,GACCA,EAAM,IAAK,GAAG,GAAI,GAAK,sBACf,MAATA,GACCA,EAAM,IAAK,GAAI,GAAK,sBACrBA,EAAQ,EACT,eAEA,cAEX,EAGA5gD,MAAO,SAASC,EAAK5N,GACnB,IAAI6N,EAAM,GAEV7N,EAASA,GAAU,EACnB,IAAI,IAAIC,GAFR2N,EAAMpD,OAAOoD,CAAG,GAEA5N,OAAQC,EAAID,EAAQC,CAAC,GACnC4N,GAAO,IAET,OAAOD,EAAME,KAAKC,IAAI,GAAI/N,CAAM,EAAI6N,GAAW,EAAJD,GAASA,CACtD,EAGA4gD,aAAc,SAAS50C,EAAMrB,EAAQ3Q,GAEnC,IAKIvE,EACAsX,EAOA8zC,EACAx0C,EACAy0C,EACA3xC,EACAC,EACAC,EACA0xC,EAkBAC,EAEAvlC,EAvCJ,OAAY,OAATzP,GAA0B,KAATA,EAAoB,IAKpCvW,EAAO/D,MACPqb,EAAO,IAAInV,KAAK,WAClB,GAAIoU,EACJ,MAAOtO,CAAAA,MAAMsO,CAAI,GAA4B,UAAhB,OAAOA,EAAoB5S,SAAS4S,CAAI,EAAIA,CAC3E,EAAE,GAAK,IAAIpU,IAAM,GAERsX,QAAQ,GAEb2xC,EAAQ9zC,EAAKiC,YAAY,EACzB3C,EAAQU,EAAKkC,SAAS,EACtB6xC,EAAO/zC,EAAKmC,QAAQ,EACpBC,EAAQpC,EAAKwC,SAAS,EACtBH,EAAUrC,EAAKyC,WAAW,EAC1BH,EAAUtC,EAAK0C,WAAW,EAC1BsxC,EAAeh0C,EAAKk0C,gBAAgB,EAkBpCD,EAAYhnD,GAAWA,EAAQknD,gBAhBb,SAAS/xC,EAAOC,GAC9B+xC,EAAa,IAARhyC,EAAcC,EACvB,OAAI+xC,EAAK,IACA,eACEA,EAAK,IACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eAEF,cACX,EAII1lC,EAAU,CACZ2lC,GAAI,WAAW,OAAOxkD,OAAOikD,CAAK,EAAE5pD,MAAM,CAAC,CAAC,CAAE,EAC9CoqD,KAAM,WAAW,OAAO5rD,EAAKsK,MAAM8gD,EAAO,CAAC,CAAE,EAC7ChuC,EAAG,WAAW,OAAOjW,OAAOyP,EAAQ,CAAC,CAAE,EACvCi1C,GAAI,WAAW,OAAO7rD,EAAKsK,MAAMsM,EAAQ,CAAC,CAAE,EAC5Ci0C,EAAG,WAAW,OAAO1jD,OAAOkkD,CAAI,CAAE,EAClCS,GAAI,WAAW,OAAO9rD,EAAKsK,MAAM+gD,CAAI,CAAE,EACvCU,EAAG,WAAW,OAAO5kD,OAAOuS,CAAK,CAAE,EACnCsyC,GAAI,WAAW,OAAOhsD,EAAKsK,MAAMoP,CAAK,CAAE,EACxCoxC,EAAG,WAAW,OAAO3jD,OAAOuS,EAAQ,IAAM,EAAE,CAAE,EAC9CuyC,GAAI,WAAW,OAAOjsD,EAAKsK,MAAMoP,EAAQ,IAAM,EAAE,CAAE,EACnDwyC,EAAG,WAAW,OAAOX,EAAS7xC,EAAOC,CAAO,CAAE,EAC9C0Q,EAAG,WAAW,OAAOljB,OAAOwS,CAAO,CAAE,EACrCwyC,GAAI,WAAW,OAAOnsD,EAAKsK,MAAMqP,CAAO,CAAE,EAC1C89B,EAAG,WAAW,OAAOtwC,OAAOyS,CAAO,CAAE,EACrCwyC,GAAI,WAAW,OAAOpsD,EAAKsK,MAAMsP,CAAO,CAAE,EAC1CyyC,IAAK,WAAW,OAAOrsD,EAAKsK,MAAMghD,EAAc,CAAC,CAAE,CACrD,GAEAp2C,EAASA,GAAU,uBAELpT,QAxDK,wEAwDiB,SAASH,EAAOksC,GAClD,OAAOA,GAAO7nB,EAAQrkB,IAAUqkB,EAAQrkB,GAAO,GAAMA,CACvD,CAAC,IAnD0BqF,EAAK/J,MAAM,0DAA0D,EAAG,IAoDrG,EAGAmT,OAAQ,SAASP,GAEf,OAAGA,IAASN,WAAsB,OAATM,EAAsB,GADrC,6BAIF7O,KADR6O,GAAQ,EACS,EAEVA,EAAK/N,QAAQ,wBAAyB,OAAO,EACnDA,QAAQ,KAAM,MAAM,EAAEA,QAAQ,KAAM,MAAM,EAC1CA,QAAQ,KAAM,OAAO,EAAEA,QAAQ,KAAM,QAAQ,EAJnB+N,CAK7B,EAGAy8C,SAAU,SAASz8C,GAIjB,OAHGA,IAASN,WAAsB,OAATM,IAAeA,EAAO,KAC/CA,GAAQ,IAEI/N,QAAQ,UAAW,GAAG,EACjCA,QAAQ,SAAU,GAAG,EAAEA,QAAQ,SAAU,GAAG,EAC5CA,QAAQ,UAAW,GAAI,EAAEA,QAAQ,WAAY,GAAG,CACnD,EAGAyqD,QAAS,SAAShoD,GAChB,IAEAhJ,GADAgJ,EAAUA,GAAW,IACPkF,QAAUA,OAAOwG,KAAM1L,EAAQxE,KAAO,GAAKwE,EAAQ8F,OAAQ9F,EAAQioD,KAAK,EACnFjoD,EAAQxE,MACXxE,EAAIG,SAASuU,KAAK,YAAa,SAAS,EACxC1U,EAAIG,SAASitC,MAAMpkC,EAAQsP,SAAW,EAAE,EACxCtY,EAAIG,SAASwU,MAAM,EACrB,EAGAu8C,cAAe,SAASloD,GAOtB,IAEImoD,EAGAC,EACAC,EACAC,EACA/M,EACAgN,EACAC,EACA7nD,GAjBJX,EAAU7D,EAAEiE,OAAO,CACjBwH,OAAQ,IACRuiC,SAAU,IACVvxC,KAAM,GACR,EAAGoH,CAAO,GAEEmoD,WAAW,IAAOnoD,EAAQyoD,SAAS,KAE3CN,EAAanoD,EAAQmoD,WACrBM,EAAWzoD,EAAQyoD,SAGnBJ,GAFAK,EAA4B,MAAjB1oD,EAAQpH,MAEM,MAAQ,OACjC0vD,EAAcH,EAFdC,EAAcM,EAAW,YAAc,cAED,EACtCnN,EAAO4M,EAAWO,EAAW,SAAW,SAAS,EACjDH,EAAeJ,EAAWpO,OAAO,EAAEsO,GAEnC1nD,EAAM,IADN6nD,EAAaC,EAAS1O,OAAO,EAAEsO,GAAeE,GAIlChN,EAAOv7C,EAAQ4H,QAAU4gD,EAAaxoD,EAAQ4H,UAC5DjH,EAAIynD,GAAeI,EAAajN,EAAK,EAAI+M,EACzCH,EAAWlb,QAAQtsC,EAAKX,EAAQmqC,QAAQ,EAE5C,EAWApuC,GAAI,SAASsK,EAAMnC,EAAQlE,GAEL,UAAhB,OAAOqG,IACTrG,EAAUkE,GAAU,GACpBA,EAASmC,EACTA,EAAOrG,EAAQqG,MAAQ,UAWzB,IAAIhB,GAPJrF,EAAU7D,EAAEiE,OAAO,CACjBiF,KAAM,OACN4L,QAAS,OACX,EAAsB,UAAnB,OAAOjR,EAAuBA,EAAU,CACzCiR,QAASjR,CACX,CAAC,GAEkBqF,KAAOlJ,EAAE6D,EAAQqF,IAAI,EACpCsjD,EAAe,IAAKtiD,EAAM,IAC1BuiD,EAAW,mBAEf,GAAKvjD,EAAK,GAoBV,OAjBAnB,EAAS9J,EAAK2B,GAAGsK,GAAQlK,EAAEiE,OAAO,CAAA,EAAMhG,EAAK2B,GAAGsK,GAAOnC,CAAM,GAAK,GAGlE9J,EAAK2B,GAAG6sD,GAAYxuD,EAAK2B,GAAG6sD,IAAa,GACzCvjD,EAAKb,IAAIxE,EAAQiR,QAAS03C,EAAcvuD,EAAK2B,GAAG6sD,GAAUviD,EAAK,EAG/DhB,EAAKtJ,GACHiE,EAAQiR,QACR03C,EACAvuD,EAAK2B,GAAG6sD,GAAUviD,GAAQ,WACxB,IAAIyC,EAAQ3M,EAAEzE,IAAI,EACduI,EAAM6I,EAAMzC,KAAKA,CAAI,EACF,YAAvB,OAAOnC,EAAOjE,IAAuBiE,EAAOjE,GAAK6C,KAAKpL,KAAMoR,CAAK,CACnE,CACF,EAEO5E,CACT,CACF,EAGA9J,EAAK5C,MAAQ4C,EAAK2B,GAGlBb,EAAQ,OAAQd,CAAI,CACtB,CAAC,ECtbDe,MAAMP,OAAO,CAAC,SAAU,SAAU,MAAO,QAAS,SAASM,GACzD,aAEA,IAqdM2tD,EACAzI,EA8CA0I,EApgBF3sD,EAAIhB,MAAMgB,EACV7C,EAAS6B,MAAM7B,OACfc,EAAOe,MAAMf,KACbqI,EAAOtH,MAAMsH,KAAK,EAElBsmD,EADS5tD,MAAMsG,OAAO,EACKe,OAAS,aAAe,YAGnDgN,EAAW,WACXw5C,EAAY,SAAUx5C,EAAU,SAGhC/V,EAAW,CACbrC,OAAQ,CACN6xD,WAAY,CACVpqD,GAAI,KACJ0Y,MAAO,QACPjN,SAAU,OACZ,CACF,EACArO,MAAOd,MAAMqU,GAAarU,MAAMqU,GAAUvT,MAAQ,IAAS,EAG3DkT,IAAK,SAASnP,GACZ,IAAIvE,EAAO/D,KAEX,OADA+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EACxCvE,CACT,EAGAM,GAAI,SAASmI,EAAQ9I,GACnB,OAAOD,MAAM8I,QAAQnB,KAAKpL,KAAM8X,EAAUtL,EAAQ9I,CAAQ,CAC5D,CACF,EAGIgU,EAAa,WACf,IAAI3T,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACfyH,EAAKmB,EAAQnB,GAIjB,OAFAuQ,EAAW3T,KAAKoD,GAAMpD,EAEf,CACLrE,OAAQ4I,EAERuP,OAAQ,SAASvP,GACfvE,EAAK8T,OAAOzM,KAAKrH,EAAMuE,CAAO,CAChC,EACAkpD,WAAY,SAASlpD,GACnBvG,EAASyvD,WAAWrqD,EAAImB,CAAO,CACjC,EACA2L,MAAO,WACLlQ,EAAK4F,OAAO,CACd,CACF,CACF,EAGI8nD,EAAW,iBAIXC,EAAc,qBACdC,EAAgB,uBAChBC,EAAiB,wBACjBC,EAAiB,wBACjBC,EAAkB,yBAElBC,EAAmB,0BACnBC,EAAoB,2BACpBC,EAAiB,wBACjBC,EAAmB,6BACnBC,EAAiB,uBAEjBC,EAAkB,IAAKP,EAAiB,KAAMD,EAG9ClkD,EAAQ,SAASpF,GACnB,IAAIvE,EAAO/D,KACX+D,EAAKQ,MAAQ,EAAExC,EAASwC,MACxBR,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQqC,EAASrC,OAAQ4I,CAAO,EAChEvE,EAAK+U,KAAK,CACZ,EAGApL,EAAM1K,UAAUtD,OAAS,CACvB6Z,QAAS,QACT3B,QAAS,GACT5E,UAAW,GACXpM,MAAO,GACP4S,KAAM,CAAA,EACN64C,cAAe,CAAA,EACfC,aAAc,CAAA,EACdzpD,KAAM,GACN4tC,MAAO,IACPt8B,MAAO,EACPo4C,UAAW,CAAA,CACb,EAGA7kD,EAAM1K,UAAU6U,OAAS,SAASvP,EAASpH,GACzC,IAAI6C,EAAO/D,KACX+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EAC/CvE,EAAK+U,KAAK,CAAA,EAAM5X,CAAI,CACtB,EAGAwM,EAAM1K,UAAU8V,KAAO,SAAS05C,EAAUtxD,GACxC,IAmBM0X,EAnBF7U,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAGfiO,EAAOlJ,EAAE6D,EAAQqF,IAAI,EACzB,OAAiB,EAAdA,EAAKjN,QACN+C,MAAMa,KAAKqJ,EAAM,WACf5L,EAAS8S,OAAOpQ,EAAEiE,OAAO,GAAIJ,EAAS,CACpCqF,KAAM3N,IACR,CAAC,CAAC,CACJ,CAAC,EACM+D,IAITU,EAAEiE,OAAOJ,EAAS9G,IAAI8G,QAAQqF,EAAK,EAAE,CAAC,EAGnC,CAAC6kD,GAAY7kD,EAAK,IAAMA,EAAK9E,KAAKyoD,CAAS,GACxC14C,EAAUlB,EAAWmB,QAAQlL,EAAK9E,KAAKyoD,CAAS,CAAC,GAG9C14C,EAAQf,OAAOvP,EAASpH,CAAI,EAFtB,KAAA,GAKfoH,EAAQqF,KAAOlJ,EAAE6D,EAAQqF,IAAI,EAG7BrF,EAAQnB,GAAK,OAAQmB,EAAUA,EAAQnB,GACrCwG,EAAKgB,KAAK,IAAI,GAAK5K,EAAKQ,MAI1B+D,EAAQipD,WAAa9sD,EAAEiE,OAAO,GAAI3G,EAASrC,OAAO6xD,WAAYjpD,EAAQipD,UAAU,GAE7EjpD,EAAQkR,MAAkB,eAATtY,GAAyB6C,EAAK0uD,UAAYhuD,EAAE,MAAM,EAAEmL,KAAK7L,EAAK0uD,SAAS3qC,IAAI,CAAC,CAAC,EAAEpnB,SAASqD,EAAK8Q,OAAO29C,EAAUtxD,CAAI,EAVtIoH,KAWAvE,EAAKyI,OAAO,GACd,EAGAkB,EAAM1K,UAAU6R,OAAS,SAAS29C,EAAUtxD,GAC1C,IAAI6C,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACf6xD,EAAajpD,EAAQipD,WACrBmB,EAAWjuD,EAAE,MAAM,EAGnBkuD,EAAiB,WACnB,IAAIC,EAASnuD,EAAE,kDAAkD,EAMjE,OALyB,EAAtB6D,EAAQO,KAAKnI,OACdmyD,EAAaD,EAAQtqD,EAAQO,IAAI,EAEjC+pD,EAAOh/C,KAAK,+CAA+C,EAEtDg/C,CACT,EAGIC,EAAe,SAAS/8C,EAAOjN,GA4FjC,OAzFApF,MAAMa,KAAKuE,EAAM,SAAStE,EAAOL,GAE/B,IA2EM0uD,EA3EFE,EAAU5uD,EAAKqtD,EAAW3+C,WAAgD,EAAnC1O,EAAKqtD,EAAW3+C,UAAUlS,OACjE4xD,GAAgB,iBAAkBpuD,EAAQA,EAAoBoE,GAAfgqD,aAC/CzyC,GAAiBA,EAQnBnd,EAAKyR,OAAOjQ,EAAKqtD,EAAW1xC,MAAM,EAP9BkzC,EAAU7uD,EAAK6uD,SAAWzqD,EAAQyqD,QAEpClzC,EADCkzC,EAC0B,YAAnB,OAAOA,EACXA,EAAQ7uD,CAAI,EACdtC,EAAOmxD,CAAO,EAAEl+C,OAAO3Q,CAAI,EAExB2b,GAIL3e,GACC4xD,IACD5uD,EAAKhD,KAAOgD,EAAKhD,MAAQ,UAExBgD,EAAKhD,KACC,CACL8xD,MAAO,QACNhjC,OAAQ,SACRijC,IAAK,GACP,EAAE/uD,EAAKhD,OAAS,SAEZ,KAGG,MAATA,GAAkBgD,EAAKqtD,EAAW1xC,QAAW3b,EAAKqtD,EAAWpqD,KAAQ2rD,MAGpEI,EAASzuD,EAAE,CAAC,OACVuO,EAAY,CACdggD,MAAO,yBACL1qD,EAAQ+pD,cACNC,EAAe,wBAA0B,sBACvC,IAELtiC,OAAQ8hC,EACRmB,IAAK,yBACR,EACGH,GAAW5xD,EACL,WAAY8R,EAAU9R,GAAO,IAE/BgD,EAAKqwB,SAAW,0BAAgC,IACpD,KAKG4+B,EAAY,SAAUjvD,EACxB,YAAaA,EAAK+C,KAAM,cAAe/C,EAAKkK,QAAU,SAAU,KAAMyR,EAAO,OAC3EA,EAGDizC,EACM,eAAgBlB,EAAgB,KAAMuB,GAC/B,WAATjyD,EACM,8CACU,UAATA,GAAoBoH,EAAQ+pD,cAC7B,oCAAqCC,EAAe,KAAO,QAAS,SAEpE,IAEN,SAGA,eAAgBV,EAAgB,KAAMuB,EAAU,UAE1D,SAASzhD,KAAK,EAAE,CAAC,GAEX7I,KAAK,OAAQ3E,CAAI,EAGrB4uD,IACGM,EAAY3uD,EAAE,uDAAuD,EACrEmuD,EAASnuD,EAAE,WAAW,EAEd,WAATvD,GACDkyD,EAAUvjD,OAAOgjD,EAAaD,EAAQ1uD,EAAKqtD,EAAW3+C,SAAS,CAAC,EAChEsgD,EAAOrjD,OAAOujD,CAAS,GAEvBF,EAAOrjD,OAAOgjD,EAAaD,EAAQ1uD,EAAKqtD,EAAW3+C,SAAS,CAAC,GAIjEkD,EAAMjG,OAAOqjD,CAAM,EACrB,CAAC,EACMp9C,CACT,EAGIu9C,EAAW,CAAC,kGAAoG/qD,EAAQnB,GAAK,KAChI,UAAUuK,KAAK,EAAE,EAMf,EAHqE8gD,EAAjD,gBAApBlqD,EAAQiR,SAA6B/X,CAAAA,IAAImQ,UAAUrJ,EAAQqF,KAAK,EAAE,EAGjE6kD,EAH+E,CAAA,IAGnElqD,EAAQqF,KAAK9E,KAAKyoD,EAAW,SAAS,IAGtDvtD,EAAK0uD,SAAWhuD,EAAE,IAAMgtD,EAAW,YAAcnpD,EAAQnB,GAAK,IAAI,EACrD,eAATjG,GAAyB6C,EAAK0uD,SAAS/xD,OACzCqD,EAAK0uD,SAAS7+C,KAAKtL,EAAQsP,SAAW+6C,EAAe,CAAC,GAEtD5uD,EAAK0uD,SAAWhuD,EAAE4uD,CAAQ,EAC1BtvD,EAAK0uD,SAAS5iD,OAAOvH,EAAQsP,SAAW+6C,EAAe,CAAC,EAGrDrqD,EAAQ0K,WAAWjP,EAAK0uD,SAAS1/C,SAASzK,EAAQ0K,SAAS,EAC3D1K,EAAQ1B,OAAO7C,EAAK0uD,SAAS9jD,KAAK,QAASrG,EAAQ1B,KAAK,EAG3D7E,EAAS2e,OAASpY,EAAQnB,GAG1BpD,EAAK4F,OAAO,EACZ+oD,EAAS7iD,OAAO9L,EAAK0uD,QAAQ,EAC7BnqD,EAAQqF,KAAK9E,KAAKyoD,EAAW,UAAW,CAAA,CAAI,EAGxCn3C,EAAQ7R,EAAQ6R,MAAS,eAAgBg4C,EAA8B,qBAAapuD,EAAK0uD,SAASr/C,IAAI,SAAS,EAAE,GAAI,wBAA0B9K,EAAQ6R,MAAM,IAAM,QAAU,eAAiB7R,EAAQ6R,MAAM,IAAM7R,EAAQ6R,OAAS,WAAc,GACrPpW,EAAK0uD,SAAS/mB,OAAOvxB,CAAK,EAGH,eAApB7R,EAAQiR,SACTxV,EAAK0uD,SAASpuD,GAAG,aAAc,WAC7BgJ,aAAaqK,EAAW68B,KAAK,CAC/B,CAAC,EAAElwC,GAAG,aAAc,WAClBN,EAAKuvD,YAAY,CACnB,CAAC,GAKLvvD,EAAK+L,SAAS,GACd4H,EAAW67C,SAAWxvD,EAAK0uD,UACP5pD,KAAK,WAAYP,EAAQqF,IAAI,EAGjD5J,EAAK0uD,SAAS7iD,KAAK,aAAa,EAAEvL,GAAGgtD,EAAkB,SAAS1sD,GAC9DlB,MAAM0I,MAAMxH,CAAC,CACf,CAAC,EAGDZ,EAAK0uD,SAAS7iD,KAAK,gBAAgB,EAAEvL,GAAG,QAAS,SAASM,GACxD,IAAIyM,EAAQ3M,EAAEzE,IAAI,EACd6I,EAAOuI,EAAMvI,KAAK,MAAM,GAAK,GAC7BiqD,EAAUjqD,EAAK0oD,EAAW3+C,WAAgD,EAAnC/J,EAAK0oD,EAAW3+C,UAAUlS,OACjE8yD,EAAyC,QAAvBlrD,EAAQmrD,WAE3B5qD,EAAK0rB,UAGHu+B,GAAWU,CAAAA,GAAkC,MAAd3qD,EAAK3H,OAK/B,CAAA,KAJ2B,YAAzB,OAAOoH,EAAQgY,MACrBhY,EAAQgY,MAAMzX,EAAMuI,CAAK,EAC3B,OAEgB0hD,GAAW/uD,EAAK4F,OAAO,EACzClG,MAAM0I,MAAMxH,CAAC,EAEjB,CAAC,EAGDZ,EAAK0uD,SAAS7iD,KAAKwiD,CAAe,EAAE/tD,GAAG,QAAS,SAASM,GACvD,IACI+uD,EADQjvD,EAAEzE,IAAI,EACIgwB,OAAO,EAGZ,WAFN0jC,EAAU7qD,KAAK,MAAM,GAAK,IAE7B3H,MAAoBoH,EAAQ+pD,eAClC36C,EAAWi8C,OAAOD,EAAWprD,EAAQiqD,SAAS,CAElD,CAAC,EAGwB,YAAzB,OAAOjqD,EAAQ+O,OAAwB/O,EAAQ+O,MAC7CtT,EAAK0uD,SACLnqD,EAAQqF,IACV,EACF,EAGAD,EAAM1K,UAAU8M,SAAW,SAAS7G,GAClC,IACIX,EADOtI,KACQN,OAEnB8B,IAAIsO,SAASxH,EAAQqF,KAAK,GAHf3N,KAGwByyD,SAAS,GAAI,CAC9C3iD,SAAUxH,EAAQwH,SAClBnL,EALS3E,KAKD2E,EACR2L,UAA+B,gBAApBhI,EAAQiR,QAA4B,QAAU,KACzDtI,MAAO3I,EAAQ2I,OAAS,IAC1B,CAAC,CACH,EAGAvD,EAAM1K,UAAU2G,OAAS,WACZ3J,KACQN,OADnB,IAEIk0D,EAAWl8C,EAAW67C,SAGvBK,IACDA,EAAS/qD,KAAK,UAAU,GACtB+qD,EAAS/qD,KAAK,UAAU,EAAEA,KAAKyoD,EAAW,UAAW,CAAA,CACvD,EACAsC,EAASjqD,OAAO,GAElBnI,IAAI,IAAM2wD,CAAc,EAAExoD,OAAO,CACnC,EAGA+D,EAAM1K,UAAUswD,YAAc,WAC5B,IAAIvvD,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACnB2N,aAAaqK,EAAW68B,KAAK,EAE7B78B,EAAW68B,MAAQlvC,WAAW,WAC5BtB,EAAK4F,OAAO,CACd,EAAGrB,EAAQmuC,KAAK,CAClB,EAGA/oC,EAAM1K,UAAUwJ,OAAS,WACvB,IAAIzI,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAGI,UAApB4I,EAAQiR,UAAqBjR,EAAQiR,QAAU,cAG/CxV,EAAKwvD,UAAUxvD,EAAKwvD,SAASzmD,IAAIxE,EAAQiR,QAASxV,EAAK8vD,gBAAgB,EAG1E9vD,EAAKwvD,SAAWjrD,EAAQqF,KACxB5J,EAAK8vD,iBAAmB,SAASlvD,GAC/B0I,aAAaqK,EAAW68B,KAAK,EAC7BxwC,EAAKY,EAAIA,EACTZ,EAAK8Q,OAAO,EACZlQ,EAAE2hB,eAAe,CACnB,EAGAhe,EAAQqF,KAAKtJ,GAAGiE,EAAQiR,QAASxV,EAAK8vD,gBAAgB,EAG/B,eAApBvrD,EAAQiR,SAETjR,EAAQqF,KAAKtJ,GAAG,aAAc,WAC5BN,EAAKuvD,YAAY,CACnB,CAAC,CAEL,EAGA57C,EAAW3T,KAAO,GAGlB2T,EAAWmB,QAAU,SAAS1R,GAC5B,IAAIpD,EAAO2T,EAAW3T,KAAKoD,GAE3B,OADIpD,GAAMgH,EAAK/J,MAAMmG,EAAM2Q,EAAU,sBAAwB3Q,EAAI,cAAkB,sBAAsB,EAClGpD,CACT,EAGA2T,EAAWi8C,OAAS,SAASviD,EAAO0iD,GAClC,IAAIC,EAAc3iD,EAAMwB,SAAS,IAAI,EACjCohD,EAAa5iD,EAAM8B,SAASw+C,CAAW,EAIvCvpD,EAAW,WACb1D,EAAEzE,IAAI,EAAEoT,IAAI,CAACo5B,QAAW,EAAE,CAAC,CAC7B,EAGIunB,EAAYp7B,GAAG,WAAW,IAG1Bq7B,GACF5iD,EAAM6B,YAAYy+C,CAAW,EAAE3+C,SAAS4+C,CAAa,EACrDoC,EAAY3hB,KAAK,EAAEvS,KAAK,EAAEiW,UAbd,IAaiC3tC,CAAQ,IAErD4rD,EAAYl0B,KAAK,EAAEkW,QAfP,IAewB5tC,CAAQ,EAC5CiJ,EAAM6B,YAAY0+C,CAAa,EAAE5+C,SAAS2+C,CAAW,GAInDsC,GAAcF,KACZG,EAAY7iD,EAAMwnB,SAAS,IAAM+4B,CAAa,GACxC/+C,SAAS,IAAI,EAAEitB,KAAK,EAAEkW,QAtBpB,IAsBqC5tC,CAAQ,EACzD8rD,EAAUhhD,YAAY0+C,CAAa,EAAE5+C,SAAS2+C,CAAW,GAE7D,EAIMP,EAAO1sD,EAAE+I,MAAM,EACfk7C,EAAOjkD,EAAEhF,QAAQ,EAGrB0xD,EAAK9sD,GAAG,SAAU,WAChB,GAAItC,EAAS2e,OAAb,CACA,IAAI3c,EAAO2T,EAAWmB,QAAQ9W,EAAS2e,MAAM,EAC7C,GAAI3c,EAEJ,MAAG,EAACA,EAAK0uD,UAAa1uD,CAAAA,EAAK0uD,SAAS,IAAQhuD,CAAAA,EAAE,IAAKgtD,CAAQ,EAAE,KAM7D,KAAuB,gBAFT1tD,EAAKrE,OAER6Z,QACTxV,EAAK4F,OAAO,EAEZ5F,EAAK+L,SAAS,EAbW,CAe7B,CAAC,EAKD44C,EAAKrkD,GAAGgtD,EAAkB,SAAS1sD,GACjC,IACIZ,EAGAuE,EAJAvG,EAAS2e,SACT3c,EAAO2T,EAAWmB,QAAQ9W,EAAS2e,MAAM,KAGzCpY,EAAUvE,EAAKrE,OAId8B,CAAAA,IAAImQ,UAAUrJ,EAAQqF,KAAK,EAAE,GAAyB,gBAApBrF,EAAQiR,UAE3C5U,EAAEyJ,SAAW9F,EAAQqF,KAAK,IAC1BrF,EAAQqF,KAAKiC,KAAKjL,EAAEyJ,MAAM,EAAE,IAC3BrK,EAAK0uD,UAAY9tD,EAAEyJ,SAAWrK,EAAK0uD,SAAS,IAC5C1uD,EAAK0uD,UAAY1uD,EAAK0uD,SAAS7iD,KAAKjL,EAAEyJ,MAAM,EAAE,KAInDrK,EAAK4F,OAAO,EACd,CAAC,EAGGynD,EAAU,2CACd1I,EAAKrkD,GAAG,QAAS+sD,EAAS,SAASzsD,GACjC,IAAIyM,EAAQ3M,EAAEzE,IAAI,EACdgwB,EAAS5e,EAAM8oB,QAAQ,aAAa,EAAE7R,GAAG,CAAC,EAC1CyqC,EAAU1hD,EAAM8B,SAAS2+C,CAAc,GAAKzgD,EAAM8B,SAAS4+C,CAAe,EAC1EplD,EAASsjB,EAAOrhB,KAAK,YAAY,GAAKqhB,EAAOrhB,KAAK,IAAI,EACtDrG,EAAU9G,IAAI8G,QAAQtI,IAAI,EAG3BoR,EAAM8B,SAzcM,yBAyce,GAG1B4/C,IAEF9iC,EAAOpgB,KAAK,IAAKmiD,CAAgB,EAAE9+C,YAAY8+C,CAAgB,EAC/D/hC,EAAOpgB,KAAK,IAAKoiD,CAAiB,EAAE/+C,YAAY++C,CAAiB,EACjE5gD,EAAM2B,SAASg/C,CAAgB,EAC/B3gD,EAAM8oB,QAAQ,IAAK43B,CAAe,EAAE/+C,SAASi/C,CAAiB,EAE9D1pD,EAAQuX,MAAQvX,EAAQuX,OAASpb,EAAE4kB,KAAKjY,EAAMwB,SAAS,IAAKg/C,CAAc,EAAEpiD,KAAK,CAAC,EAGlF/L,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,SAAUpL,EAAQ,IAAKpE,CAAO,EAEnE,CAAC,EAGDogD,EAAKrkD,GAAG,QAAU+sD,EAAUgB,EAAkB,SAASztD,GACrD,IAAIyM,EAAQ3M,EAAEzE,IAAI,EACd0zD,EAAYtiD,EAAM8oB,QAAQ,IAAK23B,EAAgB,QAAQ,EACvDvpD,EAAU9G,IAAI8G,QAAQorD,EAAU,EAAE,EAClCI,EAAkF,UAApE,OAAO1iD,EAAM8oB,QAAQ,aAAa,EAAE7R,GAAG,CAAC,EAAE1Z,KAAK,eAAe,EAE5E,kBAAmBrG,GAAWA,CAAAA,EAAQ+pD,eACxC36C,EAAWi8C,OAAOD,EAAWI,CAAW,CAE5C,CAAC,EAGGI,EAAc,gBAAiBpC,EACnCpJ,EAAKrkD,GAAG,aAAc6vD,EAAa,SAASvvD,GAC1C,IAII4L,EAHA6iD,EADQ3uD,EAAEzE,IAAI,EACI4P,KAAK,IAAKqiD,CAAc,EAE1CmB,EAAU,MACV7iD,EAAO6iD,EAAU,GAAGxiD,sBAAsB,GAGtCF,MAAQygD,EAAK19C,MAAM,IACzB2/C,EAAUrgD,SAASm/C,CAAgB,GAEnC3hD,EAAO6iD,EAAU,GAAGxiD,sBAAsB,GAClCT,KAAO,IACbijD,EAAUngD,YAAYi/C,CAAgB,EAKvC3hD,EAAKI,OAASwgD,EAAKz9C,OAAO,IAC3B0/C,EAAU/qC,GAAG,CAAC,EAAEjV,IAAI,aAAc,EAAE7C,EAAKI,OAASwgD,EAAKz9C,OAAO,EAAI,EAAE,CAExE,CAAC,EAAErP,GAAG,aAAc6vD,EAAa,SAASvvD,GACxC,IACIyuD,EADQ3uD,EAAEzE,IAAI,EACI4S,SAAS,IAAKq/C,CAAc,EAElDmB,EAAUngD,YAAYi/C,CAAgB,EACtCkB,EAAUhgD,IAAI,aAAc,CAAC,CAC/B,CAAC,EAKHrR,EAASkS,MAAQ,SAAS9M,GACpBpD,EAAO2T,EAAWmB,QAAQ1R,CAAE,EAChC,OAAIpD,GAEJA,EAAK4F,OAAO,EACL+N,EAAWtM,KAAKrH,CAAI,GAHV/D,IAInB,EAGA+B,EAAS8V,OAAS,SAAS1Q,EAAImB,EAASpH,GAClC6C,EAAO2T,EAAWmB,QAAQ1R,CAAE,EAChC,OAAIpD,GAEJA,EAAK8T,OAAOvP,EAASpH,CAAI,EAClBwW,EAAWtM,KAAKrH,CAAI,GAHV/D,IAInB,EAGA+B,EAASyvD,WAAa,WACpB,IAAIrkD,EAAO1I,EAAEiE,OAAO,GAAI0E,SAAS,EAI7B+mD,GAHJhnD,EAAK,GAAK,aAGO,IAAI7C,OAAO,KAAM,CAChC,OAAQ,UAAW,WACnBoH,KAAK,GAAG,EAAI,IAAI,GASlB,OANAjO,MAAMa,KAAK6I,EAAK,GAAI,SAAU5E,EAAKmB,GAC7ByqD,EAAWpvD,KAAKwD,CAAG,GACrB,OAAO4E,EAAK,GAAG5E,EAEnB,CAAC,EAEMxG,EAAS8V,OAAOrS,MAAM,KAAM2H,CAAI,CACzC,EAGApL,EAAS8S,OAAS,SAASvM,GACrBqP,EAAO,IAAIjK,EAAMpF,CAAO,EAC5B,OAAOoP,EAAWtM,KAAKuM,CAAI,CAC7B,EAEAnU,EAAQsU,EAAU/V,CAAQ,CAC5B,CAAC,EC5nBD0B,MAAMP,OAAO,CAAC,SAAU,OAAQ,SAASM,GACvC,aAEA,IAAIiB,EAAIhB,MAAMgB,EACVjD,EAAMiC,MAAMjC,IAGZe,EAAS,CACX7C,OAAQ,GACP6E,MAAOd,MAAMlB,OAAUkB,MAAMlB,OAAOgC,MAAQ,IAAS,EAGrDkT,IAAK,SAASnP,GACb,IAAIvE,EAAO/D,KAEX,OADA+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EACxCvE,CACT,EAGCM,GAAI,SAASmI,EAAQ9I,GACpB,OAAOD,MAAM8I,QAAQnB,KAAKpL,KAAM8X,EAAUtL,EAAQ9I,CAAQ,CAC5D,CACF,EAmBIoU,EAAW,SACXhD,EAAW,iBAEXs/C,EAAa,mBACbC,EAAc,oBACdC,EAAkB,wBAClBC,EAAc,oBAEdC,EAAmB,yBAEnBC,EAAa,qBAGb/mD,EAAQ,SAASpF,GACnB,IAAIvE,EAAO/D,KACX+D,EAAKQ,MAAQ,EAAEhC,EAAOgC,MACtBR,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ6C,EAAO7C,OAAQ4I,CAAO,EAC9DvE,EAAK8Q,OAAO,CACd,EAGAnH,EAAM1K,UAAUtD,OAAS,CACvBwB,KAAM,UACLoY,IAAK,EACLjD,IAAK,IACL3M,MAAO,EACPgpC,KAAM,EACNgiB,SAAU,CAAA,EACVjwC,KAAM,CAAA,EACN1N,MAAO,CAAA,EACPqC,MAAO,CAAA,EACP1F,OAAQ,IACR6gB,SAAU,CAAA,EACVje,MAAO,SACV,EAGA5I,EAAM1K,UAAU6R,OAAS,WACvB,IAAI9Q,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAGfiO,EAAOlJ,EAAE6D,EAAQqF,IAAI,EACzB,GAAiB,EAAdA,EAAKjN,OAMN,OALA+C,MAAMa,KAAKqJ,EAAM,WACfpL,EAAOsS,OAAOpQ,EAAEiE,OAAO,GAAIJ,EAAS,CAClCqF,KAAM3N,IACR,CAAC,CAAC,CACJ,CAAC,EACM+D,EAITU,EAAEiE,OAAOJ,EAAS9G,EAAI8G,QAAQqF,EAAK,EAAE,CAAC,EAGnCrF,EAAQoqC,KAAO,IAAGpqC,EAAQoqC,KAAO,GAGjCpqC,EAAQ+N,IAAM/N,EAAQgR,MAAKhR,EAAQ+N,IAAM/N,EAAQgR,IAAMhR,EAAQoqC,MAK/DpqC,EAAQ8Q,OACT9Q,EAAQoB,MAAiC,UAAzB,OAAOpB,EAAa,MAAgBA,EAAQoB,MAAQ,CAACpB,EAAQgR,IAAKhR,EAAQoB,OACtFirD,EAAWnmD,KAAK8K,IAAIhR,EAAQoB,MAAM,GAAIpB,EAAQoB,MAAM,EAAE,EACzDkrD,EAAWpmD,KAAK6H,IAAI/N,EAAQoB,MAAM,GAAIpB,EAAQoB,MAAM,EAAE,EACvDpB,EAAQoB,MAAM,GAAK8E,KAAK6H,IAAIs+C,EAASrsD,EAAQgR,GAAG,EAChDhR,EAAQoB,MAAM,GAAK8E,KAAK6H,IAAIu+C,EAAStsD,EAAQgR,GAAG,EAChDhR,EAAQoB,MAAM,GAAK8E,KAAK8K,IAAIhR,EAAQoB,MAAM,GAAGpB,EAAQ+N,GAAG,EACxD/N,EAAQoB,MAAM,GAAK8E,KAAK8K,IAAIhR,EAAQoB,MAAM,GAAGpB,EAAQ+N,GAAG,EAEpDw+C,EAAWrmD,KAAK2H,OAAO7N,EAAQoB,MAAM,GAAKpB,EAAQgR,MAAQhR,EAAQ+N,IAAM/N,EAAQgR,KAAO,GAAG,EAE7FsnB,GADAk0B,EAAWtmD,KAAK2H,OAAO7N,EAAQoB,MAAM,GAAKpB,EAAQgR,MAAQhR,EAAQ+N,IAAM/N,EAAQgR,KAAO,GAAG,GACvEu7C,EAAW,IAC/BA,GAAsB,IACtBC,GAAsB,MAGK,UAAxB,OAAOxsD,EAAQoB,QAChBpB,EAAQoB,MAAQ8E,KAAK8K,IAAI9T,MAAM,KAAM8C,EAAQoB,KAAK,GAIjDpB,EAAQoB,MAAQpB,EAAQgR,MAAKhR,EAAQoB,MAAQpB,EAAQgR,KACrDhR,EAAQoB,MAAQpB,EAAQ+N,MAAK/N,EAAQoB,MAAQpB,EAAQ+N,KAEpDuqB,EAAQpyB,KAAK2H,OAAO7N,EAAQoB,MAAQpB,EAAQgR,MAAQhR,EAAQ+N,IAAM/N,EAAQgR,KAAO,GAAG,EAAI,KAK9F,IAkEIi7B,EAlEAj+B,EAAQhO,EAAQisB,SAAW,UAAYjsB,EAAQgO,MAG/CigB,EAAO,6BAA+C,aAAjBjuB,EAAQpH,KAAsB,wBAA0B,IAAK,MAAOoH,EAAQmc,KAAO,eAAgB8vC,EAAa,WAAa,IACtK,mDAAoDj+C,EAAO,MAAwB,aAAjBhO,EAAQpH,KAAsB,SAAW,SAAU,IAAK0/B,EAAO,KAAuB,aAAjBt4B,EAAQpH,KAAsB,SAAW,QAAS,KAAM2zD,GAAY,GAAI,mDAAqE,aAAjBvsD,EAAQpH,KAAsB,SAAW,QAAS,KAAM2zD,GAAYj0B,GACvU,kEAAgEtqB,EAAO,mBAAoBhO,EAAQ8Q,MAAQ,0CAA4D,aAAjB9Q,EAAQpH,KAAsB,SAAW,QAAS,IAAK4zD,EAAU,kEAAmEx+C,EAAO,kBAAoB,IAAK,SAEtTlF,EAAQ3M,EAAE6D,EAAQqF,IAAI,EACzBonD,EAAY3jD,EAAMyE,KAAK,eAAe,EAsBvC,GApBAk/C,EAAU,IAAMA,EAAUprD,OAAO,EACjC5F,EAAKixD,SAAWvwD,EAAE8xB,CAAI,EAGnBjuB,EAAQ8Q,OACTrV,EAAKixD,SAASplD,KAAK,IAAMykD,CAAW,EAAEhsC,GAAG,CAAC,EAAExf,KAAK,QAASP,EAAQoB,MAAM,EAAE,EAC1E3F,EAAKixD,SAASplD,KAAK,IAAMykD,CAAW,EAAEhsC,GAAG,CAAC,EAAExf,KAAK,QAASP,EAAQoB,MAAM,EAAE,GAE1E3F,EAAKixD,SAASplD,KAAK,IAAMykD,CAAW,EAAExrD,KAAK,QAASP,EAAQoB,KAAK,EAInE0H,EAAMwC,KAAK7P,EAAKixD,QAAQ,EAGJ,aAAjB1sD,EAAQpH,MACT6C,EAAKixD,SAASthD,OAAOpL,EAAQoL,OAAS,IAAI,EAIzCpL,EAAQosD,SAAS,CAElB,IADA,IAAIO,GAAU3sD,EAAQ+N,IAAM/N,EAAQgR,KAAOhR,EAAQoqC,KAAMxuC,EAAO,GACxDvD,EAAI,EAAGA,EAAa,EAATs0D,EAAYt0D,CAAC,GAAI,CAClC,IAAI+xC,EAAW,IAAJ/xC,EAAUs0D,EAClBviB,EAAO,MACRxuC,GAAQ,0CAA4D,aAAjBoE,EAAQpH,KAAsB,SAAW,QAAS,IAAKwxC,EAAM,YAEpH,CACA3uC,EAAKixD,SAASnlD,OAAO3L,CAAI,CAC3B,CAGGoE,EAAQyO,OAAS,CAACzO,EAAQ8Q,QACvB87C,EAAYzwD,EAAE,qPAAqP,EACvQ2M,EAAMgC,IAAI,WAAW,UAAU,EAC/BhC,EAAMvB,OAAOqlD,CAAS,EACtB9jD,EAAMxB,KAAK,IAAM4kD,CAAgB,EAAE5hD,SAAS,OAAO,EAAE3E,IAAI3F,EAAQoB,KAAK,EAClD,aAAjBpB,EAAQpH,KACTg0D,EAAU9hD,IAAI,CACZjD,KAAM,EACLC,IAAK,CAAC,EACT,CAAC,EAEDrM,EAAKixD,SAAS5hD,IAAI,eAAgB8hD,EAAUzN,WAAW,EAAI,EAAE,GAK7Dn/C,EAAQisB,UAGVxwB,EAAKixD,SAASjiD,SAAS+B,CAAQ,EAC/B/Q,EAAKixD,SAASplD,KAAK,IAAM0kD,CAAe,EAAEvhD,SAAS+B,CAAQ,GAH3D/Q,EAAKoxD,MAAM,EAQbpxD,EAAKixD,SAASplD,KAAK,IAAM0kD,CAAe,EAAEjwD,GAAG,YAAa,WACxD,IAAI+wD,EAA+B,aAAjB9sD,EAAQpH,KAAsBoH,EAAQoL,OAAS3P,EAAKixD,SAAS,GAAGlkD,YACjFukD,EAAatxD,EAAKixD,SAASplD,KAAK,IAAMykD,CAAW,EAEjDlkD,GAD4B,aAAjB7H,EAAQpH,KAAuBk0D,EAAc3wD,EAAEzE,IAAI,EAAEgwB,OAAO,EAAE,GAAG+3B,UAAYsN,EAAW3hD,OAAO,EAAKjP,EAAEzE,IAAI,EAAEgwB,OAAO,EAAE,GAAGg4B,YACjHoN,EAAc,IAChC1rD,EAAQjF,EAAEzE,IAAI,EAAEgwB,OAAO,EAAEnnB,KAAK,OAAO,EACrCysD,EAAUhtD,EAAQitD,QAAUjtD,EAAQitD,QAAQ7rD,CAAK,EAAIA,EACtD3F,EAAKixD,SAASplD,KAAK,IAAM2kD,CAAW,EAAE3gD,KAAK0hD,CAAO,EAElDjoD,aAAaknC,CAAK,EAClBA,EAAQlvC,WAAW,WACG,aAAjBiD,EAAQpH,KACT6C,EAAKixD,SAASplD,KAAK,IAAM2kD,CAAW,EAAEnhD,IAAI,CACxCzC,OAAUR,EAAO,IACjBqlD,gBAAiB,OACjBhpB,QAAW,cACb,CAAC,EAEDzoC,EAAKixD,SAASplD,KAAK,IAAM2kD,CAAW,EAAEnhD,IAAI,CACxCjD,KAAQA,EAAO,IACfq8B,QAAW,cACb,CAAC,CAEL,EAAG,GAAG,CACR,CAAC,EAAEnoC,GAAG,WAAY,WAChBgJ,aAAaknC,CAAK,EAClBxwC,EAAKixD,SAASplD,KAAK,IAAM2kD,CAAW,EAAEnhD,IAAI,UAAW,MAAM,CAC7D,CAAC,CACH,EAGA1F,EAAM1K,UAAUmyD,MAAQ,SAASl3C,EAAUvU,EAAO/I,GAChD,IAAIoD,EAAO/D,KACVsI,EAAUvE,EAAKrE,OACf+1D,EAAY1xD,EAAKixD,SACjBI,EAAc,WACb,MAAwB,aAAjB9sD,EAAQpH,KAAsBoH,EAAQoL,OAAS+hD,EAAU,GAAG3kD,WACrE,EACCukD,EAAaI,EAAU7lD,KAAK,IAAMykD,CAAW,EAC7CqB,EAAYD,EAAU5/C,KAAK,qBAAkB,EAC7C8/C,EAAaD,EAAU9iD,SAAS,IAAM4hD,CAAgB,EAAE5hD,SAAS,OAAO,EAAE3E,IAAI,EAC9EykC,EAAO,MAAQpqC,EAAQ+N,IAAM/N,EAAQgR,KAAO9K,KAAKmH,KAAKrN,EAAQoqC,IAAI,GAClEz4B,EAAS,SAAS27C,EAAarxD,EAAOX,GAOrCgyD,GADAA,EAA4B,KAJ1BA,EADiC,IAAhCpnD,KAAKmH,KAAKigD,CAAW,EAAIljB,EACZlkC,KAAKmH,KAAKigD,CAAW,EAAIljB,EAEzBlkC,KAAKqnD,MAAMD,CAAW,EAAIljB,GAER,IAAKkjB,GACX,EAAI,EAAGA,EACnCP,EAAWhtC,GAAG9jB,CAAK,EAAE6O,IAAsB,aAAjB9K,EAAQpH,KAAqB,SAAS,OAAS00D,EAAc,GAAG,EAC1F,IA0BME,EA1BFC,EAAUC,EAAQX,EAAW,GAAGrN,UAAU,EAC7CiO,EAAU3tD,EAAQ8Q,MAAQ48C,EAAQX,EAAW,GAAGrN,UAAU,EAAI,EAU3D4C,GATgB,aAAjBtiD,EAAQpH,MACTu0D,EAAU7lD,KAAK,IAAM2kD,CAAW,EAAEnhD,IAAI,CAACzC,OAASilD,EAAc,IAAKJ,gBAAgB,MAAM,CAAC,EAC1FO,EAAUC,EAAQZ,EAAY,EAAIC,EAAW,GAAGtN,UAAYsN,EAAW3hD,OAAO,CAAC,EAC/EuiD,EAAU3tD,EAAQ8Q,MAAQ48C,EAAQZ,EAAY,EAAIC,EAAW,GAAGtN,UAAYsN,EAAW3hD,OAAO,CAAC,EAAI,GAEnG+hD,EAAU7lD,KAAK,IAAM2kD,CAAW,EAAEnhD,IAAI,OAAOwiD,EAAc,GAAG,EAEhEG,EAAoB,IAAVA,EAAgB,IAAKA,EAC/BE,EAAoB,IAAVA,EAAgB,IAAKA,EACjBznD,KAAK8K,IAAIy8C,EAASE,CAAO,GACtCC,EAAY1nD,KAAK2nD,IAAIJ,EAAUE,CAAO,EAMnCG,GALgB,aAAjB9tD,EAAQpH,KACTu0D,EAAU7lD,KAAK,IAAMwkD,CAAU,EAAEhhD,IAAI,CAACM,OAASwiD,EAAY,IAAKvlD,OAASi6C,EAAU,GAAG,CAAC,EAEvF6K,EAAU7lD,KAAK,IAAMwkD,CAAU,EAAEhhD,IAAI,CAACK,MAAQyiD,EAAY,IAAK/lD,KAAOy6C,EAAU,GAAG,CAAC,EAEtEtiD,EAAQgR,IAAM9K,KAAKqnD,OAAOvtD,EAAQ+N,IAAM/N,EAAQgR,KAAOs8C,EAAc,GAAG,GACxFD,EAAaS,EACbV,EAAU9iD,SAAS,IAAM4hD,CAAgB,EAAE5hD,SAAS,OAAO,EAAE3E,IAAI0nD,CAAU,EAC3EN,EAAWhtC,GAAG9jB,CAAK,EAAEsE,KAAK,QAASutD,CAAS,EAC5CX,EAAU7lD,KAAK,IAAM2kD,CAAW,EAAE3gD,KAAKtL,EAAQitD,QAAUjtD,EAAQitD,QAAQa,CAAS,EAAIA,CAAS,EAG5F9tD,EAAQ8Q,QACL08C,EAAW,CACbT,EAAWhtC,GAAG,CAAC,EAAExf,KAAK,OAAO,EAC5BwsD,EAAWhtC,GAAG,CAAC,EAAExf,KAAK,OAAO,IAEpB,GAAKitD,EAAS,IAAIA,EAAS5pD,QAAQ,EAGjDnI,EAAK2F,MAAQpB,EAAQ8Q,MAAQ08C,EAAWM,EACxC9tD,EAAQ2R,QAAU3R,EAAQ2R,OAAOlW,EAAK2F,KAAK,EAG/B,SAAT9F,GAAiB0E,EAAQ8J,MAAQ9J,EAAQ8J,KAAKrO,EAAK2F,KAAK,CAC7D,EACCssD,EAAU,SAAStsD,GAClB,IAAI2sD,EAAU3sD,EAAQ0rD,EAAY,EAAI,IAAM1iB,EAC3CviC,EAAQ3B,KAAKqnD,MAAMQ,CAAO,EAAI3jB,EAI/B,OAFEviC,EADCzG,GAAS0rD,EAAY,EACd5mD,KAAKmH,KAAK0gD,CAAO,EAAI3jB,EAExBviC,CACT,EAGCmmD,EAAW7xD,EAAE,CAAC,mEAAmEiN,KAAK,EAAE,CAAC,EAa1F,GAAgB,QAAbuM,EAAoB,OAAOhE,EAAOvQ,EAAQpB,EAAQgR,IAAK3Y,EAAG,MAAM,EAGnE80D,EAAU7lD,KAAK,IAAM0kD,CAAe,EAAEhwD,KAAK,SAASC,GAClD,IAAI6M,EAAQ3M,EAAEzE,IAAI,EAClBoR,EAAM/M,GAAG,YAAa,SAASM,GAC7BA,EAAIA,GAAK6I,OAAO1N,MAEhB,IApB6By2D,EAC3BC,EAmBEC,EAAUrlD,EAAM4e,OAAO,EAAE,GAAGg4B,WAC/B0O,EAAO/xD,EAAE6L,QACU,aAAjBlI,EAAQpH,OACTu1D,EAAUrB,EAAY,EAAIhkD,EAAM4e,OAAO,EAAE,GAAG+3B,UAAYsN,EAAW3hD,OAAO,EAC1EgjD,EAAO/xD,EAAE8L,SAxBYq1C,EA2BZ,SAASnhD,GAClBA,EAAIA,GAAK6I,OAAO1N,MAChB,IAAIqQ,EAAOsmD,GAA4B,aAAjBnuD,EAAQpH,KAAuBw1D,EAAO/xD,EAAE8L,QAAY9L,EAAE6L,QAAUkmD,GAGlFC,GADoBxmD,GADZA,EAATA,EAAO,EAAS,EAChBA,GAAOilD,EAAY,EAASA,EAAY,EAC7BjlD,GAAOilD,EAAY,EAAI,IAAM1iB,EAC3Cz4B,EAAO08C,EAASpyD,CAAK,EACrB6M,EAAM2B,SAAS0hD,CAAU,EACzBgB,EAAU7lD,KAAK,IAAM2kD,CAAW,EAAE/6C,KAAK,EACvC7U,EAAE2hB,eAAe,CACnB,EArC6BiwC,EAuCpB,WACPnlD,EAAM6B,YAAYwhD,CAAU,EAC5BgB,EAAU7lD,KAAK,IAAM2kD,CAAW,EAAEniB,KAAK,CACzC,EAzCEokB,EAAS,WACXD,GAAMA,EAAG,EACTD,EAAS3sD,OAAO,EAChBrB,EAAQ8J,MAAQ9J,EAAQ8J,KAAKrO,EAAK2F,KAAK,CACzC,EACAjF,EAAE,oBAAoB,EAAE,IAAMA,EAAE,MAAM,EAAEoL,OAAOymD,CAAQ,EACvDA,EAASjyD,GAAG,YAAayhD,CAAI,EAC7BwQ,EAASjyD,GAAG,UAAWmyD,CAAM,EAAEnyD,GAAG,aAAcmyD,CAAM,CAqCtD,CAAC,CACH,CAAC,EAGDf,EAAUpxD,GAAG,QAAS,SAASM,GAC7B,IAAI4b,EAAO9b,EAAE,IAAM6vD,CAAe,EAC9BljD,EAAQ3M,EAAEzE,IAAI,EACf,CAACugB,EAAKoY,GAAG74B,MAAMsO,MAAM,GAAuC,IAAlCmS,EAAKpN,IAAIrT,MAAMsO,MAAM,EAAE1N,QAAgB6f,EAAK7f,SAQnEi2D,GADuBtU,GADbA,GAJVA,EAA0B,aAAjB/5C,EAAQpH,KAChBk0D,EAAY,EAAIzwD,EAAE8L,QAAUW,EAAMixC,OAAO,EAAEjyC,IAAM3L,EAAE+I,MAAM,EAAE+W,UAAU,EACxE5f,EAAE6L,QAAUY,EAAMixC,OAAO,EAAElyC,KAAO1L,EAAE+I,MAAM,EAAE46B,WAAW,GAE7C,EAAW,EACpBia,GAAS+S,EAAY,EAAYA,EAAY,EAClC/S,GAAS+S,EAAY,EAAI,IAAM1iB,EAGzCnuC,EAFD+D,EAAQ8Q,MACW,aAAjB9Q,EAAQpH,KACDsN,KAAK2nD,IAAI9T,EAAS36C,SAASjD,EAAE4wD,EAAW,EAAE,EAAEjiD,IAAI,QAAQ,CAAC,CAAC,EAAI5E,KAAK2nD,IAAI9T,EAAU36C,SAASjD,EAAE4wD,EAAW,EAAE,EAAEjiD,IAAI,QAAQ,CAAC,CAAC,EAAI,EAAI,EAEjI5E,KAAK2nD,IAAI9T,EAASgT,EAAW,GAAGrN,UAAU,EAAIx5C,KAAK2nD,IAAI9T,EAASgT,EAAW,GAAGrN,UAAU,EAAI,EAAI,EAGlG,EAEV/tC,EAAO08C,EAASpyD,EAAO,MAAM,EAC7BI,EAAE2hB,eAAe,EAErB,CAAC,EAGDovC,EAAU9iD,SAAS,yBAAsB,EAAEA,SAAS,GAAG,EAAEtO,KAAK,SAASC,GACrEE,EAAEzE,IAAI,EAAEqE,GAAG,QAAS,WAClBsxD,EAAaD,EAAU9iD,SAAS,IAAM4hD,CAAgB,EAAE5hD,SAAS,OAAO,EAAE3E,IAAI,EAU9E,IAAI2oD,IARFjB,EADU,GAATpxD,EACYoxD,EAAartD,EAAQoqC,KAAOpqC,EAAQgR,IAC7ChR,EAAQgR,IACVlE,OAAOugD,CAAU,EAAIrtD,EAAQoqC,KAElBt9B,OAAOugD,CAAU,EAAIrtD,EAAQoqC,KAAOpqC,EAAQ+N,IACrD/N,EAAQ+N,IACVjB,OAAOugD,CAAU,EAAIrtD,EAAQoqC,MAEDpqC,EAAQgR,MAAQhR,EAAQ+N,IAAM/N,EAAQgR,KAAO,IAAMo5B,EACnFz4B,EAAO28C,EAAY,EAAG,MAAM,CAC9B,CAAC,CACH,CAAC,EAGD,IAAIC,EAAgB,WAClB,IAAIC,EAAY92D,KAAK0J,MAKjBktD,GAFJE,GADAA,GAAYA,EADA9qD,MAAM8qD,CAAS,EAAI,EAAIA,GACXxuD,EAAQgR,IAAMhR,EAAQgR,IAAMw9C,GAC5BxuD,EAAQ+N,IAAM/N,EAAQ+N,IAAMygD,IACpD92D,KAAK0J,MAAQotD,GACkBxuD,EAAQgR,MAAQhR,EAAQ+N,IAAM/N,EAAQgR,KAAO,IAAMo5B,GAClFz4B,EAAO28C,EAAY,EAAG,MAAM,CAC9B,EACAlB,EAAU9iD,SAAS,IAAM4hD,CAAgB,EAAE5hD,SAAS,OAAO,EAAEvO,GAAG,UAAW,SAASM,GACjE,KAAdA,EAAEsS,UACHtS,EAAE2hB,eAAe,EACjBuwC,EAAczrD,KAAKpL,IAAI,EAE3B,CAAC,EAAEqE,GAAG,SAAUwyD,CAAa,CAC/B,EAGAnpD,EAAM1K,UAAUwJ,OAAS,WACXxM,KACIN,MAClB,EAGA6C,EAAOsS,OAAS,SAASvM,GACnBqP,EAAO,IAAIjK,EAAMpF,CAAO,EAC5B,OA7Ye,WACf,IAAIvE,EAAO/D,KACVsI,EAAUvE,EAAKrE,OAEhB,MAAO,CACLue,SAAU,SAASvU,EAAOnF,GAIxB,OAFAmF,GADAA,EAAQA,EAAQpB,EAAQ+N,IAAM/N,EAAQ+N,IAAM3M,GAC5BpB,EAAQgR,IAAMhR,EAAQgR,IAAM5P,EAC5CpB,EAAQoB,MAAQA,EACT3F,EAAKoxD,MAAM,MAAOzrD,EAAOnF,GAAS,CAAC,CAC5C,EACC7E,OAAQ4I,CACX,CACF,EAgYoB8C,KAAKuM,CAAI,CAC7B,EAEAnU,EAAQsU,EAAUvV,CAAM,CAC1B,CAAC,ECzaDkB,MAAMP,OAAO,CAAC,SAAU,OAAQ,SAASM,GACvC,aAEA,IAAIiB,EAAIhB,MAAMgB,EACVjD,EAAMiC,MAAMjC,IACZuJ,EAAOtH,MAAMsH,KAAK,EAElBsmD,EADS5tD,MAAMsG,OAAO,EACKe,OAAS,QAAU,YAG9CxI,EAAc,CAChB5C,OAAQ,GACP6E,MAAOd,MAAMnB,YAAemB,MAAMnB,YAAYiC,MAAQ,IAAS,EAG/DkT,IAAK,SAASnP,GACb,IAAIvE,EAAO/D,KAEX,OADA+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EACxCvE,CACT,EAGCM,GAAI,SAASmI,EAAQ9I,GACpB,OAAOD,MAAM8I,QAAQnB,KAAKpL,KAAM,cAAewM,EAAQ9I,CAAQ,CACjE,CACF,EAGIgU,EAAa,WACf,IACIpP,EADOtI,KACQN,OACfyH,EAAKmB,EAAQnB,GAIjB,OAFAuQ,EAAW3T,KAAKoD,GAJLnH,KAMJ,CACLN,OAAQ4I,CACV,CACF,EAGCwP,EAAW,cAAyDg2C,EAAO,oBAE3EluC,EAAY,0BAA2Bm3C,EAAmB,kBAAmBC,EAAoB,mBACjGC,EAAmB,iCAAkCC,EAAgB,8BAAuEC,EAAqB,gCACjKC,EAAe,0BAA2BC,EAAkB,kCAAmCC,EAAsB,iCAAkCC,EAAmB,iCAAkCC,EAAe,+BAG3NC,EAAW,SAASC,GACnB,IAAIC,EAAM,CAAC9I,EAAE,EAAGrT,EAAE,EAAG3vB,EAAE,CAAC,EACpBvS,EAAM9K,KAAK8K,IAAIo+C,EAAIE,EAAGF,EAAIG,EAAGH,EAAI7rC,CAAC,EAClCxV,EAAM7H,KAAK6H,IAAIqhD,EAAIE,EAAGF,EAAIG,EAAGH,EAAI7rC,CAAC,EAClCghC,EAAQx2C,EAAMiD,EAuBlB,OAtBAq+C,EAAI9rC,EAAIxV,EACRshD,EAAInc,EAAY,IAARnlC,EAAY,IAAIw2C,EAAMx2C,EAAM,EACvB,IAAVshD,EAAInc,EACFkc,EAAIE,GAAKvhD,EACVshD,EAAI9I,GAAK6I,EAAIG,EAAIH,EAAI7rC,GAAKghC,EACnB6K,EAAIG,GAAKxhD,EAChBshD,EAAI9I,EAAI,GAAK6I,EAAI7rC,EAAI6rC,EAAIE,GAAK/K,EAE9B8K,EAAI9I,EAAI,GAAK6I,EAAIE,EAAIF,EAAIG,GAAKhL,EAGhC8K,EAAI9I,EAAI,CAAC,EAERx4C,IAAQiD,IACTq+C,EAAI9I,EAAI,GAEV8I,EAAI9I,GAAK,GACN8I,EAAI9I,EAAI,IACT8I,EAAI9I,GAAK,KAEX8I,EAAInc,GAAK,IAAI,IACbmc,EAAI9rC,GAAK,IAAI,IACN8rC,CACT,EAeCG,EAAW,SAASH,GACnB,IAOMI,EAPFL,EAAM,GACN7I,EAAI8I,EAAI9I,EACRrT,EAAU,IAANmc,EAAInc,EAAM,IACd3vB,EAAU,IAAN8rC,EAAI9rC,EAAM,IAgBlB,OAfS,GAAN2vB,EACDkc,EAAIE,EAAIF,EAAIG,EAAIH,EAAI7rC,EAAIA,GAIpBmsC,EAAkBnJ,EAAI,KAFtBkJ,EAAKlsC,IACLosC,GAAM,IAAMzc,GAAK3vB,EAAG,MACO,IACjBgjC,EAAL,MAANA,EAAe,EACfA,GAAI,IAAK6I,EAAIE,EAAEG,EAAIL,EAAI7rC,EAAEosC,EAAIP,EAAIG,EAAEI,EAAGD,GACjCnJ,EAAI,KAAM6I,EAAIG,EAAEE,EAAIL,EAAI7rC,EAAEosC,EAAIP,EAAIE,EAAEG,EAAGC,GACvCnJ,EAAI,KAAM6I,EAAIG,EAAEE,EAAIL,EAAIE,EAAEK,EAAIP,EAAI7rC,EAAEosC,EAAGD,GACvCnJ,EAAI,KAAM6I,EAAI7rC,EAAEksC,EAAIL,EAAIE,EAAEK,EAAIP,EAAIG,EAAEE,EAAGC,GACvCnJ,EAAI,KAAM6I,EAAI7rC,EAAEksC,EAAIL,EAAIG,EAAEI,EAAIP,EAAIE,EAAEK,EAAGD,GACvCnJ,EAAI,KAAM6I,EAAIE,EAAEG,EAAIL,EAAIG,EAAEI,EAAIP,EAAI7rC,EAAEksC,EAAGC,IACzCN,EAAIE,EAAE,EAAGF,EAAIG,EAAE,EAAGH,EAAI7rC,EAAE,IAEzB,CAAC+rC,EAAEppD,KAAKqnD,MAAM6B,EAAIE,CAAC,EAAGC,EAAErpD,KAAKqnD,MAAM6B,EAAIG,CAAC,EAAGhsC,EAAErd,KAAKqnD,MAAM6B,EAAI7rC,CAAC,CAAC,CACvE,EAGCqsC,EAAW,SAASP,GACnB,IAAID,EAAMI,EAASH,CAAG,EAClBQ,EAAM,CACRT,EAAIE,EAAEt2D,SAAS,EAAE,EAChBo2D,EAAIG,EAAEv2D,SAAS,EAAE,EACjBo2D,EAAI7rC,EAAEvqB,SAAS,EAAE,GAOpB,OALAmD,EAAEH,KAAK6zD,EAAK,SAASC,EAAInqD,GACL,IAAfA,EAAIvN,SACLy3D,EAAIC,GAAM,IAAMnqD,EAEpB,CAAC,EACMkqD,EAAIzmD,KAAK,EAAE,CACpB,EAGC2mD,EAAS,SAASC,GAEbC,EAAKD,EAAK5yD,MADD,aACa,GAAK,GAC/B,MAAO,CAACkyD,EAAEW,EAAG,GAAIV,EAAEU,EAAG,GAAI1sC,EAAE0sC,EAAG,EAAE,CACnC,EAECC,EAAO/zD,EAAE+I,MAAM,EACfugD,EAAOtpD,EAAEhF,QAAQ,EAGjBiO,EAAQ,SAASpF,GACLtI,KACNuE,MAAQ,EAAEjC,EAAYiC,MADhBvE,KAENN,OAAS+E,EAAEiE,OAAO,GAFZ1I,KAEqBN,OAAQ4C,EAAY5C,OAAQ4I,CAAO,EAFxDtI,KAGN6U,OAAO,CACd,EAGAnH,EAAM1K,UAAUtD,OAAS,CACvBklB,MAAO,GACNi/B,KAAM,KACN4U,MAAO,CAAA,EACPx/C,OAAQ,MACRy/C,UAAW,CAAA,EACXC,OAAQ,CACP,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,OAAQ,OAAQ,UAAU,UAC3F,UAAW,UAAW,UAAW,UAAW,mBAAoB,mBAAoB,mBAAoB,UAAW,iBAAkB,yBAA0B,2BAA4B,2BAEhM,EAGAjrD,EAAM1K,UAAU6R,OAAS,WACvB,IAAI9Q,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAInB,GAAiB,GAAdiO,EADQlJ,EAAE6D,EAAQqF,IAAI,GACjBjN,OAMN,OALA+C,MAAMa,KAAKqJ,EAAM,WACfrL,EAAYuS,OAAOpQ,EAAEiE,OAAO,GAAIJ,EAAS,CACvCqF,KAAM3N,IACR,CAAC,CAAC,CACJ,CAAC,EACM+D,EAITU,EAAEiE,OAAOJ,EAAS9G,EAAI8G,QAAQqF,EAAK,EAAE,CAAC,EAGtC,IAAIirD,EAAen0D,EAAE,CAAC,iDACnB,UAA6B,OAAlB6D,EAAQ2Q,QAAmB3Q,EAAQmwD,MACzC,4CACF,IAAK,IACN,gDACE,cAAiC,OAAlBnwD,EAAQ2Q,OAAmB3Q,EAAQmwD,MAAQ,OAAS,QAAW,IAAK,KACnF,WACKI,EAAQ,GACTvwD,EAAQsc,OACTi0C,EAAQvwD,EAAQsc,MAEuC,GAAnDtc,EAAQsc,MAAMlf,MAAM,aAAa,GAAK,IAAIhF,SACvC4H,EAAQmwD,OAA2B,OAAlBnwD,EAAQ2Q,SAC5B4/C,EAAQ,IAAMX,EAAST,EAASY,EAAO/vD,EAAQsc,KAAK,CAAC,CAAC,IAInD,eAAgBi0C,GAGlBA,GACJ,KACJ,qDAAsDvwD,EAAQsc,MAC3DmyC,EACFC,GAAoB,SACvB,UACF,UACF,UAAUtlD,KAAK,EAAE,CAAC,EAGnB/D,EAAOrF,EAAQqF,KAAOlJ,EAAE6D,EAAQqF,IAAI,EACpCrF,EAAQu7C,MAAQ+U,EAAa7lD,SAAS,qBAAsBzK,EAAQu7C,IAAI,EAGxEl2C,EAAKoF,SAAS,cAAc,EAAEa,KAC5B7P,EAAK60D,aAAeA,CACtB,EAGAtwD,EAAQnB,GAAK,OAAQmB,EAAUA,EAAQnB,GACrCwG,EAAKgB,KAAK,IAAI,GAAK5K,EAAKQ,MAI1BR,EAAK6gB,MAAQ7gB,EAAK60D,aAAahpD,KAAK,IAAKqnD,CAAgB,EAAE,GAAGrwD,MAAMkyD,WAGpE/0D,EAAKyI,OAAO,CACd,EAGAkB,EAAM1K,UAAU+1D,aAAe,WAC7B,IA4BU31C,EA5BNrf,EAAO/D,KACVsI,EAAUvE,EAAKrE,OACfk5D,EAAe70D,EAAK60D,aAAa,GAGjCI,EAAaj1D,EAAKi1D,WAAav0D,EAAE,CAAC,6BAA8BV,EAAKQ,MAAO,iBAAkBR,EAAKQ,MAAO,kEAExG,+CACE,wCACE,oDACA,oDACA,qDACF,SACA,uCACE,oDACF,SACF,SAGA,6CAA8C+D,EAAQmwD,MAnNzB,aAmNwC,IAAK,KACxE,gDACE,qDACF,SACF,SAIInwD,EAAQowD,WACLt1C,EAAO,CAAC,4CACZ3f,MAAMa,KAAKgE,EAAQqwD,OAAQ,SAASh4D,EAAGV,GACrCmjB,EAAK9d,KAAK,CAAC,qCAA8E,GAAvCrF,EAAEyF,MAAM,aAAa,GAAK,IAAIhF,OAC5E,iCACF,IAAK,KACJ,0BAA2BT,EAAG,WAChC,UAAUyR,KAAK,EAAE,CAAC,CACrB,CAAC,EACD0R,EAAK9d,KAAK,QAAQ,EACX8d,EAAK1R,KAAK,EAAE,GAEZ,GAKV,6CACE,6BACE,0CACF,SACA,oCACE,4GACA,4FACF,QACF,SACF,UAAUA,KAAK,EAAE,CAAC,EAEC3N,EAAK60D,aAAahpD,KAAK,IAAMqnD,CAAgB,EAAE,GAGhExyD,EAAEmb,CAAS,EAAE,IAAMnb,EAAEmb,CAAS,EAAE/W,KAAK,OAAO,GAAK9E,EAAKQ,MACvDR,EAAKk1D,aAAavrD,EAAMwrD,WAAW,GAEnCn1D,EAAKk1D,aAAavrD,EAAMwrD,WAAW,EACnCz0D,EAAE,MAAM,EAAEoL,OAAOmpD,CAAU,GAI7B12D,EAAYoe,OAASpY,EAAQnB,GAE7BuG,EAAMwrD,YAAcn1D,EAAKQ,MACzBmJ,EAAMyrD,UAAaP,EAAahyD,MAAMkyD,WAEtC/0D,EAAK+L,SAAS,EACd/L,EAAKq1D,aAAa,CACpB,EAGA1rD,EAAM1K,UAAUi2D,aAAe,SAAS10D,GACtC,IACI+D,EADOtI,KACQN,OACfiO,EAAOlJ,EAAE,sBAAuBF,GAFzBvE,KAEuCuE,MAAM,EAUxD,OARGoJ,EAAK,KACNA,EAAKhE,OAAO,EACZ,OAAOrH,EAAYoe,OAGM,YAAzB,OAAOpY,EAAQ2L,QAAwB3L,EAAQ2L,MATtCjU,KASiD4kB,KAAK,EATtD5kB,IAab,EAGA0N,EAAM1K,UAAU8M,SAAW,WACzB,IAAI/L,EAAO/D,KACVsI,EAAUvE,EAAKrE,OAKhB,OAJA8B,EAAIsO,SAAS/L,EAAKs1D,UAAYt1D,EAAK60D,aAAa,GAAI70D,EAAKi1D,WAAW,GAAI,CACtElpD,SAAUxH,EAAQwH,SACjBmB,MAAO,QACV,CAAC,EACMlN,CACT,EAGA2J,EAAM1K,UAAUiL,IAAM,WACpB,IAYM0pD,EAZF5zD,EAAO/D,KAGV44D,GAFU70D,EAAKrE,OAEAqE,EAAK60D,aAAahpD,KAAK,IAAMqnD,CAAgB,GAC5DqC,EAAkBv1D,EAAKi1D,WAAWppD,KAAK,IAAM4nD,CAAY,EAEzDhJ,EADIoK,EAAa,GACLhyD,MAAM2yD,gBAGhB/K,GAGGmJ,EAAMF,EAASY,EAAO7J,CAAO,CAAC,EACjCttD,EAAO03D,EAAajqD,KAAK,UAAU,EAGpC5K,EAAKmO,OAAOylD,EAAI9I,EAAG8I,EAAInc,EAAGmc,EAAI9rC,CAAC,EAGnB,UAAT3qB,EACDo4D,EAAgB1pD,KAAK,OAAO,EAAE3B,IAAIugD,CAAO,EACxB,SAATttD,GACJw2D,EAAMW,EAAO7J,CAAO,EAG2B,KAA/CA,EAAQ9oD,MAAM,aAAa,GAAK,IAAIhF,QACtC44D,EAAgB1pD,KAAK,OAAO,EAAE3B,IAAI,QAASypD,EAAIE,EAAG,KAAMF,EAAIG,EAAG,KAAMH,EAAI7rC,EAAG,MAAM,EAClF9nB,EAAKi1D,WAAWppD,KAAK,IAAK0nD,CAAmB,EAAElkD,IAAI,OAAQ,GAAG,IAE9DkmD,EAAgB1pD,KAAK,OAAO,EAAE3B,IAAIugD,CAAO,EACrCr+C,EAAyE,IAAlEq+C,EAAQjpD,MAAMipD,EAAQztD,YAAY,GAAG,EAAI,EAAGytD,EAAQ9tD,OAAS,CAAC,EACzEqD,EAAKi1D,WAAWppD,KAAK,IAAK0nD,CAAmB,EAAElkD,IAAI,OAAQjD,CAAI,GAIjEpM,EAAKi1D,WAAWppD,KAAK,IAAKynD,CAAe,EAAE,GAAGzwD,MAAMkyD,WAAa,kCAAmCpB,EAAIE,EAAG,KAAMF,EAAIG,EAAG,KAAMH,EAAI7rC,EAAG,aAAc6rC,EAAIE,EAAG,KAAMF,EAAIG,EAAG,KAAMH,EAAI7rC,EAAG,MAEpLytC,EAAgB1pD,KAAK,OAAO,EAAE3B,IAAI,IAAKiqD,EAASP,CAAG,CAAC,IAItD5zD,EAAKmO,OAAO,EAAE,IAAI,GAAG,EACrBonD,EAAgB1pD,KAAK,OAAO,EAAE3B,IAAI,EAAE,EACpClK,EAAKi1D,WAAWppD,KAAK,IAAKynD,CAAe,EAAE,GAAGzwD,MAAMkyD,WAAa,GACjE/0D,EAAKi1D,WAAWppD,KAAK,IAAK0nD,CAAmB,EAAElkD,IAAI,OAAQ,GAAG,EAElE,EAGA1F,EAAM1K,UAAUw2D,KAAO,WACrB,IAAIz1D,EAAO/D,KACVsI,EAAUvE,EAAKrE,OAEfgkB,EAAO3f,EAAK60D,aAAahpD,KAAK,IAAMqnD,CAAgB,EACpD/1D,EAAOwiB,EAAK/U,KAAK,UAAU,EAE3B6qD,EAAOz1D,EAAKi1D,WAAWppD,KAAK,yBAAiB,EAC7CrN,EAASwB,EAAKi1D,WAAWppD,KAAK,IAAMunD,CAAkB,EACtDsC,EAAQ11D,EAAKi1D,WAAWppD,KAAK,IAAMwnD,CAAY,EAC/C9yC,EAASvgB,EAAKi1D,WAAWppD,KAAK,IAAM2nD,CAAgB,EACpDmC,EAAa31D,EAAKi1D,WAAWppD,KAAK,IAAMynD,CAAe,EACvDsC,EAAc51D,EAAKi1D,WAAWppD,KAAK,IAAM0nD,CAAmB,EAE5DsC,EAAKr3D,EAAO,GAAGwlD,UAAU,IAAI,IAC7B8R,EAAK,KAAOv1C,EAAO,GAAGyjC,UAAY,GAAG,IAAI,IACzC+R,GAAMx1C,EAAO,GAAG0jC,WAAa,GAAG,IAAI,IACpC+R,EAAKvrD,KAAKqnD,MAAM8D,EAAY,GAAG3R,WAAW,IAAI,GAAG,EAAE,IAEnDrnD,EAAIoD,EAAK60D,aAAahpD,KAAK,IAAMsnD,CAAa,EAC9C8C,EAAMj2D,EAAKi1D,WAAWppD,KAAK,wBAAwB,EAAEgD,SAAS,KAAK,EAEnEqH,EAAS,SAASggD,EAAEC,EAAEC,EAAEvuC,GACvB7nB,EAAKmO,OAAO+nD,EAAGC,EAAGC,CAAC,EACnB,IAAIzC,EAAMI,EAAS,CAACjJ,EAAEoL,EAAGze,EAAE0e,EAAGruC,EAAEsuC,CAAC,CAAC,EAC9Bv1C,EAAQszC,EAAS,CAACrJ,EAAEoL,EAAGze,EAAE0e,EAAGruC,EAAEsuC,CAAC,CAAC,EAChCjF,EAAYnxD,EAAKi1D,WAAWppD,KAAK,IAAM4nD,CAAY,EAAE5nD,KAAK,OAAO,EAErEjP,EAAEoS,SAASgkD,CAAgB,EAAE9jD,YAAY+jD,CAAiB,EAC1DtzC,EAAK,GAAG9c,MAAMkyD,WAAa,OAAQpB,EAAIE,EAAG,KAAMF,EAAIG,EAAG,KAAMH,EAAI7rC,EAAG,IAExD,UAAT3qB,EACDg0D,EAAUjnD,IAAI,OAAQypD,EAAIE,EAAG,KAAMF,EAAIG,EAAG,KAAMH,EAAI7rC,EAAG,GAAG,EACxC,SAAV3qB,GAERy4D,EAAYvmD,IAAI,OADD,IAAJwY,CACiB,EAC5BspC,EAAUjnD,IAAI,QAASypD,EAAIE,EAAG,KAAMF,EAAIG,EAAG,KAAMH,EAAI7rC,EAAG,KAAMD,EAAG,GAAG,EACpElI,EAAK,GAAG9c,MAAMkyD,WAAa,QAASpB,EAAIE,EAAG,KAAMF,EAAIG,EAAG,KAAMH,EAAI7rC,EAAG,KAAMD,EAAG,IAC9E8tC,EAAW,GAAG9yD,MAAMkyD,WAAa,kCAAmCpB,EAAIE,EAAG,KAAMF,EAAIG,EAAG,KAAMH,EAAI7rC,EAAG,aAAc6rC,EAAIE,EAAG,KAAMF,EAAIG,EAAG,KAAMH,EAAI7rC,EAAG,MAEpJqpC,EAAUjnD,IAAI,IAAK2W,CAAK,EAI1Btc,EAAQ2R,QAAU3R,EAAQ2R,OAAOlW,EAAKi1D,WAAWppD,KAAK,IAAM4nD,CAAY,EAAE5nD,KAAK,OAAO,EAAE3B,IAAI,CAAC,CAC/F,EAGCqoD,EAAW7xD,EAAE,CAAC,yEAAyEiN,KAAK,EAAE,CAAC,EAC/F0oD,EAAiB,SAAShvD,GACzB3G,EAAE,yBAAyB,EAAE,IAAMA,EAAE,MAAM,EAAEoL,OAAOymD,CAAQ,EAC5DA,EAASjyD,GAAG,YAAa+G,CAAI,EAC7BkrD,EAASjyD,GAAG,UAAW,WACrBiyD,EAAS3sD,OAAO,CAClB,CAAC,EAAEtF,GAAG,aAAc,WAClBiyD,EAAS3sD,OAAO,CAClB,CAAC,CACH,EAGApH,EAAO8B,GAAG,YAAa,SAASM,GAC9B,IAAI01D,EAASr6D,KAAK+nD,UACjBuS,EAAO31D,EAAE8L,QAYV2pD,EAXW,SAASz1D,GAClB,IAAIyL,EAAMiqD,GAAU11D,EAAE8L,QAAU6pD,GAC/BC,EAAOf,EAAK,GAAGxoD,aAGZ69C,GADUz+C,EAALmqD,GADEnqD,EAARA,EAAM,EAAQ,EACdA,GAAiBmqD,EACZnqD,GAAI,IAAI,IAEhB6J,EADA2/C,EAAK/K,EACKiL,EAAID,EAAIE,CAAE,EACpBp1D,EAAE2hB,eAAe,CACnB,CAEmB,EAEnB3hB,EAAE2hB,eAAe,CACnB,CAAC,EAEDkzC,EAAKn1D,GAAG,QAAS,SAASM,GACxB,IAAIyL,EAAMzL,EAAE8L,QAAUhM,EAAEzE,IAAI,EAAEqiD,OAAO,EAAEjyC,IAAMooD,EAAKj0C,UAAU,EAGxDsqC,GADwBz+C,GADjBA,EAARA,EAAM,EAAQ,EACdA,GAAMpQ,KAAKgR,aAAoBhR,KAAKgR,aAC/BZ,GAAI,IAAI,IAEhB6J,EADA2/C,EAAK/K,EACKiL,EAAID,EAAIE,CAAE,EACpBp1D,EAAE2hB,eAAe,CACnB,CAAC,EAGDhC,EAAOjgB,GAAG,YAAa,SAASM,GAC9B,IAAI01D,EAASr6D,KAAK+nD,UACjB0O,EAAUz2D,KAAKgoD,WACfsS,EAAO31D,EAAE8L,QACTimD,EAAO/xD,EAAE6L,QAiBV/M,MAAM0I,MAAMxH,CAAC,EACby1D,EAjBW,SAASz1D,GAClB,IAAIyL,EAAMiqD,GAAU11D,EAAE8L,QAAU6pD,GAC/BnqD,EAAOsmD,GAAW9xD,EAAE6L,QAAUkmD,GAC9B6D,EAAOd,EAAM,GAAGzoD,aAAe,EAC/BwpD,EAAOf,EAAM,GAAG3oD,YAAc,EAK3B0qC,IADWrrC,EAALqqD,GADGrqD,EAAVA,EAAO,CAAC,EAAS,CAAC,EAClBA,GAAmBqqD,EACbrqD,GAAO,GAAG,IAAI,IACtB0b,EAAI,MAJSzb,EAALmqD,GADGnqD,EAATA,EAAM,CAAC,EAAQ,CAAC,EAChBA,GAAiBmqD,EAIRnqD,GAAM,GAAG,IAAI,IAGzB6J,EAAO2/C,EADPE,EAAKte,EADLqe,EAAKhuC,EAEYkuC,CAAE,EACnBp1D,EAAE2hB,eAAe,CACnB,CAEmB,EACnB3hB,EAAE2hB,eAAe,CACnB,CAAC,EAEDmzC,EAAMp1D,GAAG,YAAa,SAASM,GAC7B,IAAIyL,EAAMzL,EAAE8L,QAAUhM,EAAEzE,IAAI,EAAEqiD,OAAO,EAAEjyC,IAAM,EAAIooD,EAAKj0C,UAAU,EAC/DpU,EAAOxL,EAAE6L,QAAU/L,EAAEzE,IAAI,EAAEqiD,OAAO,EAAElyC,KAAO,EAAIqoD,EAAKpwB,WAAW,EAK5DoT,IAJQprC,EAATA,EAAM,CAAC,EAAQ,CAAC,EAChBA,GAAMpQ,KAAKgR,aAAe,IAAEZ,EAAMpQ,KAAKgR,aAAe,KAE1Bb,GADlBA,EAAVA,EAAO,CAAC,EAAS,CAAC,EAClBA,GAAOnQ,KAAK8Q,YAAc,EAAS9Q,KAAK8Q,YAAc,EAChDX,GAAO,GAAG,IAAI,KACtB0b,EAAI,KAAOzb,EAAM,GAAG,IAAI,IAGzB6J,EAAO2/C,EADPE,EAAKte,EADLqe,EAAKhuC,EAEYkuC,CAAE,EACnBt2D,MAAM0I,MAAMxH,CAAC,EACbA,EAAE2hB,eAAe,EACjBhC,EAAO/K,QAAQ5U,EAAG,WAAW,CAC/B,CAAC,EAGDg1D,EAAYt1D,GAAG,YAAa,SAASM,GACnC,IAAI8xD,EAAUz2D,KAAKgoD,WAClB0O,EAAO/xD,EAAE6L,QAYV4pD,EAXW,SAASz1D,GAClB,IAAIwL,EAAOsmD,GAAW9xD,EAAE6L,QAAUkmD,GACjC8D,EAAOd,EAAW,GAAG5oD,YAGlB8a,GADM4uC,GADErqD,EAATA,EAAO,EAAS,EAChBA,KAAYA,EAAOqqD,GACdhsD,KAAKqnD,MAAM1lD,EAAM,IAAI,GAAG,EAAG,KAEnC8J,EAAO2/C,EAAIE,EAAID,EADfE,EAAKnuC,CACe,EACpBjnB,EAAE2hB,eAAe,CACnB,CAEmB,EACnB3hB,EAAE2hB,eAAe,CACnB,CAAC,EACDozC,EAAWr1D,GAAG,QAAS,SAASM,GAC9B,IAAIwL,EAAOxL,EAAE6L,QAAU/L,EAAEzE,IAAI,EAAEqiD,OAAO,EAAElyC,KAGpCyb,IAFQzb,EAATA,EAAO,EAAS,EAChBA,GAAOnQ,KAAK8Q,cAAYX,EAAOnQ,KAAK8Q,aAC/BtC,KAAKqnD,MAAM1lD,EAAM,IAAI,GAAG,EAAG,KAEnC8J,EAAO2/C,EAAIE,EAAID,EADfE,EAAKnuC,CACe,EACpBjnB,EAAE2hB,eAAe,CACnB,CAAC,EAGD0zC,EAAI11D,KAAK,WACPG,EAAEzE,IAAI,EAAEqE,GAAG,QAAS,WAClBI,EAAEzE,IAAI,EAAEgwB,OAAO,wBAAwB,EAAEjd,SAAS,UAAU,EAAE6lB,SAAS,EAAE3lB,YAAY,UAAU,EAC/F,IAAI2R,EAAQ5kB,KAAK4G,MAAM2yD,gBACtB5B,EAAMF,EAASY,EAAOzzC,CAAK,CAAC,EAC5BgH,EAAIhH,EAAMrf,MAAMqf,EAAM7jB,YAAY,GAAG,EAAI,EAAG6jB,EAAMlkB,OAAS,CAAC,EAC7Dk5D,EAAKjC,EAAI9I,EACTiL,EAAKnC,EAAInc,EACTqe,EAAKlC,EAAI9rC,EACwC,KAA7CjH,EAAMlf,MAAM,aAAa,GAAK,IAAIhF,SAAckrB,EAAI,GACxDmuC,EAAKnuC,EAEL3R,EAAO09C,EAAI9I,EAAG8I,EAAInc,EAAGmc,EAAI9rC,EAAGD,CAAC,CAC/B,CAAC,CACH,CAAC,CACH,EAGAle,EAAM1K,UAAUkP,OAAS,SAAS28C,EAAGrT,EAAG3vB,EAAG3qB,GAC9BlB,KACQN,OADnB,IAEIy4D,EAAMD,EAAS,CAACrJ,EAAEA,EAAGrT,EAAE,IAAK3vB,EAAE,GAAG,CAAC,EAElC4uC,GADQvC,EAAS,CAACrJ,EAAEA,EAAGrT,EAAEA,EAAG3vB,EAAEA,CAAC,CAAC,EACtBgjC,EAAE,IAAI,KAChBz+C,EAAM,IAAMyb,EAAE,IAAI,IAAM,EACxB1b,EAAOqrC,EAAE,IAAI,IAAM,EANZx7C,KAQNg5D,WAAWppD,KAAK,IAAMunD,CAAkB,EAAE/jD,IAAI,MAAOqnD,CAAO,EARtDz6D,KASNg5D,WAAWppD,KAAK,IAAMwnD,CAAY,EAAE,GAAGxwD,MAAMkyD,WAAa,IAAMX,EAT1Dn4D,KAYNg5D,WAAWppD,KAAK,IAAM2nD,CAAgB,EAAEnkD,IAAI,CAC/ChD,IAAOA,EACND,KAAQA,CACX,CAAC,CAMH,EAEAzC,EAAM1K,UAAUo2D,aAAe,WAC7B,IAAIr1D,EAAO/D,KACVsI,EAAUvE,EAAKrE,OAEfg7D,EAAmB32D,EAAK60D,aAAahpD,KAAK,IAAMqnD,CAAgB,EAChEqC,EAAkBv1D,EAAKi1D,WAAWppD,KAAK,IAAM4nD,EAAe,QAAQ,EAEpE4B,EAAe,CAEdt+C,MAAO,SAAS1J,GACdspD,EAAiB,GAAG9zD,MAAMkyD,WAAY,GACtC/0D,EAAK60D,aAAahpD,KAAK,IAAMsnD,CAAa,EAAEjkD,YAAY8jD,CAAgB,EAAEhkD,SAASikD,CAAiB,EACpGjzD,EAAK6gB,MAAQ,GAEbtc,EAAQ8J,MAAQ9J,EAAQ8J,KAAK,EAAE,EAC/BrO,EAAKk1D,aAAa,CACpB,EAGCp+C,QAAS,SAASzJ,EAAO6I,GACxB,IACC0gD,EAIChD,EAzhBaQ,EAOfT,EA6gBIhuD,EAAQ4vD,EAAgBrrD,IAAI,EAIR,CAAC,EAAtBvE,EAAMpD,QAAQ,GAAG,GAClBqxD,EAAMF,EAASY,EAAO3uD,CAAK,CAAC,EAC5B3F,EAAKmO,OAAOylD,EAAI9I,EAAG8I,EAAInc,EAAGmc,EAAI9rC,CAAC,EAC/B6uC,EAAiB,GAAG9zD,MAAMkyD,WAAc6B,EAAa,IAAMzC,EAASP,CAAG,EAExB,GAA3CjuD,EAAMhE,MAAM,aAAa,GAAK,IAAIhF,QAAoD,SAAtCg6D,EAAiB/rD,KAAK,UAAU,IAC9EwB,EAAmE,IAA5DzG,EAAMnE,MAAMmE,EAAM3I,YAAY,GAAG,EAAI,EAAG2I,EAAMhJ,OAAS,CAAC,EACnEqD,EAAKi1D,WAAWppD,KAAK,IAAM0nD,CAAmB,EAAElkD,IAAI,OAAQjD,CAAI,EAEhEwqD,EADAD,EAAiB,GAAG9zD,MAAMkyD,WAAapvD,KA9hB7B,KADlByuD,EAAyB,CAAC,GADPA,EAoiBEzuD,GAniBXpD,QAAQ,GAAG,EAAS6xD,EAAIr3D,UAAU,CAAC,EAAIq3D,GAC1Cz3D,SAELy3D,GADI7pD,EAAM6pD,EAAInvD,MAAM,EAAE,GACZ,GAAGsF,EAAI,GAAGA,EAAI,GAAGA,EAAI,GAAGA,EAAI,GAAGA,EAAI,IAG3CopD,EAAM,CAACE,GADXO,EAAMzwD,SAASywD,EAAK,EAAE,IACF,GAAIN,GAAS,MAANM,IAAmB,EAAGtsC,EAAS,IAANssC,CAAe,EA6hB7DR,EA5hBCF,EAASC,CAAG,EA6hBbgD,EAAiB,GAAG9zD,MAAMkyD,WAAc6B,EAAa,IAAMzC,EAASP,CAAG,EACvE5zD,EAAK60D,aAAahpD,KAAK,IAAMsnD,CAAa,EAAEjkD,YAAY+jD,CAAiB,EAAEjkD,SAASgkD,CAAgB,GAGxF,WAAX98C,GACDlW,EAAKmO,OAAOylD,EAAI9I,EAAG8I,EAAInc,EAAGmc,EAAI9rC,EAAG5R,CAAM,EACvC3R,EAAQ2R,QAAU3R,EAAQ2R,OAAO0gD,CAAU,IAG7C52D,EAAK6gB,MAAQlb,EAEbpB,EAAQ8J,MAAQ9J,EAAQ8J,KAAK1I,CAAK,EAClC3F,EAAKk1D,aAAa,EACpB,CACF,EAGAl1D,EAAKi1D,WAAW30D,GAAG,QAAS,wBAAyB,WACnD,IAAI+M,EAAQ3M,EAAEzE,IAAI,EACjB46D,EAAYxpD,EAAMzC,KAAK,oBAAoB,EAC5CyqD,EAAawB,IAAcxB,EAAawB,GAAWxvD,KAAKpL,KAAMoR,CAAK,CACrE,CAAC,EAGDkoD,EAAgBj1D,GAAG,QAAS,SAASM,GACnC,IAAIyM,EAAQ3M,EAAEzE,IAAI,EAClBo5D,EAAav+C,QAAQzP,KAAKpL,KAAMoR,EAAqB,KAAdzM,EAAEsS,QAAkB,KAAO,QAAQ,CAC5E,CAAC,CACH,EAGAvJ,EAAM1K,UAAUwJ,OAAS,WACvB,IAAIzI,EAAO/D,KACG+D,EAAKrE,OAGnBqE,EAAK60D,aAAav0D,GAAG,QAAU,WAC7BN,EAAKg1D,aAAa,EACft0D,EAAEmb,CAAS,EAAE,KACd7b,EAAKkK,IAAI,EACTlK,EAAKy1D,KAAK,EAEd,CAAC,CACH,EAKEzL,EAAK1pD,GAAGgtD,EAAkB,SAAS1sD,GACjC,IACIZ,EAGAuE,EACAoyD,EALAp4D,EAAYoe,SACZ3c,EAAO2T,EAAWmB,QAAQvW,EAAYoe,MAAM,KAG5CpY,EAAUvE,EAAKrE,OACfg7D,EAAmB32D,EAAK60D,aAAahpD,KAAK,IAAMqnD,CAAgB,EAGjExyD,EAAEE,EAAEyJ,MAAM,EAAE8E,SAAS46C,CAAI,GACvBrpD,EAAEE,EAAEyJ,MAAM,EAAE8rB,QAAQ,IAAI4zB,CAAI,EAAE,IAIhCrpD,EAAEE,EAAEyJ,MAAM,EAAE8E,SAAS0M,EAAU/Z,QAAQ,MAAO,EAAE,CAAC,GAC/CpB,EAAEE,EAAEyJ,MAAM,EAAE8rB,QAAQta,CAAS,EAAE,IAGhC7b,EAAKi1D,aAENj1D,EAAK6gB,OACF+yC,EAAMF,EAASY,EAAOt0D,EAAK6gB,KAAK,CAAC,EACrC7gB,EAAKmO,OAAOylD,EAAI9I,EAAG8I,EAAInc,EAAGmc,EAAI9rC,CAAC,GAE/B9nB,EAAK60D,aAAahpD,KAAK,IAAMsnD,CAAa,EAAEjkD,YAAY8jD,CAAgB,EAAEhkD,SAASikD,CAAiB,EAEtG0D,EAAiB,GAAG9zD,MAAMkyD,WAAa/0D,EAAK6gB,OAAS,GAG3B,YAA1B,OAAOtc,EAAQi8C,QAAyBj8C,EAAQi8C,OAAOxgD,EAAK6gB,KAAK,EAGjE7gB,EAAKk1D,aAAa,GACpB,CAAC,EAGDT,EAAKn0D,GAAG,SAAU,WAChB,GAAI/B,EAAYoe,OAAhB,CACA,IAAI3c,EAAO2T,EAAWmB,QAAQvW,EAAYoe,MAAM,EAChD,GAAI3c,EAEJ,MAAG,EAACA,CAAAA,EAAKi1D,YAAgBv0D,CAAAA,EAAEmb,CAAS,EAAE,KAGtC7b,KAAAA,EAAK+L,SAAS,CAPgB,CAQhC,CAAC,EAIH4H,EAAW3T,KAAO,GAGlB2T,EAAWmB,QAAU,SAAS1R,GAC5B,IAAIpD,EAAO2T,EAAW3T,KAAKoD,GAE3B,OADIpD,GAAMgH,EAAK/J,MAAMmG,EAAM2Q,EAAU,sBAAwB3Q,EAAI,cAAkB,sBAAsB,EAClGpD,CACT,EAGAzB,EAAYuS,OAAS,SAASvM,GACxBqP,EAAO,IAAIjK,EAAMpF,CAAO,EAC5B,OAAOoP,EAAWtM,KAAKuM,CAAI,CAC7B,EAEAnU,EAAQsU,EAAUxV,CAAW,CAC/B,CAAC,ECruBDmB,MAAMP,OAAO,SAAU,SAASM,GAC9B,aAEA,IAAIiB,EAAIhB,MAAMgB,EAEVsF,GADOtG,MAAMsH,KAAK,EACTtH,MAAMsG,OAAO,GAEtB+N,EAAW,UACXC,EAAO,aACP8iD,EAAO,aACPC,EAAQ,mBAERC,EAAU,WACZ/6D,KAAKN,OAAS,EAChB,EA0FIs7D,GAvFJD,EAAQ/3D,UAAUyU,IAAM,SAASnP,GAG/B,OADA7D,EAAEiE,OAAO,CAAA,EADE1I,KACSN,OAAQ4I,CAAO,EADxBtI,IAGb,EAGA+6D,EAAQ/3D,UAAUqB,GAAK,SAASmI,EAAQ9I,GACtC,OAAOD,MAAM8I,QAAQnB,KAAKpL,KAAM8X,EAAUtL,EAAQ9I,CAAQ,CAC5D,EAGAq3D,EAAQ/3D,UAAUi4D,OAAS,SAASvuD,EAAQpE,GAC1C,IAKM4yD,EALFC,EAAU12D,EAAE,yBAA0BiI,EAAQ,GAAG,EACjD0uD,EAAUD,EAAQvoD,SAASkoD,CAAK,EAChCO,EAAUD,EAAQxoD,SAAS,gBAAgB,EAC3C43C,EAAW2Q,EAAQvoD,SAAS,oBAAoB,EAChDoR,EAAK,OACHk3C,EAAU,GACdz3D,MAAMa,KAAKgE,EAAS,SAASC,EAAKmB,GAC7B,oBAAoB3E,KAAKwD,CAAG,GAC/B2yD,EAAQ51D,KAAK,OAAQiD,EAAK,KAAMmB,EAAO,GAAG,CAC5C,CAAC,EACmB,EAAjBwxD,EAAQx6D,QAAYw6D,EAAQ5pC,QAAQ,EAAE,EAClC4pC,EAAQxpD,KAAK,GAAG,GACpB,KAAMpJ,EAAQuX,OAAS,YAAa,QASzC,OAPAw7C,EAAQ,GAAKA,EAAQ3vB,OAAO1nB,CAAE,EAAIo3C,EAAQvrD,OAAOmU,CAAE,EACnDwmC,EAAS36C,OAAO,gCAAiCvH,EAAQsP,SAAW,IAAK,QAAQ,EAGjFtP,EAAQ2R,QAAUja,KAAKs7D,UAAU5uD,EAAQpE,EAAQnB,EAAE,EACnDi0D,EAAQvyD,KAAK,iBAAkBP,EAAQ2R,MAAM,EAC7C7O,EAAKmwD,QAAQjzD,EAAQ2R,OAAS,SAAW,IAAI,EACtCja,IACT,EAGA+6D,EAAQ/3D,UAAUw4D,UAAY,SAAS9uD,EAAQ+uD,GAGzCC,EAFUj3D,EAAE,yBAA0BiI,EAAQ,GAAG,EAC/BkG,SAASkoD,CAAK,EACflrD,KAAK,eAAgB6rD,EAAO,IAAI,EAErD,OADArwD,EAAKowD,UAAU,KAAME,CAAM,EACpB17D,IACT,EAGA+6D,EAAQ/3D,UAAUs4D,UAAY,SAAS5uD,EAAQ+uD,GAGzCC,EAFUj3D,EAAE,yBAA0BiI,EAAQ,GAAG,EAC/BkG,SAASkoD,CAAK,EACflrD,KAAK,eAAgB6rD,EAAO,IAAI,EAKrD,OAHArwD,EAAKuwD,SAASvwD,KAAKswD,EAAO,GAAI,CAC5BA,OAAQA,CACV,CAAC,EACM17D,IACT,EAGA+6D,EAAQ/3D,UAAUuoD,IAAM,SAASjjD,GAC/BA,EAAUA,GAAW,GACrBszD,EAAIv3D,GAAG,QAASiE,EAAQuzD,WAAY,SAASl3D,GAC3C,IAAIJ,EAAQE,EAAEzE,IAAI,EAAEuE,MAAM,EAC1B6G,EAAKuwD,SAASvwD,KAAKpL,KAAM,CACvBuE,MAAOA,EACP+D,QAASA,CACX,CAAC,CACH,CAAC,CACH,EAIAyyD,EAAQ/3D,UAAUs5B,SAAW,SAAS5vB,EAAQ6lC,GAC5C,IAAIub,EAAO,iBAEPQ,EADO7pD,EAAE,IAAKqpD,EAAM,eAAgBphD,EAAQ,GAAG,EAChCkD,KAAK,IAAKk+C,EAAM,MAAM,EACrCt+C,EAAO8+C,EAAQ1+C,KAAK,IAAKk+C,EAAM,OAAO,EAQ1C,OANAQ,EAAQl7C,IAAI,QAAS,WACnB,MAAO,WAAWrO,KAAKwtC,CAAO,EACY,IAArC,IAAIhhC,SAAS,UAAWghC,CAAO,EAAE,EAAW,IAChDA,CACH,CAAC,EAAE5jC,KAAK,cAAe4jC,CAAO,EAC9B/iC,EAAKA,KAAK+iC,CAAO,EACVvyC,IACT,EAEe,cACX87D,EAAW,iBACXC,EAAU,gBACVC,EAAW,iBACXC,EAAY,kBAEZC,EAAW,iBAEXC,EAAW,8BAGX/wD,EAAO,CAETuwD,SAAU,SAAS1yD,GAEjB,IAAIX,GADJW,EAAMA,GAAO,IACKX,SAAW,GACzB8I,EAAQnI,EAAIyyD,QAAUj3D,EAAEzE,IAAI,EAC5Bk6B,EAAU5xB,EAAQuzD,WAClBzqD,EAAM4e,OAAO,EACf5e,EAAM8oB,QAAQ,YAAY,EAAE7R,GAAG,CAAC,EAC9BnkB,EAAOoE,EAAQ8zD,SACf33D,EAAE6D,EAAQ8zD,QAAQ,EACpBliC,EAAQtnB,SAAS,oBAAoB,EAAEA,SAAS,iBAAiB,EAC/DypD,EAAQjrD,EAAMxB,KAAK,GAAG,EACtB0sD,EAAgC,iBAAvBD,EAAM1tD,KAAK,MAAM,GAAiD,WAAzB0tD,EAAM1tD,KAAK,QAAQ,EACrE4tD,EAAiD,UAAtC,OAAOnrD,EAAMzC,KAAK,cAAc,EAC3CjC,EAASwtB,EAAQvrB,KAAK,YAAY,EAGlCpK,EAAQ,UAAW0E,EACnBA,EAAI1E,MACN6M,EAAM4e,OAAO,EAAEpd,SAAS,IAAI,EAAErO,MAAM6M,CAAK,EAGtCkrD,GAAUC,IACbnrD,EAAM2B,SAASgF,CAAI,EAAE6gB,SAAS,EAAE3lB,YAAY8E,CAAI,EAChD7T,EAAKmkB,GAAG9jB,CAAK,EAAEwO,SAAS8nD,CAAI,EAAEjiC,SAAS,EAAE3lB,YAAY4nD,CAAI,GAG3Dp3D,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,OAAQpL,EAAQ,IAAK,CACpDiB,KAAMusB,EACN31B,MAAOA,CACT,CAAC,CACH,EAGCi3D,UAAW,SAAS72D,EAAGyM,GACtB,IAAI4S,EAAK5S,GAAS3M,EAAEzE,IAAI,EAAEgwB,OAAO,EAC7BzrB,EAAQyf,EAAGgM,OAAO,EAAEpd,SAAS,IAAI,EAAErO,MAAMyf,CAAE,EAC3Cm3C,EAAUn3C,EAAG4V,QAAQ,YAAY,EACjC11B,EAAOi3D,EAAQvoD,SAAS,oBAAoB,EAAEA,SAAS,iBAAiB,EACxElG,EAASyuD,EAAQxsD,KAAK,YAAY,EAEnCqV,EAAG9Q,SAAS6E,CAAI,IACbiM,EAAGnO,KAAK,EAAE,IAAMmO,EAAGnO,KAAK,EAAE8iB,GAAG,IAAI,EACnCvtB,EAAKuwD,SAASvwD,KAAK4Y,EAAGnO,KAAK,EAAE,GAAI,CAC/BtR,MAAOA,EAAQ,CACjB,CAAC,EACQyf,EAAGpO,KAAK,EAAE,IAAMoO,EAAGpO,KAAK,EAAE+iB,GAAG,IAAI,GAC1CvtB,EAAKuwD,SAASvwD,KAAK4Y,EAAGpO,KAAK,EAAE,GAAI,KAAMrR,EAAQ,CAAC,GAIpDyf,EAAGra,OAAO,EACVzF,EAAKmkB,GAAG9jB,CAAK,EAAEoF,OAAO,EACtBtE,WAAW,WACT+F,EAAKmwD,QAAQ,CACf,EAAG,EAAE,EAEL93D,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,aAAcpL,EAAQ,IAAK,CAC1DiB,KAAMwtD,EACN52D,MAAOA,CACT,CAAC,CACH,EAGCg3D,QAAS,SAAS5H,GACjB,IACI6I,EAAO,iBACPC,EAAM,gBACNC,EAAQ,kBACR34D,EAAO/D,KAEXyE,EAAE,YAAY,EAAEH,KAAK,WACnB,IA2ByDoP,EA3BrDtC,EAAQ3M,EAAEzE,IAAI,EACd6f,EAAQzO,EAAMwB,SAAS,kBAAkB,EAEzC+pD,GADOvrD,EAAMwB,SAAS,oBAAoB,EAAEA,SAAS,iBAAiB,EAC9D,uBACR8Q,EAAOjf,EAAE,8CAA+Ck4D,EAAO,OAAQA,EAAO,yCAAyC,EAExH54D,IAASyJ,QAAUzD,EAAOU,GAK1B2G,EAAMzC,KAAK,gBAAgB,GAC5BkR,EAAMjQ,KAAK,IAAI,EAAEtL,KAAK,WACpB,IAEM2P,EAFF+P,EAAKvf,EAAEzE,IAAI,EACXgkB,EAAGpU,KAAK,IAAI8sD,CAAK,EAAE,MACjBzoD,EAAQxP,EAAE,wDAAyDi4D,EAAO,QAAQ,GAChFr4D,GAAG,QAAS+G,EAAKowD,SAAS,EAChCx3C,EAAGnU,OAAOoE,CAAK,EAEnB,CAAC,EAGoC,UAApC,OAAO7C,EAAMzC,KAAK,YAAY,IAI/BkR,EAAM2gB,KAAK,aAAa,EAAI3gB,EAAM4nC,WAAW,EAAI,GAC/C5nC,EAAMjQ,KAAK,IAAI,EAAElP,QAAUmf,EAAMnM,OAAO,GAAaA,EAEnDmM,EAAMjQ,KAAK,IAAI,EAAEyY,GAAG,CAAC,EAAE3U,OAAO,GADdA,EAAO,GAMd,WAAXigD,GAAuB9zC,EAAMhX,KAAK,gBAAgB,GAC/CgX,EAAM9M,SAASypD,CAAI,EAErB38C,EAAMjQ,KAAK,IAAI6sD,CAAG,EAAE,KACvB58C,EAAMhQ,OAAO6T,CAAI,EACjBtS,EAAMzC,KAAK,WAAY,EAAE,EAGzB+U,EAAKrf,GAAG,QAAS,SAASM,GACxB,IAAIi4D,EAAW/8C,EAAM3M,SAASspD,CAAI,EAClC38C,EAAM+8C,EAAW,cAAgB,YAAYJ,CAAI,CACnD,CAAC,KAED38C,EAAMjQ,KAAK,IAAK6sD,CAAG,EAAE9yD,OAAO,EAC5ByH,EAAMuC,WAAW,UAAU,GAE/B,CAAC,CACH,EAECkpD,YAAa,SAASl4D,GACrB,IAAIm4D,EAAWr4D,EAAE,kBAAkB,EAC1B,CAAA,IAANE,GAAgD,YAAlCF,EAAEE,EAAEyJ,MAAM,EAAEO,KAAK,WAAW,IAC3CmuD,EAAS7pD,YAAY,gBAAgB,EACrC6pD,EAASltD,KAAK,gBAAgB,EAAEjB,KAAK,QAAQ,EAAE,EAEnD,EAuBCouD,UAAW,WACV,IAAI3rD,EAAQ3M,EAAEzE,IAAI,EACdk6B,EAAU9oB,EAAMwoB,QAAQohC,CAAQ,EAChCtuD,EAASwtB,EAAQvrB,KAAK,YAAY,EAClCqhB,EAAS5e,EAAM4e,OAAO,EACtBld,EAAQ1B,EAAMwnB,SAAS,IAAKqjC,CAAS,EACrCM,EAAkD,UAAvC,OAAOvsC,EAAOrhB,KAAK,cAAc,EAWhD,GAR6B,iBAAvByC,EAAMzC,KAAK,MAAM,GAAiD,WAAzByC,EAAMzC,KAAK,QAAQ,GAAoB4tD,GAC/EzpD,EAAM,KACTonB,EAAQtqB,KAAK,IAAKmI,CAAI,EAAE9E,YAAY8E,CAAI,EACxCiY,EAAOjd,SAASgF,CAAI,GAKpBmiB,EAAQhnB,SAAS8oD,CAAQ,EAAG,CAC9B,IAAIgB,EAAalB,EAAW,KACxBmB,EAAa,CAACjtC,EAAO9c,SAAS8pD,CAAU,EAIxC70D,EAAW,WACb1D,EAAEzE,IAAI,EAAEoT,IAAI,CACVo5B,QAAW,EACb,CAAC,EAEDtS,EAAQtnB,SAAS,IAAKmpD,CAAO,EAAE3oD,IAAI,CACjCnB,QAAS,CACX,CAAC,CACH,EAGA,GAAIa,EAAM6lB,GAAG,WAAW,EAAG,OAG3B7lB,EAAMG,YAAYkpD,CAAQ,EAGtBrpD,EAAM,KACJmqD,GAEFnqD,EAAMgjC,UAvBI,IAuBe3tC,CAAQ,EACjC6nB,EAAOjd,SAASiqD,CAAU,IAG1BhtC,EAAO/c,YAAY+pD,CAAU,EAC7BlqD,EAAM0G,KAAK,EAAEu8B,QA5BH,IA4BoB5tC,CAAQ,GAIK,UAAzC,OAAO+xB,EAAQvrB,KAAK,eAAe,GAAiD,QAA/BurB,EAAQvrB,KAAK,YAAY,KAC5EuuD,EAAaltC,EAAO4I,SAAS,IAAKokC,CAAU,GACrC/pD,YAAY+pD,CAAU,EACjCE,EAAWtqD,SAAS,IAAKqpD,CAAS,EAAEziD,KAAK,EAAEqmB,KAAK,EAAEkW,QAnCxC,IAmCyD5tC,CAAQ,GAGjF,CAEA1E,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,OAAQpL,EAAQ,IAAK0E,CAAK,CAC7D,EAGC+rD,SAAU,WACT,IAAI/rD,EAAQ3M,EAAEzE,IAAI,EACd6kD,EAAOzzC,EAAMxB,KAAK,mBAAmB,EACrC6O,EAAWrN,EAAMwnB,SAAS,sBAAsB,EAChDsB,EAAU9oB,EAAM8oB,QAAQ,iBAAiB,EAAE7R,GAAG,CAAC,EAC/C3b,EAASwtB,EAAQvrB,KAAK,YAAY,EAClCyuD,EAAqC,SAA5B3+C,EAASrL,IAAI,SAAS,EAGS,UAAzC,OAAO8mB,EAAQvrB,KAAK,eAAe,KAChC6K,EAAO0gB,EAAQtnB,SAAS,mBAAmB,EAAEA,SAAS,IAAIioD,CAAI,GAC7DjiC,SAAS,oBAAoB,EAAEhmB,SAAS,mBAAmB,EAAEgB,KAAK,UAAU,EACjF4F,EAAKvG,YAAY4nD,CAAI,GAGvBp8C,EAAS2+C,EAAS,WAAa,eAAevC,CAAI,EAClDhW,EAAKjxC,KAAKwpD,EAAS,WAAa,UAAU,EAE1C35D,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,YAAapL,EAAQ,IAAK,CACzDmT,MAAOzO,EACNwG,QAAS6G,EACTjF,KAAM4jD,CACT,CAAC,CACH,CACF,EAsNIh7D,GAFJ24D,EAAQ/3D,UAAU6R,OAjNlBkmD,EAAQ/3D,UAAU8V,KAAO,SAAS5X,EAAMwL,GACtC,IAAiB2wD,EACR3wD,EAAU,gBAAkBA,EAAQ,KAAQ,GAChD4wD,EAAQ,CAGX/R,IAAK,WACHngD,EAAKmwD,QAAQnwD,KAAK,EAAE,CACtB,EAGCmyD,IAAK,WACJ,IACIhpB,EAAQ,GACRipB,EAAY,GACZC,EAAU,GACVC,EAAY,kBA+DhBj5D,EAAEu2D,EAAWqC,CAAU,EAAE/4D,KAAK,SAASC,GACrC,IAAI6M,EAAQ3M,EAAEzE,IAAI,EACd29D,EAAMl5D,EAAE,gBAAiBs3D,EAAS,WAAW,EAC7C6B,EAAWxsD,EAAMxB,KAAK,IAAIksD,CAAQ,EAGjC1qD,EAAMxB,KAAK,IAAImsD,CAAO,EAAE,KAC3B3qD,EAAMvB,OAAO8tD,CAAG,GACdvsD,EAAM8B,SAAS8oD,CAAQ,EACrB4B,EAAShuD,KAAK,QAAS8tD,CAAS,EAChCE,GACFv5D,GAAG,aAAc,WACjBygD,CAxEO,SAAS6Y,EAAKJ,EAAKh5D,GAC9B,IAOQs5D,EAPJzsD,EAAQ3M,EAAEzE,IAAI,EACd8S,EAAQ1B,EAAMxB,KAAK,IAAIqsD,CAAS,EAGhCsB,EAAIrqD,SAAS8oD,CAAQ,EAElBlpD,EAAM,KACL+qD,EAAQzsD,EAAMwB,SAAS,IAAK8qD,CAAS,EACzCC,EAAIvqD,IAAI,CACNhD,IAAKgB,EAAMixC,OAAO,EAAEjyC,IAAMmtD,EAAIlb,OAAO,EAAEjyC,IACvCsD,QAASmqD,EAAM,GAAKA,EAAQzsD,GAAOu2C,YAAY,EAC/C11C,QAAS,CACX,CAAC,IAGHa,EAAMC,SAASopD,CAAQ,EAGnBrpD,EAAMI,SAlSF,mBAkSsB,GAC5BJ,EAAMM,IAAI,CACRjD,KAAM,EAAE2C,EAAM20C,WAAW,EAAIr2C,EAAMqC,MAAM,GAAK,CAChD,CAAC,EAICX,EAAM,GACR6qD,EAAIvqD,IAAI,CACNjD,KAAMwtD,EAAI7tD,SAAS,EAAEK,KAAOwtD,EAAIlqD,MAAM,EAAI,EAC1CA,MAAO,EACPxB,QAAS,CACX,CAAC,EAED0rD,EAAIvqD,IAAI,CACNjD,KAAMiB,EAAMtB,SAAS,EAAEK,KAAO0R,WAAWzQ,EAAMgC,IAAI,YAAY,CAAC,EAChEhD,IAAKgB,EAAMtB,SAAS,EAAEM,IAAMgB,EAAMsC,OAAO,EAAIiqD,EAAIjqD,OAAO,CAC1D,CAAC,EAIH6gC,EAAMhwC,GAASc,WAAW,WACxBs4D,EAAIvqD,IAAI,CACNK,MAAOX,EAAM,GAAK,EAAI1B,EAAMqC,MAAM,EAClCxB,QAASa,EAAM,GAAK,EAAI,CAC1B,CAAC,CACH,EAAG/I,EAAOU,IAAMV,EAAOU,GAAK,GAAK,EApD1B,GAoDkC,EAGzC4C,aAAaowD,EAAQl5D,EAAM,EACE,UAAzBuO,EAAMM,IAAI,SAAS,GACrB/F,aAAamwD,EAAUj5D,EAAM,EAE/Bi5D,EAAUj5D,GAASc,WAAW,WAC5ByN,EAAMC,SAAS8nD,CAAI,EACnBzpD,EAAMxB,KAAK,IAAIssD,CAAQ,EAAEnpD,SAASmpD,EAAS,GAAG,CAChD,EAAG,GAAG,EAEV,EAea9wD,KAAKpL,KAAM29D,EAAKvsD,EAAO7M,CAAK,CACrC,CAAC,EAAEF,GAAG,aAAc,WAEd+M,EAAM8B,SAAS8oD,CAAQ,EACzB2B,EAAIvqD,IAAI,CACNM,OAAQ,EACRzB,QAAS,CACX,CAAC,GAGD5E,aAAamwD,EAAUj5D,EAAM,EAC7Bi5D,EAAUj5D,GAASc,WAAW,WAC5B+L,EAAMxB,KAAK,IAAKqsD,CAAS,EAAEhpD,YAAY4nD,CAAI,EAC3CzpD,EAAMxB,KAAK,IAAKssD,CAAQ,EAAEjpD,YAAYipD,EAAU,GAAG,CACrD,EAAG,GAAG,EAEV,CAAC,EAGD9qD,EAAM/M,GAAG,aAAc,WACrBgJ,aAAaknC,EAAMhwC,EAAM,EACzBk5D,EAAQl5D,GAASc,WAAW,WACrB+L,EAAM8B,SAAS8oD,CAAQ,GAC1B2B,EAAIvqD,IAAI,CACNK,MAAO,EACPtD,KAAMwtD,EAAI7tD,SAAS,EAAEK,KAAOwtD,EAAIlqD,MAAM,EAAI,EAC1CxB,QAAS,CACX,CAAC,CAEL,EA5GK,GA4GE,CACT,CAAC,GAIH2rD,EAAShuD,KAAK,GAAG,EAAEtL,KAAK,WACtB,IAAIu5D,EAAQp5D,EAAEzE,IAAI,EACL69D,EAAM7tC,OAAO,EACd6tC,EAAMjlC,SAAS,IAAKqjC,CAAS,EAG/B,IAAM,CAAC4B,EAAMjrD,SAAS,IAAKspD,CAAQ,EAAE,IAC7C2B,EAAMhuD,OAAO,wCAAwCqsD,EAAU,QAAQ,EAGzE2B,EAAM/wD,IAAI,QAAS1B,EAAK2xD,SAAS,EAAE14D,GAAG,QAAS+G,EAAK2xD,SAAS,CAC/D,CAAC,CACH,CAAC,CACH,EAGCe,WAAY,WAGXr5D,EAFW,oBAEF44D,CAAU,EAAE/4D,KAAK,WACxB,IAAI8M,EAAQ3M,EAAEzE,IAAI,EACjB+9D,EAAW,gBACXC,EAAY5sD,EAAMzC,KAAKovD,CAAQ,GAAK,IACpCE,EAAQ7sD,EAAMxB,KAAK,GAAG,EACpBquD,EAAMpoD,KAAK,QAASkoD,EAAU,GAAG,EAAE,KACtCE,EAAM35D,KAAK,SAASC,GACfA,IAAU05D,EAAMv9D,OAAS,GAC5B+D,EAAEzE,IAAI,EAAE2rC,MAAM,SAAUoyB,EAAU,IAAKC,EAAW,SAAS,CAC7D,CAAC,EACD5sD,EAAMgC,IAAI,aAAc,SAAS,EACnC,CAAC,CACH,EAGCkpB,SAAU,WACT,IAAIwxB,EAAO,iBACXrpD,EAAE,IAAMqpD,EAAOuP,CAAU,EAAE/4D,KAAK,WAC9B,IAAI8M,EAAQ3M,EAAEzE,IAAI,EACjBsuD,EAAUl9C,EAAMxB,KAAK,qBAAqB,EAC1C2iC,EAAU+b,EAAQ3/C,KAAK,aAAa,EAErC2/C,EAAQl7C,IAAI,QAAS,WACnB,MAAO,WAAWrO,KAAKwtC,CAAO,EACY,IAArC,IAAIhhC,SAAS,UAAWghC,CAAO,EAAE,EAAW,IAChDA,CACH,CAAC,EAEEnhC,EAAMzC,KAAK,iBAAiB,GAC7BtJ,WAAW,WACTipD,EAAQ16C,KAAK,gBAAiBk6C,EAAM,UAAWvb,EAAS,SAAS,CACnE,EAAE,GAAG,CAET,CAAC,CACH,EAGC4qB,SAAU,WAGT14D,EAAE,kBAAa44D,CAAU,EAAE/4D,KAAK,WACfG,EAAEzE,IAAI,EAAE4P,KAAK,mBAAmB,EACtCtL,KAAK,WACZ,IAAI8M,EAAQ3M,EAAEzE,IAAI,EACjBk+D,EAAY9sD,EAAMxB,KAAK,oBAAoB,EAE3CwtD,EAAqC,SAD1BhsD,EAAMxB,KAAK,sBAAsB,EAC1BwD,IAAI,SAAS,EAGhC8qD,EAAUtuD,KAAK,mBAAmB,EAAEjG,OAAO,EAC3Cu0D,EAAUruD,OAAO,2CAA4CutD,EAAS,WAAa,YAAa,MAAM,EAGtGc,EAAUpxD,IAAI,QAAS1B,EAAK+xD,QAAQ,EAAE94D,GAAG,QAAS+G,EAAK+xD,QAAQ,CACjE,CAAC,CAEH,CAAC,CACH,CACF,EAEA,OAAOG,EAAMp8D,GAAQo8D,EAAMp8D,GAAM,EAAIuC,MAAMa,KAAKg5D,EAAO,SAAS/4D,EAAOL,GACrEA,EAAK,CACP,CAAC,CACH,EAIc,IAAI62D,GACda,EAAMn3D,EAAEhF,QAAQ,EAEpBgF,EAAE,WACArC,EAAQyS,OAAO,CACjB,CAAC,EAED+mD,EAAIv3D,GAAG,QAAS,sBAAuB+G,EAAKuwD,QAAQ,EAEpDl3D,EAAE+I,MAAM,EAAEnJ,GAAG,SAAU+G,EAAKmwD,OAAO,EAEnC/3D,EAAQsU,EAAU1V,CAAO,CAC3B,CAAC,ECxkBDqB,MAAMP,OAAO,CAAC,MAAO,SAAU,SAASM,GACtC,aAEA,IAAIiB,EAAIhB,MAAMgB,EACVjD,EAAMiC,MAAMjC,IACZC,EAAQgC,MAAMhC,MACdsI,EAAStG,MAAMsG,OAAO,EAGtB+N,EAAW,SACXw5C,EAAY,SAAUx5C,EAAU,SAGhChW,EAAS,CACXpC,OAAQ,GACR6E,MAAOd,MAAMqU,GAAarU,MAAMqU,GAAUvT,MAAQ,IAAS,EAE3DkT,IAAK,SAASnP,GACZ,IAAIvE,EAAO/D,KAEX,OADA+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EACxCvE,CACT,EAEAM,GAAI,SAASmI,EAAQ9I,GACnB,OAAOD,MAAM8I,QAAQnB,KAAKpL,KAAM8X,EAAUtL,EAAQ9I,CAAQ,CAC5D,CACF,EAGIgU,EAAa,WACf,IAAI3T,EAAO/D,KAEPmH,EADUpD,EAAKrE,OACFyH,GAIjB,MAAO,CACLrF,OAAQ,SAASq8D,GACfp6D,EAAKjC,OAAOsJ,KAAKrH,EAAMo6D,CAAK,CAC9B,EACAtmD,OAAQ,SAASvP,GACfvE,EAAK8T,OAAOzM,KAAKrH,EAAMuE,CAAO,CAChC,EACA5I,QATFgY,EAAW3T,KAAKoD,GAAMpD,GASPrE,MACf,CACF,EASI0+D,EAAY,oBACZC,EAAY,oBACZC,EAAc,sBACdC,EAAc,sBAEdC,EAAY,YAGZ9wD,EAAQ,SAASpF,GACnB,IAAIvE,EAAO/D,KACX+D,EAAKQ,MAAQ,EAAEzC,EAAOyC,MACtBR,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQoC,EAAOpC,OAAQ4I,CAAO,EAC9DvE,EAAK8Q,OAAO,CACd,EAGAnH,EAAM1K,UAAUtD,OAAS,CACvB++D,OAAQ,SACRC,KAAM,GACN3iD,KAAM,CAAA,EACN4iD,WAAY,GACZ76D,IAAK,GACL86D,MAAO,GACPC,MAAO,OACPC,WAAY,GACZtgB,OAAQ,OACR31C,KAAM,GACNk2D,KAAM,CAAA,EACNlb,KAAM,EACNoR,OAAQ,EACR+J,SAAU,CAAA,EACVxvD,KAAM,CACJyvD,eAAgB,0CAChBC,oBAAqB,iCACrBC,cAAe,GACfn+D,MAAS,GACTo+D,eAAgB,KAChBC,aAAc,IAChB,CACF,EAGA3xD,EAAM1K,UAAU6U,OAAS,SAASvP,GAChC,IAAIvE,EAAO/D,KACX+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EAC/CvE,EAAK8Q,OAAO,CAAA,CAAI,CAClB,EAGAnH,EAAM1K,UAAU6R,OAAS,SAAS29C,GAChC,IAAIzuD,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAGfiO,EAAOlJ,EAAE6D,EAAQqF,IAAI,EACzB,OAAkB,EAAdA,EAAKjN,QACP+C,MAAMa,KAAKqJ,EAAM,WACf7L,EAAO+S,OAAOpQ,EAAEiE,OAAO,GAAIJ,EAAS,CAClCqF,KAAM3N,IACR,CAAC,CAAC,CACJ,CAAC,EACM+D,IAITU,EAAEiE,OAAOJ,EAAS9G,EAAI8G,QAAQqF,EAAK,GAAI,CACrCgB,KAAMhB,EAAKgB,KAAK,UAAU,EAAI,WAAa,IAC7C,CAAC,CAAC,EAGE,CAAC6jD,GAAY7kD,EAAK,IAAMA,EAAK9E,KAAKyoD,CAAS,GACzC14C,EAAUlB,EAAWmB,QAAQlL,EAAK9E,KAAKyoD,CAAS,CAAC,GAG9C14C,EAAQf,OAAOvP,CAAO,EAFhB,KAAA,GAKfA,EAAQqF,KAAOlJ,EAAE6D,EAAQqF,IAAI,EAC7BrF,EAAQq2D,WAAal6D,EAAE6D,EAAQq2D,UAAU,EAGzCr2D,EAAQnB,GAAK,OAAQmB,EAAUA,EAAQnB,GACrCwG,EAAKgB,KAAK,IAAI,GAAK5K,EAAKQ,MAG1BR,EAAKmxB,KAAK,EARV5sB,KASAvE,EAAKyI,OAAO,GACd,EAGAkB,EAAM1K,UAAUkyB,KAAO,WACrB,IAAInxB,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACf4/D,EAAWv7D,EAAKu7D,SAAW76D,EAAE,CAC/B,iBAAkB25D,EAAW,yBAA0B91D,EAAQw2D,WAAY,WAAYx2D,EAAQu2D,MAAO,IACpGv2D,EAAQ02D,SAAW,YAAc,GAClC,KACDttD,KAAK,EAAE,CAAC,EACNmE,EAAOvN,EAAQqF,KAAKkI,KAAK,GAE1BA,EAAK3C,SAASkrD,CAAS,GAAKvoD,EAAK3C,SAASmrD,CAAS,IACpDxoD,EAAKlM,OAAO,EAIXI,EAAOU,IAAMV,EAAOU,GAAK,IAC1BnC,EAAQqF,KAAKq2B,KAAK,uCAAuC,EAG3DjgC,EAAKw7D,OAAO,GACVx7D,EAAKu7D,SAAWh3D,EAAQqF,KACxBrF,EAAQu2D,MAAQv2D,EAAQqF,KAAK,GAAGhH,MAC9B2B,EAAQqF,KAAKg+B,MAAM2zB,CAAQ,EAG5Bv1D,EAAOU,IAAMV,EAAOU,GAAK,IAC1B1G,EAAKy7D,OAAO,CAEhB,EAGA9xD,EAAM1K,UAAUw8D,OAAS,WACvB,IAeQ/zD,EAdJnD,EADOtI,KACQN,OACfysC,EAAS1nC,EAAE,eAAgB65D,EAAa,YAAaA,EAAa,WAAYA,EAAa,6BAA6B,EACxHmB,EAAWh7D,EAAE,CAAC,iBAAkB65D,EAAa,YAAaD,EAAW,wEAAyE/1D,EAAQxE,IAAK,KAC9J,WAAW4N,KAAK,EAAE,CAAC,EAGpBjN,EAAE,IAAK65D,CAAW,EAAE,IAAM75D,EAAE,MAAM,EAAEoL,OAAOs8B,CAAM,EAG7C7jC,EAAQqF,KAAKkI,KAAK,EAAE3C,SAASmrD,CAAS,IAV/Br+D,KAWJs/D,SAASt7B,KAAKy7B,CAAQ,EAG3Bn3D,EAAQqF,KAAKkI,KAAK,IAAKwoD,CAAS,EAAExuD,QAC5BpE,EAAM,GACVhI,MAAMa,KAAKgE,EAAQO,KAAM,SAASN,EAAKmB,GACrCA,EAAyB,YAAjB,OAAOA,EAAuBA,EAAM,EAAIA,EAChD+B,EAAInG,KAAK,8BAA+BiD,EAAK,YAAamB,EAAO,IAAI,CACvE,CAAC,EACM+B,EAAIiG,KAAK,EAAE,EACjB,EAEP,EAGAhE,EAAM1K,UAAU/B,IAAM,SAAS2W,GAC7B,OAAOnW,EAAMR,IAAI2W,EAAS,CACxBitC,KAAM,EACN51B,MAAO,CACT,CAAC,CACH,EAGAvhB,EAAM1K,UAAUu8D,OAAS,WACvB,IAAI5xD,EAAO3N,KAAKN,OAAOiO,KAAK,GAC5B,GAAIA,EACJ,MAA4C,UAArCA,EAAKoY,QAAQC,kBAAkB,GAA+B,SAAdrY,EAAKzM,IAC9D,EAGAwM,EAAM1K,UAAUkY,QAAU,SAASxX,GAE9B8J,OAAOkyD,YACRj8D,MAAMa,KAFGtE,KAEO2/D,YAAa,SAASp7D,EAAO2wB,GAC3C,IAAI0qC,EAAS,IAAIF,WACjBE,EAAOC,cAAc3qC,CAAI,EACzB0qC,EAAOx3D,OAAS,WACd1E,GAAYA,EAASa,EAAO2wB,EAAMl1B,KAAKuK,MAAM,CAC/C,CACF,CAAC,CAEL,EAGAmD,EAAM1K,UAAUlB,OAAS,SAASq8D,EAAOj9D,GACvC,IAqLI4xB,EAGErnB,EAgHA/K,EAmBAo/D,EA3TF/7D,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACf8P,EAAOlH,EAAQkH,MAAQ,GACvB8vD,EAAWv7D,EAAKu7D,SAAS,GAGzBS,EAAW,WACb,OAAO5B,GAASp6D,EAAKo6D,OAASp6D,EAAK47D,aAAeL,EAASnB,KAC7D,EAGI6B,EAAW,WACb,IAAIC,EAAa,EACbC,EAAS,EACT5C,EAAQyC,EAAS,EAGjBI,EAAU,WACT73D,EAAQ02D,UAAYiB,EAAaC,IAAWn8D,EAAKq8D,YACvB,YAA3B,OAAO93D,EAAQ63D,SAA0B73D,EAAQ63D,QAAQ,CACvDE,MAAOt8D,EAAKq8D,WACZH,WAAYA,EACZC,OAAQA,CACV,CAAC,CAEL,EAGII,EAAU,SAASC,GACrB,IAAIC,EAAW,IAAIC,SAGfC,EAAiB,SAASxrC,GACxBqrC,EAAKI,QACPl9D,MAAMa,KAAKg5D,EAAO,SAAS/4D,EAAO2wB,GAChC,OAAOA,EAAKspC,EACd,CAAC,EAED,OAAOtpC,EAAKspC,EAEhB,EAaA,GAVA/6D,MAAMa,KAAKgE,EAAQO,KAAM,SAASN,EAAKmB,GACrCA,EAAyB,YAAjB,OAAOA,EAAuBA,EAAM,EAAIA,EAChD82D,EAAS3wD,OAAOtH,EAAKmB,CAAK,CAC5B,CAAC,EAOG62D,EAAKI,QACPl9D,MAAMa,KAAKg5D,EAAO,SAAS/4D,EAAO2wB,GAC5BA,EAAKspC,KACTtpC,EAAKspC,GAAa,CAAA,EAClBgC,EAAS3wD,OAAOvH,EAAQu2D,MAAO3pC,CAAI,EACrC,CAAC,MACI,CACL,GAAIqrC,EAAKrrC,KAAKspC,GAAY,OAC1BgC,EAAS3wD,OAAOvH,EAAQu2D,MAAO0B,EAAKrrC,IAAI,EACxCqrC,EAAKrrC,KAAKspC,GAAa,CAAA,CACzB,CAGA,IAAIzuD,EAAO,CACTjM,IAAKwE,EAAQxE,IACb5C,KAAM,OACN2H,KAAM23D,EACN7lB,SAAUryC,EAAQqyC,UAAY,OAC9B2B,YAAa,CAAA,EACbD,YAAa,CAAA,EACbwC,QAASv2C,EAAQu2C,SAAW,GAC5BN,QAAS,SAASqiB,GAChBt4D,EAAQq4D,QAAWV,GAAcl8D,EAAKq8D,WAAcH,CAAU,GAC9D7tD,EAAKmuD,EAAKh8D,MAAOq8D,CAAG,EACpBT,EAAQI,EAAKh8D,KAAK,EAClBm8D,EAAeH,EAAKrrC,IAAI,CAC1B,EACAl0B,MAAO,SAAS2D,GACd2D,EAAQq4D,QAAWT,GAAUn8D,EAAKq8D,WAAcF,CAAM,GACtDn8D,EAAK9C,IAAIuO,EAAY,OAAK,CACxB,mCACA,YAAa7K,EAAE/E,QAAU,IAAK,OAAQ+E,EAAE05C,YAAc,UACtD3sC,KAAK,MAAM,CAAC,EACd1Q,EAAMu/D,EAAKh8D,KAAK,EAChB47D,EAAQI,EAAKh8D,KAAK,EAClBm8D,EAAeH,EAAKrrC,IAAI,CAC1B,CACF,EAG+B,YAA5B,OAAO5sB,EAAQg0B,WAChBvsB,EAAKuwC,IAAM,WACT,IAAIA,EAAM77C,EAAE62C,aAAagF,IAAI,EAQ7B,OANAA,EAAIx+C,OAAOyE,iBAAiB,WAAY,SAAU0C,GAChD,IACMspC,EADHtpC,EAAI43D,mBACDtuB,EAAU/jC,KAAK2H,MAAOlN,EAAI63D,OAAO73D,EAAIo3D,MAAQ,GAAG,EACpD/3D,EAAQg0B,SAASiW,GAAUjqC,EAAQpE,MAAyBoE,EAAQqF,MAAb,GAAwB1E,EAAKs3D,EAAKh8D,KAAK,EAElG,CAAC,EACM+7C,CACT,GAEF77C,EAAEu4C,KAAKjtC,CAAI,CACb,EAGGzH,EAAQq4D,QACTL,EAAQ,CACNK,QAAS,CAAA,EACTp8D,MAAO,CACT,CAAC,EAEDd,MAAMa,KAAKg5D,EAAO,SAAS/4D,EAAO2wB,GAChCorC,EAAQ,CACN/7D,MAAOA,EACP2wB,KAAMA,CACR,CAAC,CACH,CAAC,CAEL,EAGI6rC,EAAa,WACf,IAAI50B,EAAS1nC,EAAE,IAAK65D,CAAW,EAE/Bv6D,EAAKu7D,SAAStvC,OAAO,EAAEqF,OAAO,EAG9BihB,cAAc5oC,EAAM6mC,KAAK,EACzB7mC,EAAM6mC,MAAQ8B,YAAY,WACxB,IAAIuqB,EAAKI,EAAa70B,EAAO1S,SAAS,EAAE7pB,KAAK,MAAM,EACnD,IACEgxD,EAAMI,EAAWxxD,KAAK,CAKxB,CAJE,MAAM7K,GACNZ,EAAK9C,IAAIuO,EAAK,eAAe,EAC7B8mC,cAAc5oC,EAAM6mC,KAAK,EACzBvzC,EAAM,CACR,CACG4/D,IACDtqB,cAAc5oC,EAAM6mC,KAAK,EACzBysB,EAAWptD,KAAK,EAAE,EAClBxB,EAAK,EAAGwuD,CAAG,EAEf,EAAG,EAAE,CACP,EAGIxuD,EAAO,SAAS7N,EAAOq8D,GAIzB,GAHA78D,EAAKu7D,SAASzpD,KAAK,IAAK0oD,CAAW,EAAE50D,OAAO,EAC5C21D,EAAS51D,MAAQ,GAEI,SAAlBpB,EAAQs2D,OACS,UAAf,OAAOgC,EACR,IACEA,EAAMp3D,KAAKC,MAAMm3D,CAAG,CAItB,CAHE,MAAMj8D,GAEN,OADAi8D,EAAM,GACC78D,EAAK9C,IAAIuO,EAAK,oBAAoB,CAC3C,CAIoB,YAAxB,OAAOlH,EAAQ8J,MAAuB9J,EAAQ8J,KAAKwuD,EAAKr8D,GAAS,EAAG,SAAS45D,GAC3Ep6D,EAAKjC,OAAOq8D,CAAK,CACnB,CAAC,CACH,EAGIn9D,EAAQ,SAASuD,GAChB+D,EAAQyT,OACTujD,EAAS51D,MAAQ,IAEM,YAAzB,OAAOpB,EAAQtH,OAAwBsH,EAAQtH,MAAMuD,GAAS,EAAG,SAAS45D,GACxEp6D,EAAKjC,OAAOq8D,CAAK,CACnB,CAAC,CACH,EAGIO,EAAOp2D,EAAQo2D,KACfh1D,GACE+B,EAAM,GACVhI,MAAMa,KAAK65D,GAASp6D,EAAK47D,YAAa,SAASh/D,EAAGuD,GAChDuH,EAAInG,KAAKpB,EAAKyC,IAAI,CACpB,CAAC,EACM8E,GAIL0B,EAAO,CAET+N,QAAS,SAASxX,GAChBK,EAAKmX,QAAQxX,CAAQ,CACvB,EAEA5B,OAAQ,SAASyC,EAAO2wB,GACtB,IAAI+rC,EAAW,GACfA,EAAS18D,GAAS2wB,EAClBnxB,EAAKjC,OAAOm/D,CAAQ,CACtB,EAEAC,SAAU,WAKR,OAJAn9D,EAAKo6D,MAAQp6D,EAAKo6D,OAAS,GAC3B16D,MAAMa,KAAKP,EAAK47D,YAAa,SAASp7D,EAAOL,GAC3CH,EAAKo6D,MAAM55D,GAASL,CACtB,CAAC,EACMH,EAAKo6D,KACd,EAEAgD,UAAW,SAAS58D,EAAO2wB,EAAMksC,GAC3BC,EAAU,IAAIC,KAAK,CAACpsC,GAAOksC,CAAQ,EACvCr9D,EAAKo6D,MAAQp6D,EAAKo6D,OAAS,GAC3Bp6D,EAAKo6D,MAAM55D,GAAS88D,CACtB,CACF,EAgBIE,EAAW,CACbrsC,KAAM,eACNssC,OAAQ,eACRC,MAAO,eACPC,MAAO,cACR,EAAEp5D,EAAQm2D,SAAW,eAGtB/0D,EAAyB,IAAjBA,EAAMhJ,OACR4+D,EAAS51D,MAAMhE,MAAM,eAAe,GAAG,GAC3CgE,EAGF,GAAqB,IAAjBA,EAAMhJ,OAAV,CAGA,OAAO4H,EAAQm2D,QACb,IAAK,OACHh7D,MAAMa,KAAKoF,EAAO,SAAS/I,EAAGuD,GAC5B,GAAGw6D,GAAQ,CAACp0D,OAAO,QAASo0D,EAAM,KAAM,GAAG,EAAE35D,KAAKoP,OAAOjQ,CAAI,CAAC,EAC5D,OAAO4uB,EAAQ,CAAA,CAEnB,CAAC,EACH,MACA,IAAK,QACHrvB,MAAMa,KAAKoF,EAAO,SAAS/I,EAAGuD,GAC5B,GAAG,CAACoG,OAAO,SAAUo0D,GAAQ,qCAAsC,KAAM,GAAG,EAAE35D,KAAKoP,OAAOjQ,CAAI,CAAC,EAC7F,OAAO4uB,EAAQ,CAAA,CAEnB,CAAC,EACH,MACA,IAAK,QACHrvB,MAAMa,KAAKoF,EAAO,SAAS/I,EAAGuD,GAC5B,GAAG,CAACoG,OAAO,SAAUo0D,GAAQ,eAAgB,KAAM,GAAG,EAAE35D,KAAKoP,OAAOjQ,CAAI,CAAC,EACvE,OAAO4uB,EAAQ,CAAA,CAEnB,CAAC,EACH,MACA,QACErvB,MAAMa,KAAKoF,EAAO,SAAS/I,EAAGuD,GAC5B,GAAG,CAACoG,OAAO,SAAUo0D,GAAQ,4BAA6B,KAAM,GAAG,EAAE35D,KAAKoP,OAAOjQ,CAAI,CAAC,EACpF,OAAO4uB,EAAQ,CAAA,CAEnB,CAAC,CAEL,CAGA,GAAGA,EAED,OADA/uB,EAAK9C,IAAIuO,EAAK,gBAAmB,qBAAO+xD,EAAU,wDAAY,EACvDjC,EAAS51D,MAAQ,GAI1B,GAAY,WAATxI,GAAqBoH,CAAAA,EAAQyT,OAC9BzT,EAAQgc,QAAUhc,EAAQgc,OAAOnX,CAAI,EACzB,WAATjM,GAFL,CAiBA,GATA6C,EAAKq8D,YACC1/D,EAAS,EACT48D,EAAQyC,EAAS,EACrBt8D,MAAMa,KAAKg5D,EAAO,WAChB58D,CAAM,EACR,CAAC,EACMA,GAGN4H,EAAQ2sD,QAAUlxD,EAAKq8D,WAAa93D,EAAQ2sD,OAC7C,OAAOlxD,EAAK9C,IAAoC,YAAhC,OAAOuO,EAAK,gBACxBA,EAAK,gBAAgBlH,EAASvE,EAAKq8D,UAAU,EAE/C,qDAAc93D,EAAQ2sD,OACrB,4EAAkBlxD,EAAKq8D,WAAY,qBACrC,EAIH,GAAkB,EAAf93D,EAAQu7C,MAAY,EAAE95C,EAAOU,IAAMV,EAAOU,GAAK,IAWhD,GARAhH,MAAMa,KAAKy7D,EAAS,EAAG,SAASx7D,EAAO2wB,GAClCA,EAAK2uB,KAAO,KAAKv7C,EAAQu7C,OAE1BA,EAAe,IAARA,EADIv7C,EAAQu7C,KAAK,MACJA,EAAK8d,QAAQ,CAAC,EAAI,KAAQr5D,EAAQu7C,KAAO,KAC7Dyb,EAAS51D,MAAQ,GACjBo2D,EAAYjc,EAEhB,CAAC,EACEic,EAAW,OAAO/7D,EAAK9C,IAAkC,YAA9B,OAAOuO,EAAK,cACtCA,EAAK,cAAclH,EAASw3D,CAAS,EACvC,oDAAaA,CAAS,EAzGxB,GAAGx3D,CAAAA,EAAQojC,QAAoC,CAAA,IAAzBpjC,EAAQojC,OAAOv+B,CAAI,EAGtCpD,EAAOU,IACW,EAAZV,EAAOU,GAASu1D,EAAae,GAAJ,EAGlCf,EAAS,CA+DX,CA9C8B,CAqFhC,EAGAtyD,EAAM1K,UAAUwJ,OAAS,WACvB,IAAIzI,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAGfkiE,EAAgB,SAASzD,GAC3Bp6D,EAAK47D,YAAc,GACnBl8D,MAAMa,KAAK65D,EAAO,SAASx9D,EAAGuD,GAC5B,IAAIoW,GAAO,IAAIpU,MAAOC,QAAQ,EAC9BpC,EAAK47D,YAAYrlD,EAAO,IAAM3Z,GAAKuD,CACrC,CAAC,CACH,EAGI29D,EAAgB,SAAS1D,EAAOiD,GAClC,IAAI9B,EAAWv7D,EAAKu7D,SAEhB51D,GADOpB,EAAQpE,MAAsBoE,EAAQqF,KACtB,EAAfwwD,EAAMz9D,OACdy9D,EAAMz9D,OAAS,sBACfy9D,EAAM,IAAM,IAAIx3D,MAAS24D,EAAS,GAAG51D,MAAMhE,MAAM,eAAe,GAAG,IAEpE45D,EAASzpD,KAAK,EAAE3C,SAASqrD,CAAW,GACrCe,EAASzpD,KAAK,EAAElM,OAAO,EAEzB5F,EAAKjC,OAAO,KAAM,QAAQ,EACvBiC,EAAKw7D,OAAO,GAAKj3D,EAAQgc,QAC5Bg7C,EAAS3zB,MAAM,6BAA8B4yB,EAAa,KAAM70D,EAAO,SAAS,CAClF,EAGApB,EAAQqF,KAAKb,IAAI,cAAc,EAAEzI,GAAG,eAAgB,WAClD,IAAI+M,EAAQ3M,EAAEzE,IAAI,EAElB+D,EAAKrE,OAAOwE,KAAOkN,EACnBrN,EAAKu7D,SAAS,GAAGh/C,MAAM,CACzB,CAAC,EAGIvW,EAAOU,IAAMV,EAAOU,GAAK,IAC5BnC,EAAQqF,KAAKb,IAAI,aAAa,EAAEzI,GAAG,cAAe,WACpCI,EAAEzE,IAAI,EACZ2O,KAAK,WAAY,EAAE,CAC3B,CAAC,EACA7B,IAAI,cAAc,EAAEzI,GAAG,eAAgB,WAC1BI,EAAEzE,IAAI,EACZ2T,WAAW,UAAU,CAC7B,CAAC,EACA7G,IAAI,aAAa,EAAEzI,GAAG,cAAe,SAASM,EAAGmgB,GAChD,IAAI1T,EAAQ3M,EAAEzE,IAAI,EACdm+D,EAAQr5C,EAAMyiB,cAAcu6B,aAAa3D,OAAS,GAEtD/sD,EAAMuC,WAAW,UAAU,EAC3BiuD,EAAczD,CAAK,EAEnB71D,EAAQyT,KAAOhY,EAAKjC,OAAO,EAAI+/D,EAAc1D,CAAK,CACpD,CAAC,EAIHp6D,EAAKu7D,SAASj7D,GAAG,SAAU,WACzB,IAAI85D,EAAQn+D,KAAKm+D,OAAS,GAEN,IAAjBA,EAAMz9D,SAETkhE,EAAczD,CAAK,EAEnB71D,EAAQyT,KAAOhY,EAAKjC,OAAO,EAAI+/D,EAAc1D,CAAK,EACpD,CAAC,EAGD71D,EAAQq2D,WAAW7xD,IAAI,eAAe,EAAEzI,GAAG,gBAAiB,WAC1DN,EAAKjC,OAAO,CACd,CAAC,EAIEwG,EAAQqF,KAAK9E,KAAKyoD,CAAS,IAI9BhpD,EAAQqF,KAAKtJ,GAAG,QAAS,WACpBN,EAAKw7D,OAAO,GACf96D,EAAEzE,IAAI,EAAEuZ,QAAQ,cAAc,CAChC,CAAC,EAGEjR,EAAQy2D,MACTz2D,EAAQqF,KAAKtJ,GAAG,WAAY,SAASM,GACnCA,EAAE2hB,eAAe,EACjB7hB,EAAEzE,IAAI,EAAEuZ,QAAQ,aAAa,CAC/B,CAAC,EAAElV,GAAG,YAAa,SAASM,GAC1BF,EAAEzE,IAAI,EAAEuZ,QAAQ,cAAc,CAChC,CAAC,EAAElV,GAAG,OAAQ,SAASM,GACrBA,EAAE2hB,eAAe,EACjB7hB,EAAEzE,IAAI,EAAEuZ,QAAQ,cAAe5U,CAAC,CAClC,CAAC,EAIH2D,EAAQq2D,WAAWt6D,GAAG,QAAS,WAC7BI,EAAEzE,IAAI,EAAEuZ,QAAQ,eAAe,CACjC,CAAC,EAGDjR,EAAQqF,KAAK9E,KAAKyoD,EAAWhpD,EAAQnB,EAAE,EACzC,EAGAuQ,EAAW3T,KAAO,GAGlB2T,EAAWmB,QAAU,SAAS1R,GAC5B,IAAIpD,EAAO2T,EAAW3T,KAAKoD,GAE3B,OADIpD,GAAMgH,KAAK/J,MAAMmG,EAAM2Q,EAAU,sBAAwB3Q,EAAI,cAAkB,sBAAsB,EAClGpD,CACT,EAGAjC,EAAO+S,OAAS,SAASvM,GACnBqP,EAAO,IAAIjK,EAAMpF,CAAO,EAC5B,OAAOoP,EAAWtM,KAAKuM,CAAI,CAC7B,EAEAnU,EAAQsU,EAAUhW,CAAM,CAC1B,CAAC,ECnrBD2B,MAAMP,OAAO,CAAC,MAAO,QAAS,QAAS,SAASM,GAC9C,aAEA,IAAIiB,EAAIhB,MAAMgB,EACVhD,EAAQgC,MAAMhC,MACdiB,EAAOe,MAAMf,KACbqI,EAAOtH,MAAMsH,KAAK,EAGlB+M,GAFSrU,MAAMsG,OAAO,EAEX,QACX+jD,EAAO,cACP/1C,EAAO,aAEPgqD,EAAO,aACPjtD,EAAW,iBAGXktD,EAAO,WACThiE,KAAKN,OAAS,CAEZuiE,OAAQ,CACNC,SAAU,SAASx4D,GACjB,GAAI,CAAC,QAAQ3E,KAAK2E,CAAK,EACrB,MAAO,4CAEX,EACAy4D,MAAO,SAASz4D,GAEd,GAAIA,GAAS,CADH,YACQ3E,KAAK2E,CAAK,EAC1B,MAAO,kDAEX,EACA04D,MAAO,SAAS14D,GAEd,GAAIA,GAAS,CADH,kEACQ3E,KAAK2E,CAAK,EAC1B,MAAO,4CAEX,EACA5F,IAAK,SAAS4F,GAEZ,GAAIA,GAAS,CADH,2CACQ3E,KAAK2E,CAAK,EAC1B,MAAO,4CAEX,EACAurD,OAAQ,SAASvrD,GACf,GAAIA,GAASsC,MAAMtC,CAAK,EACtB,MAAO,sCAEX,EACA2R,KAAM,SAAS3R,GAEb,GAAIA,GAAS,CADH,8EACQ3E,KAAK2E,CAAK,EAC1B,MAAO,4CAEX,EACA24D,SAAU,SAAS34D,GAEjB,GAAIA,GAAS,CADH,gCACQ3E,KAAK2E,CAAK,EAC1B,MAAO,wDAEX,CACF,EACA44D,aAAc,IAChB,CACF,EA88BIjtC,GA38BJ2sC,EAAKh/D,UAAUyU,IAAM,SAASnP,GAG5B,OADA7D,EAAEiE,OAAO,CAAA,EADE1I,KACSN,OAAQ4I,CAAO,EADxBtI,IAGb,EAGAgiE,EAAKh/D,UAAUi/D,OAAS,SAAS54D,GAG/B,OADA5E,EAAEiE,OAAO,CAAA,EADE1I,KACSN,OAAOuiE,OAAQ54D,CAAQ,EADhCrJ,IAGb,EAGAgiE,EAAKh/D,UAAUu/D,YAAc,SAAS71D,GACpC,OAAOjI,EAAEqpD,GACAphD,EAAU,gBAAkBA,EAAQ,KAAQ,GAClD,CACL,EAGAs1D,EAAKh/D,UAAUqB,GAAK,SAASmI,EAAQ9I,GACnC,OAAOD,MAAM8I,QAAQnB,KAAKpL,KAAM8X,EAAUtL,EAAQ9I,CAAQ,CAC5D,EAGAs+D,EAAKh/D,UAAUiL,IAAM,SAASvB,EAAQouB,GAiCpC,OAhCW96B,KACMuiE,YAAY71D,CAAM,EAG1BpI,KAAK,SAASC,EAAOL,GAC5B,IAAIs+D,EAAW/9D,EAAEzE,IAAI,EAGrByD,MAAMa,KAAKw2B,EAAQ,SAASvyB,EAAKmB,GAC/B,IACCxI,EADG08D,EAAW4E,EAAS5yD,KAAK,UAAWrH,EAAK,IAAI,EAI7Cq1D,EAAS,KAID,cAHZ18D,EAAO08D,EAAS,GAAG18D,MAIjB08D,EAAS,GAAGppC,QAAU9qB,EACL,UAATxI,EACR08D,EAASt5D,KAAK,WACZtE,KAAKw0B,QAAUx0B,KAAK0J,OAASA,CAC/B,CAAC,EAEDk0D,EAAS3vD,IAAIvE,CAAK,EAEtB,CAAC,CACH,CAAC,EAED7H,EAAKgT,OAAO,KAAMnI,CAAM,EA7Bb1M,KAgCCyiE,SAAS/1D,CAAM,CAC7B,EAGAs1D,EAAKh/D,UAAUy/D,SAAW,SAAS/1D,EAAQ81D,GACzCA,EAAWA,GAAYxiE,KAAKuiE,YAAY71D,CAAM,EAE9C,IAAIg2D,EAAY,GACf7D,EAAQ,GACR8D,EAAYH,EAAS5yD,KAAK,uBAAuB,EAoBlD,OAlBAnM,MAAMa,KAAKq+D,EAAW,SAAS91D,EAAG3I,GAChC,IAQMqE,EARM9D,EAAEzE,IAAI,EAGlBkE,EAAKyC,MAAQzC,EAAKyC,MAAQ,IAAId,QAAQ,YAAa,EAAE,EACjD3B,EAAKyC,OAGN,WAAW5B,KAAKb,EAAKyC,IAAI,IACtB4B,EAAMrE,EAAKyC,KAAKjB,MAAM,aAAa,EAAE,GACzCg9D,EAAUn6D,GAAwB,EAAjBm6D,EAAUn6D,GAC3Bq6D,EAAY1+D,EAAKyC,KAAKd,QAAQ,aAAc,MAAQ68D,EAAUn6D,EAAM,GAAG,GAAG,GAGzE,qBAAqBxD,KAAKb,EAAKhD,IAAI,GAAK,CAACgD,EAAKswB,UACjDqqC,EAAM+D,GAAa1+D,EAAKyC,MAAQzC,EAAKwF,OACvC,CAAC,EAEMm1D,CACT,EAGAmD,EAAKh/D,UAAU6R,OAAS,SAAS3T,EAAMwL,GACrC,IACIpE,EADOtI,KACQN,OACf+/D,EAAWh7D,EAAEqpD,GACRphD,EAAU,gBAAkBA,EAAQ,KAAQ,GAClD,EACC4wD,EAAQ,CAEVvmD,MAAO,SAASpJ,GACd,IAAIk1D,EAASl1D,GAAQ8xD,EAAS7vD,KAAK,gBAAgB,EAK/CkzD,GAFJx6D,EAAQg6D,cAAgBO,EAAOl0D,KAAK,eAAgBrG,EAAQg6D,YAAY,EAEhD,SAAS30D,EAAMo1D,GACrC,IACIC,EAAWr1D,EAAKM,IAAI,EACpBvE,EAAQ0L,OAAO4tD,CAAQ,EACvBtwB,EAAOt9B,OAAOzH,EAAKgB,KAAK,MAAM,CAAC,GAAK,EACpC2K,EAAMlE,OAAOzH,EAAKgB,KAAK,KAAK,CAAC,EAC7B0H,EAAMjB,OAAOzH,EAAKgB,KAAK,KAAK,CAAC,EAC7Bs0D,EAAY7tD,OAAOzH,EAAKgB,KAAK,eAAe,CAAC,EAC7Cu0D,EAAyB,UAAdH,GAAsC,KAAbC,EACpCG,EAAuB,SAAdJ,EAEV/2D,MAAMtC,CAAK,IAEG,UAAdq5D,IAEDr5D,EADkB,CAAC,CAACjF,EAbXzE,IAaiB,EAAEuE,MAAM,EACZmF,EAAQgpC,EAAOhpC,EAAQgpC,GAI3C0wB,EAAW,SAAS1wB,GAEtB,QADgBA,EAAKpxC,SAAS,EAAEoE,MAAM,UAAU,GAAK,IAAI,IAAM,IAC/ChF,MAClB,EAEAuiE,EAAyB,GAAbA,EAAiBA,EAAYz0D,KAAK6H,IAAI+sD,EAAS1wB,CAAI,EAAG0wB,EAASJ,CAAQ,CAAC,EAEhFE,IAEEC,GAEU9sD,IADK3M,EAAdA,GAAS4P,EAAaA,EACtB5P,KAAcA,EAAQ2M,GAExB4sD,IAAWv5D,EAAQA,EAAMi4D,QAAQsB,CAAS,GAC7Ct1D,EAAKM,IAAIvE,CAAK,GAKhBiE,GADiBjE,EAAQ4P,GAAejD,EAAR3M,IACb,CAACw5D,EAAW,WAAa,eApMjC,iCAoM4D,EAEpEC,MAGCE,EAAa,CACfC,UAAW31D,EAAKkI,KAAK,EAAEjG,KAAK,gBAAgB,EAC5C2zD,UAAW51D,EAAKkI,KAAK,EAAEjG,KAAK,kBAAkB,CAChD,GACW0zD,UAAoBjtD,GAAT3M,GAAgB,CAACw5D,EAAY,WAAa,eAAepuD,CAAQ,EACvFuuD,EAAWE,UAAW75D,GAAS4P,GAAO,CAAC4pD,EAAY,WAAa,eAAepuD,CAAQ,EACzF,GAGA2qD,EAAS7vD,KAAK,sCAAsC,EAAEtL,KAAK,WACzD,IAAI8M,EAAQ3M,EAAEzE,IAAI,EACdwjE,EAAQpyD,EAAMzC,KAAK,WAAW,EAC9B80D,EAAa,mBACbC,EAAe,qBACfC,EAAc,oBACdpvC,EAAWnjB,EAAMunB,GAAG,YAAY,GAAKvnB,EAAMunB,GAAG,YAAY,EAG1DirC,EAAY,SAASj2D,EAAMjE,IAC7BiE,EAAOlJ,EAAEkJ,CAAI,GACJ,IACTA,EAAKlJ,EAAE4kB,KAAK3f,CAAK,EAAI,cAAgB,YAAYq4D,CAAI,CACvD,EAGI8B,EAAc,SAAS9zD,GACzBA,EAAOtL,EAAEiE,OAAO,GAAKo7D,EAAaN,IAAU,CAC1C95D,MAAO85D,CACT,EAAIzzD,EAAMvO,IAAI8G,QAAQ8I,EAAM,EAAE,CAAC,EAC/B,IAGM3F,EAHFs4D,EAAYt/D,EAAE,eAAgBk/D,EAAa,IAAI,EAC/Cj6D,EAAQjG,MAAMgD,QAAQsJ,EAAKrG,KAAK,EAAIqG,EAAKrG,MAAQ,CAACqG,EAAKrG,OACvDs6D,EAAWv/D,GACTgH,EAAM,GACVhI,MAAMa,KAAKoF,EAAO,SAAS/I,EAAGuD,GAC5BuH,EAAInG,KAAK,mCAAoCpB,GAC3C6L,EAAKwkB,SAAY,IAAKzf,EAAY,IACjC,QAAQ,CACb,CAAC,EACMrJ,EAAIiG,KAAK,EAAE,EACjB,EASCuyD,GAPJF,EAAUl0D,OAAOm0D,CAAQ,EAGtBj0D,EAAK/G,OAAO+6D,EAAUhxD,SAAS,mBAAmB,EAClDhD,EAAKiD,WAAW+wD,EAAUhxD,SAAShD,EAAKiD,SAAS,EAGjC5B,EAAMyE,KAAK,IAAK8tD,CAAW,GAS1CO,GARDD,EAAa,IAAIA,EAAat6D,OAAO,EAGpCyH,EAAM4e,OAAO,EAAE9c,SAASuwD,CAAU,GACpCryD,EAAM4yB,KAAK,eAAgBy/B,EAAY,UAAU,EAI/BryD,EAAMyE,KAAK,IAAK6tD,CAAY,GAC7CQ,EAAc,KACfD,EAAeC,EAAct0D,KAAK,IAAK+zD,CAAW,GAClC,IAAIM,EAAat6D,OAAO,EAExCu6D,EAAcz4B,QAAQs4B,CAAS,EAE/B3yD,EAAMgC,IAAI,gBAAiB,WAIzB,OAHmBhC,EAAMwoB,QAAQ,oBAAoB,EAAE,GACnD,EACFsqC,EAAczc,WAAW,GACLsc,EAAUtc,WAAW,CAC7C,CAAC,IAEDsc,EAAUhxD,SAAS2wD,CAAY,EAC/BtyD,EAAMu6B,MAAMo4B,CAAS,GAGT,SAAdh0D,EAAKyJ,MAAmBoqD,EAAUG,EAAW3yD,EAAMnD,IAAI,CAAC,EAEnC,YAArB,OAAO8B,EAAK+I,MAAuB/I,EAAK+I,KAAK1N,KAAKpL,KAAMoR,EAAOrB,CAAI,EAGnEqB,EAAM/M,GAAG,uBAAwB,WAC/B,IAAIqF,EAAQ1J,KAAK0J,MACH,SAAdqG,EAAKyJ,MAAmBoqD,EAAUG,EAAWr6D,CAAK,CACpD,CAAC,EAGD0H,EAAM/M,GAAG,OAAQ,WACM,YAArB,OAAO0L,EAAK24B,MAAuB34B,EAAK24B,KAAKt9B,KAAKpL,KAAMoR,EAAOrB,CAAI,CACrE,CAAC,EAGDi0D,EAAS3/D,GAAG,QAAS,WACnB,IAAI8/D,EAAc/yD,EAAMzC,KAAK,YAAY,EACtClK,EAAEzE,IAAI,EAAEkT,SAAS4B,CAAQ,IAEN,YAAtB,OAAO/E,EAAKuQ,OAAwBvQ,EAAKuQ,MAAMlV,KAAKpL,KAAMoR,EAAOrB,CAAI,EAGrEtM,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,eAAgBqsD,EAAa,IAAK,CACjEx2D,KAAMyD,EAAM,GACZoyD,MAAOA,EACPl7D,QAASyH,CACX,CAAC,EACH,CAAC,CACH,EAGI+zD,EAAe,CACjBM,IAAK,CACH16D,MAAO,gBACP4W,MAAO,SAAS3S,EAAMoC,GACpB,IAAIs0D,EAAY,4BACZC,EAAS32D,EAAK9E,KAAKw7D,CAAS,EAEhC12D,EAAKgB,KAAK,OAAQ21D,EAAS,WAAa,MAAM,EAAEz7D,KAAKw7D,EAAW,CAACC,CAAM,EAEvET,EAAY,CACVn6D,MAAO46D,EAAS,gBAAkB,KACpC,CAAC,CACH,CACF,EACAxpD,MAAO,CACLpR,MAAO,QACP4W,MAAO,SAAS3S,GACdA,EAAKM,IAAI,EAAE,EAAEimB,MAAM,EACnB0vC,EAAUn/D,EAAEzE,IAAI,EAAEgwB,OAAO,EAAG,IAAI,CAClC,EACAxW,KAAM,OACN+a,SAAUA,CACZ,EACA0gC,OAAQ,CACNvrD,MAAO,CAAC,KAAM,QACdV,MAAO,CAAA,EACPgK,UAAW,qBACXuhB,SAAUnjB,EAAMunB,GAAG,YAAY,EAC/B7f,KAAM,SAASnL,GACbm1D,EAAkB13D,KAAKpL,KAAM2N,EAAM,MAAM,CAC3C,EACA2S,MAAO,SAAS3S,GACdm1D,EAAkB13D,KAAKpL,KAAM2N,EAAM,OAAO,CAC5C,EACA+6B,KAAM,SAAS/6B,GACbm1D,EAAkB13D,KAAKpL,KAAM2N,EAAM,MAAM,CAC3C,CACF,CACF,EAEAk2D,EAAY,CACd,CAAC,CACH,EAGC3xD,OAAQ,SAASvE,GAChB,IAKI42D,EALAC,EAAO,qBACP33C,EAAQ,oBACRiuC,EAAQ,qBACR2J,EAAO,oBACPC,EAAY,GAEZC,EAAUh3D,GAAQ8xD,EAAS7vD,KAAK,QAAQ,EAGxCwiC,EAAO,SAASztC,EAAGmW,GACjBrW,EAAEE,EAAEyJ,MAAM,EAAE4hB,OAAO,EAAE9c,SAAS4nD,CAAK,GAAKhgD,CAAAA,IAC1CrW,EAAE,IAAIooB,CAAK,EAAE5Z,YAAY4Z,EAAM,MAAQA,EAAM,IAAI,EACjD03C,GAAaG,GAAaH,EAAUt2D,IAAIy2D,CAAS,GAEnDH,EAAY,IACd,EAGI/3D,EAAS,SAASo4D,EAAQrwC,EAAUswC,GACtC,IAOIC,EAKAC,EAGAC,EAuBAC,EA0BAC,EA+GAC,EA/KAjzD,EAASzN,EAAEzE,IAAI,EACf6f,EAAQ+kD,EAAOh1D,KAAK,IAAMkrD,CAAK,EAC/B/jD,EAAQ8I,EAAMjQ,KAAK,OAAO,EAC1Bw1D,EAAKR,EAAOh1D,KAAK,IAAI,EACrBy1D,EAAMD,EAAGxyD,SAAS,IAAI,EACtB0yD,EAAMF,EAAGxyD,SAAS,IAAI,EACtBrO,EAASvE,KAAK00B,cAGfH,IAGCwwC,EAAY7yD,EAAOvD,KAAK,YAAY,EAGpCq2D,EAAW,WACb,IAAI50D,EAAMw0D,EAAOviB,OAAO,EAAEjyC,IAAMw0D,EAAOjd,YAAY,EAAI,EAAI6Q,EAAKj0C,UAAU,EACtEghD,EAAWH,EAAGzd,YAAY,EAE9BpjD,EAAQ2N,EAAO,GAAGwiB,cAClBkwC,EAAO7xD,SAAS8Z,EAAM,IAAI,EAC1Bw4C,EAAIpyD,YAAY8uD,CAAI,EACpBuD,EAAIryD,YAAY8uD,CAAI,EACpB+C,EAAW,KAGXO,EAAIpyD,YAAY8E,CAAI,EACX,GAATxT,GAAc8gE,EAAIh9C,GAAG9jB,CAAK,EAAEwO,SAASgF,CAAI,EAGtC3H,EAAMm1D,EAAW/M,EAAK9kD,OAAO,GAAY6xD,GAAPn1D,GACnCw0D,EAAO7xD,SAAS8Z,EAAQ,IAAI,EAG9Bq4C,EAAa,CACf,EAGID,EAAW,SAAS3gD,GACtBsgD,EAAO3xD,YAAY4Z,EAAM,MAAQA,EAAM,IAAI,EAC3C9V,EAAM2xB,KAAK,EACXo8B,EAAW,KAERxgD,GAEH6gD,EAAUpuD,EAAM9I,IAAI,EAAG,SAASu3D,GAC9B,IAAI9wC,EAAgBxiB,EAAO,GAAGwiB,cAG3B8wC,IACDd,EAAYjgE,EAAEyN,EAAO,GAAG5J,QAAQosB,EAAc,EAAE9gB,KAAK,EAGhC,IAAlB8gB,GAAuBgwC,IAAc3tD,EAAMpI,KAAK,aAAa,IAC9D+1D,EAAY,IAId3tD,EAAM9I,IAAIy2D,GAAa,EAAE,EAE7B,CAAC,CACH,EAGIQ,EAAe,WACjB,IAIIO,EACAF,EALAG,EAASN,EAAGxyD,SAAS,MAAOmF,CAAI,EAEhC2tD,EAAO,KAEPD,EAASC,EAAO51D,SAAS,EAAEM,IAC3Bm1D,EAAWH,EAAG1xD,OAAO,EACrBiyD,EAAWD,EAAOhyD,OAAO,EAGjB6xD,EAATE,GACDL,EAAG7gD,UAAUkhD,EAASL,EAAG7gD,UAAU,EAAIghD,EAAWI,EAAW,CAAC,EAI7DF,EAAS,IACVL,EAAG7gD,UAAUkhD,EAASL,EAAG7gD,UAAU,EAAI,CAAC,CAE5C,EAGA1E,EAAMxb,GAAG,QAAS,SAASM,IACzBigE,EAAO1xD,SAAS2Z,EAAM,IAAI,EACxBo4C,GAEA7yB,EAAKztC,EAAG,CAAA,CAAI,EACZqgE,IAFF,EAIAI,EAAGx1D,KAAK,IAAI60D,CAAI,EAAE96D,OAAO,CAC3B,CAAC,EAGDkW,EAAMjQ,KAAK,aAAa,EAAEvL,GAAG,QAAS,WACpC0S,EAAMmd,MAAM,CACd,CAAC,EAGDnd,EAAM1S,GAAG,QAAS,SAASM,GAIV,IAHDA,EAAEsS,SAId+tD,EAAS,CAEb,CAAC,EAAE3gE,GAAG,UAAW,SAASM,GACxB,IAAIsS,EAAUtS,EAAEsS,QAQZ2uD,GALW,IAAZ3uD,GACDguD,EAAS,EAIK,SAASY,EAAUC,GAEjCnhE,EAAE2hB,eAAe,EADjB,IAIIyqC,EAAW,WACb,IAAI2U,EAASN,EAAGxyD,SAAS,MAAOmF,CAAI,EAIpC,GAAGqtD,EAAGxyD,SAAS,MAAQmvD,CAAI,EAAE,IAAmB,SAAb8D,EAAoB,CACrD,IAAIE,EAASX,EAAGxyD,SAAS,WAAYmvD,EAAM,KAAMjtD,EAAU,GAAG,EAC7DkxD,EAAaD,EAAO19C,GAAG,CAAC,EAAE9jB,MAAM,EACjC,GAAgB,GAAbyhE,GAAkBA,EAAaN,EAAOnhE,MAAM,GAAK,CAACwhE,EAAO7yD,SAAS6E,CAAI,EACvE,OAAOguD,EAAO19C,GAAG,CAAC,EAAEzS,KAAK,EAAE,GAAKmwD,EAAO19C,GAAG,CAAC,EAAEzS,KAAK,EAAIwvD,EAAGxyD,SAAS,OAAO,CAE7E,CAEA,OAAGkzD,GAAaA,EAAU,GACjBA,EAENhB,GAAYA,EAAS,GACfA,EAGFY,CAET,EAAE,EAEFO,EAAgBlV,EAAS8U,GAAU,EACnCK,EAAUnV,EAAS8U,GAAU,WAAY9D,EAAM,GAAG,EAGlD,OAAIkE,EAAc,IAGlBnB,EAAW/T,EAAS8U,GAAU,EAGzBK,EAAO,IAAMA,CAAAA,EAAOhzD,SAAS4B,CAAQ,GAAMgwD,CAAAA,EAAS,IAIzDoB,EAAOnzD,SAASgF,CAAI,EAAE6gB,SAAS,EAAE3lB,YAAY8E,CAAI,EAAjDmuD,KACAhB,EAAa,GAJJU,EAAUC,EAAUf,CAAQ,GAPRA,EAAW,IAY1C,GAEe,KAAZ7tD,GAAgB2uD,EAAU,MAAM,EACpB,KAAZ3uD,GAAgB2uD,EAAU,MAAM,EAGpB,KAAZ3uD,IACDtS,EAAE2hB,eAAe,EACjB8+C,EAAGxyD,SAAS,MAAMmF,CAAI,EAAEwB,QAAQ,OAAO,EAE3C,CAAC,EAGG4rD,EAAY,SAASz7D,EAAOhG,EAAUyiE,GACxC,IAAI73D,EAAM,EAwBNk3D,GAvBJ/hE,MAAMa,KAAK+gE,EAAK,WACd,IAAIj0D,EAAQ3M,EAAEzE,IAAI,EACdwP,EAAO4B,EAAM5B,KAAK,EASlBokB,GANa,OAAdmxC,IACDv1D,EAAOA,EAAKtF,YAAY,EACxBR,EAAQA,EAAMQ,YAAY,GAIM,CAAC,IAAzBsF,EAAKlJ,QAAQoD,CAAK,IAEf,KAAVA,GAA4B,SAAXy8D,EAAqBz8D,IAAU8F,EAAOokB,IAAKtlB,CAAG,GACvD,UAAX63D,GAAsB/0D,EAAMwiB,EAAM,WAAa,eAAemuC,CAAI,CACpE,CAAC,EAEU,UAAXoE,GAAsB1iE,MAAMa,KAAKghE,EAAK,WACpC,IAAIl0D,EAAQ3M,EAAEzE,IAAI,EACjBomE,EAAUh1D,EAAMipB,UAAU,IAAI,EAAE3tB,OAAO,IAAI,EAE5C0E,EADWg1D,EAAQ1lE,QAAU0lE,EAAQ15D,OAAO,IAAMq1D,CAAI,EAAErhE,OACxC,WAAa,eAAeqhE,CAAI,CAClD,CAAC,EACUzzD,IAAQ+2D,EAAI3kE,QACvB,OAAOgD,EAAS8hE,CAAI,EAAGA,CACzB,EAiCGX,GACD9tD,EAAM1S,GAAG,uBA/BE,SAASM,GACpB,IAAI+E,EAAQ1J,KAAK0J,MAAOuN,EAAUtS,EAAEsS,QAEpC,GAAe,IAAZA,GAA6B,KAAZA,GACH,KAAZA,GAA8B,KAAZA,GACN,KAAZA,GAA8B,KAAZA,EAErB,MAAO,CAAA,EAGTkuD,EAAUz7D,EAAO,SAAS87D,GACrBA,EACDJ,EAAGx1D,KAAK,IAAI60D,CAAI,EAAE,IAAMW,EAAGv1D,OAAO,aAAc40D,EAAM,gCAAY,EAElEW,EAAGx1D,KAAK,IAAI60D,CAAI,EAAE96D,OAAO,CAE7B,EAAG,OAAO,EAGG,KAAVD,IAEDwI,EAAOjE,IAAI,EAAE,EACbm3D,EAAGx1D,KAAK,IAAKmI,CAAI,EAAE9E,YAAY8E,CAAI,GAClC7F,EAAO,GAAG5J,QAAQ,IAAM,IAAIoB,OAAS07D,EAAGxyD,SAAS,UAAU,EAAEG,SAASgF,CAAI,EAC3EqtD,EAAGx1D,KAAK,IAAK60D,CAAI,EAAE96D,OAAO,GAG5Bu7D,EAAa,CACf,CAGyC,EAAE7gE,GAAG,OAAQ,SAASM,GAC3D,IAAI+vB,EAAgBxiB,EAAO,GAAGwiB,cAE9B6vC,EAAYxtD,EACZ2tD,EAAYjgE,EAAEyN,EAAO,GAAG5J,QAAQosB,EAAc,EAAEllB,KAAK,EAGhC,IAAlBklB,GAAuBgwC,IAAc3tD,EAAMpI,KAAK,aAAa,IAC9D+1D,EAAY,IAGdr/D,WAAW,WACT8/D,EAAUpuD,EAAM9I,IAAI,EAAG,SAASu3D,GAC9Bd,GAAa3tD,EAAM9I,IAAI,EAAE,CAC3B,EAAG,MAAM,CACX,EAAG,GAAG,CACR,CAAC,EAIHo3D,EAAIhhE,GAAG,QAAS,WACd,IAAI+M,EAAQ3M,EAAEzE,IAAI,EAAG0J,EAAQ0H,EAAMzC,KAAK,WAAW,EAC/CjC,EAASwF,EAAOvD,KAAK,YAAY,EAqBrC,OAnBGyC,EAAM8B,SAAS4B,CAAQ,IAEvB1D,EAAM8B,SAAS,mBAAmB,EACnC6D,EAAM9I,IAAI,EAAE,GAEZ8I,EAAM9I,IAAImD,EAAM5B,KAAK,CAAC,EACtB4B,EAAM2B,SAASgF,CAAI,GAGrB3G,EAAMwnB,SAAS,EAAE3lB,YAAY8E,CAAI,EACjC7F,EAAOjE,IAAIvE,CAAK,EAAEuJ,YAAY,mBAAmB,EAEjDxP,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,UAAWpL,EAAQ,IAAK,CACvDiB,KAAMuE,EAAO,GACZxI,MAAOA,EACP0H,MAAOwzD,CACV,CAAC,EAEDK,EAAS,CAAA,CAAI,GACN,CAAA,CACT,CAAC,EAEDL,EAAOh1D,KAAK,OAAO,EAAEvL,GAAG,QAAS,SAASM,GACxC,MAAO,CAAA,CACT,CAAC,EAEDF,EAAEhF,QAAQ,EAAEqN,IAAI,QAASslC,CAAI,EAAE/tC,GAAG,QAAS+tC,CAAI,EACjD,EAGAuyB,EAAQrgE,KAAK,SAASC,EAAO2N,GAC3B,IAAId,EAAQ3M,EAAEzE,IAAI,EACjB+0D,EAAY3jD,EAAMyE,KAAK,IAAIgX,CAAK,EAChC0H,EAAWv0B,KAAKu0B,SAChB7qB,EAAQwI,EAAOxI,MACf+qB,EAAWhwB,EAAEyN,EAAO5J,QAAQ4J,EAAOwiB,cAAc,EACjD2xC,EAAen0D,EAAO5J,QAAQ,GAE/B,GAAuC,UAApC,OAAO8I,EAAMzC,KAAK,YAAY,EAAgB,OAAOyC,EAAMoI,KAAK,EAEnE,IAkBQ/N,EAlBJo5D,EAA+C,UAApC,OAAOzzD,EAAMzC,KAAK,YAAY,EAC5Cy8C,EAAcib,GACbA,CAAAA,EAAa38D,OAAgB28D,EAAa32D,WACxC80D,EAGAI,EAASngE,EAAE,CAAC,gBAAiBogE,EAAW,GAAK,mBAAqBh4C,GACpE0H,EAAW,yBAA2B,IAAK,KAC1C,eAAgBumC,EAAO,KACpB,mCAAoCp4D,EAAKyR,OAAO1P,EAAE4kB,KAAK+hC,CAAW,CAAC,EACjE,YAAW1oD,EAAKyR,OAAO1P,EAAE4kB,KAAK3f,EAAQ+qB,EAAS7gB,KAAK,EAAI,EAAE,CAAC,EAAG,KAC7D,CAAC2gB,GAAYswC,EAAY,GAAK,aAChC,uBACCA,EAAW,GAAK,oBACjBtwC,EAAY,IAAMzf,EAAY,IAAK,KACvC,mCACA,0CAA2C1D,EAAMxB,KAAK,UAAU,EAAE,GAAK,sBAAwB,IAAK,MAC3FtH,EAeR8I,EAAMxB,KAAK,GAAG,EAdVnE,EAAM,GACVhI,MAAMa,KAAKgE,EAAS,SAAS/D,EAAOL,GAClC,IAAI6hB,EAAU7hB,EAAK6hB,QAAQ7b,YAAY,EAE1B,IAAV3F,GAAgBL,EAAKwF,OAAqB,aAAZqc,EAG/Bta,EAAInG,KADgB,aAAZygB,EACC,OAAQ7hB,EAAKkG,MAAO,QAEpB,kBAAmB1H,EAAKyR,OAAOjQ,EAAKwF,KAAK,EAAG,aAAcA,IAAUxF,EAAKwF,MAASqO,EAAO,KAAO7T,EAAKqwB,SAAY,IAAIzf,EAAY,IAAK,KAAMrQ,EAAE4kB,KAAKnlB,EAAKwL,SAAS,EAAG,OAFzI,EAFpCjE,EAAInG,KAAK,8CAA+Cb,EAAE4kB,KAAKnlB,EAAKwL,WAAa80D,CAAI,EAAG,OAAO,CAMnG,CAAC,EACc,IAAf/4D,EAAI/K,QAAgB+K,EAAInG,KAAK,2BAA4BwP,EAAU,iCAAa,EACzErJ,EAAIiG,KAAK,EAAE,EACA,SACrB,UAAUA,KAAK,EAAE,CAAC,EAEnBqjD,EAAU,IAAMA,EAAUprD,OAAO,EACjCyH,EAAMu6B,MAAMi5B,CAAM,EAClBp4D,EAAOpB,KAAKpL,KAAM4kE,EAAQrwC,EAAUswC,CAAQ,CAC9C,CAAC,CACH,EAGC5vC,SAAU,SAAStnB,GAClB,IAAIkf,EAAQ,CACVoI,SAAY,CAAC,sBAAuB,qBAAsB,YAC1DqxC,SAAU,CAAC,oBAAqB,sBAAuB,UACvDC,OAAQ,0BACV,EACIC,EAAS74D,GAAQ8xD,EAAS7vD,KAAK,sBAAsB,EAuDzD42D,EAAOliE,KAAK,SAASC,EAAOuuB,GAC1B,IAAI1hB,EAAQ3M,EAAEzE,IAAI,EACd0kD,EAAOtzC,EAAMzC,KAAK,UAAU,GAAK,UACjCkR,EAAQnd,EAAKyR,OAAO1P,EAAE4kB,KAAKyJ,EAAMjT,QAC5BiT,EAAMjT,MAAQzO,EAAMzC,KAAK,UAAU,GAAK,GAC9C,CAAC,EACA4lB,EAAWv0B,KAAKu0B,SAGhBkyC,EAAW55C,EAAM63B,IAAS73B,EAAMoI,SAGhC8/B,EAAY3jD,EAAMyE,KAAK,IAAM4wD,EAAS,EAAE,EAW5C,GAVA1R,EAAU,IAAMA,EAAUprD,OAAO,EAG9ByH,EAAMyE,KAAK,gBAAgB,EAAE,KAC9BgK,EAAQzO,EAAMyE,KAAK,EAAEjC,KAAK,GAAK,IAIjCiM,EAAiB,WAAT6kC,EAAoB7kC,EAAM7W,MAAM,GAAG,EAAI,CAAC6W,GAET,UAApC,OAAOzO,EAAMzC,KAAK,YAAY,EAAgB,OAAOyC,EAAMoI,KAAK,EAG/DorD,EAASngE,EAAE,CAAC,8BAA+BgiE,EAAS,GACrD3zC,EAAM0B,QAAW,IAAKiyC,EAAS,GAAM,GACrClyC,EAAW,4BAA6Bzf,EAAW,GACpD,IACC4vC,EAAO,cAAeA,EAAM,IAAM,GACrC,KAEMxjD,EAAO,CAET+zB,SAAY,CACTpV,EAAM,GAAM,QAASA,EAAM,GAAI,SAAsB,YAAT6kC,EAAqB,GAAK,cACvE,yBAAkC,YAATA,GAAsB,CAAC5xB,EAAM0B,SAAWpjB,EAAM0W,IAAI,CAAC,EAAE4+C,cAAgB75C,EAAM05C,OAAS,iBAAiB,UAC9H70D,KAAK,EAAE,EAET40D,SAAU,UAAWxzC,EAAM0B,QAAU3U,EAAM,GAAKA,EAAM,KAAO,IAAK,eACpE,GACY6kC,IAASxjD,EAAe,SAEtC,UAAUwQ,KAAK,EAAE,CAAC,EAElBN,EAAMu6B,MAAMi5B,CAAM,EA7FP,SAASA,EAAQ6B,GAC5B,IAAI3zC,EAAQruB,EAAEzE,IAAI,EAGlB4kE,EAAOvgE,GAAG,QAAS,WACjB,IAAI+M,EAAQ3M,EAAEzE,IAAI,EACd0M,EAASomB,EAAMnkB,KAAK,YAAY,EAChCkR,EACFzO,EAAMyE,KAAK,iBAAiB,EAAE,GAC1BzE,EAAMyE,KAAK,EAAEjC,KAAK,EACpBkf,EAAMnkB,KAAK,OAAO,GAAK,GAEvB+1C,EAAO5xB,EAAMnkB,KAAK,UAAU,GAAK,UAGrCkR,EAAiB,WAAT6kC,EAAoB7kC,EAAM7W,MAAM,GAAG,EAAI,CAAC6W,GAG7CiT,EAAM,GAAGyB,WAGRzB,EAAM,GAAG4zC,gBACX5zC,EAAM,GAAG4zC,cAAgB,CAAA,EACzB9B,EAAOh1D,KAAK,IAAKid,EAAM05C,MAAM,EAAEtzD,YAAY4Z,EAAM05C,MAAM,EAAExzD,SAAS,eAAe,GAInF+f,EAAM,GAAG0B,SACP1B,EAAM,GAAG0B,QAAU,CAAA,EACnBowC,EAAO3xD,YAAYwzD,EAAS,EAAE,EACrB,WAAT/hB,GAAqBkgB,EAAOhyD,SAAS,KAAK,EAAEgB,KAAKiM,EAAM,EAAE,IAEzDiT,EAAM,GAAG0B,QAAU,CAAA,EACnBowC,EAAO7xD,SAAS0zD,EAAS,EAAE,EAClB,WAAT/hB,GAAqBkgB,EAAOhyD,SAAS,KAAK,EAAEgB,KAAKiM,EAAM,EAAE,GAI3Dpc,MAAM3D,MAAMsL,KAAK0nB,EAAM,GAAIhb,EAAU2uD,EAAS,GAAG,IAAK/5D,EAAQ,IAAK,CACjEiB,KAAMmlB,EAAM,GACZppB,MAAOopB,EAAM,GAAGppB,MAChB0H,MAAOwzD,CACT,CAAC,EACH,CAAC,CACH,EAkDSx5D,KAAKpL,KAAM4kE,EAAQ6B,CAAQ,CACpC,CAAC,CACH,EAGCzxC,MAAO,SAASrnB,GACf,IAAIkf,EAAQ,mBACR85C,EAAO,CAAC,mBAAoB,qBAC5BC,EAASj5D,GAAQ8xD,EAAS7vD,KAAK,mBAAmB,EAkCtDg3D,EAAOtiE,KAAK,SAASC,EAAOywB,GAC1B,IAAI5jB,EAAQ3M,EAAEzE,IAAI,EAAG+0D,EAAY3jD,EAAMyE,KAAK,IAAMgX,CAAK,EACnD0H,EAAWv0B,KAAKu0B,SAEpB,GAAuC,UAApC,OAAOnjB,EAAMzC,KAAK,YAAY,EAAgB,OAAOyC,EAAMoI,KAAK,EACnEu7C,EAAU,IAAMA,EAAUprD,OAAO,EAG7Bi7D,EAASngE,EAAE,CAAC,8BAA+BooB,EAC5CmI,EAAMR,QAAW,IAAK3H,EAAO,KAAQ,IACvC0H,EAAW,yBAAyBzf,EAAW,IAAK,KACrD,mCAAoC6xD,EAAK3xC,EAAMR,QAAU,EAAI,GAAI,SACjE,SACM3U,EAAQnd,EAAKyR,OAAO6gB,EAAMnV,OAAS,EAAE,EAEvCA,EADCzO,EAAMyE,KAAK,aAAa,EAAE,GACnBzE,EAAMyE,KAAK,EAAEjC,KAAK,EAErBiM,GACJ,SACL,UAAUnO,KAAK,EAAE,CAAC,EAElBN,EAAMu6B,MAAMi5B,CAAM,EApDP,SAASA,GACpB,IAAI5vC,EAAQvwB,EAAEzE,IAAI,EACd6mE,EAAO,yBAEXjC,EAAOvgE,GAAG,QAAS,WACjB,IAAIsC,EAAOquB,EAAM,GAAGruB,KAAMmgE,EAAQ9xC,EAAMkF,QAAQ4zB,CAAI,EAChDphD,EAASsoB,EAAMrmB,KAAK,YAAY,EAChCo4D,EAAYD,EAAMl3D,KAAK,cAAejJ,EAAKd,QAAQ,gBAAiB,MAAM,EAAG,GAAG,EAEjFmvB,EAAM,GAAGT,WAEZ9wB,MAAMa,KAAKyiE,EAAW,WACpB,IAAIlxD,EAAOpR,EAAEzE,IAAI,EAAE6V,KAAK,IAAMgX,CAAK,EACnC7sB,KAAKw0B,QAAU,CAAA,EACf3e,EAAK5C,YAAY4Z,EAAQ,IAAI,EAC7BhX,EAAKjD,SAAS,aAAa,EAAEK,YAAY4zD,EAAO,IAAMF,EAAK,EAAE,EAAE5zD,SAAS4zD,EAAK,EAAE,CACjF,CAAC,EAED3xC,EAAM,GAAGR,QAAU,CAAA,EACnBowC,EAAO7xD,SAAS8Z,EAAQ,IAAI,EAC5B+3C,EAAOhyD,SAAS,aAAa,EAAEG,SAAS8zD,EAAO,IAAMF,EAAK,EAAE,EAE5DljE,MAAM3D,MAAMsL,KAAK4pB,EAAM,GAAIld,EAAU,SAAUpL,EAAQ,IAAK,CAC1DiB,KAAMqnB,EAAM,GACZtrB,MAAOsrB,EAAM,GAAGtrB,MAChB0H,MAAOwzD,CACT,CAAC,EACH,CAAC,CACH,EAyBSx5D,KAAKpL,KAAM4kE,CAAM,CAC1B,CAAC,CACH,CACF,EAGIoC,EAAa,WACfvjE,MAAMa,KAAKg5D,EAAO,SAAS/4D,EAAOL,GAChCA,EAAK,CACP,CAAC,CACH,EA+BA,MA5ByB,WAArBT,MAAMvC,KAAKA,CAAI,EAEduD,EAAEvD,CAAI,EAAEy3B,GAAGm1B,CAAI,GAChB2R,EAAWh7D,EAAEvD,CAAI,EACjB8lE,EAAW,GAEX9lE,EAAKoD,KAAK,SAAUC,EAAOL,GACzB,IAAIyJ,EAAOlJ,EAAEP,CAAI,EACZyJ,EAAKisB,QAAQk0B,CAAI,EAAEptD,SAGH,WAAjBwD,EAAK6hB,QACPu3C,EAAc,OAAE3vD,CAAI,EACM,UAAjBzJ,EAAK6hB,UAEG,cADbkhD,EAAW/iE,EAAKhD,OACwB,UAAb+lE,EAC7B3J,EAAM2J,GAAUt5D,CAAI,EAEpB2vD,EAAa,MAAE3vD,CAAI,GAGzB,CAAC,EAGHzM,EACEo8D,EAAMp8D,GAAQo8D,EAAMp8D,GAAM,EAAI6J,EAAK/J,MAAM,6BAAUE,EAAO,4BAAQ,EAChE8lE,EAAW,EA7wBNhnE,IAgxBb,EAGAgiE,EAAKh/D,UAAUkkE,SAAW,SAASv5D,GACjC,IACIw5D,EAEAlF,EAHOjiE,KAEQN,OACEuiE,OACjBmF,EAAS,oBAKb,MAAKz5D,EAHLA,EAAOlJ,EAAEkJ,CAAI,GAGH,KAGNA,EAAKgB,KAAK,YAAY,IAAM2E,WAEoB,CAAA,IAdzCtT,KAcAknE,SAASv5D,EAAKiC,KAAK,eAAe,CAAC,KAM9CnM,MAAMa,KAAKqJ,EAAM,SAASd,EAAG3I,GAC3B,IAAIkN,EAAQ3M,EAAEzE,IAAI,EAEdqnE,GADYj2D,EAAMzC,KAAK,YAAY,GAAK,IACvB3F,MAAM,GAAG,EAC1Bs+D,EAAUl2D,EAAMzC,KAAK,aAAa,EAClCjF,EAAQjF,EAAE4kB,KAAKjY,EAAMnD,IAAI,CAAC,EA0D9B,GAxDAmD,EAAM6B,YAAYm0D,CAAM,EAGxB3jE,MAAMa,KAAK+iE,EAAM,SAASx6D,EAAG06D,GAC3B,IACI91D,EAAY,GACZ+1D,EAAOvF,EAAOsF,GAGlB,GAAIC,EAAM,CAMR,IALAC,EAAwB,YAAhB,OAAOD,EACX/1D,EAAY+1D,EAAK99D,EAAOxF,CAAI,EAC9B,CAACsjE,EAAK,GAAGziE,KAAK2E,CAAK,EAGjBg+D,EAA6C,WAA/BxjE,EAAK6hB,QAAQ7b,YAAY,GACzC,qBAAqBnF,KAAKb,EAAKhD,IACjC,EAEAuQ,EAAYA,GAAa+1D,EAAK,GAQ9B,GALgB,aAAZD,IACF91D,EAAYL,EAAMzC,KAAK,aAAa,GAAK8C,GAIvCg2D,EAwBF,MAtBgB,SAAZH,EACF7lE,EAAMgjB,KAAKhT,EAC8B,UAApC,OAAOL,EAAMzC,KAAK,YAAY,GAC5B+4D,EACMt2D,EAAMyE,KAAK,EAGfzE,EACJ,CAACqT,KAAM,CAAC,CAAC,EACM,UAAZ6iD,EACR7lE,EAAM4iD,MAAM5yC,EAAW,CAACoO,MAAO,eAAM8pC,WAAY,CAAA,CAAI,CAAC,EAGhD,sBAAsB5kD,KAAK,OAAO0M,CAAS,GACjDhQ,EAAMR,IAAIwQ,EAAW,CAACozC,KAAM,EAAG51B,MAAO,CAAC,CAAC,EAG1C5pB,WAAW,YACRqiE,EAAct2D,EAAMyE,KAAK,EAAEjG,KAAK,OAAO,EAAI1L,GAAMgwB,MAAM,CAC1D,EAAG,CAAC,EAEJ9iB,EAAM2B,SAASq0D,CAAM,EACdD,EAAY,CAAA,CAEvB,CACF,CAAC,EAEGA,EAAW,OAAOA,CACxB,CAAC,EAEM,CAACA,EACV,EAGanF,EAAKh/D,UAAUqyB,OAAS,SAAS3oB,EAAQhJ,GACpD,IAAIm7D,EAAQ,GACRjqC,EAASnwB,EAAEzE,IAAI,EAGf2nE,EAA8B,UAAlB,OAAOj7D,EACnBA,EACFkoB,EAAOjmB,KAAK,YAAY,EAGtBhB,EAAO3N,KAAKuiE,YACZviE,KAAKuiE,YAAYoF,CAAS,EAC5B/yC,EAAOsF,QAAQ4zB,CAAI,EAAEzlC,GAAG,CAAC,EAGvBu/C,EAAaj6D,EAAKiC,KAAK,eAAe,EAG1C,MAAI/N,CAAAA,CAAAA,EAAKqlE,SAASU,CAAU,IAG5B/I,EAAQh9D,EAAK4gE,SAAS,KAAM90D,CAAI,EAG5BlB,EAAS,CACXkB,KAAM3N,KAAKuiE,YAAe/0D,OAAO1N,OAAS0N,OAAO1N,MAAMsO,OAAUpO,KAChE6B,MAAM7B,KAAKuiE,YAAc50D,EAAUinB,EAAOsF,QAAQ,MAAM,GAA1B,GAC9B2kC,MAAOA,CACV,EAGoB,YAApB,OAAOn7D,GAA2BA,EAAS+I,CAAM,EAG1ChJ,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,UAAW6vD,EAAW,IAAKl7D,CAAM,EAC3E,GAEI5K,EAAO,IAAImgE,EACX6F,EAAOpjE,EAAEhF,QAAQ,EACjB+4D,EAAO/zD,EAAE+I,MAAM,EAGnB/I,EAAE,WACA5C,EAAKgT,OAAO,CACd,CAAC,EAGDgzD,EAAKxjE,GAAG,QAASypD,EAAM,WACrB,IAAIphD,EAASjI,EAAEzE,IAAI,EAAE2O,KAAK,YAAY,EACtCtJ,WAAW,WACTxD,EAAKgT,OAAO,KAAMnI,CAAM,CAC1B,EAAG,EAAE,CACP,CAAC,EAGDm7D,EAAKxjE,GAAG,SAAUypD,EAAMz4B,CAAM,EAC7BhxB,GAAG,QAAS,gBAAiBgxB,CAAM,EAEpC7xB,EAAQsU,EAAUjW,CAAI,CACxB,CAAC,ECxkCD4B,MAAMP,OAAO,CAAC,MAAO,SAAU,UAAW,OAAQ,QAAS,SAASM,GAClE,aAEA,IAAIiB,EAAIhB,MAAMgB,EACVjD,EAAMiC,MAAMjC,IACZI,EAAS6B,MAAM7B,OACfD,EAAU8B,MAAM9B,QAChBF,EAAQgC,MAAMhC,MACdI,EAAO4B,MAAM5B,KACba,EAAOe,MAAMf,KACbqI,EAAOtH,MAAMsH,KAAK,EAClBhB,EAAStG,MAAMsG,OAAO,EAGtB7H,EAAQ,CACVxC,OAAQ,CACNooE,UAAW,cACXC,UAAW,YACXC,YAAa,UACbC,aAAc,cAChB,EACAhlE,MAAO,GACPsB,MAAOd,MAAMvB,MAASuB,MAAMvB,MAAMqC,MAAQ,IAAS,EAGnDkT,IAAK,SAASnP,GACZ,IAAIvE,EAAO/D,KAEX,OADA+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EACxCvE,CACT,EAGAM,GAAI,SAASmI,EAAQ9I,GACnB,OAAOD,MAAM8I,QAAQnB,KAAKpL,KAAM8X,EAAUtL,EAAQ9I,CAAQ,CAC5D,CACF,EAGIwkE,EAAY,WACd,IAAInkE,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACfyH,EAAKmB,EAAQnB,IAAMmB,EAAQ/D,MAE/B,MAAO,CACL7E,OAAQ4I,EACRuP,OAAQ,SAASvP,EAASkgB,GACxBzkB,EAAK8T,OAAOzM,KAAKrH,EAAMuE,EAASkgB,CAAI,CACtC,EACAgpC,WAAY,SAASlpD,EAASkgB,GAC5BtmB,EAAMsvD,WAAWrqD,EAAImB,EAASkgB,CAAI,CACpC,EACA2/C,aAAc,WACZpkE,EAAKokE,aAAa/8D,KAAKrH,CAAI,CAC7B,EACAkgD,OAAQ,WACNlgD,EAAKkgD,OAAO74C,KAAKrH,CAAI,CACvB,CACF,CACF,EAGIqkE,EAAe,SAASjhE,GAC1B,IAAIpD,EAAOmkE,EAAUnkE,KAAKoD,GAE1B,OADIpD,GAAMgH,EAAK/J,MAAMmG,EAAM,+BAAiCA,EAAI,cAAkB,sBAAsB,EACjGpD,GAAQ,IACjB,EAGIskE,EAAqB,SAASlhE,GAChC,IAAIzH,EAASwoE,EAAUxoE,OAAOyH,GAE9B,OADIzH,GAAQqL,EAAK/J,MAAMmG,EAAM,+BAAiCA,EAAI,cAAkB,sBAAsB,EACnGzH,GAAU,IACnB,EAGI4oE,EAAgB,SAASr/D,GAG3B,IAAIX,EAAUtI,KAAKN,QAAU,GACzB6oE,GAHJt/D,EAAMA,GAAO,IAGGs/D,MACZ3wD,EAAU3O,EAAI2O,QACC,YAAf2wD,EAAMrnE,OAAoB0W,EAAU3O,EAAIu/D,QAAQtmE,EAAMxC,OAAOsoE,eAGnD,WAAYO,EAAQA,EAAejgE,GAAT6L,SAC5ByD,EAAUlV,EAAKyR,OAAOyD,CAAO,GAGrCm7C,EAAU9pD,EAAIuG,MAAQ+4D,EAAME,eAAkBF,EAAMxV,SAAWwV,EAAM7c,QAYzE,OATGqH,IACDn7C,EAA6B,YAAnB,OAAOm7C,EACbA,EAAQ3nD,KAAKm9D,EAAOt/D,EAAIu/D,QAASv/D,EAAIA,GAAG,EAC1CrH,EAAO6C,EAAEsuD,CAAO,EAAEn/C,KAAK,GAAK1I,OAAO0M,CAAO,CAAC,EAAE/C,OAAOpQ,EAAEiE,OAAO,CAC7DggE,QAASH,CACX,EAAGt/D,EAAIu/D,OAAO,CAAC,GAIVv/D,EAAIuG,KAAO/K,EAAE,QAASmT,EAAS,QAAQ,EAAEpI,KAAK,EAAIoI,CAC3D,EAGIE,EAAW,QACXg2C,EAAO,eAGPiU,EAAO,aACP4G,EAAS,eAETlE,EAAO,aAEPmE,EAAY,mBAIZC,EAAc,sBACdC,EAAY,oBAIZC,EAAY,uBAGZC,EAAiB,wBACjBC,EAAY,oBACZC,EAAe,sBACfC,EAAY,mBACZ1U,EAAa,oBACb2U,EAAa,sBACbC,EAAmB,0BACnBC,EAAkB,yBAClBC,EAAc,uBAEdC,EAAiB,sBAGjBC,EAAa,SAASnhE,GAIxB,MAAO,CAAC,yEACL,iKACA,UACA,sDACE,OACA,gDACE,oEACA,uDARPA,EAAUA,GAAW,IAUFy8C,OAA2B,UAAlBz8C,EAAQy8C,MACnB,qDAEY,UAAlBz8C,EAAQy8C,MACF,sCAEF,GAER,uDACA,+1BACE,8CACE,6BACE,QACF,kBACE,+BACA,sCACE,mCACF,WACF,WACF,yDACE,wCACE,wJACF,kBACE,oCACA,qBACE,+LACF,WACF,WACF,SACF,QACCz8C,EAAQy8C,MAAQ,YAAc,GACjC,aACA,QACF,aACA,WACF,YAAYrzC,KAAK,EAAE,CACtB,EAGIg4D,EAAW,CAAC,yEACb,iKACA,kBACF,YAAYh4D,KAAK,EAAE,EAGhB2hD,EAAW,CACb,CAAC,6BACA,iCACE,4CACA,4CACF,SACA,WAEA,gCACE,6BACA,iEACE,6FACF,SACA,WAEA,0BACA,mCACEoW,EAAW,EACb,SACA,kDACEC,EACF,SAEA,mBACA,sDACE,mCACED,EAAW,CAAC1kB,MAAO,CAAA,CAAI,CAAC,EAC1B,SACA,iCACE2kB,EACF,SACF,SACA,YAEA,oBACA,iEACE,mCACED,EAAW,CAAC1kB,MAAO,OAAO,CAAC,EAC3B,uCACF,SACA,iCACE2kB,EACF,SACF,SACA,YACF,SAEA,8BACE,kCACE,yEACA,iKACE,yGACH,WACD,SACF,WAEA,+DACE,0FACF,UACDh4D,KAAK,EAAE,EAELy/C,EAAO1sD,EAAE+I,MAAM,EACfk7C,EAAOjkD,EAAEhF,QAAQ,EAGjBiO,EAAQ,SAASpF,GACRtI,KACNuE,MAAQ,EAAErC,EAAMqC,MADVvE,KAENN,OAAS+E,EAAEiE,OAAO,GAFZ1I,KAEqBN,OAAQwC,EAAMxC,OAAQ4I,CAAO,EAFlDtI,KAGN6U,OAAO,CACd,EAq5EI80D,GAl5EJj8D,EAAM1K,UAAUtD,OAAS,CACvB+V,MAAO,GACPm0D,QAAS,CAAA,EACTz1D,OAAQ,CAAA,EACR01D,aAAc,GACdC,aAAc10D,OAAO20D,UACrBC,YAAa,QACbC,eAAgB,CAAC,SAAU,UAAW,SACtCC,mBAAoB,CAAA,EACpBC,SAAU,CAAA,EACV36D,KAAM,CACJg2D,KAAM,oBACR,EACA4E,KAAM,EACR,EAGA18D,EAAM1K,UAAU6R,OAAS,SAAS3T,GAChC,IAAI6C,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAMfyH,GAJJmB,EAAQqF,KAAOlJ,EAAE6D,EAAQqF,IAAI,EAC7BrF,EAAQigD,MAAQjgD,EAAQigD,OAAS,GAGxBjgD,EAAQnB,GAAK,OAAQmB,EAAUA,EAAQnB,GAC9CmB,EAAQqF,KAAKgB,KAAK,IAAI,GAAK5K,EAAKQ,OA+BlC,GA5BA2jE,EAAUnkE,KAAKoD,GAAMpD,GACrBmkE,EAAUxoE,OAAOyH,GAAMmB,GAGfg4D,QAAU77D,EAAEiE,OAAO,CACzB2hE,SAAU,OACVC,UAAW,OACb,EAAGhiE,EAAQg4D,OAAO,EAGlBh4D,EAAQmzC,SAAWh3C,EAAEiE,OAAO,CAC1B6hE,WAAY,OACZ7sB,WAAY,EACZ8sB,QAAS,MACTC,SAAU,OACVC,aAAc,WACdC,UAAW,OACb,EAAGriE,EAAQmzC,QAAQ,EAGC,OAAjBnzC,EAAQyN,MAAyC,UAAxB,OAAOzN,EAAQyN,OACzCzN,EAAQmN,MAAQnN,EAAQyN,KAAKN,OAASnN,EAAQmN,MAC9CnN,EAAQkN,OAASlN,EAAQyN,KAAKP,QAAUlN,EAAQkN,OAChDzR,EAAKgS,KAAOzN,EAAQyN,KAAKR,KAAOjN,EAAQyN,KAAKR,MAAQ,EACrD,OAAOjN,EAAQyN,KAAKpI,KACpB,OAAOrF,EAAQyN,KAAKY,MAGnB,CAACrO,EAAQqF,KAAK,GAAI,OAAO5J,EAQ5B,GALIuE,EAAQqF,KAAKgB,KAAK,YAAY,GAChCrG,EAAQqF,KAAKgB,KAAK,aAAcrG,EAAQnB,EAAE,EAIhC,eAATjG,EAED,OAAO6C,EAAK6mE,SAAS7mE,EAAKgS,KAAM,CAC9B7U,KAAM,YACR,CAAC,EAIHoH,EAAQ/D,MAAQR,EAAKQ,MACrBR,EAAKwE,IAAMD,EAAQnB,IAAMmB,EAAQ/D,MAGjCR,EAAK8mE,QAAQ,EAGVviE,EAAQoL,QAAU,YAAY3O,KAAKuD,EAAQoL,MAAM,GAClD3P,EAAK+mE,cAAgBjpD,WAAWvZ,EAAQoL,OAAO1K,MAAM,GAAG,EAAE,EAAE,GAAK,EACjEV,EAAQoL,OAASy9C,EAAKz9C,OAAO,EAAI3P,EAAK+mE,eAC7BxiE,EAAQoL,QAAU,eAAe3O,KAAKuD,EAAQoL,MAAM,IACzDq3D,EAAYziE,EAAQoL,OAAO1K,MAAM,GAAG,EACxCjF,EAAKinE,gBAAkBnpD,WAAWkpD,EAAUj/C,IAAI,CAAC,GAAK,EACtD/nB,EAAKgnE,UAAYA,EAAUr5D,KAAK,GAAG,EACnCpJ,EAAQoL,OAASjP,EAAEV,EAAKgnE,SAAS,EAAEr3D,OAAO,EAAI3P,EAAKinE,iBAIrD,IAQMv/D,EARF2F,EAAQ9I,EAAQqF,KAChBonD,EAAY3jD,EAAMyE,KAAK,IAAM+yD,CAAS,EAGtChE,EAAS7gE,EAAK4J,KAAOlJ,EAAE,aAAa,EAGxCmgE,EAAO7xD,UACDtH,EAAM,CACRm9D,EACAA,EAAW,IAAK7kE,EAAKQ,MACrB,aACA,oBAEC+D,EAAQ0K,WAAWvH,EAAInG,KAAKgD,EAAQ0K,SAAS,EACzCvH,EAAIiG,KAAK,GAAG,EAClB,EAAE/C,KAAK,CACRs8D,aAAc,qBAAsBlnE,EAAKQ,MACzC2mE,SAAU5iE,EAAQnB,GAClBP,OACM6E,EAAM,GACPnD,EAAQmL,OAAOhI,EAAInG,KAAK,SAAUgD,EAAQmL,MAAQ,KAAK,EAEnDhI,EAAIiG,KAAK,EAAE,EAEtB,CAAC,EAAEkC,KAAKhS,EAAOyxD,EAAU,CACvBr/C,KAAM,KACNC,MAAO,IACT,CAAC,EAAEY,OAAO,CACRhM,KAAMP,EACN/D,MAAOR,EAAKQ,KACd,CAAC,CAAC,EAGFR,EAAKonE,YAAY,EAGjBpW,EAAU,IAAMA,EAAUprD,OAAO,EACjCyH,EAAMu6B,MAAMi5B,CAAM,EAGlB7gE,EAAKqnE,QAAUxG,EAAOh1D,KA/RR,mBA+RsB,EACpC7L,EAAKsnE,OAASzG,EAAOh1D,KA/RR,kBA+RqB,EAClC7L,EAAKunE,UAAY1G,EAAOh1D,KAAKi5D,CAAW,EACxC9kE,EAAKwnE,QAAU3G,EAAOh1D,KA7RR,mBA6RsB,EACpC7L,EAAKynE,QAAU5G,EAAOh1D,KAAKk5D,CAAS,EACpC/kE,EAAK0nE,SAAW7G,EAAOh1D,KA9RR,oBA8RuB,EACtC7L,EAAK2nE,WAAa9G,EAAOh1D,KA9RX,sBA8RyB,EACvC7L,EAAK4nE,YAAc/G,EAAOh1D,KAAKm5D,CAAS,EACxChlE,EAAK6nE,SAAWhH,EAAOh1D,KA9RR,oBA8RuB,EACtC7L,EAAK8nE,QAAUjH,EAAOh1D,KA9RR,mBA8RsB,EAGpC7L,EAAK+nE,cAAc,EAGnB/nE,EAAKgoE,cAAc,EAGnBhoE,EAAKioE,SAAS,EAEdjoE,EAAK6mE,SAAS7mE,EAAKgS,IAAI,EACvBhS,EAAKyI,OAAO,CACd,EAGAkB,EAAM1K,UAAUipE,SAAW,SAAS/nE,GACvBlE,KACQN,OAShBwE,EAAK+wB,WAAU/wB,EAAKhD,KAAO,YAC3BgD,EAAKgoE,QAAOhoE,EAAKhD,KAAO,SACvBgD,EAAKhD,OAAMgD,EAAKhD,KAAO,UAEV,WAAdgD,EAAKhD,OACNgD,EAAKioE,SAAW,CAAA,EAChBjoE,EAAKuP,MAAQvP,EAAKuP,OAdJ,CACdwhB,SAAU,GACVD,MAAO,GACPk3C,MAAO,GACPE,QAAS,EACX,EASuCloE,EAAKhD,MAE9C,EAGAwM,EAAM1K,UAAU6nE,QAAU,SAAS3pE,GACjC,IAKMmrE,EAmBAj5D,EAxBFrP,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAiBnB,GAfA4I,EAAQgkE,YAAchkE,EAAQmL,QAExB44D,EAAW,SAASr8C,GACtB,IAAWotC,EAEX3pD,GADAuc,EAASA,GAAU1nB,EAAQqF,KAAKqiB,OAAO,GACxBvc,MAAM,EACrB,IACE2pD,EAAmC,SAA1BptC,EAAO5c,IAAI,SAAS,CACpB,CAAT,MAAMzO,IACR,MAAGqrB,CAAAA,EAAO,IAAQvc,GAAS2pD,CAAAA,EACpB3pD,EADoC44D,EAASr8C,EAAOA,OAAO,CAAC,CAErE,GACgB,EAGN,UAAT9uB,EAAkB,OAAOoH,EAAQgkE,YAEpChkE,EAAQoL,OAASpL,EAAQw/C,WAAax/C,EAAQoL,OAG3CpL,EAAQ8K,KAA0C,CAAC,IAApC9K,EAAQ8K,IAAI9M,QAAQsiE,CAAS,IACzCx1D,EAAM9K,EAAQ8K,IAAIpK,MAAM,GAAG,EAC/BvF,MAAMa,KAAK8O,EAAK,SAAS7O,EAAOmF,GAC3BA,IACD0J,EAAI7O,GAAS,IAAKqkE,EAAY,IAAK7kE,EAAKQ,MAAQ,IAAMmF,EAE1D,CAAC,EACDpB,EAAQ8K,IAAMA,EAAI1B,KAAK,GAAG,GAI5B,IAAI66D,EAAgB,SAAUC,EAAIC,EAAOC,EAAIC,GAE3C,IAcIC,EAGEC,EAjBDF,GAKLA,EAAMpkE,IAAM,CAACD,EAAQ/D,MAAOioE,EAAIE,GAAIh7D,KAAK,GAAG,EAC5Ci7D,EAAMG,QAAUH,EAAMG,SAAW,EACjCH,EAAMI,QAAUJ,EAAMI,SAAW,EAGjChpE,EAAKkoE,SAASU,CAAK,GAIfC,EAAaJ,GAAM9kE,SAASilE,EAAMI,OAAO,GAAK,IACjCzkE,EAAQ8hE,KAAK1pE,QAC5BisE,EAAMK,SAAW,CAAA,EACbH,EAAa,EACjBppE,MAAMa,KAAKgE,EAAQ8hE,KAAKwC,GAAa,SAAUK,EAAKC,GAE9CA,EAAOC,YAA6B,GAAdN,GAAmBA,IAAeF,EAAMG,SAAW,KAE7EI,EAAOC,WAAa,CAAA,EACpBD,EAAOE,UAAY,CAAC9kE,EAAQ/D,MAAOioE,EAAIE,GAAIh7D,KAAK,GAAG,EACnDm7D,GAA0BnlE,SAA0B,EAAjBwlE,EAAOJ,QAAcI,EAAOJ,QAAU,CAAC,EAC1EP,EAAcK,EAAYtkE,EAAQ8hE,KAAKwC,GAAaK,EAAKC,CAAM,EACjE,CAAC,GAEDP,EAAMK,SAAW,CAAA,EAEnBL,EAAMv6B,KAAOu6B,EAAMv6B,MAAQ,CAACu6B,EAAMK,UAAY,CAAA,GA7B5CP,EAAMjoE,OAAOkoE,EAAI,CAAC,CA8BtB,EAGAjpE,MAAMa,KAAKgE,EAAQ8hE,KAAM,SAASoC,EAAIC,GACpChpE,MAAMa,KAAKmoE,EAAO,SAASC,EAAIC,GACzBH,EACF,OAAOG,EAAMQ,WAEbZ,EAAcC,EAAIC,EAAOC,EAAIC,CAAK,CAEtC,CAAC,CACH,CAAC,CAEH,EAGAj/D,EAAM1K,UAAUmoE,YAAc,WAC5B,IAeWkC,EAELC,EACAn+D,EACAo+D,EAlBFjlE,EADOtI,KACQN,OACf6E,EAFOvE,KAEMuE,MACbiL,EAAO,GAGX/L,MAAMa,KAAKgE,EAAQ8hE,KAAM,SAASoC,EAAIC,GACpChpE,MAAMa,KAAKmoE,EAAO,SAASC,EAAIC,GACzBpkE,EAAM,CAAChE,EAAOioE,EAAIE,GAAIh7D,KAAK,GAAG,EAC9BzD,EAAM0+D,EAAMl5D,MAAQ,CAAC,UAAWk5D,EAAMl5D,MAAO,MAAM/B,KAAK,EAAE,EAAI,GAClElC,EAAKlK,KAAK,kBAAmBiD,EAAK,IAAK0F,EAAK,GAAG,CACjD,CAAC,CACH,CAAC,GAGUo/D,EA6BR/kE,EAAQ+kE,aA3BLC,EAAc,qBAAsB/oE,EAAO,qCAC3C4K,EAAQk+D,EAAUrkE,MAAM,GAAG,EAC3BukE,EAAgB,OAGpB9pE,MAAMa,KAAK6K,EAAO,SAASxO,EAAG6mE,GAE5B,GAAgB,YADhBA,EAAOA,EAAKx+D,MAAM,GAAG,GACZ,GAGP,OAFIiF,EAAM4T,WAAW2lD,EAAK,EAAE,EACvBx7D,MAAMiC,CAAG,IAAGs/D,EAAiBt/D,EAAM,EAAK,MACtC,CAAA,CAEX,CAAC,EAGDxK,MAAMa,KAAK,CACT,IAAK+oE,EAAW,IAChB,+CAAgDE,EAAe,+CAC/D,mDACA9mD,OACA1c,EAAOU,GAAK,CACV,6BAA8B8iE,EAAe,KAC7C,qCAAsCA,EAAe,MACnD,EACN,EAAG,SAAS5sE,EAAGsN,GACbA,GAAOuB,EAAKlK,KAAKgoE,EAAc,IAAMr/D,CAAG,CAC1C,CAAC,GAIC3F,EAAQ8K,KAAK5D,EAAKlK,KAAKgD,EAAQ8K,GAAG,EAGtC5R,EAAIoF,MAAM,CACRwH,OAnDSpO,KAmDI2N,KAAK,GAClB6B,KAAMA,EAAKkC,KAAK,EAAE,EAClBvK,GAAI,YAAa5C,CACnB,CAAC,CACH,EAGAmJ,EAAM1K,UAAU8oE,cAAgB,WAC9B,IACIxjE,EADOtI,KACQN,OAGf8tE,EAAkB,CACpB,8FACA,gGACA,mGACA97D,KAAK,EAAE,EACL+7D,EATOztE,KASaorE,QAAQx7D,KAAK,wBAAwB,EAYzDyF,GAVmB,YAApB/M,EAAQojD,QACT+hB,EAAa75D,KAAK45D,CAAe,EACE,UAA3B,OAAOllE,EAAQojD,UACnBgiB,EAAcjpE,EAAE6D,EAAQojD,OAAO,EAAE93C,KAAK,GAAK,KAChC65D,EAAa75D,KAC1BhS,EAAO8rE,CAAW,EAAE74D,OAAOvM,CAAO,CACpC,EAIW,CACXoE,OAAQ,CACNmT,MAAO,qBACP8tD,SAAU,gBACV9oB,KAAM,iBACR,EACArhD,QAAS,CACPqc,MAAO,eACP8tD,SAAU,kBACV9oB,KAAM,mBACR,EACA+oB,MAAO,CACL/tD,MAAO,eACP8tD,SAAU,iBACV9oB,KAAM,kBACR,CACF,GAAGgpB,EAAW,GAEuB,UAAlC,OAAOvlE,EAAQ2hE,gBAChBxmE,MAAMa,KAAKgE,EAAQ2hE,eAAgB,SAAStpE,EAAGuD,GACzC4pE,EAA2B,UAAhB,OAAO5pE,EAAoBmR,EAAOnR,GAAQA,EACtD4pE,GACDD,EAASvoE,KAAK,oCAAqCwoE,EAASjuD,MAAO,gBAAiBiuD,EAASH,SAC1F,0BAAyBG,EAASjpB,KACpC,cAAQ,CAEb,CAAC,EA/CQ7kD,KAiDNorE,QAAQx7D,KAAK,wBAAwB,EAAEgE,KAAKi6D,EAASn8D,KAAK,EAAE,CAAC,CACpE,EAGAhE,EAAM1K,UAAU+oE,cAAgB,WAC9B,IAOMgC,EANFzlE,EADOtI,KACQN,OAEfsuE,EAHOhuE,KAGWguE,WAAavpE,EAAE,sDAAsD,EAGxF6D,EAAQ2lE,WACLF,EAActpE,EAAE6D,EAAQ2lE,OAAO,EAAEr6D,KAAK,GAAK,KAChCo6D,EAAWn+D,OAAOjO,EAAOmsE,CAAW,EAAEl5D,OAAOvM,CAAO,CAAC,EAR3DtI,KASJ6rE,QAAQh8D,OAAOm+D,CAAU,EAElC,EAGAtgE,EAAM1K,UAAUkrE,aAAe,SAAS97B,EAAMg7B,GAC5C,IACI9kE,EADOtI,KACQN,OAEfyuE,EAHOnuE,KAGSsrE,UAAU17D,KAAK,gBAAiBw9D,EAAW,IAAI,EAC/DgB,EAAgB1mE,SAASymE,EAASx/D,KAAK,SAAS,CAAC,GAAK,EAEvDw/D,EAAS,KACNE,EAAejB,EAAUpkE,MAAM,GAAG,EAClCslE,EAAahmE,EAAQ8hE,KAAKiE,EAAa,IAAIA,EAAa,IAE5Dj8B,EAAOg8B,CAAa,GAAKA,CAAa,GAEtCD,EAASx/D,KAAK,UAAWy/D,CAAa,EACtCD,EAASC,EAAgB,cAAgB,YAAYrM,CAAI,EAEzDuM,EAAWC,SAAWH,EACtBE,EAAWl8B,KAAOg8B,EAAgB,EAG9BI,EAAgBL,EAAStlE,KAAK,WAAW,IAnBpC7I,KAoBakuE,aAAa97B,EAAMo8B,CAAa,CAE1D,EAGA9gE,EAAM1K,UAAUyrE,aAAe,WAC7B,IAAI1qE,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAGnB+D,MAAMa,KAAKgE,EAAQ8hE,KAAM,SAASoC,EAAIC,GACpChpE,MAAMa,KAAKmoE,EAAO,SAASC,EAAIC,GAC1BA,EAAMv6B,MACPruC,EAAKmqE,aAAavB,EAAMv6B,KAAMu6B,EAAMS,SAAS,CAEjD,CAAC,CACH,CAAC,CACH,EAGA1/D,EAAM1K,UAAU0rE,cAAgB,SAASjvD,GACvC,IAMItK,EANApR,EAAO/D,KACG+D,EAAKrE,OAER0qE,KAAK1pE,QAAU,KAGtByU,EAASpR,EAAKunE,UAAU17D,MAE1B6P,EAAM,eAAgBA,EAAG5W,KAAK,WAAW,EAAG,KAAQ,IAClD,IAAMugE,CAAU,GAEbh2D,IAAI,QAAS,CAAC,EACrB3P,MAAMa,KAAK6Q,EAAO2S,IAAI,EAAE5b,QAAQ,EAAG,WACjC,IAAIkF,EAAQ3M,EAAEzE,IAAI,EACduI,EAAM6I,EAAM4e,OAAO,EAAEnnB,KAAK,KAAK,EAC/BkmC,EAAW,EAEfhrC,EAAKunE,UAAUjjD,GAAG,CAAC,EAAEzY,KAAK,qBAAsBrH,EAAK,GAAG,EAAEkL,MAAM,SAAS9S,EAAG8S,GAChEhP,EAAEzE,IAAI,EACTkT,SAAS6uD,CAAI,GACZ,EAARtuD,IAAcs7B,GAAYt7B,EAC5B,CAAC,EAGEs7B,GAAU39B,EAAMgC,IAAI,YAAa27B,EAAW,CAAC,EAG7CtvB,GAAMrO,EAAM4e,OAAO,EAAEnnB,KAAK,WAAW,GACtC9E,EAAK2qE,cAAct9D,EAAM4e,OAAO,CAAC,CAErC,CAAC,EACD7a,EAAO/B,IAAI,QAAS,MAAM,EAC5B,EAGA1F,EAAM1K,UAAUmlE,aAAe,WAC7B,IAmHMwG,EASAlvD,EA5HF1b,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACfkvE,EAAU,EACVC,EAAc,EACdC,EAAY,EACZC,EAAa,EACbC,EAAYjrE,EAAK8mE,QAAQ,OAAO,EAahCoE,GAVJlrE,EAAKmrE,SAAS,SAASvuE,EAAGuD,GACxBA,EAAKkuC,MAAQw8B,CAAO,EACtB,CAAC,EAGDI,EAAYA,GACe,SAAjB1mE,EAAQo8C,MAAoC,QAAjBp8C,EAAQo8C,KAAkB,EAAIkqB,EAAU,GACvE7qE,EAAKorE,eAAeprE,EAAKwnE,QAAQ,EAAE,EAAI,EAG1B,SAAS6D,GAE1B3rE,MAAMa,KAAKgE,EAAQ8hE,KAAM,SAASoC,EAAIC,GACpChpE,MAAMa,KAAKmoE,EAAO,SAASC,EAAIC,GAC7B,IAAIl5D,EAAQ,EACRu7B,EAAW29B,EAAM39B,UAAY1mC,EAAQuhE,aACrC96B,EAAW49B,EAAM59B,UAAYzmC,EAAQwhE,aAErC6C,EAKDA,EAAMK,UAAYL,EAAMv6B,OAEvBg9B,EAeMN,GAAaA,EAAY9/B,GACjC6/B,CAAW,GACXp7D,EAAQu7B,GACA8/B,GAAyB//B,EAAZ+/B,IACrBD,CAAW,GACXp7D,EAAQs7B,IAnBRt7B,EAAQk5D,EAAMl5D,OAAS,EACpB,QAAQ1O,KAAK0O,CAAK,EAGXs7B,GADat7B,GADrBA,EAAQjF,KAAK2H,MAAO0L,WAAWpO,CAAK,EAAI,IAAOu7D,CAAS,GAChDhgC,EAAqBA,EAC7Bv7B,KAAqBA,EAAQs7B,GACpBt7B,EAGc,WAAfk5D,EAAMzrE,OAEduS,EAAQu7B,IAAa29B,EAAMl5D,MAAQA,EAAQu7B,GAEnCD,EAARt7B,KAAqBk5D,EAAMl5D,MAAQA,EAAQs7B,IAN3C49B,EAAMl5D,MAAQA,EAAQ,EACtBo7D,CAAW,KAeZlC,EAAMv6B,OAAM3+B,EAAQ,GACvBs7D,GAA0Bt7D,GA9BxBg5D,EAAMjoE,OAAOkoE,EAAI,CAAC,CA+BtB,CAAC,CACH,CAAC,EAGYqC,EAAZC,GAAwC,EAAdH,IACzBC,GAAaE,EAAYD,GAAcF,EAE3C,GA6CIQ,GA3CJJ,EAAa,EACbA,EAAa,CAAA,CAAI,EAGjBlrE,EAAK8qE,YAAcA,EAA4B,EAAdA,EAAkBA,EAAc,EAGjE9qE,EAAKmrE,SAAS,SAASI,EAAI/G,GACzB,IAAIv5B,EAAWu5B,EAAMv5B,UAAY1mC,EAAQuhE,aACrC96B,EAAWw5B,EAAMx5B,UAAYzmC,EAAQwhE,aAEtCvB,EAAMyE,UAAYzE,EAAMn2B,OAGR,IAAhBm2B,EAAM90D,MACP1P,EAAKuL,SAASi5D,EAAMhgE,IAAK,SAASrE,GAChCA,EAAK0C,MAAM6M,MAAQjF,KAAK2H,MACnB24D,EAAY9/B,EAAiBA,EACjBD,EAAZ+/B,EAA6B//B,EACzB+/B,CACN,EAAI,IACT,CAAC,EAIK,QAAQ/pE,KAAKwjE,EAAM90D,KAAK,EAC9B1P,EAAKuL,SAASi5D,EAAMhgE,IAAK,SAASrE,GAChC,IAAIuP,EAAQjF,KAAK2H,MAAO0L,WAAW0mD,EAAM90D,KAAK,EAAI,IAAOu7D,CAAS,EAGlE9qE,EAAK0C,MAAM6M,OADUA,EAAbs7B,GADat7B,EAArBA,EAAQu7B,EAAqBA,EAC7Bv7B,GAA6Bs7B,EACVt7B,GAAQ,IAC7B,CAAC,EAKD1P,EAAKuL,SAASi5D,EAAMhgE,IAAK,SAASrE,GAChCA,EAAK0C,MAAM6M,MAAQ80D,EAAM90D,MAAQ,IACnC,CAAC,EAEL,CAAC,EAGe1P,EAAKwnE,QAAQ93D,MAAM,EAAI1P,EAAKorE,eAAeprE,EAAKwnE,QAAQ,EAAE,EACxExnE,EAAKwnE,QAAQ34D,SAAS,OAAO,EAAE60C,WAAW,GAEtB,EAAnB1jD,EAAK8qE,aAAgC,CAACD,GAAdS,GAAyBA,GAAaT,IAW3DrmE,GADAkX,GATAkvD,EAAW,SAASlvD,GAItB,MAAG,EAFHA,EAAKA,GAAM1b,EAAKunE,UAAUjjD,GAAG,CAAC,EAAEzY,KAAK,wCAAwC,GAClE/G,KAAK,OAAO,GACV4W,EAAG7J,KAAK,EAAE,GACd+4D,EAASlvD,EAAG7J,KAAK,CAAC,EAEpB6J,CACT,GACkB,GACL5W,KAAK,KAAK,EAEvB9E,EAAKuL,SAAS/G,EAAK,SAASrE,GAC1B,IAAIuP,EAAQvP,EAAK0C,MAAM6M,OAASgM,EAAGgoC,WAAW,EAC9CvjD,EAAK0C,MAAM6M,MAASoO,WAAWpO,CAAK,EAAI47D,EAAa,KAGU,EAA5DtrE,EAAKwnE,QAAQ73D,OAAO,EAAI3P,EAAKwnE,QAAQ/qC,KAAK,cAAc,IACzDt8B,EAAK0C,MAAM6M,MAASoO,WAAW3d,EAAK0C,MAAM6M,KAAK,EAAI,EAAK,KAE5D,CAAC,GAGH1P,EAAK2qE,cAAc,EAGf3qE,EAAKwnE,QAAQ37D,KAAK,OAAO,EAAE+oB,GAAG,QAAQ,GAEpC42C,EAAcxrE,EAAKunE,UAAUr1D,MAAM,EAAErD,SAAS,OAAO,EAAEa,MAAM,EACjE1P,EAAKwnE,QAAQ37D,KAAK,OAAO,EAAE6D,MAAM87D,CAAW,GAE5CxrE,EAAKwnE,QAAQ37D,KAAK,OAAO,EAAE6D,MAAM,MAAM,EAGzC1P,EAAK6lE,QAAQ,CAAA,CAAE,CACjB,EAGAl8D,EAAM1K,UAAUihD,OAAS,WACZjkD,KAEDurE,UAFCvrE,KAINgsE,SAAS,EAJHhsE,KAKNmoE,aAAa,EALPnoE,KAMNwvE,YAAY,EACnB,EAGA9hE,EAAM1K,UAAU6U,OAAS,SAASvP,EAASkgB,EAAMtnB,GAC/C,IAAI6C,EAAO/D,KAEXsI,EAAUA,GAAW,GACrB,OAAOvE,EAAK0rE,SAGZhsE,MAAMa,KAAKgE,EAAS,SAASC,EAAKrE,GACR,UAArBT,MAAMvC,KAAKgD,CAAI,GAAe,OAAOH,EAAKrE,OAAO6I,EACtD,CAAC,EAGDxE,EAAKrE,OAAS+E,EAAEiE,OAAO8f,EAAM,GAAIzkB,EAAKrE,OAAQ4I,CAAO,EACxC,eAATpH,IACFuC,MAAMa,KAAKP,EAAKrE,OAAO0qE,KAAM,SAAUoC,EAAIC,GACzChpE,MAAMa,KAAKmoE,EAAO,SAAUC,EAAIC,GAC9B,OAAOA,EAAM4B,QACf,CAAC,CACH,CAAC,EACD,OAAOxqE,EAAKrE,OAAOgwE,oBAGrB3rE,EAAK8Q,OAAO3T,CAAI,CAClB,EAGAwM,EAAM1K,UAAU2sE,UAAY,SAAS/7D,GACnC,IAAI7P,EAAO/D,KACV4vE,EAAW7rE,EAAKwnE,QAAQ37D,KAAK,IAAK60D,CAAI,EACtCoL,EAAUprE,EAAE,eAAgBggE,EAAM,MAAO7wD,GAAQ,SAAU,QAAQ,EAEjEg8D,EAAS,KACV7rE,EAAK8rE,QAAQlmE,OAAO,EACpBimE,EAASjmE,OAAO,GAGlB5F,EAAK0nE,SAAS14D,SAASgvD,CAAI,EAC3Bh+D,EAAKwnE,QAAQ37D,KAAK,OAAO,EAAEgE,KAAK,EAAE,EAElC7P,EAAKwnE,QAAQ17D,OAAO9L,EAAK8rE,QAAUA,CAAO,EAG1C9rE,EAAK6nE,SAAS74D,SAAS41D,CAAM,EAC7B5kE,EAAK8nE,QAAQj8D,KAAKo5D,CAAc,EAAEj2D,SAAS41D,CAAM,EAEjDzmE,EAAMe,MAAMc,EAAKwE,KAAO,GAExBxE,EAAK+rE,aAAa,EAClB/rE,EAAKgsE,WAAW,EAChBhsE,EAAKokE,aAAa,CACpB,EAGAz6D,EAAM1K,UAAU+S,KAAO,EAGvBrI,EAAM1K,UAAU4nE,SAAW,SAASr1D,EAAMxF,GACxC,IAyGE6wD,EACIoP,EA1GFjsE,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAIf4gE,GAFJh4D,EAAQonE,oBAAsB3rE,EAAK0qE,aAAa,EAChDnmE,EAAQonE,mBAAqB,CAAA,EACfpnE,EAAQg4D,SAClB7kB,EAAWnzC,EAAQmzC,SAEnBjwC,EAAO,WACsB,UAA5B,OAAOlD,EAAQ2nE,UAChBlsE,EAAKyH,KAAK,CACRqzD,MAAOv2D,EAAQ2nE,SAASpR,MACxB39D,KAAMoH,EAAQ2nE,SAAS/uE,KACvBgvE,WAAYngE,EAAK7O,IACnB,CAAC,CAEL,EACIkR,EAAO,SAASwuD,EAAKuF,GACvBpiE,EAAKokE,aAAa,EACM,YAAxB,OAAO7/D,EAAQ8J,MAAuB9J,EAAQ8J,KAC5CwuD,EAAKrrD,EAAMqrD,EAAInlB,EAASkvB,WAAYxE,CACtC,CACF,EAEAp2D,EAAOA,GAAQ,GAGW,YAA1B,OAAOzH,EAAQojC,QAAyBpjC,EAAQojC,OAC9CpjC,CACF,EACAvE,EAAKyW,WAAY,IAAItU,MAAOC,QAAQ,EAEhC4J,EAAKogE,aACPvP,EAAM,IACFnlB,EAASgvB,UAAYvoE,EAAMe,MAAMc,EAAKwE,KAC1Cq4D,EAAInlB,EAASkvB,WAAariE,EAAQxE,IAAoC,WAA7BL,MAAMvC,KAAKoH,EAAQyN,IAAI,EAAiBzN,EAAQyN,KAAKT,MAAQsrD,EAAInlB,EAASgvB,UAAU/pE,OAAU4H,EAAQO,KAAKnI,OAGrH,UAA5B,OAAO4H,EAAQ8nE,WAChBxP,EAAInlB,EAASivB,cAAgBjmE,EAAEiE,OAAO,GAAI3E,EAAKqsE,QAAQ,GAGzDrsE,EAAKosE,WAAW,CACdvP,IAAKA,EACLrrD,KAAMA,EACND,MAAOsrD,EAAInlB,EAASkvB,WACpBzpE,KAAM6O,EAAK7O,KACXsK,KAAM,CAAA,CACR,CAAC,EAAG4G,EAAKwuD,EAAK,YAAY,GAClBt4D,EAAQxE,KACZ2I,EAAS,GAEVnE,EAAQyN,OACTtJ,EAAO6zD,EAAQ+J,UAAY90D,EAC3B9I,EAAO6zD,EAAQgK,WAAahiE,EAAQmN,OAIlC5M,EAAOpE,EAAEiE,OAAO+D,EAAQnE,EAAQigD,KAAK,EACtCjgD,EAAQg0C,aAAkE,GAAnDh0C,EAAQg0C,YAAYh2C,QAAQ,kBAAkB,IACtEuC,EAAOW,KAAKI,UAAUf,CAAI,GAG5B9E,EAAK6lE,QAAQ,EAEbnlE,EAAEu4C,KAAK,CACL97C,KAAMoH,EAAQk2C,QAAU,MACxB16C,IAAKwE,EAAQxE,IACbw4C,YAAah0C,EAAQg0C,YACrBzzC,KAAMA,EACN8xC,SAAUryC,EAAQqyC,UAAY,OAC9BgH,cAAer5C,EAAQq5C,cACvB9C,QAASv2C,EAAQu2C,SAAW,GAC5B12C,SAAsC,YAA5B,OAAOG,EAAQH,SAA0BG,EAAQH,SAAWmL,UACtEirC,QAAS,SAASqiB,IAGdA,EAD8B,YAA7B,OAAOt4D,EAAQ+nE,UACV/nE,EAAQ+nE,UAAUzP,CAAG,GAAKA,EAG/BA,GAAInlB,EAAS8uB,aAAe9uB,EAASiC,WACtC35C,EAAK4rE,UACH/O,EAAInlB,EAAS+uB,UACZ,wIAA2B/uB,EAAS8uB,WAAY,MAAO9uB,EAASiC,UACnE,GAEA35C,EAAKqsE,SAAWxP,EAAInlB,EAASivB,cAC7B3mE,EAAKosE,WAAW,CACdvP,IAAKA,EACLrrD,KAAMA,EACND,MAAOsrD,EAAInlB,EAASkvB,WACpBzpE,KAAM6O,EAAK7O,IACb,CAAC,EAAGsK,EAAK,EAGTlD,EAAQgS,MAAQ,IAAIpU,MAAOC,QAAQ,EAAIpC,EAAKyW,UAAa,OAE3DpI,EAAKwuD,CAAG,CACV,EACA5/D,MAAO,SAAS2D,EAAG1D,GACjB8C,EAAK4rE,UAAU,+DAAc1uE,CAAG,EACP,YAAzB,OAAOqH,EAAQtH,OAAwBsH,EAAQtH,MAAM2D,EAAG1D,CAAG,CAC7D,CACF,CAAC,GACoC,UAA7BwC,MAAMvC,KAAKoH,EAAQO,IAAI,IAC/B+3D,EAAM,GACFoP,EAAaz6D,EAAKjN,EAAQmN,MAAQnN,EAAQmN,MAC1C66D,EAAUhoE,EAAQO,KAAK4d,OAAO,EAElCm6C,EAAInlB,EAASgvB,UAAYniE,EAAQyN,KAC7Bu6D,EAAQ9rE,OAAOwrE,EAAY1nE,EAAQmN,KAAK,EAC1C66D,EACF1P,EAAInlB,EAASkvB,WAAariE,EAAQO,KAAKnI,OAGR,UAA5B,OAAO4H,EAAQ8nE,WAChBxP,EAAInlB,EAASivB,cAAgBjmE,EAAEiE,OAAO,GAAIJ,EAAQ8nE,QAAQ,GAE5DrsE,EAAKqsE,SAAWxP,EAAInlB,EAASivB,cAE7B3mE,EAAKosE,WAAW,CACdvP,IAAKA,EACLrrD,KAAMA,EACND,MAAOsrD,EAAInlB,EAASkvB,WACpBzpE,KAAM6O,EAAK7O,IACb,CAAC,EAAGsK,EAAK,EAET4G,EAAKwuD,CAAG,EAEZ,EAGAlzD,EAAM1K,UAAUksE,SAAW,SAASxrE,GAGlC,OADAxB,EAAMgtE,SAAS,KAAMxrE,EADV1D,KACyBN,OAAO0qE,IAAI,EADpCpqE,IAGb,EAGA0N,EAAM1K,UAAU+/B,IAAM,SAASx6B,GAC7B,IAEE,OADAA,EAAMA,EAAIS,MAAM,GAAG,EACZhJ,KAAKN,OAAO0qE,KAAK7hE,EAAI,IAAIA,EAAI,KAAO,EAI7C,CAHE,MAAM5D,GAEN,OADAoG,EAAK/J,MAAM2D,CAAC,EACL,EACT,CACF,EAEA+I,EAAM1K,UAAUutE,UAAY,SAAS1nE,EAAM2C,EAAM+J,EAAMi7D,GACrD,IAAIzsE,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACf+wE,EAAMD,GAAUA,EAAOC,KAAO,GAC9BC,EAAYF,GAAUA,EAAOE,WAAa,GAC1CC,EAAcH,GAAUA,EAAOG,aAAe,GAoIlD,OAnIAp7D,EAAOA,GAAQ,EAEf9R,MAAMa,KAAKuE,EAAM,SAAS2jE,EAAIC,GAC5B,IAAI5pD,EAAM,GACN+tD,EAAY,GACZC,EAAc,GACdzE,EAAUI,EAAKlkE,EAAQmN,OAAOF,EAAO,GAAK,EAG9C,GAAoB,UAAjB,OAAOk3D,EAAmB,CAC3B5jE,EAAK2jE,GAAMC,EAAQ,CAACqE,QAASrE,CAAK,EAClC,IACEvqE,EAAMe,MAAMc,EAAKwE,KAAKikE,GAAMC,CAClB,CAAV,MAAM9nE,IACV,CAGyB,UAAtBlB,MAAMvC,KAAKurE,CAAK,GAAkC,IAAjBA,EAAM/rE,SAG1C+rE,EAAMvqE,EAAMxC,OAAOsoE,aAAeoE,EAG9B5gE,IAAMihE,EAAMvqE,EAAMxC,OAAOqoE,WAAayE,GAG1CzoE,EAAKmrE,SAAS,SAASI,EAAI/G,GACzB,IAYYwI,EAZRlS,EAAQ0J,EAAM1J,OAASyQ,EACvB/mE,EAAMggE,EAAMhgE,IACZqP,EAAU60D,EAAM5N,GAEjBjnD,IAAYtE,WAAyB,OAAZsE,IAAkBA,EAAU,IACrD2wD,EAAMyE,WAGL9qD,EAAK,CAAC,mBAAoB28C,EAAO,eAAgBt2D,EAAK,MAEpDoG,EAAO,IAEDoiE,EAEe,YAAtB,OAAOxI,EAAMwI,KAAsBxI,EAAMwI,KAAKtE,CAAK,EAAIlE,EAAMwI,OADrDpiE,EAAKrJ,KAAK,cAAeyrE,EAAM,GAAG,EAE1CxI,EAAMxV,SAASpkD,EAAKrJ,KAAK,iBAAkB5C,EAAKyR,OAAOyD,CAAO,EAAG,GAAG,EACpE2wD,EAAM7c,SAAS/8C,EAAKrJ,KAAK,iBAAiB,EAC1CijE,EAAMzoE,OAAO6O,EAAKrJ,KAAK,cAAeijE,EAAMzoE,MAAO,GAAG,EACtDyoE,EAAMv5B,UAAUrgC,EAAKrJ,KAAK,kBAAmBijE,EAAMv5B,SAAU,GAAG,EAChEu5B,EAAMx5B,UAAUpgC,EAAKrJ,KAAK,kBAAmBijE,EAAMx5B,SAAU,GAAG,EAChEw5B,EAAM3hE,OAAO+H,EAAKrJ,KAAK,UAAWijE,EAAM3hE,MAAO,GAAG,EAC9C+H,EAAK+C,KAAK,GAAG,GACjB,YACCsnC,EAAa,GACduvB,EAAMn2B,MAAM4G,EAAW1zC,KAAKy8D,CAAI,EAC/BwG,EAAM1J,OAAO7lB,EAAW1zC,KAAK+jE,CAAgB,EAC1CrwB,EAAWtnC,KAAK,GAAG,GACvB,KACF,+CACuB,WAAf62D,EAAMrnE,KAAoBqH,EAC5BA,EAAM,kBAAoBggE,EAAMrnE,MAClC,KACFqnE,EAAMt3D,MAAQ,WAAYs3D,EAAMt3D,MAAO,IAAM,IAC/C,IACC,WACA,IAWUxF,EAXN+8D,EAAU/jE,EAAEiE,OAAO,CAAA,EAAM,CAC3BggE,QAASH,CACX,EAAGkE,CAAK,EACJ3E,EAAY5lE,EAAMxC,OAAOooE,UACzBG,EAAe/lE,EAAMxC,OAAOuoE,aAGhC,OAAOM,EAAMrnE,MACX,IAAK,WACH,MAAO,sEAEDuK,EAAM,GAGP88D,EAAMT,KACP2E,EAAM3E,GAAaS,EAAMT,GACtBS,EAAMT,MAAYr8D,EAAI,GAAK,WAE7B+8D,EAAQV,KAAYr8D,EAAI,GAAK,WAG7B+8D,EAAQP,IAAex8D,EAAInG,KAAK,UAAU,EAEtCmG,EAAIiG,KAAK,GAAG,GAChB,gCAEP,IAAK,QACH,MAAO,2CAA4CpJ,EAAQ/D,MAAO,MAE1DkH,EAAM,GACP+8D,EAAQV,KAAYr8D,EAAI,GAAK,WAC7B+8D,EAAQP,IAAex8D,EAAInG,KAAK,UAAU,EACtCmG,EAAIiG,KAAK,GAAG,GAChB,6BAET,IAAK,UACH,OAAO06D,CAEX,CAGA,OAAG7D,EAAM7c,QACA9pD,EAAO6C,EAAE8jE,EAAM7c,OAAO,EAAE93C,KAAK,GAAG,EAAE,EAAEiB,OAAO2zD,CAAO,EAEpDF,EAAcl9D,KAAKrH,EAAM,CAC9BwkE,MAAOA,EACN3wD,QAASA,EACT4wD,QAASA,CACZ,CAAC,CACH,EAAE,EACD,eAAe92D,KAAK,EAAE,EAEzBmR,EAAIvd,KAAK4c,CAAE,EACRqmD,EAAMxjB,OAAyB,UAAhBwjB,EAAMxjB,OAAmB6rB,EAAUtrE,KAAK4c,CAAE,EACzC,UAAhBqmD,EAAMxjB,OAAmB8rB,EAAYvrE,KAAK4c,CAAE,EACjD,CAAC,EAIKzW,EAAM,CAAC,eAAgB+gE,EAAI,KAC5BC,EAAMvqE,EAAMxC,OAAOooE,YAAYr8D,EAAInG,KAAK,UAAW4jE,EAAc,GAAG,EAFrE8H,EAGKvlE,EAAIiG,KAAK,GAAG,EAGrB++D,EAAInrE,KAAK,OAAQ0rE,EAAQ,IAAKnuD,EAAInR,KAAK,EAAE,EAAI,OAAO,EACpDg/D,EAAUprE,KAAK,OAAQ0rE,EAAQ,IAAKJ,EAAUl/D,KAAK,EAAE,EAAI,OAAO,EAChEi/D,EAAYrrE,KAAK,OAAQ0rE,EAAQ,IAAKH,EAAYn/D,KAAK,EAAE,EAAI,OAAO,EACtE,CAAC,EAEM,CACL++D,IAAKA,EACLC,UAAWA,EACXC,YAAaA,CACf,CACF,EAGAzuE,EAAMquE,UAAY,SAAUppE,EAAI0B,GAC1B9E,EAAOqkE,EAAajhE,CAAE,EAC1B,OAAOpD,EAAKwsE,UAAU1nE,EAAM,KAAM9E,EAAKgS,IAAI,CAC7C,EAGArI,EAAM1K,UAAUmtE,WAAa,SAASpgE,GACpC,IAAIhM,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAEfkhE,EAAM7wD,EAAK6wD,IACXrrD,EAAOxF,EAAKwF,KACZD,EAAQvR,EAAKuR,MAAQvF,EAAKuF,MAC1B9J,EAAOuE,EAAKvE,KAEZ3C,EAAO+3D,EAAIt4D,EAAQmzC,SAASgvB,WAAa,GACzCwG,EAAerQ,EAAIt4D,EAAQmzC,SAASivB,cACpC+F,EAAM,GACNC,EAAY,GACZC,EAAc,GAGd97D,EAAS,WACX,GAAG,CAACrJ,GAAQzH,EAAKmtE,QACf,OAAOntE,EAAKyH,KAAK,CACfqzD,MAAO96D,EAAKmtE,QAAQrS,MACpB39D,KAAM6C,EAAKmtE,QAAQ1lE,KACnB2lE,KAAM,CAAA,EACNjB,WAAYngE,EAAK7O,IACnB,CAAC,EAEH6C,EAAKwsE,UAAU1nE,EAAM2C,EAAM+J,EAAM,CAC/Bk7D,IAAKA,EACLC,UAAWA,EACXC,YAAaA,CACf,CAAC,EAG0B,UAAtBroE,EAAQ8oE,WAAuC,eAAdrhE,EAAK7O,MACzC6C,EAAKynE,QAAQjnD,UAAU,CAAC,EAED,UAAtBjc,EAAQ8oE,WACTrtE,EAAKynE,QAAQpjC,WAAW,CAAC,EAG3BrkC,EAAKwnE,QAAQ37D,KAAK,IAAK60D,CAAI,EAAE96D,OAAO,EACpC5F,EAAKwnE,QAAQ37D,KAAK,OAAO,EAAEgE,KAAK68D,EAAI/+D,KAAK,EAAE,CAAC,EAC5C3N,EAAK2nE,WAAW97D,KAAK,OAAO,EAAEgE,KAAK88D,EAAUh/D,KAAK,EAAE,CAAC,EACrD3N,EAAK4nE,YAAY/7D,KAAK,OAAO,EAAEgE,KAAK+8D,EAAYj/D,KAAK,EAAE,CAAC,EAGxD3N,EAAK+rE,aAAa,EAClB/rE,EAAKgsE,WAAW,EAGhBhsE,EAAKioE,SAAS,EAGdjoE,EAAK0rE,SAAW1rE,EAAKyrE,YAAY,EAAInqE,WAAW,WAC9CtB,EAAKyrE,YAAY,CACnB,EAAG,EAAE,EACLzrE,EAAK0rE,SAAW,CAAA,EAEhBhuE,EAAMwS,MAAMlQ,EAAKstE,SAAS,CAC5B,EAgBA,OAdAnvE,EAAMe,MAAMc,EAAKwE,KAAOM,EAGxB9E,EAAK6nE,SAAwB,GAAf/iE,EAAKnI,OAAc,WAAa,eAAeioE,CAAM,EAGnE5kE,EAAK8nE,QAASvjE,EAAQyN,MAAQzN,EAAQ2lE,QAAW,cAAgB,YAAYlM,CAAI,EACjFh+D,EAAK8nE,QAAQj8D,KAAKo5D,CAAc,EAC7B,CAAC1gE,EAAQyN,MAAiB,GAATT,GAA+B,IAAhBzM,EAAKnI,QAAwB,GAAR6U,EAClD,WACF,eACFozD,CAAM,EAGW,IAAhB9/D,EAAKnI,OACCqD,EAAK4rE,UAAUrnE,EAAQkH,KAAKg2D,IAAI,GAEvCzhE,EAAK2nE,WAAWz4D,YAAY8uD,CAAI,EAI/Bv2D,EACMqJ,EAAO,GAIhBA,EAAO,EACP9Q,EAAKutE,YAAYzoE,EAAMooE,CAAY,EACnCltE,EAAK6nE,UAAY7nE,EAAK6nE,SAAS34D,YAAY8uD,CAAI,EAF/CltD,KAKGvM,EAAQyN,OACTzN,EAAQyN,KAAOtR,EAAEiE,OAAO,CACtBiF,KAAM,mBAAqBrF,EAAQ/D,MACnC+Q,MAAOA,EACPG,MAAOnN,EAAQmN,MACfD,OAAQlN,EAAQkN,QAAU,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IACnDL,OAAQ,EACRE,OAAQ,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,SAClDO,KAAM,qCACNC,KAAM,qCACNc,KAAM,SAAS1N,EAAKgN,GACdA,IAGFlS,EAAKgS,KAAO9M,EAAIsM,KAChBjN,EAAQmN,MAAQxM,EAAIwM,MAEpB1R,EAAK6mE,SAAS3hE,EAAIsM,IAAI,EAE1B,CACF,EAAGjN,EAAQyN,IAAI,EACfzN,EAAQyN,KAAKT,MAAQA,EACrB3T,EAAQkT,OAAOvM,EAAQyN,IAAI,KAE/B,EAGA7T,EAAMiuE,WAAa,SAAUhpE,GACvBpD,EAAOqkE,EAAajhE,CAAE,EACrBpD,GAILA,EAAK6mE,SAAS7mE,EAAKgS,KAAM,CACvBo6D,WAAY,CAAA,EACZjvE,KAAM,YACR,CAAC,CACH,EAGAwM,EAAM1K,UAAUsuE,YAAc,SAASzoE,EAAMooE,GAC3C,IAsBIpuD,EAtBA9e,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACf6xE,EAAY,GAEZjpE,EAAQ8nE,WAEZ3sE,MAAMa,KAAKuE,EAAM,SAAS2jE,EAAIC,GAEH,UAAtBhpE,MAAMvC,KAAKurE,CAAK,GAAkC,IAAjBA,EAAM/rE,QAE1CqD,EAAKmrE,SAAS,SAASI,EAAI/G,GACzB,IAAI1J,EAAQ0J,EAAM1J,OAASyQ,EAC1B13D,EAAU60D,EAAM5N,GAEd0J,EAAM6H,WACPmB,EAAU1S,IAAU0S,EAAU1S,IAAU,IAAMh9C,WAAWjK,CAAO,GAAK,GAEzE,CAAC,CACH,CAAC,EAED7T,EAAKytE,UAAY,GAEb3uD,EAAM,GACV9e,EAAKmrE,SAAS,SAASI,EAAI/G,GACzB,IAwCM55D,EAxCFkwD,EAAQ0J,EAAM1J,OAASyQ,EAGvBmC,EAAaR,GAAgBA,EAAa1I,EAAM1J,OAGhDuE,EAAW,qBAAsBmF,EAAQA,EAAMmJ,iBAAmB,EAClEC,EAAeJ,EAAU1S,GACzBh9C,WAAW0vD,EAAU1S,IAAU,CAAC,EAAE8C,QAAQyB,CAAQ,EACpD,GAGExrD,GACEpI,EAAO+4D,EAAMqJ,cAAgB,IAC7BpJ,EAAU,CACZE,QAASH,CACX,GAEQ1J,GAAS8S,EAGbE,EAAatJ,EAAM6H,UAAY9H,EAAcl9D,KAAKrH,EAAM,CAC1DwkE,MAAOA,EACP3wD,QAAS+5D,EACTnJ,QAASA,CACX,CAAC,GAAah5D,EAGPiiE,GAAcI,GAWnB3vD,GANJqmD,EAAM1J,OAAS96D,EAAKytE,UAAUlsE,KAAK,CACjCu5D,MAAO0J,EAAM1J,MACbwB,MAAO57D,EAAE,QAASmT,EAAS,QAAQ,EAAEpI,KAAK,CAC5C,CAAC,EAGQ,CAAC,mBAAoBqvD,EAAO,eAAgB0J,EAAMhgE,IAAK,MAC1DoG,EAAO,GACR45D,EAAMv5B,UAAUrgC,EAAKrJ,KAAK,kBAAmBijE,EAAMv5B,SAAU,GAAG,EAChEu5B,EAAMx5B,UAAUpgC,EAAKrJ,KAAK,kBAAmBijE,EAAMx5B,SAAU,GAAG,EAChEw5B,EAAM3hE,OAAO+H,EAAKrJ,KAAK,UAAWijE,EAAM3hE,MAAO,GAAG,EAC9C+H,EAAK+C,KAAK,GAAG,GACjB,YACCsnC,EAAa,GACduvB,EAAMn2B,MAAM4G,EAAW1zC,KAAKy8D,CAAI,EAC/BwG,EAAM1J,OAAO7lB,EAAW1zC,KAAK+jE,CAAgB,EAC1CrwB,EAAWtnC,KAAK,GAAG,GACvB,KACH,+CACMnJ,EAAMggE,EAAMhgE,IACM,WAAfggE,EAAMrnE,KAAoBqH,EAC9BA,EAAM,kBAAoBggE,EAAMrnE,MAChC,KACDyN,EAAO,GACR45D,EAAMt3D,OAAOtC,EAAKrJ,KAAK,UAAWijE,EAAMt3D,MAAO,GAAG,EAC9CtC,EAAK+C,KAAK,GAAG,GACjB,KAIsB,UAApB,OAHC0+D,EAAW7H,EAAM6H,UAAY9nE,EAAQ8nE,UAIhCxuE,EAAOwuE,CAAQ,EAAEv7D,OAAOpQ,EAAEiE,OAAO,CACtC+oE,WAAYA,GAAcF,EAAU1S,GACpCiT,UAAWb,GAAgB,GAC3BvI,QAASH,CACX,EAAGA,CAAK,CAAC,EAEJ3wD,GAEX,eAAelG,KAAK,EAAE,GAEtBmR,EAAIvd,KAAK4c,CAAE,CACb,CAAC,EAEG6vD,EAAYhuE,EAAK6nE,SAASh8D,KAAK,oBAAoB,EACvD7L,EAAK6nE,SAASh8D,KAAK,OAAO,EAAEgE,KAAK,OAASiP,EAAInR,KAAK,EAAE,GAAKqgE,EAAUrxE,OAASqxE,EAAUjqD,IAAI,CAAC,EAAEwa,UAAY,IAAM,OAAO,EACzH,EAGA50B,EAAM1K,UAAUgvE,WAAa,SAAShiD,EAAQznB,GAG5C,OAAOynB,EAAO3H,GAAG,CAAC,EAAEzY,KAAK,kBAAmBrH,EAAM,QAAQ,CAC5D,EAGAmF,EAAM1K,UAAU+sE,WAAa,SAAS7uE,GACzBlB,KACQN,OADnB,IAEIgN,EAFO1M,KAEO2N,KAAKgB,KAAK,YAAY,EACxC9M,EAAKgT,OAAO3T,EAAMwL,CAAM,CAC1B,EAGAgB,EAAM1K,UAAU8sE,aAAe,WAC7B,IAG6Bt7C,EAHzBzwB,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACfuyE,EAAeluE,EAAKunE,UAAU17D,KAAK,gCAAgC,EASnEsiE,EAAchwE,EAAMgwE,YAAYnuE,EAAKwE,GAAG,EAExC0pE,EAAa,KAVYz9C,EAaf09C,EAAYC,MAZxBpuE,EAAKmrE,SAAS,SAASvuE,EAAGuD,GACP,aAAdA,EAAKhD,OACNgD,EAAKoE,EAAQw/D,WAAatzC,EAE9B,CAAC,EASHy9C,EAAazxC,KAAK,CAChBhM,QAAS09C,EAAYC,MACrBzL,cAAe,CAACwL,EAAYC,OAASD,EAAYrpE,KAAKnI,MACxD,CAAC,EACDmB,EAAKgT,OAAOo9D,CAAY,EAC1B,EAGAvkE,EAAM1K,UAAUovE,aAAe,SAAS7tE,EAAOyO,EAAWC,GAC7CjT,KACQN,OACf4f,EAFOtf,KAEGwrE,QAAQ57D,KAAK,kBAAmBrL,EAAO,IAAI,EAGzD,GAFAyO,EAAYA,GAAa,oBAEtBC,EAAa,OAAOqM,EAAGrM,YAAYD,CAAS,EAE/CsM,EAAGvM,SAASC,CAAS,EACrBsM,EAAGsZ,SAAS,IAAI,EAAE3lB,YAAYD,CAAS,CACzC,EAGAtF,EAAM1K,UAAUqvE,cAAgB,SAAStiE,GACvC,IAAIhM,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACf4f,EAAKvb,EAAKynE,QAAQ57D,KAAK,MACV,QAAfG,EAAKxL,MAAkB,GAAK,gBAAiBwL,EAAKxL,MAAO,KAC1D,EAQG+tE,GALJviE,EAAOtL,EAAEiE,OAAO,CACdxH,KAAM,UACR,EAAG6O,CAAI,EAGQ7N,EAAMe,MAAMc,EAAKwE,MAC5BgqE,EAAe,YAAaxiE,EAC5ByiE,EAAa,SAAS9oE,GAExB,MAAqB,UAAdqG,EAAK7O,OAA2BqxE,EAAexiE,EAAKykB,QAAU,CAAC9qB,EACxE,EAkBI+oE,GAfJhvE,MAAMa,KAAKguE,EAAU,SAAS3xE,EAAGuD,GACP,UAArBT,MAAMvC,KAAKgD,CAAI,GAAiBA,EAAKoE,EAAQ2/D,gBAC7C7yD,OAAOrF,EAAKxL,KAAK,IAAM5D,GAAoB,QAAfoP,EAAKxL,OAC9BiwB,EAAUtwB,EAAKoE,EAAQw/D,WAAa0K,EAAWtuE,EAAKoE,EAAQw/D,UAAU,EAC1ExoD,EAAGkV,EAAU,WAAa,eAAe00C,CAAY,EAEpC,UAAdn5D,EAAK7O,MACNoe,EAAGsZ,SAAS,EAAE3lB,YAAYi2D,CAAY,GAElB,UAAdn5D,EAAK7O,MACb,OAAOgD,EAAKoE,EAAQw/D,WAExB,CAAC,EAGiBxoD,EAAG1P,KAAK,oBAAqB,CAC7ColB,MAAO,gBACPC,SAAU,kBACZ,EAAEllB,EAAK7O,OAAS,YAAa,mBAAmB,GAC5CwxE,EAAkBD,EAAYhyE,KAAK,EACnCkyE,EAAWD,EAAgB94C,QAAQmvC,CAAS,GAEhC,UAAdh5D,EAAK7O,MAAoByxE,EAASz/D,SAAS6uD,CAAI,EAC5C0Q,EAAYx8D,MAAM,EACrBw8D,GAAcjyC,KAAK,UAAWgyC,EAAWE,EAAgBlyC,KAAK,SAAS,CAAC,CAAC,EAE3Ez8B,EAAK+rE,aAAa,EAClB/rE,EAAKgsE,WAAWhgE,EAAK7O,IAAI,CAC3B,EAGAwM,EAAM1K,UAAUwI,KAAO,SAASuE,GAC9B,IAKkCuiE,EAL9BvuE,EAAO/D,KAEP4gE,EAAM,GACNt4D,EAAUvE,EAAKrE,OACfgN,EAASpE,EAAQqF,KAAKgB,KAAK,YAAY,EACvC9F,EAAO3G,EAAMe,MAAMc,EAAKwE,KAKH,UAAtB,OAHHwH,EAAOA,GAAQ,IAGA8uD,QACbA,EAAQ9uD,EAAK8uD,MACb96D,EAAKunE,UAAU17D,KAAK,IAAI,EAAEtL,KAAK,SAAS3D,EAAGuD,GACzC,IAAIkN,EAAQ3M,EAAEzE,IAAI,EACd4yE,EAASxhE,EAAMvI,KAAK,OAAO,EAC/B,GAAG+pE,IAAW7iE,EAAK8uD,MAGjB,OAFA9uD,EAAK8uD,MAAQztD,EACbytD,EAAQ+T,EACD,CAAA,CAEX,CAAC,GAGH,IAEE,IADA/T,EAAQA,GAAS9uD,EAAK8uD,MAAMh2D,KAAK,OAAO,EACpCN,EAAMwH,EAAK8uD,MAAMh2D,KAAK,KAAK,EAG/B,GAAG9E,EAAKmtE,SAAW,CAACnhE,EAAKohE,MACpBtS,IAAU96D,EAAKmtE,QAAQrS,OAAS9uD,EAAK7O,OAAS6C,EAAKmtE,QAAQ1lE,KAC5D,OAIJ,IAAIqnE,EAAW9uE,EAAKunE,UAAU17D,KAAK,qBAAsBrH,CAAG,EAAEqH,KAAKq5D,CAAS,EAC5EllE,EAAKunE,UAAU17D,KAAK,IAAI,EAAEA,KAAKq5D,CAAS,EAAEt1D,WAAW,UAAU,EAC/Dk/D,EAASlkE,KAAK,WAAYoB,EAAK7O,MAAQ,IAAI,EAC3C6C,EAAK0nE,SAAS77D,KAAK,IAAI,CAGzB,CAFE,MAAMjL,GACNoG,EAAK/J,MAAM,8BAAgC69D,EAAO,eAAgB,CACpE,CAGA96D,EAAKmtE,QAAU,CACbrS,MAAOA,EACPrzD,KAAMuE,EAAK7O,IACb,EAGGoH,EAAQ6hE,WACQ,QAAdp6D,EAAK7O,KACNoxE,EAAW7uE,MAAM+H,KAAK3C,EAAMg2D,EAAO,KAAM,CAAA,CAAI,EACvB,SAAd9uD,EAAK7O,KACboxE,EAAW7uE,MAAM+H,KAAK3C,EAAMg2D,EAAO,CAAA,EAAM,CAAA,CAAI,GAE7CyT,EAAW7uE,MAAM+H,KAAK3C,EAAM3G,EAAMxC,OAAOqoE,UAAW,KAAM,CAAA,CAAI,EAC9D,OAAOhkE,EAAKmtE,QACZ,OAAO5oE,EAAQ2nE,WAInBrP,EAAIt4D,EAAQmzC,SAASgvB,UAAY6H,GAAYzpE,EAG7C9E,EAAKosE,WAAW,CACdvP,IAAKA,EACLrrD,KAAMxR,EAAKgS,KACXT,MAAOvR,EAAKuR,MACZ9J,KAAM,CAAA,EACNtK,KAAM6O,EAAKmgE,UACb,CAAC,EAGEngE,EAAK+iE,YACNxqE,EAAQ2nE,SAAW,CACjBpR,MAAOA,EACP39D,KAAM6O,EAAK7O,IACb,EACAuC,MAAM3D,MAAMsL,KAAK2E,EAAK8uD,MAAO/mD,EAAU,QAASpL,EAAQ,IAAKjI,EAAEiE,OAAO,CACpEhJ,OAAQ4I,CACV,EAAGA,EAAQ2nE,QAAQ,CAAC,EAExB,EAGAviE,EAAM1K,UAAU4mE,QAAU,SAASx3B,GACjC,IAAIruC,EAAO/D,KACG+D,EAAKrE,OACRkqE,UACNx3B,GACDruC,EAAKgvE,SAAWhvE,EAAKgvE,QAAQppE,OAAO,EACpC,OAAO5F,EAAKgvE,QACZhvE,EAAKsnE,OAAOz7D,KA5iDF,mBA4iDgB,EAAEjG,OAAO,IAEnC5F,EAAKgvE,QAAUtuE,EAAE,CAAC,iCAChB,6FACA,UAAUiN,KAAK,EAAE,CAAC,EACpB3N,EAAKsnE,OAAOx7D,OAAO9L,EAAKgvE,OAAO,GAGrC,EAGArlE,EAAM1K,UAAUsM,SAAW,SAAS/G,EAAK7E,GACvC,IACIkD,EADO5G,KACM2N,KAAKiF,SAAS,OAAO,EAAE,GAExCpR,EAAI0N,cAActI,EAAO,SAAS1C,GAChC,GAAIA,EAAK8uE,eAAkB,kBAAmBzqE,EAC5C,OAAO7E,EAASQ,CAAI,EAAG,CAAA,CAE3B,CAAC,CACH,EAGAwJ,EAAM1K,UAAUgpE,SAAW,WACzB,IAkBMvsD,EAEAwzD,EApBFlvE,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACfgU,EAASpL,EAAQoL,OAGlB3P,EAAK+mE,eACNp3D,EAASy9C,EAAKz9C,OAAO,EAAI3P,EAAK+mE,eAClB,MAAKp3D,EAAS,KAEjB3P,EAAKgnE,WAAahnE,EAAKinE,kBAChCt3D,EAASjP,EAAEV,EAAKgnE,SAAS,EAAEr3D,OAAO,EAAI3P,EAAKinE,iBAC9B,MAAKt3D,EAAS,KAKJ,EAAtBpL,EAAQ8hE,KAAK1pE,SAEV+e,EAAK1b,EAAK0nE,SAAS77D,KAAKi5D,CAAW,EAAEj5D,KAAK,IAAI,EAE9CqjE,EAAalvE,EAAKunE,UAAUr1D,MAAM,EACtCxS,MAAMa,KAAKmb,EAAI,SAAUyzD,EAASC,IAChCA,EAAS1uE,EAAE0uE,CAAM,GACVz/D,OAAOu/D,EAAWrjE,KAAK,gBAAkBujE,EAAOxkE,KAAK,UAAU,EAAI,IAAI,EAAE+E,OAAO,EAAI,IAAI,CACjG,CAAC,GAGCA,IAGJ0/D,EAAavxD,WAAWnO,CAAM,GAAK3P,EAAKunE,UAAU3jB,YAAY,GAAK,IAGhEr/C,EAAQojD,UACT0nB,GAAervE,EAAKqnE,QAAQzjB,YAAY,GAAK,IAI5Cr/C,EAAQ8nE,WACTgD,GAAervE,EAAK6nE,SAASjkB,YAAY,GAAK,KAI7Cr/C,EAAQyN,MAAQzN,EAAQ2lE,WACzBmF,GAAervE,EAAK8nE,QAAQlkB,YAAY,GAAK,IAG3Cr/C,EAAQw/C,UACVrkD,MAAMa,KAAK,CAACqJ,KAAM+F,EAAQ63D,QAAS6H,CAAU,EAAG,SAAU1kE,EAAUqC,GAClEhN,EAAK2K,GAAU0E,IAAI,CACjBM,OAAQ,OACRo0C,UAAW/2C,EAAa,IAC1B,CAAC,CACH,CAAC,EAEDhN,EAAKwnE,QAAQ5jB,YAAYyrB,CAAU,EAEvC,EAGA1lE,EAAM1K,UAAUmsE,eAAiB,SAASxhE,GACxC,IAAI8F,EAaJ,OAZG9F,EACD8F,EAAQ9F,EAAKmD,YAAcnD,EAAK2+D,cAEhC3+D,EAAOlO,SAASqG,cAAc,KAAK,GAC9Bc,MAAM6M,MAAQ,QACnB9F,EAAK/G,MAAM8M,OAAS,QACpB/F,EAAK/G,MAAMouC,UAAY,SAEvBv1C,SAASoP,KAAKzI,YAAYuH,CAAI,EAC9B8F,EAAQ9F,EAAKmD,YAAcnD,EAAK2+D,YAChC7sE,SAASoP,KAAK3J,YAAYyI,CAAI,GAEzB8F,CACT,EAGA/F,EAAM1K,UAAUwsE,YAAc,WAC5B,IAAIzrE,EAAO/D,KACPqzE,EAAetvE,EAAKwnE,QAAQ34D,SAAS,OAAO,EAC5C0gE,EAAcvvE,EAAKwnE,QAAQ93D,MAAM,EAAI1P,EAAKwnE,QAAQ/qC,KAAK,aAAa,EACpE1xB,EAAe/K,EAAKwnE,QAAQ73D,OAAO,EAAI3P,EAAKwnE,QAAQ/qC,KAAK,cAAc,EAEvE+yC,GADiBxvE,EAAKorE,eAAeprE,EAAKwnE,QAAQ,EAAE,EACzC8H,EAAa5rB,WAAW,EAAI1jD,EAAKwnE,QAAQ93D,MAAM,GAG1D+/D,EAAW,SAAS7lE,GACtB,IAGQokE,EAHLuB,GAAexkE,GAChBnB,EAAOA,EAAK0a,GAAG,CAAC,GACPzY,KAAK,oBAAoB,EAAE,MAC9BmiE,EAAYttE,EAAE,yEAAyE,GACjFmL,KAAK,KAAK,EAAEwD,IAAI,CACxBK,MAAO6/D,CACT,CAAC,EACD3lE,EAAKiC,KAAK,IAAI,EAAEC,OAAOkiE,CAAS,GAGlCpkE,EAAKiC,KAAK,oBAAoB,EAAEjG,OAAO,CAE3C,EAEA6pE,EAASzvE,EAAKunE,SAAS,EACvBkI,EAASzvE,EAAK6nE,QAAQ,EAIlB6H,EADa1vE,EAAKwnE,QAAQ73D,OAAO,EACR5E,EAE7B/K,EAAK0nE,SAAS77D,KAAKk5D,CAAS,EAAE11D,IAC5B,SACAigE,EAAa3/D,OAAO,GAAK+/D,EAAYA,EAAY,MACnD,EAAElvD,UAAUxgB,EAAKwnE,QAAQhnD,UAAU,CAAC,EAGpCxgB,EAAK4nE,YACFzpE,EAAMe,MAAMc,EAAKwE,MAAQrG,EAAMe,MAAMc,EAAKwE,KAAK7H,QAAsB,EAAX6yE,EACvD,cACF,YACFxR,CAAI,EAGNh+D,EAAK4nE,YAAYv4D,IAAI,QAASkgE,EAAc,CAAC,CAC/C,EAGA5lE,EAAM1K,UAAUwJ,OAAS,WACvB,IAAIzI,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAEfgN,EAASpE,EAAQqF,KAAKgB,KAAK,YAAY,EACvC8Q,EAAK1b,EAAKunE,UAAU17D,KAAK,IAAI,EAC7B8jE,EAAY,oBAEZC,EAAQlvE,EAAE,MAAM,EAChBokD,EAAO,GAuTP+qB,GApTJ7vE,EAAKqnE,QAAQ/mE,GAAG,QAAS,eAAgB,SAASM,GAChD,IAiCYkvE,EAjCRziE,EAAQ3M,EAAEzE,IAAI,EACdwM,EAAS4E,EAAMzC,KAAK,WAAW,EAC/B9F,EAAO3G,EAAMe,MAAMqF,EAAQnB,IAC3B2sE,EAAY,SAASvT,GACvB,IAAIn9C,EAAO3e,EAAE87D,EAAKn9C,IAAI,EAClB2wD,EAAQtvE,EAAE,cAAgB6kE,EAAkB,SAAS,EAEzDyK,EAAMngE,KAAKwP,CAAI,EAGZ9a,EAAQoL,QACTqgE,EAAM3gE,IAAI,aAAc9K,EAAQoL,QAAU3P,EAAKqnE,QAAQzjB,YAAY,GAAK,GAAG,EAI7Ev2C,EAAMxB,KAAK,IAAM05D,CAAe,EAAE,IAAMl4D,EAAMvB,OAAOkkE,CAAK,EAC1DhwE,EAAKgsE,WAAW,EAEhBgE,EAAM1vE,GAAG,QAAS,SAASM,GACzBlB,MAAM0I,MAAMxH,CAAC,CACf,CAAC,EAED47D,EAAKnuD,MAAQmuD,EAAKnuD,KAAK2hE,EAAO3wD,CAAI,CACpC,EAMA,OAJA3f,MAAM0I,MAAMxH,CAAC,EACb+jD,EAAKnvC,QAAQ,yBAAyB,EACtC9X,EAAMwS,MAAMlQ,EAAKstE,SAAS,EAEnB7kE,GACL,IAAK,gBACHsnE,EAAU,CACR1wD,MACMywD,EAAM,GACV9vE,EAAKmrE,SAAS,SAASvuE,EAAGuD,GACrBA,EAAK26D,OAAsB,UAAb36D,EAAKhD,MACpB2yE,EAAIvuE,KAAK,oCAAqCpB,EAAK26D,MAAO,eAAgB36D,EAAKqE,IAAK,sBAAuBrE,EAAKkpE,WAAW,IAAK,yBAA0BlpE,EAAKkuC,KAAO,GAAK,WAAY,WAAY1vC,EAAKyR,OAAO1P,EAAE,SAAWP,EAAK8vE,YAAc9vE,EAAK2b,OAAS3b,EAAK26D,OAAS,QAAQ,EAAErvD,KAAK,CAAC,EAAG,0CAA0C,CAE5U,CAAC,EACMqkE,EAAIniE,KAAK,EAAE,GAEnBU,KAAM,WACLvQ,EAAKwC,GAAG,gCAAiC,SAAS4E,GAChD,IAAImI,EAAQ3M,EAAEwE,EAAI0E,IAAI,EAClB6mB,EAAUx0B,KAAKw0B,QACfjsB,EAAM6I,EAAMvI,KAAK,KAAK,EACtBk6B,EAAMh/B,EAAKg/B,IAAIx6B,CAAG,EAClB6pC,EAAOrP,EAAIqP,KACXg7B,EAAYh8D,EAAMvI,KAAK,WAAW,EAElCk6B,EAAIx6B,MAGRw6B,EAAIqP,KAAO,CAAC5d,EACZzwB,EAAK4J,KAAKiC,KAAK,eAAgBrH,EAAK,IAAI,EACtCisB,EAAU,cAAgB,YAC1ButC,CAAI,EAGH3vB,GAAQrP,EAAIqP,MACbruC,EAAKmqE,aAAa,CAAC15C,EAAS44C,CAAS,EAIvCrpE,EAAKkgD,OAAO,EAGZxgD,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,cAAepL,EAAQ,IAAK,CAC3Dq2B,IAAKA,EACLrjC,OAAQ4I,CACV,CAAC,EACH,CAAC,CACH,CACF,CAAC,EACH,MACA,IAAK,kBACH,GAAI,CAACO,EAAKnI,OAAQ,OAAOe,EAAMgjB,KAAK,6CAAWzkB,KAAM,CAACykB,KAAM,CAAC,CAAC,EAC3D1a,EAAOU,GACRhJ,EAAMgjB,KAAK,0HAAiCzkB,KAAM,CAChDykB,KAAM,CACR,CAAC,EAEDqvD,EAAU,CACR1wD,KACS,CACL,qEACA,sEACA1R,KAAK,EAAE,EAEXU,KAAM,SAAS2hE,EAAO3wD,GACpBA,EAAK/e,GAAG,QAAS,WACf,IAAInD,EAAOuD,EAAEzE,IAAI,EAAE6I,KAAK,MAAM,EAC9B3G,EAAM+xE,WAAW7oE,KAAKrH,EAAMuE,EAAQnB,GAAI,KAAMjG,CAAI,CACpD,CAAC,CACH,CACF,CAAC,EAEL,MACA,IAAK,iBACH,GAAI,CAAC2H,EAAKnI,OAAQ,OAAOe,EAAMgjB,KAAK,6CAAWzkB,KAAM,CAACykB,KAAM,CAAC,CAAC,EAC9D,IAAIyvD,EAAW1mE,OAAOwG,KAAK,cAAe,QAAQ,EAC9CpN,EAAQ,CAAC,UACX,yCACA,oEACA,0HACA,2CACA,yBACA,8BACF,YAAY8K,KAAK,EAAE,EACfkC,EAAOnP,EAAEV,EAAKunE,UAAU13D,KAAK,CAAC,EAElCA,EAAK/D,OAAO9L,EAAKwnE,QAAQ37D,KAAK,OAAO,EAAEgE,KAAK,CAAC,EAC7CA,EAAK/D,OAAO9L,EAAK6nE,SAASh8D,KAAK,OAAO,EAAEgE,KAAK,CAAC,EAE9CA,EAAKhE,KAAK,sBAAsB,EAAEjG,OAAO,EAEzCiK,EAAKhE,KAAK,eAAgBy5D,CAAgB,EAAE38D,OAAO,SAAS/L,EAAGwyE,GAC7D,MAAO,CAAC1uE,EAAE0uE,CAAM,EAAEvgE,SAAS,IAAKw2D,CAAU,EAAE1oE,MAC9C,CAAC,EAAEiJ,OAAO,EACViK,EAAKhE,KAAK,eAAgBy5D,CAAgB,EAAE1/D,OAAO,EAEnDuqE,EAASz0E,SAASitC,MAAM9lC,EAAQgN,EAAK4sB,KAAK,WAAW,CAAC,EACtD0zC,EAASz0E,SAASwU,MAAM,EAErBxQ,MAAMsG,OAAO,KAAK,EAAEoqE,KACrBD,EAASE,aAAeF,EAASjgE,MACjCigE,EAAStG,MAAM,IAEfsG,EAAStG,MAAM,EACfsG,EAASjgE,MAAM,EAGrB,CAEAxQ,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,WAAYpL,EAAQ,IAAKjI,EAAEiE,OAAO,CACjE5I,MAAO0M,EACP9M,OAAQ4I,CACV,EAAE,EAAE,CAAC,CACP,CAAC,EAGDvE,EAAKunE,UAAUjnE,GAAG,QAAS,eAAgB,SAASM,GAClD,IAAIyM,EAAQ3M,EAAEzE,IAAI,EACdwM,EAAS4E,EAAMzC,KAAK,WAAW,EAE/BpG,EADK6I,EAAMwoB,QAAQ,IAAI,EACd/wB,KAAK,KAAK,EACnBk6B,EAAMh/B,EAAKg/B,IAAIx6B,CAAG,EAEtB9E,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,WAAYpL,EAAQ,IAAKjI,EAAEiE,OAAO,CACjE5I,MAAO0M,EACP9M,OAAQ4I,EACRy6B,IAAKA,CACP,EAAE,EAAE,CAAC,CACP,CAAC,EAGDh/B,EAAKiqE,WAAW3pE,GAAG,QAAS,eAAgB,SAASM,GACnD,IACI6H,EADQ/H,EAAEzE,IAAI,EACC2O,KAAK,WAAW,EAEnClL,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,WAAYpL,EAAQ,IAAKjI,EAAEiE,OAAO,CACjE5I,MAAO0M,EACP9M,OAAQ4I,CACV,EAAE,EAAE,CAAC,CACP,CAAC,EAGDmX,EAAGpb,GAAG,YAAa,SAASM,GAC1B,IAAIyM,EAAQ3M,EAAEzE,IAAI,EACdq0E,EAAQjjE,EAAMixC,OAAO,EAAElyC,KACvBmkE,EAAQ3vE,EAAE6L,QAAU6jE,EACrBjjE,EAAMvI,KAAK,UAAU,GAAKq/D,EAAUpf,gBAGvCD,EAAK0rB,YAAcnjE,EAAMqC,MAAM,EAAI6gE,GAAS,GAC5CX,EAAMvgE,IAAI,SAAWy1C,EAAK0rB,YAAc,aAAe,EAAG,EAC5D,CAAC,EAAElwE,GAAG,aAAc,WACNI,EAAEzE,IAAI,EACfkoE,EAAUpf,eACb6qB,EAAMvgE,IAAI,SAAU,EAAE,CACxB,CAAC,EAAE/O,GAAG,YAAa,SAASM,GAC1B,IAEM4D,EAFF6I,EAAQ3M,EAAEzE,IAAI,EACf6oD,EAAK0rB,cACFhsE,EAAM6I,EAAMvI,KAAK,KAAK,EAC1BlE,EAAE2hB,eAAe,EACjBuiC,EAAKxG,OAAS,CAAC19C,EAAE6L,QAAS7L,EAAE8L,SAE5B1M,EAAKuL,SAAS/G,EAAK,SAASrE,GAC1B,IAAIuP,EAAQvP,EAAK0C,MAAM6M,OAASrC,EAAMq2C,WAAW,EACjDoB,EAAK2e,KAAOtjE,EACZ2kD,EAAK2rB,UAAY3yD,WAAWpO,CAAK,EACjCo1C,EAAK7Z,SAAW59B,EAAMvI,KAAK,UAAU,GAAKP,EAAQuhE,aAClDhhB,EAAK9Z,SAAW39B,EAAMvI,KAAK,UAAU,GAAKP,EAAQwhE,YACpD,CAAC,EAGD14D,EAAMvI,KAAK2gE,EAAgB3gB,CAAI,EAC/Bqf,EAAUpf,cAAgB13C,EAE9B,CAAC,EAGG82D,EAAUlf,UACZN,EAAKrkD,GAAG,YAAa,SAASM,GAC5B,IACMkkD,EAQE4rB,EATLvM,EAAUpf,gBACPD,EAAOqf,EAAUpf,cAAcjgD,KAAK2gE,CAAc,GAAK,GAE3DtB,EAAUpf,cAAcjgD,KAAK,WAAY,CAAC,EAC1ClE,EAAE2hB,eAAe,EAEduiC,EAAK2e,QACFkN,EAAW7rB,EAAK2rB,UAAY7vE,EAAE6L,QAAUq4C,EAAKxG,OAAO,GACpDl7C,EAAK+gE,EAAUpf,cAAclvB,QAAQ,IAAMgvC,CAAS,EAAEj6D,KAAK,QAAQ,EACnE8lE,EAAYrM,EAAajhE,CAAE,MAIFutE,EAA1BA,EAAW7rB,EAAK7Z,SAAqB6Z,EAAK7Z,SAC1C0lC,GAAW7rB,EAAK9Z,WAAU2lC,EAAW7rB,EAAK9Z,UAE7C8Z,EAAK2e,KAAK5gE,MAAM6M,MAAQihE,EAAW,KACnCD,EAAU/F,cAAcxG,EAAUpf,aAAa,EAC/CrnD,EAAMwS,MAAMlQ,EAAKstE,SAAS,EAGhC,CAAC,EAAEhtE,GAAG,UAAW,SAASM,GACxB,IACM8a,EAEAg1D,EAIAlsE,EACAw6B,EACAr2B,EATHw7D,EAAUpf,gBAEP3hD,GADAsY,EAAKyoD,EAAUpf,eACPlvB,QAAQ,IAAMgvC,CAAS,EAAEj6D,KAAK,QAAQ,EAC9C8lE,EAAYrM,EAAajhE,CAAE,KAI3BoB,EAAMkX,EAAG5W,KAAK,KAAK,EACnBk6B,EAAM0xC,EAAU1xC,IAAIx6B,CAAG,EACvBmE,EAAS+nE,EAAU/0E,OAAOiO,KAAKgB,KAAK,YAAY,EAGpDk6C,EAAO,GACP8qB,EAAMvgE,IAAI,SAAU,EAAE,EACtBqhE,EAAUjF,YAAY,EAGtB/vD,EAAG6f,WAAWkqC,CAAc,EAC5B,OAAOtB,EAAUpf,cAGjB2rB,EAAUnlE,SAAS/G,EAAK,SAASrE,GAC/B6+B,EAAItvB,MAAQoO,WAAW3d,EAAK0C,MAAM6M,KAAK,EACvChQ,MAAM3D,MAAMsL,KAAKqU,EAAG,GAAI3H,EAAU,cAAepL,EAAQ,IAAK,CAC5Dq2B,IAAKA,EACLrjC,OAAQ+0E,EAAU/0E,MACpB,CAAC,CACH,CAAC,EAEL,CAAC,EAIHwoE,EAAUlf,SAAW,CAAA,EAIrBvpC,EAAGpb,GAAG,QAAS,SAASM,GACtB,IAAIyM,EAAQ3M,EAAEzE,IAAI,EACd6yE,EAAWzhE,EAAMxB,KAAKq5D,CAAS,EAC/B0L,EAAU9B,EAASlkE,KAAK,UAAU,EAItC,GAAG,CAACkkE,EAAS,IAAiC,IAA3BzhE,EAAMvI,KAAK,UAAU,EACtC,OAAOuI,EAAMkuB,WAAW,UAAU,EAUpCv7B,EAAKyH,KAAK,CACRqzD,MAAOztD,EACPlQ,KATa,QAAZyzE,EACM,OACa,SAAZA,EACD,KAEA,MAKP7B,UAAW,CAAA,CACb,CAAC,CACH,CAAC,EAAEljE,KAAKq5D,EAAU,eAAe,EAAE5kE,GAAG,QAAS,SAASM,GACtD,IAAIyM,EAAQ3M,EAAEzE,IAAI,EACduE,EAAQ6M,EAAM7M,MAAM,EACpBs6D,EAAQztD,EAAM8oB,QAAQ,IAAI,EAAE7R,GAAG,CAAC,EAAExf,KAAK,OAAO,EAClDpF,MAAM0I,MAAMxH,CAAC,EACA,IAAVJ,EACDR,EAAKyH,KAAK,CACRqzD,MAAOA,EACP39D,KAAM,MACN4xE,UAAW,CAAA,CACb,CAAC,EAED/uE,EAAKyH,KAAK,CACRqzD,MAAOA,EACP39D,KAAM,OACN4xE,UAAW,CAAA,CACb,CAAC,CAEL,CAAC,EAGkB/uE,EAAK6vE,aAAe,SAASrT,GAC9C,IACIh8D,EADQE,EAAEzE,IAAI,EACAk6B,QAAQ,IAAI,EAAE7R,GAAG,CAAC,EAAExf,KAAK,OAAO,EAC9CyW,EAAKvb,EAAKynE,QAAQ57D,KAAK,kBAAmBrL,EAAO,IAAI,EAGzDsE,GAAOA,EAFI3G,EAAMe,MAAMc,EAAKwE,MAAQ,IAExBhE,IAAU,GAGlB0E,EAAM,CACRqW,GAAIA,EACJ5f,OAAQ4I,EACRO,KAAM3G,EAAM0yE,cAAc/rE,CAAI,EAC9BgsE,UAAWhsE,EACXtE,MAAOA,EACPuwE,IAAK,WACH5yE,EAAMe,MAAMc,EAAKwE,KAAKhE,GAAS,GAC/B+a,EAAG3V,OAAO,EACV5F,EAAKyrE,YAAY,CACnB,EACAuF,OAAQ,SAASC,EAAQzrC,GACvByrC,EAASA,GAAU,GACnBvxE,MAAMa,KAAK0wE,EAAQ,SAASzsE,EAAKmB,GAC/B,IAAIwY,EAAK5C,EAAG1M,SAAS,kBAAmBrK,EAAK,IAAI,EAC7C0sE,EAAO/yD,EAAGtP,SAAS8gE,CAAS,EAGhC7qE,EAAKN,GAAOU,EAAIJ,KAAKN,GAAOmB,EAG5B3F,EAAKmrE,SAAS,SAASvuE,EAAG4nE,GACxB,IAaM3wD,EAbH2wD,EAAM1J,OAASt2D,GAChB0sE,EAAKrhE,KAAK00D,EAAcl9D,KAAKrH,EAAM,CACjCwkE,MAAOA,EACN3wD,QAASlO,EACT8+D,QAAS/jE,EAAEiE,OAAO,CACjBggE,QAASH,CACX,EAAG1/D,CAAI,CACT,CAAC,CAAC,EACFqZ,EAAGrZ,KAAK,UAAWa,CAAK,GAGlB6/B,IAAYg/B,EAAMxV,SAAWwV,EAAM7c,WACrCwpB,EAAS51D,EAAG1M,SAAS,mBAAoB21D,EAAM1J,OAASl+D,GAAI,IAAI,EAChEiX,EAAU/O,EAAK0/D,EAAM1J,OAEzBqW,EAAOtiE,SAAS8gE,CAAS,EAAE9/D,KAAK00D,EAAcl9D,KAAKrH,EAAM,CACvDwkE,MAAOA,EACN3wD,QAASA,EACT4wD,QAAS/jE,EAAEiE,OAAO,CACjBggE,QAASH,CACX,EAAG1/D,CAAI,CACT,CAAC,CAAC,EACFqsE,EAAOrsE,KAAK,UAAW+O,CAAO,EAElC,CAAC,CACH,CAAC,EAED7T,EAAKgsE,WAAW,CAClB,EAEAsC,cAAe,SAAStiE,GACtBhM,EAAKsuE,cAAc5tE,EAAEiE,OAAO,CAC1BnE,MAAOA,CACT,EAAGwL,CAAI,CAAC,CACV,CAEF,EAEA,OAAOtL,EAAEiE,OAAOO,EAAKs3D,CAAI,CAC3B,GAuGI4U,GApGJpxE,EAAK4J,KAAKtJ,GAAG,QAAS,kCAAmC,SAASM,GAChE,IAAIyM,EAAQ3M,EAAEzE,IAAI,EACdkiB,EAAK9Q,EAAMwoB,QAAQ,IAAI,EACvB3E,EAAW7jB,EAAMwE,KAAK,EAEtBrR,GADWR,EAAKynE,QAAQ57D,KAAK,gCAAgC,EACrDqlB,EAASiF,QAAQ,IAAI,EAAE7R,GAAG,CAAC,EAAExf,KAAK,OAAO,GACjD2rB,EAAUS,EAAS,GAAGT,QACtB29C,EAAwC,sBAAhCl9C,EAAStmB,KAAK,YAAY,EAEnCsmB,EAAS,GAAGV,WAGZ49C,EACDpuE,EAAKsuE,cAAc,CACjB9tE,MAAO,MACPiwB,QAASA,CACX,CAAC,GAEDzwB,EAAKsuE,cAAc,CACjB9tE,MAAOA,EACPiwB,QAASA,CACX,CAAC,EACD/wB,MAAM0I,MAAMxH,CAAC,GAIflB,MAAM3D,MAAMsL,KACV6pB,EAAS,GACTnd,EAAU,YAAapL,EAAQ,IAC/BknE,EAAaxoE,KAAK6pB,EAAS,GAAI,CAC7BT,QAASA,EACTtzB,KAAMixE,EAAQ,MAAQ,MACtBiD,OAAQ,WACN,OAAOrxE,EAAKg/B,IAAI7gB,EAAGrZ,KAAK,KAAK,CAAC,CAChC,CACF,CAAC,CACH,EACF,CAAC,EAGD9E,EAAK4J,KAAKtJ,GAAG,QAAS,mCAAoC,SAASM,GACjE,IAAIyM,EAAQ3M,EAAEzE,IAAI,EACdkiB,EAAK9Q,EAAMwoB,QAAQ,IAAI,EACvB5E,EAAQ5jB,EAAMwE,KAAK,EACnB4e,EAAUQ,EAAM,GAAGR,QACnBjwB,EAAQywB,EAAMkF,QAAQ,IAAI,EAAE7R,GAAG,CAAC,EAAExf,KAAK,OAAO,EAGlD,GADApF,MAAM0I,MAAMxH,CAAC,EACVqwB,EAAM,GAAGT,SAAU,MAAO,CAAA,EAG7BxwB,EAAKsuE,cAAc,CACjBnxE,KAAM,QACNqD,MAAOA,CACT,CAAC,EAGDd,MAAM3D,MAAMsL,KACV4pB,EAAM,GACNld,EAAU,SAAUpL,EAAQ,IAC5BknE,EAAaxoE,KAAK4pB,EAAM,GAAI,CAC1BR,QAASA,EACT4gD,OAAQ,WACN,OAAOrxE,EAAKg/B,IAAI7gB,EAAGrZ,KAAK,KAAK,CAAC,CAChC,CACF,CAAC,CACH,CACF,CAAC,EAGD9E,EAAKynE,QAAQnnE,GAAG,aAAc,KAAM,WAClC,IAAI+M,EAAQ3M,EAAEzE,IAAI,EACduE,EAAQ6M,EAAM7M,MAAM,EACrB6M,EAAMvI,KAAK,KAAK,GACnB9E,EAAKynE,QAAQ57D,KAAK,SAAUrL,EAAO,GAAG,EAAEwO,SAAS0hD,CAAU,CAC7D,CAAC,EAAEpwD,GAAG,aAAc,KAAM,WACxB,IAAI+M,EAAQ3M,EAAEzE,IAAI,EACduE,EAAQ6M,EAAM7M,MAAM,EACrB6M,EAAMvI,KAAK,KAAK,GACnB9E,EAAKynE,QAAQ57D,KAAK,SAAUrL,EAAO,GAAG,EAAE0O,YAAYwhD,CAAU,CAChE,CAAC,EAAEpwD,GAAG,QAAS,KAAM,SAASM,GAE5B,IAAI0wE,EAAQ,CACV,uBACA,qBACA,oBACA,eACA3jE,KAAK,GAAG,EACNjN,EAAEE,EAAEyJ,MAAM,EAAEuqB,GAAG08C,CAAK,GAAK5wE,EAAEE,EAAEyJ,MAAM,EAAEwrB,QAAQy7C,CAAK,EAAE,IAGxDF,EAAY/pE,KAAKpL,KAAM,KAAK,CAC9B,CAAC,EAAEqE,GAAG,WAAY,KAAM,WACtB8wE,EAAY/pE,KAAKpL,KAAM,WAAW,CACpC,CAAC,EAAEqE,GAAG,cAAe,KAAM,SAASM,GAC7B2D,EAAQ4hE,oBAAoBvlE,EAAE2hB,eAAe,EAClD6uD,EAAY/pE,KAAKpL,KAAM,gBAAgB,CACzC,CAAC,EAGiB,SAAS+iE,GACzB,IAAI3xD,EAAQ3M,EAAEzE,IAAI,EACfoR,EAAMvI,KAAK,KAAK,GACnBpF,MAAM3D,MAAMsL,KAAKpL,KACf8X,EAAUirD,EAAY,IAAKr2D,EAAQ,IACnCknE,EAAaxoE,KAAKgG,EAAMwB,SAAS,IAAI,EAAE,EAAE,CAC3C,CACF,GAGI0iE,EAAiB,SAASlkE,EAAOzM,GAGnC,IAEIk6D,EAIAh2D,EACA0sE,EAUEx+D,GAnBN3F,EAAQ3M,EAAE2M,CAAK,GAENvI,KAAK,KAAK,IAEfg2D,EAAQztD,EAAMvI,KAAK,OAAO,EAC1BN,EAAM6I,EAAMvI,KAAK,KAAK,EACtBk6B,EAAMh/B,EAAKg/B,IAAIx6B,CAAG,EAClBhE,EAAQ6M,EAAMwoB,QAAQ,IAAI,EAAE/wB,KAAK,OAAO,EACxCA,EAAO3G,EAAMe,MAAMc,EAAKwE,KAAKhE,GAC7BgxE,EAAWnkE,EAAMwB,SAAS8gE,CAAS,GAInC8B,EAA+B,YAApB,OAAOzyC,EAAIguC,KACtBhuC,EAAIguC,KAAKloE,CAAI,EACfk6B,EAAIguC,SAIAh6D,EAAQtS,EAEM,aAAb+wE,EACW,gCAAkCrM,EAAY,0BAF5C,6BAA8BA,EAAW,cAKxD,GAEG,GAAGz/D,MAAQ0H,EAAMvI,KAAK,SAAS,GAAKA,EAAKg2D,IAAU0W,EAAS/lE,KAAK,EACvE4B,EAAMxB,KAAK,IAAIu5D,CAAS,EAAE,IAAM/3D,EAAMvB,OAAOkH,CAAK,EAClDA,EAAMmd,MAAM,EACZvvB,IAAKlB,MAAM0I,MAAMxH,CAAC,EAEtB,EA8DI8wE,GA3DJ1xE,EAAKynE,QAAQnnE,GAAG,SAAU,IAAK8kE,EAAW,WACxC,IAAI/3D,EAAQ3M,EAAEzE,IAAI,EACdkiB,EAAK9Q,EAAM4e,OAAO,EAClBtmB,EAAQ1J,KAAK0J,MACbm1D,EAAQztD,EAAM4e,OAAO,EAAEnnB,KAAK,OAAO,EACnCtE,EAAQ6M,EAAMwoB,QAAQ,IAAI,EAAE/wB,KAAK,OAAO,EACxCA,EAAO3G,EAAMe,MAAMc,EAAKwE,KAAKhE,GAG7BkI,EAASmnE,EAAaxoE,KAAK8W,EAAG,GAAI,CACpCxY,MAAOA,EACPm1D,MAAOA,EACP6W,SAAU7sE,EAAKg2D,GACf38C,GAAIA,EACJyzD,OAAQ,WACNtwE,WAAW,WAETiwE,EAAe7oE,EAAOyV,EAAE,EAGxB,IAAIjZ,EAAM,GACVA,EAAI41D,GAASpyD,EAAOipE,SACpBjpE,EAAOsoE,OAAO9rE,CAAG,CACnB,CAAC,CACH,EACAmsE,OAAQ,WACN,OAAOrxE,EAAKg/B,IAAI7gB,EAAGrZ,KAAK,KAAK,CAAC,CAChC,CACF,CAAC,EAGGI,EAAM,GACVA,EAAI41D,GAASn1D,EACb+C,EAAOsoE,OAAO9rE,CAAG,EAGjBxF,MAAM3D,MAAMsL,KAAK8W,EAAG,GAAIpK,EAAU,QAASpL,EAAQ,IAAKD,CAAM,CAChE,CAAC,EAAEpI,GAAG,OAAQ,IAAK8kE,EAAW,WAC5B1kE,EAAEzE,IAAI,EAAE2J,OAAO,CACjB,CAAC,EAGD5F,EAAKynE,QAAQnnE,GAAGiE,EAAQ0hE,YAAa,KAAM,SAASrlE,GAClD2wE,EAAet1E,KAAM2E,CAAC,CACxB,CAAC,EAAEN,GAAG,aAAc,KAAM,WACxBuxE,EAAmBxqE,KAAKpL,IAAI,CAC9B,CAAC,EAAEqE,GAAG,aAAc,KAAM,WACvBuxE,EAAmBxqE,KAAKpL,KAAM,MAAM,CACvC,CAAC,EAGD+D,EAAK6nE,SAASvnE,GAAG,aAAc,KAAM,WACnCuxE,EAAmBxqE,KAAKpL,IAAI,CAC9B,CAAC,EAAEqE,GAAG,aAAc,KAAM,WACvBuxE,EAAmBxqE,KAAKpL,KAAM,MAAM,CACvC,CAAC,EAIoB,yBAEjB41E,EAAqB,SAASxjC,GAChC,IAAIhhC,EAAQ3M,EAAEzE,IAAI,EACdu1E,EAAWnkE,EAAMwB,SAAS8gE,CAAS,EAEpCtiE,EAAMvI,KAAK,KAAK,GAChBuI,EAAM4e,OAAO,EAAE9c,SAASq2D,CAAW,IAEnCn3B,EACDhhC,EAAMxB,KAAK,wBAAwB,EAAEjG,OAAO,EACpC,EACR4rE,EAAS/0C,KAAK,aAAa,EAAI+0C,EAAS9tB,WAAW,GACtB,EAA7B8tB,EAAS3lE,KAAK,IAAI,EAAElP,SAChB4H,EAAQ+kE,WACTkI,EAAS3lE,KAAK,IAAK6lE,CAAc,EAAE,IACtCrkE,EAAMvB,OAAO,eAAgB4lE,EAAgB,oDAAoD,EAErG,EAEII,EAAa,SAASlxE,EAAGmxE,GAC3B,IAAI1kE,EAAQ3M,EAAEzE,IAAI,EACdkiB,EAAK9Q,EAAM4e,OAAO,EAClBznB,EAAM2Z,EAAGrZ,KAAK,KAAK,EACnBk6B,EAAMh/B,EAAKg/B,IAAIx6B,CAAG,EAClBhE,EAAQ2d,EAAG8N,OAAO,EAAEnnB,KAAK,OAAO,EAChC0sE,EAAWrzD,EAAGtP,SAAS8gE,CAAS,EAChCqC,EAAc,qBACdC,EAAgBvxE,EAAE,sCAAuCsxE,EAAa,IAAI,EAKzD,UAHrBD,EAAeA,GAAgB/yC,EAAI+yC,cAAgBxtE,EAAQ2tE,kBAIzDlyE,EAAKstE,UAAY5vE,EAAMgjB,KAAK,CAC1B,2DAA4D8wD,EAAS7hE,OAAO,EAAI,IAAK,OAC/D,OAAjBpL,EAAQu7C,KACF,sCAEW,OAAjBv7C,EAAQu7C,KACF,sBAEF,IACJ,KACH0xB,EAAS3hE,KAAK,EAChB,SACA,kEACAlC,KAAK,EAAE,EAAG6jE,EAAS,GAAI,CACvB9wD,KAAM,CAAC,EAAG,IACVnK,KAAM,CAAC,EACPk6B,KAAM,CAAC,EACPzF,SAAWhlC,EAAOc,KAAOd,EAAOa,QAAW,IAAM7G,EAAK4J,KAAK8F,MAAM,EAAE,EACnEsyC,UAAW,CAAA,EACXrB,KAAM,mBACNnG,QAAS,SAASuI,EAAQviD,GACxBuiD,EAAOl3C,KAAK,qBAAqB,EAAEvL,GAAG,QAAS,WAC7C5C,EAAMwS,MAAM1P,CAAK,CACnB,CAAC,CACH,CACF,CAAC,GAGDR,EAAK4J,KAAKiC,KAAK,IAAKmmE,CAAW,EAAEx8D,QAAQ,OAAO,EAGhDxV,EAAKuL,SAAS/G,EAAK,SAASrE,GAC1B,IAAIuP,EAAQvP,EAAK0C,MAAM6M,MACnByiE,EAAgBnzC,EAAImzC,eAAiB5tE,EAAQ6tE,kBAG9CD,EAAgBr0D,WAAWpO,CAAK,IAAGyiE,EAAgBr0D,WAAWpO,CAAK,GAEtEuiE,EAAcntE,KAAK,aAAc4K,CAAK,EACtCvP,EAAK0C,MAAM6M,MAAQyiE,EAAgB,KAEnC7wE,WAAW,WACTtB,EAAKyrE,YAAY,CACnB,CAAC,CACH,CAAC,EAGDzrE,EAAKquE,aAAa7tE,EAAOglE,CAAW,EAGhCgM,EAAS1/D,KAAK,IAAKkgE,CAAW,EAAE,IAClCR,EAAS5pC,MAAMqqC,CAAa,EAI9BA,EAAc3xE,GAAG,QAAS,WACxB,IAAI+xE,EAAQ3xE,EAAEzE,IAAI,EAClB+D,EAAKquE,aAAa7tE,EAAO,CAACglE,EAAa9U,GAAY/iD,KAAK,GAAG,EAAG,CAAA,CAAI,EAClE3N,EAAKuL,SAAS/G,EAAK,SAASrE,GAC1BA,EAAK0C,MAAM6M,MAAS2iE,EAAMvtE,KAAK,YAAY,EAC3CxD,WAAW,WACTtB,EAAKkgD,OAAO,CACd,CAAC,CACH,CAAC,EACDmyB,EAAMzsE,OAAO,CACf,CAAC,GAGHyH,EAAMzH,OAAO,EACblG,MAAM0I,MAAMxH,CAAC,CACf,EAYI0xE,GATJtyE,EAAKynE,QAAQnnE,GAAG,QAAS,IAAKoxE,EAAgB,SAAS9wE,GACrDkxE,EAAWzqE,KAAKpL,KAAM2E,CAAC,CACzB,CAAC,EAEDZ,EAAK6nE,SAASvnE,GAAG,QAAS,IAAKoxE,EAAgB,SAAS9wE,GACtDkxE,EAAWzqE,KAAKpL,KAAM2E,EAAG,MAAM,CACjC,CAAC,EAGY,SAASzD,GACpB,IAAIkQ,EAAQ3M,EAAEzE,IAAI,EACdkiB,EAAK9Q,EAAMwoB,QAAQ,IAAI,EACvBr1B,EAAQ6M,EAAM8oB,QAAQ,IAAI,EAAE7R,GAAG,CAAC,EAAExf,KAAK,OAAO,EAElD9E,EAAKquE,aAAa7tE,CAAK,EAGvBd,MAAM3D,MAAMsL,KACVpL,KACA8X,GACC5W,GAAQ,QAAU,IAAKwL,EAAQ,IAChCknE,EAAaxoE,KAAKpL,KAAM,CACtBF,MAAOsR,EAAMzC,KAAK,WAAW,EAC7BymE,OAAQ,WACN,OAAOrxE,EAAKg/B,IAAI7gB,EAAGrZ,KAAK,KAAK,CAAC,CAChC,CACF,CAAC,CACH,CACF,GAGA9E,EAAKynE,QAAQnnE,GAAG,QAAS,eAAgB,SAASM,GAChD0xE,EAAOjrE,KAAKpL,IAAI,EAChByD,MAAM0I,MAAMxH,CAAC,CACf,CAAC,EAAEN,GAAG,WAAY,eAAgB,SAASM,GACzC0xE,EAAOjrE,KAAKpL,KAAM,YAAY,EAC9ByD,MAAM0I,MAAMxH,CAAC,CACf,CAAC,EAGDZ,EAAKwnE,QAAQlnE,GAAG,SAAU,WACxB,IAAI+M,EAAQ3M,EAAEzE,IAAI,EACdooC,EAAah3B,EAAMg3B,WAAW,EAC9B7jB,EAAYnT,EAAMmT,UAAU,EAEhCxgB,EAAKunE,UAAUljC,WAAWA,CAAU,EACpCrkC,EAAK6nE,SAASxjC,WAAWA,CAAU,EACnCrkC,EAAK0nE,SAAS77D,KAAKk5D,CAAS,EAAEvkD,UAAUA,CAAS,EAEjD9iB,EAAMwS,MAAMlQ,EAAKstE,SAAS,CAC5B,CAAC,EAGDttE,EAAK0nE,SAAS77D,KAAKk5D,CAAS,EAAEzkE,GAAG,4BAA6B,SAASM,GACrE,IAAIkoD,EAAQloD,EAAE4iC,cAAculB,YAAc,CAACnoD,EAAE4iC,cAAcwlB,OACvDxoC,EAAYxgB,EAAKwnE,QAAQhnD,UAAU,EAGvC5f,EAAE2hB,eAAe,EACjBviB,EAAKwnE,QAAQhnD,UAAUA,GAAqB,EAARsoC,EAAY,CAHrC,GAAA,GAGkD,CAC/D,CAAC,CACH,EAKEsE,EAAK9sD,GAAG,SAAU,WAChBZ,MAAMa,KAAK4jE,EAAUnkE,KAAM,WACzB/D,KAAKikD,OAAO,CACd,CAAC,CACH,CAAC,EAGDyE,EAAKrkD,GAAG,QAAS,WACfqkD,EAAKnvC,QAAQ,yBAAyB,CACxC,CAAC,EAGDmvC,EAAKrkD,GAAG,0BAA2B,WACjCI,EAAE,IAAM6kE,CAAe,EAAE3/D,OAAO,CAClC,CAAC,EAIHzH,EAAM4W,KAAO,SAASpM,EAAQrD,GAC5BA,EAAWA,GAAY,GACvB,IAEIqV,EAA8B,UAAlB,OAAOhS,EAAsBA,EAEvCjI,EADc,UAAlB,OAAOiI,EACD,qBAAsBA,EAAQ,KAChCohD,EAAO,eAAgBA,EAAO,eADM,EAGtCwoB,EAAY,0EAoEhB,OAjEA53D,EAAUpa,KAAK,WACb,IA+CMiyE,EA/CFnlE,EAAQ3M,EAAEzE,IAAI,EACdw2E,EAAWplE,EAAMzC,KAAK,UAAU,EAChC8nE,EAAYj1E,EAAI8G,QAAQtI,KAAM,CAChC2O,KAAM6nE,EAAW,WAAa,KAC9B/kE,UAAW6kE,GAAaE,GAAYplE,EAAMzC,KAAK,aAAa,EAC9D,CAAC,EAEGrG,EAAU7D,EAAEiE,OAAO,CACrBiF,KAAM3N,KACLoqE,KAAM,GACNvhE,KAAM,GACN67C,KAAMtzC,EAAMzC,KAAK,UAAU,EAC3Bk1C,KAAMzyC,EAAMzC,KAAK,UAAU,EAC3BwI,KAAwC,UAAlC,OAAO/F,EAAMzC,KAAK,UAAU,CACrC,EAAGzM,EAAMxC,OAAQ2J,EAAUotE,CAAS,EA0BhCC,GAxBJhqE,GAAU0E,EAAMghC,KAAK,EAGrBhhC,EAAMxB,KAAK,UAAU,EAAEtL,KAAK,SAAS3D,GACnC2H,EAAQ8hE,KAAKzpE,GAAK,GAClB8D,EAAEzE,IAAI,EAAE4S,SAAS,EAAEtO,KAAK,SAASmO,GAC/B,IAAIgN,EAAKhb,EAAEzE,IAAI,EACXw2E,EAAW/2D,EAAG9Q,KAAK,UAAU,EAC7BgoE,EAAWn1E,EAAI8G,QAAQtI,KAAM,CAC/B2O,KAAM6nE,EAAW,WAAa,KAC9B/kE,UAAW6kE,GAAaE,GAAY/2D,EAAG9Q,KAAK,aAAa,EAC3D,CAAC,EAEGioE,EAAMnyE,EAAEiE,OAAO,CACjBmX,MAAOJ,EAAGjQ,KAAK,EACds9D,QAASplE,SAAS+X,EAAG9Q,KAAK,SAAS,CAAC,GAAK,EACzCo+D,QAASrlE,SAAS+X,EAAG9Q,KAAK,SAAS,CAAC,GAAK,CAC5C,EAAGgoE,CAAQ,EAEXruE,EAAQ8hE,KAAKzpE,GAAG2E,KAAKsxE,CAAG,CAC1B,CAAC,CACH,CAAC,EAGYxlE,EAAMxB,KAAK,UAAU,GAG9BinE,EAAW30E,EAAM2S,OAAOvM,CAAO,EAG/BouE,CAAAA,EAAOh2E,QAAW2I,EAASR,MAASguE,EAASn3E,OAAOoE,MAClDyyE,EAAU,EACdr0E,EAAMgtE,SAAS2H,EAASn3E,OAAOyH,GAAI,SAAUmoE,EAAI/G,GAC/CmO,EAAOpyE,KAAK,SAASkoE,GACnBlkE,EAAQO,KAAK2jE,GAAMlkE,EAAQO,KAAK2jE,IAAO,GACvC,IAAIltD,EAAK7a,EAAEzE,IAAI,EACX6+D,EAAQ0J,EAAM1J,MAClBv2D,EAAQO,KAAK2jE,GAAI3N,GAASv/C,EAAG1M,SAAS,IAAI,EAAEyV,GAAGkuD,CAAO,EAAE3iE,KAAK,CAC/D,CAAC,EACD2iE,CAAO,EACT,CAAC,EAEDM,EAASrlB,WAAW,CAClB3oD,KAAMP,EAAQO,IAChB,CAAC,EAEL,CAAC,EAzEU7I,IA4Eb,EAGAkoE,EAAUnkE,KAAO,GACjBmkE,EAAUxoE,OAAS,GAEC,SAAU6E,EAAO6lE,EAAMoC,EAAIG,GAE7C,IACME,EAIAH,EALFC,EAAMK,WACJH,EAAa,EACjBtoE,CAAK,GACLooE,EAAMmK,WAAa,GAEfpK,EAAKF,GAAM9kE,SAASilE,EAAMI,OAAO,GAAK,GAC1CtpE,MAAMa,KAAK8lE,EAAKsC,GAAK,SAAUO,EAAKC,GAC9BA,EAAOE,UACLF,EAAOE,YAAcT,EAAMpkE,MAC7B2kE,EAAO6J,iBAAmBxyE,EAC1BooE,EAAMmK,WAAWxxE,KAAK4nE,CAAM,EAC5BvD,EAAcplE,EAAO6lE,EAAMsC,EAAIQ,CAAM,GAKnCA,EAAO6J,kBAAmC,GAAdlK,GAAmBA,IAAeF,EAAMG,SAAW,KACnFI,EAAO6J,iBAAmBxyE,EAC1BooE,EAAMmK,WAAWxxE,KAAK4nE,CAAM,EAC5BL,GAA2BnlE,SAA0B,EAAjBwlE,EAAOJ,QAAcI,EAAOJ,QAAU,CAAE,EAC5EnD,EAAcplE,EAAO6lE,EAAMsC,EAAIQ,CAAM,EAEzC,CAAC,EAEL,GAGAhrE,EAAMgtE,SAAW,SAAS/nE,EAAIzD,EAAU0mE,GACtC,IAAI1qE,EAASwoE,EAAUxoE,OAAOyH,IAAO,GACjC6vE,EAAO,GAePC,GAbJ7M,EAAO3lE,EAAEiE,OAAO,CAAA,EAAM,GAAI0hE,GAAQ1qE,EAAO0qE,IAAI,EAG7C3mE,MAAMa,KAAK8lE,EAAM,SAASoC,EAAIC,GAC5B,GAAID,EAAI,MAAO,CAAA,EACf/oE,MAAMa,KAAKmoE,EAAO,SAASC,EAAIC,GAC7BhD,EARmB,EAQES,EAAMoC,EAAIG,CAAK,EACjCA,EAAMoK,kBACTC,EAAK1xE,KAAKqnE,CAAK,CACjB,CAAC,CACH,CAAC,EAGc,SAAS1jE,GACtBxF,MAAMa,KAAK2E,GAAO+tE,EAAM,SAASr2E,EAAGuD,GAClC,GAAGA,EAAK4yE,WAAY,OAAOG,EAAS/yE,EAAK4yE,UAAU,EAC/B,YAApB,OAAOpzE,GAA2BA,EAAS/C,EAAGuD,CAAI,CACpD,CAAC,CACH,GAEA+yE,EAAS,CACX,EAGA/0E,EAAMgwE,YAAc,SAAS/qE,GAC3B,IAAI+vE,EAAO,EACPC,EAAa,EACb1rE,EAAM,GACN5C,EAAO3G,EAAMe,MAAMkE,IAAO,GAe9B,OAZA1D,MAAMa,KAAKuE,EAAM,SAASlI,EAAGuD,GACH,UAArBT,MAAMvC,KAAKgD,CAAI,GAAiBA,EAAKhC,EAAMxC,OAAOuoE,cACnDkP,CAAU,GAGTjzE,EAAKhC,EAAMxC,OAAOooE,aACnBoP,CAAI,GACAhzE,EAAKhC,EAAMxC,OAAOuoE,eACpBx8D,EAAInG,KAAKpD,EAAM0yE,cAAc1wE,CAAI,CAAC,EAGxC,CAAC,EACM,CACL2E,KAAM4C,EACN0mE,MAAOtpE,CAAAA,CAAAA,EAAKnI,QAAUw2E,IAAUruE,EAAKnI,OAASy2E,CAChD,CACF,EAGAj1E,EAAMmwE,cAAgB,SAASlrE,EAAI4I,GAC7BhM,EAAOqkE,EAAajhE,CAAE,EACtBpD,GACJA,EAAKsuE,cAActiE,CAAI,CACzB,EAGA7N,EAAMk1E,QAAU,SAASjwE,GACvB,IAAIsE,EAAM,GACN5C,EAAO3G,EAAMe,MAAMkE,IAAO,GAO9B,OANA1D,MAAMa,KAAKuE,EAAM,SAASlI,EAAGuD,GACH,UAArBT,MAAMvC,KAAKgD,CAAI,GAGlBuH,EAAInG,KAAKpD,EAAM0yE,cAAc1wE,CAAI,CAAC,CACpC,CAAC,EACMuH,CACT,EAGAvJ,EAAM+hD,OAAS,SAAS98C,GAEnBA,EACYkhE,EAAmBlhE,CAAE,GAGlCihE,EAAajhE,CAAE,EAAE88C,OAAO,EAGxBxgD,MAAMa,KAAK4jE,EAAUnkE,KAAM,WACzB/D,KAAKikD,OAAO,CACd,CAAC,CAEL,EAGA/hD,EAAM+xE,WAAa,SAAS9sE,EAAI0B,EAAMkH,GACpClH,EAAOA,GAAQ3G,EAAM0yE,cAAc1yE,EAAMe,MAAMkE,EAAG,EACT,IAgCnCkwE,EACAC,EACA9F,EACA+F,EA7BFr2E,GANJ6O,EAAuB,UAAhB,OAAOA,EAAoBA,GAC5B9G,EAAM,GACV8G,IAAS9G,EAAI/H,KAAO6O,GACb9G,IAGO/H,MAAQ,MACpBuzE,EAAYvM,EAAUnkE,KAAKoD,GAC3BzH,EAASwoE,EAAUxoE,OAAOyH,IAAO,GACjCqwE,EAAW,CACbC,IAAK,WACLC,IAAK,0BACN,EAAEx2E,GACCy2E,EAAQl4E,SAASqG,cAAc,GAAG,EAEtC,GAAGiE,EAAOU,GAAI,OAAOM,EAAK/J,MAAM,wBAAwB,EAGxD,GAAItB,EAAOuC,MAAQvC,EAAOuC,KAAK8S,KAC7B,IACElM,EAAOpE,EAAEiE,OAAO,CAAA,EAAM,GAAIxG,EAAMe,MAAMkE,EAAG,EACzC0B,EAAO,SAAUzE,EAAGyE,GAClB,OAAOA,EAAK+uE,OAAO,SAAUC,EAAK5uE,GAChC,IAAI2J,EAAW3J,EAAI2J,UAAY,GAE/B,OADA,OAAO3J,EAAI2J,SACJilE,EAAIpxD,OAAOxd,EAAK7E,EAAGwO,CAAQ,CAAC,CACrC,EAAG,EAAE,CACN,EAAE/E,MAAMjK,KAAKiF,CAAI,CAAC,CACR,CAAX,MAAOlE,IAGXgzE,EAAM1wE,KAAO,QAASuwE,EAAU,wBAAyBt3B,oBACnDm3B,EAAY,GACZC,EAAW,GACX9F,EAAY,GACZ+F,EAAe,GAGnB9zE,MAAMa,KAAKuE,EAAM,SAAS2jE,EAAIC,GAC5B,IAAIprD,EAAO,GACM,UAAd,OAAOla,GACR1D,MAAMa,KAAK6C,EAAI,SAASxG,EAAGuD,GACnB,GAANsoE,GAAW6K,EAAU/xE,KAAKpB,GAAQ,EAAE,CACtC,CAAC,EACDT,MAAMa,KAAKb,MAAMgD,QAAQgmE,CAAK,EAAIhoE,EAAEiE,OAAO,GAAI+jE,CAAK,EAAIvqE,EAAM0yE,cAAcnI,CAAK,EAAG,SAASC,EAAIC,GAC/FtrD,EAAK/b,KAAK,KAAMqnE,GAAS,IAAK,GAAG,CACnC,CAAC,GAEDzqE,EAAMgtE,SAAS/nE,EAAI,SAASmoE,EAAI/G,GAC9B,IAUM3wD,GAVoB,CAAA,IAAvB2wD,EAAMuP,cAA0BvP,EAAM1J,OAAuB,UAAd0J,EAAMrnE,QAGnDqnE,EAAMn2B,MAA+B,CAAA,IAAvBm2B,EAAMuP,cACE,CAAA,IAAvBvP,EAAMuP,aAEG,GAANtL,IAAS+K,EAAahP,EAAM1J,OAAS,CAAA,KAItCjnD,EAAU60D,EAAMlE,EAAM1J,UACXvrD,WAAyB,OAAZsE,IAAkBA,EAAU,IAElD,GAAN40D,GAAW6K,EAAU/xE,KAAKijE,EAAMyL,YAAczL,EAAM1oD,OAAS0oD,EAAM1J,OAAS,EAAE,EAiB9EjnD,GAdAA,EAAU0wD,EAAcl9D,KAAKqpE,EAAW,CACtClM,MAAOA,EACP3wD,QAASA,EACT4wD,QAASiE,EACTj9D,KAAM,OACNvG,IAAK,CACHiZ,GAAI,SAAS28C,GAEX,OADS4V,EAAUjJ,QAAQ57D,KAAK,kBAAmB48D,EAAI,OAAO,EACpD9/D,OAAO,gBAAiBmyD,EAAO,IAAI,CAC/C,CACF,CACF,CAAC,GAGiBh5D,QAAQ,KAAM,IAAI,EAKpCwb,EAAK/b,KAHLsS,EAAU,IAAKA,EAAS,GAGP,GAErB,CAAC,EAEH0/D,EAAShyE,KAAK+b,EAAK3P,KAAK,GAAG,CAAC,CAC9B,CAAC,EAGD+iE,GAAahxE,MAAMa,KAAKmwE,EAAUjD,UAAW,SAAS7wE,EAAG6H,GACvD+uE,EAAa/uE,EAAEq2D,QAAU2S,EAAUlsE,KAAK,KAAOkD,EAAE63D,OAAS,IAAM,GAAG,CACrE,CAAC,EAEMgX,EAAU3lE,KAAK,GAAG,EAAI,OAAS4lE,EAAS5lE,KAAK,MAAM,EAAI,OAAS8/D,EAAU9/D,KAAK,GAAG,EACxF,EAEHimE,EAAMI,UAAYhoE,EAAK8P,OAASngB,EAAOmgB,OAAS,UAAWngB,EAAO6E,OAAS,KAAO,IAAMrD,EACxFzB,SAASoP,KAAKzI,YAAYuxE,CAAK,EAC/BA,EAAMr3D,MAAM,EACZ7gB,SAASoP,KAAK3J,YAAYyyE,CAAK,CACjC,EAGAz1E,EAAM81E,WACG3P,EAITnmE,EAAM+1E,QAAU,SAAU9wE,EAAIijE,GAC5B,IAAIrmE,EAAOqkE,EAAajhE,CAAE,EACrBpD,IAIoB,YAArBN,MAAMvC,KAAKkpE,CAAI,EAEjBrmE,EAAKmrE,SAAS,SAAUxC,EAAIC,GAC1B,IAAIpkE,EAAMokE,EAAMpkE,IACZw6B,EAAMh/B,EAAKg/B,IAAIx6B,CAAG,EAClB6kE,EAAYT,EAAMS,UAElBrqC,EAAIqP,MAAQg4B,IACVh4B,EAAOrP,EAAIqP,KAAOg4B,EACtBrmE,EAAK4J,KAAKiC,KAAK,eAAgBrH,EAAK,IAAI,EACtC6pC,EAAO,WAAa,eAClB2vB,CAAI,EAERh+D,EAAKmqE,aAAa97B,EAAMg7B,CAAS,EAErC,CAAC,GAEDhD,EAAO3mE,MAAMgD,QAAQ2jE,CAAI,EAAIA,EAAO,CAACA,GACrC3mE,MAAMa,KAAK8lE,EAAM,SAAUoC,EAAIC,GAC7B1oE,EAAKmrE,SAAS,SAAUxC,EAAIC,GAC1B,IACMpkE,EAKE6pC,EANJq6B,EAAM5N,QAAU8N,EAAM9N,QACpBt2D,EAAMokE,EAAMpkE,IACZw6B,EAAMh/B,EAAKg/B,IAAIx6B,CAAG,EAClB6kE,EAAYT,EAAMS,UAElB,SAAUX,IAAS1pC,EAAIqP,MAAQq6B,EAAMr6B,OACnCA,EAAOrP,EAAIqP,KAAO,CAAC,CAACq6B,EAAMr6B,KAC9BruC,EAAK4J,KAAKiC,KAAK,eAAgBrH,EAAK,IAAI,EACtC6pC,EAAO,WAAa,eAClB2vB,CAAI,EAERh+D,EAAKmqE,aAAa97B,EAAMg7B,CAAS,EAGvC,CAAC,CACH,CAAC,GAEH3oE,EAAE,IAAM6kE,CAAe,EAAE3/D,OAAO,EAEhC5F,EAAKkgD,OAAO,EACd,EAGA/hD,EAAM2V,OAAS,SAAS1Q,EAAImB,EAASkgB,EAAMtnB,GAEzC,GADamnE,EAAmBlhE,CAAE,EAMlC,OAHIpD,EAAOqkE,EAAajhE,CAAE,GACrB0Q,OAAOvP,EAASkgB,EAAMtnB,CAAI,EAExBgnE,EAAU98D,KAAKrH,CAAI,CAC5B,EAGA7B,EAAMsvD,WAAa,WACjB,IAAIrkD,EAAO1I,EAAEiE,OAAO,GAAI0E,SAAS,EAI7B+mD,GAHJhnD,EAAK,GAAK,aAGO,IAAI7C,OAAO,KAAM,CAChC,OAAQ,KAAM,OAAQ,QAAS,SAAU,YACzC,UAAW,iBACX,YAAa,MAAO,WACpBoH,KAAK,GAAG,EAAI,IAAI,GASlB,OANAjO,MAAMa,KAAK6I,EAAK,GAAI,SAAU5E,EAAKmB,GAC9ByqD,EAAWpvD,KAAKwD,CAAG,GACpB,OAAO4E,EAAK,GAAG5E,EAEnB,CAAC,EAEMrG,EAAM2V,OAAOrS,MAAM,KAAM2H,CAAI,CACtC,EAGAjL,EAAM2S,OAAS,SAASvM,GAClBqP,EAAO,IAAIjK,EAAMpF,CAAO,EAC5B,OAAO4/D,EAAU98D,KAAKuM,CAAI,CAC5B,EAGAzV,EAAM0yE,cAAgB,SAAS/rE,GAM7B,OAJA,OADAA,EAAOpE,EAAEiE,OAAO,GAAIG,CAAI,GACZ3G,EAAMxC,OAAOooE,WACzB,OAAOj/D,EAAK3G,EAAMxC,OAAOqoE,WACzB,OAAOl/D,EAAK3G,EAAMxC,OAAOsoE,aACzB,OAAOn/D,EAAK3G,EAAMxC,OAAOuoE,cAClBp/D,CACT,EAGApE,EAAE,WACAvC,EAAM4W,KAAK,CACb,CAAC,EAEDtV,EAAQsU,EAAU5V,CAAK,CACzB,CAAC,EC9+FDuB,MAAMP,OAAO,CAAC,SAAU,SAAUM,GAChC,aAEA,IAAIiB,EAAIhB,MAAMgB,EACV5C,EAAO4B,MAAM5B,KACbK,EAAQuB,MAAMvB,MACd6I,EAAOtH,MAAMsH,KAAK,EAGlB5I,EAAY,CACdzC,OAAQ,GAER2E,GAAInC,EAAMmC,GAEV6qE,SAAUhtE,EAAMgtE,SAChB3qE,MAAOrC,EAAMqC,MACbkT,IAAK,SAAUnP,GACb,IAAIvE,EAAO/D,KAEX,OADA+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EACxCvE,CACT,EACAkgD,OAAQ/hD,EAAM+hD,OACd+zB,WAAY91E,EAAM81E,WAClBC,QAAS/1E,EAAM+1E,QACf9H,WAAYjuE,EAAMiuE,UACpB,EAGI+H,EAAgB,WAClB,IAAIn0E,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACfyH,EAAKmB,EAAQnB,IAAMmB,EAAQ/D,MAE/B,MAAO,CACL7E,OAAQ4I,EACRuP,OAAQ,SAAUvP,EAASkgB,GACzBzkB,EAAK8T,OAAOzM,KAAKrH,EAAMuE,EAASkgB,CAAI,CACtC,EACAgpC,WAAY,SAAUlpD,EAASkgB,GAC7BrmB,EAAUqvD,WAAWrqD,EAAImB,EAASkgB,CAAI,CACxC,CACF,CACF,EAGI4/C,EAAe,SAAUjhE,GAC3B,IAAIpD,EAAOm0E,EAAcn0E,KAAKoD,GAE9B,OADKpD,GAAMgH,EAAK/J,MAAMmG,EAAM,mCAAsCA,EAAK,cAAkB,sBAAsB,EACxGpD,GAAQ,IACjB,EAIIg+D,EAAO,aAQPniD,EAAY,oBAEZu4D,EAAY,uBACZpP,EAAY,uBACZG,EAAe,sBAEfkP,EAAa,mBACbC,EAAiB,iBACjBC,EAAyB,yBACzBC,EAAmB,mBACnBC,EAAoB,oBACpBC,EAAa,aACbC,EAAmB,mBACnBC,EAAmB,mBACnBC,EAAc,CAAC,MAAO,SAAU,WAAY,QAG5ClrE,EAAQ,SAAUpF,GACpB,IAAIvE,EAAO/D,KACX+D,EAAKQ,MAAQ,EAAEpC,EAAUoC,MACzBR,EAAKrE,OAAS+E,EAAEiE,OAAO,CAAA,EAAM,GAAI3E,EAAKrE,OAAQyC,EAAUzC,OAAQ4I,CAAO,EAEvEvE,EAAK+U,KAAK,EACV/U,EAAK8Q,OAAO,CACd,EAEIgkE,EAAc,SAAU1xE,EAAI2xE,EAAajwE,GAC3C,IAAIkwE,EAAa72E,EAAMe,MAAMkE,GAC7B1D,MAAMa,KAAKuE,GAAQkwE,EAAY,SAAUx0E,EAAOL,GAC9C,IAAI80E,EAAgB90E,EAAKm0E,GACU,CAAC,IAAhCW,EAAc1yE,QAAQ,GAAG,IAC3ByyE,EAAWC,GAAiB90E,GAE9BA,EAAK40E,IAAgBD,EAAY1xE,EAAI2xE,EAAa50E,EAAK40E,EAAY,CACrE,CAAC,CACH,EAEIG,EAAgB,SAAU9xE,EAAImB,EAASuP,GACzC,IAAI9T,EAAOqkE,EAAajhE,CAAE,EAItB+xE,GAHO,eAAXrhE,IAA4B9T,EAAKnE,OAAS,CACxCqyC,OAAQ,EACV,GACsBxtC,EAAEiE,OAAO,CAAA,EAAM,GAAI3E,EAAKi0E,WAAW,EAAG1vE,CAAO,GAC/D6wE,EAAcD,EAAgBj3E,KAC9B62E,EAAcK,EAAY5nB,WAAW3+C,SACrCwmE,EAAQD,EAAY5nB,WAAWpqD,GAe/BkpE,GAbJ,OAAO/nE,EAAQ+wE,aACf,OAAO/wE,EAAQgxE,cACf,OAAOhxE,EAAQixE,YACfr3E,EAAMgtE,SAAS,KAAM,SAAU1C,EAAIC,GACd,YAAfA,EAAMvrE,KACRoH,EAAQ+wE,aAAe,CAAA,EACC,aAAf5M,EAAMvrE,KACfoH,EAAQgxE,cAAgB,CAAA,EACA,UAAf7M,EAAMvrE,OACfoH,EAAQixE,YAAc,CAAA,EAE1B,EAAGL,EAAgB9O,IAAI,EAEP9hE,EAAQ+nE,WACpBj+D,EAAO9J,EAAQ8J,KAEf8mE,EAAgBp1E,IAEb+T,IAAqBw4D,CAAAA,GAAcA,EAAUmJ,OAChDlxE,EAAQ+nE,UAAY,WAClB,IAAIoJ,EAAgBz5E,KAChBmN,EAAOC,UACPssE,EAAUvsE,EAAK,GAIfs9D,GAH0B,aAA1BhnE,MAAMvC,KAAKmvE,CAAS,IACtBqJ,EAAUrJ,EAAU7qE,MAAMi0E,EAAetsE,CAAI,GAAKA,EAAK,IAE1CssE,EAAch+B,SAASgvB,UAgBtC,OAdI0O,EAAYtwE,KAAK8wE,cAAgB,CAACR,EAAYpzE,SAAM6zE,SACtDF,EAAQjP,GAAY1mE,EAAK81E,WAAWH,EAAQjP,EAAS,GAGvDqP,EAAaJ,EAAQjP,GAAW,SAAUvmE,GACxCA,EAAKu0E,GAAcA,KAAcv0E,EAAOA,EAAKu0E,GAAev0E,EAAKk1E,KAAW9lE,WAAavP,EAAKnE,OAAOqyC,OAAO/tC,EAAKk1E,GACnH,EAAGN,CAAW,EAEVW,EAActP,UAAYsP,EAAcxJ,UAAYwJ,EAAcxJ,SAAS/uE,MAC7EuC,MAAM+H,KAAKkuE,EAAQjP,GAAWgP,EAAcxJ,SAASpR,MAAuC,SAAhC4a,EAAcxJ,SAAS/uE,KAAiB,CAAA,CAAI,EAG1G6C,EAAKg2E,SAASL,EAAQjP,EAAS,EAExBiP,CACT,EACApxE,EAAQ+nE,UAAUmJ,IAAM,CAAA,IAG1BlxE,EAAQO,KAAOP,EAAQO,MAAQ,GAE3BswE,EAAYtwE,KAAK8wE,eACnBrxE,EAAQO,KAAO9E,EAAK81E,WAAWvxE,EAAQO,IAAI,GAE7C9E,EAAKg2E,SAASzxE,EAAQO,IAAI,GAGvBgP,IAAqBzF,CAAAA,GAASA,EAAKonE,OACtClxE,EAAQ8J,KAAO,WACb,IAgBM8/D,EAhBF/kE,EAAOC,UAEP4sE,EAAe7sE,EAAK,GAKpB8sE,GAJCD,GACH,OAAOj2E,EAAKm2E,YAGEl6E,KAAK2N,KAAKkI,KAAK,GAO3BskE,GANJp2E,EAAK+1E,aAAa,KAAM,CACtBpB,iBAAkB,CAAA,CACpB,CAAC,EAEDG,EAAY1xE,EAAI2xE,CAAW,EAECmB,EAAUrqE,KAAK,2DAA2D,GActG,GAbIuqE,EAAsBz5E,SACpBwxE,EAAc/vE,EAAU+vE,YAAY/qE,CAAE,EAC1CgzE,EAAsB35C,KAAK,CACzBhM,QAAS09C,EAAYC,OAASD,EAAYrpE,KAAKnI,OAC/CgmE,cAAe,CAACwL,EAAYC,OAASD,EAAYrpE,KAAKnI,MACxD,CAAC,GAEC,CAACs5E,GAAgBd,EAAgB/O,UAAY+O,EAAgBjJ,UAAYiJ,EAAgBjJ,SAAS/uE,MACpGiB,EAAUqJ,KAAKrE,CAAE,EAGnBpD,EAAKq2E,gBAAgBH,CAAS,EAEL,aAArBx2E,MAAMvC,KAAKkR,CAAI,EACjB,OAAOA,EAAK5M,MA5BCxF,KA4BemN,CAAI,CAEpC,EACA7E,EAAQ8J,KAAKonE,IAAM,CAAA,EAEvB,EAEA9rE,EAAM1K,UAAU8V,KAAO,WACrB,IACIxQ,EADOtI,KACQN,OACf26E,EAAU/xE,EAAQrG,KAAK4G,KAAKwxE,QAM5BxD,GALiC,CAAC,IAAlC+B,EAAYtyE,QAAQ+zE,CAAO,IAC7B/xE,EAAQrG,KAAK4G,KAAKwxE,QAAU,OAIfn4E,EAAM2S,OAAOpQ,EAAEiE,OAAO,GAAIJ,EAAS,CAChDO,KAAM,GACN/E,IAAK,GACLsO,KAAM,IACR,CAAC,CAAC,GACEjL,EAAK0vE,EAASn3E,OAAOyH,IACzB+wE,EAAcn0E,KAAKoD,GAdRnH,MAeN62E,SAAWA,EAEhBoC,EAAc9xE,EAAImB,CAAO,CAC3B,EAGAoF,EAAM1K,UAAUtD,OAAS,CACvBuC,KAAM,CACJsvD,WAAY,CACV3+C,SAAU,WACV0nE,SAAU,WACV3zE,KAAM,OACNQ,GAAI,KACJ2kD,IAAK,WACLjH,KAAM,MACR,EACA9vC,KAAM,CACJwlE,OAAQ,GACRC,cAAe,mDACfC,aAAc,mDACdC,SAAU,CAAA,EACV71B,KAAM,GACN81B,UAAW,+CACXC,SAAU,oDACVC,SAAU,6CACVC,wBAAyB,CAAA,EACzBC,eAAgB,CAAA,EAChBC,iBAAkB,CAAA,CACpB,EACAnyE,KAAM,CACJ8wE,aAAc,CAAA,EACdsB,QAAS,KACTZ,QAAS,KACX,EACAt0E,QAAO,CACL6zE,OAAQ,CAAA,EACR91E,IAAK,GACL5C,KAAM,KACNo7C,YAAa,KACbuC,QAAS,KACT0J,MAAO,KACP2yB,UAAW,EACb,EACAx3E,SAAU,CACRy3E,aAAc,KACdC,SAAU,IACZ,CACF,CACF,EAEA1tE,EAAM1K,UAAUg1E,WAAa,WAE3B,OADWh4E,KACF62E,SACA30E,EAAM81E,WAFJh4E,KAEoB62E,SAASn3E,OAAOyH,EAAE,EAFtCnH,KAIGN,MAEhB,EAiCAgO,EAAM1K,UAAU62E,WAAa,SAAUpD,GACrC,IAhC2B2C,EAAOiC,EAAQvC,EAAamC,EAOnDK,EAOAC,EATAr3C,EA4BA57B,EADOtI,KACQg4E,WAAW,EAC1BmB,EAAc7wE,EAAQrG,KACtBsvD,EAAa4nB,EAAY5nB,WACzBiqB,EAAUlzE,EAAQnB,GAItB,OAFAsvE,EAAYA,GAAav0E,EAAMe,MAAMu4E,GAtCnBC,EAwCAhF,EAxCS2C,EAwCE7nB,EAAWpqD,GAxCNk0E,EAwCU9pB,EAAWzF,IAxCbgtB,EAwCkBvnB,EAAW3+C,SAxChBqoE,EAwC0B9B,EAAYtwE,KAAKoyE,QAvClG7B,EAAQA,GAAS,KACjBiC,EAASA,GAAU,WACnBvC,EAAcA,GAAe,WAEzB50C,EAAQ,GAGZzgC,MAAMa,KAAKm3E,EAAS,SAAUl3E,EAAOL,GACnCo3E,EAASlC,EAAQl1E,EAAKk1E,GACtBl1C,EAAMo3C,GAAU72E,EAAEiE,OAAO,GAAIxE,CAAI,EACjCggC,EAAMo3C,GAAQxC,GAAe,EAC/B,CAAC,EAGDr1E,MAAMa,KAAK4/B,EAAO,SAAU3/B,EAAOL,IACjCq3E,EAAUnC,EAAQl1E,EAAKm3E,KACRn3C,EAAMq3C,IACnBr3C,EAAMq3C,GAASzC,GAAaxzE,KAAKpB,CAAI,CAEzC,CAAC,EAEMiH,OAAOiX,KAAK8hB,CAAK,EACrB9b,IAAI,SAASszD,GACZ,OAAOx3C,EAAMw3C,EACf,CAAC,EACAhvE,OAAO,SAAUxI,GAChB,OAAO+2E,EAAU/2E,EAAKm3E,KAAYJ,EAAU,CAAC/2E,EAAKm3E,EACpD,CAAC,CAaL,EAEA3tE,EAAM1K,UAAU24E,WAAa,SAAUlF,EAAWmF,EAAUC,GAC1D,IAAI93E,EAAO/D,KAGPuxD,EAFUxtD,EAAKi0E,WAAW,EACJ/1E,KACGsvD,WACzBunB,EAAcvnB,EAAW3+C,SACzByoE,EAAS9pB,EAAWzF,IAEpBgwB,EAAO,GASX,OARAr4E,MAAMa,KAAKmyE,EAAW,SAAUjK,EAAIC,GAClC,IAAIsP,GAAaF,EAAcA,EAAc,IAAM,IAAMrP,EACrDwP,EAAUv3E,EAAEiE,OAAO,GAAI+jE,CAAK,EAChCuP,EAAQX,GAAU5O,EAAM4O,IAAWO,EACnCE,EAAKx2E,KAAK02E,CAAO,EACjBF,EAAOA,EAAKr1D,OAAO1iB,EAAK43E,WAAWlP,EAAMqM,GAAcrM,EAAMlb,EAAWpqD,IAAK40E,CAAS,CAAC,CACzF,CAAC,EAEMD,CACT,EAGApuE,EAAM1K,UAAUi5E,YAAc,SAAUpzE,GACtC,IAIIP,EACA6wE,EALAp1E,EAAO/D,KACX,OAAK6I,GAIDswE,GADA7wE,EAAUvE,EAAKi0E,WAAW,GACJ/1E,KACZqG,EAAQnB,GACLgyE,EAAY5nB,WAGtB,CACL1oD,KAAMA,EACNkzE,UAAWlzE,EAAKwvE,GAChB6D,cAAe,WACb,OAAOn4E,EAAKo4E,eAAetzE,EAAK0vE,EAAiB,CACnD,CACF,GAdSxtE,EAAK/J,MAAM,4CAAS,CAe/B,EAGA0M,EAAM1K,UAAUm5E,eAAiB,SAAU53E,GACzC,IASIi3E,EAEAY,EAXAr4E,EAAO/D,KACPq8E,EAAet4E,EAAKu4E,mBAAmB/3E,CAAK,EAChD,OAAK83E,IAGD/zE,EAAUvE,EAAKi0E,WAAW,GACJ/1E,KACGsvD,WACFvhC,OACvBwrD,EAAUlzE,EAAQnB,IAElBi1E,EAAW,CACbvzE,KAAMwzE,EACNN,UAAWM,EAAahE,GACxB6D,cAAe,WACb,OAAOn4E,EAAKo4E,eAAeE,EAAa9D,EAAiB,CAC3D,EACAxD,OAAQ,SAAUlsE,GAChB,OAAO1G,EAAUo6E,WAAWf,EAASj3E,EAAOsE,CAAI,CAClD,EACAc,OAAQ,WACN,OAAOxH,EAAUq6E,WAAWhB,EAASj3E,CAAK,CAC5C,EACA0tC,OAAQ,SAAUliC,GAChB,OAAO5N,EAAUs6E,WAAWjB,EAAS/2E,EAAEiE,OAAO,GAAIqH,EAAM,CACtDxL,MAAOA,CACT,CAAC,CAAC,CACJ,EACAm4E,WAAY,SAAU3sE,GACpB,OAAO5N,EAAUkwE,cAAcmJ,EAAS/2E,EAAEiE,OAAO,GAAIqH,EAAM,CACzDxL,MAAOA,CACT,CAAC,CAAC,CACJ,CACF,GAESw3E,UAAYx3E,EACd63E,GAjCErxE,EAAK/J,MAAM,4CAAS,CAkC/B,EAGA0M,EAAM1K,UAAU25E,YAAc,SAAUx1E,GACtC,IACImB,EADOtI,KACQg4E,WAAW,EAG1BoB,EAFc9wE,EAAQrG,KACGsvD,WACNpqD,GAGnB40E,EAAY,GACZa,EAAgBz6E,EAAUi1E,QAAQ9uE,EAAQnB,GAAI,CAAA,CAAI,EAOtD,GANA1D,MAAMa,KAAKs4E,EAAe,SAAUpQ,EAAIC,GACtC,GAAIA,EAAM2M,KAAWjyE,EAEnB,OADA40E,EAAYtP,EAAM4L,GACX,CAAA,CAEX,CAAC,EACI0D,EAKL,OApBW/7E,KAoBCm8E,eAAeJ,CAAS,CACtC,EAGAruE,EAAM1K,UAAUs5E,mBAAqB,SAAU/3E,EAAOkE,EAAOo0E,GAC3D,IACIv0E,EADOtI,KACQg4E,WAAW,EAC1BmB,EAAc7wE,EAAQrG,KACtBu5E,EAAUlzE,EAAQnB,GAClB4xE,EAAa72E,EAAMe,MAAMu4E,GAGzB3G,EAAYkE,EAAWx0E,GAG3B,GAAiB,WAAbs4E,GAAyBhI,EAE3B,OADApwE,EAAEiE,OAAOmsE,EAAWgI,CAAQ,EACrBp0E,EAAQhE,EAAEiE,OAAO,GAAImsE,CAAS,EAAIA,EAU3C,IANA,IAAIiI,EAAU/D,EACVgE,EAAW7xE,OAAO3G,CAAK,EAAEyE,MAAM,GAAG,EAK7BrI,EAAI,EAAGm4E,EAAcK,EAAY5nB,WAAW3+C,SAAUjS,EAAIo8E,EAASr8E,OAAQC,CAAC,GAAI,CACvF,GAAIk8E,GAAYl8E,IAAMo8E,EAASr8E,OAAS,EAAG,CACzC,GAAiB,WAAbm8E,EAUF,OAAQl8E,EAAIm8E,EAAQhE,GAAegE,GAASt4E,OAAOu4E,EAASp8E,GAAI,CAAC,EAAE,GAEnE8D,EAAEiE,QAAQ/H,EAAIm8E,EAAQhE,GAAegE,GAASC,EAASp8E,IAAKk8E,CAAQ,CAExE,CACAC,GAAUn8E,EAAIm8E,EAAQhE,GAA4BgE,GAAfC,EAASp8E,GAC9C,CACA,OAAO8H,EAAQhE,EAAEiE,OAAO,GAAIo0E,CAAO,EAAIA,CACzC,EAEA36E,EAAUm6E,mBAAqB,SAAUn1E,EAAI5C,GACvCR,EAAOqkE,EAAajhE,CAAE,EAC1B,GAAIpD,EACJ,OAAOA,EAAKu4E,mBAAmB/3E,EAAO,CAAA,CAAI,CAC5C,EAcAmJ,EAAM1K,UAAU+2E,SAAW,SAAUlxE,EAAMgzE,GACzC,IAAI93E,EAAO/D,KACPsI,EAAUvE,EAAKi0E,WAAW,EAC1BmB,EAAc7wE,EAAQrG,KACtBu5E,EAAUlzE,EAAQnB,GAIlBoqD,GAFJ1oD,EAAOA,GAAQ9E,EAAKi5E,aAAa,EAEhB7D,EAAY5nB,YACzB0rB,EAAc1rB,EAAW+oB,SACzBxB,EAAcvnB,EAAW3+C,SAc7B,OAZAnP,MAAMa,KAAKuE,EAAM,SAAU2jE,EAAIC,GACvBwQ,KAAexQ,IACnBA,EAAMwQ,GAAe,EAAGxQ,CAAAA,EAAMqM,IAAgBrM,CAAAA,EAAMqM,GAAap4E,SAEnE+rE,EAAM6L,GAA0B7L,EAAM4L,GACtC5L,EAAM8L,GAAoBsD,EAAcA,GAAe,GACnDE,EAAYtP,EAAM4L,IAAmBwD,EAAcA,EAAc,IAAM,IAAMrP,EACjFzoE,EAAKg2E,SAAStN,EAAMqM,IAAgB,GAAIiD,CAAS,CACnD,CAAC,EAEDlD,EAAY2C,EAAS1C,EAAajwE,CAAI,EAE/BA,CACT,EAIMzE,EAAK,GAxCX,IAwCMA,EADF84E,EAEK,SAAU1B,EAASxuE,EAAMC,GAI9B,OAHK7I,EAAGo3E,KACNp3E,EAAGo3E,GAAW/3E,MAAMsJ,SAASC,EAAMC,CAAI,GAElC7I,EAAGo3E,EACZ,EAIEiB,EAAa,SAAUL,EAAUe,EAAYC,EAASlpD,EAAOmpD,GAE/D,IAAI3G,EAAS0F,EAAS1F,OAClB4G,EAAgBlB,EAASkB,eAAiB5G,EAAO98C,QA7dvC,mBA6dwD,EAClE4hD,EAAUY,EAASZ,SAAW8B,EAAc3uE,KAAK,QAAQ,EACzDrG,EAAU8zE,EAAS9zE,SAAWpG,EAAM81E,WAAWwD,CAAO,EACtDO,EAAYK,EAASL,WAAarF,EAAO/nE,KAAK,gBAAgB,EAC9D4uE,EAAgBnV,EAAaoT,CAAO,EAEpCrC,EAAc7wE,EAAQrG,MAAQ,GAC9BsvD,EAAa4nB,EAAY5nB,YAAc,GACvC0rB,EAAc1rB,EAAW+oB,SAEzBkD,EAASD,EAAcjB,mBAAmBP,CAAS,EAGnD0B,EAAsC,YAA3Bh6E,MAAMvC,KAAKi8E,CAAU,EAChCO,EAAWD,EAAW,CAACD,EAAO/E,GAAc0E,EAC5CQ,EAAWH,EAAOP,GAAeS,EAAW,KAEhD,GAAIL,GAAgBK,GAAYF,EAAO/E,KAAgB,CAAC+E,EAAO7E,IAAkD,UAA7B6E,EAAO7E,IAAgC,CACzH,IAAIwC,EAAehC,EAAYz1E,SAASy3E,aACxC,GAAiC,aAA7B13E,MAAMvC,KAAKi6E,CAAY,GACyB,CAAA,IAA9CA,EAAaK,EAASgC,EAAQL,CAAU,EAC1C,OAAOQ,CAGb,CAEA,IAAIC,EAAaJ,EAAO9E,GAGpBmF,EAAUP,EAAc1tE,KAAK,sBAAwBmsE,EAAY,IAAI,EAErE+B,EAAeD,EAAQjuE,KAAK,4BAA4B,EAQxDmuE,GAPJD,EAAalqE,KAAK8pE,EAAWvE,EAAYpkE,KAAK0lE,aAAetB,EAAYpkE,KAAKylE,aAAa,EAC3FgD,EAAOP,IAAgBa,EAAa1qE,IAAI,aAAc,SAAS,EAE/D+lE,EAAYpkE,KAAK2lE,UAAYmD,EAC1BjuE,KAAK,yFAAyF,EAC9FgE,KAAK8pE,EAAWvE,EAAYpkE,KAAK6lE,SAAWzB,EAAYpkE,KAAK4lE,SAAS,EACzE6C,EAAO/E,GAAciF,EACNF,EAAOjsB,EAAWpqD,KAEjC,GADA42E,IAAazqE,YAAciqE,EAAc39E,OAAOqyC,OAAO8rC,GAAYL,GAClD,OAAbC,EAAJ,CAII1vD,EAAauvD,EAAOjsB,EAAW3+C,WAAa,GAEhD,GAAI8qE,EAEF,GAAIE,EAAY,CACd,GAAI,CAAC3vD,EAAWvtB,OAAQ,OACxBm9E,EAAQzjD,QAAQnM,EAAW7F,IAAI,SAAU1e,EAAOnF,EAAOy5E,GACrD,MAAO,sBAAwBt0E,EAAM2uE,GAAkB,IACzD,CAAC,EAAE3mE,KAAK,GAAG,CAAC,EAAEuB,YAAY8uD,CAAI,EAC9Bt+D,MAAMa,KAAK2pB,EAAY,SAAUu+C,EAAIC,GAC9BA,EAAMwQ,KAIPG,CAAAA,GAAYK,GAAahR,EAAMgM,GASxBhM,EAAMgM,IACfgE,EAAW,CACTV,UAAWtP,EAAM4L,GACjB3B,OAAQ4G,EAAc1tE,KAAK,sBAAwB68D,EAAM4L,GAAkB,IAAI,EAAEpiE,MAAM,EACvFqnE,cAAeA,EACf9B,QAASA,EACTlzE,QAASA,CACX,EAAG,CAAA,CAAI,EAdPm0E,EAAW,CACTV,UAAWtP,EAAM4L,GACjB3B,OAAQ4G,EAAc1tE,KAAK,sBAAwB68D,EAAM4L,GAAkB,IAAI,EAAEpiE,MAAM,EACvFqnE,cAAeA,EACf9B,QAASA,EACTlzE,QAASA,CACX,EAAG60E,EAAYC,EAASlpD,EAAOmpD,CAAY,EAU/C,CAAC,CACH,KAAO,CACL,IAOMY,EAeAp1E,EAQAq1E,EAKAC,EACAC,EACAC,EACAC,EACAC,EAgDAC,EAEAC,EAMAC,EA/FFC,EAAexF,EAAYpzE,UAAS,GACpC64E,EAAWD,EAAa76E,KAAOwE,EAAQxE,IAC3C,GAAI66E,EAAa/E,QAAU4D,EAAOP,IAAgB,CAACO,EAAO7E,GAqExD,OApEA6E,EAAO7E,GAAoB,UAC3BmF,EAAalqE,KAAK,4FAA4F,EAG1GqqE,EAAiB,SAAUp1E,GAC7B20E,EAAO7E,GAAoB,UAC3B6E,EAAOjsB,EAAW3+C,UAAY/J,EAC9B00E,EAAcxD,SAASyD,EAAOjsB,EAAW3+C,UAAW4qE,EAAOnF,EAAe,EAC1EoE,EAAWL,EAAU,CAAA,EAAMqB,CAAAA,GAAmBL,EAASlpD,EAAOmpD,CAAY,CAC5E,EAEIpkE,EAAS0lE,EAAa1lE,OACC,aAAvBxV,MAAMvC,KAAK+X,CAAM,EACnBA,EAAOukE,EAAQl1E,EAAS21E,CAAc,GAMpCp1E,EAAOpE,EAAEiE,OAFA,GAEei2E,EAAap2B,OAASjgD,EAAQigD,KAAK,EAC3Ds2B,EAAiBF,EAAazD,UAClCz3E,MAAMa,KAAKu6E,EAAgB,SAAUt6E,EAAOL,GAEtC46E,EAAU56E,EAAK8E,MAAM,GAAG,EAC5BH,EAAKi2E,EAAQ,GAAGz1D,KAAK,GAAKm0D,GAAQsB,EAAQ,IAAMA,EAAQ,IAAIz1D,KAAK,EACnE,CAAC,GAEG60D,EAAmBS,EAAariC,aAAeh0C,EAAQg0C,cACa,GAAhD4hC,EAAiB53E,QAAQ,kBAAkB,IACjEuC,EAAOW,KAAKI,UAAUf,CAAI,GAExBk2E,EAAYJ,EAAangC,QAAUl2C,EAAQk2C,OAC3C2/B,EAAgBQ,EAAahkC,UAAYryC,EAAQqyC,SACjDyjC,EAAqBO,EAAah9B,eAAiBr5C,EAAQq5C,cAC3D08B,EAAeM,EAAa9/B,SAAWv2C,EAAQu2C,QAC/Cy/B,EAAiBK,EAAatO,WAAa/nE,EAAQ+nE,UACnDkO,EAAgBI,EAAaljC,UAAYnzC,EAAQmzC,SAErDh3C,EAAEu4C,KAAK,CACL97C,KAAM69E,GAAa,MACnBj7E,IAAK86E,EACLtiC,YAAa4hC,EACbr1E,KAAMA,EACN8xC,SAAUwjC,GAAiB,OAC3Bx8B,cAAey8B,EACfv/B,QAASw/B,GAAgB,GACzB9/B,QAAS,SAAUqiB,IAGfA,EAD4B,YAA1B,OAAO0d,EACHA,EAAelzE,KAAK9C,EAASs4D,CAAG,GAAKA,EAGzCA,GAAI2d,EAAchU,aAAegU,EAAc7gC,YACjD8/B,EAAO7E,GAAoB,QAE3BmF,EAAalqE,KAAK,+CAA+C,GAIjEqqE,EAAerd,EAAI2d,EAAc9T,SAAS,CAE9C,EACAzpE,MAAO,SAAU2D,EAAG1D,GAClBu8E,EAAO7E,GAAoB,QAEF,YAAzB,OAAOrwE,EAAQtH,OAAwBsH,EAAQtH,MAAM2D,EAAG1D,CAAG,CAC7D,CACF,CAAC,GACM08E,EAEIH,EAAO9E,GAAoB,CAAA,EACpCzqD,EAAWvtB,SAET4H,CAAAA,EAAQ2nE,UAAc3nE,EAAQxE,KAAOwE,CAAAA,EAAQ6hE,YAC3C8F,EAAW3nE,EAAQ2nE,UACV/uE,KACXuC,MAAM+H,KAAKyiB,EAAYgiD,EAASpR,MAAyB,SAAlBoR,EAAS/uE,KAAiB,CAAA,CAAI,EAGrEuC,MAAM+H,KAAKyiB,EAAY/rB,EAAMxC,OAAOqoE,UAAW,KAAM,CAAA,CAAI,GAG7DwV,EAAcxD,SAASyD,EAAOjsB,EAAW3+C,UAAW4qE,EAAOnF,EAAe,EAEtEmG,EAAOt8E,EAAMquE,UAAUiL,EAASvtD,EAAY,KAAM,KAAM8tD,CAAS,EAEjE0C,EAAU,CACZhO,IAAKhsE,EAAE+5E,EAAK/N,IAAI/+D,KAAK,EAAE,CAAC,EACxBg/D,UAAWjsE,EAAE+5E,EAAK9N,UAAUh/D,KAAK,EAAE,CAAC,EACpCi/D,YAAalsE,EAAE+5E,EAAK7N,YAAYj/D,KAAK,EAAE,CAAC,CAC1C,EAEIgtE,GADY3C,EAAU/yE,MAAM,GAAG,EAAEtI,OAAS,GACb,GAAK,EACtC+C,MAAMa,KAAK2pB,EAAY,SAAU4+C,EAAYmS,GAC3CP,EAAQhO,IAAIpoD,GAAGwkD,CAAU,EAAEl+D,KAAK,CAC9BswE,aAAcD,EAAU3G,GACxB6G,iBAAkBF,EAAU3G,GAC5B8G,aAAcT,CAChB,CAAC,EACDD,EAAQ/N,UAAUroD,GAAGwkD,CAAU,EAAEl+D,KAAK,CACpCswE,aAAcD,EAAU3G,GACxB6G,iBAAkBF,EAAU3G,GAC5B8G,aAAcT,CAChB,CAAC,EACDD,EAAQ9N,YAAYtoD,GAAGwkD,CAAU,EAAEl+D,KAAK,CACtCswE,aAAcD,EAAU3G,GACxB6G,iBAAkBF,EAAU3G,GAC5B8G,aAAcT,CAChB,CAAC,CACH,CAAC,EAEDpB,EAAc1tE,KAAKgQ,CAAS,EAAEhQ,KAAK,4BAA8BmsE,EAAY,IAAI,EAAEpwC,MAAM8yC,EAAQhO,GAAG,EACpG6M,EAAc1tE,KAAKuoE,CAAS,EAAEvoE,KAAK,4BAA8BmsE,EAAY,IAAI,EAAEpwC,MAAM8yC,EAAQ/N,SAAS,EAC1G4M,EAAc1tE,KAAKm5D,CAAS,EAAEn5D,KAAK,4BAA8BmsE,EAAY,IAAI,EAAEpwC,MAAM8yC,EAAQ9N,WAAW,EAG5G4M,EAAcnD,gBAAgBqE,EAAQhO,IAAKiO,CAAY,EAEnDtB,IAAW,CAACK,GAEdh6E,MAAMa,KAAK2pB,EAAY,SAAUu+C,EAAIC,GACnCgQ,EAAW,CACTV,UAAWtP,EAAM4L,GACjB3B,OAAQ4G,EAAc1tE,KAAK,sBAAwB68D,EAAM4L,GAAkB,IAAI,EAAEpiE,MAAM,EACvFqnE,cAAeA,EACf9B,QAASA,EACTlzE,QAASA,CACX,EAAG60E,EAAYC,EAASlpD,EAAOmpD,CAAY,CAC7C,CAAC,CAGP,MAEAE,EAAcrD,YAAc,CAAA,GAExBkD,GAAW,CAACK,GACdh6E,MAAMa,KAAK2pB,EAAY,SAAUu+C,EAAIC,GACnCgQ,EAAW,CACTV,UAAWtP,EAAM4L,GACjB3B,OAAQ4G,EAAc1tE,KAAK,sBAAwB68D,EAAM4L,GAAkB,IAAI,EAAEpiE,MAAM,EACvFqnE,cAAeA,EACf9B,QAASA,EACTlzE,QAASA,CACX,EAAG60E,EAAYC,EAASlpD,EAAOmpD,CAAY,CAC7C,CAAC,EACDC,EAAc1tE,KAAKqe,EAAW7F,IAAI,SAAU1e,EAAOnF,EAAOy5E,GACxD,MAAO,sBAAwBt0E,EAAM2uE,GAAkB,IACzD,CAAC,EAAE3mE,KAAK,GAAG,CAAC,IAER0tE,EAAiB7B,EAAc5B,WAAW1tD,EAAYuvD,EAAOjsB,EAAWpqD,IAAK40E,CAAS,EAC1FuB,EAAc1tE,KAAKwvE,EAAeh3D,IAAI,SAAU1e,EAAOnF,EAAOy5E,GAC5D,MAAO,sBAAwBt0E,EAAM2uE,GAAkB,IACzD,CAAC,EAAE3mE,KAAK,GAAG,CAAC,IALEqB,SAASgvD,CAAI,EAU/Bmb,EAAW,UAAY1B,EAAS,WAC9Br5E,EAAU8hD,OAAOu3B,CAAO,CAC1B,EAAG,CAAC,EAAE,EAEF6B,GAA6C,YAA7BG,EAAO7E,KACrByC,EAAWjC,EAAYz1E,SAAS03E,SACX,aAAzB33E,MAAMvC,KAAKk6E,CAAQ,IAAoBA,EAASI,EAASgC,EAAQE,CAAQ,CA1M3E,CA6MA,OAAOC,CACT,EAqQI0B,GAzPJl9E,EAAUs6E,WAAa,SAAUt1E,EAAI4I,GACnC,IAKIxL,EACA44E,EACAC,EAPAr5E,EAAOqkE,EAAajhE,CAAE,EAC1B,GAAKpD,EAWL,OAPIQ,GAFJwL,EAAOA,GAAQ,IAEExL,MACb44E,EAAaptE,EAAKotE,WAClBC,EAAUrtE,EAAKuvE,QACfjC,EAAettE,EAAKstE,aAGpBC,EADUv5E,EAAKi0E,WAAW,EACFrqE,KAAKkI,KAAK,EAC/B4mE,EAAW,CAChB/F,OAAQ4G,EAAc1tE,KAAK,sBAAwBrL,EAAQ,IAAI,EAAE0R,MAAM,CACzE,EAAGknE,EAAYC,EAAS,KAAMC,CAAY,CAC5C,EAOAl7E,EAAUo9E,UAAY,SAAUp4E,EAAIg2E,GAClC,GAA+B,YAA3B15E,MAAMvC,KAAKi8E,CAAU,EACvB,OAAOpyE,EAAK/J,MAAM,kFAAgC,EAGpD,IAAI+C,EAAOqkE,EAAajhE,CAAE,EAC1B,GAAKpD,EAAL,CAEAA,EAAKm2E,YAAciD,EACnB,IAAI70E,EAAUvE,EAAKi0E,WAAW,EAC1BmB,EAAc7wE,EAAQrG,KACtBg4E,EAAY3xE,EAAQqF,KAAKkI,KAAK,EAC9BonE,EAAc9D,EAAY5nB,WAAW+oB,SACrClB,EAAQD,EAAY5nB,WAAWpqD,GAC/B2zE,EAA0B3B,EAAYpkE,KAAK+lE,wBAE/C,GAAKqC,EAgBE,CACDP,EAAgBz6E,EAAUi1E,QAAQjwE,EAAI,CAAA,CAAI,EAG9C,GAAIgyE,EAAYpzE,SAAM6zE,OAAQ,CAE5B,IAAI4F,EAAiB,CAAA,EAQrB,GAPA/7E,MAAMa,KAAKs4E,EAAe,SAAUpQ,EAAIC,GACtC,GAAIA,EAAMwQ,IAAgB,CAACxQ,EAAMkM,GAE/B,MAAO,EADP6G,EAAiB,CAAA,EAGrB,CAAC,EAEG,CAACA,EASH,OAPA/7E,KAAAA,MAAMa,KAAKnC,EAAUi1E,QAAQjwE,CAAE,EAAG,SAAUqlE,EAAIC,GAC9CtqE,EAAUs6E,WAAWt1E,EAAI,CACvB5C,MAAOkoE,EAAM4L,GACb8E,WAAY,CAAA,EACZmC,QAAS,CAAA,CACX,CAAC,CACH,CAAC,CAGL,CAGA,IAAIG,EAAgB,CAAA,EAQpB,GAPAh8E,MAAMa,KAAKs4E,EAAe,SAAUpQ,EAAIC,GACtC,GAAIA,EAAMwQ,IAAgB,CAACxQ,EAAMiM,GAE7B,MAAO,EADP+G,EAAgB,CAAA,EAGtB,CAAC,EAEGA,EACF17E,EAAK+1E,aAAa,KAAM,SAAUlrB,IAC5BA,EAAEquB,IAAgBnC,KACpBlsB,EAAE6pB,GAAc,CAAA,EAChB7pB,EAAEwqB,KAAW9lE,aAAcvP,EAAKnE,OAAOqyC,OAAO2c,EAAEwqB,IAAU,CAAA,EAE9D,CAAC,EAEDa,EAAUrqE,KAAK,2BAA2B,EAAEqD,YAAY8uD,CAAI,EAE5DkY,EAAUrqE,KAAK,4BAA4B,EAAEgE,KAAKulE,EAAYpkE,KAAK0lE,YAAY,EAC/EtB,EAAYpkE,KAAK2lE,UAAYT,EAC1BrqE,KAAK,yFAAyF,EAC9FgE,KAAKulE,EAAYpkE,KAAK6lE,QAAQ,MAC5B,CASL,GAPA72E,EAAK+1E,aAAa,KAAM,SAAUlrB,IAC5BA,EAAEquB,IAAgBnC,KACpBlsB,EAAE6pB,GAAc,CAAA,EAChB7pB,EAAE8pB,GAAoB,CAAA,EACtB9pB,EAAEwqB,KAAW9lE,aAAcvP,EAAKnE,OAAOqyC,OAAO2c,EAAEwqB,IAAU,CAAA,EAE9D,CAAC,EACG9wE,EAAQ2nE,UAAY3nE,EAAQ2nE,SAAS/uE,MAAQoH,EAAQ6hE,SACvD,OAAOhoE,EAAUqJ,KAAKrE,CAAE,EAE1B,IAOIygC,EAPA83C,EAAQx9E,EAAMquE,UAAUppE,EAAIy1E,CAAa,EAEzC+C,EAAW,CACblP,IAAKhsE,EAAEi7E,EAAMjP,IAAI/+D,KAAK,EAAE,CAAC,EACzBg/D,UAAWjsE,EAAEi7E,EAAMhP,UAAUh/D,KAAK,EAAE,CAAC,EACrCi/D,YAAalsE,EAAEi7E,EAAM/O,YAAYj/D,KAAK,EAAE,CAAC,CAC3C,EAEAjO,MAAMa,KAAKs4E,EAAe,SAAUb,EAAW6D,GAC7C,IAAIC,EAAYD,EAASvH,GAAgBrvE,MAAM,GAAG,EAAEtI,OAAS,EAC7DknC,EAAQ,CACNq3C,aAAcW,EAASvH,GACvB6G,iBAAkBU,EAASvH,GAC3B8G,aAAcU,CAChB,EACAF,EAASlP,IAAIpoD,GAAG0zD,CAAS,EAAEptE,KAAKi5B,CAAK,EACrC+3C,EAASjP,UAAUroD,GAAG0zD,CAAS,EAAEptE,KAAKi5B,CAAK,EAC3C+3C,EAAShP,YAAYtoD,GAAG0zD,CAAS,EAAEptE,KAAKi5B,CAAK,CAC/C,CAAC,EACDnkC,MAAMa,KAAK,CAAC,OAAQ,UAAW,WAAY,SAAU3D,EAAGuD,GACtD+1E,EAAUrqE,KAAK,gBAAkB1L,EAAO,QAAQ,EAAE0P,KAAK+rE,EAAS,CAAC,MAAO,YAAa,eAAeh/E,GAAG,CACzG,CAAC,EACDoD,EAAKq2E,gBAAgBH,EAAW,EAAG,CAAA,CAAK,CAC1C,CACF,MAnGEl2E,EAAK+1E,aAAa,KAAM,SAAUlrB,IAC5BA,EAAEquB,IAAgBnC,KACpBlsB,EAAE6pB,GAAc,CAAA,EAChB7pB,EAAEwqB,KAAW9lE,aAAcvP,EAAKnE,OAAOqyC,OAAO2c,EAAEwqB,IAAU,CAAA,EAE9D,CAAC,EAEDa,EAAUrqE,KAAK,4CAA4C,EAAEmD,SAASgvD,CAAI,EAE1EkY,EAAUrqE,KAAK,4BAA4B,EAAEgE,KAAKulE,EAAYpkE,KAAKylE,aAAa,EAChFrB,EAAYpkE,KAAK2lE,UAAYT,EAC1BrqE,KAAK,yFAAyF,EAC9FgE,KAAKulE,EAAYpkE,KAAK4lE,SAAS,EAwFpCx4E,EAAU8hD,OAAO98C,CAAE,CAjHF,CAkHnB,EAEAuG,EAAM1K,UAAUo3E,gBAAkB,SAAUH,EAAW6F,EAAO1C,GAC5D,IAAIr5E,EAAO/D,KACPsI,EAAUvE,EAAKi0E,WAAW,EAC1BsF,EAAgBh1E,EAAQqF,KAAKkI,KAAK,EAElC2lE,GADH8B,EAAcpqE,SAASklE,CAAU,GAAKkF,EAAcvqE,SAASqlE,CAAU,EAC1D9vE,EAAQnB,IAClBgyE,EAAc7wE,EAAQrG,MAAQ,GAE9B89E,GADkB5G,EAAYtwE,KACZswE,EAAYpkE,MAAQ,IACtCw8C,EAAa4nB,EAAY5nB,YAAc,GACvC0rB,EAAc1rB,EAAW+oB,SAEzBiD,GADgBD,EAAc3uE,KAAK,YAAY,EAC/B5K,GAehBi8E,IAZJF,EAAQA,GAAS,KAIfxC,EAAc1tE,KAAK,wCAAwC,EAAEjB,KAAK,aAAcmxE,CAAK,EACrFr8E,MAAMa,KAAKpC,EAAMe,MAAMu4E,GAAU,SAAUO,EAAW6D,GACpDtC,EAAc1tE,KAAK,iDAAmDmsE,EAAY,GAAG,EAAEptE,KAAK,iBAAkBixE,EAASvH,EAAe,EACtIiF,EAAc1tE,KAAK,oDAAsDmsE,EAAY,GAAG,EAAEptE,KAAK,iBAAkBixE,EAASvH,EAAe,EACzIiF,EAAc1tE,KAAK,oDAAsDmsE,EAAY,GAAG,EAAEptE,KAAK,iBAAkBixE,EAASvH,EAAe,CAC3I,CAAC,GAGc,MACb4H,EAAU1uB,EAAW5qD,KACrB4zE,EAASwF,EAAgBxF,QAAU,GAwDvC,GAvDA92E,MAAMa,KAAK21E,EAAUrqE,KAAK,kBAAoBqwE,EAAU,IAAI,EAAG,SAAU17E,EAAOL,GAE9E,IAUIs5E,EAWA0C,EArBAxJ,GADJxyE,EAAOO,EAAEP,CAAI,GACK01B,QAAQ,IAAI,EAC1BumD,EAAWj8E,EAAK0O,SAAS,mBAAmB,EAC5CutE,EAASjtE,SAAS,uBAAuB,IAGzCktE,EAAU1J,EAAO/nE,KAAK,gBAAgB,KAI1C+nE,EAAS4G,EAAc1tE,KAAK,sBAAwBwwE,EAAU,IAAI,GAC9D5C,EAASD,EAAcjB,mBAAmB8D,CAAO,GAE1C3H,IAAe+E,EAAOP,MAE/B+C,EAAaA,GAAc,IAChBI,GAAW,CAAA,GAEpB5C,EAAOhF,IACT9B,EAAO9mE,KAAK,iDAAiD,EAAE4wB,KAAK,gBAAiB,CAAA,CAAI,EAGvF0/C,EAAWC,EAASvsE,KAAK,GAE7BusE,EADWzJ,EAAO9mE,KAAK,kBAAoBqwE,EAAU,yBAAyB,GACrEltE,SAAS,uBAAuB,EACtBotE,EAChBvsE,KAAK,CAAC,uDACL,UACA,gBAAmB2mE,EAAS7D,EAAO/nE,KAAK,YAAY,EAAK,MACxD6uE,EAAOP,IAAgB8C,EAAgBjF,wBAA2B,GAAK,uBACxE,KACA0C,EAAO/E,GAAcsH,EAAgBtF,aAAesF,EAAgBvF,cACpE,SACAuF,EAAgBrF,SAAW,sDACvB8C,EAAOjsB,EAAW1M,OAASk7B,EAAgBl7B,KAAQ,+BAAiC,KACrF24B,EAAOP,GAAe,GAAK,8BAC5B,MACCO,EAAOjsB,EAAW1M,OAASk7B,EAAgBl7B,OACzC24B,EAAOP,GACLO,EAAO/E,GAAcsH,EAAgBnF,SAAWmF,EAAgBpF,UACjEoF,EAAgBlF,WAClB,IAAM,SAAW,GACrBqF,GAAUxuE,KAAK,EAAE,CAAC,EACnB9B,KAAK,4BAA4B,EAGvBvL,GAAG,QAAS,SAAUvE,GACjC2D,MAAM0I,MAAMrM,CAAK,EAGjB28E,EAAW,CAAC/F,OAAQA,CAAM,EAAG,KAAM,KAAM,KAAM,CAAA,CAAI,CACrD,CAAC,EACH,CAAC,EAEG,CAACoJ,GAAS3G,EAAYpkE,KAAKimE,kBAAoBj3E,EAAKm2E,cAAgB5mE,UACtE,OAAOnR,EAAUo9E,UAAU/D,EAAS,CAAA,CAAI,EAI1B,CAAA,IAAZ4B,GAAqB4C,EACvBv8E,MAAMa,KAAK07E,EAAY,SAAUz7E,EAAOL,GAClCm8E,EAAkB/C,EAAc1tE,KAAK,sBAAwBrL,EAAQ,IAAI,EAC7E87E,EAAgBzwE,KAAK,4BAA4B,EAAEgE,KAAKmsE,EAAgBtF,YAAY,EACpFgC,EAAW,CAAC/F,OAAQ2J,EAAgBpqE,MAAM,CAAC,EAAG,CAAA,CAAI,CACpD,CAAC,EAEDinE,EAAW,mBAAqB1B,EAAS,WACvClzE,EAAQ+wE,cAAgBgG,EAAat7E,CAAI,EACzClC,EAAKgT,OAAOpQ,EAAE,6BAA+B+2E,EAAU,IAAI,CAAC,CAC9D,EAAG,CAAC,EAAE,CAEV,EAEmB,SAAUz3E,GAC3B,IAAIuE,EAAUvE,EAAKi0E,WAAW,EAC1BsF,EAAgBh1E,EAAQqF,KAAKkI,KAAK,EAElCvH,EAAM,EACNgyE,EAAShD,EAAc1tE,KAAK,4BAA4B,EACxD2wE,EAAWjD,EAAc1tE,KAAK,+BAA+B,EAC7D4wE,EAAWlD,EAAc1tE,KAAK,+BAA+B,EACjEnM,MAAMa,KAAKP,EAAK43E,WAAWz5E,EAAMe,MAAMqF,EAAQnB,GAAG,EAAG,SAAUqlE,EAAIC,GAC7DA,EAAgB,WACL1oE,EAAKu4E,mBAAmB7P,EAAM4L,EAAe,EAC1C,QAAI,EAAE/pE,EACxBgyE,EAAOj4D,GAAGmkD,CAAE,EAAE58D,KAAK,wBAAwB,EAAEgE,KAAKtF,CAAG,EACrDiyE,EAASl4D,GAAGmkD,CAAE,EAAE58D,KAAK,wBAAwB,EAAEgE,KAAKtF,CAAG,EACvDkyE,EAASn4D,GAAGmkD,CAAE,EAAE58D,KAAK,wBAAwB,EAAEgE,KAAKtF,CAAG,EACzD,CAAC,CACH,GAuCIwrE,GApCJpsE,EAAM1K,UAAU6R,OAAS,SAAU3T,GACjC,IAAI6C,EAAO/D,KACX+D,EAAK8yE,SAAW30E,EAAe,eAAThB,EAAwB,aAAe,UAAU6C,EAAK8yE,SAASn3E,OAAOyH,GAAI1C,EAAEiE,OAAO,CAAA,EAAM,GAAI3E,EAAKrE,MAAM,CAAC,EAC/HqE,EAAKrE,OAASqE,EAAK8yE,SAASn3E,MAC9B,EAGAgO,EAAM1K,UAAU6U,OAAS,SAAUvP,EAASkgB,EAAMtnB,GAChD,IAAI6C,EAAO/D,KAEXsI,EAAUA,GAAW,GACrB,OAAOvE,EAAK0rE,SAGZhsE,MAAMa,KAAKgE,EAAS,SAAUC,EAAKrE,GACR,UAArBT,MAAMvC,KAAKgD,CAAI,GAAe,OAAOH,EAAKrE,OAAO6I,EACvD,CAAC,EAGD0wE,EAAcl1E,EAAKi0E,WAAW,EAAE7wE,GAAImB,EAASpH,GAAQ,CAAA,CAAI,EAGzD6C,EAAKrE,OAAS+E,EAAEiE,OAAO8f,EAAM,GAAIzkB,EAAKrE,OAAQ4I,CAAO,EAGrDvE,EAAK8Q,OAAO3T,CAAI,CAClB,EAGAiB,EAAUqvD,WAAa,WACrB,IAAIrkD,EAAO1I,EAAEiE,OAAO,CAAA,EAAM,GAAI0E,SAAS,EAGvC,OAFAD,EAAK,GAAK,aAEHhL,EAAU0V,OAAOrS,MAAM,KAAM2H,CAAI,CAC1C,EAEmB,SAAUtE,EAAM43E,EAAW3H,EAAa4H,GACzD,IAAIC,EAAc,GAUlB,OATAl9E,MAAMa,KAAKuE,EAAM,SAAU2jE,EAAIC,GACC,aAA1BhpE,MAAMvC,KAAKu/E,CAAS,EACtBA,EAAUhU,CAAK,EAEfhoE,EAAEiE,OAAO+jE,EAAOgU,CAAS,EAE3BE,EAAYr7E,KAAKb,EAAEiE,OAAO,GAAI+jE,CAAK,CAAC,EACpCiU,IAAeC,EAAcA,EAAYl6D,OAAOqzD,EAAarN,EAAMqM,GAAc2H,EAAW3H,EAAa4H,CAAU,CAAC,EACtH,CAAC,EACMC,CACT,GA2CIC,GAzCJlzE,EAAM1K,UAAU82E,aAAe,SAAUjxE,EAAM43E,EAAWC,GACxD,IACIp4E,EADOtI,KACQg4E,WAAW,EAC1BmB,EAAc7wE,EAAQrG,KAG1B,OAFA4G,EAAOA,GAAQ3G,EAAMe,MAAMqF,EAAQnB,IAE5B2yE,EAAajxE,EAAM43E,EAAWtH,EAAY5nB,WAAW3+C,SAAU8tE,CAAU,CAClF,EAEAhzE,EAAM1K,UAAUg6E,aAAe,WAC7B,IACI10E,EADOtI,KACQg4E,WAAW,EAE9B,OAAO91E,EAAMe,MAAMqF,EAAQnB,GAC7B,EAEAhF,EAAU23E,aAAe,SAAU3yE,EAAIs5E,EAAW53E,GAChD,IAAI9E,EAAOqkE,EAAajhE,CAAE,EACtBmB,EAAUvE,EAAKi0E,WAAW,EAQ9B,OAPKnvE,EAAAA,IACCP,EAAQxE,IACH5B,EAAMe,MAAMqF,EAAQnB,IAEpBmB,EAAQO,MAGZ9E,EAAK+1E,aAAajxE,EAAM43E,CAAS,CAC1C,EAEAt+E,EAAUqJ,KAAO,SAAUrE,GACzB,IAAIpD,EAAOqkE,EAAajhE,CAAE,EACtBpD,GAEUA,EAAKi0E,WAAW,EAClB7N,WACVpmE,EAAKg2E,SAAS,EACd53E,EAAUguE,WAAWhpE,CAAE,EAE3B,EAGsB,SAAU8B,GAC9B,IAAIuyE,EAAUvyE,EAAIvJ,OAAOyH,GACrB05E,EAAYzY,EAAaoT,CAAO,EAChCgC,EAASv0E,EAAIJ,KAAO1G,EAAUm6E,mBAAmBd,EAASvyE,EAAI1E,KAAK,EACnE67E,EAAU5C,EAAOnF,GAIjByI,GAHJ73E,EAAI8yE,UAAYqE,EAGDn3E,EAAI8rE,QACnB9rE,EAAI8rE,OAAS,WACX,IACI5nE,EAAOC,UAEP6a,GADJxjB,EAAEiE,OAAOm4E,EAAUvE,mBAAmB8D,CAAO,EAAGjzE,EAAK,EAAE,EAC7C2zE,EAASt7E,MAHFxF,KAGoBmN,CAAI,GACrC8yE,EAAUh3E,EAAIvJ,OAAOuC,KAAKsvD,WAAW5qD,KAGzC,OAFAs5E,KAAW9yE,EAAK,IAAMlE,EAAIqW,GAAG1P,KAAK,kBAAoBqwE,EAAU,IAAI,EAAErtE,SAAS,sBAAsB,EAAEK,YAAY,uBAAuB,EAC1I4tE,EAAUzG,gBAAgBnxE,EAAIqW,GAAIrW,EAAIqW,GAAG3Q,KAAK,YAAY,EAAG,CAAA,CAAK,EAC3DsZ,CACT,EAGAhf,EAAI6rE,IAAM,WACR3yE,EAAUq6E,WAAWhB,EAASgC,CAAM,CACtC,EAGAv0E,EAAIopE,cAAgB,SAAU79C,GAC5BryB,EAAUkwE,cAAcmJ,EAAS,CAC/Bj3E,MAAOi5E,EACPhpD,QAASA,CACX,CAAC,CACH,CACF,GAwdIusD,GArdJ5+E,EAAUo6E,WAAa,SAAUp1E,EAAI5C,EAAOy8E,GAC1C,IAKI/G,EAEAmG,EACAa,EAMAC,EAEAC,EAhBAp9E,EAAOqkE,EAAajhE,CAAE,EACtBpD,KAEAuE,EAAUvE,EAAKi0E,WAAW,GACJ/1E,KAEtBy0E,GADAuD,EAAY3xE,EAAQqF,KAAKkI,KAAK,GACXjG,KAAK,sBAAwBrL,EAAQ,IAAI,EAC5D67E,EAAU1J,EAAO/nE,KAAK,YAAY,EAClCsyE,EAAUvK,EAAO/nE,KAAK,YAAY,EAEjCqyE,KAIDE,EAAcn9E,EAAKu4E,mBAAmB/3E,EAAO,CAAA,EAAOy8E,CAAO,EAE3DG,EAAQj/E,EAAMquE,UAAUppE,EAAI,CAAC+5E,EAAY,EAE7Cz9E,MAAMa,KAAK,CAAC,OAAQ,UAAW,WAAY,SAAU3D,EAAGuD,GACtD+1E,EAAUrqE,KAAK,gBAAkB1L,EAAO,6BAA+BK,EAAQ,IAAI,EAAEqnC,YAAYnnC,EAAE08E,EAAM,CAAC,MAAO,YAAa,eAAexgF,IAAI+Q,KAAK,EAAE,CAAC,EAAE/C,KAAK,CAC9JswE,aAAcmB,EACdlB,iBAAkB36E,EAClB46E,aAAc8B,CAChB,CAAC,CAAC,CACJ,CAAC,EACDl9E,EAAKq2E,gBAAgBH,EAAUrqE,KAAK,sBAAwBrL,EAAQ,IAAI,EAAG08E,CAAO,EACpF,EAGA9+E,EAAUq6E,WAAa,SAAUr1E,EAAItD,GACnC,IAGIyE,EAEA2xE,EAEA8C,EAIAqE,EAOA3K,EAlBA1yE,EAAOqkE,EAAajhE,CAAE,EACtBpD,IAGAo1E,GADA7wE,EAAUvE,EAAKi0E,WAAW,GACJ/1E,KACtBg4E,EAAY3xE,EAAQqF,KAAKkI,KAAK,EAE9BknE,EAAW,GACfsE,EAAUt9E,EAAKu4E,mBAAwC,WAArB74E,MAAMvC,KAAK2C,CAAI,EAAiBA,EAAOA,EAAKw0E,GAAiB,CAAA,EAAO,QAAQ,EAC1GiJ,EAAQv9E,EAAKu4E,mBAAmB+E,EAAQ9I,EAAiB,EAC7Dx0E,EAAKw9E,kBAAkBD,CAAK,EACxBF,EAAer9E,EAAK43E,WAAW,CAAC0F,GAAUA,EAAQlI,EAAY5nB,WAAWzF,KAAMu1B,EAAQ9I,EAAiB,EAC5G90E,MAAMa,KAAK88E,EAAc,SAAU1U,EAAIC,GACrCoQ,EAASz3E,KAAK,sBAAwBqnE,EAAM0L,GAAkB,IAAI,CACpE,CAAC,EAED4B,EAAUrqE,KAAKmtE,EAASrrE,KAAK,GAAG,CAAC,EAAE/H,OAAO,EAEtC8sE,EAAY1yE,EAAKg2E,SAAS,EAE9Bt2E,MAAMa,KAAKP,EAAK43E,WAAWlF,CAAS,EAAG,SAAUnH,EAAI/G,GAC/CA,EAAM+P,IAA2B/P,EAAM+P,KAA4B/P,EAAM8P,IAC3E4B,EAAUrqE,KAAK,sBAAwB24D,EAAM+P,GAA0B,IAAI,EAAE3pE,KAAK,CAChFswE,aAAc1W,EAAM8P,GACpB6G,iBAAkB3W,EAAM8P,EAC1B,CAAC,CAGL,CAAC,EAED50E,MAAMa,KAAKpC,EAAMe,MAAMkE,GAAK,SAAUq6E,EAAIC,GACxCxH,EAAUrqE,KAAK,sCAAwC6xE,EAAMpJ,GAAkB,IAAI,EAAE1pE,KAAK,aAAc6yE,CAAE,CAC5G,CAAC,EACDl5E,EAAQ+wE,cAAgBgG,EAAat7E,CAAI,EAGzC5B,EAAU8hD,OAAO98C,CAAE,EACrB,EAYAhF,EAAUu/E,SAAW,SAAUv6E,EAAI4I,GACjC,IAAIhM,EAAOqkE,EAAajhE,CAAE,EAC1B,GAAIpD,EAAJ,CAEA,IAAIuE,EAAUvE,EAAKi0E,WAAW,EAC1BmB,EAAc7wE,EAAQrG,KACtBq7E,EAAgBh1E,EAAQqF,KAAKkI,KAAK,EAClCiyD,EAAY5lE,EAAMxC,OAAOooE,UAIzB+T,GAFJ9rE,EAAOA,GAAQ,IAEQ8rE,YACnBt3E,EAAQwL,EAAKxL,MACbo9E,EAAW5xE,EAAKlH,KAChBqrB,EAAQnkB,EAAKmkB,MAGbrgB,GAAagoE,EADyB,WAA5Bp4E,MAAMvC,KAAK26E,CAAW,EAAiBA,EAAYv6E,SAAS,EAAIu6E,GAC/C93E,EAAKu4E,mBAAmBT,CAAW,EAAI,KACtEt3E,EAA8B,WAAtBd,MAAMvC,KAAKqD,CAAK,EAAiBA,EAAQ,CAAC,EAGlDo9E,EAAWl9E,EAAEiE,OAAO,CAAA,EAAM,GAAKjF,MAAMgD,QAAQk7E,CAAQ,EAAIA,EAAW,CAACA,EAAU,EAG/El+E,MAAMa,KAAKq9E,EAAU,SAAShhF,EAAGuD,GAC1B4jE,KAAa5jE,GAAS2P,CAAAA,IACzB3P,EAAK4jE,GAAaj0D,EAAWi0D,GAEjC,CAAC,EAEe/jE,EAAKi5E,aAAa,EAClC,GAAKnpE,EAuEE,CACL,IAAIopE,EAAc9D,EAAY5nB,WAAW+oB,SACrCsH,EAAWzI,EAAY5nB,WAAW3+C,SAEtCiB,EAAWopE,GAAe,CAAA,EAH1B,IASE4E,GAJGA,EADehuE,EAAW+tE,KAI7BE,EAAYD,EAAcr9E,OAAiB,CAAC,IAAXD,EAAes9E,EAAcnhF,OAAS6D,CAAK,EAC5DsP,EAAW+tE,GAAYC,EAAcp7D,OAAOk7D,EAAUG,CAAS,GAH/DjuE,EAAW+tE,GAAYD,EAWrCI,GALJh+E,EAAK+1E,aAAa+H,EAAe,SAAUjzB,IACrCA,EAAEquB,IAAgB9D,EAAYpkE,KAAK+lE,2BACrClsB,EAAE8pB,GAAoB,CAAA,EAE1B,CAAC,EACuB30E,EAAK43E,WAAWkG,CAAa,GACrDvE,EAAc1tE,KAAKmyE,EAAkB35D,IAAI,SAAU1e,GACjD,MAAO,sBAAwBA,EAAM2uE,GAAkB,IACzD,CAAC,EAAE3mE,KAAK,GAAG,CAAC,EAAE/H,OAAO,EAET5F,EAAKg2E,SAAS,EAE1BlmE,EAAW6kE,GAAoB,CAAA,EAC/B7kE,EAAW8kE,GAAoB,QAC/B8D,EAAW,CAAC/F,OAAQ4G,EAAc1tE,KAAK,sBAAwBisE,EAAc,IAAI,CAAC,EAAG,CAAA,CAAI,CAC3F,KAnGiB,CAIf,IAFAiG,EAAY5/E,EAAMe,MAAMkE,GAAI3C,OAAiB,CAAC,IAAXD,EAAerC,EAAMe,MAAMkE,GAAIzG,OAAS6D,CAAK,EAchF,GAbArC,EAAMe,MAAMkE,GAAMjF,EAAMe,MAAMkE,GAAIsf,OAAOk7D,EAAUG,CAAS,EACvDx5E,EAAQxE,MAENwE,EAAQyN,MAGPisE,EAAc15E,EAAQyN,KAC1BzN,EAAQO,KAAKrE,OAAOgB,MAAM8C,EAAQO,KAAM,CAACm5E,EAAYvsE,OAASusE,EAAYzsE,KAAO,GAAIysE,EAAYvsE,OAAOgR,OAAOvkB,EAAMe,MAAMkE,EAAG,CAAC,GAH/HmB,EAAQO,KAAO3G,EAAMe,MAAMkE,IAOnBpD,EAAKg2E,SAAS,EAEtBuD,EAAc1tE,KAAK,aAAa,EAAElP,OAEpC,OADAwB,EAAMiuE,WAAWhpE,CAAE,EACZw6E,EAGT,IAOItyD,EAPA4yD,EAAe//E,EAAMquE,UAAUppE,EAAIw6E,CAAQ,EAC3CO,EAAkB,CACpBzR,IAAKhsE,EAAEw9E,EAAaxR,IAAI/+D,KAAK,EAAE,CAAC,EAChCg/D,UAAWjsE,EAAEw9E,EAAavR,UAAUh/D,KAAK,EAAE,CAAC,EAC5Ci/D,YAAalsE,EAAEw9E,EAAatR,YAAYj/D,KAAK,EAAE,CAAC,CAClD,EAaIywE,GAVJ1+E,MAAMa,KAAKq9E,EAAU,SAAUS,EAAcC,GAC3ChzD,EAAQ,CACN4vD,aAAcoD,EAAYhK,GAC1B6G,iBAAkBmD,EAAYhK,GAC9B8G,aAAc,GAChB,EACA+C,EAAgBzR,IAAIpoD,GAAG+5D,CAAY,EAAEzzE,KAAK0gB,CAAK,EAC/C6yD,EAAgBxR,UAAUroD,GAAG+5D,CAAY,EAAEzzE,KAAK0gB,CAAK,EACrD6yD,EAAgBvR,YAAYtoD,GAAG+5D,CAAY,EAAEzzE,KAAK0gB,CAAK,CACzD,CAAC,EACiB3nB,SAASi6E,EAAS,GAAGtJ,EAAe,EAAI,GACtDiK,EAAoBhF,EAAc1tE,KAAKgQ,CAAS,EAChD2iE,EAAoBjF,EAAc1tE,KAAKuoE,CAAS,EAChDqK,EAAoBlF,EAAc1tE,KAAKm5D,CAAS,EAChC,CAAC,GAAjBoZ,GAEFG,EAAkB1yE,KAAK,oCAAoC,EAAE87B,OAAOw2C,EAAgBzR,GAAG,EACvF8R,EAAkB3yE,KAAK,oCAAoC,EAAE87B,OAAOw2C,EAAgBxR,SAAS,EAC7F8R,EAAkB5yE,KAAK,oCAAoC,EAAE87B,OAAOw2C,EAAgBvR,WAAW,GAEjF,CAAC,IAAXpsE,GAEF+9E,EAAkB1yE,KAAK,OAAO,EAAEC,OAAOqyE,EAAgBzR,GAAG,EAC1D8R,EAAkB3yE,KAAK,OAAO,EAAEC,OAAOqyE,EAAgBxR,SAAS,EAChE8R,EAAkB5yE,KAAK,OAAO,EAAEC,OAAOqyE,EAAgBvR,WAAW,IAE9D8R,EAAcX,EAAU,GAAGxJ,GAC/BgK,EAAkB1yE,KAAK,kCAAoC6yE,EAAc,IAAI,EAAE/2C,OAAOw2C,EAAgBzR,GAAG,EACzG8R,EAAkB3yE,KAAK,kCAAoC6yE,EAAc,IAAI,EAAE/2C,OAAOw2C,EAAgBxR,SAAS,EAC/G8R,EAAkB5yE,KAAK,kCAAoC6yE,EAAc,IAAI,EAAE/2C,OAAOw2C,EAAgBvR,WAAW,GAMrHltE,MAAMa,KAAKpC,EAAMe,MAAMkE,GAAK,SAAUq6E,EAAIC,GACxCnE,EAAc1tE,KAAK,sCAAwC6xE,EAAMpJ,GAAkB,IAAI,EAAE1pE,KAAK,aAAc6yE,CAAE,CAChH,CAAC,EAEDz9E,EAAKq2E,gBAAgBkD,EAAc1tE,KAAK+xE,EAASv5D,IAAI,SAAU1e,EAAOnF,EAAOy5E,GAC3E,MAAO,sBAAwBt0E,EAAM2uE,GAAkB,IACzD,CAAC,EAAE3mE,KAAK,GAAG,CAAC,CAAC,CACf,CAoCA,OAPA3N,EAAKw9E,kBAAkB1tE,CAAU,EACjC1R,EAAU8hD,OAAO98C,CAAE,EACf+sB,GAEFopD,EAAc1tE,KAAKgQ,CAAS,EAAEhQ,KAAK,sBAAwB+xE,EAAS,GAAGtJ,GAAkB,IAAI,EAAEvwD,IAAI,CAAC,EAAE46D,uBAAuB,EAGxHf,CAxIS,CAyIlB,EAGAx/E,EAAU+vE,YAAc,SAAU/qE,EAAIw7E,GACpC,IAII7a,EAIA8a,EAIAzQ,EAZApuE,EAAOqkE,EAAajhE,CAAE,EAC1B,GAAKpD,EAmBL,OAjBIo1E,EADUp1E,EAAKi0E,WAAW,EACJ/1E,KACtB6lE,EAAY5lE,EAAMxC,OAAOooE,UAIzB8a,EADYzgF,EAAUi1E,QAAQjwE,EAAI,CAAA,CAAI,EACduF,OAAO,SAAUhD,EAAOnF,EAAOy5E,GACzD,OAAOt0E,EAAMo+D,IAAe6a,GAAoBj5E,EAAM8uE,EACxD,CAAC,EAEGrG,EAAQ,CAAA,EACZ1uE,MAAMa,KAAkC,QAA7B60E,EAAYtwE,KAAKwxE,QAAoBn4E,EAAMe,MAAMkE,GAAMhF,EAAUi1E,QAAQjwE,EAAI,CAAA,CAAI,EAAG,SAAUqlE,EAAIC,GAC3G,GAAI,CAACA,EAAM3E,GAET,MAAO,EADPqK,EAAQ,CAAA,EAGZ,CAAC,EAEM,CACLtpE,KAAM+5E,EACNzQ,MAAOA,CACT,CACF,EAGAhwE,EAAUkC,GAAG,OAAQ,SAAU4E,GAC7B,IAAIX,EAAUW,EAAIvJ,OACdu6E,EAAY3xE,EAAQqF,KAAKkI,KAAK,EAC9B2lE,EAAUlzE,EAAQnB,GAElB8yE,EAAU/mE,SAASklE,CAAU,GAC/Bj2E,EAAUqJ,KAAKgwE,CAAO,CAE1B,CAAC,EAGDr5E,EAAUkC,GAAG,MAAO,SAAU4E,GACdA,EAAIvJ,OACMiO,KAAKkI,KAAK,EAEpB3C,SAASklE,CAAU,GAC/BwI,EAAgB33E,CAAG,CAEvB,CAAC,EAGD9G,EAAUkC,GAAG,YAAa,SAAU4E,GAClC,IAAIX,EAAUW,EAAIvJ,OACdu6E,EAAY3xE,EAAQqF,KAAKkI,KAAK,EACpBvN,EAAQnB,GAElB8yE,EAAU/mE,SAASklE,CAAU,IAC/BwI,EAAgB33E,CAAG,GAEDX,EAAQrG,MAAQ,IAClB8S,KAAKgmE,iBACnB0B,EAAW,CAAC/F,OAAQztE,EAAIqW,GAAGrJ,MAAM,CAAC,EAAG,KAAM,KAAM,KAAM,CAAA,CAAI,CAGjE,CAAC,EAGD9T,EAAUkC,GAAG,iBAAkB,SAAU4E,GACvC,IAAIX,EAAUW,EAAIvJ,OACdu6E,EAAY3xE,EAAQqF,KAAKkI,KAAK,EACpBvN,EAAQnB,GAElB8yE,EAAU/mE,SAASklE,CAAU,GAC/BwI,EAAgB33E,CAAG,CAEvB,CAAC,EAGD9G,EAAUkC,GAAG,OAAQ,SAAU4E,GAC7B,IAAIX,EAAUW,EAAIvJ,OACdu6E,EAAY3xE,EAAQqF,KAAKkI,KAAK,EACpBvN,EAAQnB,GAElB8yE,EAAU/mE,SAASklE,CAAU,GAC/BwI,EAAgB33E,CAAG,CAEvB,CAAC,EAGD9G,EAAUkC,GAAG,OAAQ,SAAU4E,GAE7B,IAAIX,EAAUW,EAAIvJ,OACdu6E,EAAY3xE,EAAQqF,KAAKkI,KAAK,EACpBvN,EAAQnB,GAElB8yE,EAAU/mE,SAASklE,CAAU,IAC/BwI,EAAgB33E,CAAG,EACfA,EAAI41D,QAAUv2D,EAAQrG,KAAKsvD,WAAW5qD,SACpCk8E,EAAa,IACN55E,EAAI41D,OAAS51D,EAAIS,MAC5BT,EAAI8rE,OAAO8N,CAAU,EAG3B,CAAC,EAGD1gF,EAAUkC,GAAG,QAAS,SAAU4E,GAC9B,IAAIX,EAAUW,EAAIvJ,OACdu6E,EAAY3xE,EAAQqF,KAAKkI,KAAK,EAC9B2lE,EAAUlzE,EAAQnB,GAElB8yE,EAAU/mE,SAASklE,CAAU,IAC3Br0E,EAAOqkE,EAAaoT,CAAO,EAC/BoF,EAAgB33E,CAAG,EACnB83E,EAAU31E,KAAKrH,EAAMkF,EAAIqW,GAAIrW,EAAIurB,OAAO,EAE5C,CAAC,EAGD9mB,EAAM1K,UAAU8/E,mBAAqB,SAASxjE,EAAIkV,GAChD,IACIlsB,EADOtI,KACQg4E,WAAW,EAG1BsF,GADQh+D,EAAGzW,KAAK,OAAO,EACPP,EAAQqF,KAAKkI,KAAK,GAEtCyJ,EAAGkV,EAAU,WAAa,eAAe00C,CAAY,EAGrD5pD,EAAGhb,KAAK,WACN,IAAIC,EAAQE,EAAEzE,IAAI,EAAE6I,KAAK,OAAO,EACjBy0E,EAAc1tE,KAAK,6CAA8CrL,EAAO,IAAI,EAClFiwB,EAAU,WAAa,eAAe00C,CAAY,CAC7D,CAAC,CACH,EAGAx7D,EAAM1K,UAAUu+E,kBAAoB,SAAUwB,EAAOvuD,GACnD,IAKI2kD,EACAqC,EACAvB,EAEAnS,EAOEkb,EAiBF7Q,EACA8Q,EAlCAl/E,EAAO/D,KACPsI,EAAUvE,EAAKi0E,WAAW,EAC9B,MAAK1vE,CAAAA,CAAAA,EAAQgxE,gBAGTH,EAAc7wE,EAAQrG,KACtBu5E,EAAUlzE,EAAQnB,GAClB8yE,EAAY3xE,EAAQqF,KAAKkI,KAAK,EAE9BiyD,EAAY5lE,EAAMxC,OAAOooE,UAGK,SAD9BuS,EAAUlB,EAAYtwE,KAAKwxE,UACwB,WAAZA,GAGpB0I,CAAAA,IACjBC,EAAOj/E,EAAKm/E,wBAAwBH,EAA+B,YAAxBt/E,MAAMvC,KAAKszB,CAAO,EAAkBA,EAAU,IAAI,EACjG/wB,MAAMa,KAAK0+E,EAAM,SAAUG,EAAQC,GACjC,IAAIC,EAAepJ,EAAUrqE,KAAK,sBAAwBwzE,EAAM/K,GAAkB,mDAAmD,EACjI7jD,EAAU4uD,EAAMtb,GAGpB/jE,EAAK++E,mBAAmBO,EAAazpD,QAAQ,IAAI,EAAGpF,CAAO,EAG3D3yB,EAAKgT,OAAOwuE,EAAa7iD,KAAK,CAC5BhM,QAASA,EACTkyC,cAAe0c,EAAM5K,EACvB,CAAC,CAAC,CACJ,CAAC,GAKCyK,EAAkB,EADlB9Q,EAAQ,CAAA,GAGZtpE,GAAOA,EADiC,QAA7BswE,EAAYtwE,KAAKwxE,QAAoBn4E,EAAMe,MAAMu4E,GAAWr5E,EAAUi1E,QAAQoE,EAAS,CAAA,CAAI,GAC1F9uE,OAAO,SAAUxI,GACzB,MAAO,CAACA,EAAKoE,EAAQ2/D,aACzB,CAAC,EACDxkE,MAAMa,KAAKuE,EAAM,SAAU2jE,EAAIC,GAO7B,IANIA,EAAM3E,IAAc2E,EAAM+L,MAC5ByK,EAAkB,CAAA,GAEfxW,EAAM3E,KACTqK,EAAQ,CAAA,GAEN8Q,GAAmB,CAAC9Q,EACtB,MAAO,CAAA,CAEX,CAAC,EACD8Q,EAAkBA,GAAmB,CAAC9Q,EACtCtwE,EAAKgT,OAAOolE,EAAUrqE,KAAK,gEAAgE,EAAE4wB,KAAK,CAChGhM,QAAW29C,EACXzL,cAAeuc,CACjB,CAAC,CAAC,EAEK9Q,EACT,EAGAzkE,EAAM1K,UAAUkgF,wBAA0B,SAAUH,EAAOvuD,GACzD,IAiCM8uD,EAhCFh7E,EADOtI,KACQg4E,WAAW,EAC1BmB,EAAc7wE,EAAQrG,KACtBu5E,EAAUlzE,EAAQnB,GAClB2gE,EAAY5lE,EAAMxC,OAAOooE,UACzBgR,EAAcK,EAAY5nB,WAAW3+C,SAErCkqE,EAAU,GAwCd,MAtCgB,EADhBiG,EAAMvK,GAAqB,CAAA,KACvBhkD,EAEGuuD,EAAMjK,GAAap4E,OAGtB+C,MAAMa,KAAKy+E,EAAMjK,GAAc,SAAUv0E,EAAOL,GAC9C,GAAI,CAACA,EAAK4jE,GAGR,OAFAtzC,EAAU,CAAA,EACVuuD,EAAMvK,GAAqB,CAAA,CAG/B,CAAC,EARDhkD,EAAU,CAAA,EAUS,CAAA,IAAZA,EAET/wB,MAAMa,KAAKy+E,EAAMjK,GAAc,SAAUv0E,EAAOL,GAC9C,GAAIA,EAAK4jE,IAAc5jE,EAAKs0E,GAE1B,OADAuK,EAAMvK,GAAqB,CAAA,CAG/B,CAAC,GAGDhkD,EAAU,CAAA,EACN8uD,EAAa,EACjB7/E,MAAMa,KAAKy+E,EAAMjK,GAAc,SAAUv0E,EAAOL,GAC1CA,EAAK4jE,IACPwb,CAAU,EAEd,CAAC,EACD9uD,EAAUuuD,EAAMjK,GAAap4E,OAASqiF,EAAMjK,GAAap4E,SAAW4iF,EAAaP,EAAMjb,GACvFib,EAAMvK,GAAqBhkD,CAAAA,GAA+B,EAAb8uD,GAE/CP,EAAMjb,GAAatzC,EACnBsoD,EAAQx3E,KAAKb,EAAEiE,OAAO,GAAIq6E,CAAK,CAAC,EAE9BjG,EADEiG,EAAMxK,GACEuE,EAAQr2D,OA7CTzmB,KA6CqBkjF,wBAAwBhhF,EAAMe,MAAMu4E,GAASuH,EAAMxK,IAAoB/jD,CAAO,CAAC,EAExGsoD,CACT,EAEgB,SAAUpG,EAAQliD,EAAS6oD,GACzC,IAAIt5E,EAAO/D,KACPsI,EAAUvE,EAAKi0E,WAAW,EAC1BmB,EAAc7wE,EAAQrG,KACtBu5E,EAAUlzE,EAAQnB,GAClB8yE,EAAY3xE,EAAQqF,KAAKkI,KAAK,EAC9B0tE,GAAa7M,EAAOh2E,OAASg2E,EAASuD,GAAWrqE,KAAK,+CAA+C,EAAEgD,SAAS,OAAO,EAAEnS,KAAK,EAE9H+iF,EAAqC,UAA3BD,EAAU50E,KAAK,MAAM,EAEnC,GAAI0uE,EAAc,CACZoG,EAAe,WACjB,IAAIr/E,EAAK,SAAUtE,GACjB2D,MAAM0I,MAAMrM,CAAK,CACnB,EACAyjF,EAAUvzD,OAAO,EAAE3rB,GAAG,QAASD,CAAE,EACjCm/E,EAAU1tE,KAAK,EAAEyK,MAAM,EACvBijE,EAAUvzD,OAAO,EAAEljB,IAAI,QAAS1I,CAAE,CACpC,EAEIo/E,EAEEhvD,GAAW,CAAC+uD,EAAU/iD,KAAK,SAAS,GACtCijD,EAAa,EAGa,YAAxBhgF,MAAMvC,KAAKszB,CAAO,GAChB+uD,EAAU/iD,KAAK,SAAS,IAAMhM,GAMlCivD,EAAa,CAGnB,KAAO,CACL,IA+CMC,EA/CFlG,EAASz5E,EAAKu4E,mBAAmB5F,EAAO/nE,KAAK,YAAY,CAAC,EAC1Dm5D,EAAY5lE,EAAMxC,OAAOooE,UAE7B,GAAI0b,CAAAA,EAoDF,OA1BAhvD,EAAkC,YAAxB/wB,MAAMvC,KAAKszB,CAAO,EAAkBA,EAAU,CAACgpD,EAAO1V,GAU5D2I,EAAM1sE,EAAK+1E,aAAa0D,EAAS,CAACA,GAAUt7E,EAAMe,MAAMu4E,GAPtC,SAAU5sB,GACzBA,EAAE1sD,EAAMxC,OAAOuoE,gBAClBrZ,EAAEkZ,GAAatzC,EACfo6B,EAAE4pB,GAAqB,CAAA,EAE3B,EAEuFgF,GAAmE,CAAC,IAA1D,CAAC,SAAU,QAAQl3E,QAAQ6yE,EAAYtwE,KAAKwxE,OAAO,CAAQ,EACxJgJ,EAAepJ,EAAUrqE,KAAK6gE,EAAIroD,IAAI,SAAU1e,GAClD,MAAO,sBAAwBA,EAAM2uE,GAAkB,kDACzD,CAAC,EAAE3mE,KAAK,GAAG,CAAC,EAEZ3N,EAAK++E,mBAAmBO,EAAazpD,QAAQ,IAAI,EAAGpF,CAAO,EAC3D3yB,EAAKgT,OAAOwuE,EAAa7iD,KAAK,CAAChM,QAASA,EAASkyC,cAAe,CAAA,CAAK,CAAC,CAAC,EAKnE8W,GAAUA,EAAOjF,KAEnBmL,EAAU3/E,EAAKu4E,mBAAmBkB,EAAOjF,EAAiB,GAGrDx0E,EAAKw9E,kBAAkBmC,EAASlvD,CAAO,EAnDzCgpD,IAOLz5E,EAAK+1E,aAAa,KAAM,SAAUlrB,GAChC,IACM+0B,EADF/0B,EAAEkZ,KACA6b,EAAY1J,EAAUrqE,KAAK,sBAAwBg/C,EAAEypB,GAAkB,kDAAkD,EAC7HzpB,EAAEkZ,GAAa,CAAA,EAGf/jE,EAAK++E,mBAAmBa,EAAU/pD,QAAQ,IAAI,EAAG,CAAA,CAAK,EACtD/3B,EAAKgT,OAAO8uE,EAAUnjD,KAAK,UAAW,CAAA,CAAK,CAAC,EAEhD,CAAC,EACDg9C,EAAO1V,GAAatzC,EAEpBzwB,EAAK++E,mBAAmBpM,EAAQliD,CAAO,EACvCzwB,EAAK++E,mBAAmBpM,EAAO99C,SAAS,EAAG,CAAA,CAAK,EAEhD/2B,EAAKgT,OAAO6hE,EAAO9mE,KAAK,+CAA+C,EAAE4wB,KAAK,UAAWhM,CAAO,CAAC,EA+BrG,CACF,GAGAryB,EAAUkC,GAAG,WAAY,SAAU4E,GACjC,IAAIX,EAAUW,EAAIvJ,OACdu6E,EAAY3xE,EAAQqF,KAAKkI,KAAK,EAC9B2lE,EAAUlzE,EAAQnB,GAElB8yE,EAAU/mE,SAASklE,CAAU,IAC3Br0E,EAAOqkE,EAAaoT,CAAO,EAC3BhnD,EAAUvrB,EAAIurB,QAClBosD,EAAgB33E,CAAG,EACnBA,EAAIkpE,MAAQ4O,EAAU31E,KAAKrH,EAAMkF,EAAIqW,GAAIkV,CAAO,EAEpD,CAAC,EAUDryB,EAAUkwE,cAAgB,SAAUlrE,EAAI4I,GACtC,IAIIkqE,EAKAzlD,EAGAunD,EAQA6H,EAWAlN,EAEEmF,EACAgI,EAlCF9/E,EAAOqkE,EAAajhE,CAAE,EACtBpD,IAGAk2E,EADUl2E,EAAKi0E,WAAW,EACNrqE,KAAKkI,KAAK,EAI9BhS,GAFJkM,EAAOA,GAAQ,IAECxL,MACZiwB,EAAUzkB,EAAKykB,QACf6oD,EAAettE,EAAKstE,aAEpBtB,EAAiC,WAArBt4E,MAAMvC,KAAK2C,CAAI,EAAiBA,EAAOA,EAAKw0E,GAExDyL,EAAW//E,EAAKu4E,mBAAmBP,CAAS,KAM5C6H,EAA6B,SAASr/E,GACxCs/E,EAAgBv+E,KAAKf,CAAK,EACb01E,EAAUrqE,KAAK,sBAAwBrL,EAAQ,IAAI,EACpD7D,SAENm7E,EADW93E,EAAKu4E,mBAAmB/3E,CAAK,EACjBg0E,KACZqL,EAA2B/H,CAAW,CAEzD,GAGInF,EAASuD,EAAUrqE,KAAK,sBAAwBmsE,EAAY,IAAI,GACxDr7E,SACNm7E,EAAciI,EAASvL,GACvBsL,EAAkB,GACtBD,EAA2B/H,CAAW,EAEtCp4E,MAAMa,KAAKu/E,EAAgB33E,QAAQ,EAAE,SAAS3H,EAAO+uB,GACnDnxB,EAAUs6E,WAAWt1E,EAAI,CACvB5C,MAAO+uB,EACP6pD,WAAY,CAAA,CACd,CAAC,CACH,CAAC,EACDzG,EAASuD,EAAUrqE,KAAK,sBAAwBmsE,EAAY,IAAI,GAElEgF,EAAU31E,KAAKrH,EAAM2yE,EAAQliD,EAAS6oD,CAAY,EACpD,EAEAl7E,EAAU4hF,cAAgB,SAAU58E,EAAIqtB,GACtC,IAIIylD,EAJAl2E,EAAOqkE,EAAajhE,CAAE,EACtBpD,IAGAk2E,EADUl2E,EAAKi0E,WAAW,EACNrqE,KAAKkI,KAAK,EAElCkrE,EAAU31E,KAAKrH,EAAMk2E,EAAUrqE,KAAK,uBAAuB,EAAG,CAAC,CAAC4kB,CAAO,EACzE,EAQAryB,EAAUi1E,QAAU,SAAUjwE,EAAIwyE,GAChC,IAGIlD,EAHA1yE,EAAOqkE,EAAajhE,CAAE,EAC1B,GAAKpD,EAOL,OALI0yE,EAAY,GAChBhzE,MAAMa,KAAKG,EAAEiE,OAAO,CAAA,EAAM,GAAIxG,EAAMe,MAAMkE,IAAO,EAAE,EAAG,SAAU5C,EAAOL,GAErEuyE,EAAUnxE,KAAKpB,CAAI,CACrB,CAAC,EACMy1E,EAAe51E,EAAK43E,WAAWlF,CAAS,EAAIA,CACrD,EAOAt0E,EAAU6hF,gBAAkB,SAAU78E,EAAI40E,GACxC,IAMI5C,EAIA4J,EAVAh/E,EAAOqkE,EAAajhE,CAAE,EACrBpD,IAKDo1E,EADUp1E,EAAKi0E,WAAW,EACJ/1E,MACT8D,UAAUozE,EAAYpzE,SAAM6zE,SAGzCmJ,EAAQh/E,EAAKu4E,mBAAmBP,CAAS,KAI7CgH,EAAMrK,GAAoB,CAAA,EAC1BqK,EAAMtK,GAAc,CAAA,EACpBsK,EAAMpK,GAAoB,CAAA,EAC1Bl1E,MAAMa,KAAKP,EAAK43E,WAAWoH,EAAM5J,EAAY5nB,WAAW3+C,SAAS,EAAE1G,QAAQ,EAAG,SAAUsgE,EAAIC,GAC1FtqE,EAAUq6E,WAAWr1E,EAAIslE,EAAM4L,EAAe,CAChD,CAAC,EAEDl2E,EAAUs6E,WAAWt1E,EAAI,CACvB5C,MAAOw3E,EACPoB,WAAY,CAAA,EACZE,aAAc,CAAA,CAChB,CAAC,EACH,EAKAl7E,EAAUw6E,YAAc,SAAUx1E,EAAI88E,GAChClgF,EAAOqkE,EAAajhE,CAAE,EAC1B,GAAKpD,EAEL,OAAOA,EAAK44E,YAAYsH,CAAM,CAChC,EAWA9hF,EAAU+hF,iBAAmB,SAAU/8E,EAAIuF,EAAQqD,GACjD,IAKIo0E,EAIAjgD,EACAkgD,EAVArgF,EAAOqkE,EAAajhE,CAAE,EAC1B,GAAKpD,EAiBL,OAhBIuE,EAAUvE,EAAKi0E,WAAW,EAG1BmM,GADJp0E,EAAOA,GAAQ,IACKo0E,SAEhBpB,GADAlvE,EAAa9D,EAAK8D,aACIA,EAAWhL,KAEjCq7B,EAAQngC,EAAK43E,WAAWoH,EAASA,EAAMz6E,EAAQrG,KAAKsvD,WAAW3+C,WAAa,GAAM1Q,EAAMe,MAAMkE,EAAG,EAAEuF,OAAOA,CAAM,EAChH03E,EAAc,GAClB3gF,MAAMa,KAAK4/B,EAAO,SAAUsoC,EAAIC,GAE9B,GADA2X,EAAY9+E,KAAKvB,EAAKo4E,eAAe1P,EAAM4L,EAAe,CAAC,EACvD8L,EACF,MAAO,CAAA,CAEX,CAAC,EAEMC,CACT,EAIAlM,EAAcn0E,KAAO,GAIrB5B,EAAU0V,OAAS,SAAU1Q,EAAImB,EAASkgB,EAAMtnB,GAE1C6C,EAAOqkE,EAAajhE,CAAE,EAC1B,GAAKpD,EAEL,OADAA,EAAK8T,OAAOvP,EAASkgB,EAAMtnB,CAAI,EACxBg3E,EAAc9sE,KAAKrH,CAAI,CAChC,EAGA5B,EAAU0S,OAAS,SAAUvM,GACvBqP,EAAO,IAAIjK,EAAMpF,CAAO,EAC5B,OAAO4vE,EAAc9sE,KAAKuM,CAAI,CAChC,EAEAnU,EAv2De,YAu2DGrB,CAAS,CAC7B,CAAC,EC75DDsB,MAAMP,OAAO,OAAQ,SAASM,GAC5B,aAEA,IAAIiB,EAAIhB,MAAMgB,EACV5C,EAAO4B,MAAM5B,KACbJ,EAAQgC,MAAMhC,MAGdqW,EAAW,OAGX7V,EAAO,CACTvC,OAAQ,CACN6xD,WAAY,CACVpqD,GAAI,KACJ0Y,MAAO,QACPjN,SAAU,UACZ,CACF,EACArO,MAAOd,MAAMqU,GAAarU,MAAMqU,GAAUvT,MAAQ,IAAS,EAG3DkT,IAAK,SAASnP,GACZ,IAAIvE,EAAO/D,KAEX,OADA+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EACxCvE,CACT,EAGAM,GAAI,SAASmI,EAAQ9I,GACnB,OAAOD,MAAM8I,QAAQnB,KAAKpL,KAAM8X,EAAUtL,EAAQ9I,CAAQ,CAC5D,CACF,EAGIgU,EAAa,WACf,IAAI3T,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACfyH,EAAKmB,EAAQnB,IAAMpD,EAAKQ,MAK5B,OAHAmT,EAAW3T,KAAKoD,GAAMpD,EAGf,CACLrE,OAHFgY,EAAWhY,OAAOyH,GAAMmB,EAKtBuP,OAAQ,SAASvP,GACfvE,EAAK8T,OAAOzM,KAAKrH,EAAMuE,CAAO,CAChC,EACAkqE,WAAY,WACV,OAAOzuE,EAAKyuE,WAAWpnE,KAAKrH,CAAI,CAClC,EACA24E,WAAY,SAASv1E,GACnB,OAAOpD,EAAK24E,WAAWtxE,KAAKrH,EAAMoD,CAAE,CACtC,CACF,CACF,EAWI46D,EAAO,aAEPjtD,EAAW,iBAGXuvE,EAAW,iBACXC,EAAa,uBACbC,EAAW,sBACXC,EAAW,yBACXC,EAAa,mBACb7kE,EAAY,kBACZ8kE,EAAY,iBACZC,EAAY,kBACZC,EAAc,oBACdC,EAAkB,0BAClBC,EAAY,sBACZC,EAAc,wBAGdr3E,EAAQ,SAASpF,GACnB,IAAIvE,EAAO/D,KACX+D,EAAKQ,MAAQ,EAAEtC,EAAKsC,MACpBR,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQuC,EAAKvC,OAAQ4I,CAAO,EAC5DvE,EAAK8Q,OAAO,CACd,EAGAnH,EAAM1K,UAAUtD,OAAS,CACvBmJ,KAAM,GAENm8E,aAAc,CAAA,EACdC,SAAU,CAAA,EACV1yB,UAAW,CAAA,EACX2yB,gBAAiB,CAAA,EACjB5oB,OAAQ,CAAA,EACRyU,KAAM,CAAA,EAENvhE,KAAM,CACJ21E,gBAAiB,qBACjB3f,KAAM,oBACR,CACF,EAGA93D,EAAM1K,UAAU6U,OAAS,SAASvP,GAChC,IAAIvE,EAAO/D,KAEXyD,MAAMa,KAAKgE,EAAS,SAASC,EAAKrE,GACR,UAArBT,MAAMvC,KAAKgD,CAAI,GAAe,OAAOH,EAAKrE,OAAO6I,EACtD,CAAC,EAEDxE,EAAKrE,OAAS+E,EAAEiE,OAAO,CAAA,EAAM,GAAI3E,EAAKrE,OAAQ4I,CAAO,EACrDvE,EAAK8Q,OAAO,CACd,EAGAnH,EAAM1K,UAAU6R,OAAS,WACvB,IAAI9Q,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAOf62B,GAJJjuB,EAAQipD,WAAa9sD,EAAEiE,OAAO,GAAIzG,EAAKvC,OAAO6xD,WAAYjpD,EAAQipD,UAAU,EAE5ExtD,EAAKqhF,SAAW,GAEL3gF,EAAE,2CAA4C6D,EAAQ08E,aAAe,cAAgB,KAAO18E,EAAQ28E,SAAW,mBAAqB,IAAK,0BAA2BlhF,EAAKQ,MAAO,UAAU,GAGjM6M,GAFJrN,EAAK9B,KAAKs0B,CAAI,EAEFjuB,EAAQqF,KAAOlJ,EAAE6D,EAAQqF,IAAI,GACzC,GAAIyD,EAAM,GAAV,CAUA,GAPArN,EAAKwE,IAAMD,EAAQnB,IAAMpD,EAAKQ,MAG9BR,EAAK4J,KAAO4oB,EACZxyB,EAAK6rE,SAAWnrE,EAAE,qCAAsC6D,EAAQkH,KAAKg2D,KAAM,QAAQ,EACnFp0D,EAAMwC,KAAK7P,EAAK4J,IAAI,EAE2B,GAA5C5J,EAAK4J,KAAKiC,KAAK,iBAAiB,EAAElP,OACnC,OAAOqD,EAAK4J,KAAKkC,OAAO9L,EAAK6rE,QAAQ,EAIpCtnE,EAAQ08E,cACTjhF,EAAKgsE,WAAW,UAAU,EAG5BhsE,EAAK4J,KAAKiC,KAAK,iBAAiB,EAAEtL,KAAK,WACrC,IAAI8M,EAAQ3M,EAAEzE,IAAI,EAEdoR,EAAM4e,OAAO,kBAAkB,EAAE,IACnC5e,EAAM2B,SAAS,oBAAoB,EAIlC,CAAC3B,EAAMyE,KAAK,EAAE,IAAMzE,EAAM8oB,QAAQ,kBAAkB,EAAE7R,GAAG,CAAC,EAAEnV,SAAS,uBAAuB,GAC7F9B,EAAM2B,SAAS8xE,CAAe,EAI5BzzE,EAAMyE,KAAK,EAAE,IAAOzE,EAAM8oB,QAAQ,iBAAiB,EAAE7R,GAAG,CAAC,EAAExS,KAAK,EAAE,IACpEzE,EAAM2B,SAAS8xE,CAAe,CAElC,CAAC,EAED9gF,EAAKyI,OAAO,CArCQ,CAsCtB,EAGAkB,EAAM1K,UAAU+sE,WAAa,SAAS7uE,GACpCW,EAAKgT,OAAO3T,EAAM,YAAalB,KAAKuE,KAAK,CAC3C,EAGAmJ,EAAM1K,UAAUf,KAAO,SAAS0L,EAAMiF,GACpC,IAAI7O,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACf6xD,EAAajpD,EAAQipD,WACrB1oD,EAAO+J,GAAYtK,EAAQO,KAG/BpF,MAAMa,KAAKuE,EAAM,SAAStE,EAAOL,GAC/B,IAqCMmhF,EAID55E,EAzCD65E,EAAWphF,EAAKqtD,EAAW3+C,WAAgD,EAAnC1O,EAAKqtD,EAAW3+C,UAAUlS,OAClE6kF,EAAU9gF,EAAE,iCAAkCP,EAAKyvD,OAAS,0BAA4B,IAAK,SAAS,EACtG6xB,EAAW/gF,EAAE,CAAC,iBAAkBP,EAAKqtD,EAAWpqD,IAAK,2BAA4BjD,EAAKyvD,OAAS,qBAAuB,KAAOzvD,EAAKswB,QAAU,2BAA6B,IAAK,KAC/K,iCACE,gCAGMlsB,EAAQ28E,SACNK,EACM,4EAA6EphF,EAAKyvD,OAAS,yBAA2B,uBAAwB,gBAE9I,uFAGF,sEAAuE2xB,EAAW,GAAIvjB,GAAO,gBAM/Fz5D,EAAQ08E,aAAe,iCAAkC9gF,EAAK26D,OAAU,kBAAmB36D,EAAKqtD,EAAWpqD,KAAO,+CAAgDjD,EAAKqwB,SAAW,WAAa,IAAK,WAAYrwB,EAAKqtD,EAAWpqD,IAAK,KAAO,GAKhPmB,EAAQg0D,QAAUp4D,EAAK+C,KACjB,YAAa/C,EAAK+C,KAAM,4BAA6By9E,EAAW,MAAOxgF,EAAKqtD,EAAW1xC,QAAU3b,EAAKkG,OAAS9B,EAAQkH,KAAK21E,iBAAkB,OAE9I,gBAAiBT,GAAaxgF,EAAKqwB,SAAW,IAAKzf,EAAW,IAAK,MAAO5Q,EAAKqtD,EAAW1xC,QAAU3b,EAAKkG,OAAS9B,EAAQkH,KAAK21E,iBAAkB,UAGjK,SAIK78E,EAAQyoE,MAERsU,EAAW,CACbrrD,IAAK,+DACJ+6C,OAAQ,gEACRD,IAAK,8DACR,EAAGrpE,EAAM,CAAC,qDAEU,CAAA,IAAjBnD,EAAQyoE,OACTzoE,EAAQyoE,KAAO,CAAC,SAAU,QAGD,UAAxB,OAAOzoE,EAAQyoE,MAChBttE,MAAMa,KAAKgE,EAAQyoE,KAAM,SAASpwE,EAAGsN,GACnCxC,EAAInG,KAAK+/E,EAASp3E,IAAQ,EAAE,CAC9B,CAAC,EACMxC,EAAIiG,KAAK,EAAE,EAAI,UAJxB,KAAA,GAZyB,GAmB1B,gBAAgBA,KAAK,EAAE,CAAC,EAGtB4zE,IACDE,EAAS31E,OAAO01E,CAAO,EACvBxhF,EAAK9B,KAAKsjF,EAASrhF,EAAKqtD,EAAW3+C,SAAS,GAG9CjF,EAAKkC,OAAO21E,CAAQ,EAGjBA,EAAS5vE,KAAK,IAAIyuE,CAAQ,EAAE,IAC7BmB,EAAS5vE,KAAK,EAAEhD,SAAS,kBAAkB,EAAEG,SAAS,qBAAqB,EAIzEuyE,GACFE,EAASx1D,OAAO,kBAAkB,EAAEjd,SAAS,uBAAuB,EAItEhP,EAAK4vD,OAAO6xB,EAAUthF,CAAI,EAGvBoE,EAAQ08E,eACT9gF,EAAKswB,SAAWzwB,EAAKqhF,SAAS9/E,KAAKpB,EAAKqtD,EAAWpqD,GAAG,EACtDpD,EAAK0hF,WAAWD,EAAUthF,CAAI,GAIhCoE,EAAQyoE,MAAQhtE,EAAK2hF,QAAQF,EAAUthF,CAAI,CAE7C,CAAC,CACH,EAGAwJ,EAAM1K,UAAU2wD,OAAS,SAAShmD,EAAMzJ,GACtC,IAAIH,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACfimF,EAAQh4E,EAAKiF,SAAS,IAAI6xE,CAAU,EACpClmE,EAAWonE,EAAM/yE,SAAS,IAAKgN,CAAS,EACxCgmE,EAAernE,EAAS3O,KAAK,8BAA8B,EAC3Do0D,EAAW2hB,EAAM/1E,KAAK,IAAK00E,CAAU,EACrCuB,EAAWF,EAAM/1E,KAAK,IAAK80E,CAAS,EACpCoB,EAAYx9E,EAAQ48E,gBAAkBlhB,EAAWzlD,EACjD3C,EAAQ,GAGZkqE,EAAUzhF,GAAG,QAAS,SAASM,GAC7B,IAAIohF,EAAWp4E,EAAKiF,SAAS,IAAI+xE,CAAS,EACzCqB,GAAYF,EAAUlzE,SAAS,aAAa,EAAE,GAAKkzE,EAAoCA,EAAUl2E,KAAK,kBAAkB,GAA3DgD,SAAS,aAAa,EAGhFmzE,EAAS,GAGRp4E,EAAKuF,SAAS0xE,CAAW,GAC1Bj3E,EAAKsF,YAAY2xE,CAAW,EAC5BmB,EAAShwC,QAAQ,GAAG,EACpBiwC,EAAU/yE,YAAYuxE,CAAQ,EAAEzxE,SAASwxE,CAAQ,EACjDxgF,EAAKkiF,iBAAiB/hF,EAAM,SAAU,CAAA,CAAK,IAE3CyJ,EAAKoF,SAAS6xE,CAAW,EACzBmB,EAASjwC,UAAU,GAAG,EACtBkwC,EAAUjzE,SAASyxE,CAAQ,EAAEvxE,YAAYsxE,CAAQ,EACjDxgF,EAAKkiF,iBAAiB/hF,EAAM,SAAU,CAAA,CAAI,EAGvCoE,EAAQiqD,aACL2zB,EAAQv4E,EAAKirB,SAAS,IAAIyrD,CAAQ,GAChCpxE,YAAY2xE,CAAW,EAC7BsB,EAAMtzE,SAAS,IAAI+xE,CAAS,EAAE5uC,QAAQ,GAAG,EACzCmwC,EAAMt2E,KAAK,kBAAkB,EAAEgD,SAAS,aAAa,EAAEK,YAAYuxE,CAAQ,EAAEzxE,SAASwxE,CAAQ,IAlBlG3oE,EAAQ,QAsBZ,CAAC,EAGDiqE,EAASxhF,GAAG,QAAS,WACPI,EAAEzE,IAAI,EAGTkT,SAAS4B,CAAQ,IAIxB8G,EADCjO,EAAKuF,SAAS0xE,CAAW,EAClBt8E,EAAQ48E,gBAAkB,OAAS,QAEnC58E,EAAQ48E,gBAAkB,QAAU,OAI3CU,EAAa,IACd7hF,EAAKkiF,iBAAiB/hF,EAAM,UAAW0hF,EAAaplD,KAAK,SAAS,CAAC,EAIrEl4B,EAAQgY,OAAShY,EAAQgY,MAAM,CAC7B3S,KAAMA,EACNiO,MAAOA,EACP/S,KAAM3E,CACR,CAAC,EACH,CAAC,CACH,EAGAwJ,EAAM1K,UAAUijF,iBAAmB,SAASh9E,EAAK41D,EAAOn1D,GACnDm1D,KAAS51D,IAAKA,EAAI41D,GAASn1D,EAChC,EAGAgE,EAAM1K,UAAUmjF,YAAc,SAASx4E,EAAMzJ,EAAM0hF,GACjD,IAmBIQ,EAnBAriF,EAAO/D,KAEPuxD,EADUxtD,EAAKrE,OACM6xD,WACrB/8B,EAAUoxD,EAAaplD,KAAK,SAAS,EAEtColD,EAAaplD,KAAK,UAAU,IAGS,UAArC,OAAOt8B,EAAKqtD,EAAW3+C,WAA0BjF,CAAAA,EAAKiC,KAAK,IAAI+0E,CAAS,EAAE,IACvDh3E,EAAKiC,KAAK,IAAK+0E,CAAS,EAAE/0E,KAAK,8BAA8B,EACnEtL,KAAK,SAASC,GACvBvE,KAAKu0B,YACJ3hB,EAAW1O,EAAKqtD,EAAW3+C,UAAUrO,KAC5BR,EAAKkiF,iBAAiBrzE,EAAU,UAAW4hB,CAAO,EAC/DzwB,EAAKkiF,iBAAiBjmF,KAAM,UAAWw0B,CAAO,EAChD,CAAC,GAIC4xD,EAAoB,SAASC,GAE/B,IAEIzqE,EAEA0qE,EACAC,EALAF,EAAansD,QAAQ,IAAKmqD,CAAQ,EAAE,KAIpCiC,GADAE,EAAaH,EAAar2D,OAAO,IAAK20D,CAAS,GACnB30D,OAAO,EACnCu2D,EAAkBC,EAAW5wE,KAAK,EAAEhG,KAAK,8BAA8B,EAGxE4kB,EACD+xD,EAAe/lD,KAAK,UAAWhM,CAAO,GAEtCgyD,EAAW52E,KAAK,8BAA8B,EAAEtL,KAAK,WAChDtE,KAAKw0B,UACN5Y,EAAQ,CAAA,EAEZ,CAAC,EAGDA,GAAS2qE,EAAe/lD,KAAK,UAAW,CAAA,CAAK,GAI/C4lD,EAAkBE,CAAc,EAClC,GAEkB34E,CAAI,EAEtB5J,EAAKgsE,WAAW,UAAU,EAC5B,EAGAriE,EAAM1K,UAAUyiF,WAAa,SAAS93E,EAAMzJ,GAC1C,IAAIH,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACPiO,EAAKiF,SAAS,IAAK6xE,CAAU,EACpB7xE,SAAS,IAAKgN,CAAS,EAKnCvb,GAAG,QAAS,gCAAiC,SAASM,GAC7DlB,MAAM0I,MAAMxH,CAAC,EAEb,IAAIihF,EAAenhF,EAAEzE,IAAI,EAAE4V,KAAK,EAC5B4e,EAAUoxD,EAAaplD,KAAK,SAAS,EAEtColD,EAAaplD,KAAK,UAAU,IAE/Bz8B,EAAKoiF,YAAYx4E,EAAMzJ,EAAM0hF,CAAY,EACzC7hF,EAAKkiF,iBAAiB/hF,EAAM,UAAWswB,CAAO,EAG9ClsB,EAAQm+E,SAAWn+E,EAAQm+E,QAAQ,CACjC94E,KAAMA,EACN6mB,QAASA,EACT3rB,KAAM3E,CACR,CAAC,EACH,CAAC,CACH,EAGAwJ,EAAM1K,UAAU0iF,QAAU,SAAS/3E,EAAMzJ,GACvC,IAAIH,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACf6xD,EAAajpD,EAAQipD,WACrBo0B,EAAQh4E,EAAKiF,SAAS,IAAK6xE,CAAU,EACrClmE,EAAWonE,EAAM/yE,SAAS,IAAKgN,CAAS,EAE5C+lE,EAAM/yE,SAAS,sBAAsB,EAAEvO,GAAG,QAAS,cAAe,SAASM,GACzElB,MAAM0I,MAAMxH,CAAC,EAEb,IAkGM+hF,EAlGFxlF,EAAOuD,EAAEzE,IAAI,EAAE6I,KAAK,MAAM,EAC1Bk9E,EAAWp4E,EAAKiF,SAAS,IAAI+xE,CAAS,EACtCgC,EAAY,CACd99E,KAAM3E,EACNhD,KAAMA,EACNyM,KAAKA,CACP,EAEA,GAAW,OAARzM,EAAc,CAEX6kF,EAAS,KAERz9E,EAAQ28E,UACT1mE,EAAS3O,KAAK,IAAI00E,CAAU,EAAEvxE,SAAS,iBAAiB,EACxDwL,EAAS3O,KAAK,IAAI00E,CAAU,EAAE1xE,SAAS,aAAa,EAAEG,SAASwxE,CAAQ,EAAEtxE,YAAY,iBAAiB,GAGtGsL,EAAS3O,KAAK,uBAAuB,EAAEqD,YAAY8uD,CAAI,EAGzDp0D,EAAKkC,OAAO,qCAAqC,GAInD,IAaQvB,EAbJ/F,EAAMD,EAAQo9E,SAAWp9E,EAAQo9E,QAAQiB,CAAS,EAClD19E,EAAM,GAwDV,GAtDAA,EAAIsoD,EAAW1xC,OAASvX,EAAQkH,KAAK21E,gBACrCl8E,EAAIsoD,EAAWpqD,IAAMoB,EACrBxE,EAAK9B,KAAK0L,EAAKiF,SAAS,IAAI+xE,CAAS,EAAG,CAAC17E,EAAI,EAG1CX,EAAQ28E,WAELc,EAAS,IA2BPA,EAAS7yE,SAAS6xE,CAAW,GAC/BgB,EAAShzE,SAASgyE,CAAW,EAG/Bp3E,EAAKiC,KAAK,IAAI+0E,CAAS,EAAErgF,KAAK,WAC5BG,EAAEzE,IAAI,EAAE4S,SAAS,IAAIyxE,CAAQ,EAAE5jF,KAAK,EAAEsS,SAAS8xE,CAAe,CAChE,CAAC,GAEEkB,EAASnzE,SAAS,IAAIyxE,CAAQ,EAAE5jF,KAAK,EAAEmV,KAAK,EAAE1C,SAAS2xE,CAAe,EACvEkB,EAASnzE,SAAS,IAAIyxE,CAAQ,EAAE5jF,KAAK,EAAEmV,KAAK,EAG5CmwE,EAASnzE,SAAS,IAAIyxE,CAAQ,EAAE5jF,KAAK,GAHSwS,YAAY4xE,CAAe,EAMxE,CAACl3E,EAAKqiB,OAAO,IAAI20D,CAAS,EAAE,IAAMh3E,EAAKkI,KAAK,EAAE,IAC/CkwE,EAASnzE,SAAS,IAAIyxE,CAAQ,EAAE5jF,KAAK,EAAEwS,YAAY4xE,CAAe,IAzChEjsD,EAAWjrB,EAAKirB,SAAS,IAAIyrD,CAAQ,EACrC/1E,EAAM,EACNk4E,EAAa74E,EAAKqiB,OAAO,IAAI20D,CAAS,EAE1ClhF,MAAMa,KAAKs0B,EAAU,SAASr0B,EAAO5D,GAC/B8D,EAAE9D,CAAC,EAAEiS,SAAS,IAAI+xE,CAAS,EAAE,KAC/Br2E,EAAM,EAEV,CAAC,GAGS,GAAPA,GAEDsqB,EAAShmB,SAAS,IAAI+xE,CAAS,EAAE5xE,SAAS+xE,CAAS,EACnDlsD,EAAShmB,SAAS,IAAI+xE,CAAS,EAAE/xE,SAAS,IAAIyxE,CAAQ,EAAEpxE,YAAY4xE,CAAe,EACnFl3E,EAAKiF,SAAS,IAAI+xE,CAAS,EAAE5xE,SAAS+xE,CAAS,EAE/C0B,EAAWvzE,YAAY8xE,CAAW,EAElCyB,EAAW5zE,SAAS,IAAIyxE,CAAQ,EAAE5jF,KAAK,EAAEmS,SAAS,IAAI+xE,CAAS,EAAE/xE,SAAS,IAAIyxE,CAAQ,EAAE5jF,KAAK,GAE7FkN,EAAKiF,SAAS,IAAI+xE,CAAS,EAAE/xE,SAAS,IAAIyxE,CAAQ,GAF6CtxE,SAAS8xE,CAAe,IA0B1H,CAACv8E,EAAQ08E,aAAc,OAEvBzmE,EAAS3O,KAAK,8BAA8B,EAAE,GAAG4kB,UACnC7mB,EAAKiF,SAAS,IAAI+xE,CAAS,EAAE/xE,SAAS,IAAIyxE,CAAQ,EAAE5jF,KAAK,EAC/DmP,KAAK,8BAA8B,EAAE,GAAG4kB,QAAU,CAAA,GAE7DzwB,EAAKgsE,WAAW,UAAU,CAG5B,KAAkB,UAAR7uE,GACJsO,EAAO+O,EAAS3L,SAAS,IAAK8xE,CAAS,EAAE9wE,KAAK,EAClD2K,EAAS3L,SAAS,IAAK8xE,CAAS,EAAE9wE,KAAK,EAAE,EAEzC2K,EAAS1O,OAAO,kDAAkD,EAElE0O,EAAS3L,SAAS,uBAAuB,EAAE3E,IAAIuB,CAAI,EAAE0kB,MAAM,EAEvDwyD,EAAS,SAAS3vE,GACpB,IACA6vE,EADc7vE,EAAM9I,IAAI,EAAEob,KAAK,GACD/gB,EAAQkH,KAAK21E,gBAC3CpuE,EAAMpN,OAAO,EACb4U,EAAS3L,SAAS,IAAK8xE,CAAS,EAAE9wE,KAAKgzE,CAAO,EAG9CD,EAAU99E,KAAK0oD,EAAW1xC,OAAS+mE,EAGnCt+E,EAAQo9E,SAAWp9E,EAAQo9E,QAAQiB,CAAS,CAC9C,EAEApoE,EAAS3L,SAAS,uBAAuB,EAAE81B,KAAK,WAC9Cg+C,EAAOjiF,EAAEzE,IAAI,CAAC,CAChB,CAAC,EAEDue,EAAS3L,SAAS,uBAAuB,EAAEvO,GAAG,UAAW,SAASM,GAC/C,KAAdA,EAAEsS,UACHtS,EAAE2hB,eAAe,EACjBogE,EAAOjiF,EAAEzE,IAAI,CAAC,EAElB,CAAC,GAIDyB,EAAMoZ,QAAQ,2EAAyC3W,EAAKqtD,EAAW1xC,QAAU,IAAK,wBAAe,SAAStb,GAO5G,IAUQsiF,EAsCAv4E,EA2CAw4E,EAjGRx+E,EAAQo9E,SAAWp9E,EAAQo9E,QAAQiB,CAAS,EAC5CA,EAAU/mF,OAAS,SAEnB6B,EAAMwS,MAAM1P,CAAK,EAGboJ,EAAKiI,KAAK,IAAIyuE,CAAQ,EAAE,IAAO12E,EAAKkI,KAAK,IAAIwuE,CAAQ,EAAE,IAAO12E,EAAKqiB,OAAO,IAAI20D,CAAS,EAAE,IAM1Fh3E,EAAKirB,SAAS,IAAIyrD,CAAQ,EAAEzxE,SAAS,IAAI6xE,CAAU,EAAE,IAEnDn8E,EAAQ08E,eAEL6B,EAAU,SAASl5E,GAErB,IACIo5E,EAEAC,EACAprE,EACAtN,EALAX,EAAKusB,QAAQ,IAAImqD,CAAQ,EAAE,KAC3B0C,EAAcp5E,EAAKirB,SAAS,IAAIyrD,CAAQ,EAAEzxE,SAAS,IAAI6xE,CAAU,EAEjEuC,GADAC,EAAat5E,EAAKqiB,OAAO,IAAI20D,CAAS,EAAE/uE,KAAK,GACrBhG,KAAK,8BAA8B,EAAE,GAC7DgM,EAAQ,GACRtN,EAAM,IAGP04E,EAAWxyD,WAEZuyD,EAAYziF,KAAK,SAAS3D,EAAG8rE,GACvB11D,EAAQtS,EAAEgoE,CAAK,EAAE78D,KAAK,8BAA8B,EAAE,GACtC,GAAjBmH,EAAMyd,SAAqBzd,EAAMwd,WAClC3Y,EAAQ,GAGN7E,EAAMwd,WACRjmB,EAAM,EAEV,CAAC,EAEW,GAATsN,IAAqB,GAAPtN,IAEf04E,EAAWxyD,QAAU,CAAA,EACrBzwB,EAAKgsE,WAAW,UAAU,EAE1B8W,EAAQI,EAAWj3D,OAAO,IAAIq0D,CAAQ,CAAC,EAG7C,GACQ12E,CAAI,EAGXrF,EAAQ28E,WAELrsD,EAAWjrB,EAAKirB,SAAS,IAAIyrD,CAAQ,EACrC/1E,EAAM,EACNk4E,EAAa74E,EAAKqiB,OAAO,IAAI20D,CAAS,EAE1ClhF,MAAMa,KAAKs0B,EAAU,SAASr0B,EAAO5D,GAC/B8D,EAAE9D,CAAC,EAAEiS,SAAS,IAAI+xE,CAAS,EAAE,KAC/Br2E,EAAM,EAEV,CAAC,EAES,GAAPA,GAEGy3E,EAAS,KAEXS,EAAWvzE,YAAY8xE,CAAW,EAClCnsD,EAAShmB,SAAS,IAAI+xE,CAAS,EAAE5xE,SAAS+xE,CAAS,EACnDlsD,EAAShmB,SAAS,IAAI+xE,CAAS,EAAE/xE,SAAS,IAAIyxE,CAAQ,EAAEpxE,YAAY4xE,CAAe,IAGjFl3E,EAAKkI,KAAK,EAAE,GAGd2wE,EAAW5zE,SAAS,IAAIyxE,CAAQ,EAAE5jF,KAAK,EAFvCkN,EAAKiI,KAAK,GAE+BhD,SAAS,IAAI+xE,CAAS,EAAE/xE,SAAS,IAAIyxE,CAAQ,EAAE5jF,KAAK,EAAEsS,SAAS8xE,CAAe,EAGrHl3E,EAAKkI,KAAK,EAAE,IAAOlI,EAAKusB,QAAQ,IAAImqD,CAAQ,EAAE,IAAO12E,EAAKusB,QAAQ,IAAImqD,CAAQ,EAAEh8D,GAAG,CAAC,EAAExS,KAAK,EAAE,IAC/FlI,EAAKiI,KAAK,IAAIyuE,CAAQ,EAAEtxE,SAAS8xE,CAAe,GAI/C,CAACl3E,EAAKkI,KAAK,EAAE,IAAMlI,EAAKuF,SAAS2xE,CAAe,GACjDl3E,EAAKiI,KAAK,EAAE7C,SAAS8xE,CAAe,KAOtCqC,EAAUv5E,EAAKqiB,OAAO,IAAI20D,CAAS,EAAE/uE,KAAK,EAE3CtN,EAAQ28E,UACTiC,EAAQt3E,KAAK,IAAI00E,CAAU,EAAErxE,YAAY,iBAAiB,EAC1Di0E,EAAQt3E,KAAK,IAAI00E,CAAU,EAAE1xE,SAAS,aAAa,EAAEK,YAAYuxE,CAAQ,EAAEzxE,SAAS,iBAAiB,GAEjG+zE,EAAOI,EAAQhtD,QAAQ,IAAIyqD,CAAS,EAAEt8D,GAAG,CAAC,GACzCtV,SAASgyE,CAAW,EAGzB+B,EAAKl0E,SAAS,IAAIyxE,CAAQ,EAAE//E,KAAK,WAC/BG,EAAEzE,IAAI,EAAE4S,SAAS,IAAI+xE,CAAS,EAAE/xE,SAAS,IAAIyxE,CAAQ,EAAE5jF,KAAK,EAAEsS,SAAS8xE,CAAe,CACxF,CAAC,GAGDqC,EAAQt3E,KAAK,uBAAuB,EAAEmD,SAASgvD,CAAI,EAGrDp0D,EAAKusB,QAAQ,IAAImqD,CAAQ,EAAEh8D,GAAG,CAAC,EAAEpV,YAAY2xE,CAAW,EAExDj3E,EAAKqiB,OAAO,IAAI20D,CAAS,EAAEh7E,OAAO,GAGpCgE,EAAKhE,OAAO,IA3GVgE,EAAKhE,OAAO,EACZ5F,EAAK4J,KAAKkC,OAAO9L,EAAK6rE,QAAQ,EA2GlC,CAAC,CAGL,CAAC,CACH,EAGAliE,EAAM1K,UAAUwJ,OAAS,WACvB,IAAIzI,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACHqE,EAAK4J,KAAKiC,KAAK,0BAA0B,EAGzD7L,EAAK24E,WAAW34E,EAAKqhF,QAAQ,EAG7BrhF,EAAK4J,KAAKiC,KAAK,oBAAoB,EAAEvL,GAAG,QAAS,WAC/C,IAAI0S,EAAQtS,EAAEzE,IAAI,EACdiO,EAAM8I,EAAM9I,IAAI,EAChBk5E,EAAOpwE,EAAMqjB,QAAQ,EACrB3uB,EAAM,GAGV07E,EAAKv3E,KAAK,IAAK80E,CAAS,EAAEpgF,KAAK,WAC7B,IAKM4N,EALFyzE,EAAQlhF,EAAEzE,IAAI,EAAEk6B,QAAQ,IAAIuqD,CAAU,EAER,CAAC,GAAhChgF,EAAEzE,IAAI,EAAE4T,KAAK,EAAEtN,QAAQ2H,CAAG,IAC3BxC,EAAInG,KAAKb,EAAEzE,IAAI,EAAEgwB,OAAO,CAAC,GAErB9d,EAAS,SAAS4O,GACpBA,EAAI/N,SAAS,uBAAuB,EAEjC+N,EAAIkP,OAAO,IAAI20D,CAAS,EAAE,IAC3BzyE,EAAO4O,EAAIkP,OAAO,IAAI20D,CAAS,EAAE30D,OAAO,IAAIq0D,CAAQ,CAAC,CAEzD,GACOsB,EAAM31D,OAAO,IAAIq0D,CAAQ,CAAC,EAErC,CAAC,EAGD8C,EAAKv3E,KAAK,IAAI60E,CAAU,EAAEngF,KAAK,WAC7B,IAAI0rB,EAASvrB,EAAEzE,IAAI,EAAEgwB,OAAO,IAAIq0D,CAAQ,EACpCr0D,EAAO9c,SAAS,uBAAuB,GACzC8c,EAAOjd,SAASgvD,CAAI,CAExB,CAAC,EACgD,GAA9ColB,EAAKv3E,KAAK,wBAAwB,EAAElP,QACrCqD,EAAK4J,KAAKkC,OAAO9L,EAAK6rE,QAAQ,EAIhCtnE,EAAQ8+E,UAAY9+E,EAAQ8+E,SAAS,CACnCz5E,KAAMlC,CACR,CAAC,CACH,CAAC,EAGD1H,EAAK4J,KAAKiC,KAAK,oBAAoB,EAAEvL,GAAG,UAAW,WACjDI,EAAEzE,IAAI,EAAEo6B,QAAQ,EAAExqB,KAAK,IAAI60E,CAAU,EAAEngF,KAAK,WAC7BG,EAAEzE,IAAI,EAAEgwB,OAAO,IAAIq0D,CAAQ,EACjCpxE,YAAY,yBAA0B8uD,CAAI,CACnD,CAAC,EACEt9D,EAAE,uBAAuB,EAAE,IAAIA,EAAE,uBAAuB,EAAEkF,OAAO,CACtE,CAAC,CACH,EAGA+D,EAAM1K,UAAUwvE,WAAa,WAC3B,IAAIzuE,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACf6xD,EAAajpD,EAAQipD,WACrB81B,EAAU,GACVC,EAAY,GAQZC,GALJxjF,EAAK4J,KAAKiC,KAAK,qBAAqB,EAAEtL,KAAK,WACzC+iF,EAAQ/hF,KAAKb,EAAEzE,IAAI,EAAE4V,KAAK,EAAE,GAAGlM,KAAK,CACtC,CAAC,EAGe,SAASb,EAAMk4E,GAC7Bt9E,MAAMa,KAAKuE,EAAM,SAAStE,EAAOL,GAC/BT,MAAMa,KAAK+iF,EAAS,SAASG,EAAQ7a,GACnC,GAAGzoE,EAAKqtD,EAAWpqD,KAAOwlE,EAYxB,OAXA5oE,EAAKkiF,iBAAiB/hF,EAAM,UAAW,CAAA,CAAI,EAG3C,OADIujF,EAAYhjF,EAAEiE,OAAO,GAAIxE,CAAI,GAChBqtD,EAAW3+C,UAE5BmuE,EAAUz7E,KAAKmiF,CAAS,EAErBvjF,EAAKqtD,EAAW3+C,YACjB60E,EAAUl2B,EAAW3+C,UAAY,GACjC20E,EAAUrjF,EAAKqtD,EAAW3+C,UAAW60E,EAAUl2B,EAAW3+C,SAAS,GAE9D,CAAA,CAEX,CAAC,CACH,CAAC,CACH,GAIA,OAFA20E,EAAU9iF,EAAEiE,OAAO,GAAIJ,EAAQO,IAAI,EAAGy+E,CAAS,EAExCA,CACT,EAGA55E,EAAM1K,UAAU05E,WAAa,SAASgL,GACzB1nF,KACQN,OADRM,KAIN2N,KAAKiC,KAAK,IAAIy0E,CAAQ,EAAE//E,KAAK,SAAS3D,EAAGuD,GAC5C,IAAIwc,EAASjc,EAAEzE,IAAI,EAAE6I,KAAK,IAAI,EAC1BkO,EAAQtS,EAAEP,CAAI,EAAE0O,SAAS,IAAI6xE,CAAU,EAAE70E,KAAK,8BAA8B,EAC5E+3E,EAAU5wE,EAAMlB,KAAK,EAGzB,GAAwB,UAArB,OAAO6xE,GACR,GAAGhnE,EAAOpf,SAAS,GAAKomF,EAAUpmF,SAAS,EAIzC,OAHIyV,EAAM,GAAGyd,SACXmzD,EAAQrnE,MAAM,EAET,CAAA,CACT,KAG2B,UAArB,OAAOonE,GACbjkF,MAAMa,KAAKojF,EAAW,SAASnjF,EAAOmF,GACpC,GAAGA,EAAMpI,SAAS,GAAKof,EAAOpf,SAAS,GAAK,CAACyV,EAAM,GAAGyd,QAEpD,OADAmzD,EAAQrnE,MAAM,EACP,CAAA,CAEX,CAAC,CAEL,CAAC,CACH,EAGA5I,EAAW3T,KAAO,GAClB2T,EAAWhY,OAAS,GAGpBuC,EAAK4V,OAAS,SAAS1Q,EAAImB,GACrBvE,EAAO2T,EAAW3T,KAAKoD,GAG3B,OAFApD,EAAK8T,OAAOvP,CAAO,EAEZoP,EAAWtM,KAAKrH,CAAI,CAC7B,EAGA9B,EAAKuwE,WAAa,SAASrrE,GAEzB,OADWuQ,EAAW3T,KAAKoD,GACfqrE,WAAW,CACzB,EAGAvwE,EAAKy6E,WAAa,SAASv1E,EAAIugF,GAE7B,OADWhwE,EAAW3T,KAAKoD,GACfu1E,WAAWgL,CAAS,CAClC,EAGAzlF,EAAK4S,OAAS,SAASvM,GACjBqP,EAAO,IAAIjK,EAAMpF,CAAO,EAC5B,OAAOoP,EAAWtM,KAAKuM,CAAI,CAC7B,EAEAnU,EAAQsU,EAAU7V,CAAI,CACxB,CAAC,EC31BDwB,MAAMP,OAAO,CAAC,SAAU,QAAS,SAASM,GACxC,aAEA,IAAIiB,EAAIhB,MAAMgB,EACV7C,EAAS6B,MAAM7B,OACfC,EAAO4B,MAAM5B,KAGbiW,EAAW,WAGX9V,EAAW,CACbtC,OAAQ,GACR6E,MAAOd,MAAMqU,GAAarU,MAAMqU,GAAUvT,MAAQ,IAAS,EAG3DkT,IAAK,SAASnP,GACZ,IAAIvE,EAAO/D,KAEX,OADA+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EACxCvE,CACT,EAGAM,GAAI,SAASmI,EAAQ9I,GACnB,OAAOD,MAAM8I,QAAQnB,KAAKpL,KAAM8X,EAAUtL,EAAQ9I,CAAQ,CAC5D,CACF,EAGIgU,EAAa,WACf,IAAI3T,EAAO/D,KACPsI,EAAUvE,EAAKrE,OACfyH,EAAKmB,EAAQnB,IAAMpD,EAAKQ,MAK5B,OAHAmT,EAAW3T,KAAKoD,GAAMpD,EAGf,CACLrE,OAHFgY,EAAWhY,OAAOyH,GAAMmB,EAKtBuP,OAAQ,SAASvP,GACfvE,EAAK8T,OAAOzM,KAAKrH,EAAMuE,CAAO,CAChC,EAEA8uE,QAAS,WACP,OAAOrzE,EAAKqzE,QAAQhsE,KAAKrH,CAAI,CAC/B,CACF,CACF,EAWIg+D,EAAO,aACPjtD,EAAW,qBACX2vD,EAAO,aACPmjB,EAAW,qBACX/e,EAAc,wBACdgf,EAAc,wBAEdC,EAAY,sBAGZC,EAAU,SAAS9+E,GAErB,MAAO,CAAC,gDADRA,EAAMA,GAAO,IAC+C1E,MAAO,KAChE,sCACE,gCAAiC0E,EAAI++E,aAAc,gGAAiG/+E,EAAI1E,MAAO,cAAgB0E,EAAI1E,MAAQ,GAAI,UACjM,SACA,gCACA,sCACE,+CACA,uFACF,SACA,WACA,wCACF,UAAUmN,KAAK,EAAE,CACpB,EAGI2hD,EAAW,CAAC,oGACb00B,EAAQ,CACPxjF,MAAO,EACNyjF,aAAc,yBACjB,CAAC,EACA,sCACE,4GACE,6CACF,YACA,4GACE,6CACF,YACF,SACAD,EAAQ,CACPxjF,MAAO,EACNyjF,aAAc,0BACjB,CAAC,EACF,UAAUt2E,KAAK,EAAE,EAGdhE,EAAQ,SAASpF,GACnB,IAAIvE,EAAO/D,KACX+D,EAAKQ,MAAQ,EAAEvC,EAASuC,MACxBR,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQsC,EAAStC,OAAQ4I,CAAO,EAChEvE,EAAK8Q,OAAO,CACd,EAGAnH,EAAM1K,UAAUtD,OAAS,CACvBmgB,MAAO,CAAC,qBAAO,sBACfpM,MAAO,IACPC,OAAQ,IACR7K,KAAM,GACNa,MAAO,GACPu+E,WAAY,CAAA,EACZ9gF,GAAI,GACJqI,KAAM,CACJg2D,KAAM,qBACN0iB,WAAY,gCACd,CACF,EAGAx6E,EAAM1K,UAAU6U,OAAS,SAASvP,GAChC,IAAIvE,EAAO/D,KACX+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EAC/CvE,EAAK8Q,OAAO,CACd,EAGAnH,EAAM1K,UAAU6R,OAAS,WACvB,IAAI9Q,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAGfqxD,EAAWhtD,EAAK4J,KAAOlJ,EAAE7C,EAAOyxD,EAAU,CAC5Cr/C,KAAM,KACNC,MAAO,IACT,CAAC,EAAEY,OAAO,CACRhM,KAAMP,EACL/D,MAAOR,EAAKQ,KACf,CAAC,CAAC,EAEE6M,EAAQ9I,EAAQqF,KAAOlJ,EAAE6D,EAAQqF,IAAI,EACrCyD,EAAM,KAGV9I,EAAQO,KAAOP,EAAQO,MAAQ,GAC/BP,EAAQoB,MAAQpB,EAAQoB,OAAS,GAGjCpB,EAAQnB,GAAK,OAAQmB,EAAUA,EAAQnB,GACrCwG,KAAKgB,KAAK,IAAI,GAAK5K,EAAKQ,MAE1BR,EAAKwE,IAAMD,EAAQnB,GAGnBiK,EAAMwC,KAAK7P,EAAK4J,IAAI,EAGpB5J,EAAKsnE,OAAStnE,EAAK4J,KAAKiC,KAAK,IAAKg4E,CAAQ,EAC1C7jF,EAAKunE,UAAYvnE,EAAK4J,KAAKiC,KAAK,IAAKi5D,CAAW,EAChD9kE,EAAKghE,UAAYhhE,EAAK4J,KAAKiC,KAAK,IAAKi4E,CAAW,EAChD9jF,EAAKokF,QAAUp3B,EAASnhD,KAAK,IAAKk4E,CAAS,EAC3C/jF,EAAKqkF,OAASr3B,EAASnhD,KAAK,mCAAgC,EAG5D7L,EAAKsnE,OAAOj4D,IAAI,CACdK,MAAOnL,EAAQmL,MACdC,OAAQpL,EAAQoL,MACnB,CAAC,EACD3P,EAAKokF,QAAQ/0E,IAAI,CACfM,QACMA,EAASpL,EAAQoL,OAAS3P,EAAKunE,UAAU3jB,YAAY,EACtDr/C,EAAQ2/E,aACTv0E,GAAU3P,EAAKghE,UAAUpd,YAAY,GAEhCj0C,EAAS,EAEpB,CAAC,EAED3P,EAAKosE,WAAW,EAChBpsE,EAAKyI,OAAO,EACd,EAGAkB,EAAM1K,UAAUmtE,WAAa,WAC3B,IAAIpsE,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAGf+L,EAAM,CAAC,CACTq8D,UAAW,uBACXhyD,MAAO,EACT,EAAG,CACDgyD,UAAW,wBACXhyD,MAAO,EACT,GAGA/R,EAAKssE,UAAU,SAASnsE,GAEtB,IAAIiF,EAASjF,EAAKuwB,SAAW,EAAI,EAC7B4zD,EAAW,CAAC,OACd,gCAAiC58E,EAAItC,GAAQ2+D,UAAW,gEAAiE5jE,EAAK2b,MAAO,KAAM3b,EAAKqwB,SAAW,YAAc,KAAOrwB,EAAKswB,QAAU,WAAa,IAAK,WAAYtwB,EAAKwF,MAAO,KAC3O,SAASgI,KAAK,EAAE,EAEbvI,EACD1F,MAAMa,KAAKgE,EAAQoB,MAAO,SAAS/I,EAAGV,GACjCA,GAAKiE,EAAKwF,OAASxF,EAAKuwB,WACzBhpB,EAAItC,GAAQ2M,MAAMnV,GAAK0nF,EAE3B,CAAC,EAED58E,EAAItC,GAAQ2M,MAAMxQ,KAAK+iF,CAAQ,EAEjC,OAAOnkF,EAAKuwB,QACd,CAAC,EAED1wB,EAAKokF,QAAQ9/D,GAAG,CAAC,EAAEzU,KAAKnI,EAAI,GAAGqK,MAAMpE,KAAK,EAAE,CAAC,EAC7C3N,EAAKokF,QAAQ9/D,GAAG,CAAC,EAAEzU,KAAKnI,EAAI,GAAGqK,MAAMpE,KAAK,EAAE,CAAC,EAE7C3N,EAAKukF,eAAe,CACtB,EAGA56E,EAAM1K,UAAU+sE,WAAa,SAAS7uE,GACpCW,EAAKgT,OAAO3T,EAAM,gBAAiBlB,KAAKuE,KAAK,CAC/C,EAGAmJ,EAAM1K,UAAUslF,eAAiB,SAASr/E,GACxC,IAAIlF,EAAO/D,KACVsI,EAAUvE,EAAKrE,OAEhBuJ,EAAMA,GAAO,GAEblF,EAAKsnE,OAAO/mE,KAAK,SAAS6E,GACxB,IAAIiI,EAAQ3M,EAAEzE,IAAI,EACjBuoF,EAAen3E,EAAMxB,KAAK,IAAKk4E,CAAS,EACxCU,EAAkBp3E,EAAMxB,KAAK,IAAKi5D,CAAW,EAAEj5D,KAAK,wBAAwB,EAC5E64E,EAAoBF,EAAa34E,KAAK,wBAAwB,EAG3DsnE,EAAO,EACVwR,EAAc,CAAA,EACfD,EAAiBnkF,KAAK,WACpB,IAAIqkF,EAASlkF,EAAEzE,IAAI,EAAE6I,KAAK,MAAM,GAC7B7I,KAAKw0B,SAAWx0B,KAAKu0B,UAAYo0D,IAClCzR,CAAI,GAEHl3E,KAAKw0B,SAAW,CAACm0D,IAClBD,EAAc,CAAA,EAElB,CAAC,EAEDF,EAAgBhoD,KAAK,UAAWkoD,GAAexR,IAASuR,EAAiB/nF,MAAM,EAC/EqD,EAAKqkF,OAAO//D,GAAGlf,CAAM,EAAEu/E,EAAc,cAAgB,YAAY5zE,CAAQ,EAGrE7L,EAAI2/E,WACFxrB,EAASmrB,EAAa31E,SAAS,WAAYmvD,EAAM,GAAG,EAAErhE,OAC1DqD,EAAK8kF,SAASN,EAAcnrB,EAAS,GAAK90D,EAAQkH,KAAKg2D,IAAI,EAE/D,CAAC,EAEDzhE,EAAKgsE,WAAW,UAAU,CAC5B,EAGAriE,EAAM1K,UAAU6lF,SAAW,SAASN,EAAc/4E,GAChD,IAAIs5E,EAAiBrkF,EAAE,0BAA2B+K,GAAQ,IAAK,MAAM,EAClE+4E,EAAa34E,KAAK,IAAK60D,CAAI,EAAE,IAC9B8jB,EAAa34E,KAAK,IAAK60D,CAAI,EAAE96D,OAAO,EAEtC6F,EAAK3J,QAAQ,MAAO,EAAE,GAAK0iF,EAAa14E,OAAOi5E,CAAc,CAC/D,EAGAp7E,EAAM1K,UAAUib,SAAW,WACzB,IACC3V,EADUtI,KACKN,OACf+L,EAAM,GAOP,OATWzL,KAGNqrE,OAAOhjD,GAAG,CAAC,EAAEzY,KAAK,IAAKk4E,EAAW,yBAAyB,EAAExjF,KAAK,WACxDG,EAAEzE,IAAI,EAAE6I,KAAK,MAAM,GACtB4C,EAAInG,KAAKtF,KAAK0J,KAAK,CAC/B,CAAC,EACDpB,EAAQoB,MAAQ+B,EAPLzL,IAUb,EAGA0N,EAAM1K,UAAUqtE,UAAY,SAAS3sE,GACnC,IACC4E,EADUtI,KACKN,OACf4wE,EAAU,GAmBX,OAjBA7sE,MAAMa,KAAKgE,EAAQO,KAAM,SAAStE,EAAOL,GAEvCA,GAAqC,YAA7B,OAAOoE,EAAQ+nE,UACnB/nE,EAAQ+nE,UAAUnsE,CAAI,EACxBA,IAASA,EAEXosE,EAAQhrE,KAAKpB,EAAOO,EAAEiE,OAAO,GAAIxE,CAAI,CAAC,EAEtCT,MAAMa,KAAKgE,EAAQoB,MAAO,SAAS89E,EAAQ7a,GACtCA,GAASzoE,EAAKwF,QACfxF,EAAKuwB,SAAW,CAAA,EAEpB,CAAC,EACD/wB,GAAYA,EAASQ,CAAI,CAC3B,CAAC,EAEDoE,EAAQO,KAAOynE,EApBJtwE,IAsBb,EAGA0N,EAAM1K,UAAUo0E,QAAU,SAAS1tE,GACjC,IACCpB,EADUtI,KACKN,OACfqpF,EAAe,GAYhB,OAdW/oF,KAINie,SAAS,EAEdxa,MAAMa,KAAKoF,GAASpB,EAAQoB,MAAO,SAASnF,EAAOL,GACjDT,MAAMa,KAAKgE,EAAQO,KAAM,SAAS2+E,EAAQ7a,GACxC,OAAOA,EAAMl4C,SACVvwB,GAAQyoE,EAAMjjE,OACfq/E,EAAazjF,KAAKqnE,CAAK,CAE3B,CAAC,CACH,CAAC,EACMoc,CACT,EAGAr7E,EAAM1K,UAAUhB,SAAW,SAAUmH,EAAQwE,GAC3C,IA+BKq7E,EA/BDjlF,EAAO/D,KACRsI,EAAUvE,EAAKrE,OACfupF,EAAcllF,EAAKsnE,OAAOhjD,GAAGlf,CAAM,EACnCsC,EAAM,GA2CLy9E,GAzCCv7E,IA0BAq7E,GADCG,EAAWx7E,GACgBiC,KAAK,wBAAwB,GAE3C,GAAG4kB,QAAU,CAAA,EAC9By0D,EAAYrwD,SAAS,IAAKgvD,CAAQ,EAAEh4E,KAAK,IAAKk4E,CAAS,EAAEj4E,OAAOs5E,EAAS1gF,MAAM,CAAC,EAChF0gF,EAASx/E,OAAO,EAGhB8B,EAAInG,KAAK0jF,EAAiB,GAAGt/E,KAAK,EAElC3F,EAAKka,SAAS,GAjCdgrE,EAAY3kF,KAAK,SAAS6E,GACZ1E,EAAEzE,IAAI,EACM4P,KAAK,IAAKk4E,CAAS,EAE9Bl1E,SAAS,IAAI,EAAEtO,KAAK,WAC/B,IAAI6kF,EAAW1kF,EAAEzE,IAAI,EAClBgpF,EAAmBG,EAASv5E,KAAK,wBAAwB,EACzD+4E,EAASK,EAAiBngF,KAAK,MAAM,EAErCmgF,EAAiB,GAAGx0D,SAAW,CAACm0D,IACjCK,EAAiB,GAAGx0D,QAAU,CAAA,EAC9By0D,EAAYrwD,SAAS,IAAKgvD,CAAQ,EAAEh4E,KAAK,IAAKk4E,CAAS,EAAEj4E,OAAOs5E,EAAS1gF,MAAM,CAAC,EAChF0gF,EAASx/E,OAAO,EAGhB8B,EAAInG,KAAK0jF,EAAiB,GAAGt/E,KAAK,GAGpC3F,EAAKka,SAAS,CAChB,CAAC,CACH,CAAC,EAgBHla,EAAKukF,eAAe,EAGDW,EAAYrwD,SAAS,IAAKgvD,CAAQ,EAAEh4E,KAAK,IAAKi4E,EAAa,QAAQ,GAC/D,KAAvBqB,EAAaj7E,IAAI,GAAai7E,EAAa3vE,QAAQ,OAAO,EAG1DjR,EAAQ8gF,UAAY9gF,EAAQ8gF,SAASrlF,EAAKqzE,QAAQ3rE,CAAG,EAAGtC,CAAM,CAChE,EAGAuE,EAAM1K,UAAUwJ,OAAS,WACvB,IAAIzI,EAAO/D,KACVsI,EAAUvE,EAAKrE,OAGhBqE,EAAK4J,KAAKtJ,GAAG,QAAS,2CAA4C,WAChE,IAAI2kF,EAAmBvkF,EAAEzE,IAAI,EAAE4V,KAAK,EACnC4e,EAAUw0D,EAAiB,GAAGx0D,QAC9B+zD,EAAeS,EAAiB9uD,QAAQ,IAAK0tD,CAAQ,EAAEv/D,GAAG,CAAC,EAAEzY,KAAK,IAAKk4E,CAAS,EAE9EkB,EAAiB,GAAGz0D,WAGkB,QAAtCy0D,EAAiBr6E,KAAK,UAAU,GACjC45E,EAAa34E,KAAK,wBAAwB,EAAEtL,KAAK,WAC5CtE,KAAKu0B,WACRv0B,KAAKw0B,QAAUA,EACjB,CAAC,EAGHnvB,WAAW,WACTtB,EAAKukF,eAAe,CAACM,SAAU,CAAA,CAAI,CAAC,CACtC,EAAG,CAAC,EACN,CAAC,EAGD7kF,EAAK4J,KAAKtJ,GAAG,WAAY,IAAMyjF,EAAY,MAAO,SAAShoF,GACzD,IAAIupF,EAAW5kF,EAAEzE,IAAI,EAClBgpF,EAAmBK,EAASz2E,SAAS,wBAAwB,EAE7Dq2E,EADeI,EAASr5D,OAAO,EACJA,OAAO,EAElCg5D,EAAiB,GAAGz0D,UAEvBxwB,EAAK/B,SAASinF,EAAYpgF,KAAK,OAAO,EAAGwgF,CAAQ,CACnD,CAAC,EAGDtlF,EAAKqkF,OAAO/jF,GAAG,QAAS,WACtB,IAAI+M,EAAQ3M,EAAEzE,IAAI,EACjBmJ,EAASiI,EAAMvI,KAAK,OAAO,EACzBuI,EAAM8B,SAAS4B,CAAQ,GAE1B/Q,EAAK/B,SAASmH,CAAM,CACtB,CAAC,EAGDpF,EAAKghE,UAAUn1D,KAAK,OAAO,EAAEvL,GAAG,QAAS,WACvC,IAAIqF,EAAQ1J,KAAK0J,MACb6+E,EAAe9jF,EAAEzE,IAAI,EAAEk6B,QAAQ,IAAK2tD,CAAW,EAAEx/D,GAAG,CAAC,EAAEuQ,SAAS,IAAKkvD,CAAS,EAC9EwB,EAAef,EAAa31E,SAAS,IAAI,EAsBzCwqD,GApBJksB,EAAahlF,KAAK,WAChB,IAAI6kF,EAAW1kF,EAAEzE,IAAI,EACjBgpF,EAAmBG,EAASv5E,KAAK,wBAAwB,EACzDiQ,EAAQmpE,EAAiB,GAAGnpE,MAQ5B0pE,GALsB,OAAvBjhF,EAAQ2/E,aACTpoE,EAAQA,EAAM3V,YAAY,EAC1BR,EAAQA,EAAMQ,YAAY,GAGW,CAAC,IAA1B2V,EAAMvZ,QAAQoD,CAAK,GAEjCy/E,EAASI,EAAU,cAAe,YAAYxnB,CAAI,EAClDinB,EAAiBngF,KAAK,OAAQ0gF,CAAAA,CAAsB,CACtD,CAAC,EAEDxlF,EAAKukF,eAAe,EAGPgB,EAAa5oF,SAAW6nF,EAAa31E,SAAS,MAAOmvD,CAAI,EAAErhE,QACxEqD,EAAK8kF,SAASN,EAAcnrB,EAAS90D,EAAQkH,KAAK04E,WAAa,EAAE,CACnE,CAAC,CACH,EAGAxwE,EAAW3T,KAAO,GAClB2T,EAAWhY,OAAS,GAGpBsC,EAAS6V,OAAS,SAAS1Q,EAAImB,GACzBvE,EAAO2T,EAAW3T,KAAKoD,GAG3B,OAFApD,EAAK8T,OAAOvP,CAAO,EAEZoP,EAAWtM,KAAKrH,CAAI,CAC7B,EAGA/B,EAASo1E,QAAU,SAASjwE,GAE1B,OADWuQ,EAAW3T,KAAKoD,GACfiwE,QAAQ,CACtB,EAGAp1E,EAAS6S,OAAS,SAASvM,GACrBqP,EAAO,IAAIjK,EAAMpF,CAAO,EAC5B,OAAOoP,EAAWtM,KAAKuM,CAAI,CAC7B,EAEAnU,EAAQsU,EAAU9V,CAAQ,CAC5B,CAAC,ECpfDyB,MAAMP,OAAO,CAAC,SAAU,OAAQ,SAASM,GACvC,aAEA,IAAIiB,EAAIhB,MAAMgB,EACVjD,EAAMiC,MAAMjC,IAMZgB,GAJOiB,MAAMsH,KAAK,EACTtH,MAAMsG,OAAO,EAGX,CACbrK,OAAQ,GAGR+X,IAAK,SAASnP,GACZ,IAAIvE,EAAO/D,KAEX,OADA+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EACxCvE,CACT,EAGAM,GAAI,SAASmI,EAAQ9I,GACnB,OAAOD,MAAM8I,QAAQnB,KAAKpL,KAAM8X,EAAUtL,EAAQ9I,CAAQ,CAC5D,CACF,GAGIoU,EAAW,WAEXC,EAAO,aAMPyxE,EAAY,sBACZC,EAAa,uBACbpxE,EAAY,sBACZC,EAAY,sBACZoxE,EAAa,uBACbC,EAAW,qBAGXj8E,EAAQ,SAASpF,GACnB,IAAIvE,EAAO/D,KACX+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ8C,EAAS9C,OAAQ4I,CAAO,EAChEvE,EAAK8Q,OAAO,CACd,EAGAnH,EAAM1K,UAAUtD,OAAS,CACvB+T,MAAO,QACPC,OAAQ,QACRk2C,KAAM,CAAA,EACNggC,MAAO,QACPC,UAAW,SACXC,SAAU,CAAA,EACV1zC,SAAU,IACV5B,KAAM,GACNj7B,QAAS,QACThV,MAAO,CACT,EAGAmJ,EAAM1K,UAAU6R,OAAS,WACvB,IAAI9Q,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAGfiO,EAAOlJ,EAAE6D,EAAQqF,IAAI,EACzB,GAAiB,EAAdA,EAAKjN,OAMN,OALA+C,MAAMa,KAAKqJ,EAAM,WACfnL,EAASqS,OAAOpQ,EAAEiE,OAAO,GAAIJ,EAAS,CACpCqF,KAAM3N,IACR,CAAC,CAAC,CACJ,CAAC,EACM+D,EAITU,EAAEiE,OAAOJ,EAAS9G,EAAI8G,QAAQqF,EAAK,EAAE,CAAC,EAEtCrF,EAAQqF,KAAOlJ,EAAE6D,EAAQqF,IAAI,EACzBrF,EAAQqF,KAAK,KACjB5J,EAAKgmF,SAAWzhF,EAAQqF,KAAKiC,KAlDf,qBAkD6B,EAExCtH,EAAQ/D,MAAQ,IAAG+D,EAAQ/D,MAAQ,GACnC+D,EAAQ/D,OAASR,EAAKgmF,SAASrpF,SAAQ4H,EAAQ/D,MAAQR,EAAKgmF,SAASrpF,OAAS,GAC9E4H,EAAQ8tC,SAAW,MAAK9tC,EAAQ8tC,SAAW,KAG3C9tC,EAAQshD,KACTthD,EAAQqF,KAAKyF,IAAI,CACftD,SAAU,QACV2D,MAAO,OACPC,OAAQ,OACRsG,OAAQ,IACV,CAAC,EAED1R,EAAQqF,KAAKyF,IAAI,CACfK,MAAOnL,EAAQmL,MACfC,OAAQpL,EAAQoL,MAClB,CAAC,EAGHpL,EAAQqF,KAAKgB,KAAK,WAAYrG,EAAQksC,IAAI,EAG1CzwC,EAAKgmF,SAAS1hE,GAAG/f,EAAQ/D,KAAK,EAAEwO,SAASgF,CAAI,EAG1ChU,EAAKgmF,SAASrpF,QAAU,IAE3BqD,EAAK8lF,UAAU,EACf9lF,EAAK6lF,MAAM,EACX7lF,EAAK+lF,SAAS,EACd/lF,EAAKyI,OAAO,GACd,EAGAkB,EAAM1K,UAAU6U,OAAS,SAASvP,GAChC,IAAIvE,EAAO/D,KACXs2C,cAAcvyC,EAAKwwC,KAAK,EACxBxwC,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EAC/CvE,EAAK8Q,OAAO,CACd,EAGAnH,EAAM1K,UAAUgnF,UAAY,WAC1B,IAEIA,EAFOhqF,KACQN,OACK6E,MAAQ,EAMhC,OAHEylF,EADCA,EAAY,EAJJhqF,KAKQ+pF,SAASrpF,OAAS,EAG9BspF,CACT,EAGAt8E,EAAM1K,UAAUinF,UAAY,WAC1B,IAEIA,EAFOjqF,KACQN,OACK6E,MAAQ,EAMhC,OAHE0lF,EADCA,GAJQjqF,KAIU+pF,SAASrpF,OAChB,EAGPupF,CACT,EAGAv8E,EAAM1K,UAAUknF,SAAW,SAAS57E,GAClC,IACIhG,EADOtI,KACQN,OAGnB4I,EAAQ/D,MAAQ+D,EAAQ/D,OADxB+J,EAAMA,GAAO,GAIVhG,EAAQ/D,OAPAvE,KAOc+pF,SAASrpF,SAChC4H,EAAQ/D,MAAQ,EAEpB,EAGAmJ,EAAM1K,UAAUmnF,SAAW,SAAS77E,GAClC,IACIhG,EADOtI,KACQN,OAGnB4I,EAAQ/D,MAAQ+D,EAAQ/D,OADxB+J,EAAMA,GAAO,GAIVhG,EAAQ/D,MAAQ,IACjB+D,EAAQ/D,MARCvE,KAQY+pF,SAASrpF,OAAS,EAE3C,EAGAgN,EAAM1K,UAAU8mF,SAAW,WACzB,IAAI/lF,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAEf4I,EAAQwhF,WACZxzC,cAAcvyC,EAAKwwC,KAAK,EAExBxwC,EAAKwwC,MAAQ8B,YAAY,WACvBtyC,EAAKoxD,MAAM,CACb,EAAG7sD,EAAQ8tC,QAAQ,EACrB,EAGA1oC,EAAM1K,UAAU4mF,MAAQ,WACtB,IAAI7lF,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAGf0qF,EAAW3lF,EAAE,CACf,6BAA8BilF,EAAY,qBAAuC,WAAjBphF,EAAQksC,KAAoB,WAAa,YAAa,YACtH,6BAA8Bk1C,EAAY,qBAAuC,WAAjBphF,EAAQksC,KAAoB,WAAa,YAAa,aACtH9iC,KAAK,EAAE,CAAC,EAGVpJ,EAAQqF,KAAKgB,KAAK,YAAarG,EAAQshF,KAAK,EAGzCthF,EAAQqF,KAAKiC,KAAK,IAAI85E,CAAU,EAAE,IACnCphF,EAAQqF,KAAKiC,KAAK,IAAI85E,CAAU,EAAE//E,OAAO,EAE3CrB,EAAQqF,KAAKkC,OAAOu6E,CAAQ,EAG5BA,EAAS/lF,GAAG,QAAS,WACnB,IACInD,EADQuD,EAAEzE,IAAI,EACD2O,KAAK,UAAU,EAChC5K,EAAKoxD,MAAMj0D,CAAI,CACjB,CAAC,CACH,EAGAwM,EAAM1K,UAAUqnF,QAAO,SAAS9lF,GAC9B,IAAIR,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAEhB6E,EAAQ+D,EAAQ/D,MACjBR,EAAKoxD,MAAM,MAAO5wD,EAAQ+D,EAAQ/D,KAAK,EAC/BA,EAAQ+D,EAAQ/D,OACxBR,EAAKoxD,MAAM,MAAO7sD,EAAQ/D,MAAQA,CAAK,CAE3C,EAGAmJ,EAAM1K,UAAU6mF,UAAY,WAC1B,IAMQ7lE,EANJjgB,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAGf4qF,EAASvmF,EAAKwmF,QAAU9lF,EAAE,CAAC,eAAgBklF,EAAU,UAEjD3lE,EAAK,GACTvgB,MAAMa,KAAKP,EAAKgmF,SAAU,SAASxlF,GACjCyf,EAAG1e,KAAK,OAAQgD,EAAQ/D,QAAUA,EAAQ,sBAAwB,IAAK,QAAQ,CACjF,CAAC,EACMyf,EAAGtS,KAAK,EAAE,GAErB,eAAeA,KAAK,EAAE,CAAC,EAGvBpJ,EAAQqF,KAAKgB,KAAK,gBAAiBrG,EAAQuhF,SAAS,EAGjDvhF,EAAQqF,KAAKiC,KAAK,IAAI+5E,CAAQ,EAAE,IACjCrhF,EAAQqF,KAAKiC,KAAK,IAAI+5E,CAAQ,EAAEhgF,OAAO,EAEzCrB,EAAQqF,KAAKkC,OAAOy6E,CAAM,EAEN,WAAjBhiF,EAAQksC,MACT81C,EAAOl3E,IAAI,aAAgBk3E,CAAAA,EAAO52E,OAAO,EAAE,CAAE,EAI/C42E,EAAO16E,KAAK,IAAI,EAAEvL,GAAuB,UAApBiE,EAAQiR,QAAsB,YAAcjR,EAAQiR,QAAS,WAChFxV,EAAKsmF,QAAK5lF,EAAEzE,IAAI,EAAEuE,MAAM,CAAC,CAC3B,CAAC,CACH,EAGAmJ,EAAM1K,UAAUmyD,MAAQ,SAASj0D,EAAMoN,GACrC,IAAIvK,EAAO/D,KACP+pF,EAAWhmF,EAAKgmF,SAChBzhF,EAAUvE,EAAKrE,OACf8qF,EAAYliF,EAAQ/D,MACpBmI,EAASpE,EAAQqF,KAAKgB,KAAK,YAAY,EAExC5K,EAAK0mF,YAGI,QAATvpF,GACD6C,EAAKomF,SAAS77E,CAAG,EACjBy7E,EAAS1hE,GAAG/f,EAAQ/D,KAAK,EAAEwO,SAASsF,CAAS,EAC7ChT,WAAW,WACT0kF,EAAS1hE,GAAGmiE,CAAS,EAAEz3E,SAAS02E,CAAU,EAC1CM,EAAS1hE,GAAG/f,EAAQ/D,KAAK,EAAEwO,SAAS02E,CAAU,CAChD,EAAG,EAAE,IAEL1lF,EAAKmmF,SAAS57E,CAAG,EACjBy7E,EAAS1hE,GAAG/f,EAAQ/D,KAAK,EAAEwO,SAASuF,CAAS,EAC7CjT,WAAW,WACT0kF,EAAS1hE,GAAGmiE,CAAS,EAAEz3E,SAASy2E,CAAS,EACzCO,EAAS1hE,GAAG/f,EAAQ/D,KAAK,EAAEwO,SAASy2E,CAAS,CAC/C,EAAG,EAAE,GAIPnkF,WAAW,WACT0kF,EAAS92E,YAAY8E,EAAO,IAAMM,EAAY,IAAMC,EAAY,IAAMkxE,EAAY,IAAMC,CAAU,EAClGM,EAAS1hE,GAAG/f,EAAQ/D,KAAK,EAAEwO,SAASgF,CAAI,EACxChU,EAAK0mF,UAAY,CAAA,CACnB,EAAG,GAAG,EAGN1mF,EAAKwmF,QAAQ36E,KAAK,IAAI,EAAEyY,GAAG/f,EAAQ/D,KAAK,EAAEwO,SAASgF,CAAI,EACtD6gB,SAAS,EAAE3lB,YAAY8E,CAAI,EAE5BhU,EAAK0mF,UAAY,CAAA,EAGbh+E,EAAS,CACXlI,MAAO+D,EAAQ/D,MACfylF,UAAWQ,EACXtmF,KAAM6lF,EAAS1hE,GAAG/f,EAAQ/D,KAAK,CACjC,EAE0B,YAA1B,OAAO+D,EAAQ2R,QAAyB3R,EAAQ2R,OAAOxN,CAAM,EAC7DhJ,MAAM3D,MAAMsL,KAAKpL,KAAM8X,EAAU,UAAWpL,EAAQ,IAAKD,CAAM,EACjE,EAGAiB,EAAM1K,UAAUwJ,OAAS,WACvB,IAAIzI,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAEhB4I,EAAQqF,KAAK9E,KAAK,YAAY,IAGjCP,EAAQqF,KAAKtJ,GAAG,aAAc,WACC,WAAzBN,EAAKrE,OAAOoqF,UAChBxzC,cAAcvyC,EAAKwwC,KAAK,CAC1B,CAAC,EAAElwC,GAAG,aAAc,WACW,WAAzBN,EAAKrE,OAAOoqF,UAChB/lF,EAAK+lF,SAAS,CAChB,CAAC,EAEDxhF,EAAQqF,KAAK9E,KAAK,aAAc,CAAA,CAAI,EACtC,EAGArG,EAASqS,OAAS,SAASvM,GACzB,OAAO,IAAIoF,EAAMpF,CAAO,CAC1B,EAEA9E,EAAQsU,EAAUtV,CAAQ,CAC5B,CAAC,EC1VDiB,MAAMP,OAAO,CAAC,SAAU,OAAO,SAASM,GACtC,aAEA,IAAIiB,EAAIhB,MAAMb,OACVpB,EAAMiC,MAAMjC,IAGZa,EAAO,CACT3C,OAAQ,GACR6E,MAAOd,MAAMpB,KAAQoB,MAAMpB,KAAKkC,MAAQ,IAAS,EAGjDkT,IAAK,SAASnP,GACZ,IAAIvE,EAAO/D,KAEX,OADA+D,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ4I,CAAO,EACxCvE,CACT,EAGAM,GAAI,SAASmI,EAAQ9I,GACnB,OAAOD,MAAM8I,QAAQnB,KAAKpL,KAAM8X,EAAUtL,EAAQ9I,CAAQ,CAC5D,CACF,EAgBIoU,EAAW,OAEX4yE,EAAY,kBACZC,EAAkB,wBAClBC,EAAiB,uBACjBC,EAAkB,6CAElBC,EAAiB,uCAGjBp9E,EAAQ,SAAUpF,GACpB,IAAIvE,EAAO/D,KACX+D,EAAKQ,MAAQ,EAAElC,EAAKkC,MACpBR,EAAKrE,OAAS+E,EAAEiE,OAAO,GAAI3E,EAAKrE,OAAQ2C,EAAK3C,OAAQ4I,CAAO,EAC5DvE,EAAK8Q,OAAO,CACd,EAGAnH,EAAM1K,UAAUtD,OAAS,CACvBgB,OAAQ,EACR8O,KAAM,CAAA,EACNu7E,SAAU,CAAA,EACVC,KAAM,CAAA,EACNthF,MAAO,EACP4M,MAAO,EACT,EAGA5I,EAAM1K,UAAU6R,OAAS,WACvB,IAAI9Q,EAAO/D,KACPsI,EAAUvE,EAAKrE,OAGfiO,EAAOlJ,EAAE6D,EAAQqF,IAAI,EACzB,GAAiB,EAAdA,EAAKjN,OAMN,OALA+C,MAAMa,KAAKqJ,EAAM,WACftL,EAAKwS,OAAOpQ,EAAEiE,OAAO,GAAIJ,EAAS,CAChCqF,KAAM3N,IACR,CAAC,CAAC,CACJ,CAAC,EACM+D,EAITU,EAAEiE,OAAOJ,EAAS9G,EAAI8G,QAAQqF,EAAK,EAAE,CAAC,EAqBtC,IAlBA,IAAI/G,EAAQ0B,EAAQgO,MAAS,iBAAkBhO,EAAQgO,MAAQ,KAAQ,GAiBnEigB,GAfJjuB,EAAQqF,KAAOlJ,EAAE6D,EAAQqF,IAAI,EAG1BrF,EAAQoB,MAAQpB,EAAQ5H,SACzB4H,EAAQoB,MAAQpB,EAAQ5H,QAIvBgH,SAASY,EAAQoB,KAAK,IAAMpB,EAAQoB,OACjCpB,EAAQ0iF,OACV1iF,EAAQoB,MAAS8E,KAAKmH,KAAKrN,EAAQoB,KAAK,EAAIpB,EAAQoB,MAAS,GAAM8E,KAAKmH,KAAKrN,EAAQoB,KAAK,EAAG8E,KAAK2H,MAAM7N,EAAQoB,KAAK,GAK9G,2BAA4BpB,EAAQyiF,SAAW,WAAa,IAAK,KACpEpqF,EAAI,EAAEA,GAAK2H,EAAQ5H,OAAOC,CAAC,GAAG,CACpC,IAAIuD,EAAO,kDACNvD,EAAE6N,KAAK2H,MAAM7N,EAAQoB,KAAK,EAAEghF,EAAUC,GACzC,KAAM/jF,EAAO,aAEZ0B,EAAQ0iF,MAAMtjF,SAASY,EAAQoB,KAAK,IAAMpB,EAAQoB,OAAO/I,GAAK6N,KAAKmH,KAAKrN,EAAQoB,KAAK,EACtF6sB,EAAOA,EAAO,kDAAmD3vB,EAAO,aAExE2vB,GAAaryB,CAEjB,CACAqyB,GAAQ,SAAWjuB,EAAQkH,KAAQ,8BAA+BlH,EAAQoB,MAAQ,SAAO,IAAM,UAG/F,IAAI0H,EAAQ9I,EAAQqF,KAChBonD,EAAY3jD,EAAMyE,KAAK,aAAe,EAG1Ck/C,EAAU,IAAMA,EAAUprD,OAAO,EAEjC5F,EAAKixD,SAAWvwD,EAAE8xB,CAAI,EAEtBjuB,EAAQob,KAAO3f,EAAKixD,SAASn/C,KAAK,MAAM,EAExCvN,EAAQ2iF,SAAW3iF,EAAQ2iF,QAAQ3iF,EAAQoB,KAAK,EAEhD0H,EAAMwC,KAAK7P,EAAKixD,QAAQ,EAExB5jD,EAAM2B,SAAS,cAAc,EAGzBzK,EAAQyiF,UAAUhnF,EAAKmnF,OAAO,CAEpC,EAGAx9E,EAAM1K,UAAUmoF,SAAW,SAASzhF,GACvB1J,KACQN,OAEXgK,MAAQA,EAHL1J,KAIN6U,OAAO,CACd,EAGAnH,EAAM1K,UAAUkoF,OAAS,WACvB,IACI5iF,EADOtI,KACQN,OACf0rF,EAFOprF,KAEIg1D,SACXq2B,EAAOD,EAAIx7E,KAAK,GAAG,EAAE6D,MAAM,EAE/B23E,EAAIx4E,SAAS,IAAI,EAAEtO,KAAK,SAASC,GAC/B,IAAI+mF,EAAM/mF,EAAQ,EACd6M,EAAQ3M,EAAEzE,IAAI,EAGlBoR,EAAM/M,GAAG,QAAS,SAASM,GAEzB2D,EAAQoB,MAAQ4hF,EACbhjF,EAAQ0iF,MAEDrmF,EAAEwjC,MAAQ1jC,EAAEzE,IAAI,EAAEqiD,OAAO,EAAElyC,MAC3Bk7E,EAAO,IACb/iF,EAAQoB,MAAQpB,EAAQoB,MAAQ,IAIjCpB,EAAQkH,MAAO47E,EAAIv1E,KAAK,MAAM,EAAErG,KAAKlH,EAAQoB,MAAQ,QAAG,EAE3DpB,EAAQgc,QAAUhc,EAAQgc,OAAOhc,EAAQoB,KAAK,EAC9CpB,EAAQ2iF,SAAW3iF,EAAQ2iF,QAAQ3iF,EAAQoB,KAAK,CAClD,CAAC,EAGD0H,EAAM/M,GAAG,YAAa,SAASM,GAC7BymF,EAAIx7E,KAAK,GAAG,EAAEtL,KAAK,WACjBG,EAAEzE,IAAI,EAAE+S,SAAS23E,CAAS,EAAEz3E,YAAY43E,CAAe,CACzD,CAAC,EACDO,EAAIx7E,KAAK,QAAU07E,EAAM,GAAG,EAAEhnF,KAAK,WACjCG,EAAEzE,IAAI,EAAE+S,SAAS43E,CAAe,EAAE13E,YAAY63E,CAAc,CAC9D,CAAC,EAEExiF,EAAQ0iF,MACDrmF,EAAEwjC,MAAQ1jC,EAAEzE,IAAI,EAAEqiD,OAAO,EAAElyC,MAC3Bk7E,EAAO,GACbj6E,EAAMwB,SAAS,GAAG,EAAEG,SAAS63E,CAAc,EAAE33E,YAAY03E,CAAe,CAG9E,CAAC,EAGDv5E,EAAM/M,GAAG,aAAc,WACrB+mF,EAAIx7E,KAAK,GAAG,EAAEtL,KAAK,WACjBG,EAAEzE,IAAI,EAAE+S,SAAS23E,CAAS,EAAEz3E,YAAY43E,CAAe,CACzD,CAAC,EACDO,EAAIx7E,KAAK,QAAUpB,KAAK2H,MAAM7N,EAAQoB,KAAK,EAAI,GAAG,EAAEpF,KAAK,WACvDG,EAAEzE,IAAI,EAAE+S,SAAS43E,CAAe,EAAE13E,YAAY63E,CAAc,CAC9D,CAAC,EAEExiF,EAAQ0iF,MACNtjF,SAASY,EAAQoB,KAAK,IAAMpB,EAAQoB,OACrC0hF,EAAIx4E,SAAS,SAAWpE,KAAK2H,MAAM7N,EAAQoB,KAAK,EAAI,GAAG,EAAEkJ,SAAS,GAAG,EAAEG,SAAS63E,CAAc,EAAE33E,YAhKpF,uCAgK+G,CAGjI,CAAC,CAEH,CAAC,CACH,EAGAvF,EAAM1K,UAAUwJ,OAAS,aAMzBnK,EAAKwS,OAAS,SAASvM,GACjBqP,EAAO,IAAIjK,EAAMpF,CAAO,EAC5B,OApMa,WACb,IAAIvE,EAAO/D,KAGX,MAAO,CACLmrF,SAAU,SAAUzhF,GAClB3F,EAAKonF,SAAS//E,KAAKrH,EAAM2F,CAAK,CAChC,EACAhK,OANYqE,EAAKrE,MAOnB,CACF,EA0LkB0L,KAAKuM,CAAI,CAC3B,EAEAnU,EAAQsU,EAAUzV,CAAI,CACxB,CAAC,EChODoB,MAAMP,OAAO,SAAU,SAASM,GAC9B,aAEA,IAAIiB,EAAIhB,MAAMgB,EAAG8mF,EAAO,SAASjjF,KAKjCijF,EAAKvoF,UAAUkU,KAAO,SAAS5O,GAC7B,IAA2BozB,EAAM8vD,EAAQC,EAASl3C,EAI9Ckc,EACAi7B,EACAC,EACAv1E,EAGAw1E,EAGAlH,EACHmH,EAOGh2E,EAWAzD,EAhCArO,EAAO/D,KAAM+V,EAAO,EAGpBpI,EAAOlJ,GAFX6D,EAAUA,GAAW,IAEAqF,IAAI,EAAG,GAAIA,EAAK,GA4ErC,OA3EI8iD,EAAahsD,EAAE6D,EAAQmoD,YAAchxD,QAAQ,EAC7CisF,EAAKpjF,EAAQojF,IAAM,GACnBC,EAAS,EAAA,WAAYrjF,IAAUA,EAAQqjF,OACvCv1E,EAAM9N,EAAQ8N,KAAO,iCAGrBw1E,EAActjF,EAAQmoD,YAAcnoD,EAAQmoD,aAAehxD,SAI9DosF,EAAOpnF,EAAE,wDADNigF,EAAY,yCAC6D,YAAY,EAErF/2E,EAAKiC,KAAK,kBAAkB,EAAE,IAChCjC,EAAKkC,OAAOg8E,CAAI,EAIdh2E,EAAO,SAASjC,EAAMk4E,GACxBl4E,EAAOnP,EAAEmP,CAAI,EACbi4E,EAAKngD,OAAO93B,CAAI,GAChBk4E,EAAe,GAARA,GAAmB,MACnBD,EAAKj4E,KAAKwC,CAAG,EAAIy1E,EAAKj8E,KAAK,GAAG,EAAEgE,KAAK8wE,CAAS,EACrD8G,EAASM,EACTpwD,EAAO,KACP+vD,GAAWA,EAAQ,CACrB,GAGIr5E,EAAO,WACTspB,EAAO,CAAA,EACPmwD,EAAKj8E,KAAK,GAAG,EAAEgE,KAtCN,kFAsCoB,EACL,YAAxB,OAAOtL,EAAQ8J,MAAuB9J,EAAQ8J,KAAK,EAAE2D,EAAMF,CAAI,CACjE,GAEK,EAGLg2E,EAAKj8E,KAAK,GAAG,EAAEvL,GAAG,QAAS,WACbI,EAAEzE,IAAI,EACfwrF,GACH9vD,GAAQtpB,EAAK,CACf,CAAC,EAGE9J,EAAQyjF,YACTN,EAAU1nF,EAAK0nF,QAAQ,CACrB99E,KAAMrF,EAAQqF,KAAO,OACpB8iD,WAAYnoD,EAAQmoD,UACvB,CAAC,GAGCk7B,GAEJl7B,EAAWpsD,GAAG,SAAU,WACtB,IAAI+M,EAAQ3M,EAAEzE,IAAI,EAAGoQ,EAAMgB,EAAMmT,UAAU,EAExCgwB,GAAOlnC,aAAaknC,CAAK,EACzBi3C,CAAAA,GAAW79E,EAAK8F,MAAM,IAEzB8gC,EAAQlvC,WAAW,WAEjB,IAAIqO,GAASk4E,EAAcx6E,EAAiB3M,EAAE+I,MAAM,GAAnBkG,OAAO,GAGrBk4E,EACfx6E,EAAMovB,KAAK,cAAc,EAC3B/gC,SAASuP,gBAAgBF,cAGTsB,EAAMsD,GAAUg4E,IAChChwD,GAAQtpB,EAAK,EAEjB,EAAG,GAAG,EACR,CAAC,EAEMrO,CACT,EAGAwnF,EAAKvoF,UAAUyoF,QAAU,SAASnjF,GAChC,IA8DMisC,EA9DFxwC,EAAO/D,KAAMuE,EAAQ,EAGrBksD,EAAahsD,GAFjB6D,EAAUA,GAAW,IAEMmoD,YAAchxD,QAAQ,EAC7CkO,EAAOrF,EAAQqF,MAAQ,MAGvBi+E,EAActjF,EAAQmoD,YAAcnoD,EAAQmoD,aAAehxD,SAG3D+Z,EAAO,SAAStV,EAAMwP,GACxB,IAQQpT,EARJsU,EAAQ67C,EAAWlsC,UAAU,EAAGnO,EAAMxB,EAAQlB,EAC9Cs4E,EAAUJ,EACL1nF,EAAKm+C,OAAO,EAAEjyC,IAAMqgD,EAAWpO,OAAO,EAAEjyC,IAAMwE,EACjD1Q,EAAKm+C,OAAO,EAAEjyC,IAGNwE,GAAXo3E,GAAoBA,GAAW51E,GAC7BlS,EAAKyK,KAAK,SAAS,IAChBrO,EAAM4D,EAAKyK,KAAK,SAAS,EAC7BlL,MAAMwE,IAAI3H,EAAK,WACb,IAAIuV,EAAO9R,EAAK0nF,QAAQ99E,KAAK0a,GAAG9jB,CAAK,EACrCL,EAAKyK,KAAK,MAAOrO,CAAG,EAAEqT,WAAW,SAAS,EAG1CkC,EAAK,IAAMhB,EAAOgB,CAAI,EACtBtR,CAAK,EACP,EAAG,WACUR,EAAK0nF,QAAQ99E,KAAK0a,GAAG9jB,CAAK,EACrCL,EAAKyP,WAAW,SAAS,CAC3B,CAAC,EAGP,EAAGkB,EAAS,SAASzD,EAAOuS,GAG1B,IAAIjQ,GAASk4E,EAAejoE,GAAQ8sC,EAAuBhsD,EAAE+I,MAAM,GAAnBkG,OAAO,EACnDkB,EAAQ67C,EAAWlsC,UAAU,EAAGnO,EAAMxB,EAAQlB,EAIlD,GAFA3P,EAAK0nF,QAAQ99E,KAAOlJ,EAAEkJ,CAAI,EAEvByD,EACDoI,EAAKpI,EAAOsC,CAAM,OAGlB,IAAI,IAAI/S,EAAI,EAAGA,EAAIoD,EAAK0nF,QAAQ99E,KAAKjN,OAAQC,CAAC,GAAG,CAC/C,IAAIuD,EAAOH,EAAK0nF,QAAQ99E,KAAK0a,GAAG1nB,CAAC,EAAGqrF,EAAUJ,EACrC1nF,EAAKm+C,OAAO,EAAEjyC,IAAMqgD,EAAWpO,OAAO,EAAEjyC,IAAMwE,EACjD1Q,EAAKm+C,OAAO,EAAEjyC,IAMpB,GAJAoJ,EAAKtV,EAAMwP,CAAM,EACjBnP,EAAQ5D,EAGKyV,EAAV41E,EAAe,KACpB,CAEJ,EAeA,OAbAn3E,EAAO,EAIL47C,EAAWpsD,GAAG,SAAU,WACtB,IAAI+M,EAAQ3M,EAAEzE,IAAI,EACfu0C,GAAOlnC,aAAaknC,CAAK,EAC5BA,EAAQlvC,WAAW,WACjBwP,EAAO,KAAMzD,CAAK,CACpB,EAAG,EAAE,CACP,CAAC,EAGIyD,CACT,EAGArR,EAAQ,OAAQ,IAAI+nF,CAAM,CAC5B,CAAC,EC1KD9nF,MAAMP,OAAO,CAAC,MAAO,OAAQ,UAAW,QAAS,SAASM,GACxD,aAEA,IAAIiB,EAAIhB,MAAMgB,EACV/B,EAAOe,MAAMf,KACbN,EAAUqB,MAAMrB,QAChBP,EAAO4B,MAAM5B,KACbJ,EAAQgC,MAAMhC,MAIdwqF,GAHOxoF,MAAMsH,KAAK,EAGV,CACV69D,UAAW,kBACXsjB,SAAU,YACVrjB,YAAa,oBACbsjB,UAAW,kBACXzzE,aAAc,qBACd0zE,UAAW,kBACXtH,UAAW,aACXuH,UAAW,kBACXC,cAAe,yBACfC,aAAc,qBACdC,gBAAiB,qBACjBC,eAAgB,EAClB,GAGI/sF,EAAS,CACXiO,KAAM,GACN++E,MAAO,GACPC,GAAI,CAAA,EACJ/mE,OAAQ,CAAA,EACRgnE,OAAQ,CAAA,EACRrkE,KAAM,CAAA,EAEN/Y,KAAM,CACJ7M,KAAMD,EAAKyR,OAAO,KAAK,EACvB+G,QAAS,SACX,EACA2xE,SAAU,CAAA,EACVjzE,KAAM,OACNkzE,YAAa,CAAA,EACbC,WAAY,CAAA,CACd,EAGIC,EAAYvpF,MAAMd,KAAQc,MAAMd,KAAK4B,MAAQ,IAAS,EAOtD8kB,EAAO,SAAS9a,GAClB,OAJOrD,OAIQqD,CAJE,EAAE1I,QAAQ,OAAQ,EAAE,EAIjBA,QAAQ,UAAW,EAAE,CAC3C,EAGArC,EAAQ,OAAQ,SAAS8E,EAAS2kF,GAIhC,IA4BI77E,EAIoDnI,EAiBlDwC,EAmDFyhF,EAGAC,EAcA5oF,EAeAqW,EAyCEwyE,EAKAC,EAMAC,EAgIAC,EAsDFC,EAGoB/hF,EAsBpBgiF,EAGAC,EAwBAp+E,EAsBAK,EAWAg+E,EAuBE9xB,EAMF+xB,EAIEC,EApeF5lE,EAAM,CACRvoB,OAJF4I,EAAU7D,EAAEiE,OAAO,CAAA,EAAM,GAAIhJ,EAAQ4I,CAAO,EAK1CuP,OAAQ,SAAS9H,GACftM,MAAMd,KAAK3C,KAAKi5E,cAAclpE,CAAI,CAAC,CACrC,EACAkpE,cAAe,SAASlpE,GAGtB,OADA,OADAA,EAAOA,GAAQ,IACHpC,KACLlJ,EAAEiE,OAAO,CAAA,EAAMJ,EAASyH,CAAI,CACrC,EACA+9E,WAAY,SAAS/9E,GACnBtM,MAAMd,KAAK3C,KAAKi5E,cAAclpE,CAAI,EAAG,YAAY,CACnD,CACF,EAGIpC,EAAOlJ,EAAE6D,EAAQqF,IAAI,EAyfzB,OAxfiB,EAAdA,EAAKjN,OAEN+C,MAAMa,KAAKgE,EAAQylF,QAAUpgF,EAAOA,EAAKma,IAAI,EAAE5b,QAAQ,EAAG,WACxDzI,MAAMd,KAAK8B,EAAEiE,OAAO,GAAIJ,EAAS,CAC/BqF,KAAM3N,IACR,CAAC,EAAGitF,CAAI,CACV,CAAC,GAKC77E,EAAQ9I,EAAQqF,KAAOlJ,EAAE6D,EAAQqF,IAAI,GAC/B,KAGVlJ,EAAEiE,OAAO,CAAA,EAAMJ,EAAS9G,IAAI8G,QAAQ8I,EAAM,EAAE,GAAYnI,EAStD,GAPAxF,MAAMa,KADM,CAAC,QAAS,SAAU,SAAU,OAAQ,SAChC,SAAS3D,EAAGgO,GAC5B,IAAIjF,EAAQ0H,EAAMzC,KAAK,OAAQA,CAAI,EACf,UAAjB,OAAOjF,IACRT,EAAI0F,GAAQjF,EAEhB,CAAC,EACMT,EACJ,EAILX,EAAQskF,QAAUtkF,EAAQskF,QAAUtkF,EAAQ4S,UAAY,CAAC5S,EAAQ0lF,WAGjE1lF,EAAQ3F,KAAO2F,EAAQ3F,OACjB8I,EAAM,GACK2F,EAAMwB,SAAS,UAAU,EAG/BtO,KAAK,WACZmH,EAAInG,KAAK+jB,EAAKrpB,KAAK0J,KAAK,CAAC,CAC3B,CAAC,EAGiB,IAAf+B,EAAI/K,QACL+K,EAAInG,KAAK+jB,EAAKjY,EAAMwC,KAAK,CAAC,CAAC,EAGtBnI,EAAIiG,KAAK,EAAE,GAIhBu8E,EAAa,SAASr6E,GAES,YAA9B,OAAOtL,EAAQ0lF,aAChBp6E,EAAOtL,EAAQ0lF,WAAW9iF,OAAO0I,CAAI,EAAGtL,CAAO,GAIjD,IAAIolF,EAAQxiF,OAAO0I,CAAI,EAAE5K,MAAM,QAAQ,EAoBvC,MAAO,CACL0kF,MAAOA,EACP95E,KAnBFA,EAAOnP,EAAE2jB,IAAIslE,EAAO,SAASQ,EAAM5/E,GACjC,MAAO,CACL,eAAgB29E,EAAMI,UAAW,KAE7B/jF,EAAQqkF,GAAK,CACX,eAAgBV,EAAMK,cAAe,KAClC5pF,EAAK2L,MAAMC,EAAM,CAAC,EAAI,IACzB,UACAoD,KAAK,EAAE,EAAI,GAEf,wCACGw8E,GAAQ,IACX,SACF,UACAx8E,KAAK,EAAE,CACX,CAAC,CAKD,CACF,EAGIw7E,EAAU5kF,EAAQ3F,KAGlBwqF,EAAY,SAASxqF,GACvB,MAAoC,YAA7B,OAAO2F,EAAQ6lF,UACpB7lF,EAAQ6lF,UAAUxrF,EAAM2F,CAAO,EACjC3F,CACF,EAGa,eAATsqF,EACK77E,EAAMwB,SAAS,kBAAkB,EAAEgB,KACxCq6E,EAAWd,EAAUD,CAAO,CAAC,EAAEt5E,IACjC,GAIErP,EAAQd,MAAMd,KAAK4B,MAAQ,EAAEyoF,EACjC57E,EAAMzC,KAAK,iBAAkBpK,CAAK,GAG9B6pF,EAAenC,EAAMO,mBAAmBp7E,EAAMvI,KAAK,IAErDuI,EAAMzC,KAAK,QAASyC,EAAMvI,KAAKojF,EAAMO,eAAe,GAAK,EAAE,EAIxD4B,GACHh9E,EAAMvI,KAAKojF,EAAMO,gBAAiBp7E,EAAMzC,KAAK,OAAO,CAAC,EAInDiM,EAAQ,CACV2N,KAAM,CACJvV,UAAW,SACX6M,MAAO,CAAC,4BACR/f,MAAO,SAASmJ,GACd,IAAItG,EAAOD,EAAK2tD,SAAS88B,EAAU7kF,EAAQ3F,IAAI,CAAC,EAGhDnB,IAAIsQ,UAAUC,UAAU,CACtBvC,KAAM7M,EACNyP,KAAM,WACJ3Q,EAAMR,IAAI,qBAAO,CAAC4jD,KAAM,CAAC,CAAC,CAC5B,EACA7jD,MAAO,WACLS,EAAMR,IAAI,2BAAQ,CAAC4jD,KAAM,CAAC,CAAC,CAC7B,CACF,CAAC,EAEyB,YAA1B,OAAOv8C,EAAQ+lF,QAAyB/lF,EAAQ+lF,OAAO1rF,CAAI,CAC7D,CACF,CACF,EAGa,SAAUyB,IACrB,IAAIkqF,EAAcl9E,EAAM4e,OAAO,IAAMi8D,EAAMvzE,YAAY,EACnD61E,EAAaD,EAAY17E,SAAS,IAAKq5E,EAAMC,QAAQ,EACrDsC,EAAqBF,EAAY17E,SAAS,IAAMq5E,EAAMG,UAAW,UAAU,EAO/E,OAJAmC,EAAW5kF,OAAO,EAClB6kF,EAAmB7kF,OAAO,EACtB2kF,EAAY,IAAIl9E,EAAMuuC,OAAO,EAE1Bv7C,CACR,EAAE,EAGAkE,EAAQ4S,UACLuzE,EAAe,eAAgBlqF,EAC/B8Q,EAAS/M,EAAQ+M,QAAU,CAAC,OAAQ,WACpC+3E,EAAsC,WAApB9kF,EAAQ4S,QAG1Bu3C,EAAWhuD,EAAE,eAAgBwnF,EAAMvzE,aAAc,IAAI,EACrDg2E,EAAcjqF,EAAE,yCAAyC,EACzD4oF,EAAiB5oF,EAAE,+BAA+B,EAClDkqF,EAAkBlqF,EAAE,eAAgB,CACtCwnF,EAAMG,UACNH,EAAMG,UAAW,WACjB,gBACA16E,KAAK,GAAG,EAAG,IAAI,EACb47E,EAAc7oF,EAAE,sCAAsC,EAGvD6D,EAAQnB,IAAIsrD,EAAS9jD,KAAK,KAAMrG,EAAQnB,EAAE,EAC7CsrD,EAAS1/C,SAASzK,EAAQ0K,SAAS,EACnC07E,EAAY//E,KAAK,aAAc8/E,CAAY,EAG3ChrF,MAAMa,KAAK+Q,EAAQ,SAAS1U,EAAGV,GAC7B,IAAI+jB,EAAKvf,EAAE,eAAgBxE,EAAG,IAAI,EACzB,IAANU,GAASqjB,EAAGjR,SAAS,YAAY,EACpCiR,EAAGpQ,KAAKtL,EAAQkH,KAAKvP,EAAE,EACvBotF,EAAex9E,OAAOmU,CAAE,CAC1B,CAAC,EAGDvf,EAAEiE,OAAOkS,EAAO,CACdgvC,KAAQ,CACN52C,UAAW,cACX6M,MAAO,CAAC,iCAAS,4BACjB/f,MAAO,SAASmJ,GACd,IAAIq3B,EAAKr3B,EAAI0E,KACT8kD,EAAWnyB,EAAG1G,QAAQ,IAAKqyD,EAAMvzE,YAAY,EAC7Ck2E,EAAgB,cAAe5uF,KAAKgT,UACpC67E,EAAmB,4BACnBhvE,EAAQ7f,KAAK6f,MACbivE,EAAWrqF,EAAE,WAAW,EACxBsqF,EAAsB,uBAEvBzuD,EAAGptB,SAAS07E,CAAa,GAC1Bn8B,EAAS1/C,SAASk5E,EAAME,SAAS,EACjC7rD,EAAGrtB,YAAY27E,CAAa,EAAE77E,SAAS87E,CAAgB,EACvDvuD,EAAG3xB,KAAK,QAASkR,EAAM,EAAE,EACzBivE,EAAS/7E,SAASg8E,CAAmB,IAErCt8B,EAASx/C,YAAYg5E,EAAME,SAAS,EACpC7rD,EAAGrtB,YAAY47E,CAAgB,EAAE97E,SAAS67E,CAAa,EACvDtuD,EAAG3xB,KAAK,QAASkR,EAAM,EAAE,EACzBivE,EAAS77E,YAAY87E,CAAmB,EAE5C,CACF,EACAvhF,OAAU,CACRwF,UAAW,UACX6M,MAAO,CAAC,wCACR/f,MAAO,SAASmJ,GACdvG,EAAK4tD,QAAQ,CACX14C,QAASu1E,EAAU7kF,EAAQ3F,IAAI,CACjC,CAAC,CACH,CACF,CACF,CAAC,EAGE2F,EAAQigB,OACwB,UAA9B9kB,MAAMvC,KAAKoH,EAAQsS,KAAK,EAEY,CAAC,IAAnCtS,EAAQsS,MAAMtU,QAAQ,MAAM,GAC7BgC,EAAQsS,MAAM0W,QAAQ,MAAM,EAG9BhpB,EAAQsS,MAAQ,CAAC,SAKrB0yE,EAAYjpF,GAAG,QAAS,KAAM,WAC5B,IAAI2qF,EAAKvqF,EAAEzE,IAAI,EACXkB,EAAO8tF,EAAGnmF,KAAK,MAAM,EACrBomF,EAAa,CACfthF,KAAMqhF,EACN9tF,KAAMA,EACNoH,QAASA,EACT4kF,QAAS5kF,EAAQ3F,KACjBwqF,UAAWzqF,EAAK2tD,SAAS88B,EAAU7kF,EAAQ3F,IAAI,CAAC,CAClD,EAGAiY,EAAM1Z,IAAsC,YAA7B,OAAO0Z,EAAM1Z,GAAMpB,OAAwB8a,EAAM1Z,GAAMpB,MAAMmvF,CAAU,EAGxD,YAA9B,OAAO3mF,EAAQ4mF,YAA6B5mF,EAAQ4mF,WAAWD,CAAU,CAC3E,CAAC,EAGG3mF,EAAQ6mF,UAAY7mF,EAAQsS,QAC9BtS,EAAQsS,MAAQ,GAAG6L,OAAOne,EAAQsS,MAAOtS,EAAQ6mF,QAAQ,GAI3D1rF,MAAMa,KAAKgE,EAAQsS,MAAO,SAASja,EAAGV,GACpC,IAAImvF,EAAoB,UAAb,OAAOnvF,EACdiU,EAAOk7E,EAAOnvF,EAChB2a,EAAM3a,IAAM,CACV+S,UAAW/S,EACX4f,MAAO,CAAC5f,EACV,EAGE+S,EAAYkB,EAAKlB,WAAakB,EAAKhT,KACnC2e,EAAQ3L,EAAK2L,OAAS,CAAC,IACvB3e,EAAOkuF,EAASl7E,EAAKhT,MAAQ8R,EAAc/S,EAE1CiB,IAGA0Z,EAAM1Z,MACL+H,EAAM,IACN/H,GAAQgT,EACZzP,EAAEiE,OAAOkS,EAAO3R,CAAG,GAGrBqkF,EAAYz9E,OACV,mCAAoCmD,EAAW,gBAAiB9R,EAAM,YAAa2e,EAAM,GAAI,QAC/F,EACF,CAAC,EAEDzO,EAAM2B,SAASk5E,EAAMG,SAAS,EAAEpoD,KAAKyuB,CAAQ,EAC7Ci8B,EAAY7+E,OAAOw9E,CAAc,EACjC/kF,EAAQsS,OAAS8zE,EAAY7+E,OAAOy9E,CAAW,EAC/Cl8E,EAAMs6B,OAAOgjD,CAAW,EAGrBtB,GACDuB,EAAgB/6E,KAAK,4DAA4D,EAI/E25E,EAAa,SAAS8B,GACxB,IAAIljD,EAASkjD,EAAaz8E,SAAS,QAAQ,EAAE,GAG1Cw6E,GAAmBjhD,EACpBA,EAAOmjD,OAASnC,EAAU7kF,EAAQ3F,IAAI,EAEtC0sF,EAAaz7E,KAAKtL,EAAQ3F,IAAI,EAIhC0C,WAAW,WACe,YAAxB,OAAOiD,EAAQ8J,MAAuB9J,EAAQ8J,KAAK,CACjD2rB,UAAWsxD,EACX/mF,QAASA,EACTuM,OAAQ,WACNhT,EAAKgT,OAAOw6E,EAAaz/E,KAAK,aAAa,CAAC,EAC5CxN,EAAQyS,OAAO,CACjB,CACF,CAAC,CACH,EAAE,CAAC,CACL,EAEiB,YAAdQ,EAAO,IACRs5E,EAAgB57E,SAASk5E,EAAMnH,SAAS,EACxC1zE,EAAMs6B,OAAOijD,CAAe,EAC5BpB,EAAWoB,CAAe,GAE1Bv9E,EAAM2B,SAASk5E,EAAMnH,SAAS,EAAEn5C,MAAMgjD,CAAe,EAIvDrmF,EAAQinF,aAAe,CAACjnF,EAAQ1B,MAAO0B,EAAQinF,cAAc79E,KAAK,EAAE,EACpEi9E,EAAgBhgF,KAAK,QAASrG,EAAQinF,YAAY,EAGlDntF,EAAQiC,GAAG,OAAQoqF,EAAc,IAAK,SAAS5lF,GAC7C,IAAIutE,EAAQ3xE,EAAEzE,IAAI,EAEdwvF,EADW/qF,EAAEoE,EAAK8E,IAAI,EAAEisB,QAAQ,IAAKqyD,EAAMvzE,YAAY,EAC/B9I,KAAK,IAAKq8E,EAAMG,SAAS,EACjDiD,EAAeG,EAAannE,GAAGxf,EAAKtE,KAAK,EAE7CirF,EAAav8E,YAAYg5E,EAAMnH,SAAS,EACxCuK,EAAat8E,SAASk5E,EAAMnH,SAAS,EAET,YAAzB1O,EAAMznE,KAAK,QAAQ,GACpB4+E,EAAW8B,CAAY,EAGzB1B,EAAc,CAChB,CAAC,GAICH,EAAW/oF,EAAE,uCAAuC,EAGxD2M,EAAM2B,UAAkBtH,EAGtB,CAAC,oCAFInD,EAAQukF,UAAUphF,EAAInG,KAAK,mBAAmB,EAC5CmG,EAAIiG,KAAK,GAAG,EACkB,GAGnC4E,EAAQhO,EAAQgO,OAAShO,EAAQo8C,QAEnCtzC,EAAM6B,YAAY,8CAA8C,EAChE7B,EAAM2B,SAAS,oBAAqBuD,CAAK,GAIvChO,EAAQwkF,aACV17E,EAAM2B,SAAS,CACbzK,EAAQwkF,YACR,YAAcxkF,EAAQsR,KACtB,iBACAlI,KAAK,GAAG,CAAC,EAIT+7E,EAAgBQ,EAClB3lF,EAAQskF,OAASlqF,EAAKyR,OAAOg5E,EAAUD,CAAO,CAAC,EAAIA,CACrD,EACIQ,EAAQD,EAAcC,MAG1Bt8E,EAAMwC,KAAK45E,EAAS55E,KAAK65E,EAAc75E,IAAI,CAAC,EAGxCtL,EAAQqkF,IACVv7E,EAAMvB,OAAO,wCAAwC,EAInDvH,EAAQoL,QACV85E,EAASp6E,IAAI,aAAc9K,EAAQoL,MAAM,EAI3CpL,EAAQmnF,UAAY,CAACnnF,EAAQ1B,MAAO0B,EAAQmnF,WAAW/9E,KAAK,EAAE,EAC1DpJ,EAAQmnF,WACVjC,EAAS7+E,KAAK,QAAS,SAAShO,EAAGsN,GACjC,OAAQA,GAAO,IAAM3F,EAAQmnF,SAC/B,CAAC,EAICngF,EAAW,CACb,CACE7B,SAAU,uCACVwQ,SAAU,SAAS/Z,EAAMwF,GACvBxF,EAAK0C,MAAM,gBAAkB8C,EAAQ,IACvC,CACF,EACA,CACE+D,SAAU,+DACVwQ,SAAU,SAAS/Z,EAAMwF,GACxBxF,EAAK0C,MAAM6M,MAAQ/J,EAAQ,IAC5B,CACF,EACA,CACE+D,SAAU,yBACVwQ,SAAU,SAAS/Z,EAAMwF,GACvBxF,EAAK0C,MAAM6M,MAAQ/J,EAAQ,IAC7B,CACF,GAIEiG,EAAYnO,IAAIoF,MAAM,CACxBwH,OAAQgD,EAAM,GACdjK,GAAI,WAAY5C,EAChBiL,KAAM/K,EAAE2jB,IAAI3jB,EAAE2jB,IAAI9Y,EAAU,SAASrB,GACnC,OAAOA,EAAIR,QACb,CAAC,EAAG,SAASQ,EAAKtN,GAChB,MAAO,CAAC,oCAAqC4D,EAAQ,KAAM0J,GAAKyD,KAAK,GAAG,CAC1E,CAAC,EAAEA,KAAK,EAAE,CACZ,CAAC,EAGGi8E,EAAgB,SAAUvpF,IAC5B,IACMsrF,EAEAj8E,EAcN,OAjBInL,EAAQqkF,KACN+C,EAAYlhF,KAAK2H,MAAMu3E,EAAMhtF,OAAS,GAAG,EAEzC+S,EADW+5E,EAAS56E,SAAS,IAAKq5E,EAAMI,SAAS,EAChC5rF,KAAK,EAAEmS,SAAS,IAAKq5E,EAAMK,aAAa,EAAE7kC,WAAW,EAE1Er2C,EAAM2B,SAASk5E,EAAMM,YAAY,EAG7BmD,IAAqBzD,EAAMQ,eAAdh5E,GACfjS,IAAI0N,cAAcS,EAAW,SAASzL,EAAMvD,GAC1C,IACE2O,EAAS3O,GAAGsd,SAAS/Z,EAAMuP,CAAK,CACrB,CAAX,MAAM9O,IACV,CAAC,EAIEP,CACR,EAAE,EAGCkE,EAAQsd,UACNi2C,EAAap3D,EAAE,eAAgBwnF,EAAMpjB,YAAa,UAAU,GACrDj1D,KAAKtL,EAAQuX,OAASvX,EAAQkH,KAAK7M,IAAI,EAClDyO,EAAMq6B,QAAQowB,CAAU,GAItB+xB,EAAanpF,EAAE,uCAAuC,EAGvD6D,EAAQigB,MAAQ,CAACjgB,EAAQ4S,WACtB2yE,EAAWppF,EAAE,CAAC,iCAChB,oEACF,WAAWiN,KAAK,EAAE,CAAC,GAGVrN,GAAG,QAAS,WACnBuW,EAAM2N,KAAKzoB,MAAM,CACnB,CAAC,EAED8tF,EAAW/9E,OAAOg+E,CAAQ,GAIxBvlF,EAAQykF,YACVa,EAAW/9E,OAAO,wCAA0CvH,EAAQsR,KAAO,SAAS,EAIlFtR,EAAQokF,OACVkB,EAAW/9E,OAAOvH,EAAQokF,KAAK,EAIjCt7E,EAAMvB,OAAO+9E,CAAU,EAGlBtlF,EAAQ4S,SACX7V,WAAW,WACe,YAAxB,OAAOiD,EAAQ8J,MAAuB9J,EAAQ8J,KAAK,EAAE,CACvD,EAAE,CAAC,EAIF9J,EAAQqF,KAAKjN,SAAmB,EAAR6D,GACE,YAA3B,OAAO+D,EAAQ63D,SAA0B73D,EAAQ63D,QAAQ,IAGpDl4C,CACT,CAAC,CACH,CAAC,EAGGxkB,MAAM,cACRA,MAAMqE,OAAO,uBAAwB,aAAa","file":"layui.js","sourcesContent":["/**\n * Layui\n * Classic modular front-end UI library\n * MIT Licensed\n */\n\n;!function(win){\n \"use strict\";\n\n var doc = win.document;\n var config = {\n modules: {}, // 模块物理路径\n status: {}, // 模块加载状态\n timeout: 10, // 符合规范的模块请求最长等待秒数\n event: {} // 模块自定义事件\n };\n\n var Layui = function(){\n this.v = '2.9.0-beta.1'; // Layui 版本号\n };\n\n // 识别预先可能定义的指定全局对象\n var GLOBAL = win.LAYUI_GLOBAL || {};\n\n // 获取 layui 所在目录\n var getPath = function(){\n var jsPath = doc.currentScript ? doc.currentScript.src : function(){\n var js = doc.scripts;\n var last = js.length - 1;\n var src;\n for(var i = last; i > 0; i--){\n if(js[i].readyState === 'interactive'){\n src = js[i].src;\n break;\n }\n }\n return src || js[last].src;\n }();\n\n return config.dir = GLOBAL.dir || jsPath.substring(0, jsPath.lastIndexOf('/') + 1);\n }();\n\n // 异常提示\n var error = function(msg, type){\n type = type || 'log';\n win.console && console[type] && console[type]('layui error hint: ' + msg);\n };\n\n var isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]';\n\n // 内置模块\n var modules = config.builtin = {\n lay: 'lay', // 基础 DOM 操作\n layer: 'layer', // 弹层\n laydate: 'laydate', // 日期\n laypage: 'laypage', // 分页\n laytpl: 'laytpl', // 模板引擎\n form: 'form', // 表单集\n upload: 'upload', // 上传\n dropdown: 'dropdown', // 下拉菜单\n transfer: 'transfer', // 穿梭框\n tree: 'tree', // 树结构\n table: 'table', // 表格\n treeTable: 'treeTable', // 树表\n element: 'element', // 常用元素操作\n rate: 'rate', // 评分组件\n colorpicker: 'colorpicker', // 颜色选择器\n slider: 'slider', // 滑块\n carousel: 'carousel', // 轮播\n flow: 'flow', // 流加载\n util: 'util', // 工具块\n code: 'code', // 代码修饰器\n jquery: 'jquery', // DOM 库(第三方)\n\n all: 'all',\n 'layui.all': 'layui.all' // 聚合标识(功能性的,非真实模块)\n };\n\n // 记录基础数据\n Layui.prototype.cache = config;\n\n // 定义模块\n Layui.prototype.define = function(deps, factory){\n var that = this;\n var type = typeof deps === 'function';\n var callback = function(){\n var setApp = function(app, exports){\n layui[app] = exports;\n config.status[app] = true;\n };\n typeof factory === 'function' && factory(function(app, exports){\n setApp(app, exports);\n config.callback[app] = function(){\n factory(setApp);\n }\n });\n return this;\n };\n\n type && (\n factory = deps,\n deps = []\n );\n\n that.use(deps, callback, null, 'define');\n return that;\n };\n\n // 使用特定模块\n Layui.prototype.use = function(apps, callback, exports, from){\n var that = this;\n var dir = config.dir = config.dir ? config.dir : getPath;\n var head = doc.getElementsByTagName('head')[0];\n\n apps = function(){\n if(typeof apps === 'string'){\n return [apps];\n }\n // 当第一个参数为 function 时,则自动加载所有内置模块,且执行的回调即为该 function 参数;\n else if(typeof apps === 'function'){\n callback = apps;\n return ['all'];\n }\n return apps;\n }();\n\n // 如果页面已经存在 jQuery 1.7+ 库且所定义的模块依赖 jQuery,则不加载内部 jquery 模块\n if(win.jQuery && jQuery.fn.on){\n that.each(apps, function(index, item){\n if(item === 'jquery'){\n apps.splice(index, 1);\n }\n });\n layui.jquery = layui.$ = jQuery;\n }\n\n var item = apps[0];\n var timeout = 0;\n\n exports = exports || [];\n\n // 静态资源host\n config.host = config.host || (dir.match(/\\/\\/([\\s\\S]+?)\\//)||['//'+ location.host +'/'])[0];\n\n // 加载完毕\n function onScriptLoad(e, url){\n var readyRegExp = navigator.platform === 'PLaySTATION 3' ? /^complete$/ : /^(complete|loaded)$/\n if (e.type === 'load' || (readyRegExp.test((e.currentTarget || e.srcElement).readyState))) {\n config.modules[item] = url;\n head.removeChild(node);\n (function poll() {\n if(++timeout > config.timeout * 1000 / 4){\n return error(item + ' is not a valid module', 'error');\n }\n config.status[item] ? onCallback() : setTimeout(poll, 4);\n }());\n }\n }\n\n // 回调\n function onCallback(){\n exports.push(layui[item]);\n apps.length > 1 ?\n that.use(apps.slice(1), callback, exports, from)\n : ( typeof callback === 'function' && function(){\n // 保证文档加载完毕再执行回调\n if(layui.jquery && typeof layui.jquery === 'function' && from !== 'define'){\n return layui.jquery(function(){\n callback.apply(layui, exports);\n });\n }\n callback.apply(layui, exports);\n }() );\n }\n\n // 如果引入了聚合板,内置的模块则不必重复加载\n if( apps.length === 0 || (layui['layui.all'] && modules[item]) ){\n return onCallback(), that;\n }\n\n /*\n * 获取加载的模块 URL\n * 如果是内置模块,则按照 dir 参数拼接模块路径\n * 如果是扩展模块,则判断模块路径值是否为 {/} 开头,\n * 如果路径值是 {/} 开头,则模块路径即为后面紧跟的字符。\n * 否则,则按照 base 参数拼接模块路径\n */\n\n var url = ( modules[item] ? (dir + 'modules/')\n : (/^\\{\\/\\}/.test(that.modules[item]) ? '' : (config.base || ''))\n ) + (that.modules[item] || item) + '.js';\n url = url.replace(/^\\{\\/\\}/, '');\n\n // 如果扩展模块(即:非内置模块)对象已经存在,则不必再加载\n if(!config.modules[item] && layui[item]){\n config.modules[item] = url; // 并记录起该扩展模块的 url\n }\n\n // 首次加载模块\n if(!config.modules[item]){\n var node = doc.createElement('script');\n\n node.async = true;\n node.charset = 'utf-8';\n node.src = url + function(){\n var version = config.version === true\n ? (config.v || (new Date()).getTime())\n : (config.version||'');\n return version ? ('?v=' + version) : '';\n }();\n\n head.appendChild(node);\n\n if(node.attachEvent && !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && !isOpera){\n node.attachEvent('onreadystatechange', function(e){\n onScriptLoad(e, url);\n });\n } else {\n node.addEventListener('load', function(e){\n onScriptLoad(e, url);\n }, false);\n }\n\n config.modules[item] = url;\n } else { // 缓存\n (function poll() {\n if(++timeout > config.timeout * 1000 / 4){\n return error(item + ' is not a valid module', 'error');\n }\n (typeof config.modules[item] === 'string' && config.status[item])\n ? onCallback()\n : setTimeout(poll, 4);\n }());\n }\n\n return that;\n };\n\n // 弃用原有的指定模块,以便重新扩展新的同名模块\n Layui.prototype.disuse = function(apps){\n var that = this;\n apps = that.isArray(apps) ? apps : [apps];\n that.each(apps, function (index, item) {\n if (!config.status[item]) {\n // return error('module ' + item + ' is not exist');\n }\n delete that[item];\n delete modules[item];\n delete that.modules[item];\n delete config.status[item];\n delete config.modules[item];\n });\n return that;\n };\n\n // 获取节点的 style 属性值\n Layui.prototype.getStyle = function(node, name){\n var style = node.currentStyle ? node.currentStyle : win.getComputedStyle(node, null);\n return style[style.getPropertyValue ? 'getPropertyValue' : 'getAttribute'](name);\n };\n\n // css 外部加载器\n Layui.prototype.link = function(href, fn, cssname){\n var that = this;\n var head = doc.getElementsByTagName('head')[0];\n var link = doc.createElement('link');\n\n if(typeof fn === 'string') cssname = fn;\n\n var app = (cssname || href).replace(/\\.|\\//g, '');\n var id = 'layuicss-'+ app;\n var STAUTS_NAME = 'creating';\n var timeout = 0;\n\n link.href = href + (config.debug ? '?v='+new Date().getTime() : '');\n link.rel = 'stylesheet';\n link.id = id;\n link.media = 'all';\n\n if(!doc.getElementById(id)){\n head.appendChild(link);\n }\n\n if(typeof fn !== 'function') return that;\n\n // 轮询 css 是否加载完毕\n (function poll(status) {\n var delay = 100;\n var getLinkElem = doc.getElementById(id); // 获取动态插入的 link 元素\n\n // 如果轮询超过指定秒数,则视为请求文件失败或 css 文件不符合规范\n if(++timeout > config.timeout * 1000 / delay){\n return error(href + ' timeout');\n }\n\n // css 加载就绪\n if(parseInt(that.getStyle(getLinkElem, 'width')) === 1989){\n // 如果参数来自于初始轮询(即未加载就绪时的),则移除 link 标签状态\n if(status === STAUTS_NAME) getLinkElem.removeAttribute('lay-status');\n // 如果 link 标签的状态仍为「创建中」,则继续进入轮询,直到状态改变,则执行回调\n getLinkElem.getAttribute('lay-status') === STAUTS_NAME ? setTimeout(poll, delay) : fn();\n } else {\n getLinkElem.setAttribute('lay-status', STAUTS_NAME);\n setTimeout(function(){\n poll(STAUTS_NAME);\n }, delay);\n }\n }());\n\n // 轮询css是否加载完毕\n /*\n (function poll() {\n if(++timeout > config.timeout * 1000 / 100){\n return error(href + ' timeout');\n };\n parseInt(that.getStyle(doc.getElementById(id), 'width')) === 1989 ? function(){\n fn();\n }() : setTimeout(poll, 100);\n }());\n */\n\n return that;\n };\n\n // css 内部加载器\n Layui.prototype.addcss = function(firename, fn, cssname){\n return layui.link(config.dir + 'css/' + firename, fn, cssname);\n };\n\n // 存储模块的回调\n config.callback = {};\n\n // 重新执行模块的工厂函数\n Layui.prototype.factory = function(modName){\n if(layui[modName]){\n return typeof config.callback[modName] === 'function'\n ? config.callback[modName]\n : null;\n }\n };\n\n // 图片预加载\n Layui.prototype.img = function(url, callback, error) {\n var img = new Image();\n img.src = url;\n if(img.complete){\n return callback(img);\n }\n img.onload = function(){\n img.onload = null;\n typeof callback === 'function' && callback(img);\n };\n img.onerror = function(e){\n img.onerror = null;\n typeof error === 'function' && error(e);\n };\n };\n\n // 全局配置\n Layui.prototype.config = function(options){\n options = options || {};\n for(var key in options){\n config[key] = options[key];\n }\n return this;\n };\n\n // 记录全部模块\n Layui.prototype.modules = function(){\n var clone = {};\n for(var o in modules){\n clone[o] = modules[o];\n }\n return clone;\n }();\n\n // 拓展模块\n Layui.prototype.extend = function(options){\n var that = this;\n\n // 验证模块是否被占用\n options = options || {};\n for(var o in options){\n if(that[o] || that.modules[o]){\n error(o+ ' Module already exists', 'error');\n } else {\n that.modules[o] = options[o];\n }\n }\n\n return that;\n };\n\n // location.hash 路由解析\n Layui.prototype.router = Layui.prototype.hash = function(hash){\n var that = this;\n var hash = hash || location.hash;\n var data = {\n path: [],\n search: {},\n hash: (hash.match(/[^#](#.*$)/) || [])[1] || ''\n };\n\n if(!/^#\\//.test(hash)) return data; // 禁止非路由规范\n\n hash = hash.replace(/^#\\//, '');\n data.href = '/' + hash;\n hash = hash.replace(/([^#])(#.*$)/, '$1').split('/') || [];\n\n // 提取 Hash 结构\n that.each(hash, function(index, item){\n /^\\w+=/.test(item) ? function(){\n item = item.split('=');\n data.search[item[0]] = item[1];\n }() : data.path.push(item);\n });\n\n return data;\n };\n\n // URL 解析\n Layui.prototype.url = function(href){\n var that = this;\n var data = {\n // 提取 url 路径\n pathname: function(){\n var pathname = href\n ? function(){\n var str = (href.match(/\\.[^.]+?\\/.+/) || [])[0] || '';\n return str.replace(/^[^\\/]+/, '').replace(/\\?.+/, '');\n }()\n : location.pathname;\n return pathname.replace(/^\\//, '').split('/');\n }(),\n\n // 提取 url 参数\n search: function(){\n var obj = {};\n var search = (href\n ? function(){\n var str = (href.match(/\\?.+/) || [])[0] || '';\n return str.replace(/\\#.+/, '');\n }()\n : location.search\n ).replace(/^\\?+/, '').split('&'); // 去除 ?,按 & 分割参数\n\n // 遍历分割后的参数\n that.each(search, function(index, item){\n var _index = item.indexOf('=')\n ,key = function(){ // 提取 key\n if(_index < 0){\n return item.substr(0, item.length);\n } else if(_index === 0){\n return false;\n } else {\n return item.substr(0, _index);\n }\n }();\n // 提取 value\n if(key){\n obj[key] = _index > 0 ? item.substr(_index + 1) : null;\n }\n });\n\n return obj;\n }(),\n\n // 提取 Hash\n hash: that.router(function(){\n return href\n ? ((href.match(/#.+/) || [])[0] || '/')\n : location.hash;\n }())\n };\n\n return data;\n };\n\n // 本地持久存储\n Layui.prototype.data = function(table, settings, storage){\n table = table || 'layui';\n storage = storage || localStorage;\n\n if(!win.JSON || !win.JSON.parse) return;\n\n // 如果 settings 为 null,则删除表\n if(settings === null){\n return delete storage[table];\n }\n\n settings = typeof settings === 'object'\n ? settings\n : {key: settings};\n\n try {\n var data = JSON.parse(storage[table]);\n } catch(e) {\n var data = {};\n }\n\n if('value' in settings) data[settings.key] = settings.value;\n if(settings.remove) delete data[settings.key];\n storage[table] = JSON.stringify(data);\n\n return settings.key ? data[settings.key] : data;\n };\n\n // 本地临时存储\n Layui.prototype.sessionData = function(table, settings){\n return this.data(table, settings, sessionStorage);\n }\n\n // 设备信息\n Layui.prototype.device = function(key){\n var agent = navigator.userAgent.toLowerCase();\n\n // 获取版本号\n var getVersion = function(label){\n var exp = new RegExp(label + '/([^\\\\s\\\\_\\\\-]+)');\n label = (agent.match(exp)||[])[1];\n return label || false;\n };\n\n // 返回结果集\n var result = {\n os: function(){ // 底层操作系统\n if(/windows/.test(agent)){\n return 'windows';\n } else if(/linux/.test(agent)){\n return 'linux';\n } else if(/iphone|ipod|ipad|ios/.test(agent)){\n return 'ios';\n } else if(/mac/.test(agent)){\n return 'mac';\n }\n }(),\n ie: function(){ // ie 版本\n return (!!win.ActiveXObject || \"ActiveXObject\" in win) ? (\n (agent.match(/msie\\s(\\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识\n ) : false;\n }(),\n weixin: getVersion('micromessenger') // 是否微信\n };\n\n // 任意的 key\n if(key && !result[key]){\n result[key] = getVersion(key);\n }\n\n // 移动设备\n result.android = /android/.test(agent);\n result.ios = result.os === 'ios';\n result.mobile = (result.android || result.ios);\n\n return result;\n };\n\n // 提示\n Layui.prototype.hint = function(){\n return {\n error: error\n };\n };\n\n // typeof 类型细分 -> string/number/boolean/undefined/null、object/array/function/…\n Layui.prototype._typeof = Layui.prototype.type = function(operand){\n if(operand === null) return String(operand);\n\n // 细分引用类型\n return (typeof operand === 'object' || typeof operand === 'function') ? function(){\n var type = Object.prototype.toString.call(operand).match(/\\s(.+)\\]$/) || []; // 匹配类型字符\n var classType = 'Function|Array|Date|RegExp|Object|Error|Symbol'; // 常见类型字符\n\n type = type[1] || 'Object';\n\n // 除匹配到的类型外,其他对象均返回 object\n return new RegExp('\\\\b('+ classType + ')\\\\b').test(type)\n ? type.toLowerCase()\n : 'object';\n }() : typeof operand;\n };\n\n // 对象是否具备数组结构(此处为兼容 jQuery 对象)\n Layui.prototype._isArray = Layui.prototype.isArray = function(obj){\n var that = this;\n var len;\n var type = that.type(obj);\n\n if(!obj || (typeof obj !== 'object') || obj === win) return false;\n\n len = 'length' in obj && obj.length; // 兼容 ie\n return type === 'array' || len === 0 || (\n typeof len === 'number' && len > 0 && (len - 1) in obj // 兼容 jQuery 对象\n );\n };\n\n // 遍历\n Layui.prototype.each = function(obj, fn){\n var key;\n var that = this;\n var callFn = function(key, obj){ // 回调\n return fn.call(obj[key], key, obj[key])\n };\n\n if(typeof fn !== 'function') return that;\n obj = obj || [];\n\n // 优先处理数组结构\n if(that.isArray(obj)){\n for(key = 0; key < obj.length; key++){\n if(callFn(key, obj)) break;\n }\n } else {\n for(key in obj){\n if(callFn(key, obj)) break;\n }\n }\n\n return that;\n };\n\n // 将数组中的成员对象按照某个 key 的 value 值进行排序\n Layui.prototype.sort = function(arr, key, desc, notClone){\n var that = this;\n var clone = notClone ? (arr || []) : JSON.parse(\n JSON.stringify(arr || [])\n );\n\n // 若未传入 key,则直接返回原对象\n if(that.type(arr) === 'object' && !key){\n return clone;\n } else if(typeof arr !== 'object'){ // 若 arr 非对象\n return [clone];\n }\n\n // 开始排序\n clone.sort(function(o1, o2){\n var v1 = o1[key];\n var v2 = o2[key];\n\n /*\n * 特殊数据\n * 若比较的成员均非对象\n */\n\n // 若比较的成员均为数字\n if(!isNaN(o1) && !isNaN(o2)) return o1 - o2;\n // 若比较的成员只存在某一个非对象\n if(!isNaN(o1) && isNaN(o2)){\n if(key && typeof o2 === 'object'){\n v1 = o1;\n } else {\n return -1;\n }\n } else if (isNaN(o1) && !isNaN(o2)){\n if(key && typeof o1 === 'object'){\n v2 = o2;\n } else {\n return 1;\n }\n }\n\n /*\n * 正常数据\n * 即成员均为对象,也传入了对比依据: key\n * 若 value 为数字,按「大小」排序;若 value 非数字,则按「字典序」排序\n */\n\n // value 是否为数字\n var isNum = [!isNaN(v1), !isNaN(v2)];\n\n // 若为数字比较\n if(isNum[0] && isNum[1]){\n if(v1 && (!v2 && v2 !== 0)){ // 数字 vs 空\n return 1;\n } else if((!v1 && v1 !== 0) && v2){ // 空 vs 数字\n return -1;\n } else { // 数字 vs 数字\n return v1 - v2;\n }\n }\n\n /**\n * 字典序排序\n */\n\n // 若为非数字比较\n if(!isNum[0] && !isNum[1]){\n // 字典序比较\n if(v1 > v2){\n return 1;\n } else if (v1 < v2) {\n return -1;\n } else {\n return 0;\n }\n }\n\n // 若为混合比较\n if(isNum[0] || !isNum[1]){ // 数字 vs 非数字\n return -1;\n } else if(!isNum[0] || isNum[1]) { // 非数字 vs 数字\n return 1;\n }\n\n });\n\n desc && clone.reverse(); // 倒序\n return clone;\n };\n\n // 阻止事件冒泡\n Layui.prototype.stope = function(thisEvent){\n thisEvent = thisEvent || win.event;\n try { thisEvent.stopPropagation() } catch(e){\n thisEvent.cancelBubble = true;\n }\n };\n\n // 字符常理\n var EV_REMOVE = 'LAYUI-EVENT-REMOVE';\n\n // 自定义模块事件\n Layui.prototype.onevent = function(modName, events, callback){\n if(typeof modName !== 'string'\n || typeof callback !== 'function') return this;\n\n return Layui.event(modName, events, null, callback);\n };\n\n // 执行自定义模块事件\n Layui.prototype.event = Layui.event = function(modName, events, params, fn){\n var that = this;\n var result = null;\n var filter = (events || '').match(/\\((.*)\\)$/)||[]; // 提取事件过滤器字符结构,如:select(xxx)\n var eventName = (modName + '.'+ events).replace(filter[0], ''); // 获取事件名称,如:form.select\n var filterName = filter[1] || ''; // 获取过滤器名称,,如:xxx\n var callback = function(_, item){\n var res = item && item.call(that, params);\n res === false && result === null && (result = false);\n };\n\n // 如果参数传入特定字符,则执行移除事件\n if(params === EV_REMOVE){\n delete (that.cache.event[eventName] || {})[filterName];\n return that;\n }\n\n // 添加事件\n if(fn){\n config.event[eventName] = config.event[eventName] || {};\n\n if (filterName) {\n // 带filter不支持重复事件\n config.event[eventName][filterName] = [fn];\n } else {\n // 不带filter处理的是所有的同类事件,应该支持重复事件\n config.event[eventName][filterName] = config.event[eventName][filterName] || [];\n config.event[eventName][filterName].push(fn);\n }\n return this;\n }\n\n // 执行事件回调\n layui.each(config.event[eventName], function(key, item){\n // 执行当前模块的全部事件\n if(filterName === '{*}'){\n layui.each(item, callback);\n return;\n }\n\n // 执行指定事件\n key === '' && layui.each(item, callback);\n (filterName && key === filterName) && layui.each(item, callback);\n });\n\n return result;\n };\n\n // 新增模块事件\n Layui.prototype.on = function(events, modName, callback){\n var that = this;\n return that.onevent.call(that, modName, events, callback);\n }\n\n // 移除模块事件\n Layui.prototype.off = function(events, modName){\n var that = this;\n return that.event.call(that, modName, events, EV_REMOVE);\n };\n\n // 防抖\n Layui.prototype.debounce = function (func, wait) {\n var timeout;\n return function () {\n var context = this;\n var args = arguments;\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n func.apply(context, args);\n }, wait);\n }\n };\n\n // 节流\n Layui.prototype.throttle = function (func, wait) {\n var cooldown = false;\n return function () {\n var context = this;\n var args = arguments;\n if (!cooldown) {\n func.apply(context, args);\n cooldown = true;\n setTimeout(function () {\n cooldown = false;\n }, wait);\n }\n }\n };\n\n // exports layui\n win.layui = new Layui();\n\n}(window); // gulp build: layui-footer\n\n","/**\n * 用于打包聚合版,该文件不会存在于构建后的目录 \n */\n \nlayui.define(function(exports){\n var cache = layui.cache;\n layui.config({\n dir: cache.dir.replace(/lay\\/dest\\/$/, '')\n });\n exports('layui.all', layui.v);\n});","\n/** lay 基础模块 | MIT Licensed */\n\n;!function(window){ // gulp build: lay-header\n \"use strict\";\n\n var MOD_NAME = 'lay'; // 模块名\n var document = window.document;\n\n /**\n * 元素查找\n * @param {string | HTMLElement | JQuery} selector\n */\n var lay = function(selector){\n return new Class(selector);\n };\n\n // 构造器\n var Class = function(selector){\n var that = this;\n var elem = typeof selector === 'object' ? function(){\n // 仅适配简单元素对象\n return layui.isArray(selector) ? selector : [selector];\n }() : (\n this.selector = selector,\n document.querySelectorAll(selector || null)\n );\n\n lay.each(elem, function(index, item){\n that.push(elem[index]);\n });\n };\n\n /*\n * API 兼容\n */\n Array.prototype.indexOf = Array.prototype.indexOf || function(searchElement, fromIndex) {\n var rst = -1;\n fromIndex = fromIndex || 0;\n layui.each(this, function(index, val){\n if (searchElement === val && index >= fromIndex) {\n rst = index;\n return !0;\n }\n });\n return rst;\n };\n\n /*\n lay 对象操作\n */\n\n Class.fn = Class.prototype = [];\n Class.fn.constructor = Class;\n\n /**\n * 将两个或多个对象的内容深度合并到第一个对象中\n * @callback ExtendFunc\n * @param {*} target - 一个对象\n * @param {...*} objectN - 包含额外的属性合并到第一个参数\n * @returns {*} 返回合并后的对象\n */\n /** @type ExtendFunc*/\n lay.extend = function(){\n var ai = 1;\n var length;\n var args = arguments;\n var clone = function(target, obj){\n target = target || (layui.type(obj) === 'array' ? [] : {}); // 目标对象\n for(var i in obj){\n // 若值为普通对象,则进入递归,继续深度合并\n target[i] = (obj[i] && obj[i].constructor === Object)\n ? clone(target[i], obj[i])\n : obj[i];\n }\n return target;\n };\n\n args[0] = typeof args[0] === 'object' ? args[0] : {};\n length = args.length\n\n for(; ai < length; ai++){\n if(typeof args[ai] === 'object'){\n clone(args[0], args[ai]);\n }\n }\n return args[0];\n };\n\n /**\n * IE 版本\n * @type {string | boolean} - 如果是 IE 返回版本字符串,否则返回 false\n */\n lay.ie = function(){\n var agent = navigator.userAgent.toLowerCase();\n return (!!window.ActiveXObject || \"ActiveXObject\" in window) ? (\n (agent.match(/msie\\s(\\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识\n ) : false;\n }();\n\n\n /**\n * 获取 layui 常见方法,以便用于组件单独版\n */\n\n lay.layui = layui || {};\n lay.getPath = layui.cache.dir; // 获取当前 JS 所在目录\n lay.stope = layui.stope; // 中止冒泡\n lay.each = function(){ // 遍历\n layui.each.apply(layui, arguments);\n return this;\n };\n\n\n /**\n * 数字前置补零\n * @param {number | string} num - 原始数字\n * @param {number} [length=2] - 数字长度,如果原始数字长度小于 length,则前面补零\n * @returns {string} 返回补 0 后的数字\n * @example\n * ```js\n * lay.digit(6, 2); // \"06\"\n * lay.digit('7', 3); // \"007\"\n * ```\n */\n lay.digit = function(num, length){\n if(!(typeof num === 'string' || typeof num === 'number')) return '';\n\n var str = '';\n num = String(num);\n length = length || 2;\n for(var i = num.length; i < length; i++){\n str += '0';\n }\n return num < Math.pow(10, length) ? str + num : num;\n };\n\n /**\n * 创建元素\n * @param {string} elemName - 元素的标签名\n * @param {Object.} [attr] - 添加到元素上的属性\n * @returns {HTMLElement} 返回创建的 HTML 元素\n * @example\n * ```js\n * lay.elem('div', {id: 'test'}) //
                    \n * ```\n */\n lay.elem = function(elemName, attr){\n var elem = document.createElement(elemName);\n lay.each(attr || {}, function(key, value){\n elem.setAttribute(key, value);\n });\n return elem;\n };\n\n /**\n * 当前页面是否存在滚动条\n * @returns {boolean} 是否存在滚动条\n * @example\n * ```\n * lay.hasScrollbar() // true 或 false\n * ```\n */\n lay.hasScrollbar = function(){\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);\n };\n\n /**\n * 获取 style rules\n * @param {HTMLStyleElement} style - HTMLStyle 元素\n * @param {(ruleItem: CSSStyleRule, index: number) => boolean} [callback] - 用来返回 style 元素中的每个 `style rule` 的函数,返回 true 终止遍历\n * @returns {CSSRuleList } 返回 `style rules`\n * @example\n * ```\n * \n *\n * lay.getStyleRules($('#test')[0], function(rule, index){\n * if(rule.selectorText === '.lay-card'){\n * console.log(index, rule.cssText) // 0 '.lay-card{color: #000}'\n * rule.style.color = '#EEE';\n * return true; // 终止遍历\n * }\n * }) // RuleList\n * ```\n */\n lay.getStyleRules = function(style, callback) {\n if (!style) return;\n\n var sheet = style.sheet || style.styleSheet || {};\n var rules = sheet.cssRules || sheet.rules;\n\n if (typeof callback === 'function') {\n layui.each(rules, function(i, item){\n if (callback(item, i)) return true;\n });\n }\n\n return rules;\n };\n\n /**\n * 创建 style 样式\n * @param {Object} options - 可配置的选项\n * @param {string | HTMLElement | JQuery} [options.target] - 目标容器,指定后会将样式追加到目标容器\n * @param {string} [options.id] - 样式元素的 id,默认自增\n * @param {string} options.text - 样式内容\n * @returns {HTMLStyleElement} 返回创建的样式元素\n * @example\n * ```html\n *
                    \n * \n * \n *
                    \n *\n * lay.style({\n * target: '#targetEl',\n * text: '.card{color: #000}'\n * }) // \n * ```\n */\n lay.style = function(options){\n options = options || {};\n\n var style = lay.elem('style');\n var styleText = options.text || '';\n var target = options.target;\n\n if (!styleText) return;\n\n // 添加样式\n if ('styleSheet' in style) {\n style.setAttribute('type', 'text/css');\n style.styleSheet.cssText = styleText;\n } else {\n style.innerHTML = styleText;\n }\n\n // ID\n style.id = 'LAY-STYLE-'+ (options.id || function(index) {\n lay.style.index++;\n return 'DF-'+ index;\n }(lay.style.index || 0));\n\n // 是否向目标容器中追加 style 元素\n if (target) {\n var styleElem = lay(target).find('#'+ style.id);\n styleElem[0] && styleElem.remove();\n lay(target).append(style);\n }\n\n return style;\n };\n\n /**\n * 将元素定位到指定目标元素附近\n * @param {HTMLElement} target - 目标元素\n * @param {HTMLElement} elem - 定位元素\n * @param {Object} [opts] - 可配置的选项\n * @param {'absolute' | 'fixed'} [opts.position] - 元素的定位类型\n * @param {'left' | 'right'} [opts.clickType=\"left\"] - 点击类型,默认为 'left',如果 {@link target} 是 document 或 body 元素,则为 'right'\n * @param {'left' | 'right' | 'center'} [opts.align=\"left\"] - 对齐方式\n * @param {boolean} [opts.allowBottomOut=false] - 顶部没有足够区域显示时,是否允许底部溢出\n * @param {string | number} [opts.margin=5] - 边距\n * @param {Event} [opts.e] - 事件对象,仅右键生效\n * @param {boolean} [opts.SYSTEM_RELOAD] - 是否重载,用于出现滚动条时重新计算位置\n * @example\n * ```js\n * \n *
                      \n *
                    • 菜单1
                    • \n *
                    • 菜单2
                    • \n *
                    \n *\n * // 下拉菜单将被定位到按钮附近\n * lay.position(\n * $('#targetEl')[0],\n * $('#contentEl')[0],\n * {\n * position: 'fixed',\n * align: 'center'\n * }\n * )\n * ```\n */\n lay.position = function(target, elem, opts){\n if(!elem) return;\n opts = opts || {};\n\n // 如果绑定的是 document 或 body 元素,则直接获取鼠标坐标\n if(target === document || target === lay('body')[0]){\n opts.clickType = 'right';\n }\n\n // 绑定绑定元素的坐标\n var rect = opts.clickType === 'right' ? function(){\n var e = opts.e || window.event || {};\n return {\n left: e.clientX,\n top: e.clientY,\n right: e.clientX,\n bottom: e.clientY\n }\n }() : target.getBoundingClientRect();\n var elemWidth = elem.offsetWidth; // 控件的宽度\n var elemHeight = elem.offsetHeight; // 控件的高度\n\n // 滚动条高度\n var scrollArea = function(type){\n type = type ? 'scrollLeft' : 'scrollTop';\n return document.body[type] | document.documentElement[type];\n };\n\n // 窗口宽高\n var winArea = function(type){\n return document.documentElement[type ? 'clientWidth' : 'clientHeight']\n };\n var margin = 'margin' in opts ? opts.margin : 5;\n var left = rect.left;\n var top = rect.bottom;\n\n // 相对元素居中\n if(opts.align === 'center'){\n left = left - (elemWidth - target.offsetWidth) / 2;\n } else if(opts.align === 'right'){\n left = left - elemWidth + target.offsetWidth;\n }\n\n // 判断右侧是否超出边界\n if(left + elemWidth + margin > winArea('width')){\n left = winArea('width') - elemWidth - margin; // 如果超出右侧,则将面板向右靠齐\n }\n // 左侧是否超出边界\n if(left < margin) left = margin;\n\n\n // 判断底部和顶部是否超出边界\n if(rect.bottom + elemHeight + margin > winArea()){ // 底部超出边界\n // 优先判断顶部是否有足够区域显示完全,且底部不能超出边界\n if(rect.top > elemHeight + margin && rect.top <= winArea() ){\n top = rect.top - elemHeight - margin*2; // 顶部有足够的区域显示\n } else if(!opts.allowBottomOut){ // 顶部没有足够区域显示时,是否允许底部溢出\n top = winArea() - elemHeight - margin*2; // 面板向底部靠齐\n if(top < 0) top = 0; // 如果面板底部靠齐时,又溢出窗口顶部,则只能将顶部靠齐\n }\n }\n /*\n if(top + elemHeight + margin > winArea()){\n // 优先顶部是否有足够区域显示完全\n if(rect.top > elemHeight + margin){\n top = rect.top - elemHeight - margin*2; // 顶部有足够的区域显示\n } else {\n // 如果面板是鼠标右键弹出,且顶部没有足够区域显示,则将面板向底部靠齐\n if(obj.clickType === 'right'){\n top = winArea() - elemHeight - margin*2;\n if(top < 0) top = 0; // 不能溢出窗口顶部\n } else {\n top = margin; // 位置计算逻辑完备性处理\n }\n }\n }\n */\n\n // 定位类型\n var position = opts.position;\n if(position) elem.style.position = position;\n\n // 设置坐标\n elem.style.left = left + (position === 'fixed' ? 0 : scrollArea(1)) + 'px';\n elem.style.top = top + (position === 'fixed' ? 0 : scrollArea()) + 'px';\n\n // 防止页面无滚动条时,又因为弹出面板而出现滚动条导致的坐标计算偏差\n if(!lay.hasScrollbar()){\n var rect1 = elem.getBoundingClientRect();\n // 如果弹出面板的溢出窗口底部,则表示将出现滚动条,此时需要重新计算坐标\n if(!opts.SYSTEM_RELOAD && (rect1.bottom + margin) > winArea()){\n opts.SYSTEM_RELOAD = true;\n setTimeout(function(){\n lay.position(target, elem, opts);\n }, 50);\n }\n }\n };\n\n /**\n * 获取元素上的属性配置项\n * @param {string | HTMLElement | JQuery} elem - HTML 元素\n * @param {{attr: string} | string} [opts=\"lay-options\"] - 可配置的选项,string 类型指定属性名\n * @returns {Object.} 返回元素上的属性配置项\n * @example\n * ```js\n *
                    \n *\n * var elem = $('#testEl')\n * lay.options(elem) // {color:red}\n * lay.options(elem[0]) // {color:red}\n * lay.options('#testEl') // {color:red}\n * lay.options('#testEl', {attr: 'lay-toc'}) // {hot: true}\n * lay.options('#testEl', 'lay-toc') // {hot: true}\n *\n * $('#testEl').attr('lay-toc') // '{hot: true}'\n * ```\n */\n lay.options = function(elem, opts){\n opts = typeof opts === 'object' ? opts : {attr: opts};\n\n if(elem === document) return {};\n\n var othis = lay(elem);\n var attrName = opts.attr || 'lay-options';\n var attrValue = othis.attr(attrName);\n\n try {\n /**\n * 请注意: 开发者在使用 lay-options=\"{}\" 配置组件选项时,需确保属性值不来自于网页用户,\n * 即属性值必须在网页开发者自身的可控范围内,否则请勿在 HTML 标签属性中获取组件选项。\n */\n return new Function('return '+ (attrValue || '{}'))();\n } catch(ev) {\n layui.hint().error(opts.errorText || [\n attrName + '=\"'+ attrValue + '\"',\n '\\n parseerror: '+ ev\n ].join('\\n'), 'error');\n return {};\n }\n };\n\n\n /**\n * 元素是否属于顶级元素(document 或 body)\n * @param {HTMLElement} elem - HTML 元素\n * @returns {boolean} 是否属于顶级元素\n * @example\n * ```js\n * lay.isTopElem(document) // true\n * ```\n */\n lay.isTopElem = function(elem){\n var topElems = [document, lay('body')[0]]\n ,matched = false;\n lay.each(topElems, function(index, item){\n if(item === elem){\n return matched = true\n }\n });\n return matched;\n };\n\n // 剪切板\n lay.clipboard = {\n /**\n * 写入文本\n * @param {Object} options - 可配置的选项\n * @param {string} options.text - 写入剪贴板的文本\n * @param {() => void} [options.done] - 写入成功/完成回调\n * @param {(err?: any) => void} [options.error] - 写入失败回调\n * @example\n * ```js\n * lay.clipboard.writeText({\n * text: '测试文本',\n * done: function(){ layer.msg('copied')},\n * error: function(){ layer.msg('error')}\n * })\n * ```\n */\n writeText: function(options) {\n var text = String(options.text);\n\n if(navigator && 'clipboard' in navigator){\n navigator.clipboard.writeText(text)\n .then(options.done, function(){\n legacyCopy();\n });\n }else{\n legacyCopy();\n }\n\n function legacyCopy(){\n var elem = document.createElement('textarea');\n\n elem.value = text;\n elem.style.position = 'fixed';\n elem.style.opacity = '0';\n elem.style.top = '0px';\n elem.style.left = '0px';\n\n document.body.appendChild(elem);\n elem.select();\n\n try {\n document.execCommand('copy');\n typeof options.done === 'function' && options.done();\n } catch(err) {\n typeof options.error === 'function' && options.error(err);\n } finally {\n elem.remove ? elem.remove() : document.body.removeChild(elem);\n }\n }\n }\n };\n\n\n /*\n * lay 元素操作\n */\n\n\n // 追加字符\n Class.addStr = function(str, new_str){\n str = str.replace(/\\s+/, ' ');\n new_str = new_str.replace(/\\s+/, ' ').split(' ');\n lay.each(new_str, function(ii, item){\n if(!new RegExp('\\\\b'+ item + '\\\\b').test(str)){\n str = str + ' ' + item;\n }\n });\n return str.replace(/^\\s|\\s$/, '');\n };\n\n // 移除值\n Class.removeStr = function(str, new_str){\n str = str.replace(/\\s+/, ' ');\n new_str = new_str.replace(/\\s+/, ' ').split(' ');\n lay.each(new_str, function(ii, item){\n var exp = new RegExp('\\\\b'+ item + '\\\\b')\n if(exp.test(str)){\n str = str.replace(exp, '');\n }\n });\n return str.replace(/\\s+/, ' ').replace(/^\\s|\\s$/, '');\n };\n\n // 查找子元素\n Class.fn.find = function(selector){\n var that = this;\n var elem = [];\n var isObject = typeof selector === 'object';\n\n this.each(function(i, item){\n var children = isObject && item.contains(selector)\n ? selector\n : item.querySelectorAll(selector || null);\n\n lay.each(children, function(index, child){\n elem.push(child);\n });\n });\n\n return lay(elem);\n };\n\n // 元素遍历\n Class.fn.each = function(fn){\n return lay.each.call(this, this, fn);\n };\n\n // 添加 className\n Class.fn.addClass = function(className, type){\n return this.each(function(index, item){\n item.className = Class[type ? 'removeStr' : 'addStr'](item.className, className)\n });\n };\n\n // 移除 className\n Class.fn.removeClass = function(className){\n return this.addClass(className, true);\n };\n\n // 是否包含 css 类\n Class.fn.hasClass = function(className){\n var has = false;\n this.each(function(index, item){\n if(new RegExp('\\\\b'+ className +'\\\\b').test(item.className)){\n has = true;\n }\n });\n return has;\n };\n\n // 添加或获取 css style\n Class.fn.css = function(key, value){\n var that = this;\n var parseValue = function(v){\n return isNaN(v) ? v : (v +'px');\n };\n return (typeof key === 'string' && value === undefined) ? function(){\n if(that.length > 0) return that[0].style[key];\n }() : that.each(function(index, item){\n typeof key === 'object' ? lay.each(key, function(thisKey, thisValue){\n item.style[thisKey] = parseValue(thisValue);\n }) : item.style[key] = parseValue(value);\n });\n };\n\n // 添加或获取宽度\n Class.fn.width = function(value){\n var that = this;\n return value === undefined ? function(){\n if(that.length > 0) return that[0].offsetWidth; // 此处还需做兼容\n }() : that.each(function(index, item){\n that.css('width', value);\n });\n };\n\n // 添加或获取高度\n Class.fn.height = function(value){\n var that = this;\n return value === undefined ? function(){\n if(that.length > 0) return that[0].offsetHeight; // 此处还需做兼容\n }() : that.each(function(index, item){\n that.css('height', value);\n });\n };\n\n // 添加或获取属性\n Class.fn.attr = function(key, value){\n var that = this;\n return value === undefined ? function(){\n if(that.length > 0) return that[0].getAttribute(key);\n }() : that.each(function(index, item){\n item.setAttribute(key, value);\n });\n };\n\n // 移除属性\n Class.fn.removeAttr = function(key){\n return this.each(function(index, item){\n item.removeAttribute(key);\n });\n };\n\n // 设置或获取 HTML 内容\n Class.fn.html = function(html){\n var that = this;\n return html === undefined ? function(){\n if(that.length > 0) return that[0].innerHTML;\n }() : this.each(function(index, item){\n item.innerHTML = html;\n });\n };\n\n // 设置或获取值\n Class.fn.val = function(value){\n var that = this;\n return value === undefined ? function(){\n if(that.length > 0) return that[0].value;\n }() : this.each(function(index, item){\n item.value = value;\n });\n };\n\n // 追加内容\n Class.fn.append = function(elem){\n return this.each(function(index, item){\n typeof elem === 'object'\n ? item.appendChild(elem)\n : item.innerHTML = item.innerHTML + elem;\n });\n };\n\n // 移除内容\n Class.fn.remove = function(elem){\n return this.each(function(index, item){\n elem ? item.removeChild(elem) : item.parentNode.removeChild(item);\n });\n };\n\n // 事件绑定\n Class.fn.on = function(eventName, fn){\n return this.each(function(index, item){\n item.attachEvent ? item.attachEvent('on' + eventName, function(e){\n e.target = e.srcElement;\n fn.call(item, e);\n }) : item.addEventListener(eventName, fn, false);\n });\n };\n\n // 解除事件\n Class.fn.off = function(eventName, fn){\n return this.each(function(index, item){\n item.detachEvent\n ? item.detachEvent('on'+ eventName, fn)\n : item.removeEventListener(eventName, fn, false);\n });\n };\n\n // export\n window.lay = lay;\n\n // 输出为 layui 模块\n if(window.layui && layui.define){\n layui.define(function(exports){\n exports(MOD_NAME, lay);\n });\n }\n\n}(window, window.document); // gulp build: lay-footer\n","/**\n * laytpl 轻量模板引擎\n */\n\nlayui.define(function(exports){\n \"use strict\";\n\n // 默认属性\n var config = {\n open: '{{', // 标签符前缀\n close: '}}' // 标签符后缀\n };\n\n // 模板工具\n var tool = {\n escape: function(html){\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\n if(html === undefined || html === null) return '';\n\n html += '';\n if(!exp.test(html)) return html;\n\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\n .replace(//g, '>')\n .replace(/'/g, ''').replace(/\"/g, '"');\n }\n };\n\n // 内部方法\n var inner = {\n exp: function(str){\n return new RegExp(str, 'g');\n },\n // 错误提示\n error: function(e, source){\n var error = 'Laytpl Error: ';\n typeof console === 'object' && console.error(error + e + '\\n'+ (source || ''));\n return error + e;\n }\n };\n\n // constructor\n var Class = function(template, options){\n var that = this;\n that.config = that.config || {};\n that.template = template;\n\n // 简单属性合并\n var extend = function(obj){\n for(var i in obj){\n that.config[i] = obj[i];\n }\n };\n\n extend(config);\n extend(options);\n };\n\n // 标签正则\n Class.prototype.tagExp = function(type, _, __){\n var options = this.config;\n var types = [\n '#([\\\\s\\\\S])+?', // js 语句\n '([^{#}])*?' // 普通字段\n ][type || 0];\n\n return inner.exp((_||'') + options.open + types + options.close + (__||''));\n };\n\n // 模版解析\n Class.prototype.parse = function(template, data){\n var that = this;\n var options = that.config;\n var source = template;\n var jss = inner.exp('^'+ options.open +'#', '');\n var jsse = inner.exp(options.close +'$', '');\n\n // 模板必须为 string 类型\n if(typeof template !== 'string') return template;\n\n // 正则解析\n template = template.replace(/\\s+|\\r|\\t|\\n/g, ' ')\n .replace(inner.exp(options.open +'#'), options.open +'# ')\n .replace(inner.exp(options.close +'}'), '} '+ options.close).replace(/\\\\/g, '\\\\\\\\')\n\n // 不匹配指定区域的内容\n .replace(inner.exp(options.open + '!(.+?)!' + options.close), function(str){\n str = str.replace(inner.exp('^'+ options.open + '!'), '')\n .replace(inner.exp('!'+ options.close), '')\n .replace(inner.exp(options.open + '|' + options.close), function(tag){\n return tag.replace(/(.)/g, '\\\\$1')\n });\n return str\n })\n\n // 匹配 JS 语法\n .replace(/(?=\"|')/g, '\\\\').replace(that.tagExp(), function(str){\n str = str.replace(jss, '').replace(jsse, '');\n return '\";' + str.replace(/\\\\(.)/g, '$1') + ';view+=\"';\n })\n\n // 匹配普通输出语句\n .replace(that.tagExp(1), function(str){\n var start = '\"+laytpl.escape(';\n if(str.replace(/\\s/g, '') === options.open + options.close){\n return '';\n }\n str = str.replace(inner.exp(options.open + '|' + options.close), '');\n if(/^=/.test(str)){\n str = str.replace(/^=/, '');\n } else if(/^-/.test(str)){\n str = str.replace(/^-/, '');\n start = '\"+(';\n }\n return start + str.replace(/\\\\(.)/g, '$1') + ')+\"';\n });\n\n template = '\"use strict\";var view = \"' + template + '\";return view;';\n\n try {\n /**\n * 请注意: 开发者在使用模板语法时,需确保模板中的 JS 语句不来自于页面用户输入。\n * 即模板中的 JS 语句必须在页面开发者自身的可控范围内,否则请避免使用该模板解析。\n */\n that.cache = template = new Function('d, laytpl', template);\n return template(data, tool);\n } catch(e) {\n delete that.cache;\n return inner.error(e, source);\n }\n };\n\n // 数据渲染\n Class.prototype.render = function(data, callback){\n data = data || {};\n\n var that = this;\n var result = that.cache ? that.cache(data, tool) : that.parse(that.template, data);\n\n // 返回渲染结果\n typeof callback === 'function' && callback(result);\n return result;\n };\n\n // 创建实例\n var laytpl = function(template, options){\n return new Class(template, options);\n };\n\n // 配置全局属性\n laytpl.config = function(options){\n options = options || {};\n for(var i in options){\n config[i] = options[i];\n }\n };\n\n laytpl.v = '2.0.0';\n\n // export\n exports('laytpl', laytpl);\n});\n","/**\r\n * laypage 分页组件\r\n */\r\n\r\nlayui.define(function(exports){\r\n \"use strict\";\r\n \r\n var doc = document;\r\n var id = 'getElementById';\r\n var tag = 'getElementsByTagName';\r\n \r\n // 字符常量\r\n var MOD_NAME = 'laypage';\r\n var DISABLED = 'layui-disabled';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.config = options || {};\r\n that.config.index = ++laypage.index;\r\n that.render(true);\r\n };\r\n\r\n // 判断传入的容器类型\r\n Class.prototype.type = function(){\r\n var config = this.config;\r\n if(typeof config.elem === 'object'){\r\n return config.elem.length === undefined ? 2 : 3;\r\n }\r\n };\r\n\r\n // 分页视图\r\n Class.prototype.view = function(){\r\n var that = this;\r\n var config = that.config;\r\n\r\n // 连续页码个数\r\n var groups = config.groups = 'groups' in config \r\n ? (Number(config.groups) || 0)\r\n : 5; \r\n \r\n // 排版\r\n config.layout = typeof config.layout === 'object' \r\n ? config.layout \r\n : ['prev', 'page', 'next'];\r\n \r\n config.count = Number(config.count) || 0; // 数据总数\r\n config.curr = Number(config.curr) || 1; // 当前页\r\n\r\n // 每页条数的选择项\r\n config.limits = typeof config.limits === 'object'\r\n ? config.limits\r\n : [10, 20, 30, 40, 50];\r\n\r\n // 默认条数\r\n config.limit = Number(config.limit) || 10;\r\n \r\n // 总页数\r\n config.pages = Math.ceil(config.count/config.limit) || 1;\r\n \r\n // 当前页不能超过总页数\r\n if(config.curr > config.pages){\r\n config.curr = config.pages;\r\n } else if(config.curr < 1) { // 当前分页不能小于 1\r\n config.curr = 1;\r\n }\r\n \r\n // 连续分页个数不能低于 0 且不能大于总页数\r\n if(groups < 0){\r\n groups = 1;\r\n } else if (groups > config.pages){\r\n groups = config.pages;\r\n }\r\n \r\n config.prev = 'prev' in config ? config.prev : '上一页'; // 上一页文本\r\n config.next = 'next' in config ? config.next : '下一页'; // 下一页文本\r\n \r\n // 计算当前组\r\n var index = config.pages > groups \r\n ? Math.ceil( (config.curr + (groups > 1 ? 1 : 0)) / (groups > 0 ? groups : 1) )\r\n : 1;\r\n \r\n // 视图片段\r\n var views = {\r\n // 上一页\r\n prev: function(){\r\n return config.prev \r\n ? ''+ config.prev +''\r\n : '';\r\n }(),\r\n \r\n // 页码\r\n page: function(){\r\n var pager = [];\r\n \r\n // 数据量为0时,不输出页码\r\n if(config.count < 1){\r\n return '';\r\n }\r\n \r\n // 首页\r\n if(index > 1 && config.first !== false && groups !== 0){\r\n pager.push(''+ (config.first || 1) +'');\r\n }\r\n\r\n // 计算当前页码组的起始页\r\n var halve = Math.floor((groups-1)/2) // 页码数等分\r\n var start = index > 1 ? config.curr - halve : 1;\r\n var end = index > 1 ? (function(){\r\n var max = config.curr + (groups - halve - 1);\r\n return max > config.pages ? config.pages : max;\r\n }()) : groups;\r\n \r\n // 防止最后一组出现“不规定”的连续页码数\r\n if(end - start < groups - 1){\r\n start = end - groups + 1;\r\n }\r\n\r\n // 输出左分割符\r\n if(config.first !== false && start > 2){\r\n pager.push('')\r\n }\r\n \r\n // 输出连续页码\r\n for(; start <= end; start++){\r\n if(start === config.curr){\r\n // 当前页\r\n pager.push(''+ start +'');\r\n } else {\r\n pager.push(''+ start +'');\r\n }\r\n }\r\n \r\n // 输出输出右分隔符 & 末页\r\n if(config.pages > groups && config.pages > end && config.last !== false){\r\n if(end + 1 < config.pages){\r\n pager.push('');\r\n }\r\n if(groups !== 0){\r\n pager.push(''+ (config.last || config.pages) +'');\r\n }\r\n }\r\n\r\n return pager.join('');\r\n }(),\r\n \r\n // 下一页\r\n next: function(){\r\n return config.next \r\n ? ''+ config.next +''\r\n : '';\r\n }(),\r\n \r\n // 数据总数\r\n count: '共 '+ config.count +' 条',\r\n \r\n // 每页条数\r\n limit: function(){\r\n var elemArr = ['';\r\n }(),\r\n \r\n // 刷新当前页\r\n refresh: [\r\n '',\r\n '',\r\n ''\r\n ].join(''),\r\n\r\n // 跳页区域\r\n skip: function(){\r\n var skipText = typeof config.skipText === 'object' ? config.skipText : [\r\n '到第',\r\n '页',\r\n '确定'\r\n ];\r\n return [\r\n ''+ skipText[0],\r\n '',\r\n skipText[1]+ '',\r\n ''\r\n ].join('');\r\n }()\r\n };\r\n\r\n return ['
                    ',\r\n function(){\r\n var plate = [];\r\n layui.each(config.layout, function(index, item){\r\n if(views[item]){\r\n plate.push(views[item])\r\n }\r\n });\r\n return plate.join('');\r\n }(),\r\n '
                    '].join('');\r\n };\r\n\r\n // 跳页的回调\r\n Class.prototype.jump = function(elem, isskip){\r\n if(!elem) return;\r\n\r\n var that = this;\r\n var config = that.config;\r\n var childs = elem.children;\r\n var btn = elem[tag]('button')[0];\r\n var input = elem[tag]('input')[0];\r\n var select = elem[tag]('select')[0];\r\n var skip = function(){\r\n var curr = Number(input.value.replace(/\\s|\\D/g, ''));\r\n if(curr){\r\n config.curr = curr;\r\n that.render();\r\n }\r\n };\r\n \r\n if(isskip) return skip();\r\n \r\n // 页码\r\n for(var i = 0, len = childs.length; i < len; i++){\r\n if(childs[i].nodeName.toLowerCase() === 'a'){\r\n laypage.on(childs[i], 'click', function(){\r\n var curr = Number(this.getAttribute('data-page'));\r\n if(curr < 1 || curr > config.pages) return;\r\n config.curr = curr;\r\n that.render();\r\n });\r\n }\r\n }\r\n \r\n // 条数\r\n if(select){\r\n laypage.on(select, 'change', function(){\r\n var value = this.value;\r\n if(config.curr*value > config.count){\r\n config.curr = Math.ceil(config.count/value);\r\n }\r\n config.limit = value;\r\n that.render();\r\n });\r\n }\r\n \r\n // 确定\r\n if(btn){\r\n laypage.on(btn, 'click', function(){\r\n skip();\r\n });\r\n }\r\n };\r\n \r\n // 输入页数字控制\r\n Class.prototype.skip = function(elem){\r\n if(!elem) return;\r\n\r\n var that = this;\r\n var input = elem[tag]('input')[0];\r\n\r\n if(!input) return;\r\n\r\n // 键盘事件\r\n laypage.on(input, 'keyup', function(e){\r\n var value = this.value;\r\n var keyCode = e.keyCode;\r\n\r\n if(/^(37|38|39|40)$/.test(keyCode)) return;\r\n\r\n if(/\\D/.test(value)){\r\n this.value = value.replace(/\\D/, '');\r\n }\r\n if(keyCode === 13){\r\n that.jump(elem, true)\r\n }\r\n });\r\n };\r\n\r\n // 渲染分页\r\n Class.prototype.render = function(load){\r\n var that = this;\r\n var config = that.config;\r\n var type = that.type();\r\n var view = that.view();\r\n \r\n if(type === 2){\r\n config.elem && (config.elem.innerHTML = view);\r\n } else if(type === 3){\r\n config.elem.html(view);\r\n } else {\r\n if(doc[id](config.elem)){\r\n doc[id](config.elem).innerHTML = view;\r\n }\r\n }\r\n\r\n config.jump && config.jump(config, load);\r\n \r\n var elem = doc[id]('layui-laypage-' + config.index);\r\n that.jump(elem);\r\n \r\n if(config.hash && !load){\r\n location.hash = '!'+ config.hash +'='+ config.curr;\r\n }\r\n \r\n that.skip(elem);\r\n };\r\n \r\n // 外部接口\r\n var laypage = {\r\n // 分页渲染\r\n render: function(options){\r\n var o = new Class(options);\r\n return o.index;\r\n },\r\n index: layui.laypage ? (layui.laypage.index + 10000) : 0,\r\n on: function(elem, even, fn){\r\n elem.attachEvent ? elem.attachEvent('on'+ even, function(e){ // for ie\r\n e.target = e.srcElement;\r\n fn.call(elem, e);\r\n }) : elem.addEventListener(even, fn, false);\r\n return this;\r\n }\r\n }\r\n\r\n exports(MOD_NAME, laypage);\r\n});\r\n","/** laydate 日期与时间控件 | MIT Licensed */\r\n\r\n;!function(window, document){ // gulp build: laydate-header\r\n \"use strict\";\r\n\r\n var isLayui = window.layui && layui.define, ready = {\r\n getPath: (window.lay && lay.getPath) ? lay.getPath : ''\r\n \r\n // 载入 CSS 依赖\r\n ,link: function(href, fn, cssname){\r\n \r\n // 未设置路径,则不主动加载 css\r\n if(!laydate.path) return;\r\n \r\n // 加载 css\r\n if(window.lay && lay.layui){\r\n lay.layui.link(laydate.path + href, fn, cssname);\r\n }\r\n }\r\n };\r\n \r\n // 识别预先可能定义的指定全局对象\r\n var GLOBAL = window.LAYUI_GLOBAL || {};\r\n\r\n // 模块名\r\n var MOD_NAME = 'laydate';\r\n var MOD_ID = 'layui-'+ MOD_NAME +'-id' // 已渲染过的索引标记名\r\n \r\n // 外部调用\r\n var laydate = {\r\n v: '5.5.0' // layDate 版本号\r\n ,config: {\r\n weekStart: 0, // 默认周日一周的开始\r\n } // 全局配置项\r\n ,index: (window.laydate && window.laydate.v) ? 100000 : 0\r\n ,path: GLOBAL.laydate_dir || ready.getPath\r\n \r\n // 设置全局项\r\n ,set: function(options){\r\n var that = this;\r\n that.config = lay.extend({}, that.config, options);\r\n return that;\r\n }\r\n \r\n // 主体 CSS 等待事件\r\n ,ready: function(callback){\r\n var cssname = 'laydate';\r\n var ver = ''\r\n var path = (isLayui ? 'modules/' : '') + 'laydate.css?v='+ laydate.v + ver;\r\n\r\n isLayui ? (\r\n layui['layui.all'] \r\n ? (typeof callback === 'function' && callback()) \r\n : layui.addcss(path, callback, cssname)\r\n ) : ready.link(path, callback, cssname);\r\n\r\n return this;\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return that.inst = {\r\n // 提示框\r\n hint: function(content){\r\n that.hint.call(that, content);\r\n },\r\n // 重载实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n config: that.config\r\n };\r\n };\r\n\r\n // 字符常量\r\n var MOD_NAME = 'laydate';\r\n var ELEM = '.layui-laydate';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'laydate-disabled';\r\n var LIMIT_YEAR = [100, 200000];\r\n \r\n var ELEM_STATIC = 'layui-laydate-static';\r\n var ELEM_LIST = 'layui-laydate-list';\r\n var ELEM_SELECTED = 'laydate-selected';\r\n var ELEM_HINT = 'layui-laydate-hint';\r\n var ELEM_DAY_NOW = 'laydate-day-now';\r\n var ELEM_PREV = 'laydate-day-prev';\r\n var ELEM_NEXT = 'laydate-day-next';\r\n var ELEM_FOOTER = 'layui-laydate-footer';\r\n var ELEM_SHORTCUT = 'layui-laydate-shortcut';\r\n var ELEM_NOW = '.laydate-btns-now'\r\n var ELEM_CONFIRM = '.laydate-btns-confirm';\r\n var ELEM_TIME_TEXT = 'laydate-time-text';\r\n var ELEM_TIME_BTN = 'laydate-btns-time';\r\n var ELEM_PREVIEW = 'layui-laydate-preview';\r\n var ELEM_MAIN = 'layui-laydate-main';\r\n var ELEM_SHADE = 'layui-laydate-shade';\r\n\r\n // 组件构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++laydate.index;\r\n that.config = lay.extend({}, that.config, laydate.config, options);\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = lay(options.elem || that.config.elem);\r\n if(elem.length > 1){\r\n lay.each(elem, function(){\r\n laydate.render(lay.extend({}, that.config, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n \r\n // 初始化属性\r\n options = lay.extend(that.config, lay.options(elem[0])); // 继承节点上的属性\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if(elem[0] && elem.attr(MOD_ID)){\r\n var newThat = thisModule.getThis(elem.attr(MOD_ID));\r\n if(!newThat) return;\r\n return newThat.reload(options);\r\n }\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n // 自增索引\r\n options.index = that.index;\r\n \r\n // 初始化\r\n laydate.ready(function(){\r\n that.init();\r\n });\r\n };\r\n \r\n // 日期格式字符\r\n var dateType = 'yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s';\r\n \r\n // 将日期格式字符转换为数组\r\n thisModule.formatArr = function(format){\r\n return (format || '').match(new RegExp(dateType + '|.', 'g')) || []\r\n };\r\n \r\n /*\r\n 组件操作\r\n */\r\n \r\n // 是否闰年\r\n Class.isLeapYear = function(year){\r\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n type: 'date' //控件类型,支持:year/month/date/time/datetime\r\n ,range: false //是否开启范围选择,即双控件\r\n ,format: 'yyyy-MM-dd' //默认日期格式\r\n ,value: null //默认日期,支持传入new Date(),或者符合format参数设定的日期格式字符\r\n ,isInitValue: true //用于控制是否自动向元素填充初始值(需配合 value 参数使用)\r\n ,min: '1900-1-1' //有效最小日期,年月日必须用“-”分割,时分秒必须用“:”分割。注意:它并不是遵循 format 设定的格式。\r\n ,max: '2099-12-31' //有效最大日期,同上\r\n ,trigger: 'click' //呼出控件的事件\r\n ,show: false //是否直接显示,如果设置 true,则默认直接显示控件\r\n ,showBottom: true //是否显示底部栏\r\n ,isPreview: true //是否显示值预览\r\n ,btns: ['clear', 'now', 'confirm'] //右下角显示的按钮,会按照数组顺序排列\r\n ,lang: 'cn' //语言,只支持cn/en,即中文和英文\r\n ,theme: 'default' //主题\r\n ,position: null //控件定位方式定位, 默认absolute,支持:fixed/absolute/static\r\n ,calendar: false //是否开启公历重要节日,仅支持中文版\r\n ,mark: {} //日期备注,如重要事件或活动标记\r\n ,holidays: null // 标注法定节假日或补假上班\r\n ,zIndex: null //控件层叠顺序\r\n ,done: null //控件选择完毕后的回调,点击清空/现在/确定也均会触发\r\n ,change: null //日期时间改变后的回调\r\n ,autoConfirm: true //是否自动确认(日期|年份|月份选择器非range下是否自动确认)\r\n ,shade: 0\r\n };\r\n \r\n //多语言\r\n Class.prototype.lang = function(){\r\n var that = this\r\n ,options = that.config\r\n ,text = {\r\n cn: {\r\n weeks: ['日', '一', '二', '三', '四', '五', '六']\r\n ,time: ['时', '分', '秒']\r\n ,timeTips: '选择时间'\r\n ,startTime: '开始时间'\r\n ,endTime: '结束时间'\r\n ,dateTips: '返回日期'\r\n ,month: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二']\r\n ,tools: {\r\n confirm: '确定'\r\n ,clear: '清空'\r\n ,now: '现在'\r\n }\r\n ,timeout: '结束时间不能早于开始时间
                    请重新选择'\r\n ,invalidDate: '不在有效日期或时间范围内'\r\n ,formatError: ['日期格式不合法
                    必须遵循下述格式:
                    ', '
                    已为你重置']\r\n ,preview: '当前选中的结果'\r\n }\r\n ,en: {\r\n weeks: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\r\n ,time: ['Hours', 'Minutes', 'Seconds']\r\n ,timeTips: 'Select Time'\r\n ,startTime: 'Start Time'\r\n ,endTime: 'End Time'\r\n ,dateTips: 'Select Date'\r\n ,month: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\r\n ,tools: {\r\n confirm: 'Confirm'\r\n ,clear: 'Clear'\r\n ,now: 'Now'\r\n }\r\n ,timeout: 'End time cannot be less than start Time
                    Please re-select'\r\n ,invalidDate: 'Invalid date'\r\n ,formatError: ['The date format error
                    Must be followed:
                    ', '
                    It has been reset']\r\n ,preview: 'The selected result'\r\n }\r\n };\r\n return text[options.lang] || text['cn'];\r\n };\r\n\r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = lay.extend({}, that.config, options);\r\n that.init();\r\n };\r\n \r\n //初始准备\r\n Class.prototype.init = function(){\r\n var that = this\r\n ,options = that.config\r\n ,isStatic = options.position === 'static'\r\n ,format = {\r\n year: 'yyyy'\r\n ,month: 'yyyy-MM'\r\n ,date: 'yyyy-MM-dd'\r\n ,time: 'HH:mm:ss'\r\n ,datetime: 'yyyy-MM-dd HH:mm:ss'\r\n };\r\n \r\n options.elem = lay(options.elem);\r\n options.eventElem = lay(options.eventElem);\r\n \r\n if(!options.elem[0]) return;\r\n\r\n layui.type(options.theme) !== 'array' && (options.theme = [options.theme]);\r\n // 设置了全面版模式\r\n if (options.fullPanel) {\r\n if (options.type !== 'datetime' || options.range) {\r\n // 目前只支持datetime的全面版\r\n delete options.fullPanel;\r\n }\r\n }\r\n\r\n //日期范围分隔符\r\n that.rangeStr = options.range ? (\r\n typeof options.range === 'string' ? options.range : '-'\r\n ) : '';\r\n\r\n //日期范围的日历面板是否联动\r\n that.rangeLinked = !!(options.range && options.rangeLinked && (options.type === 'date' || options.type === 'datetime'))\r\n\r\n //切换日历联动方式\r\n that.autoCalendarModel = function () {\r\n var state = that.rangeLinked;\r\n that.rangeLinked = (options.range && (options.type === 'date' || options.type === 'datetime'))\r\n && ((!that.startDate || !that.endDate) || (that.startDate && that.endDate && that.startDate.year === that.endDate.year && that.startDate.month === that.endDate.month));\r\n lay(that.elem)[that.rangeLinked ? 'addClass' : 'removeClass']('layui-laydate-linkage');\r\n return that.rangeLinked != state; // 返回发生了变化\r\n };\r\n\r\n //是否自动切换\r\n that.autoCalendarModel.auto = that.rangeLinked && options.rangeLinked === 'auto';\r\n\r\n //若 range 参数为数组,则表示为开始日期和结束日期的 input 对象\r\n if(layui.type(options.range) === 'array'){\r\n that.rangeElem = [\r\n lay(options.range[0]),\r\n lay(options.range[1])\r\n ];\r\n }\r\n \r\n //若 type 设置非法,则初始化为 date 类型\r\n if(!format[options.type]){\r\n window.console && console.error && console.error('laydate type error:\\''+ options.type + '\\' is not supported')\r\n options.type = 'date';\r\n }\r\n \r\n //根据不同 type,初始化默认 format\r\n if(options.format === format.date){\r\n options.format = format[options.type] || format.date;\r\n }\r\n \r\n //将日期格式转化成数组\r\n that.format = thisModule.formatArr(options.format);\r\n\r\n // 设置了一周的开始是周几,此处做一个控制\r\n if (options.weekStart) {\r\n if (!/^[0-6]$/.test(options.weekStart)) {\r\n var lang = that.lang();\r\n options.weekStart = lang.weeks.indexOf(options.weekStart);\r\n if (options.weekStart === -1) options.weekStart = 0;\r\n }\r\n }\r\n\r\n //生成正则表达式\r\n that.EXP_IF = ''; \r\n that.EXP_SPLIT = ''; \r\n lay.each(that.format, function(i, item){\r\n var EXP = new RegExp(dateType).test(item) \r\n ? '\\\\d{'+ function(){\r\n if(new RegExp(dateType).test(that.format[i === 0 ? i + 1 : i - 1]||'')){\r\n if(/^yyyy|y$/.test(item)) return 4;\r\n return item.length;\r\n }\r\n if(/^yyyy$/.test(item)) return '1,4';\r\n if(/^y$/.test(item)) return '1,308';\r\n return '1,2';\r\n }() +'}' \r\n : '\\\\' + item;\r\n that.EXP_IF = that.EXP_IF + EXP;\r\n that.EXP_SPLIT = that.EXP_SPLIT + '(' + EXP + ')';\r\n });\r\n //验证日期格式正则\r\n that.EXP_IF_ONE = new RegExp('^'+ that.EXP_IF +'$'); //验证单个日期格式\r\n that.EXP_IF = new RegExp('^'+ (\r\n options.range ? \r\n that.EXP_IF + '\\\\s\\\\'+ that.rangeStr + '\\\\s' + that.EXP_IF\r\n : that.EXP_IF\r\n ) +'$');\r\n that.EXP_SPLIT = new RegExp('^'+ that.EXP_SPLIT +'$', '');\r\n \r\n //如果不是 input|textarea 元素,则默认采用 click 事件\r\n if(!that.isInput(options.elem[0])){\r\n if(options.trigger === 'focus'){\r\n options.trigger = 'click';\r\n }\r\n }\r\n \r\n // 设置唯一 KEY\r\n options.elem.attr('lay-key', that.index);\r\n options.eventElem.attr('lay-key', that.index);\r\n options.elem.attr(MOD_ID, options.id); // 渲染过的标记\r\n\r\n //记录重要日期\r\n options.mark = lay.extend({}, (options.calendar && options.lang === 'cn') ? {\r\n '0-1-1': '元旦'\r\n ,'0-2-14': '情人'\r\n ,'0-3-8': '妇女'\r\n ,'0-3-12': '植树'\r\n ,'0-4-1': '愚人'\r\n ,'0-5-1': '劳动'\r\n ,'0-5-4': '青年'\r\n ,'0-6-1': '儿童'\r\n ,'0-9-10': '教师'\r\n ,'0-10-1': '国庆'\r\n ,'0-12-25': '圣诞'\r\n } : {}, options.mark);\r\n \r\n //获取限制内日期\r\n lay.each(['min', 'max'], function(i, item){\r\n var ymd = [];\r\n var hms = [];\r\n if(typeof options[item] === 'number'){ //如果为数字\r\n var day = options[item]\r\n ,tDate = new Date()\r\n ,time = that.newDate({ //今天的最大毫秒数\r\n year: tDate.getFullYear()\r\n ,month: tDate.getMonth()\r\n ,date: tDate.getDate()\r\n ,hours: i ? 23 : 0\r\n ,minutes: i ? 59 : 0\r\n ,seconds: i ? 59 : 0\r\n }).getTime() \r\n ,STAMP = 86400000 //代表一天的毫秒数\r\n ,thisDate = new Date(\r\n day ? (\r\n day < STAMP ? time + day*STAMP : day //如果数字小于一天的毫秒数,则数字为天数,否则为毫秒数\r\n ) : time\r\n );\r\n ymd = [thisDate.getFullYear(), thisDate.getMonth() + 1, thisDate.getDate()];\r\n hms = [thisDate.getHours(), thisDate.getMinutes(), thisDate.getSeconds()];\r\n } else if(typeof options[item] === 'string') {\r\n ymd = (options[item].match(/\\d+-\\d+-\\d+/) || [''])[0].split('-');\r\n hms = (options[item].match(/\\d+:\\d+:\\d+/) || [''])[0].split(':');\r\n } else if(typeof options[item] === 'object'){\r\n return options[item];\r\n }\r\n options[item] = {\r\n year: ymd[0] | 0 || new Date().getFullYear()\r\n ,month: ymd[1] ? (ymd[1] | 0) - 1 : new Date().getMonth()\r\n ,date: ymd[2] | 0 || new Date().getDate()\r\n ,hours: hms[0] | 0\r\n ,minutes: hms[1] | 0\r\n ,seconds: hms[2] | 0\r\n };\r\n });\r\n \r\n that.elemID = 'layui-laydate'+ options.elem.attr('lay-key');\r\n \r\n if(options.show || isStatic) that.render();\r\n isStatic || that.events();\r\n \r\n //默认赋值\r\n if(options.value && options.isInitValue){\r\n if(layui.type(options.value) === 'date'){\r\n that.setValue(that.parse(0, that.systemDate(options.value))); \r\n } else {\r\n that.setValue(options.value); \r\n }\r\n }\r\n };\r\n \r\n //控件主体渲染\r\n Class.prototype.render = function(){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,isStatic = options.position === 'static'\r\n \r\n //主面板\r\n ,elem = that.elem = lay.elem('div', {\r\n id: that.elemID\r\n ,\"class\": [\r\n 'layui-laydate'\r\n ,options.range ? ' layui-laydate-range' : ''\r\n ,that.rangeLinked ? ' layui-laydate-linkage' : ''\r\n ,isStatic ? (' '+ ELEM_STATIC) : ''\r\n ,options.fullPanel ? ' laydate-theme-fullpanel' : '' // 全面版\r\n // ,options.theme && options.theme !== 'default' && !/^#/.test(options.theme) ? (' laydate-theme-' + options.theme) : ''\r\n ,(function () {\r\n var themeStr = '';\r\n lay.each(options.theme, function (index, theme) {\r\n if (theme !== 'default' && !/^#/.test(theme)) {\r\n themeStr += ' laydate-theme-' + theme;\r\n }\r\n })\r\n return themeStr;\r\n })()\r\n ].join('')\r\n })\r\n \r\n //主区域\r\n ,elemMain = that.elemMain = []\r\n ,elemHeader = that.elemHeader = []\r\n ,elemCont = that.elemCont = []\r\n ,elemTable = that.table = []\r\n\r\n //底部区域\r\n ,divFooter = that.footer = lay.elem('div', {\r\n \"class\": ELEM_FOOTER\r\n })\r\n\r\n //快捷栏\r\n ,divShortcut = that.shortcut = lay.elem('ul', {\r\n \"class\": ELEM_SHORTCUT\r\n });\r\n \r\n if(options.zIndex) elem.style.zIndex = options.zIndex;\r\n \r\n //单双日历区域\r\n lay.each(new Array(2), function(i){\r\n if(!options.range && i > 0){\r\n return true;\r\n }\r\n\r\n //头部区域\r\n var divHeader = lay.elem('div', {\r\n \"class\": 'layui-laydate-header'\r\n })\r\n \r\n //左右切换\r\n ,headerChild = [function(){ //上一年\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-prev-y'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //上一月\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-prev-m'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //年月选择\r\n var elem = lay.elem('div', {\r\n \"class\": 'laydate-set-ym'\r\n }), spanY = lay.elem('span'), spanM = lay.elem('span');\r\n elem.appendChild(spanY);\r\n elem.appendChild(spanM);\r\n return elem;\r\n }(), function(){ //下一月\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-next-m'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //下一年\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-next-y'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }()]\r\n \r\n //日历内容区域\r\n ,divContent = lay.elem('div', {\r\n \"class\": 'layui-laydate-content'\r\n })\r\n ,table = lay.elem('table')\r\n ,thead = lay.elem('thead'), theadTr = lay.elem('tr');\r\n \r\n //生成年月选择\r\n lay.each(headerChild, function(i, item){\r\n divHeader.appendChild(item);\r\n });\r\n \r\n //生成表格\r\n thead.appendChild(theadTr);\r\n lay.each(new Array(6), function(i){ //表体\r\n var tr = table.insertRow(0);\r\n lay.each(new Array(7), function(j){\r\n if(i === 0){\r\n var th = lay.elem('th');\r\n th.innerHTML = lang.weeks[(j + options.weekStart) % 7];\r\n theadTr.appendChild(th);\r\n }\r\n tr.insertCell(j);\r\n });\r\n });\r\n table.insertBefore(thead, table.children[0]); //表头\r\n divContent.appendChild(table);\r\n \r\n elemMain[i] = lay.elem('div', {\r\n \"class\": ELEM_MAIN + ' laydate-main-list-'+ i\r\n });\r\n \r\n elemMain[i].appendChild(divHeader);\r\n elemMain[i].appendChild(divContent);\r\n \r\n elemHeader.push(headerChild);\r\n elemCont.push(divContent);\r\n elemTable.push(table);\r\n });\r\n \r\n //生成底部栏\r\n lay(divFooter).html(function(){\r\n var html = [], btns = [];\r\n if(options.type === 'datetime'){\r\n html.push(''+ lang.timeTips +'');\r\n }\r\n if(!(!options.range && options.type === 'datetime') || options.fullPanel){\r\n html.push('')\r\n }\r\n \r\n lay.each(options.btns, function(i, item){\r\n var title = lang.tools[item] || 'btn';\r\n if(options.range && item === 'now') return;\r\n if(isStatic && item === 'clear') title = options.lang === 'cn' ? '重置' : 'Reset';\r\n btns.push(''+ title +'');\r\n });\r\n html.push('');\r\n return html.join('');\r\n }());\r\n\r\n // 生成快捷键栏\r\n if (options.shortcuts) {\r\n elem.appendChild(divShortcut);\r\n lay(divShortcut).html(function () {\r\n var shortcutBtns = [];\r\n lay.each(options.shortcuts, function (i, item) {\r\n shortcutBtns.push('
                  • '+item.text+'
                  • ')\r\n })\r\n return shortcutBtns.join('');\r\n }()).find('li').on('click', function (event) {\r\n var btnSetting = options.shortcuts[this.dataset['index']] || {};\r\n var value = (typeof btnSetting.value === 'function'\r\n ? btnSetting.value() \r\n : btnSetting.value) || [];\r\n if (!layui.isArray(value)) {\r\n value = [value];\r\n }\r\n var type = options.type;\r\n lay.each(value, function (i, item) {\r\n var dateTime = [options.dateTime, that.endDate][i];\r\n if (type === 'time' && layui.type(item) !== 'date') {\r\n if (that.EXP_IF.test(item)) {\r\n item = (item.match(that.EXP_SPLIT) || []).slice(1);\r\n lay.extend(dateTime, {hours: item[0] | 0, minutes: item[2] | 0, seconds: item[4] | 0})\r\n }\r\n } else {\r\n lay.extend(dateTime, that.systemDate(layui.type(item) === 'date' ? item : new Date(item)))\r\n }\r\n\r\n if (type === 'time' || type === 'datetime') {\r\n that[['startTime', 'endTime'][i]] = {\r\n hours: dateTime.hours,\r\n minutes: dateTime.minutes,\r\n seconds: dateTime.seconds,\r\n }\r\n }\r\n if (i === 0) { // 第一个值作为startDate\r\n that.startDate = lay.extend({}, dateTime);\r\n } else {\r\n that.endState = true;\r\n }\r\n if (type === 'year' || type === 'month' || type === 'time') {\r\n that.listYM[i] = [dateTime.year, dateTime.month + 1];\r\n } else if (i) {\r\n that.autoCalendarModel.auto && that.autoCalendarModel();\r\n }\r\n });\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n\r\n var timeBtn = lay(that.footer).find('.'+ ELEM_TIME_BTN).removeClass(DISABLED);\r\n timeBtn && timeBtn.attr('lay-type') === 'date' && timeBtn[0].click();\r\n that.done(null, 'change');\r\n\r\n lay(this).addClass(THIS);\r\n\r\n // 自动确认\r\n if(options.position !== 'static'){\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n /*\r\n if (options.position !== 'static' && !options.range && options.autoConfirm) {\r\n if (type === 'date') {\r\n that.choose(lay(elem).find('td.layui-this'))\r\n } else if (type === 'year' || type === 'month') {\r\n if(lay(elemMain[0]).find('.' + ELEM_MAIN + ' li.' + THIS + ':not(.laydate-disabled)')[0]) {\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n }\r\n }\r\n */\r\n })\r\n }\r\n\r\n //插入到主区域\r\n lay.each(elemMain, function(i, main){\r\n elem.appendChild(main);\r\n });\r\n options.showBottom && elem.appendChild(divFooter);\r\n \r\n // 生成自定义主题\r\n var style = lay.elem('style');\r\n var styleText = [];\r\n var colorTheme;\r\n var isPrimaryColor = true;\r\n lay.each(options.theme, function (index, theme) {\r\n // 主色\r\n if(isPrimaryColor && /^#/.test(theme)){\r\n colorTheme = true;\r\n isPrimaryColor = false;\r\n styleText.push([\r\n '#{{id}} .layui-laydate-header{background-color:{{theme}};}',\r\n '#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}',\r\n options.theme.indexOf('circle') !== -1 ? '' : '#{{id}} .layui-this{background-color:{{theme}} !important;}',\r\n '#{{id}} .laydate-day-now{color:{{theme}} !important;}',\r\n '#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}'\r\n ].join('').replace(/{{id}}/g, that.elemID).replace(/{{theme}}/g, theme));\r\n return;\r\n }\r\n // 第二个自定义颜色作为辅色\r\n if(!isPrimaryColor && /^#/.test(theme)){\r\n styleText.push([\r\n '#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}',\r\n '#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}'\r\n ].join('').replace(/{{id}}/g, that.elemID).replace(/{{theme}}/g, theme));\r\n }\r\n });\r\n //快捷栏样式\r\n if (options.shortcuts && options.range) {\r\n styleText.push('#{{id}}.layui-laydate-range{width: 628px;}'.replace(/{{id}}/g, that.elemID))\r\n }\r\n if (styleText.length) {\r\n styleText = styleText.join('');\r\n if('styleSheet' in style){\r\n style.setAttribute('type', 'text/css');\r\n style.styleSheet.cssText = styleText;\r\n } else {\r\n style.innerHTML = styleText;\r\n }\r\n\r\n colorTheme && lay(elem).addClass('laydate-theme-molv');\r\n elem.appendChild(style);\r\n }\r\n\r\n //移除上一个控件\r\n that.remove(Class.thisElemDate);\r\n\r\n //记录当前执行的实例索引\r\n laydate.thisId = options.id;\r\n\r\n //如果是静态定位,则插入到指定的容器中,否则,插入到body\r\n isStatic ? options.elem.append(elem) : (\r\n document.body.appendChild(elem)\r\n ,that.position() //定位\r\n );\r\n \r\n var shade = options.shade ? ('
                    ') : '';\r\n elem.insertAdjacentHTML('beforebegin', shade);\r\n\r\n that.checkDate().calendar(null, 0, 'init'); //初始校验\r\n that.changeEvent(); //日期切换\r\n \r\n Class.thisElemDate = that.elemID;\r\n\r\n that.renderAdditional()\r\n typeof options.ready === 'function' && options.ready(lay.extend({}, options.dateTime, {\r\n month: options.dateTime.month + 1\r\n }));\r\n \r\n that.preview();\r\n };\r\n \r\n //控件移除\r\n Class.prototype.remove = function(prev){\r\n var that = this\r\n ,options = that.config\r\n ,elem = lay('#'+ (prev || that.elemID));\r\n if(!elem[0]) return that;\r\n \r\n if(!elem.hasClass(ELEM_STATIC)){\r\n that.checkDate(function(){\r\n elem.remove();\r\n //delete options.dateTime;\r\n delete that.startDate;\r\n delete that.endDate;\r\n delete that.endState;\r\n delete that.startTime;\r\n delete that.endTime;\r\n delete laydate.thisId;\r\n typeof options.close === 'function' && options.close(that);\r\n });\r\n }\r\n lay('.' + ELEM_SHADE).remove();\r\n return that;\r\n };\r\n \r\n //定位算法\r\n Class.prototype.position = function(){\r\n var that = this\r\n ,options = that.config;\r\n lay.position(options.elem[0], that.elem, {\r\n position: options.position\r\n });\r\n return that;\r\n };\r\n \r\n // 提示\r\n Class.prototype.hint = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n var div = lay.elem('div', {\r\n \"class\": ELEM_HINT\r\n });\r\n \r\n if(!that.elem) return;\r\n\r\n // 兼容旧版参数\r\n if(typeof opts === 'object'){\r\n opts = opts || {};\r\n } else {\r\n opts = {\r\n content: opts\r\n }\r\n }\r\n \r\n div.innerHTML = opts.content || '';\r\n lay(that.elem).find('.'+ ELEM_HINT).remove();\r\n that.elem.appendChild(div);\r\n\r\n clearTimeout(that.hinTimer);\r\n that.hinTimer = setTimeout(function(){\r\n lay(that.elem).find('.'+ ELEM_HINT).remove();\r\n }, 'ms' in opts ? opts.ms : 3000);\r\n };\r\n \r\n //获取递增/减后的年月\r\n Class.prototype.getAsYM = function(Y, M, type){\r\n type ? M-- : M++;\r\n if(M < 0){\r\n M = 11;\r\n Y--;\r\n }\r\n if(M > 11){\r\n M = 0;\r\n Y++;\r\n }\r\n return [Y, M];\r\n };\r\n \r\n //系统日期\r\n Class.prototype.systemDate = function(newDate){\r\n var thisDate = newDate || new Date();\r\n return {\r\n year: thisDate.getFullYear() //年\r\n ,month: thisDate.getMonth() //月\r\n ,date: thisDate.getDate() //日\r\n ,hours: newDate ? newDate.getHours() : 0 //时\r\n ,minutes: newDate ? newDate.getMinutes() : 0 //分\r\n ,seconds: newDate ? newDate.getSeconds() : 0 //秒\r\n }\r\n };\r\n \r\n //日期校验\r\n Class.prototype.checkDate = function(fn){\r\n var that = this\r\n ,thisDate = new Date()\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,dateTime = options.dateTime = options.dateTime || that.systemDate()\r\n ,thisMaxDate, error\r\n \r\n ,elem = options.elem[0]\r\n ,valType = that.isInput(elem) ? 'val' : 'html'\r\n ,value = function(){\r\n //如果传入了开始和结束日期的 input 对象,则将其拼接为日期范围字符\r\n if(that.rangeElem){\r\n var vals = [that.rangeElem[0].val(), that.rangeElem[1].val()];\r\n\r\n if(vals[0] && vals[1]){\r\n return vals.join(' ' + that.rangeStr + ' ');\r\n }\r\n }\r\n return that.isInput(elem) \r\n ? elem.value \r\n : (options.position === 'static' ? '' : lay(elem).attr('lay-date'));\r\n }()\r\n \r\n //校验日期有效数字\r\n ,checkValid = function(dateTime){\r\n if (!dateTime) {\r\n return;\r\n }\r\n if(dateTime.year > LIMIT_YEAR[1]) dateTime.year = LIMIT_YEAR[1], error = true; //不能超过20万年\r\n if(dateTime.month > 11) dateTime.month = 11, error = true;\r\n if(dateTime.seconds > 59) dateTime.seconds = 0, dateTime.minutes++, error = true;\r\n if(dateTime.minutes > 59) dateTime.minutes = 0, dateTime.hours++, error = true;\r\n if(dateTime.hours > 23) dateTime.hours = 0, error = true;\r\n\r\n //计算当前月的最后一天\r\n thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year);\r\n if(dateTime.date > thisMaxDate) dateTime.date = thisMaxDate, error = true;\r\n }\r\n \r\n //获得初始化日期值\r\n ,initDate = function(dateTime, value, index){\r\n var startEnd = ['startTime', 'endTime'];\r\n value = (value.match(that.EXP_SPLIT) || []).slice(1);\r\n index = index || 0;\r\n \r\n if(options.range){\r\n that[startEnd[index]] = that[startEnd[index]] || {};\r\n }\r\n lay.each(that.format, function(i, item){\r\n var thisv = parseFloat(value[i]);\r\n if(value[i].length < item.length) error = true;\r\n if(/yyyy|y/.test(item)){ //年\r\n if(thisv < LIMIT_YEAR[0]) thisv = LIMIT_YEAR[0], error = true; //年不能低于100年\r\n dateTime.year = thisv;\r\n } else if(/MM|M/.test(item)){ //月\r\n if(thisv < 1) thisv = 1, error = true;\r\n dateTime.month = thisv - 1;\r\n } else if(/dd|d/.test(item)){ //日\r\n if(thisv < 1) thisv = 1, error = true;\r\n dateTime.date = thisv;\r\n } else if(/HH|H/.test(item)){ //时\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 23) thisv = 23, error = true;\r\n dateTime.hours = thisv;\r\n options.range && (that[startEnd[index]].hours = thisv);\r\n } else if(/mm|m/.test(item)){ //分\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 59) thisv = 59, error = true;\r\n dateTime.minutes = thisv;\r\n options.range && (that[startEnd[index]].minutes = thisv);\r\n } else if(/ss|s/.test(item)){ //秒\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 59) thisv = 59, error = true;\r\n dateTime.seconds = thisv;\r\n options.range && (that[startEnd[index]].seconds = thisv);\r\n }\r\n });\r\n checkValid(dateTime);\r\n };\r\n \r\n if(fn === 'limit') {\r\n if (options.range) {\r\n checkValid(that.rangeLinked ? that.startDate : dateTime); // 校验开始时间\r\n that.endDate && checkValid(that.endDate); // 校验结束时间\r\n } else {\r\n checkValid(dateTime);\r\n }\r\n return that;\r\n }\r\n \r\n value = value || options.value;\r\n if(typeof value === 'string'){\r\n value = value.replace(/\\s+/g, ' ').replace(/^\\s|\\s$/g, '');\r\n }\r\n\r\n //如果开启范围,则计算结束日期\r\n var getEndDate = function(){\r\n if(options.range){\r\n that.endDate = that.endDate || lay.extend({}, options.dateTime, function(){\r\n var obj = {}\r\n ,dateTime = options.dateTime\r\n ,EYM = that.getAsYM(dateTime.year, dateTime.month);\r\n \r\n //初始右侧面板的年月\r\n if(options.type === 'year'){\r\n obj.year = dateTime.year + 1;\r\n } else if(options.type !== 'time'){\r\n obj.year = EYM[0];\r\n obj.month = EYM[1];\r\n }\r\n \r\n //初始右侧面板的时间\r\n if(options.type === 'datetime' || options.type === 'time'){\r\n obj.hours = 23;\r\n obj.minutes = obj.seconds = 59;\r\n }\r\n \r\n return obj;\r\n }());\r\n }\r\n };\r\n getEndDate();\r\n \r\n if(typeof value === 'string' && value){\r\n if(that.EXP_IF.test(value)){ //校验日期格式\r\n if(options.range){\r\n value = value.split(' '+ that.rangeStr +' ');\r\n lay.each([options.dateTime, that.endDate], function(i, item){\r\n initDate(item, value[i], i);\r\n });\r\n } else {\r\n initDate(dateTime, value);\r\n }\r\n } else {\r\n //格式不合法\r\n that.hint(lang.formatError[0] + (\r\n options.range ? (options.format + ' '+ that.rangeStr +' ' + options.format) : options.format\r\n ) + lang.formatError[1]);\r\n error = true;\r\n }\r\n } else if(value && layui.type(value) === 'date'){ //若值为日期对象\r\n options.dateTime = that.systemDate(value);\r\n } else {\r\n //重置开始日期\r\n options.dateTime = that.systemDate();\r\n delete that.startTime;\r\n \r\n //重置结束日期\r\n delete that.endDate; //删除原有的结束日期\r\n getEndDate(); //并重新获得新的结束日期\r\n delete that.endTime;\r\n }\r\n \r\n //从日期范围表单中获取初始值\r\n (function(){\r\n if(that.rangeElem){\r\n var vals = [that.rangeElem[0].val(), that.rangeElem[1].val()]\r\n ,arrDate = [options.dateTime, that.endDate];\r\n lay.each(vals, function(_i, _v){\r\n if(that.EXP_IF_ONE.test(_v)){ //校验日期格式\r\n initDate(arrDate[_i], _v, _i);\r\n }\r\n });\r\n }\r\n })();\r\n \r\n // 校验日期有效数字\r\n checkValid(dateTime);\r\n if(options.range) checkValid(that.endDate);\r\n\r\n // 如果初始值格式错误,则纠正初始值\r\n if(error && value){\r\n that.setValue(\r\n options.range ? (that.endDate ? that.parse() : '') : that.parse()\r\n );\r\n }\r\n \r\n //如果当前日期不在设定的最大小日期区间,则自动纠正在可选区域\r\n //校验主面板是否在可选日期区间\r\n var minMaxError;\r\n if(that.getDateTime(dateTime) > that.getDateTime(options.max)){ //若超出最大日期\r\n dateTime = options.dateTime = lay.extend({}, options.max);\r\n minMaxError = true;\r\n } else if(that.getDateTime(dateTime) < that.getDateTime(options.min)){ //若少于最小日期\r\n dateTime = options.dateTime = lay.extend({}, options.min);\r\n minMaxError = true;\r\n }\r\n \r\n //校验右侧面板是否在可选日期区间\r\n if(options.range){\r\n if(that.getDateTime(that.endDate) < that.getDateTime(options.min) || that.getDateTime(that.endDate) > that.getDateTime(options.max)){\r\n that.endDate = lay.extend({}, options.max);\r\n minMaxError = true;\r\n }\r\n // 有时间范围的情况下初始化startTime和endTime\r\n that.startTime = {\r\n hours: options.dateTime.hours,\r\n minutes: options.dateTime.minutes,\r\n seconds: options.dateTime.seconds,\r\n }\r\n that.endTime = {\r\n hours: that.endDate.hours,\r\n minutes: that.endDate.minutes,\r\n seconds: that.endDate.seconds,\r\n }\r\n // 如果是年月范围,将对应的日期统一成当月的1日进行比较,避免出现同一个月但是开始日期大于结束日期的情况\r\n if (options.type === 'month') {\r\n options.dateTime.date = 1;\r\n that.endDate.date = 1;\r\n }\r\n }\r\n\r\n // 初始值不在最大最小范围内\r\n if(minMaxError && value){\r\n that.setValue(that.parse());\r\n that.hint('value ' + lang.invalidDate + lang.formatError[1]);\r\n }\r\n\r\n // 初始赋值 startDate,endState\r\n that.startDate = that.startDate || value && lay.extend({}, options.dateTime); // 有默认值才初始化startDate\r\n that.autoCalendarModel.auto && that.autoCalendarModel();\r\n that.endState = !options.range || !that.rangeLinked || !!(that.startDate && that.endDate); // 初始化选中范围状态\r\n\r\n fn && fn();\r\n return that;\r\n };\r\n \r\n // 公历重要日期与自定义备注\r\n Class.prototype.mark = function(td, YMD){\r\n var that = this\r\n ,mark, options = that.config;\r\n lay.each(options.mark, function(key, title){\r\n var keys = key.split('-');\r\n if((keys[0] == YMD[0] || keys[0] == 0) //每年的每月\r\n && (keys[1] == YMD[1] || keys[1] == 0) //每月的每日\r\n && keys[2] == YMD[2]){ //特定日\r\n mark = title || YMD[2];\r\n }\r\n });\r\n mark && td.find('div').html(''+ mark +'');\r\n \r\n return that;\r\n };\r\n\r\n // 标注法定节假日或补假上班\r\n Class.prototype.holidays = function(td, YMD) {\r\n var that = this;\r\n var options = that.config;\r\n var type = ['', 'work'];\r\n\r\n if(layui.type(options.holidays) !== 'array') return that;\r\n \r\n lay.each(options.holidays, function(idx, item) {\r\n lay.each(item, function(i, dayStr) {\r\n if(dayStr === td.attr('lay-ymd')){\r\n td.find('div').html('' + YMD[2] + '');\r\n }\r\n });\r\n });\r\n\r\n return that;\r\n };\r\n \r\n // 无效日期范围的标记\r\n Class.prototype.limit = function(opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var timestamp = {}\r\n var dateTime = opts.index > (opts.time ? 0 : 41) ? that.endDate : options.dateTime;\r\n var isOut;\r\n\r\n lay.each({\r\n now: lay.extend({}, dateTime, opts.date || {})\r\n ,min: options.min\r\n ,max: options.max\r\n }, function(key, item){\r\n timestamp[key] = that.newDate(lay.extend({\r\n year: item.year\r\n ,month: opts.type === 'year' ? 0 : item.month // 年份的时候只比较年\r\n ,date: (opts.type === 'year' || opts.type === 'month') ? 1 : item.date // 年月只比较年月不与最大最小比日期\r\n }, function(){\r\n var hms = {};\r\n lay.each(opts.time, function(i, keys){\r\n hms[keys] = item[keys];\r\n });\r\n return hms;\r\n }())).getTime(); //time:是否比较时分秒\r\n });\r\n \r\n isOut = timestamp.now < timestamp.min || timestamp.now > timestamp.max;\r\n opts.elem && opts.elem[isOut ? 'addClass' : 'removeClass'](DISABLED);\r\n\r\n return isOut;\r\n };\r\n \r\n //当前日期对象\r\n Class.prototype.thisDateTime = function(index){\r\n var that = this\r\n ,options = that.config;\r\n return index ? that.endDate: options.dateTime;\r\n };\r\n \r\n //日历表\r\n Class.prototype.calendar = function(value, index, type){\r\n index = index ? 1 : 0;\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = value || that.thisDateTime(index)\r\n ,thisDate = new Date(), startWeek, prevMaxDate, thisMaxDate\r\n ,lang = that.lang()\r\n \r\n ,isAlone = options.type !== 'date' && options.type !== 'datetime'\r\n ,tds = lay(that.table[index]).find('td')\r\n ,elemYM = lay(that.elemHeader[index][2]).find('span');\r\n \r\n if(dateTime.year < LIMIT_YEAR[0]) dateTime.year = LIMIT_YEAR[0], that.hint(lang.invalidDate);\r\n if(dateTime.year > LIMIT_YEAR[1]) dateTime.year = LIMIT_YEAR[1], that.hint(lang.invalidDate);\r\n \r\n //记录初始值\r\n if(!that.firstDate){\r\n that.firstDate = lay.extend({}, dateTime);\r\n }\r\n \r\n //计算当前月第一天的星期\r\n thisDate.setFullYear(dateTime.year, dateTime.month, 1);\r\n startWeek = (thisDate.getDay() + (7 - options.weekStart)) % 7;\r\n\r\n prevMaxDate = laydate.getEndDate(dateTime.month || 12, dateTime.year); //计算上个月的最后一天\r\n thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year); //计算当前月的最后一天\r\n \r\n //赋值日\r\n lay.each(tds, function(index_, item){\r\n var YMD = [dateTime.year, dateTime.month], st;\r\n item = lay(item);\r\n item.removeAttr(\"class\");\r\n if(index_ < startWeek){\r\n st = prevMaxDate - startWeek + index_;\r\n item.addClass('laydate-day-prev');\r\n YMD = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n } else if(index_ >= startWeek && index_ < thisMaxDate + startWeek){\r\n st = index_ - startWeek;\r\n if (!that.rangeLinked) {\r\n st + 1 === dateTime.date && item.addClass(THIS);\r\n }\r\n } else {\r\n st = index_ - thisMaxDate - startWeek;\r\n item.addClass('laydate-day-next');\r\n YMD = that.getAsYM(dateTime.year, dateTime.month);\r\n }\r\n YMD[1]++;\r\n YMD[2] = st + 1;\r\n item.attr('lay-ymd', YMD.join('-')).html('
                    ' + YMD[2] + '
                    ');\r\n that.mark(item, YMD).holidays(item, YMD).limit({\r\n elem: item,\r\n date: {\r\n year: YMD[0],\r\n month: YMD[1] - 1,\r\n date: YMD[2]\r\n },\r\n index: index_\r\n });\r\n }); \r\n \r\n //同步头部年月\r\n lay(elemYM[0]).attr('lay-ym', dateTime.year + '-' + (dateTime.month + 1));\r\n lay(elemYM[1]).attr('lay-ym', dateTime.year + '-' + (dateTime.month + 1));\r\n \r\n if(options.lang === 'cn'){\r\n lay(elemYM[0]).attr('lay-type', 'year').html(dateTime.year + ' 年')\r\n lay(elemYM[1]).attr('lay-type', 'month').html((dateTime.month + 1) + ' 月');\r\n } else {\r\n lay(elemYM[0]).attr('lay-type', 'month').html(lang.month[dateTime.month]);\r\n lay(elemYM[1]).attr('lay-type', 'year').html(dateTime.year);\r\n }\r\n\r\n //初始默认选择器\r\n if(isAlone){ //年、月等独立选择器\r\n if(options.range){\r\n if(value || type !== 'init'){ // 判断是否需要显示年月时间列表\r\n that.listYM = [\r\n [(that.startDate || options.dateTime).year, (that.startDate || options.dateTime).month + 1]\r\n ,[that.endDate.year, that.endDate.month + 1]\r\n ]; \r\n that.list(options.type, 0).list(options.type, 1);\r\n \r\n //同步按钮可点状态\r\n options.type === 'time' ? that.setBtnStatus('时间'\r\n ,lay.extend({}, that.systemDate(), that.startTime)\r\n ,lay.extend({}, that.systemDate(), that.endTime)\r\n ) : that.setBtnStatus(true);\r\n } \r\n } else {\r\n that.listYM = [[dateTime.year, dateTime.month + 1]];\r\n that.list(options.type, 0);\r\n }\r\n }\r\n \r\n //初始赋值双日历\r\n if(options.range && type === 'init'){\r\n //执行渲染第二个日历\r\n if (that.rangeLinked) {\r\n var EYM = that.getAsYM(dateTime.year, dateTime.month, index ? 'sub' : null)\r\n that.calendar(lay.extend({}, dateTime, {\r\n year: EYM[0]\r\n ,month: EYM[1]\r\n }), 1 - index); // 渲染另外一个\r\n } else {\r\n that.calendar(null, 1 - index);\r\n }\r\n }\r\n \r\n // 通过检测当前有效日期,来设定底部按钮状态\r\n if(!options.range){\r\n var timeParams = ['hours', 'minutes', 'seconds'];\r\n\r\n // 现在按钮\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_NOW),\r\n date: that.systemDate(/^(datetime|time)$/.test(options.type) ? new Date() : null),\r\n index: 0,\r\n time: timeParams\r\n });\r\n // 确认按钮\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n index: 0,\r\n time: timeParams\r\n });\r\n }\r\n \r\n //同步按钮可点状态\r\n that.setBtnStatus();\r\n\r\n // 重置快捷栏选中状态\r\n lay(that.shortcut).find('li.' + THIS).removeClass(THIS);\r\n\r\n //标记选择范围\r\n if(options.range && !isAlone && type !== 'init') that.stampRange();\r\n\r\n return that;\r\n };\r\n\r\n //生成年月时分秒列表\r\n Class.prototype.list = function(type, index){\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = that.rangeLinked ? options.dateTime : [options.dateTime, that.endDate][index]\r\n ,lang = that.lang()\r\n ,isAlone = options.range && options.type !== 'date' && options.type !== 'datetime' //独立范围选择器\r\n \r\n ,ul = lay.elem('ul', {\r\n \"class\": ELEM_LIST + ' ' + ({\r\n year: 'laydate-year-list'\r\n ,month: 'laydate-month-list'\r\n ,time: 'laydate-time-list'\r\n })[type]\r\n })\r\n ,elemHeader = that.elemHeader[index]\r\n ,elemYM = lay(elemHeader[2]).find('span')\r\n ,elemCont = that.elemCont[index || 0]\r\n ,haveList = lay(elemCont).find('.'+ ELEM_LIST)[0]\r\n ,isCN = options.lang === 'cn'\r\n ,text = isCN ? '年' : ''\r\n \r\n ,listYM = that.listYM[index] || {}\r\n ,hms = ['hours', 'minutes', 'seconds']\r\n ,startEnd = ['startTime', 'endTime'][index];\r\n\r\n if(listYM[0] < 1) listYM[0] = 1;\r\n \r\n //生成年列表\r\n if(type === 'year'){\r\n var yearNum, startY = yearNum = listYM[0] - 7;\r\n if(startY < 1) startY = yearNum = 1;\r\n lay.each(new Array(15), function(i){\r\n var li = lay.elem('li', {\r\n 'lay-ym': yearNum\r\n })\r\n ,ymd = {\r\n year: yearNum\r\n ,month: 0\r\n ,date: 1\r\n };\r\n\r\n yearNum == listYM[0] && lay(li).addClass(THIS);\r\n li.innerHTML = yearNum + text;\r\n ul.appendChild(li);\r\n\r\n /*\r\n if(yearNum < that.firstDate.year){\r\n ymd.month = options.min.month;\r\n ymd.date = options.min.date;\r\n } else if(yearNum >= that.firstDate.year){\r\n ymd.month = options.max.month;\r\n ymd.date = options.max.date;\r\n }\r\n */\r\n\r\n that.limit({\r\n elem: lay(li),\r\n date: ymd,\r\n index: index,\r\n type: type\r\n });\r\n yearNum++;\r\n });\r\n\r\n lay(elemYM[isCN ? 0 : 1]).attr('lay-ym', (yearNum - 8) + '-' + listYM[1])\r\n .html((startY + text) + ' - ' + (yearNum - 1 + text));\r\n }\r\n \r\n //生成月列表\r\n else if(type === 'month'){\r\n lay.each(new Array(12), function(i){\r\n var li = lay.elem('li', {\r\n 'lay-ym': i\r\n })\r\n ,ymd = {\r\n year: listYM[0]\r\n ,month: i\r\n ,date: 1\r\n };\r\n\r\n i + 1 == listYM[1] && lay(li).addClass(THIS);\r\n li.innerHTML = lang.month[i] + (isCN ? '月' : '');\r\n ul.appendChild(li);\r\n\r\n /*\r\n if(listYM[0] < that.firstDate.year){\r\n ymd.date = options.min.date;\r\n } else if(listYM[0] >= that.firstDate.year){\r\n ymd.date = options.max.date;\r\n }\r\n */\r\n\r\n that.limit({\r\n elem: lay(li),\r\n date: ymd,\r\n index: index,\r\n type: type\r\n });\r\n });\r\n\r\n lay(elemYM[isCN ? 0 : 1]).attr('lay-ym', listYM[0] + '-' + listYM[1])\r\n .html(listYM[0] + text);\r\n } \r\n \r\n //生成时间列表\r\n else if(type === 'time'){\r\n //检测时分秒状态是否在有效日期时间范围内\r\n var setTimeStatus = function(){\r\n lay(ul).find('ol').each(function(i, ol){\r\n lay(ol).find('li').each(function(ii, li){\r\n that.limit({\r\n elem: lay(li),\r\n date: [{\r\n hours: ii\r\n }, {\r\n hours: that[startEnd].hours\r\n ,minutes: ii\r\n }, {\r\n hours: that[startEnd].hours\r\n ,minutes: that[startEnd].minutes\r\n ,seconds: ii\r\n }][i],\r\n index: index,\r\n time: [\r\n ['hours'], \r\n ['hours', 'minutes'], \r\n ['hours', 'minutes', 'seconds']\r\n ][i]\r\n });\r\n });\r\n });\r\n if(!options.range){\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n date: that[startEnd],\r\n index: 0,\r\n time: ['hours', 'minutes', 'seconds']\r\n });\r\n }\r\n };\r\n \r\n //初始化时间对象\r\n if(options.range){\r\n if(!that[startEnd]){\r\n that[startEnd] = startEnd === 'startTime' ? dateTime : that.endDate;\r\n }\r\n } else {\r\n that[startEnd] = dateTime;\r\n }\r\n \r\n //生成时分秒\r\n lay.each([24, 60, 60], function(i, item){\r\n var li = lay.elem('li'), childUL = ['

                    '+ lang.time[i] +'

                      '];\r\n lay.each(new Array(item), function(ii){\r\n childUL.push(''+ lay.digit(ii, 2) +'');\r\n });\r\n li.innerHTML = childUL.join('') + '
                    ';\r\n ul.appendChild(li);\r\n });\r\n setTimeStatus();\r\n }\r\n \r\n //插入容器\r\n if(haveList) elemCont.removeChild(haveList);\r\n elemCont.appendChild(ul);\r\n \r\n //年月面板 - 选择事件\r\n if(type === 'year' || type === 'month'){ \r\n //显示切换箭头\r\n lay(that.elemMain[index]).addClass('laydate-ym-show');\r\n \r\n //选中\r\n lay(ul).find('li').on('click', function(){\r\n var ym = lay(this).attr('lay-ym') | 0;\r\n if(lay(this).hasClass(DISABLED)) return;\r\n if (that.rangeLinked) {\r\n lay.extend(dateTime, {\r\n year: type === 'year' ? ym : listYM[0]\r\n ,month: type === 'year' ? listYM[1] - 1 : ym\r\n });\r\n } else {\r\n dateTime[type] = ym;\r\n }\r\n \r\n //当为年选择器或者年月选择器\r\n var isYearOrMonth = options.type === 'year' || options.type === 'month';\r\n if(isYearOrMonth){\r\n lay(ul).find('.'+ THIS).removeClass(THIS);\r\n lay(this).addClass(THIS);\r\n \r\n //如果为年月选择器,点击了年列表,则切换到月选择器\r\n if(options.type === 'month' && type === 'year'){\r\n that.listYM[index][0] = ym;\r\n isAlone && ((index ? that.endDate : dateTime).year = ym);\r\n that.list('month', index);\r\n }\r\n } else {\r\n that.checkDate('limit').calendar(dateTime, index, 'init'); // 重新渲染一下两个面板\r\n that.closeList();\r\n }\r\n\r\n that.setBtnStatus(); //同步按钮可点状态\r\n \r\n //若为月选择器,只有当选择月份时才自动关闭;\r\n //若为年选择器,选择年份即自动关闭\r\n //且在范围未开启时\r\n if(!options.range && options.autoConfirm){\r\n if((options.type === 'month' && type === 'month') || (options.type === 'year' && type === 'year')){\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n }\r\n\r\n (that.autoCalendarModel.auto && !that.rangeLinked) ? that.choose(lay(elemCont).find('td.layui-this'), index) : (that.endState && that.done(null, 'change'));\r\n lay(that.footer).find('.'+ ELEM_TIME_BTN).removeClass(DISABLED);\r\n });\r\n } else { //时间选择面板 - 选择事件\r\n var span = lay.elem('span', {\r\n \"class\": ELEM_TIME_TEXT\r\n })\r\n \r\n //滚动条定位\r\n ,scroll = function(){\r\n lay(ul).find('ol').each(function(i){\r\n var ol = this\r\n ,li = lay(ol).find('li')\r\n ol.scrollTop = 30*(that[startEnd][hms[i]] - 2);\r\n if(ol.scrollTop <= 0){\r\n li.each(function(ii, item){\r\n if(!lay(this).hasClass(DISABLED)){\r\n ol.scrollTop = 30*(ii - 2);\r\n return true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n ,haveSpan = lay(elemHeader[2]).find('.'+ ELEM_TIME_TEXT);\r\n \r\n scroll();\r\n span.innerHTML = options.range ? [lang.startTime,lang.endTime][index] : lang.timeTips;\r\n lay(that.elemMain[index]).addClass('laydate-time-show');\r\n \r\n if(haveSpan[0]) haveSpan.remove();\r\n elemHeader[2].appendChild(span);\r\n\r\n lay(ul).find('ol').each(function(i){\r\n var ol = this;\r\n //选择时分秒\r\n lay(ol).find('li').on('click', function(){\r\n var value = this.innerHTML | 0;\r\n if(lay(this).hasClass(DISABLED)) return;\r\n \r\n if(options.range){\r\n that[startEnd][hms[i]] = value;\r\n } else {\r\n dateTime[hms[i]] = value;\r\n }\r\n lay(ol).find('.'+ THIS).removeClass(THIS);\r\n lay(this).addClass(THIS);\r\n\r\n setTimeStatus();\r\n scroll();\r\n (that.endDate || options.type === 'time' || (options.type === 'datetime' && options.fullPanel)) && that.done(null, 'change');\r\n \r\n //同步按钮可点状态\r\n that.setBtnStatus();\r\n });\r\n });\r\n }\r\n \r\n return that;\r\n };\r\n \r\n //记录列表切换后的年月\r\n Class.prototype.listYM = [];\r\n \r\n //关闭列表\r\n Class.prototype.closeList = function(){\r\n var that = this\r\n ,options = that.config;\r\n \r\n lay.each(that.elemCont, function(index, item){\r\n lay(this).find('.'+ ELEM_LIST).remove();\r\n lay(that.elemMain[index]).removeClass('laydate-ym-show laydate-time-show');\r\n });\r\n lay(that.elem).find('.'+ ELEM_TIME_TEXT).remove();\r\n };\r\n \r\n //检测结束日期是否超出开始日期\r\n Class.prototype.setBtnStatus = function(tips, start, end){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,isOut, elemBtn = lay(that.footer).find(ELEM_CONFIRM);\r\n if(options.range && options.type !== 'time'){\r\n start = start || (that.rangeLinked ? that.startDate : options.dateTime);\r\n end = end || that.endDate;\r\n isOut = !that.endState || that.newDate(start).getTime() > that.newDate(end).getTime();\r\n\r\n //如果不在有效日期内,直接禁用按钮,否则比较开始和结束日期\r\n (that.limit({\r\n date: start\r\n }) || that.limit({\r\n date: end\r\n })) \r\n ? elemBtn.addClass(DISABLED)\r\n : elemBtn[isOut ? 'addClass' : 'removeClass'](DISABLED);\r\n \r\n //是否异常提示\r\n if(tips && isOut) that.hint(\r\n typeof tips === 'string' ? lang.timeout.replace(/日期/g, tips) : lang.timeout\r\n );\r\n }\r\n };\r\n \r\n // 转义为规定格式的日期字符\r\n Class.prototype.parse = function(state, date) {\r\n var that = this;\r\n var options = that.config;\r\n var startDate = (that.rangeLinked ? that.startDate : options.dateTime)\r\n var dateTime = date || (\r\n state == 'end' ? lay.extend({}, that.endDate, that.endTime) : (\r\n options.range\r\n ? lay.extend({}, startDate || options.dateTime, that.startTime)\r\n : options.dateTime\r\n )\r\n );\r\n var format = laydate.parse(dateTime, that.format, 1);\r\n\r\n // 返回日期范围字符\r\n if (options.range && state === undefined) {\r\n return format + ' '+ that.rangeStr +' ' + that.parse('end');\r\n }\r\n\r\n return format;\r\n };\r\n \r\n //创建指定日期时间对象\r\n Class.prototype.newDate = function(dateTime){\r\n dateTime = dateTime || {};\r\n return new Date(\r\n dateTime.year || 1\r\n ,dateTime.month || 0\r\n ,dateTime.date || 1\r\n ,dateTime.hours || 0\r\n ,dateTime.minutes || 0\r\n ,dateTime.seconds || 0\r\n );\r\n };\r\n\r\n // 获得指定日期时间对象的毫秒数\r\n Class.prototype.getDateTime = function(obj){\r\n return this.newDate(obj).getTime();\r\n }\r\n\r\n //赋值\r\n Class.prototype.setValue = function(value){\r\n var that = this\r\n ,options = that.config\r\n ,elem = options.elem[0];\r\n \r\n //静态展现则不作默认赋值\r\n if(options.position === 'static') return that;\r\n \r\n value = value || '';\r\n \r\n //绑定的元素是否为 input\r\n if(that.isInput(elem)){\r\n lay(elem).val(value);\r\n } else {\r\n //如果 range 传入了开始和结束的 input 对象,则分别对其赋值\r\n var rangeElem = that.rangeElem;\r\n if(rangeElem){\r\n if(layui.type(value) !== 'array'){\r\n value = value.split(' '+ that.rangeStr +' ');\r\n }\r\n rangeElem[0].val(value[0] || '');\r\n rangeElem[1].val(value[1] || '');\r\n } else {\r\n if(lay(elem).find('*').length === 0){\r\n lay(elem).html(value);\r\n }\r\n lay(elem).attr('lay-date', value);\r\n }\r\n }\r\n \r\n return that;\r\n };\r\n \r\n //预览\r\n Class.prototype.preview = function(){\r\n var that = this\r\n ,options = that.config;\r\n \r\n if(!options.isPreview) return;\r\n \r\n var elemPreview = lay(that.elem).find('.'+ ELEM_PREVIEW)\r\n ,value = options.range ? ((that.rangeLinked ? that.endState : that.endDate) ? that.parse() : '') : that.parse();\r\n \r\n // 显示预览\r\n elemPreview.html(value);\r\n \r\n // 预览颜色渐变\r\n var oldValue = elemPreview.html();\r\n oldValue && (elemPreview.css({\r\n 'color': '#16b777'\r\n }),\r\n setTimeout(function(){\r\n elemPreview.css({\r\n 'color': '#777'\r\n });\r\n }, 300));\r\n };\r\n\r\n // 附加的渲染处理,在 ready 和 change 的时候调用\r\n Class.prototype.renderAdditional = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 处理全面板\r\n if (options.fullPanel) {\r\n that.list('time', 0);\r\n }\r\n };\r\n\r\n // 标记范围内的日期\r\n Class.prototype.stampRange = function(){\r\n var that = this\r\n ,options = that.config\r\n ,startTime = that.rangeLinked ? that.startDate : options.dateTime, endTime\r\n ,tds = lay(that.elem).find('td');\r\n\r\n if(options.range && !that.endState) lay(that.footer).find(ELEM_CONFIRM).addClass(DISABLED);\r\n // if(!that.endState) return;\r\n\r\n startTime = startTime && that.newDate({\r\n year: startTime.year\r\n ,month: startTime.month\r\n ,date: startTime.date\r\n }).getTime();\r\n\r\n endTime = that.endState && that.endDate && that.newDate({\r\n year: that.endDate.year\r\n ,month: that.endDate.month\r\n ,date: that.endDate.date\r\n }).getTime();\r\n\r\n // if(startTime > endTime) return that.hint(TIPS_OUT);\r\n\r\n lay.each(tds, function(i, item){\r\n var ymd = lay(item).attr('lay-ymd').split('-');\r\n var thisTime = that.newDate({\r\n year: ymd[0]\r\n ,month: ymd[1] - 1\r\n ,date: ymd[2]\r\n }).getTime();\r\n\r\n // 标记当天\r\n if(options.rangeLinked && !that.startDate){\r\n if(thisTime === that.newDate(that.systemDate()).getTime()){\r\n lay(item).addClass(\r\n lay(item).hasClass(ELEM_PREV) || lay(item).hasClass(ELEM_NEXT)\r\n ? ''\r\n : ELEM_DAY_NOW\r\n );\r\n }\r\n }\r\n \r\n /*\r\n * 标注区间\r\n */\r\n\r\n lay(item).removeClass(ELEM_SELECTED + ' ' + THIS);\r\n\r\n if(thisTime === startTime || thisTime === endTime){\r\n (that.rangeLinked || (!that.rangeLinked && (i < 42 ? thisTime === startTime : thisTime === endTime))) &&\r\n lay(item).addClass(\r\n lay(item).hasClass(ELEM_PREV) || lay(item).hasClass(ELEM_NEXT)\r\n ? ELEM_SELECTED\r\n : THIS\r\n );\r\n }\r\n if(thisTime > startTime && thisTime < endTime){\r\n lay(item).addClass(ELEM_SELECTED);\r\n }\r\n });\r\n };\r\n\r\n // 执行 done/change 回调\r\n Class.prototype.done = function(param, type){\r\n var that = this;\r\n var options = that.config;\r\n var start = lay.extend({},\r\n lay.extend(that.rangeLinked ? that.startDate : options.dateTime, that.startTime)\r\n );\r\n var end = lay.extend({}, lay.extend(that.endDate, that.endTime));\r\n \r\n lay.each([start, end], function(i, item){\r\n if(!('month' in item)) return;\r\n lay.extend(item, {\r\n month: item.month + 1\r\n });\r\n });\r\n \r\n that.preview();\r\n \r\n param = param || [that.parse(), start, end];\r\n type === 'change' && that.renderAdditional();\r\n typeof options[type || 'done'] === 'function' && options[type || 'done'].apply(options, param);\r\n \r\n return that;\r\n };\r\n \r\n //选择日期\r\n Class.prototype.choose = function(td, index){\r\n if(td.hasClass(DISABLED)) return;\r\n\r\n var that = this\r\n ,options = that.config\r\n ,panelIndex = index; // 记录点击的是哪一个面板的\r\n\r\n if (that.rangeLinked) {\r\n if (that.endState || !that.startDate) {\r\n // 重新选择或者第一次选择\r\n index = 0;\r\n that.endState = false;\r\n that.endDate = {};\r\n } else {\r\n index = 1;\r\n that.endState = true;\r\n }\r\n }\r\n\r\n var dateTime = that.thisDateTime(index)\r\n\r\n ,tds = lay(that.elem).find('td')\r\n ,YMD = td.attr('lay-ymd').split('-');\r\n \r\n YMD = {\r\n year: YMD[0] | 0\r\n ,month: (YMD[1] | 0) - 1\r\n ,date: YMD[2] | 0\r\n };\r\n\r\n lay.extend(dateTime, YMD); //同步 dateTime\r\n\r\n //范围选择\r\n if(options.range){\r\n //补充时分秒\r\n lay.each(['startTime', 'endTime'], function(i, item){\r\n that[item] = that[item] || {\r\n hours: i ? 23: 0\r\n ,minutes: i ? 59: 0\r\n ,seconds: i ? 59: 0\r\n };\r\n if (index === i) {\r\n // 判断选择之后的是否在范围内,超出则需要调整时分秒\r\n if (that.getDateTime(lay.extend({}, dateTime, that[item])) < that.getDateTime(options.min)) {\r\n that[item] = {\r\n hours: options.min.hours\r\n ,minutes: options.min.minutes\r\n ,seconds: options.min.seconds\r\n };\r\n lay.extend(dateTime, that[item]);\r\n } else if (that.getDateTime(lay.extend({}, dateTime, that[item])) > that.getDateTime(options.max)) {\r\n that[item] = {\r\n hours: options.max.hours\r\n ,minutes: options.max.minutes\r\n ,seconds: options.max.seconds\r\n };\r\n lay.extend(dateTime, that[item]);\r\n }\r\n }\r\n });\r\n if (!index) {\r\n that.startDate = lay.extend({}, dateTime); // 同步startDate\r\n }\r\n // 校验另外一个日期是否在有效的范围内\r\n if (that.endState && !that.limit({date: that.thisDateTime(1 - index)})) {\r\n // 根据选择之后判断是否需要切换模式\r\n var isChange;\r\n if (that.endState && that.autoCalendarModel.auto) {\r\n isChange = that.autoCalendarModel();\r\n }\r\n if ((isChange || that.rangeLinked && that.endState) && that.newDate(that.startDate) > that.newDate(that.endDate)) {\r\n var isSameDate = that.startDate.year === that.endDate.year && that.startDate.month === that.endDate.month && that.startDate.date === that.endDate.date;\r\n // 判断是否反选\r\n var startDate = that.startDate;\r\n that.startDate = lay.extend({}, that.endDate, isSameDate ? {} : that.startTime);\r\n options.dateTime = lay.extend({}, that.startDate);\r\n that.endDate = lay.extend({}, startDate, isSameDate ? {} : that.endTime);\r\n isSameDate && ( // 如果是同一天并且出现了反选证明是时分秒出现开始时间大于结束时间的现象\r\n startDate = that.startTime,\r\n that.startTime = that.endTime,\r\n that.endTime = startDate\r\n )\r\n }\r\n isChange && (options.dateTime = lay.extend({}, that.startDate));\r\n }\r\n if (that.rangeLinked) {\r\n var dateTimeTemp = lay.extend({}, dateTime);\r\n if (panelIndex && !index && !isChange) { // 处理可能出现的联动面板中点击右面板但是判定为开始日期这个时候点击头部的切换上下月第一次没有反应的问题\r\n // 选择了右面板但是判断之后作为开始时间\r\n var YM = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n lay.extend(options.dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n }\r\n that.calendar(dateTimeTemp, panelIndex, isChange ? 'init' : null);\r\n } else {\r\n that.calendar(null, index, isChange ? 'init' : null);\r\n }\r\n that.endState && that.done(null, 'change');\r\n } else if(options.position === 'static'){ //直接嵌套的选中\r\n that.calendar().done().done(null, 'change'); //同时执行 done 和 change 回调\r\n } else if(options.type === 'date'){\r\n options.autoConfirm ? that.setValue(that.parse()).done().remove() : that.calendar().done(null, 'change');\r\n } else if(options.type === 'datetime'){\r\n that.calendar().done(null, 'change');\r\n }\r\n };\r\n \r\n //底部按钮\r\n Class.prototype.tool = function(btn, type){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,dateTime = options.dateTime\r\n ,isStatic = options.position === 'static'\r\n ,active = {\r\n //选择时间\r\n datetime: function(){\r\n if(lay(btn).hasClass(DISABLED)) return;\r\n that.list('time', 0);\r\n options.range && that.list('time', 1);\r\n lay(btn).attr('lay-type', 'date').html(that.lang().dateTips);\r\n }\r\n \r\n //选择日期\r\n ,date: function(){\r\n that.closeList();\r\n lay(btn).attr('lay-type', 'datetime').html(that.lang().timeTips);\r\n }\r\n \r\n //清空、重置\r\n ,clear: function(){\r\n isStatic && (\r\n lay.extend(dateTime, that.firstDate)\r\n ,that.calendar()\r\n )\r\n options.range && (\r\n delete options.dateTime\r\n ,delete that.endDate\r\n ,delete that.startTime\r\n ,delete that.endTime\r\n );\r\n that.setValue('');\r\n that.done(null, 'onClear').done(['', {}, {}]).remove();\r\n }\r\n \r\n // 现在\r\n ,now: function(){\r\n var thisDate = new Date();\r\n\r\n // 当前系统时间未在 min/max 范围内,则不可点击\r\n if(lay(btn).hasClass(DISABLED)){\r\n return that.hint(lang.tools.now +', '+ lang.invalidDate);\r\n }\r\n\r\n lay.extend(dateTime, that.systemDate(), {\r\n hours: thisDate.getHours()\r\n ,minutes: thisDate.getMinutes()\r\n ,seconds: thisDate.getSeconds()\r\n });\r\n\r\n that.setValue(that.parse());\r\n isStatic && that.calendar();\r\n that.done(null, 'onNow').done().remove();\r\n }\r\n \r\n //确定\r\n ,confirm: function(){\r\n if(options.range){\r\n if(lay(btn).hasClass(DISABLED)) return that.hint(\r\n options.type === 'time' ? lang.timeout.replace(/日期/g, '时间') : lang.timeout\r\n );\r\n } else {\r\n if(lay(btn).hasClass(DISABLED)) return that.hint(lang.invalidDate);\r\n }\r\n \r\n that.setValue(that.parse());\r\n that.done(null, 'onConfirm').done().remove();\r\n }\r\n };\r\n active[type] && active[type]();\r\n };\r\n \r\n //统一切换处理\r\n Class.prototype.change = function(index){\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = that.thisDateTime(index)\r\n ,isAlone = options.range && (options.type === 'year' || options.type === 'month')\r\n \r\n ,elemCont = that.elemCont[index || 0]\r\n ,listYM = that.listYM[index]\r\n ,addSubYear = function(type){\r\n var isYear = lay(elemCont).find('.laydate-year-list')[0]\r\n ,isMonth = lay(elemCont).find('.laydate-month-list')[0];\r\n \r\n //切换年列表\r\n if(isYear){\r\n listYM[0] = type ? listYM[0] - 15 : listYM[0] + 15;\r\n that.list('year', index);\r\n }\r\n \r\n if(isMonth){ //切换月面板中的年\r\n type ? listYM[0]-- : listYM[0]++;\r\n that.list('month', index);\r\n }\r\n \r\n if(isYear || isMonth){\r\n lay.extend(dateTime, {\r\n year: listYM[0]\r\n });\r\n if(isAlone) dateTime.year = listYM[0];\r\n options.range || that.done(null, 'change'); \r\n options.range || that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n date: {\r\n year: listYM[0]\r\n }\r\n });\r\n }\r\n \r\n that.setBtnStatus();\r\n return isYear || isMonth;\r\n };\r\n \r\n return {\r\n prevYear: function(){\r\n if(addSubYear('sub')) return;\r\n if (that.rangeLinked) {\r\n options.dateTime.year--;\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n } else {\r\n dateTime.year--;\r\n that.checkDate('limit').calendar(null, index);\r\n // 面板自动切换的模式下重新判定是否发生模式转换等细节处理\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,prevMonth: function(){\r\n if (that.rangeLinked) {\r\n dateTime = options.dateTime;\r\n }\r\n var YM = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n lay.extend(dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n if (!that.rangeLinked) {\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,nextMonth: function(){\r\n if (that.rangeLinked) {\r\n dateTime = options.dateTime;\r\n }\r\n var YM = that.getAsYM(dateTime.year, dateTime.month);\r\n lay.extend(dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n if (!that.rangeLinked) {\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,nextYear: function(){\r\n if(addSubYear()) return;\r\n if (that.rangeLinked) {\r\n options.dateTime.year++;\r\n that.checkDate('limit').calendar(null, 0, 'init');\r\n } else {\r\n dateTime.year++;\r\n that.checkDate('limit').calendar(null, index);\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n };\r\n };\r\n \r\n //日期切换事件\r\n Class.prototype.changeEvent = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n //日期选择事件\r\n lay(that.elem).on('click', function(e){\r\n lay.stope(e);\r\n }).on('mousedown', function(e){\r\n lay.stope(e);\r\n });\r\n \r\n //年月切换\r\n lay.each(that.elemHeader, function(i, header){\r\n //上一年\r\n lay(header[0]).on('click', function(e){\r\n that.change(i).prevYear();\r\n });\r\n \r\n //上一月\r\n lay(header[1]).on('click', function(e){\r\n that.change(i).prevMonth();\r\n });\r\n \r\n //选择年月\r\n lay(header[2]).find('span').on('click', function(e){\r\n var othis = lay(this)\r\n ,layYM = othis.attr('lay-ym')\r\n ,layType = othis.attr('lay-type');\r\n \r\n if(!layYM) return;\r\n \r\n layYM = layYM.split('-');\r\n\r\n that.listYM[i] = [layYM[0] | 0, layYM[1] | 0];\r\n that.list(layType, i);\r\n lay(that.footer).find('.'+ ELEM_TIME_BTN).addClass(DISABLED);\r\n });\r\n\r\n //下一月\r\n lay(header[3]).on('click', function(e){\r\n that.change(i).nextMonth();\r\n });\r\n \r\n //下一年\r\n lay(header[4]).on('click', function(e){\r\n that.change(i).nextYear();\r\n });\r\n });\r\n \r\n //点击日期\r\n lay.each(that.table, function(i, table){\r\n var tds = lay(table).find('td');\r\n tds.on('click', function(){\r\n that.choose(lay(this), i);\r\n });\r\n });\r\n \r\n //点击底部按钮\r\n lay(that.footer).find('span').on('click', function(){\r\n var type = lay(this).attr('lay-type');\r\n that.tool(this, type);\r\n });\r\n };\r\n \r\n //是否输入框\r\n Class.prototype.isInput = function(elem){\r\n return /input|textarea/.test(elem.tagName.toLocaleLowerCase()) || /INPUT|TEXTAREA/.test(elem.tagName);\r\n };\r\n\r\n //绑定的元素事件处理\r\n Class.prototype.events = function(){\r\n var that = this\r\n var options = that.config\r\n\r\n if(!options.elem[0] || options.elem[0].eventHandler) return;\r\n\r\n var showEvent = function(){\r\n // 已经打开的面板避免重新渲染\r\n if(laydate.thisId === options.id) return;\r\n that.render();\r\n };\r\n\r\n //绑定呼出控件事件\r\n options.elem.on(options.trigger, showEvent);\r\n options.elem[0].eventHandler = true;\r\n options.eventElem.on(options.trigger, showEvent);\r\n\r\n // 元素解绑\r\n that.unbind = function () {\r\n that.remove();\r\n options.elem.off(options.trigger, showEvent);\r\n options.elem.removeAttr('lay-key');\r\n options.elem.removeAttr(MOD_ID);\r\n options.elem[0].eventHandler = false;\r\n options.eventElem.off(options.trigger, showEvent);\r\n options.eventElem.removeAttr('lay-key');\r\n delete thisModule.that[options.id];\r\n };\r\n };\r\n \r\n //记录所有实例\r\n thisModule.that = {}; //记录所有实例对象\r\n \r\n //获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that && isLayui) layui.hint().error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 初始执行\r\n ready.run = function(lay){\r\n // 绑定关闭控件事件\r\n lay(document).on('mousedown', function(e){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n \r\n var options = that.config;\r\n \r\n if(\r\n e.target === options.elem[0] || \r\n e.target === options.eventElem[0] ||\r\n e.target === lay(options.closeStop)[0] ||\r\n (options.elem[0] && options.elem[0].contains(e.target))\r\n ) return;\r\n \r\n that.remove();\r\n \r\n }).on('keydown', function(e){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n \r\n // 回车触发确认\r\n if(that.config.position === 'static') return;\r\n if(e.keyCode === 13){\r\n if(lay('#'+ that.elemID)[0] && that.elemID === Class.thisElemDate){\r\n e.preventDefault();\r\n lay(that.footer).find(ELEM_CONFIRM)[0].click();\r\n }\r\n }\r\n });\r\n \r\n //自适应定位\r\n lay(window).on('resize', function(){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n \r\n if(!that.elem || !lay(ELEM)[0]){\r\n return false;\r\n }\r\n \r\n that.position();\r\n });\r\n };\r\n \r\n // 渲染 - 核心接口\r\n laydate.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n // 重载\r\n laydate.reload = function (id, options) {\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.reload(options);\r\n };\r\n\r\n // 获取对应 ID 的实例\r\n laydate.getInst = function (id) {\r\n var that = thisModule.getThis(id);\r\n if(that){\r\n return that.inst;\r\n }\r\n };\r\n\r\n // 面板提示\r\n laydate.hint = function(id, opts){\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.hint(opts);\r\n };\r\n\r\n // 解绑实例\r\n laydate.unbind = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.unbind();\r\n };\r\n\r\n // 关闭日期面板\r\n laydate.close = function(id){\r\n var that = thisModule.getThis(id || laydate.thisId);\r\n if(!that) return;\r\n return that.remove();\r\n };\r\n\r\n // 将指定对象转化为日期值\r\n laydate.parse = function(dateTime, format, one){\r\n dateTime = dateTime || {};\r\n \r\n //如果 format 是字符型,则转换为数组格式\r\n if(typeof format === 'string'){\r\n format = thisModule.formatArr(format);\r\n }\r\n \r\n format = (format || []).concat();\r\n \r\n //转义为规定格式\r\n lay.each(format, function(i, item){\r\n if(/yyyy|y/.test(item)){ //年\r\n format[i] = lay.digit(dateTime.year, item.length);\r\n } else if(/MM|M/.test(item)){ //月\r\n format[i] = lay.digit(dateTime.month + (one || 0), item.length);\r\n } else if(/dd|d/.test(item)){ //日\r\n format[i] = lay.digit(dateTime.date, item.length);\r\n } else if(/HH|H/.test(item)){ //时\r\n format[i] = lay.digit(dateTime.hours, item.length);\r\n } else if(/mm|m/.test(item)){ //分\r\n format[i] = lay.digit(dateTime.minutes, item.length);\r\n } else if(/ss|s/.test(item)){ //秒\r\n format[i] = lay.digit(dateTime.seconds, item.length);\r\n }\r\n });\r\n \r\n return format.join('');\r\n };\r\n \r\n // 得到某月的最后一天\r\n laydate.getEndDate = function(month, year){\r\n var thisDate = new Date();\r\n //设置日期为下个月的第一天\r\n thisDate.setFullYear(\r\n year || thisDate.getFullYear()\r\n ,month || (thisDate.getMonth() + 1)\r\n ,1);\r\n //减去一天,得到当前月最后一天\r\n return new Date(thisDate.getTime() - 1000*60*60*24).getDate();\r\n };\r\n\r\n //加载方式\r\n isLayui ? (\r\n laydate.ready()\r\n ,layui.define('lay', function(exports){ //layui 加载\r\n laydate.path = layui.cache.dir;\r\n ready.run(lay);\r\n exports(MOD_NAME, laydate);\r\n })\r\n ) : (\r\n (typeof define === 'function' && define.amd) ? define(function(){ //requirejs 加载\r\n ready.run(lay);\r\n return laydate;\r\n }) : function(){ //普通 script 标签加载\r\n laydate.ready();\r\n ready.run(window.lay);\r\n window.laydate = laydate;\r\n }()\r\n );\r\n\r\n}(window, window.document);\r\n\r\n","/*!\n * jQuery JavaScript Library v1.12.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-05-20T17:17Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\"use strict\";\nvar deletedIds = [];\n\nvar document = window.document;\n\nvar slice = deletedIds.slice;\n\nvar concat = deletedIds.concat;\n\nvar push = deletedIds.push;\n\nvar indexOf = deletedIds.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"1.12.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1, IE<9\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: deletedIds.sort,\n\tsplice: deletedIds.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type( obj ) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\tvar realStringObj = obj && obj.toString();\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype, \"isPrototypeOf\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( !support.ownFirst ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data ); // jscs:ignore requireDotNotation\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1, IE<9\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\twhile ( j < len ) {\n\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\n\t\tif ( len !== len ) {\n\t\t\twhile ( second[ j ] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: function() {\n\t\treturn +( new Date() );\n\t},\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\n// JSHint would error on this code due to the Symbol not being defined in ES5.\n// Defining this global in .jshintrc would create a danger of using the global\n// unguarded in another place, it seems safer to just disable JSHint for these\n// three lines.\n/* jshint ignore: start */\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ];\n}\n/* jshint ignore: end */\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.1\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-10-17\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\n\t\t// Support: IE 11\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) > -1 ) !== not;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// init accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt( 0 ) === \"<\" &&\n\t\t\t\tselector.charAt( selector.length - 1 ) === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[ 2 ] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof root.ready !== \"undefined\" ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\n\t\t\t\t\tpos.index( cur ) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[ 0 ], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.uniqueSort( ret );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnotwhite = ( /\\S+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = true;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add( function() {\n\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 ||\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred.\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n} );\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n} );\n\n/**\n * Clean-up method for dom ready events\n */\nfunction detach() {\n\tif ( document.addEventListener ) {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\t\twindow.removeEventListener( \"load\", completed );\n\n\t} else {\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\twindow.detachEvent( \"onload\", completed );\n\t}\n}\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\tif ( document.addEventListener ||\n\t\twindow.event.type === \"load\" ||\n\t\tdocument.readyState === \"complete\" ) {\n\n\t\tdetach();\n\t\tjQuery.ready();\n\t}\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called\n\t\t// after the browser event has already occurred.\n\t\t// Support: IE6-10\n\t\t// Older IE sometimes signals \"interactive\" too soon\n\t\tif ( document.readyState === \"complete\" ||\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\twindow.setTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed );\n\n\t\t// If IE event model is used\n\t\t} else {\n\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch ( e ) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t( function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll( \"left\" );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn window.setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t} )();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Support: IE<9\n// Iteration over object's inherited properties before its own\nvar i;\nfor ( i in jQuery( support ) ) {\n\tbreak;\n}\nsupport.ownFirst = i === \"0\";\n\n// Note: most support tests are defined in their respective modules.\n// false until the test is run\nsupport.inlineBlockNeedsLayout = false;\n\n// Execute ASAP in case we need to set body.style.zoom\njQuery( function() {\n\n\t// Minified: var a,b,c,d\n\tvar val, div, body, container;\n\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\tif ( !body || !body.style ) {\n\n\t\t// Return for frameset docs that don't have a body\n\t\treturn;\n\t}\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tcontainer = document.createElement( \"div\" );\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\tbody.appendChild( container ).appendChild( div );\n\n\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\n\t\t// Support: IE<8\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to 'inline' and giving\n\t\t// them layout\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\n\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\n\t\tif ( val ) {\n\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t// Support: IE<8\n\t\t\tbody.style.zoom = 1;\n\t\t}\n\t}\n\n\tbody.removeChild( container );\n} );\n\n\n( function() {\n\tvar div = document.createElement( \"div\" );\n\n\t// Support: IE<9\n\tsupport.deleteExpando = true;\n\ttry {\n\t\tdelete div.test;\n\t} catch ( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n} )();\nvar acceptData = function( elem ) {\n\tvar noData = jQuery.noData[ ( elem.nodeName + \" \" ).toLowerCase() ],\n\t\tnodeType = +elem.nodeType || 1;\n\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\n\treturn nodeType !== 1 && nodeType !== 9 ?\n\t\tfalse :\n\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\n\t\t!noData || noData !== true && elem.getAttribute( \"classid\" ) === noData;\n};\n\n\n\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[ name ] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\n\tif ( !acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) &&\n\t\tdata === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split( \" \" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[ i ] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, undefined\n\t} else {\n\t\tcache[ id ] = undefined;\n\t}\n}\n\njQuery.extend( {\n\tcache: {},\n\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\n\t// throw uncatchable exceptions if you attempt to set expando properties\n\tnoData: {\n\t\t\"applet \": true,\n\t\t\"embed \": true,\n\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each( function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t} ) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object,\n\t// or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, key );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\n\n\n( function() {\n\tvar shrinkWrapBlocksVal;\n\n\tsupport.shrinkWrapBlocks = function() {\n\t\tif ( shrinkWrapBlocksVal != null ) {\n\t\t\treturn shrinkWrapBlocksVal;\n\t\t}\n\n\t\t// Will be changed later if needed.\n\t\tshrinkWrapBlocksVal = false;\n\n\t\t// Minified: var b,c,d\n\t\tvar div, body, container;\n\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\t\tif ( !body || !body.style ) {\n\n\t\t\t// Test fired too early or in an unsupported environment, exit.\n\t\t\treturn;\n\t\t}\n\n\t\t// Setup\n\t\tdiv = document.createElement( \"div\" );\n\t\tcontainer = document.createElement( \"div\" );\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\t// Support: IE6\n\t\t// Check if elements with layout shrink-wrap their children\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\n\t\t\t// Reset CSS: box-sizing; display; margin; border\n\t\t\tdiv.style.cssText =\n\n\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;\" +\n\t\t\t\t\"padding:1px;width:1px;zoom:1\";\n\t\t\tdiv.appendChild( document.createElement( \"div\" ) ).style.width = \"5px\";\n\t\t\tshrinkWrapBlocksVal = div.offsetWidth !== 3;\n\t\t}\n\n\t\tbody.removeChild( container );\n\n\t\treturn shrinkWrapBlocksVal;\n\t};\n\n} )();\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() { return tween.cur(); } :\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlength = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ],\n\t\t\t\t\tkey,\n\t\t\t\t\traw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlength ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([\\w:-]+)/ );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\nvar rleadingWhitespace = ( /^\\s+/ );\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|\" +\n\t\t\"details|dialog|figcaption|figure|footer|header|hgroup|main|\" +\n\t\t\"mark|meter|nav|output|picture|progress|section|summary|template|time|video\";\n\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\n\n( function() {\n\tvar div = document.createElement( \"div\" ),\n\t\tfragment = document.createDocumentFragment(),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Setup\n\tdiv.innerHTML = \"
                    a\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone =\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav>\";\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tinput.type = \"checkbox\";\n\tinput.checked = true;\n\tfragment.appendChild( input );\n\tsupport.appendChecked = input.checked;\n\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\t// Support: IE6-IE11+\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tfragment.appendChild( div );\n\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput = document.createElement( \"input\" );\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\n\t// old WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Cloned elements keep attachEvent handlers, we use addEventListener on IE9+\n\tsupport.noCloneEvent = !!div.addEventListener;\n\n\t// Support: IE<9\n\t// Since attributes and properties are the same in IE,\n\t// cleanData must set properties to undefined rather than use removeAttribute\n\tdiv[ jQuery.expando ] = 1;\n\tsupport.attributes = !div.getAttribute( jQuery.expando );\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\toption: [ 1, \"\" ],\n\tlegend: [ 1, \"
                    \", \"
                    \" ],\n\tarea: [ 1, \"\", \"\" ],\n\n\t// Support: IE8\n\tparam: [ 1, \"\", \"\" ],\n\tthead: [ 1, \"\", \"
                    \" ],\n\ttr: [ 2, \"\", \"
                    \" ],\n\tcol: [ 2, \"\", \"
                    \" ],\n\ttd: [ 3, \"\", \"
                    \" ],\n\n\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t// unless wrapped in a div with non-breaking characters in front of it.\n\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X
                    \", \"
                    \" ]\n};\n\n// Support: IE8-IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context;\n\t\t\t( elem = elems[ i ] ) != null;\n\t\t\ti++\n\t\t) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\n\t\tjQuery._data(\n\t\t\telem,\n\t\t\t\"globalEval\",\n\t\t\t!refElements || jQuery._data( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/,\n\trtbody = / from table fragments\n\t\t\t\tif ( !support.tbody ) {\n\n\t\t\t\t\t// String was a , *may* have spurious \n\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t// String was a bare or \n\t\t\t\t\t\twrap[ 1 ] === \"
                    \" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t0;\n\n\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), \"tbody\" ) &&\n\t\t\t\t\t\t\t!tbody.childNodes.length ) {\n\n\t\t\t\t\t\t\telem.removeChild( tbody );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t}\n\n\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\ttmp = safe.lastChild;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Fix #11356: Clear elements from fragment\n\tif ( tmp ) {\n\t\tsafe.removeChild( tmp );\n\t}\n\n\t// Reset defaultChecked for any radios and checkboxes\n\t// about to be appended to the DOM in IE 6/7 (#8060)\n\tif ( !support.appendChecked ) {\n\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t}\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\ttmp = null;\n\n\treturn safe;\n}\n\n\n( function() {\n\tvar i, eventName,\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events)\n\tfor ( i in { submit: true, change: true, focusin: true } ) {\n\t\teventName = \"on\" + i;\n\n\t\tif ( !( support[ i ] = eventName in window ) ) {\n\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\t\t\tdiv.setAttribute( eventName, \"t\" );\n\t\t\tsupport[ i ] = div.attributes[ eventName ].expando === false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n} )();\n\n\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE9\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" &&\n\t\t\t\t\t( !e || jQuery.event.triggered !== e.type ) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak\n\t\t\t// with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tjQuery._data( cur, \"handle\" );\n\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif (\n\t\t\t\t( !special._default ||\n\t\t\t\t special._default.apply( eventPath.pop(), data ) === false\n\t\t\t\t) && acceptData( elem )\n\t\t\t) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support (at least): Chrome, IE9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox<=42+\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Safari 6-8+\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: ( \"button buttons clientX clientY fromElement offsetX offsetY \" +\n\t\t\t\"pageX pageY screenX screenY toElement\" ).split( \" \" ),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX +\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY +\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ?\n\t\t\t\t\toriginal.toElement :\n\t\t\t\t\tfromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\n\t\t\t\t// Previously, `originalEvent: {}` was set here, so stopPropagation call\n\t\t\t\t// would not be triggered on donor event, since in our own\n\t\t\t\t// jQuery.event.stopPropagation function we had a check for existence of\n\t\t\t\t// originalEvent.stopPropagation method, so, consequently it would be a noop.\n\t\t\t\t//\n\t\t\t\t// Guard for simulated events was moved to jQuery.event.stopPropagation function\n\t\t\t\t// since `originalEvent` should point to the original event for the\n\t\t\t\t// constancy with other events and for more focused logic\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\n\t\t// This \"if\" is needed for plain objects\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event,\n\t\t\t// to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: IE < 9, Android < 4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( !e || this.isSimulated ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://code.google.com/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\n// IE submit delegation\nif ( !support.submit ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ?\n\n\t\t\t\t\t\t// Support: IE <=8\n\t\t\t\t\t\t// We use jQuery.prop instead of elem.form\n\t\t\t\t\t\t// to allow fixing the IE8 delegated submit issue (gh-2332)\n\t\t\t\t\t\t// by 3rd party polyfills/workarounds.\n\t\t\t\t\t\tjQuery.prop( elem, \"form\" ) :\n\t\t\t\t\t\tundefined;\n\n\t\t\t\tif ( form && !jQuery._data( form, \"submit\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submitBubble = true;\n\t\t\t\t\t} );\n\t\t\t\t\tjQuery._data( form, \"submit\", true );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submitBubble ) {\n\t\t\t\tdelete event._submitBubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !support.change ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._justChanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._justChanged && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._justChanged = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"change\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tjQuery._data( elem, \"change\", true );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger ||\n\t\t\t\t( elem.type !== \"radio\" && elem.type !== \"checkbox\" ) ) {\n\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Support: Firefox\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome, Safari\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tjQuery._removeData( doc, fix );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp( \"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\" ),\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\n\t// Support: IE 10-11, Edge 10240+\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g,\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement( \"div\" ) );\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( jQuery.find.attr( elem, \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar first, node, hasScripts,\n\t\tscripts, doc, fragment,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.globalEval(\n\t\t\t\t\t\t\t\t( node.text || node.textContent || node.innerHTML || \"\" )\n\t\t\t\t\t\t\t\t\t.replace( rcleanScript, \"\" )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\tfragment = first = null;\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\telems = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = elems[ i ] ) != null; i++ ) {\n\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( support.html5Clone || jQuery.isXMLDoc( elem ) ||\n\t\t\t!rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( ( !support.noCloneEvent || !support.noCloneChecked ) &&\n\t\t\t\t( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) {\n\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[ i ] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems, /* internal */ forceAcceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tattributes = support.attributes,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\tif ( forceAcceptData || acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes\n\t\t\t\t\t\t// IE creates expando attributes along with the property\n\t\t\t\t\t\t// IE does not have a removeAttribute function on Document nodes\n\t\t\t\t\t\tif ( !attributes && typeof elem.removeAttribute !== \"undefined\" ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\n\t// Keep domManip exposed until 3.0 (gh-2225)\n\tdomManip: domManip,\n\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append(\n\t\t\t\t\t( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value )\n\t\t\t\t);\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[ i ] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\n\nvar iframe,\n\telemdisplay = {\n\n\t\t// Support: Firefox\n\t\t// We have to pre-define these values for FF (#10227)\n\t\tHTML: \"block\",\n\t\tBODY: \"block\"\n\t};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe || jQuery( \"';\r\n break;\r\n case 3:\r\n delete config.title;\r\n delete config.closeBtn;\r\n config.icon === -1 && (config.icon === 0);\r\n layer.closeAll('loading');\r\n break;\r\n case 4:\r\n conType || (config.content = [config.content, 'body']);\r\n config.follow = config.content[1];\r\n config.content = config.content[0] + '';\r\n delete config.title;\r\n config.tips = typeof config.tips === 'object' ? config.tips : [config.tips, true];\r\n config.tipsMore || layer.closeAll('tips');\r\n break;\r\n }\r\n \r\n // 建立容器\r\n that.vessel(conType, function(html, titleHTML, moveElem){\r\n body.append(html[0]);\r\n conType ? function(){\r\n (config.type == 2 || config.type == 4) ? function(){\r\n $('body').append(html[1]);\r\n }() : function(){\r\n if(!content.parents('.'+doms[0])[0]){\r\n content.data('display', content.css('display')).show().addClass('layui-layer-wrap').wrap(html[1]);\r\n $('#'+ doms[0] + times).find('.'+doms[5]).before(titleHTML);\r\n }\r\n }();\r\n }() : body.append(html[1]);\r\n $('#'+ doms.MOVE)[0] || body.append(ready.moveElem = moveElem);\r\n \r\n that.layero = $('#'+ doms[0] + times);\r\n that.shadeo = $('#'+ doms.SHADE + times);\r\n \r\n config.scrollbar || ready.setScrollbar(times);\r\n }).auto(times);\r\n \r\n // 遮罩\r\n that.shadeo.css({\r\n 'background-color': config.shade[1] || '#000'\r\n ,'opacity': config.shade[0] || config.shade\r\n });\r\n\r\n config.type == 2 && layer.ie == 6 && that.layero.find('iframe').attr('src', content[0]);\r\n\r\n // 坐标自适应浏览器窗口尺寸\r\n config.type == 4 ? that.tips() : function(){\r\n that.offset()\r\n // 首次弹出时,若 css 尚未加载,则等待 css 加载完毕后,重新设定尺寸\r\n parseInt(ready.getStyle(document.getElementById(doms.MOVE), 'z-index')) || function(){\r\n that.layero.css('visibility', 'hidden');\r\n layer.ready(function(){\r\n that.offset();\r\n that.layero.css('visibility', 'visible');\r\n });\r\n }();\r\n }();\r\n \r\n // 若是固定定位,则跟随 resize 事件来自适应坐标\r\n if(config.fixed){\r\n if(!ready.events.resize[that.index]){\r\n ready.events.resize[that.index] = function(){\r\n that.resize();\r\n };\r\n // 此处 resize 事件不会一直叠加,当关闭弹层时会移除该事件\r\n win.on('resize', ready.events.resize[that.index]);\r\n }\r\n }\r\n \r\n config.time <= 0 || setTimeout(function(){\r\n layer.close(that.index);\r\n }, config.time);\r\n that.move().callback();\r\n \r\n // 为兼容 jQuery3.0 的 css 动画影响元素尺寸计算\r\n if(doms.anim[config.anim]){\r\n var animClass = 'layer-anim '+ doms.anim[config.anim];\r\n that.layero.addClass(animClass).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){\r\n $(this).removeClass(animClass);\r\n });\r\n }\r\n \r\n // 记录配置信息\r\n that.layero.data('config', config);\r\n};\r\n\r\n// 当前实例的 resize 事件\r\nClass.pt.resize = function(){\r\n var that = this;\r\n var config = that.config;\r\n \r\n that.offset();\r\n (/^\\d+%$/.test(config.area[0]) || /^\\d+%$/.test(config.area[1])) && that.auto(that.index);\r\n config.type == 4 && that.tips();\r\n};\r\n\r\n// 自适应\r\nClass.pt.auto = function(index){\r\n var that = this, config = that.config, layero = $('#'+ doms[0] + index);\r\n \r\n if(config.area[0] === '' && config.maxWidth > 0){\r\n // 适配 ie7\r\n if(layer.ie && layer.ie < 8 && config.btn){\r\n layero.width(layero.innerWidth());\r\n }\r\n layero.outerWidth() > config.maxWidth && layero.width(config.maxWidth);\r\n }\r\n \r\n var area = [layero.innerWidth(), layero.innerHeight()];\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n var setHeight = function(elem){\r\n elem = layero.find(elem);\r\n elem.height(area[1] - titHeight - btnHeight - 2*(parseFloat(elem.css('padding-top'))|0));\r\n };\r\n\r\n switch(config.type){\r\n case 2: \r\n setHeight('iframe');\r\n break;\r\n default:\r\n if(config.area[1] === ''){\r\n if(config.maxHeight > 0 && layero.outerHeight() > config.maxHeight){\r\n area[1] = config.maxHeight;\r\n setHeight('.'+doms[5]);\r\n } else if(config.fixed && area[1] >= win.height()){\r\n area[1] = win.height();\r\n setHeight('.'+doms[5]);\r\n }\r\n } else {\r\n setHeight('.'+doms[5]);\r\n }\r\n break;\r\n }\r\n \r\n return that;\r\n};\r\n\r\n// 计算坐标\r\nClass.pt.offset = function(){\r\n var that = this, config = that.config, layero = that.layero;\r\n var area = [layero.outerWidth(), layero.outerHeight()];\r\n var type = typeof config.offset === 'object';\r\n that.offsetTop = (win.height() - area[1])/2;\r\n that.offsetLeft = (win.width() - area[0])/2;\r\n \r\n if(type){\r\n that.offsetTop = config.offset[0];\r\n that.offsetLeft = config.offset[1]||that.offsetLeft;\r\n } else if(config.offset !== 'auto'){\r\n \r\n if(config.offset === 't'){ // 上\r\n that.offsetTop = 0;\r\n } else if(config.offset === 'r'){ // 右\r\n that.offsetLeft = win.width() - area[0];\r\n } else if(config.offset === 'b'){ // 下\r\n that.offsetTop = win.height() - area[1];\r\n } else if(config.offset === 'l'){ // 左\r\n that.offsetLeft = 0;\r\n } else if(config.offset === 'lt'){ // 左上\r\n that.offsetTop = 0;\r\n that.offsetLeft = 0;\r\n } else if(config.offset === 'lb'){ // 左下\r\n that.offsetTop = win.height() - area[1];\r\n that.offsetLeft = 0;\r\n } else if(config.offset === 'rt'){ // 右上\r\n that.offsetTop = 0;\r\n that.offsetLeft = win.width() - area[0];\r\n } else if(config.offset === 'rb'){ // 右下\r\n that.offsetTop = win.height() - area[1];\r\n that.offsetLeft = win.width() - area[0];\r\n } else {\r\n that.offsetTop = config.offset;\r\n }\r\n \r\n }\r\n \r\n if(!config.fixed){\r\n that.offsetTop = /%$/.test(that.offsetTop) ? \r\n win.height()*parseFloat(that.offsetTop)/100\r\n : parseFloat(that.offsetTop);\r\n that.offsetLeft = /%$/.test(that.offsetLeft) ? \r\n win.width()*parseFloat(that.offsetLeft)/100\r\n : parseFloat(that.offsetLeft);\r\n that.offsetTop += win.scrollTop();\r\n that.offsetLeft += win.scrollLeft();\r\n }\r\n \r\n // 最小化窗口时的自适应\r\n if(layero.data('maxminStatus') === 'min'){\r\n that.offsetTop = win.height() - (layero.find(doms[1]).outerHeight() || 0);\r\n that.offsetLeft = layero.css('left');\r\n }\r\n\r\n // 设置坐标\r\n layero.css({\r\n top: that.offsetTop, \r\n left: that.offsetLeft\r\n });\r\n};\r\n\r\n// Tips\r\nClass.pt.tips = function(){\r\n var that = this, config = that.config, layero = that.layero;\r\n var layArea = [layero.outerWidth(), layero.outerHeight()], follow = $(config.follow);\r\n if(!follow[0]) follow = $('body');\r\n var goal = {\r\n width: follow.outerWidth(),\r\n height: follow.outerHeight(),\r\n top: follow.offset().top,\r\n left: follow.offset().left\r\n }, tipsG = layero.find('.layui-layer-TipsG');\r\n \r\n var guide = config.tips[0];\r\n config.tips[1] || tipsG.remove();\r\n \r\n goal.autoLeft = function(){\r\n if(goal.left + layArea[0] - win.width() > 0){\r\n goal.tipLeft = goal.left + goal.width - layArea[0];\r\n tipsG.css({right: 12, left: 'auto'});\r\n } else {\r\n goal.tipLeft = goal.left;\r\n }\r\n };\r\n \r\n // 辨别 tips 的方位\r\n goal.where = [function(){ // 上 \r\n goal.autoLeft();\r\n goal.tipTop = goal.top - layArea[1] - 10;\r\n tipsG.removeClass('layui-layer-TipsB').addClass('layui-layer-TipsT').css('border-right-color', config.tips[1]);\r\n }, function(){ // 右\r\n goal.tipLeft = goal.left + goal.width + 10;\r\n goal.tipTop = goal.top;\r\n tipsG.removeClass('layui-layer-TipsL').addClass('layui-layer-TipsR').css('border-bottom-color', config.tips[1]); \r\n }, function(){ // 下\r\n goal.autoLeft();\r\n goal.tipTop = goal.top + goal.height + 10;\r\n tipsG.removeClass('layui-layer-TipsT').addClass('layui-layer-TipsB').css('border-right-color', config.tips[1]);\r\n }, function(){ // 左\r\n goal.tipLeft = goal.left - layArea[0] - 10;\r\n goal.tipTop = goal.top;\r\n tipsG.removeClass('layui-layer-TipsR').addClass('layui-layer-TipsL').css('border-bottom-color', config.tips[1]);\r\n }];\r\n goal.where[guide-1]();\r\n \r\n /* 8*2为小三角形占据的空间 */\r\n if(guide === 1){\r\n goal.top - (win.scrollTop() + layArea[1] + 8*2) < 0 && goal.where[2]();\r\n } else if(guide === 2){\r\n win.width() - (goal.left + goal.width + layArea[0] + 8*2) > 0 || goal.where[3]()\r\n } else if(guide === 3){\r\n (goal.top - win.scrollTop() + goal.height + layArea[1] + 8*2) - win.height() > 0 && goal.where[0]();\r\n } else if(guide === 4){\r\n layArea[0] + 8*2 - goal.left > 0 && goal.where[1]()\r\n }\r\n\r\n layero.find('.'+doms[5]).css({\r\n 'background-color': config.tips[1], \r\n 'padding-right': (config.closeBtn ? '30px' : '')\r\n });\r\n layero.css({\r\n left: goal.tipLeft - (config.fixed ? win.scrollLeft() : 0), \r\n top: goal.tipTop - (config.fixed ? win.scrollTop() : 0)\r\n });\r\n}\r\n\r\n// 拖拽层\r\nClass.pt.move = function(){\r\n var that = this;\r\n var config = that.config;\r\n var _DOC = $(document);\r\n var layero = that.layero;\r\n var DATA_NAME = ['LAY_MOVE_DICT', 'LAY_RESIZE_DICT'];\r\n var moveElem = layero.find(config.move);\r\n var resizeElem = layero.find('.layui-layer-resize');\r\n \r\n // 给指定元素添加拖动光标\r\n if(config.move) moveElem.css('cursor', 'move');\r\n \r\n // 按下拖动元素\r\n moveElem.on('mousedown', function(e){\r\n if (e.button) {return;} // 不是左键不处理\r\n var othis = $(this);\r\n var dict = {};\r\n \r\n if(config.move){\r\n dict.layero = layero;\r\n dict.config = config;\r\n dict.offset = [\r\n e.clientX - parseFloat(layero.css('left')),\r\n e.clientY - parseFloat(layero.css('top'))\r\n ];\r\n \r\n othis.data(DATA_NAME[0], dict);\r\n ready.eventMoveElem = othis;\r\n ready.moveElem.css('cursor', 'move').show();\r\n }\r\n \r\n e.preventDefault();\r\n });\r\n \r\n // 按下右下角拉伸\r\n resizeElem.on('mousedown', function(e){\r\n var othis = $(this);\r\n var dict = {};\r\n \r\n if(config.resize){\r\n dict.layero = layero;\r\n dict.config = config;\r\n dict.offset = [e.clientX, e.clientY];\r\n dict.index = that.index;\r\n dict.area = [\r\n layero.outerWidth()\r\n ,layero.outerHeight()\r\n ];\r\n \r\n othis.data(DATA_NAME[1], dict);\r\n ready.eventResizeElem = othis;\r\n ready.moveElem.css('cursor', 'se-resize').show();\r\n }\r\n \r\n e.preventDefault();\r\n });\r\n \r\n // 拖动元素,避免多次调用实例造成事件叠加\r\n if(ready.docEvent) return that;\r\n _DOC.on('mousemove', function(e){\r\n // 拖拽移动\r\n if(ready.eventMoveElem){\r\n var dict = ready.eventMoveElem.data(DATA_NAME[0]) || {}\r\n ,layero = dict.layero\r\n ,config = dict.config;\r\n \r\n var X = e.clientX - dict.offset[0];\r\n var Y = e.clientY - dict.offset[1];\r\n var fixed = layero.css('position') === 'fixed';\r\n \r\n e.preventDefault();\r\n \r\n dict.stX = fixed ? 0 : win.scrollLeft();\r\n dict.stY = fixed ? 0 : win.scrollTop();\r\n\r\n // 控制元素不被拖出窗口外\r\n if(!config.moveOut){\r\n var setRig = win.width() - layero.outerWidth() + dict.stX;\r\n var setBot = win.height() - layero.outerHeight() + dict.stY; \r\n X < dict.stX && (X = dict.stX);\r\n X > setRig && (X = setRig); \r\n Y < dict.stY && (Y = dict.stY);\r\n Y > setBot && (Y = setBot);\r\n }\r\n \r\n // 拖动时跟随鼠标位置\r\n layero.css({\r\n left: X,\r\n top: Y\r\n });\r\n }\r\n \r\n // Resize\r\n if(ready.eventResizeElem){\r\n var dict = ready.eventResizeElem.data(DATA_NAME[1]) || {};\r\n var config = dict.config;\r\n \r\n var X = e.clientX - dict.offset[0];\r\n var Y = e.clientY - dict.offset[1];\r\n \r\n e.preventDefault();\r\n \r\n // 拉伸宽高\r\n layer.style(dict.index, {\r\n width: dict.area[0] + X\r\n ,height: dict.area[1] + Y\r\n });\r\n \r\n config.resizing && config.resizing(dict.layero);\r\n }\r\n }).on('mouseup', function(e){\r\n if(ready.eventMoveElem){\r\n var dict = ready.eventMoveElem.data(DATA_NAME[0]) || {};\r\n var config = dict.config;\r\n \r\n ready.eventMoveElem.removeData(DATA_NAME[0]);\r\n delete ready.eventMoveElem;\r\n ready.moveElem.hide();\r\n config.moveEnd && config.moveEnd(dict.layero);\r\n }\r\n if(ready.eventResizeElem){\r\n ready.eventResizeElem.removeData(DATA_NAME[1]);\r\n delete ready.eventResizeElem;\r\n ready.moveElem.hide();\r\n }\r\n });\r\n \r\n ready.docEvent = true; // 已给 document 执行全局事件\r\n return that;\r\n};\r\n\r\nClass.pt.callback = function(){\r\n var that = this, layero = that.layero, config = that.config;\r\n that.openLayer();\r\n if(config.success){\r\n if(config.type == 2){\r\n layero.find('iframe').on('load', function(){\r\n config.success(layero, that.index, that);\r\n });\r\n } else {\r\n config.success(layero, that.index, that);\r\n }\r\n }\r\n layer.ie == 6 && that.IE6(layero);\r\n \r\n // 按钮\r\n layero.find('.'+ doms[6]).children('a').on('click', function(){\r\n var index = $(this).index();\r\n if(index === 0){\r\n if(config.yes){\r\n config.yes(that.index, layero, that);\r\n } else if(config['btn1']){\r\n config['btn1'](that.index, layero, that);\r\n } else {\r\n layer.close(that.index);\r\n }\r\n } else {\r\n var close = config['btn'+(index+1)] && config['btn'+(index+1)](that.index, layero, that);\r\n close === false || layer.close(that.index);\r\n }\r\n });\r\n \r\n // 取消\r\n function cancel(){\r\n var close = config.cancel && config.cancel(that.index, layero, that);\r\n close === false || layer.close(that.index);\r\n }\r\n \r\n // 右上角关闭回调\r\n layero.find('.'+ doms[7]).on('click', cancel);\r\n \r\n // 点遮罩关闭\r\n if(config.shadeClose){\r\n that.shadeo.on('click', function(){\r\n layer.close(that.index);\r\n });\r\n } \r\n \r\n // 最小化\r\n layero.find('.layui-layer-min').on('click', function(){\r\n var min = config.min && config.min(layero, that.index, that);\r\n min === false || layer.min(that.index, config);\r\n });\r\n \r\n // 全屏/还原\r\n layero.find('.layui-layer-max').on('click', function(){\r\n if($(this).hasClass('layui-layer-maxmin')){\r\n layer.restore(that.index);\r\n config.restore && config.restore(layero, that.index, that);\r\n } else {\r\n layer.full(that.index, config);\r\n setTimeout(function(){\r\n config.full && config.full(layero, that.index, that);\r\n }, 100);\r\n }\r\n });\r\n\r\n config.end && (ready.end[that.index] = config.end);\r\n};\r\n\r\n// for ie6 恢复 select\r\nready.reselect = function(){\r\n $.each($('select'), function(index , value){\r\n var sthis = $(this);\r\n if(!sthis.parents('.'+doms[0])[0]){\r\n (sthis.attr('layer') == 1 && $('.'+doms[0]).length < 1) && sthis.removeAttr('layer').show(); \r\n }\r\n sthis = null;\r\n });\r\n}; \r\n\r\nClass.pt.IE6 = function(layero){\r\n // 隐藏select\r\n $('select').each(function(index , value){\r\n var sthis = $(this);\r\n if(!sthis.parents('.'+doms[0])[0]){\r\n sthis.css('display') === 'none' || sthis.attr({'layer' : '1'}).hide();\r\n }\r\n sthis = null;\r\n });\r\n};\r\n\r\n// 需依赖原型的对外方法\r\nClass.pt.openLayer = function(){\r\n var that = this;\r\n \r\n // 置顶当前窗口\r\n layer.zIndex = that.config.zIndex;\r\n layer.setTop = function(layero){\r\n var setZindex = function(){\r\n layer.zIndex++;\r\n layero.css('z-index', layer.zIndex + 1);\r\n };\r\n layer.zIndex = parseInt(layero[0].style.zIndex);\r\n layero.on('mousedown', setZindex);\r\n return layer.zIndex;\r\n };\r\n};\r\n\r\n// 记录宽高坐标,用于还原\r\nready.record = function(layero){\r\n if(!layero[0]) return window.console && console.error('index error');\r\n var area = [\r\n layero[0].style.width || layero.width(),\r\n layero[0].style.height || layero.height(),\r\n layero.position().top, \r\n layero.position().left + parseFloat(layero.css('margin-left'))\r\n ];\r\n layero.find('.layui-layer-max').addClass('layui-layer-maxmin');\r\n layero.attr({area: area});\r\n};\r\n\r\n// 设置页面滚动条\r\nready.setScrollbar = function(index){\r\n doms.html.css('overflow', 'hidden').attr('layer-full', index);\r\n};\r\n\r\n// 恢复页面滚动条\r\nready.restScrollbar = function(index){\r\n if(doms.html.attr('layer-full') == index){\r\n doms.html[0].style[doms.html[0].style.removeProperty \r\n ? 'removeProperty' \r\n : 'removeAttribute']('overflow');\r\n doms.html.removeAttr('layer-full');\r\n }\r\n};\r\n\r\n/** 内置成员 */\r\n\r\nwindow.layer = layer;\r\n\r\n// 获取子 iframe 的 DOM\r\nlayer.getChildFrame = function(selector, index){\r\n index = index || $('.'+doms[4]).attr('times');\r\n return $('#'+ doms[0] + index).find('iframe').contents().find(selector); \r\n};\r\n\r\n// 得到当前 iframe 层的索引,子 iframe 时使用\r\nlayer.getFrameIndex = function(name){\r\n return $('#'+ name).parents('.'+doms[4]).attr('times');\r\n};\r\n\r\n// iframe 层自适应宽高\r\nlayer.iframeAuto = function(index){\r\n if(!index) return;\r\n var heg = layer.getChildFrame('html', index).outerHeight();\r\n var layero = $('#'+ doms[0] + index);\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n layero.css({height: heg + titHeight + btnHeight});\r\n layero.find('iframe').css({height: heg});\r\n};\r\n\r\n// 重置 iframe url\r\nlayer.iframeSrc = function(index, url){\r\n $('#'+ doms[0] + index).find('iframe').attr('src', url);\r\n};\r\n\r\n// 设定层的样式\r\nlayer.style = function(index, options, limit){\r\n var layero = $('#'+ doms[0] + index);\r\n var contElem = layero.find('.layui-layer-content');\r\n var type = layero.attr('type');\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n var minLeft = layero.attr('minLeft');\r\n \r\n // loading 和 tips 层不允许更改\r\n if(type === ready.type[3] || type === ready.type[4]){\r\n return;\r\n }\r\n \r\n if(!limit){\r\n if(parseFloat(options.width) <= 260){\r\n options.width = 260;\r\n }\r\n \r\n if(parseFloat(options.height) - titHeight - btnHeight <= 64){\r\n options.height = 64 + titHeight + btnHeight;\r\n }\r\n }\r\n layero.css(options);\r\n btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n \r\n if(type === ready.type[2]){\r\n layero.find('iframe').css({\r\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\r\n });\r\n } else {\r\n contElem.css({\r\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\r\n - parseFloat(contElem.css('padding-top'))\r\n - parseFloat(contElem.css('padding-bottom'))\r\n })\r\n }\r\n};\r\n\r\n// 最小化\r\nlayer.min = function(index, options){\r\n var layero = $('#'+ doms[0] + index);\r\n var maxminStatus = layero.data('maxminStatus');\r\n\r\n if(maxminStatus === 'min') return; // 当前的状态是否已经是最小化\r\n if(maxminStatus === 'max') layer.restore(index); // 若当前为最大化,则先还原后再最小化\r\n\r\n layero.data('maxminStatus', 'min');\r\n options = options || layero.data('config') || {};\r\n\r\n var shadeo = $('#'+ doms.SHADE + index);\r\n var elemMin = layero.find('.layui-layer-min');\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var minLeft = layero.attr('minLeft'); // 最小化时的横坐标\r\n var hasMinLeft = typeof minLeft === 'string'; // 是否已经赋值过最小化坐标\r\n var left = hasMinLeft ? minLeft : (181*ready.minStackIndex)+'px';\r\n var position = layero.css('position');\r\n var minWidth = 180; // 最小化时的宽度\r\n var settings = {\r\n width: minWidth\r\n ,height: titHeight\r\n ,position: 'fixed'\r\n ,overflow: 'hidden'\r\n };\r\n\r\n ready.record(layero); // 记录当前尺寸、坐标,用于还原\r\n\r\n // 简易最小化补位\r\n if(ready.minStackArr.length > 0){\r\n left = ready.minStackArr[0];\r\n ready.minStackArr.shift();\r\n }\r\n\r\n // left 是否超出边界\r\n if(parseFloat(left) + minWidth > win.width()){\r\n left = win.width() - minWidth - function(){\r\n ready.minStackArr.edgeIndex = ready.minStackArr.edgeIndex || 0;\r\n return ready.minStackArr.edgeIndex += 3;\r\n }();\r\n if(left < 0) left = 0;\r\n }\r\n \r\n // 是否堆叠在左下角\r\n if(options.minStack){\r\n settings.left = left;\r\n settings.top = win.height() - titHeight;\r\n hasMinLeft || ready.minStackIndex++; // 若未赋值过最小化坐标,则最小化操作索引自增\r\n layero.attr('minLeft', left);\r\n }\r\n \r\n layero.attr('position', position);\r\n layer.style(index, settings, true);\r\n\r\n elemMin.hide();\r\n layero.attr('type') === 'page' && layero.find(doms[4]).hide();\r\n ready.restScrollbar(index);\r\n\r\n // 隐藏遮罩\r\n shadeo.hide();\r\n};\r\n\r\n// 还原\r\nlayer.restore = function(index){\r\n var layero = $('#'+ doms[0] + index);\r\n var shadeo = $('#'+ doms.SHADE + index);\r\n var area = layero.attr('area').split(',');\r\n var type = layero.attr('type');\r\n var options = layero.data('config') || {};\r\n\r\n layero.removeData('maxminStatus'); // 移除最大最小状态\r\n \r\n // 恢复原来尺寸\r\n layer.style(index, {\r\n width: area[0], // 数值或百分比\r\n height: area[1],\r\n top: parseFloat(area[2]),\r\n left: parseFloat(area[3]),\r\n position: layero.attr('position'),\r\n overflow: 'visible'\r\n }, true);\r\n \r\n layero.find('.layui-layer-max').removeClass('layui-layer-maxmin');\r\n layero.find('.layui-layer-min').show();\r\n type === 'page' && layero.find(doms[4]).show();\r\n\r\n // 恢复页面滚动条弹层打开时的状态\r\n options.scrollbar ? ready.restScrollbar(index) : ready.setScrollbar(index);\r\n \r\n // 恢复遮罩\r\n shadeo.show();\r\n // ready.events.resize[index](); // ?\r\n};\r\n\r\n// 全屏(最大化)\r\nlayer.full = function(index){\r\n var layero = $('#'+ doms[0] + index);\r\n var maxminStatus = layero.data('maxminStatus');\r\n\r\n if(maxminStatus === 'max') return // 检查当前的状态是否已经是最大化\r\n if(maxminStatus === 'min') layer.restore(index); // 若当前为最小化,则先还原后再最大化\r\n\r\n layero.data('maxminStatus', 'max');\r\n ready.record(layero); // 记录当前尺寸、坐标\r\n\r\n if(!doms.html.attr('layer-full')){\r\n ready.setScrollbar(index);\r\n }\r\n\r\n setTimeout(function(){\r\n var isfix = layero.css('position') === 'fixed';\r\n layer.style(index, {\r\n top: isfix ? 0 : win.scrollTop(),\r\n left: isfix ? 0 : win.scrollLeft(),\r\n width: '100%',\r\n height: '100%'\r\n }, true);\r\n layero.find('.layui-layer-min').hide();\r\n }, 100);\r\n};\r\n\r\n// 改变 title\r\nlayer.title = function(name, index){\r\n var title = $('#'+ doms[0] + (index || layer.index)).find(doms[1]);\r\n title.html(name);\r\n};\r\n\r\n// 关闭 layer 总方法\r\nlayer.close = function(index, callback){\r\n var layero = function(){\r\n var closest = $('.'+ doms[0]).children('#'+ index).closest('.'+ doms[0]);\r\n return closest[0] ? (\r\n index = closest.attr('times'),\r\n closest\r\n ) : $('#'+ doms[0] + index)\r\n }();\r\n var type = layero.attr('type');\r\n var options = layero.data('config') || {};\r\n var hideOnClose = options.id && options.hideOnClose; // 是否关闭时移除弹层容器\r\n\r\n if(!layero[0]) return;\r\n\r\n // 关闭动画\r\n var closeAnim = ({\r\n slideDown: 'layer-anim-slide-down-out',\r\n slideLeft: 'layer-anim-slide-left-out',\r\n slideUp: 'layer-anim-slide-up-out',\r\n slideRight: 'layer-anim-slide-right-out'\r\n })[options.anim] || 'layer-anim-close';\r\n\r\n // 移除主容器\r\n var remove = function(){\r\n var WRAP = 'layui-layer-wrap';\r\n\r\n // 是否关闭时隐藏弹层容器\r\n if(hideOnClose){\r\n layero.removeClass('layer-anim '+ closeAnim);\r\n return layero.hide();\r\n }\r\n\r\n // 是否为页面捕获层\r\n if(type === ready.type[1] && layero.attr('conType') === 'object'){\r\n layero.children(':not(.'+ doms[5] +')').remove();\r\n var wrap = layero.find('.'+WRAP);\r\n for(var i = 0; i < 2; i++){\r\n wrap.unwrap();\r\n }\r\n wrap.css('display', wrap.data('display')).removeClass(WRAP);\r\n } else {\r\n // 低版本 IE 回收 iframe\r\n if(type === ready.type[2]){\r\n try {\r\n var iframe = $('#'+ doms[4] + index)[0];\r\n iframe.contentWindow.document.write('');\r\n iframe.contentWindow.close();\r\n layero.find('.'+doms[5])[0].removeChild(iframe);\r\n } catch(e){}\r\n }\r\n layero[0].innerHTML = '';\r\n layero.remove();\r\n }\r\n\r\n typeof ready.end[index] === 'function' && ready.end[index]();\r\n delete ready.end[index];\r\n typeof callback === 'function' && callback();\r\n\r\n // 移除 reisze 事件\r\n if(ready.events.resize[index]){\r\n win.off('resize', ready.events.resize[index]);\r\n delete ready.events.resize[index];\r\n }\r\n };\r\n // 移除遮罩\r\n var removeShade = (function fn(){\r\n $('#'+ doms.SHADE + index)[\r\n hideOnClose ? 'hide' : 'remove'\r\n ]();\r\n })();\r\n \r\n // 是否允许关闭动画\r\n if(options.isOutAnim){\r\n layero.addClass('layer-anim '+ closeAnim);\r\n }\r\n \r\n layer.ie == 6 && ready.reselect();\r\n ready.restScrollbar(index); \r\n \r\n // 记住被关闭层的最小化堆叠坐标\r\n if(typeof layero.attr('minLeft') === 'string'){\r\n ready.minStackIndex--;\r\n ready.minStackArr.push(layero.attr('minLeft'));\r\n }\r\n \r\n if((layer.ie && layer.ie < 10) || !options.isOutAnim){\r\n remove()\r\n } else {\r\n setTimeout(function(){\r\n remove();\r\n }, 200);\r\n }\r\n};\r\n\r\n// 关闭所有层\r\nlayer.closeAll = function(type, callback){\r\n if(typeof type === 'function'){\r\n callback = type;\r\n type = null;\r\n }\r\n var domsElem = $('.'+doms[0]);\r\n $.each(domsElem, function(_index){\r\n var othis = $(this);\r\n var is = type ? (othis.attr('type') === type) : 1;\r\n is && layer.close(othis.attr('times'), _index === domsElem.length - 1 ? callback : null);\r\n is = null;\r\n });\r\n if(domsElem.length === 0) typeof callback === 'function' && callback();\r\n};\r\n\r\n// 根据弹层类型关闭最近打开的层\r\nlayer.closeLast = function(type){\r\n type = type || 'page';\r\n layer.close($('.layui-layer-'+ type +':last').attr(\"times\"));\r\n};\r\n\r\n\r\n/*\r\n * 拓展模块,layui 开始合并在一起\r\n */\r\n\r\n\r\nvar cache = layer.cache || {};\r\nvar skin = function(type){\r\n return (cache.skin ? (' ' + cache.skin + ' ' + cache.skin + '-'+type) : '');\r\n}; \r\n \r\n// 仿系统 prompt\r\nlayer.prompt = function(options, yes){\r\n var style = '', placeholder = '';\r\n options = options || {};\r\n \r\n if(typeof options === 'function') yes = options;\r\n \r\n if(options.area){\r\n var area = options.area;\r\n style = 'style=\"width: '+ area[0] +'; height: '+ area[1] + ';\"';\r\n delete options.area;\r\n }\r\n if (options.placeholder) {\r\n placeholder = ' placeholder=\"' + options.placeholder + '\"';\r\n }\r\n var prompt, content = options.formType == 2 ? '' : function () {\r\n return '';\r\n }();\r\n \r\n var success = options.success;\r\n delete options.success;\r\n \r\n return layer.open($.extend({\r\n type: 1,\r\n btn: ['确定','取消'],\r\n content: content,\r\n skin: 'layui-layer-prompt' + skin('prompt'),\r\n maxWidth: win.width(),\r\n success: function(layero){\r\n prompt = layero.find('.layui-layer-input');\r\n prompt.val(options.value || '').focus();\r\n typeof success === 'function' && success(layero);\r\n },\r\n resize: false,\r\n yes: function(index){\r\n var value = prompt.val();\r\n if(value.length > (options.maxlength||500)) {\r\n layer.tips('最多输入'+ (options.maxlength || 500) +'个字数', prompt, {tips: 1});\r\n } else {\r\n yes && yes(value, index, prompt);\r\n }\r\n }\r\n }, options));\r\n};\r\n\r\n// tab 层\r\nlayer.tab = function(options){\r\n options = options || {};\r\n \r\n var tab = options.tab || {};\r\n var THIS = 'layui-this';\r\n var success = options.success;\r\n \r\n delete options.success;\r\n \r\n return layer.open($.extend({\r\n type: 1,\r\n skin: 'layui-layer-tab' + skin('tab'),\r\n resize: false,\r\n title: function(){\r\n var len = tab.length, ii = 1, str = '';\r\n if(len > 0){\r\n str = ''+ tab[0].title +'';\r\n for(; ii < len; ii++){\r\n str += ''+ tab[ii].title +'';\r\n }\r\n }\r\n return str;\r\n }(),\r\n content: '
                      '+ function(){\r\n var len = tab.length, ii = 1, str = '';\r\n if(len > 0){\r\n str = '
                    • '+ (tab[0].content || 'no content') +'
                    • ';\r\n for(; ii < len; ii++){\r\n str += '
                    • '+ (tab[ii].content || 'no content') +'
                    • ';\r\n }\r\n }\r\n return str;\r\n }() +'
                    ',\r\n success: function(layero){\r\n var btn = layero.find('.layui-layer-title').children();\r\n var main = layero.find('.layui-layer-tabmain').children();\r\n btn.on('mousedown', function(e){\r\n e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;\r\n var othis = $(this), index = othis.index();\r\n othis.addClass(THIS).siblings().removeClass(THIS);\r\n main.eq(index).show().siblings().hide();\r\n typeof options.change === 'function' && options.change(index);\r\n });\r\n typeof success === 'function' && success(layero);\r\n }\r\n }, options));\r\n};\r\n\r\n// 图片层\r\nlayer.photos = function(options, loop, key){\r\n var dict = {};\r\n\r\n // 默认属性\r\n options = $.extend(true, {\r\n toolbar: true,\r\n footer: true\r\n }, options);\r\n\r\n if(!options.photos) return;\r\n \r\n // 若 photos 并非选择器或 jQuery 对象,则为普通 object\r\n var isObject = !(typeof options.photos === 'string' || options.photos instanceof $);\r\n var photos = isObject ? options.photos : {};\r\n var data = photos.data || [];\r\n var start = photos.start || 0;\r\n var success = options.success;\r\n \r\n dict.imgIndex = (start|0) + 1;\r\n options.img = options.img || 'img';\r\n delete options.success;\r\n \r\n // 若 options.photos 不是一个对象\r\n if(!isObject){ // 页面直接获取\r\n var parent = $(options.photos), pushData = function(){\r\n data = [];\r\n parent.find(options.img).each(function(index){\r\n var othis = $(this);\r\n othis.attr('layer-index', index);\r\n data.push({\r\n alt: othis.attr('alt'),\r\n pid: othis.attr('layer-pid'),\r\n src: othis.attr('lay-src') || othis.attr('layer-src') || othis.attr('src'),\r\n thumb: othis.attr('src')\r\n });\r\n });\r\n };\r\n \r\n pushData();\r\n \r\n if (data.length === 0) return;\r\n \r\n loop || parent.on('click', options.img, function(){\r\n pushData();\r\n var othis = $(this), index = othis.attr('layer-index'); \r\n layer.photos($.extend(options, {\r\n photos: {\r\n start: index,\r\n data: data,\r\n tab: options.tab\r\n },\r\n full: options.full\r\n }), true);\r\n });\r\n \r\n // 不直接弹出\r\n if (!loop) return;\r\n } else if (data.length === 0){\r\n return layer.msg('没有图片');\r\n }\r\n \r\n // 上一张\r\n dict.imgprev = function(key){\r\n dict.imgIndex--;\r\n if(dict.imgIndex < 1){\r\n dict.imgIndex = data.length;\r\n }\r\n dict.tabimg(key);\r\n };\r\n \r\n // 下一张\r\n dict.imgnext = function(key,errorMsg){\r\n dict.imgIndex++;\r\n if(dict.imgIndex > data.length){\r\n dict.imgIndex = 1;\r\n if (errorMsg) {return}\r\n }\r\n dict.tabimg(key)\r\n };\r\n \r\n // 方向键\r\n dict.keyup = function(event){\r\n if(!dict.end){\r\n var code = event.keyCode;\r\n event.preventDefault();\r\n if(code === 37){\r\n dict.imgprev(true);\r\n } else if(code === 39) {\r\n dict.imgnext(true);\r\n } else if(code === 27) {\r\n layer.close(dict.index);\r\n }\r\n }\r\n }\r\n \r\n // 切换\r\n dict.tabimg = function(key){\r\n if(data.length <= 1) return;\r\n photos.start = dict.imgIndex - 1;\r\n layer.close(dict.index);\r\n return layer.photos(options, true, key);\r\n }\r\n\r\n dict.isNumber = function (n) {\r\n return typeof n === 'number' && !isNaN(n);\r\n }\r\n\r\n dict.image = {};\r\n\r\n dict.getTransform = function(opts){\r\n var transforms = [];\r\n var rotate = opts.rotate;\r\n var scaleX = opts.scaleX;\r\n var scale = opts.scale;\r\n\r\n if (dict.isNumber(rotate) && rotate !== 0) {\r\n transforms.push('rotate(' + rotate + 'deg)');\r\n }\r\n\r\n if (dict.isNumber(scaleX) && scaleX !== 1) {\r\n transforms.push('scaleX(' + scaleX + ')');\r\n }\r\n\r\n if (dict.isNumber(scale)) {\r\n transforms.push('scale(' + scale + ')');\r\n }\r\n\r\n return transforms.length ? transforms.join(' ') : 'none';\r\n }\r\n \r\n // 一些动作\r\n dict.event = function(layero, index, that){\r\n // 上一张\r\n dict.main.find('.layui-layer-photos-prev').on('click', function(event){\r\n event.preventDefault();\r\n dict.imgprev(true);\r\n }); \r\n \r\n // 下一张\r\n dict.main.find('.layui-layer-photos-next').on('click', function(event){\r\n event.preventDefault();\r\n dict.imgnext(true);\r\n });\r\n \r\n $(document).on('keyup', dict.keyup);\r\n\r\n // 头部工具栏事件\r\n layero.off('click').on('click','*[toolbar-event]', function () {\r\n var othis = $(this);\r\n var event = othis.attr('toolbar-event');\r\n switch (event) {\r\n case 'rotate':\r\n dict.image.rotate = ((dict.image.rotate || 0) + Number(othis.attr('data-option'))) % 360;\r\n dict.imgElem.css({\r\n transform: dict.getTransform(dict.image)\r\n });\r\n break;\r\n case 'scalex':\r\n dict.image.scaleX = dict.image.scaleX === -1 ? 1 : -1;\r\n dict.imgElem.css({\r\n transform: dict.getTransform(dict.image)\r\n });\r\n break;\r\n case 'zoom':\r\n var ratio = Number(othis.attr('data-option'));\r\n dict.image.scale = (dict.image.scale || 1) + ratio;\r\n // 缩小状态最小值\r\n if (ratio < 0 && dict.image.scale < 0 - ratio) {\r\n dict.image.scale = 0 - ratio;\r\n }\r\n dict.imgElem.css({\r\n transform: dict.getTransform(dict.image)\r\n });\r\n break;\r\n case 'reset':\r\n dict.image.scaleX = 1;\r\n dict.image.scale = 1;\r\n dict.image.rotate = 0;\r\n dict.imgElem.css({\r\n transform: 'none'\r\n });\r\n break;\r\n case 'close':\r\n layer.close(index);\r\n break;\r\n }\r\n that.offset();\r\n that.auto(index);\r\n });\r\n \r\n // 鼠标滚轮缩放图片事件\r\n dict.main.on('mousewheel DOMMouseScroll', function(e) {\r\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail;\r\n var zoomElem = dict.main.find('[toolbar-event=\"zoom\"]');\r\n if (delta > 0) {\r\n zoomElem.eq(0).trigger('click');\r\n } else {\r\n zoomElem.eq(1).trigger('click');\r\n }\r\n e.preventDefault();\r\n });\r\n\r\n };\r\n \r\n // 图片预加载\r\n function loadImage(url, callback, error) { \r\n var img = new Image();\r\n img.src = url; \r\n if(img.complete){\r\n return callback(img);\r\n }\r\n img.onload = function(){\r\n img.onload = null;\r\n callback(img);\r\n };\r\n img.onerror = function(e){\r\n img.onerror = null;\r\n error(e);\r\n }; \r\n }\r\n \r\n dict.loadi = layer.load(1, {\r\n shade: 'shade' in options ? false : 0.9,\r\n scrollbar: false\r\n });\r\n\r\n loadImage(data[start].src, function(img){\r\n layer.close(dict.loadi);\r\n \r\n var alt = data[start].alt || '';\r\n\r\n // 切换图片时不出现动画\r\n if(key) options.anim = -1;\r\n \r\n // 弹出图片层\r\n dict.index = layer.open($.extend({\r\n type: 1,\r\n id: 'layui-layer-photos',\r\n area: function(){\r\n var imgarea = [img.width, img.height];\r\n var winarea = [$(window).width() - 100, $(window).height() - 100];\r\n \r\n // 若实际图片的宽或者高比 屏幕大(那么进行缩放)\r\n if(!options.full && (imgarea[0]>winarea[0]||imgarea[1]>winarea[1])){\r\n var wh = [imgarea[0]/winarea[0],imgarea[1]/winarea[1]];// 取宽度缩放比例、高度缩放比例\r\n if(wh[0] > wh[1]){// 取缩放比例最大的进行缩放\r\n imgarea[0] = imgarea[0]/wh[0];\r\n imgarea[1] = imgarea[1]/wh[0];\r\n } else if(wh[0] < wh[1]){\r\n imgarea[0] = imgarea[0]/wh[1];\r\n imgarea[1] = imgarea[1]/wh[1];\r\n }\r\n }\r\n\r\n return [imgarea[0]+'px', imgarea[1]+'px']; \r\n }(),\r\n title: false,\r\n shade: 0.9,\r\n shadeClose: true,\r\n closeBtn: false,\r\n move: '.layer-layer-photos-main img',\r\n moveType: 1,\r\n scrollbar: false,\r\n moveOut: true,\r\n anim: 5,\r\n isOutAnim: false,\r\n skin: 'layui-layer-photos' + skin('photos'),\r\n content: '
                    '\r\n + '\"'+'\r\n + function(){\r\n var arr = ['
                    '];\r\n\r\n // 左右箭头翻页\r\n if (data.length > 1) {\r\n arr.push(['
                    ',\r\n '',\r\n '',\r\n '
                    '].join(''));\r\n }\r\n\r\n // 头部工具栏\r\n if (options.toolbar) {\r\n arr.push([\r\n '
                    ',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '
                    '\r\n ].join(''));\r\n }\r\n\r\n // 底部栏\r\n if (options.footer) {\r\n arr.push(['
                    ',\r\n '

                    '+ alt +'

                    ',\r\n ''+ dict.imgIndex +' / '+ data.length +'',\r\n '查看原图',\r\n '
                    '].join(''));\r\n }\r\n\r\n arr.push('
                    ');\r\n return arr.join('');\r\n }()\r\n +'
                    ',\r\n success: function(layero, index, that){\r\n dict.main = layero.find('.layer-layer-photos-main');\r\n dict.footer = layero.find('.layui-layer-photos-footer');\r\n dict.imgElem = dict.main.children('img');\r\n dict.event(layero, index, that);\r\n options.tab && options.tab(data[start], layero);\r\n typeof success === 'function' && success(layero);\r\n }, end: function(){\r\n dict.end = true;\r\n $(document).off('keyup', dict.keyup);\r\n }\r\n }, options));\r\n }, function(){\r\n layer.close(dict.loadi);\r\n layer.msg('当前图片地址异常
                    是否继续查看下一张?', {\r\n time: 30000, \r\n btn: ['下一张', '不看了'], \r\n yes: function(){\r\n data.length > 1 && dict.imgnext(true,true);\r\n }\r\n });\r\n });\r\n};\r\n\r\n// 主入口\r\nready.run = function(_$){\r\n $ = _$;\r\n win = $(window);\r\n \r\n // 移动端兼容性处理\r\n // https://gitee.com/layui/layui/issues/I81WGC\r\n // https://github.com/jquery/jquery/issues/1729\r\n var agent = navigator.userAgent.toLowerCase();\r\n var isMobile = /android|iphone|ipod|ipad|ios/.test(agent)\r\n var _win = $(window);\r\n if(isMobile){\r\n $.each({Height: \"height\", Width: \"width\"}, function(propSuffix, funcName){\r\n var propName = 'inner' + propSuffix;\r\n win[funcName] = function(){\r\n return propName in window \r\n ? window[propName]\r\n : _win[funcName]()\r\n }\r\n })\r\n }\r\n doms.html = $('html');\r\n layer.open = function(deliver){\r\n var o = new Class(deliver);\r\n return o.index;\r\n };\r\n};\r\n\r\n// 加载方式\r\nwindow.layui && layui.define ? (\r\n layer.ready(),\r\n layui.define('jquery', function(exports){ // layui\r\n layer.path = layui.cache.dir;\r\n ready.run(layui.$);\r\n\r\n // export api\r\n window.layer = layer;\r\n exports('layer', layer);\r\n })\r\n) : (\r\n (typeof define === 'function' && define.amd) ? define(['jquery'], function(){ // requirejs\r\n ready.run(window.jQuery);\r\n return layer;\r\n }) : function(){ // 普通 script 标签引入\r\n layer.ready();\r\n ready.run(window.jQuery);\r\n }()\r\n);\r\n\r\n}(window);\r\n","/**\n * util 工具组件\n */\n\nlayui.define('jquery', function(exports){\n \"use strict\";\n\n var $ = layui.$;\n var hint = layui.hint();\n\n // 外部接口\n var util = {\n // 固定块\n fixbar: function(options){\n var ELEM = 'layui-fixbar';\n var $doc = $(document);\n\n // 默认可选项\n options = $.extend(true, {\n target: 'body', // fixbar 的插入目标选择器\n bars: [], // bar 信息\n \"default\": true, // 是否显示默认 bar\n margin: 160, // 出现 top bar 的滚动条高度临界值\n duration: 320 // top bar 等动画时长(毫秒)\n }, options);\n\n // 目标元素对象\n var $target = $(options.target);\n\n // 滚动条所在元素对象\n var $scroll = options.scroll\n ? $(options.scroll)\n : $(options.target === 'body' ? $doc : $target)\n\n // 是否提供默认图标\n if(options['default']){\n // 兼容旧版本的一些属性\n if(options.bar1){\n options.bars.push({\n type: 'bar1',\n icon: 'layui-icon-chat'\n });\n }\n if(options.bar2){\n options.bars.push({\n type: 'bar2',\n icon: 'layui-icon-help'\n });\n }\n // 默认 top bar\n options.bars.push({\n type: 'top',\n icon: 'layui-icon-top'\n });\n }\n\n var elem = $('
                      ').addClass(ELEM);\n var elemTopBar;\n\n // 遍历生成 bars 节点\n layui.each(options.bars, function(i, item){\n var elemBar = $('
                    • ');\n\n // 设置 bar 相关属性\n elemBar.addClass(item.icon).attr({\n 'lay-type': item.type,\n 'style': item.style || (options.bgcolor ? 'background-color: '+ options.bgcolor : '')\n }).html(item.content);\n\n // bar 点击事件\n elemBar.on('click', function(){\n var type = $(this).attr('lay-type');\n if(type === 'top'){\n (\n options.target === 'body'\n ? $('html,body')\n : $scroll\n ).animate({\n scrollTop : 0\n }, options.duration);\n }\n typeof options.click === 'function' && options.click.call(this, type);\n });\n\n // 自定义任意事件\n if(layui.type(options.on) === 'object'){\n layui.each(options.on, function(eventName, callback){\n elemBar.on(eventName, function(){\n var type = $(this).attr('lay-type');\n typeof callback === 'function' && callback.call(this, type);\n });\n })\n }\n\n // 获得 top bar 节点\n if(item.type === 'top'){\n elemBar.addClass('layui-fixbar-top');\n elemTopBar = elemBar;\n }\n\n elem.append(elemBar); // 插入 bar 节点\n });\n\n // 若目标元素已存在 fixbar,则移除旧的节点\n $target.find('.'+ ELEM).remove();\n\n // 向目标元素插入 fixbar 节点\n typeof options.css === 'object' && elem.css(options.css);\n $target.append(elem);\n\n // top bar 的显示隐藏\n if(elemTopBar){\n var lock;\n var setTopBar = (function setTopBar(){\n var top = $scroll.scrollTop();\n if(top >= options.margin){\n lock || (elemTopBar.show(), lock = 1);\n } else {\n lock && (elemTopBar.hide(), lock = 0);\n }\n return setTopBar;\n })();\n }\n\n // 根据 scrollbar 设置 fixbar 相关状态\n var timer;\n $scroll.on('scroll', function(){\n if(!setTopBar) return;\n clearTimeout(timer);\n timer = setTimeout(function(){\n setTopBar();\n }, 100);\n });\n },\n\n // 倒计时\n countdown: function(options){\n var that = this;\n\n // 默认可选项\n options = $.extend(true, {\n date: new Date(),\n now: new Date()\n }, options);\n\n // 兼容旧版参数\n var args = arguments;\n if(args.length > 1){\n options.date = new Date(args[0]);\n options.now = new Date(args[1]);\n options.clock = args[2];\n }\n\n // 实例对象\n var inst = {\n options: options,\n clear: function(){ // 清除计时器\n clearTimeout(inst.timer);\n },\n reload: function(opts){ // 重置倒计时\n this.clear();\n $.extend(true, this.options, {\n now: new Date()\n }, opts);\n count();\n }\n };\n\n typeof options.ready === 'function' && options.ready();\n\n // 计算倒计时\n var count = (function fn(){\n var date = new Date(options.date);\n var now = new Date(options.now);\n var countTime = function(time){\n return time > 0 ? time : 0;\n }(date.getTime() - now.getTime());\n var result = {\n d: Math.floor(countTime/(1000*60*60*24)), // 天\n h: Math.floor(countTime/(1000*60*60)) % 24, // 时\n m: Math.floor(countTime/(1000*60)) % 60, // 分\n s: Math.floor(countTime/1000) % 60 // 秒\n };\n var next = function(){\n now.setTime(now.getTime() + 1000);\n options.now = now;\n count();\n };\n\n // 兼容旧版返回值\n if(args.length > 1) result = [result.d,result.h,result.m,result.s]\n\n // 计时 - 以秒间隔\n inst.timer = setTimeout(next, 1000);\n typeof options.clock === 'function' && options.clock(result, inst);\n\n // 计时完成\n if(countTime <= 0){\n clearTimeout(inst.timer);\n typeof options.done === 'function' && options.done(result, inst);\n }\n\n return fn;\n })();\n\n return inst;\n },\n\n // 某个时间在当前时间的多久前\n timeAgo: function(time, onlyDate){\n var that = this;\n var arr = [[], []];\n var stamp = new Date().getTime() - new Date(time).getTime();\n\n // 返回具体日期\n if(stamp > 1000*60*60*24*31){\n stamp = new Date(time);\n arr[0][0] = that.digit(stamp.getFullYear(), 4);\n arr[0][1] = that.digit(stamp.getMonth() + 1);\n arr[0][2] = that.digit(stamp.getDate());\n\n // 是否输出时间\n if(!onlyDate){\n arr[1][0] = that.digit(stamp.getHours());\n arr[1][1] = that.digit(stamp.getMinutes());\n arr[1][2] = that.digit(stamp.getSeconds());\n }\n return arr[0].join('-') + ' ' + arr[1].join(':');\n }\n\n // 30 天以内,返回「多久前」\n if(stamp >= 1000*60*60*24){\n return ((stamp/1000/60/60/24)|0) + ' 天前';\n } else if(stamp >= 1000*60*60){\n return ((stamp/1000/60/60)|0) + ' 小时前';\n } else if(stamp >= 1000*60*3){ // 3 分钟以内为:刚刚\n return ((stamp/1000/60)|0) + ' 分钟前';\n } else if(stamp < 0){\n return '未来';\n } else {\n return '刚刚';\n }\n },\n\n // 数字前置补零\n digit: function(num, length){\n var str = '';\n num = String(num);\n length = length || 2;\n for(var i = num.length; i < length; i++){\n str += '0';\n }\n return num < Math.pow(10, length) ? str + (num|0) : num;\n },\n\n // 转化为日期格式字符\n toDateString: function(time, format, options){\n // 若 null 或空字符,则返回空字符\n if(time === null || time === '') return '';\n\n // 引用自 dayjs\n // https://github.com/iamkun/dayjs/blob/v1.11.9/src/constant.js#L30\n var REGEX_FORMAT = /\\[([^\\]]+)]|y{1,4}|M{1,2}|d{1,2}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|SSS/g;\n var that = this;\n var date = new Date(function(){\n if(!time) return;\n return isNaN(time) ? time : (typeof time === 'string' ? parseInt(time) : time)\n }() || new Date())\n\n if(!date.getDate()) return hint.error('Invalid millisecond for \"util.toDateString(millisecond)\"'), '';\n\n var years = date.getFullYear();\n var month = date.getMonth();\n var days = date.getDate();\n var hours = date.getHours();\n var minutes = date.getMinutes();\n var seconds = date.getSeconds();\n var milliseconds = date.getMilliseconds();\n\n var defaultMeridiem = function(hours, minutes){\n var hm = hours * 100 + minutes;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1100) {\n return '上午';\n } else if (hm < 1300) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n }\n return '晚上';\n };\n\n var meridiem = (options && options.customMeridiem) || defaultMeridiem;\n\n var matches = {\n yy: function(){return String(years).slice(-2);},\n yyyy: function(){return that.digit(years, 4);},\n M: function(){return String(month + 1);},\n MM: function(){return that.digit(month + 1);},\n d: function(){return String(days);},\n dd: function(){return that.digit(days);},\n H: function(){return String(hours);},\n HH: function(){return that.digit(hours);},\n h: function(){return String(hours % 12 || 12);},\n hh: function(){return that.digit(hours % 12 || 12);},\n A: function(){return meridiem(hours, minutes);},\n m: function(){return String(minutes);},\n mm: function(){return that.digit(minutes);},\n s: function(){return String(seconds);},\n ss: function(){return that.digit(seconds);},\n SSS: function(){return that.digit(milliseconds, 3);}\n }\n\n format = format || 'yyyy-MM-dd HH:mm:ss';\n\n return format.replace(REGEX_FORMAT, function(match, $1) {\n return $1 || (matches[match] && matches[match]()) || match;\n });\n },\n\n // 转义 html\n escape: function(html){\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\n if(html === undefined || html === null) return '';\n\n html += '';\n if(!exp.test(html)) return html;\n\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\n .replace(//g, '>')\n .replace(/'/g, ''').replace(/\"/g, '"');\n },\n\n // 还原转义的 html\n unescape: function(html){\n if(html === undefined || html === null) html = '';\n html += '';\n\n return html.replace(/\\&/g, '&')\n .replace(/\\</g, '<').replace(/\\>/g, '>')\n .replace(/\\'/g, '\\'').replace(/\\"/g, '\"');\n },\n\n // 打开新窗口\n openWin: function(options){\n var win;\n options = options || {};\n win = options.window || window.open((options.url || ''), options.target, options.specs);\n if(options.url) return;\n win.document.open('text/html', 'replace');\n win.document.write(options.content || '');\n win.document.close();\n },\n\n // 让指定的元素保持在可视区域\n toVisibleArea: function(options){\n options = $.extend({\n margin: 160, // 触发动作的边界值\n duration: 200, // 动画持续毫秒数\n type: 'y' // 触发方向,x 水平、y 垂直\n }, options);\n\n if(!options.scrollElem[0] || !options.thisElem[0]) return;\n\n var scrollElem = options.scrollElem // 滚动元素\n var thisElem = options.thisElem // 目标元素\n var vertical = options.type === 'y' // 是否垂直方向\n var SCROLL_NAME = vertical ? 'scrollTop' : 'scrollLeft' // 滚动方法\n var OFFSET_NAME = vertical ? 'top' : 'left' // 坐标方式\n var scrollValue = scrollElem[SCROLL_NAME]() // 当前滚动距离\n var size = scrollElem[vertical ? 'height' : 'width']() // 滚动元素的尺寸\n var scrollOffset = scrollElem.offset()[OFFSET_NAME] // 滚动元素所处位置\n var thisOffset = thisElem.offset()[OFFSET_NAME] - scrollOffset // 目标元素当前的所在位置\n var obj = {};\n\n // 边界满足条件\n if(thisOffset > size - options.margin || thisOffset < options.margin){\n obj[SCROLL_NAME] = thisOffset - size/2 + scrollValue\n scrollElem.animate(obj, options.duration);\n }\n },\n\n /**\n * 批量事件\n * @param {string} [attr=\"lay-on\"] - 触发事件的元素属性名\n * @param {Object..'+ STR_MENU_TITLE;\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++dropdown.index;\r\n that.config = $.extend({}, that.config, dropdown.config, options);\r\n that.init();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n trigger: 'click', // 事件类型\r\n content: '', // 自定义菜单内容\r\n className: '', // 自定义样式类名\r\n style: '', // 设置面板 style 属性\r\n show: false, // 是否初始即显示菜单面板\r\n isAllowSpread: true, // 是否允许菜单组展开收缩\r\n isSpreadItem: true, // 是否初始展开子菜单\r\n data: [], // 菜单数据结构\r\n delay: 300, // 延迟关闭的毫秒数,若 trigger 为 hover 时才生效\r\n shade: 0, // 遮罩\r\n accordion: false // 手风琴效果,仅菜单组生效。基础菜单需要在容器上追加 'lay-accordion' 属性。\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options, type){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.init(true, type);\r\n };\r\n\r\n // 初始化准备\r\n Class.prototype.init = function(rerender, type){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n dropdown.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if(!rerender && elem[0] && elem.data(MOD_INDEX)){\r\n var newThat = thisModule.getThis(elem.data(MOD_INDEX));\r\n if(!newThat) return;\r\n\r\n return newThat.reload(options, type);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n \r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, dropdown.config.customName, options.customName);\r\n\r\n if(options.show || (type === 'reloadData' && that.elemView && $('body').find(that.elemView.get(0)).length)) that.render(rerender, type); //初始即显示或者面板弹出之后执行了刷新数据\r\n that.events(); // 事件\r\n };\r\n \r\n // 渲染\r\n Class.prototype.render = function(rerender, type){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var elemBody = $('body');\r\n \r\n // 默认菜单内容\r\n var getDefaultView = function(){\r\n var elemUl = $('
                        ');\r\n if(options.data.length > 0 ){\r\n eachItemView(elemUl, options.data)\r\n } else {\r\n elemUl.html('
                      • No data
                      • ');\r\n }\r\n return elemUl;\r\n };\r\n \r\n // 遍历菜单项\r\n var eachItemView = function(views, data){\r\n // var views = [];\r\n\r\n layui.each(data, function(index, item){\r\n // 是否存在子级\r\n var isChild = item[customName.children] && item[customName.children].length > 0;\r\n var isSpreadItem = ('isSpreadItem' in item) ? item.isSpreadItem : options.isSpreadItem\r\n var title = function(title){\r\n var templet = item.templet || options.templet;\r\n if(templet){\r\n title = typeof templet === 'function' \r\n ? templet(item)\r\n : laytpl(templet).render(item);\r\n }\r\n return title;\r\n }(util.escape(item[customName.title]));\r\n \r\n // 初始类型\r\n var type = function(){\r\n if(isChild){\r\n item.type = item.type || 'parent';\r\n }\r\n if(item.type){\r\n return ({\r\n group: 'group'\r\n ,parent: 'parent'\r\n ,'-': '-'\r\n })[item.type] || 'parent';\r\n }\r\n return '';\r\n }();\r\n\r\n if(type !== '-' && (!item[customName.title] && !item[customName.id] && !isChild)) return;\r\n \r\n //列表元素\r\n var viewLi = $([''\r\n \r\n //标题区\r\n ,function(){\r\n //是否超文本\r\n var viewText = ('href' in item) ? (\r\n ''+ title +''\r\n ) : title;\r\n \r\n //是否存在子级\r\n if(isChild){\r\n return '
                        '+ viewText + function(){\r\n if(type === 'parent'){\r\n return '';\r\n } else if(type === 'group' && options.isAllowSpread){\r\n return '';\r\n } else {\r\n return '';\r\n }\r\n }() +'
                        '\r\n \r\n }\r\n return '
                        '+ viewText +'
                        ';\r\n }()\r\n ,''].join(''));\r\n \r\n viewLi.data('item', item);\r\n \r\n //子级区\r\n if(isChild){\r\n var elemPanel = $('
                        ');\r\n var elemUl = $('
                          ');\r\n\r\n if(type === 'parent'){\r\n elemPanel.append(eachItemView(elemUl, item[customName.children]));\r\n viewLi.append(elemPanel);\r\n } else {\r\n viewLi.append(eachItemView(elemUl, item[customName.children]));\r\n }\r\n }\r\n\r\n views.append(viewLi);\r\n });\r\n return views;\r\n };\r\n \r\n // 主模板\r\n var TPL_MAIN = ['
                          '\r\n ,'
                          '].join('');\r\n \r\n // 如果是右键事件,则每次触发事件时,将允许重新渲染\r\n if(options.trigger === 'contextmenu' || lay.isTopElem(options.elem[0])) rerender = true;\r\n \r\n // 判断是否已经打开了下拉菜单面板\r\n if(!rerender && options.elem.data(MOD_INDEX +'_opened')) return;\r\n\r\n // 记录模板对象\r\n that.elemView = $('.' + STR_ELEM + '[lay-id=\"' + options.id + '\"]');\r\n if (type === 'reloadData' && that.elemView.length) {\r\n that.elemView.html(options.content || getDefaultView());\r\n } else {\r\n that.elemView = $(TPL_MAIN);\r\n that.elemView.append(options.content || getDefaultView());\r\n\r\n // 初始化某些属性\r\n if(options.className) that.elemView.addClass(options.className);\r\n if(options.style) that.elemView.attr('style', options.style);\r\n\r\n // 记录当前执行的实例索引\r\n dropdown.thisId = options.id;\r\n\r\n // 插入视图\r\n that.remove(); // 移除非当前绑定元素的面板\r\n elemBody.append(that.elemView);\r\n options.elem.data(MOD_INDEX +'_opened', true);\r\n\r\n // 遮罩\r\n var shade = options.shade ? ('
                          ') : '';\r\n that.elemView.before(shade);\r\n\r\n // 如果是鼠标移入事件,则鼠标移出时自动关闭\r\n if(options.trigger === 'mouseenter'){\r\n that.elemView.on('mouseenter', function(){\r\n clearTimeout(thisModule.timer);\r\n }).on('mouseleave', function(){\r\n that.delayRemove();\r\n });\r\n }\r\n }\r\n\r\n // 坐标定位\r\n that.position();\r\n thisModule.prevElem = that.elemView; // 记录当前打开的元素,以便在下次关闭\r\n thisModule.prevElem.data('prevElem', options.elem); // 将当前绑定的元素,记录在打开元素的 data 对象中\r\n \r\n // 阻止全局事件\r\n that.elemView.find('.layui-menu').on(clickOrMousedown, function(e){\r\n layui.stope(e);\r\n });\r\n\r\n // 触发菜单列表事件\r\n that.elemView.find('.layui-menu li').on('click', function(e){\r\n var othis = $(this);\r\n var data = othis.data('item') || {};\r\n var isChild = data[customName.children] && data[customName.children].length > 0;\r\n var isClickAllScope = options.clickScope === 'all'; // 是否所有父子菜单均触发点击事件\r\n\r\n if(data.disabled) return; // 菜单项禁用状态\r\n \r\n // 普通菜单项点击后的回调及关闭面板\r\n if((!isChild || isClickAllScope) && data.type !== '-'){\r\n var ret = typeof options.click === 'function' \r\n ? options.click(data, othis) \r\n : null;\r\n \r\n ret === false || (isChild || that.remove());\r\n layui.stope(e);\r\n }\r\n });\r\n \r\n // 触发菜单组展开收缩\r\n that.elemView.find(STR_GROUP_TITLE).on('click', function(e){\r\n var othis = $(this);\r\n var elemGroup = othis.parent();\r\n var data = elemGroup.data('item') || {};\r\n \r\n if(data.type === 'group' && options.isAllowSpread){\r\n thisModule.spread(elemGroup, options.accordion);\r\n }\r\n });\r\n\r\n // 组件打开完毕的事件\r\n typeof options.ready === 'function' && options.ready(\r\n that.elemView, \r\n options.elem\r\n );\r\n };\r\n \r\n // 位置定位\r\n Class.prototype.position = function(obj){\r\n var that = this;\r\n var options = that.config;\r\n \r\n lay.position(options.elem[0], that.elemView[0], {\r\n position: options.position,\r\n e: that.e,\r\n clickType: options.trigger === 'contextmenu' ? 'right' : null,\r\n align: options.align || null\r\n });\r\n };\r\n \r\n // 删除视图\r\n Class.prototype.remove = function(){\r\n var that = this;\r\n var options = that.config;\r\n var elemPrev = thisModule.prevElem;\r\n \r\n // 若存在已打开的面板元素,则移除\r\n if(elemPrev){\r\n elemPrev.data('prevElem') && (\r\n elemPrev.data('prevElem').data(MOD_INDEX +'_opened', false)\r\n );\r\n elemPrev.remove();\r\n }\r\n lay('.' + STR_ELEM_SHADE).remove();\r\n };\r\n \r\n // 延迟删除视图\r\n Class.prototype.delayRemove = function(){\r\n var that = this;\r\n var options = that.config;\r\n clearTimeout(thisModule.timer);\r\n\r\n thisModule.timer = setTimeout(function(){\r\n that.remove();\r\n }, options.delay);\r\n };\r\n \r\n // 事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 若传入 hover,则解析为 mouseenter\r\n if(options.trigger === 'hover') options.trigger = 'mouseenter';\r\n\r\n // 解除上一个事件\r\n if(that.prevElem) that.prevElem.off(options.trigger, that.prevElemCallback);\r\n \r\n // 记录被绑定的元素及回调\r\n that.prevElem = options.elem;\r\n that.prevElemCallback = function(e){\r\n clearTimeout(thisModule.timer);\r\n that.e = e;\r\n that.render();\r\n e.preventDefault();\r\n };\r\n\r\n // 触发元素事件\r\n options.elem.on(options.trigger, that.prevElemCallback);\r\n \r\n // 如果是鼠标移入事件\r\n if(options.trigger === 'mouseenter'){\r\n // 直行鼠标移出事件\r\n options.elem.on('mouseleave', function(){\r\n that.delayRemove();\r\n });\r\n }\r\n };\r\n \r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n \r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 设置菜单组展开和收缩状态\r\n thisModule.spread = function(othis, isAccordion){\r\n var contentElem = othis.children('ul');\r\n var needSpread = othis.hasClass(STR_ITEM_UP);\r\n var ANIM_MS = 200;\r\n\r\n // 动画执行完成后的操作\r\n var complete = function() {\r\n $(this).css({'display': ''}); // 剔除临时 style,以适配外部样式的状态重置;\r\n };\r\n\r\n // 动画是否正在执行\r\n if (contentElem.is(':animated')) return;\r\n\r\n // 展开\r\n if (needSpread) {\r\n othis.removeClass(STR_ITEM_UP).addClass(STR_ITEM_DOWN);\r\n contentElem.hide().stop().slideDown(ANIM_MS, complete);\r\n } else { // 收缩\r\n contentElem.stop().slideUp(ANIM_MS, complete);\r\n othis.removeClass(STR_ITEM_DOWN).addClass(STR_ITEM_UP);\r\n }\r\n\r\n // 手风琴\r\n if (needSpread && isAccordion) {\r\n var groupSibs = othis.siblings('.' + STR_ITEM_DOWN);\r\n groupSibs.children('ul').stop().slideUp(ANIM_MS, complete);\r\n groupSibs.removeClass(STR_ITEM_DOWN).addClass(STR_ITEM_UP);\r\n }\r\n };\r\n \r\n // 全局事件\r\n (function(){\r\n var _WIN = $(window);\r\n var _DOC = $(document);\r\n \r\n // 自适应定位\r\n _WIN.on('resize', function(){\r\n if(!dropdown.thisId) return;\r\n var that = thisModule.getThis(dropdown.thisId);\r\n if(!that) return;\r\n \r\n if((that.elemView && !that.elemView[0]) || !$('.'+ STR_ELEM)[0]){\r\n return false;\r\n }\r\n \r\n var options = that.config;\r\n \r\n if(options.trigger === 'contextmenu'){\r\n that.remove();\r\n } else {\r\n that.position();\r\n }\r\n });\r\n \r\n \r\n \r\n // 点击任意处关闭\r\n _DOC.on(clickOrMousedown, function(e){\r\n if(!dropdown.thisId) return;\r\n var that = thisModule.getThis(dropdown.thisId)\r\n if(!that) return;\r\n \r\n var options = that.config;\r\n \r\n // 若触发的是绑定的元素,或者属于绑定元素的子元素,则不关闭\r\n // 满足条件:当前绑定的元素不是 body document,或者不是鼠标右键事件\r\n if(!(lay.isTopElem(options.elem[0]) || options.trigger === 'contextmenu')){\r\n if(\r\n e.target === options.elem[0] || \r\n options.elem.find(e.target)[0] ||\r\n (that.elemView && e.target === that.elemView[0]) ||\r\n (that.elemView && that.elemView.find(e.target)[0])\r\n ) return;\r\n }\r\n \r\n that.remove();\r\n });\r\n \r\n // 基础菜单的静态元素事件\r\n var ELEM_LI = '.layui-menu:not(.layui-dropdown-menu) li';\r\n _DOC.on('click', ELEM_LI, function(e){\r\n var othis = $(this);\r\n var parent = othis.parents('.layui-menu').eq(0);\r\n var isChild = othis.hasClass(STR_ITEM_GROUP) || othis.hasClass(STR_ITEM_PARENT);\r\n var filter = parent.attr('lay-filter') || parent.attr('id');\r\n var options = lay.options(this);\r\n \r\n // 非触发元素\r\n if(othis.hasClass(STR_ITEM_DIV)) return;\r\n\r\n // 非菜单组\r\n if(!isChild){\r\n // 选中\r\n parent.find('.'+ STR_ITEM_CHECKED).removeClass(STR_ITEM_CHECKED); // 清除选中样式\r\n parent.find('.'+ STR_ITEM_CHECKED2).removeClass(STR_ITEM_CHECKED2); // 清除父级菜单选中样式\r\n othis.addClass(STR_ITEM_CHECKED); //添加选中样式\r\n othis.parents('.'+ STR_ITEM_PARENT).addClass(STR_ITEM_CHECKED2); // 添加父级菜单选中样式\r\n\r\n options.title = options.title || $.trim(othis.children('.'+ STR_MENU_TITLE).text());\r\n \r\n // 触发事件\r\n layui.event.call(this, MOD_NAME, 'click('+ filter +')', options);\r\n }\r\n });\r\n \r\n // 基础菜单的展开收缩事件\r\n _DOC.on('click', (ELEM_LI + STR_GROUP_TITLE), function(e){\r\n var othis = $(this);\r\n var elemGroup = othis.parents('.'+ STR_ITEM_GROUP +':eq(0)');\r\n var options = lay.options(elemGroup[0]);\r\n var isAccordion = typeof othis.parents('.layui-menu').eq(0).attr('lay-accordion') === 'string';\r\n\r\n if(('isAllowSpread' in options) ? options.isAllowSpread : true){\r\n thisModule.spread(elemGroup, isAccordion);\r\n }\r\n });\r\n \r\n // 判断子级菜单是否超出屏幕\r\n var ELEM_LI_PAR = '.layui-menu .'+ STR_ITEM_PARENT\r\n _DOC.on('mouseenter', ELEM_LI_PAR, function(e){\r\n var othis = $(this);\r\n var elemPanel = othis.find('.'+ STR_MENU_PANEL);\r\n\r\n if(!elemPanel[0]) return;\r\n var rect = elemPanel[0].getBoundingClientRect();\r\n \r\n // 是否超出右侧屏幕\r\n if(rect.right > _WIN.width()){\r\n elemPanel.addClass(STR_MENU_PANEL_L);\r\n // 不允许超出左侧屏幕\r\n rect = elemPanel[0].getBoundingClientRect();\r\n if(rect.left < 0){\r\n elemPanel.removeClass(STR_MENU_PANEL_L);\r\n }\r\n }\r\n \r\n // 是否超出底部屏幕\r\n if(rect.bottom > _WIN.height()){\r\n elemPanel.eq(0).css('margin-top', -(rect.bottom - _WIN.height() + 5));\r\n }\r\n }).on('mouseleave', ELEM_LI_PAR, function(e){\r\n var othis = $(this)\r\n var elemPanel = othis.children('.'+ STR_MENU_PANEL);\r\n \r\n elemPanel.removeClass(STR_MENU_PANEL_L);\r\n elemPanel.css('margin-top', 0);\r\n });\r\n \r\n })();\r\n\r\n // 关闭面板\r\n dropdown.close = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n \r\n that.remove();\r\n return thisModule.call(that);\r\n };\r\n \r\n // 重载实例\r\n dropdown.reload = function(id, options, type){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n\r\n that.reload(options, type);\r\n return thisModule.call(that);\r\n };\r\n\r\n // 仅重载数据\r\n dropdown.reloadData = function(){\r\n var args = $.extend([], arguments);\r\n args[2] = 'reloadData';\r\n\r\n // 重载时,与数据相关的参数\r\n var dataParams = new RegExp('^('+ [\r\n 'data', 'templet', 'content'\r\n ].join('|') + ')$');\r\n\r\n // 过滤与数据无关的参数\r\n layui.each(args[1], function (key, value) {\r\n if(!dataParams.test(key)){\r\n delete args[1][key];\r\n }\r\n });\r\n\r\n return dropdown.reload.apply(null, args);\r\n };\r\n\r\n // 核心入口\r\n dropdown.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, dropdown);\r\n});\r\n","/**\r\n * slider 滑块组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'], function(exports){\r\n 'use strict';\r\n\r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n\r\n // 外部接口\r\n var slider = {\r\n config: {}\r\n ,index: layui.slider ? (layui.slider.index + 10000) : 0\r\n\r\n // 设置全局项\r\n ,set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n }\r\n\r\n // 事件\r\n ,on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisSlider = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n return {\r\n setValue: function(value, index){ // 设置值\r\n value = value > options.max ? options.max : value;\r\n value = value < options.min ? options.min : value;\r\n options.value = value;\r\n return that.slide('set', value, index || 0);\r\n }\r\n ,config: options\r\n }\r\n };\r\n\r\n // 字符常量\r\n var MOD_NAME = 'slider';\r\n var DISABLED = 'layui-disabled';\r\n var ELEM_VIEW = 'layui-slider';\r\n var SLIDER_BAR = 'layui-slider-bar';\r\n var SLIDER_WRAP = 'layui-slider-wrap';\r\n var SLIDER_WRAP_BTN = 'layui-slider-wrap-btn';\r\n var SLIDER_TIPS = 'layui-slider-tips';\r\n var SLIDER_INPUT = 'layui-slider-input';\r\n var SLIDER_INPUT_TXT = 'layui-slider-input-txt';\r\n var SLIDER_INPUT_BTN = 'layui-slider-input-btn';\r\n var ELEM_HOVER = 'layui-slider-hover';\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++slider.index;\r\n that.config = $.extend({}, that.config, slider.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n type: 'default' //滑块类型,垂直:vertical\r\n ,min: 0 //最小值\r\n ,max: 100 //最大值,默认100\r\n ,value: 0 //初始值,默认为0\r\n ,step: 1 //间隔值\r\n ,showstep: false //间隔点开启\r\n ,tips: true //文字提示,开启\r\n ,input: false //输入框,关闭\r\n ,range: false //范围选择,与输入框不能同时开启,默认关闭\r\n ,height: 200 //配合 type:\"vertical\" 使用,默认200px\r\n ,disabled: false //滑块禁用,默认关闭\r\n ,theme: '#16baaa' //主题颜色\r\n };\r\n\r\n //滑块渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n slider.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n //间隔值不能小于 1\r\n if(options.step < 1) options.step = 1;\r\n\r\n //最大值不能小于最小值\r\n if(options.max < options.min) options.max = options.min + options.step;\r\n\r\n\r\n\r\n //判断是否开启双滑块\r\n if(options.range){\r\n options.value = typeof(options.value) == 'object' ? options.value : [options.min, options.value];\r\n var minValue = Math.min(options.value[0], options.value[1])\r\n ,maxValue = Math.max(options.value[0], options.value[1]);\r\n options.value[0] = Math.max(minValue,options.min);\r\n options.value[1] = Math.max(maxValue,options.min);\r\n options.value[0] = Math.min(options.value[0],options.max);\r\n options.value[1] = Math.min(options.value[1],options.max);\r\n\r\n var scaleFir = Math.floor((options.value[0] - options.min) / (options.max - options.min) * 100)\r\n ,scaleSec = Math.floor((options.value[1] - options.min) / (options.max - options.min) * 100)\r\n ,scale = scaleSec - scaleFir + '%';\r\n scaleFir = scaleFir + '%';\r\n scaleSec = scaleSec + '%';\r\n } else {\r\n //如果初始值是一个数组,则获取数组的最小值\r\n if(typeof options.value == 'object'){\r\n options.value = Math.min.apply(null, options.value);\r\n }\r\n\r\n //初始值不能小于最小值且不能大于最大值\r\n if(options.value < options.min) options.value = options.min;\r\n if(options.value > options.max) options.value = options.max;\r\n\r\n var scale = Math.floor((options.value - options.min) / (options.max - options.min) * 100) + '%';\r\n }\r\n\r\n\r\n //如果禁用,颜色为统一的灰色\r\n var theme = options.disabled ? '#c2c2c2' : options.theme;\r\n\r\n //滑块\r\n var temp = '
                          '+ (options.tips ? '
                          ' : '') +\r\n '
                          ' +\r\n '
                          '+ (options.range ? '
                          ' : '') +'
                          ';\r\n\r\n var othis = $(options.elem)\r\n ,hasRender = othis.next('.' + ELEM_VIEW);\r\n //生成替代元素\r\n hasRender[0] && hasRender.remove(); //如果已经渲染,则Rerender\r\n that.elemTemp = $(temp);\r\n\r\n //把数据缓存到滑块上\r\n if(options.range){\r\n that.elemTemp.find('.' + SLIDER_WRAP).eq(0).data('value', options.value[0]);\r\n that.elemTemp.find('.' + SLIDER_WRAP).eq(1).data('value', options.value[1]);\r\n }else{\r\n that.elemTemp.find('.' + SLIDER_WRAP).data('value', options.value);\r\n }\r\n\r\n //插入替代元素\r\n othis.html(that.elemTemp);\r\n\r\n //垂直滑块\r\n if(options.type === 'vertical'){\r\n that.elemTemp.height(options.height + 'px');\r\n }\r\n\r\n //显示间断点\r\n if(options.showstep){\r\n var number = (options.max - options.min) / options.step, item = '';\r\n for(var i = 1; i < number + 1; i++) {\r\n var step = i * 100 / number;\r\n if(step < 100){\r\n item += '
                          '\r\n }\r\n }\r\n that.elemTemp.append(item);\r\n }\r\n\r\n //插入输入框\r\n if(options.input && !options.range){\r\n var elemInput = $('
                          ');\r\n othis.css(\"position\",\"relative\");\r\n othis.append(elemInput);\r\n othis.find('.' + SLIDER_INPUT_TXT).children('input').val(options.value);\r\n if(options.type === 'vertical'){\r\n elemInput.css({\r\n left: 0\r\n ,top: -48\r\n });\r\n } else {\r\n that.elemTemp.css(\"margin-right\", elemInput.outerWidth() + 15);\r\n }\r\n }\r\n\r\n //给未禁止的滑块滑动事件\r\n if(!options.disabled){\r\n that.slide();\r\n }else{\r\n that.elemTemp.addClass(DISABLED);\r\n that.elemTemp.find('.' + SLIDER_WRAP_BTN).addClass(DISABLED);\r\n }\r\n\r\n //划过滑块显示数值\r\n var timer;\r\n that.elemTemp.find('.' + SLIDER_WRAP_BTN).on('mouseover', function(){\r\n var sliderWidth = options.type === 'vertical' ? options.height : that.elemTemp[0].offsetWidth\r\n ,sliderWrap = that.elemTemp.find('.' + SLIDER_WRAP)\r\n ,tipsLeft = options.type === 'vertical' ? (sliderWidth - $(this).parent()[0].offsetTop - sliderWrap.height()) : $(this).parent()[0].offsetLeft\r\n ,left = tipsLeft / sliderWidth * 100\r\n ,value = $(this).parent().data('value')\r\n ,tipsTxt = options.setTips ? options.setTips(value) : value;\r\n that.elemTemp.find('.' + SLIDER_TIPS).html(tipsTxt);\r\n\r\n clearTimeout(timer);\r\n timer = setTimeout(function(){\r\n if(options.type === 'vertical'){\r\n that.elemTemp.find('.' + SLIDER_TIPS).css({\r\n \"bottom\": left + '%',\r\n \"margin-bottom\": \"20px\",\r\n \"display\": \"inline-block\"\r\n });\r\n } else {\r\n that.elemTemp.find('.' + SLIDER_TIPS).css({\r\n \"left\": left + '%',\r\n \"display\": \"inline-block\"\r\n });\r\n }\r\n }, 300);\r\n }).on('mouseout', function(){\r\n clearTimeout(timer);\r\n that.elemTemp.find('.' + SLIDER_TIPS).css(\"display\", \"none\");\r\n });\r\n };\r\n\r\n //滑块滑动\r\n Class.prototype.slide = function(setValue, value, i){\r\n var that = this\r\n ,options = that.config\r\n ,sliderAct = that.elemTemp\r\n ,sliderWidth = function(){\r\n return options.type === 'vertical' ? options.height : sliderAct[0].offsetWidth\r\n }\r\n ,sliderWrap = sliderAct.find('.' + SLIDER_WRAP)\r\n ,sliderTxt = sliderAct.next('.' + SLIDER_INPUT)\r\n ,inputValue = sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val()\r\n ,step = 100 / ((options.max - options.min) / Math.ceil(options.step))\r\n ,change = function(offsetValue, index, from){\r\n if(Math.ceil(offsetValue) * step > 100){\r\n offsetValue = Math.ceil(offsetValue) * step\r\n }else{\r\n offsetValue = Math.round(offsetValue) * step\r\n }\r\n offsetValue = offsetValue > 100 ? 100: offsetValue;\r\n offsetValue = offsetValue < 0 ? 0: offsetValue;\r\n sliderWrap.eq(index).css((options.type === 'vertical' ?'bottom':'left'), offsetValue + '%');\r\n var firLeft = valueTo(sliderWrap[0].offsetLeft)\r\n ,secLeft = options.range ? valueTo(sliderWrap[1].offsetLeft) : 0;\r\n if(options.type === 'vertical'){\r\n sliderAct.find('.' + SLIDER_TIPS).css({\"bottom\":offsetValue + '%', \"margin-bottom\":\"20px\"});\r\n firLeft = valueTo(sliderWidth() - sliderWrap[0].offsetTop - sliderWrap.height());\r\n secLeft = options.range ? valueTo(sliderWidth() - sliderWrap[1].offsetTop - sliderWrap.height()) : 0;\r\n }else{\r\n sliderAct.find('.' + SLIDER_TIPS).css(\"left\",offsetValue + '%');\r\n }\r\n firLeft = firLeft > 100 ? 100: firLeft;\r\n secLeft = secLeft > 100 ? 100: secLeft;\r\n var minLeft = Math.min(firLeft, secLeft)\r\n ,wrapWidth = Math.abs(firLeft - secLeft);\r\n if(options.type === 'vertical'){\r\n sliderAct.find('.' + SLIDER_BAR).css({\"height\":wrapWidth + '%', \"bottom\":minLeft + '%'});\r\n }else{\r\n sliderAct.find('.' + SLIDER_BAR).css({\"width\":wrapWidth + '%', \"left\":minLeft + '%'});\r\n }\r\n var selfValue = options.min + Math.round((options.max - options.min) * offsetValue / 100);\r\n inputValue = selfValue;\r\n sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val(inputValue);\r\n sliderWrap.eq(index).data('value', selfValue);\r\n sliderAct.find('.' + SLIDER_TIPS).html(options.setTips ? options.setTips(selfValue) : selfValue);\r\n\r\n //如果开启范围选择,则返回数组值\r\n if(options.range){\r\n var arrValue = [\r\n sliderWrap.eq(0).data('value')\r\n ,sliderWrap.eq(1).data('value')\r\n ];\r\n if(arrValue[0] > arrValue[1]) arrValue.reverse(); //如果前面的圆点超过了后面的圆点值,则调换顺序\r\n }\r\n\r\n that.value = options.range ? arrValue : selfValue; // 最新值\r\n options.change && options.change(that.value); // change 回调\r\n\r\n // 值完成选中的事件\r\n if(from === 'done') options.done && options.done(that.value);\r\n }\r\n ,valueTo = function(value){\r\n var oldLeft = value / sliderWidth() * 100 / step\r\n ,left = Math.round(oldLeft) * step;\r\n if(value == sliderWidth()){\r\n left = Math.ceil(oldLeft) * step;\r\n }\r\n return left;\r\n }\r\n\r\n //拖拽元素\r\n ,elemMove = $(['
                          sliderWidth())left = sliderWidth();\r\n var reaLeft = left / sliderWidth() * 100 / step;\r\n change(reaLeft, index);\r\n othis.addClass(ELEM_HOVER);\r\n sliderAct.find('.' + SLIDER_TIPS).show();\r\n e.preventDefault();\r\n };\r\n\r\n var up = function(){\r\n othis.removeClass(ELEM_HOVER);\r\n sliderAct.find('.' + SLIDER_TIPS).hide();\r\n };\r\n\r\n createMoveElem(move, up)\r\n });\r\n });\r\n\r\n // 点击滑块\r\n sliderAct.on('click', function(e){\r\n var main = $('.' + SLIDER_WRAP_BTN);\r\n var othis = $(this);\r\n if(!main.is(event.target) && main.has(event.target).length === 0 && main.length){\r\n var index;\r\n var offset = options.type === 'vertical'\r\n ? (sliderWidth() - e.clientY + othis.offset().top - $(window).scrollTop())\r\n :(e.clientX - othis.offset().left - $(window).scrollLeft());\r\n\r\n if(offset < 0)offset = 0;\r\n if(offset > sliderWidth()) offset = sliderWidth();\r\n var reaLeft = offset / sliderWidth() * 100 / step;\r\n if(options.range){\r\n if(options.type === 'vertical'){\r\n index = Math.abs(offset - parseInt($(sliderWrap[0]).css('bottom'))) > Math.abs(offset - parseInt($(sliderWrap[1]).css('bottom'))) ? 1 : 0;\r\n } else {\r\n index = Math.abs(offset - sliderWrap[0].offsetLeft) > Math.abs(offset - sliderWrap[1].offsetLeft) ? 1 : 0;\r\n }\r\n } else {\r\n index = 0;\r\n }\r\n change(reaLeft, index, 'done');\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n //点击加减输入框\r\n sliderTxt.children('.' + SLIDER_INPUT_BTN).children('i').each(function(index){\r\n $(this).on('click', function(){\r\n inputValue = sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val();\r\n if(index == 1){ //减\r\n inputValue = inputValue - options.step < options.min\r\n ? options.min\r\n : Number(inputValue) - options.step;\r\n }else{\r\n inputValue = Number(inputValue) + options.step > options.max\r\n ? options.max\r\n : Number(inputValue) + options.step;\r\n }\r\n var inputScale = (inputValue - options.min) / (options.max - options.min) * 100 / step;\r\n change(inputScale, 0, 'done');\r\n });\r\n });\r\n\r\n //获取输入框值\r\n var getInputValue = function(){\r\n var realValue = this.value;\r\n realValue = isNaN(realValue) ? 0 : realValue;\r\n realValue = realValue < options.min ? options.min : realValue;\r\n realValue = realValue > options.max ? options.max : realValue;\r\n this.value = realValue;\r\n var inputScale = (realValue - options.min) / (options.max - options.min) * 100 / step;\r\n change(inputScale, 0, 'done');\r\n };\r\n sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').on('keydown', function(e){\r\n if(e.keyCode === 13){\r\n e.preventDefault();\r\n getInputValue.call(this);\r\n }\r\n }).on('change', getInputValue);\r\n };\r\n\r\n //事件处理\r\n Class.prototype.events = function(){\r\n var that = this\r\n ,options = that.config;\r\n };\r\n\r\n //核心入口\r\n slider.render = function(options){\r\n var inst = new Class(options);\r\n return thisSlider.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, slider);\r\n})\r\n","/**\r\n * colorpicker \r\n * 颜色选择组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n var clickOrMousedown = (device.mobile ? 'click' : 'mousedown');\r\n\r\n //外部接口\r\n var colorpicker = {\r\n config: {}\r\n ,index: layui.colorpicker ? (layui.colorpicker.index + 10000) : 0\r\n\r\n //设置全局项\r\n ,set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n }\r\n \r\n //事件\r\n ,on: function(events, callback){\r\n return layui.onevent.call(this, 'colorpicker', events, callback);\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n config: options\r\n };\r\n }\r\n\r\n //字符常量\r\n ,MOD_NAME = 'colorpicker', SHOW = 'layui-show', THIS = 'layui-this', ELEM = 'layui-colorpicker'\r\n \r\n ,ELEM_MAIN = '.layui-colorpicker-main', ICON_PICKER_DOWN = 'layui-icon-down', ICON_PICKER_CLOSE = 'layui-icon-close'\r\n ,PICKER_TRIG_SPAN = 'layui-colorpicker-trigger-span', PICKER_TRIG_I = 'layui-colorpicker-trigger-i', PICKER_SIDE = 'layui-colorpicker-side', PICKER_SIDE_SLIDER = 'layui-colorpicker-side-slider'\r\n ,PICKER_BASIS = 'layui-colorpicker-basis', PICKER_ALPHA_BG = 'layui-colorpicker-alpha-bgcolor', PICKER_ALPHA_SLIDER = 'layui-colorpicker-alpha-slider', PICKER_BASIS_CUR = 'layui-colorpicker-basis-cursor', PICKER_INPUT = 'layui-colorpicker-main-input'\r\n\r\n //RGB转HSB\r\n ,RGBToHSB = function(rgb){\r\n var hsb = {h:0, s:0, b:0};\r\n var min = Math.min(rgb.r, rgb.g, rgb.b);\r\n var max = Math.max(rgb.r, rgb.g, rgb.b);\r\n var delta = max - min;\r\n hsb.b = max;\r\n hsb.s = max !== 0 ? 255*delta/max : 0;\r\n if(hsb.s !== 0){\r\n if(rgb.r == max){ // 因 rgb 中返回的数字为 string 类型\r\n hsb.h = (rgb.g - rgb.b) / delta;\r\n }else if(rgb.g == max){\r\n hsb.h = 2 + (rgb.b - rgb.r) / delta;\r\n }else{\r\n hsb.h = 4 + (rgb.r - rgb.g) / delta;\r\n }\r\n }else{\r\n hsb.h = -1;\r\n }\r\n if(max === min){\r\n hsb.h = 0;\r\n }\r\n hsb.h *= 60;\r\n if(hsb.h < 0) {\r\n hsb.h += 360;\r\n }\r\n hsb.s *= 100/255;\r\n hsb.b *= 100/255;\r\n return hsb; \r\n }\r\n\r\n //HEX转HSB\r\n ,HEXToHSB = function(hex){\r\n hex = hex.indexOf('#') > -1 ? hex.substring(1) : hex;\r\n if(hex.length === 3){\r\n var num = hex.split(\"\");\r\n hex = num[0]+num[0]+num[1]+num[1]+num[2]+num[2]\r\n }\r\n hex = parseInt(hex, 16);\r\n var rgb = {r:hex >> 16, g:(hex & 0x00FF00) >> 8, b:(hex & 0x0000FF)};\r\n return RGBToHSB(rgb);\r\n }\r\n\r\n //HSB转RGB\r\n ,HSBToRGB = function(hsb){\r\n var rgb = {};\r\n var h = hsb.h;\r\n var s = hsb.s*255/100;\r\n var b = hsb.b*255/100;\r\n if(s === 0){\r\n rgb.r = rgb.g = rgb.b = b;\r\n }else{\r\n var t1 = b;\r\n var t2 = (255 - s) * b /255;\r\n var t3 = (t1 - t2) * (h % 60) /60;\r\n if(h === 360) h = 0;\r\n if(h < 60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}\r\n else if(h < 120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}\r\n else if(h < 180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}\r\n else if(h < 240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}\r\n else if(h < 300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}\r\n else if(h < 360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}\r\n else {rgb.r=0; rgb.g=0; rgb.b=0}\r\n }\r\n return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};\r\n }\r\n\r\n //HSB转HEX\r\n ,HSBToHEX = function(hsb){\r\n var rgb = HSBToRGB(hsb);\r\n var hex = [\r\n rgb.r.toString(16)\r\n ,rgb.g.toString(16)\r\n ,rgb.b.toString(16)\r\n ];\r\n $.each(hex, function(nr, val){\r\n if(val.length === 1){\r\n hex[nr] = '0' + val;\r\n }\r\n });\r\n return hex.join('');\r\n }\r\n\r\n //转化成所需rgb格式\r\n ,RGBSTo = function(rgbs){\r\n var regexp = /[0-9]{1,3}/g;\r\n var re = rgbs.match(regexp) || [];\r\n return {r:re[0], g:re[1], b:re[2]};\r\n }\r\n \r\n ,$win = $(window)\r\n ,$doc = $(document)\r\n \r\n //构造器\r\n ,Class = function(options){\r\n var that = this;\r\n that.index = ++colorpicker.index;\r\n that.config = $.extend({}, that.config, colorpicker.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n color: '' //默认颜色,默认没有\r\n ,size: null //选择器大小\r\n ,alpha: false //是否开启透明度\r\n ,format: 'hex' //颜色显示/输入格式,可选 rgb,hex\r\n ,predefine: false //预定义颜色是否开启\r\n ,colors: [ //默认预定义颜色列表\r\n '#16baaa', '#16b777', '#1E9FFF', '#FF5722', '#FFB800', '#01AAED', '#999', '#c00', '#ff8c00','#ffd700'\r\n ,'#90ee90', '#00ced1', '#1e90ff', '#c71585', 'rgb(0, 186, 189)', 'rgb(255, 120, 0)', 'rgb(250, 212, 0)', '#393D49', 'rgba(0,0,0,.5)', 'rgba(255, 69, 0, 0.68)', 'rgba(144, 240, 144, 0.5)', 'rgba(31, 147, 255, 0.73)'\r\n ]\r\n };\r\n\r\n //初始颜色选择框\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n colorpicker.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n \r\n //颜色选择框对象\r\n var elemColorBox = $(['
                          '\r\n ,''\r\n ,' 3){ //需要优化\r\n if(!(options.alpha && options.format == 'rgb')){\r\n bgstr = '#' + HSBToHEX(RGBToHSB(RGBSTo(options.color)))\r\n }\r\n }\r\n \r\n return 'background: '+ bgstr;\r\n }\r\n \r\n return bgstr;\r\n }() +'\">'\r\n ,''\r\n ,''\r\n ,''\r\n ,'
                          '].join(''))\r\n\r\n //初始化颜色选择框\r\n elem = options.elem = $(options.elem);\r\n options.size && elemColorBox.addClass('layui-colorpicker-'+ options.size); //初始化颜色选择框尺寸\r\n \r\n // 插入颜色选择框\r\n elem.addClass('layui-inline').html(\r\n that.elemColorBox = elemColorBox\r\n );\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n \r\n // 获取背景色值\r\n that.color = that.elemColorBox.find('.'+ PICKER_TRIG_SPAN)[0].style.background;\r\n \r\n // 相关事件\r\n that.events();\r\n };\r\n\r\n //渲染颜色选择器\r\n Class.prototype.renderPicker = function(){\r\n var that = this\r\n ,options = that.config\r\n ,elemColorBox = that.elemColorBox[0]\r\n \r\n //颜色选择器对象\r\n ,elemPicker = that.elemPicker = $(['
                          '\r\n //颜色面板\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n \r\n //透明度条块\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n \r\n //预设颜色列表\r\n ,function(){\r\n if(options.predefine){\r\n var list = ['
                          '];\r\n layui.each(options.colors, function(i, v){\r\n list.push(['
                          3 \r\n ? ' layui-colorpicker-pre-isalpha' \r\n : '') +'\">'\r\n ,'
                          '\r\n ,'
                          '].join(''));\r\n });\r\n list.push('
                          ');\r\n return list.join('');\r\n } else {\r\n return '';\r\n }\r\n }()\r\n \r\n //底部表单元素区域\r\n ,'
                          '\r\n ,'
                          '\r\n ,''\r\n ,'
                          '\r\n ,'
                          '\r\n ,''\r\n ,''\r\n ,''\r\n ,'
                          '].join(''))\r\n \r\n ,elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)[0];\r\n \r\n //如果当前点击的颜色盒子已经存在选择器,则关闭\r\n if($(ELEM_MAIN)[0] && $(ELEM_MAIN).data('index') == that.index){\r\n that.removePicker(Class.thisElemInd);\r\n } else { //插入颜色选择器\r\n that.removePicker(Class.thisElemInd); \r\n $('body').append(elemPicker);\r\n }\r\n\r\n // 记录当前执行的实例索引\r\n colorpicker.thisId = options.id;\r\n \r\n Class.thisElemInd = that.index; //记录最新打开的选择器索引\r\n Class.thisColor = elemColorBox.style.background //记录最新打开的选择器颜色选中值\r\n \r\n that.position();\r\n that.pickerEvents();\r\n };\r\n\r\n //颜色选择器移除\r\n Class.prototype.removePicker = function(index){\r\n var that = this;\r\n var options = that.config;\r\n var elem = $('#layui-colorpicker'+ (index || that.index));\r\n\r\n if(elem[0]){\r\n elem.remove();\r\n delete colorpicker.thisId;\r\n\r\n // 面板关闭后的回调\r\n typeof options.close === 'function' && options.close(that.color);\r\n }\r\n\r\n return that;\r\n };\r\n \r\n //定位算法\r\n Class.prototype.position = function(){\r\n var that = this\r\n ,options = that.config;\r\n lay.position(that.bindElem || that.elemColorBox[0], that.elemPicker[0], {\r\n position: options.position\r\n ,align: 'center'\r\n });\r\n return that;\r\n };\r\n\r\n //颜色选择器赋值\r\n Class.prototype.val = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,elemColorBox = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)\r\n ,elemPickerInput = that.elemPicker.find('.' + PICKER_INPUT)\r\n ,e = elemColorBox[0]\r\n ,bgcolor = e.style.backgroundColor;\r\n\r\n //判断是否有背景颜色\r\n if(bgcolor){\r\n \r\n //转化成hsb格式\r\n var hsb = RGBToHSB(RGBSTo(bgcolor))\r\n ,type = elemColorBox.attr('lay-type');\r\n \r\n //同步滑块的位置及颜色选择器的选择\r\n that.select(hsb.h, hsb.s, hsb.b);\r\n \r\n // 若格式要求为rgb\r\n if(type === 'torgb'){\r\n elemPickerInput.find('input').val(bgcolor);\r\n } else if(type === 'rgba'){ // 若格式要求为 rgba\r\n var rgb = RGBSTo(bgcolor);\r\n \r\n // 若开启透明度而没有设置,则给默认值\r\n if((bgcolor.match(/[0-9]{1,3}/g) || []).length === 3){\r\n elemPickerInput.find('input').val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 1)');\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", 280);\r\n } else {\r\n elemPickerInput.find('input').val(bgcolor);\r\n var left = bgcolor.slice(bgcolor.lastIndexOf(\",\") + 1, bgcolor.length - 1) * 280;\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", left);\r\n }\r\n \r\n // 设置 span 背景色\r\n that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = 'linear-gradient(to right, rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 0), rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +'))'; \r\n } else {\r\n elemPickerInput.find('input').val('#'+ HSBToHEX(hsb));\r\n }\r\n } else {\r\n // 若没有背景颜色则默认到最初始的状态\r\n that.select(0,100,100);\r\n elemPickerInput.find('input').val(\"\");\r\n that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = '';\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", 280);\r\n }\r\n };\r\n\r\n //颜色选择器滑动 / 点击\r\n Class.prototype.side = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,span = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)\r\n ,type = span.attr('lay-type')\r\n\r\n ,side = that.elemPicker.find('.' + PICKER_SIDE)\r\n ,slider = that.elemPicker.find('.' + PICKER_SIDE_SLIDER)\r\n ,basis = that.elemPicker.find('.' + PICKER_BASIS)\r\n ,choose = that.elemPicker.find('.' + PICKER_BASIS_CUR)\r\n ,alphacolor = that.elemPicker.find('.' + PICKER_ALPHA_BG)\r\n ,alphaslider = that.elemPicker.find('.' + PICKER_ALPHA_SLIDER)\r\n \r\n ,_h = slider[0].offsetTop/180*360\r\n ,_b = 100 - (choose[0].offsetTop + 3)/180*100\r\n ,_s = (choose[0].offsetLeft + 3)/260*100\r\n ,_a = Math.round(alphaslider[0].offsetLeft/280*100)/100 \r\n \r\n ,i = that.elemColorBox.find('.' + PICKER_TRIG_I)\r\n ,pre = that.elemPicker.find('.layui-colorpicker-pre').children('div')\r\n\r\n ,change = function(x,y,z,a){\r\n that.select(x, y, z);\r\n var rgb = HSBToRGB({h:x, s:y, b:z});\r\n var color = HSBToHEX({h:x, s:y, b:z});\r\n var elemInput = that.elemPicker.find('.' + PICKER_INPUT).find('input');\r\n\r\n i.addClass(ICON_PICKER_DOWN).removeClass(ICON_PICKER_CLOSE);\r\n span[0].style.background = 'rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +')';\r\n\r\n if(type === 'torgb'){\r\n elemInput.val('rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +')');\r\n } else if(type === 'rgba'){\r\n var left = a * 280;\r\n alphaslider.css(\"left\", left);\r\n elemInput.val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', '+ a +')');\r\n span[0].style.background = 'rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', '+ a +')';\r\n alphacolor[0].style.background = 'linear-gradient(to right, rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 0), rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +'))'\r\n } else {\r\n elemInput.val('#'+ color);\r\n }\r\n \r\n //回调更改的颜色\r\n options.change && options.change(that.elemPicker.find('.' + PICKER_INPUT).find('input').val());\r\n }\r\n\r\n //拖拽元素\r\n ,elemMove = $(['
                          '].join(''))\r\n ,createMoveElem = function(call){\r\n $('#LAY-colorpicker-moving')[0] || $('body').append(elemMove);\r\n elemMove.on('mousemove', call);\r\n elemMove.on('mouseup', function(){\r\n elemMove.remove();\r\n }).on('mouseleave', function(){\r\n elemMove.remove();\r\n });\r\n };\r\n\r\n //右侧主色选择\r\n slider.on('mousedown', function(e){\r\n var oldtop = this.offsetTop\r\n ,oldy = e.clientY;\r\n var move = function(e){\r\n var top = oldtop + (e.clientY - oldy)\r\n ,maxh = side[0].offsetHeight;\r\n if(top < 0)top = 0;\r\n if(top > maxh)top = maxh;\r\n var h = top/180*360;\r\n _h = h;\r\n change(h, _s, _b, _a);\r\n e.preventDefault();\r\n };\r\n \r\n createMoveElem(move);\r\n //layui.stope(e);\r\n e.preventDefault();\r\n });\r\n \r\n side.on('click', function(e){\r\n var top = e.clientY - $(this).offset().top + $win.scrollTop();\r\n if(top < 0)top = 0;\r\n if(top > this.offsetHeight) top = this.offsetHeight; \r\n var h = top/180*360;\r\n _h = h;\r\n change(h, _s, _b, _a); \r\n e.preventDefault();\r\n });\r\n \r\n //中间小圆点颜色选择\r\n choose.on('mousedown', function(e){\r\n var oldtop = this.offsetTop\r\n ,oldleft = this.offsetLeft\r\n ,oldy = e.clientY\r\n ,oldx = e.clientX;\r\n var move = function(e){\r\n var top = oldtop + (e.clientY - oldy)\r\n ,left = oldleft + (e.clientX - oldx)\r\n ,maxh = basis[0].offsetHeight - 3\r\n ,maxw = basis[0].offsetWidth - 3;\r\n if(top < -3)top = -3;\r\n if(top > maxh)top = maxh;\r\n if(left < -3)left = -3;\r\n if(left > maxw)left = maxw;\r\n var s = (left + 3)/260*100\r\n ,b = 100 - (top + 3)/180*100;\r\n _b = b;\r\n _s = s;\r\n change(_h, s, b, _a); \r\n e.preventDefault();\r\n };\r\n layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n \r\n basis.on('mousedown', function(e){\r\n var top = e.clientY - $(this).offset().top - 3 + $win.scrollTop()\r\n ,left = e.clientX - $(this).offset().left - 3 + $win.scrollLeft()\r\n if(top < -3)top = -3;\r\n if(top > this.offsetHeight - 3)top = this.offsetHeight - 3;\r\n if(left < -3)left = -3;\r\n if(left > this.offsetWidth - 3)left = this.offsetWidth - 3;\r\n var s = (left + 3)/260*100\r\n ,b = 100 - (top + 3)/180*100;\r\n _b = b;\r\n _s = s;\r\n change(_h, s, b, _a); \r\n layui.stope(e);\r\n e.preventDefault();\r\n choose.trigger(e, 'mousedown');\r\n });\r\n \r\n //底部透明度选择\r\n alphaslider.on('mousedown', function(e){\r\n var oldleft = this.offsetLeft\r\n ,oldx = e.clientX;\r\n var move = function(e){\r\n var left = oldleft + (e.clientX - oldx)\r\n ,maxw = alphacolor[0].offsetWidth;\r\n if(left < 0)left = 0;\r\n if(left > maxw)left = maxw;\r\n var a = Math.round(left /280*100) /100;\r\n _a = a;\r\n change(_h, _s, _b, a); \r\n e.preventDefault();\r\n };\r\n \r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n alphacolor.on('click', function(e){\r\n var left = e.clientX - $(this).offset().left\r\n if(left < 0)left = 0;\r\n if(left > this.offsetWidth)left = this.offsetWidth;\r\n var a = Math.round(left /280*100) /100;\r\n _a = a;\r\n change(_h, _s, _b, a); \r\n e.preventDefault();\r\n });\r\n \r\n //预定义颜色选择\r\n pre.each(function(){\r\n $(this).on('click', function(){\r\n $(this).parent('.layui-colorpicker-pre').addClass('selected').siblings().removeClass('selected');\r\n var color = this.style.backgroundColor\r\n ,hsb = RGBToHSB(RGBSTo(color))\r\n ,a = color.slice(color.lastIndexOf(\",\") + 1, color.length - 1),left;\r\n _h = hsb.h;\r\n _s = hsb.s;\r\n _b = hsb.b;\r\n if((color.match(/[0-9]{1,3}/g) || []).length === 3) a = 1;\r\n _a = a;\r\n left = a * 280;\r\n change(hsb.h, hsb.s, hsb.b, a);\r\n })\r\n });\r\n };\r\n\r\n //颜色选择器hsb转换\r\n Class.prototype.select = function(h, s, b, type){\r\n var that = this;\r\n var options = that.config;\r\n var hex = HSBToHEX({h:h, s:100, b:100});\r\n var color = HSBToHEX({h:h, s:s, b:b});\r\n var sidetop = h/360*180;\r\n var top = 180 - b/100*180 - 3;\r\n var left = s/100*260 - 3;\r\n \r\n that.elemPicker.find('.' + PICKER_SIDE_SLIDER).css(\"top\", sidetop); //滑块的top\r\n that.elemPicker.find('.' + PICKER_BASIS)[0].style.background = '#' + hex; //颜色选择器的背景\r\n \r\n //选择器的top left\r\n that.elemPicker.find('.' + PICKER_BASIS_CUR).css({\r\n \"top\": top\r\n ,\"left\": left\r\n });\r\n \r\n // if(type === 'change') return;\r\n\r\n // 选中的颜色\r\n // that.elemPicker.find('.' + PICKER_INPUT).find('input').val('#'+ color);\r\n };\r\n \r\n Class.prototype.pickerEvents = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN) //颜色盒子\r\n ,elemPickerInput = that.elemPicker.find('.' + PICKER_INPUT + ' input') //颜色选择器表单\r\n \r\n ,pickerEvents = {\r\n //清空\r\n clear: function(othis){\r\n elemColorBoxSpan[0].style.background ='';\r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_DOWN).addClass(ICON_PICKER_CLOSE);\r\n that.color = '';\r\n \r\n options.done && options.done('');\r\n that.removePicker();\r\n }\r\n \r\n //确认\r\n ,confirm: function(othis, change){\r\n var value = elemPickerInput.val()\r\n ,colorValue\r\n ,hsb;\r\n \r\n if(value.indexOf(',') > -1){\r\n hsb = RGBToHSB(RGBSTo(value));\r\n that.select(hsb.h, hsb.s, hsb.b);\r\n elemColorBoxSpan[0].style.background = (colorValue = '#' + HSBToHEX(hsb)); \r\n \r\n if((value.match(/[0-9]{1,3}/g) || []).length > 3 && elemColorBoxSpan.attr('lay-type') === 'rgba'){\r\n var left = value.slice(value.lastIndexOf(\",\") + 1, value.length - 1) * 280;\r\n that.elemPicker.find('.' + PICKER_ALPHA_SLIDER).css(\"left\", left);\r\n elemColorBoxSpan[0].style.background = value;\r\n colorValue = value;\r\n }\r\n } else {\r\n hsb = HEXToHSB(value);\r\n elemColorBoxSpan[0].style.background = (colorValue = '#' + HSBToHEX(hsb)); \r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_CLOSE).addClass(ICON_PICKER_DOWN);\r\n }\r\n \r\n if(change === 'change'){\r\n that.select(hsb.h, hsb.s, hsb.b, change);\r\n options.change && options.change(colorValue);\r\n return;\r\n }\r\n that.color = value;\r\n \r\n options.done && options.done(value);\r\n that.removePicker(); \r\n }\r\n };\r\n \r\n //选择器面板点击事件\r\n that.elemPicker.on('click', '*[colorpicker-events]', function(){\r\n var othis = $(this)\r\n ,attrEvent = othis.attr('colorpicker-events');\r\n pickerEvents[attrEvent] && pickerEvents[attrEvent].call(this, othis);\r\n });\r\n \r\n //输入框事件\r\n elemPickerInput.on('keyup', function(e){\r\n var othis = $(this);\r\n pickerEvents.confirm.call(this, othis, e.keyCode === 13 ? null : 'change');\r\n });\r\n }\r\n\r\n // 颜色选择器输入\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 弹出颜色选择器\r\n that.elemColorBox.on('click' , function(){\r\n that.renderPicker();\r\n if($(ELEM_MAIN)[0]){\r\n that.val();\r\n that.side();\r\n }\r\n });\r\n };\r\n\r\n //全局事件\r\n (function(){\r\n //绑定关闭控件事件\r\n $doc.on(clickOrMousedown, function(e){\r\n if(!colorpicker.thisId) return;\r\n var that = thisModule.getThis(colorpicker.thisId);\r\n if(!that) return;\r\n\r\n var options = that.config;\r\n var elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN);\r\n\r\n //如果点击的元素是颜色框\r\n if($(e.target).hasClass(ELEM) \r\n || $(e.target).parents('.'+ELEM)[0]\r\n ) return; \r\n \r\n //如果点击的元素是选择器\r\n if($(e.target).hasClass(ELEM_MAIN.replace(/\\./g, '')) \r\n || $(e.target).parents(ELEM_MAIN)[0]\r\n ) return; \r\n \r\n if(!that.elemPicker) return;\r\n \r\n if(that.color){\r\n var hsb = RGBToHSB(RGBSTo(that.color));\r\n that.select(hsb.h, hsb.s, hsb.b); \r\n } else {\r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_DOWN).addClass(ICON_PICKER_CLOSE);\r\n }\r\n elemColorBoxSpan[0].style.background = that.color || '';\r\n \r\n // 取消选择的回调\r\n typeof options.cancel === 'function' && options.cancel(that.color);\r\n\r\n // 移除面板\r\n that.removePicker();\r\n });\r\n\r\n //自适应定位\r\n $win.on('resize', function(){\r\n if(!colorpicker.thisId) return;\r\n var that = thisModule.getThis(colorpicker.thisId);\r\n if(!that) return;\r\n\r\n if(!that.elemPicker || !$(ELEM_MAIN)[0]){\r\n return false;\r\n }\r\n that.position();\r\n });\r\n })();\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n \r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n //核心入口\r\n colorpicker.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n \r\n exports(MOD_NAME, colorpicker);\r\n});\r\n","/**\r\n * element\r\n * 常用元素操作组件\r\n */\r\n \r\nlayui.define('jquery', function(exports){\r\n 'use strict';\r\n \r\n var $ = layui.$;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n \r\n var MOD_NAME = 'element';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var TITLE = '.layui-tab-title';\r\n \r\n var Element = function(){\r\n this.config = {};\r\n };\r\n \r\n // 全局设置\r\n Element.prototype.set = function(options){\r\n var that = this;\r\n $.extend(true, that.config, options);\r\n return that;\r\n };\r\n \r\n // 表单事件\r\n Element.prototype.on = function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n };\r\n \r\n // 外部 Tab 新增\r\n Element.prototype.tabAdd = function(filter, options){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var barElem = titElem.children('.layui-tab-bar');\r\n var contElem = tabElem.children('.layui-tab-content');\r\n var li = ' 0) layAttr.unshift(''); //向前插,预留空格\r\n return layAttr.join(' ');\r\n }() +'>'+ (options.title || 'unnaming') +'';\r\n \r\n barElem[0] ? barElem.before(li) : titElem.append(li);\r\n contElem.append('
                          '+ (options.content || '') +'
                          ');\r\n // call.hideTabMore(true);\r\n // 是否添加即切换\r\n options.change && this.tabChange(filter, options.id);\r\n titElem.data('LAY_TAB_CHANGE', options.change);\r\n call.tabAuto(options.change ? 'change' : null);\r\n return this;\r\n };\r\n \r\n // 外部 Tab 删除\r\n Element.prototype.tabDelete = function(filter, layid){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var liElem = titElem.find('>li[lay-id=\"'+ layid +'\"]');\r\n call.tabDelete(null, liElem);\r\n return this;\r\n };\r\n \r\n // 外部 Tab 切换\r\n Element.prototype.tabChange = function(filter, layid){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var liElem = titElem.find('>li[lay-id=\"'+ layid +'\"]');\r\n\r\n call.tabClick.call(liElem[0], {\r\n liElem: liElem\r\n });\r\n return this;\r\n };\r\n \r\n // 自定义 Tab 选项卡\r\n Element.prototype.tab = function(options){\r\n options = options || {};\r\n dom.on('click', options.headerElem, function(e){\r\n var index = $(this).index();\r\n call.tabClick.call(this, {\r\n index: index,\r\n options: options\r\n });\r\n });\r\n };\r\n \r\n \r\n // 动态改变进度条\r\n Element.prototype.progress = function(filter, percent){\r\n var ELEM = 'layui-progress';\r\n var elem = $('.'+ ELEM +'[lay-filter='+ filter +']');\r\n var elemBar = elem.find('.'+ ELEM +'-bar');\r\n var text = elemBar.find('.'+ ELEM +'-text');\r\n\r\n elemBar.css('width', function(){\r\n return /^.+\\/.+$/.test(percent) \r\n ? (new Function('return '+ percent)() * 100) + '%'\r\n : percent;\r\n }).attr('lay-percent', percent);\r\n text.text(percent);\r\n return this;\r\n };\r\n \r\n var NAV_ELEM = '.layui-nav';\r\n var NAV_ITEM = 'layui-nav-item';\r\n var NAV_BAR = 'layui-nav-bar';\r\n var NAV_TREE = 'layui-nav-tree';\r\n var NAV_CHILD = 'layui-nav-child';\r\n var NAV_CHILD_C = 'layui-nav-child-c';\r\n var NAV_MORE = 'layui-nav-more';\r\n var NAV_DOWN = 'layui-icon-down';\r\n var NAV_ANIM = 'layui-anim layui-anim-upbit';\r\n \r\n // 基础事件体\r\n var call = {\r\n // Tab 点击\r\n tabClick: function(obj){\r\n obj = obj || {};\r\n var options = obj.options || {};\r\n var othis = obj.liElem || $(this);\r\n var parents = options.headerElem \r\n ? othis.parent() \r\n : othis.parents('.layui-tab').eq(0);\r\n var item = options.bodyElem \r\n ? $(options.bodyElem) \r\n : parents.children('.layui-tab-content').children('.layui-tab-item');\r\n var elemA = othis.find('a');\r\n var isJump = elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank'; // 是否存在跳转\r\n var unselect = typeof othis.attr('lay-unselect') === 'string'; // 是否禁用选中\r\n var filter = parents.attr('lay-filter');\r\n\r\n // 下标\r\n var index = 'index' in obj \r\n ? obj.index \r\n : othis.parent().children('li').index(othis);\r\n \r\n // 执行切换\r\n if(!(isJump || unselect)){\r\n othis.addClass(THIS).siblings().removeClass(THIS);\r\n item.eq(index).addClass(SHOW).siblings().removeClass(SHOW);\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'tab('+ filter +')', {\r\n elem: parents,\r\n index: index\r\n });\r\n }\r\n \r\n // Tab 删除\r\n ,tabDelete: function(e, othis){\r\n var li = othis || $(this).parent();\r\n var index = li.parent().children('li').index(li);\r\n var tabElem = li.closest('.layui-tab');\r\n var item = tabElem.children('.layui-tab-content').children('.layui-tab-item');\r\n var filter = tabElem.attr('lay-filter');\r\n \r\n if(li.hasClass(THIS)){\r\n if (li.next()[0] && li.next().is('li')){\r\n call.tabClick.call(li.next()[0], {\r\n index: index + 1\r\n });\r\n } else if (li.prev()[0] && li.prev().is('li')){\r\n call.tabClick.call(li.prev()[0], null, index - 1);\r\n }\r\n }\r\n \r\n li.remove();\r\n item.eq(index).remove();\r\n setTimeout(function(){\r\n call.tabAuto();\r\n }, 50);\r\n \r\n layui.event.call(this, MOD_NAME, 'tabDelete('+ filter +')', {\r\n elem: tabElem,\r\n index: index\r\n });\r\n }\r\n \r\n // Tab 自适应\r\n ,tabAuto: function(spread){\r\n var SCROLL = 'layui-tab-scroll';\r\n var MORE = 'layui-tab-more';\r\n var BAR = 'layui-tab-bar';\r\n var CLOSE = 'layui-tab-close';\r\n var that = this;\r\n \r\n $('.layui-tab').each(function(){\r\n var othis = $(this);\r\n var title = othis.children('.layui-tab-title');\r\n var item = othis.children('.layui-tab-content').children('.layui-tab-item');\r\n var STOPE = 'lay-stope=\"tabmore\"';\r\n var span = $('');\r\n\r\n if(that === window && device.ie != 8){\r\n // call.hideTabMore(true)\r\n }\r\n \r\n // 开启关闭图标\r\n if(othis.attr('lay-allowclose')){\r\n title.find('li').each(function(){\r\n var li = $(this);\r\n if(!li.find('.'+CLOSE)[0]){\r\n var close = $('');\r\n close.on('click', call.tabDelete);\r\n li.append(close);\r\n }\r\n });\r\n }\r\n \r\n if(typeof othis.attr('lay-unauto') === 'string') return;\r\n \r\n // 响应式\r\n if(\r\n title.prop('scrollWidth') > title.outerWidth() + 1 || (\r\n title.find('li').length && title.height() > function(height){\r\n return height + height/2;\r\n }(title.find('li').eq(0).height())\r\n )\r\n ){\r\n // 若执行是来自于切换,则自动展开\r\n (\r\n spread === 'change' && title.data('LAY_TAB_CHANGE')\r\n ) && title.addClass(MORE);\r\n \r\n if(title.find('.'+BAR)[0]) return;\r\n title.append(span);\r\n othis.attr('overflow', '');\r\n\r\n // 展开图标事件\r\n span.on('click', function(e){\r\n var isSpread = title.hasClass(MORE);\r\n title[isSpread ? 'removeClass' : 'addClass'](MORE);\r\n });\r\n } else {\r\n title.find('.'+ BAR).remove();\r\n othis.removeAttr('overflow');\r\n }\r\n });\r\n }\r\n // 隐藏更多 Tab\r\n ,hideTabMore: function(e){\r\n var tsbTitle = $('.layui-tab-title');\r\n if(e === true || $(e.target).attr('lay-stope') !== 'tabmore'){\r\n tsbTitle.removeClass('layui-tab-more');\r\n tsbTitle.find('.layui-tab-bar').attr('title','');\r\n }\r\n }\r\n \r\n //点击一级菜单\r\n /*\r\n ,clickThis: function(){\r\n var othis = $(this), parents = othis.parents(NAV_ELEM)\r\n ,filter = parents.attr('lay-filter')\r\n ,elemA = othis.find('a')\r\n ,unselect = typeof othis.attr('lay-unselect') === 'string';\r\n\r\n if(othis.find('.'+NAV_CHILD)[0]) return;\r\n \r\n if(!(elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank') && !unselect){\r\n parents.find('.'+THIS).removeClass(THIS);\r\n othis.addClass(THIS);\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'nav('+ filter +')', othis);\r\n }\r\n )\r\n */\r\n \r\n // 点击菜单 - a 标签触发\r\n ,clickThis: function() {\r\n var othis = $(this);\r\n var parents = othis.closest(NAV_ELEM);\r\n var filter = parents.attr('lay-filter');\r\n var parent = othis.parent() ;\r\n var child = othis.siblings('.'+ NAV_CHILD);\r\n var unselect = typeof parent.attr('lay-unselect') === 'string'; // 是否禁用选中\r\n \r\n // 满足点击选中的条件\r\n if (!(othis.attr('href') !== 'javascript:;' && othis.attr('target') === '_blank') && !unselect) {\r\n if (!child[0]) {\r\n parents.find('.'+ THIS).removeClass(THIS);\r\n parent.addClass(THIS);\r\n }\r\n }\r\n \r\n // 若为垂直菜单\r\n if (parents.hasClass(NAV_TREE)) {\r\n var NAV_ITEMED = NAV_ITEM + 'ed'; // 用于标注展开状态\r\n var needExpand = !parent.hasClass(NAV_ITEMED); // 是否执行展开\r\n var ANIM_MS = 200; // 动画过渡毫秒数\r\n\r\n // 动画执行完成后的操作\r\n var complete = function() {\r\n $(this).css({\r\n \"display\": \"\" // 剔除动画生成的 style display,以适配外部样式的状态重置\r\n });\r\n // 避免导航滑块错位\r\n parents.children('.'+ NAV_BAR).css({\r\n opacity: 0\r\n })\r\n };\r\n\r\n // 是否正处于动画中的状态\r\n if (child.is(':animated')) return;\r\n\r\n // 剔除可能存在的 CSS3 动画类\r\n child.removeClass(NAV_ANIM);\r\n\r\n // 若有子菜单,则对其执行展开或收缩\r\n if (child[0]) {\r\n if (needExpand) {\r\n // 先执行 slideDown 动画,再标注展开状态样式,避免元素 `block` 状态导致动画无效\r\n child.slideDown(ANIM_MS, complete);\r\n parent.addClass(NAV_ITEMED);\r\n } else {\r\n // 先取消展开状态样式,再将元素临时显示,避免 `none` 状态导致 slideUp 动画无效\r\n parent.removeClass(NAV_ITEMED);\r\n child.show().slideUp(ANIM_MS, complete);\r\n }\r\n\r\n // 手风琴 --- 收缩兄弟展开项\r\n if (typeof parents.attr('lay-accordion') === 'string' || parents.attr('lay-shrink') === 'all') {\r\n var parentSibs = parent.siblings('.'+ NAV_ITEMED);\r\n parentSibs.removeClass(NAV_ITEMED);\r\n parentSibs.children('.'+ NAV_CHILD).show().stop().slideUp(ANIM_MS, complete);\r\n }\r\n }\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'nav('+ filter +')', othis);\r\n }\r\n \r\n // 折叠面板\r\n ,collapse: function(){\r\n var othis = $(this);\r\n var icon = othis.find('.layui-colla-icon');\r\n var elemCont = othis.siblings('.layui-colla-content');\r\n var parents = othis.parents('.layui-collapse').eq(0);\r\n var filter = parents.attr('lay-filter');\r\n var isNone = elemCont.css('display') === 'none';\r\n \r\n // 是否手风琴\r\n if(typeof parents.attr('lay-accordion') === 'string'){\r\n var show = parents.children('.layui-colla-item').children('.'+SHOW);\r\n show.siblings('.layui-colla-title').children('.layui-colla-icon').html('');\r\n show.removeClass(SHOW);\r\n }\r\n \r\n elemCont[isNone ? 'addClass' : 'removeClass'](SHOW);\r\n icon.html(isNone ? '' : '');\r\n \r\n layui.event.call(this, MOD_NAME, 'collapse('+ filter +')', {\r\n title: othis\r\n ,content: elemCont\r\n ,show: isNone\r\n });\r\n }\r\n };\r\n \r\n // 初始化元素操作\r\n Element.prototype.init = function(type, filter){\r\n var that = this, elemFilter = function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }(), items = {\r\n \r\n // Tab 选项卡\r\n tab: function(){\r\n call.tabAuto.call({});\r\n }\r\n \r\n // 导航菜单\r\n ,nav: function(){\r\n var TIME = 200;\r\n var timer = {};\r\n var timerMore = {};\r\n var timeEnd = {};\r\n var NAV_TITLE = 'layui-nav-title';\r\n \r\n // 滑块跟随\r\n var follow = function(bar, nav, index) {\r\n var othis = $(this);\r\n var child = othis.find('.'+NAV_CHILD);\r\n\r\n // 是否垂直导航菜单\r\n if (nav.hasClass(NAV_TREE)) {\r\n // 无子菜单时跟随\r\n if (!child[0]) {\r\n var thisA = othis.children('.'+ NAV_TITLE);\r\n bar.css({\r\n top: othis.offset().top - nav.offset().top,\r\n height: (thisA[0] ? thisA : othis).outerHeight(),\r\n opacity: 1\r\n });\r\n }\r\n } else {\r\n child.addClass(NAV_ANIM);\r\n \r\n // 若居中对齐\r\n if (child.hasClass(NAV_CHILD_C)) {\r\n child.css({\r\n left: -(child.outerWidth() - othis.width()) / 2\r\n });\r\n }\r\n \r\n // 滑块定位\r\n if (child[0]) { // 若有子菜单,则滑块消失\r\n bar.css({\r\n left: bar.position().left + bar.width() / 2,\r\n width: 0,\r\n opacity: 0\r\n });\r\n } else { // bar 跟随\r\n bar.css({\r\n left: othis.position().left + parseFloat(othis.css('marginLeft')),\r\n top: othis.position().top + othis.height() - bar.height()\r\n });\r\n }\r\n \r\n // 渐显滑块并适配宽度\r\n timer[index] = setTimeout(function() {\r\n bar.css({\r\n width: child[0] ? 0 : othis.width(),\r\n opacity: child[0] ? 0 : 1\r\n });\r\n }, device.ie && device.ie < 10 ? 0 : TIME);\r\n \r\n // 显示子菜单\r\n clearTimeout(timeEnd[index]);\r\n if (child.css('display') === 'block') {\r\n clearTimeout(timerMore[index]);\r\n }\r\n timerMore[index] = setTimeout(function(){\r\n child.addClass(SHOW);\r\n othis.find('.'+NAV_MORE).addClass(NAV_MORE+'d');\r\n }, 300);\r\n }\r\n };\r\n \r\n // 遍历导航\r\n $(NAV_ELEM + elemFilter).each(function(index) {\r\n var othis = $(this);\r\n var bar = $('');\r\n var itemElem = othis.find('.'+NAV_ITEM);\r\n \r\n // hover 滑动效果\r\n if (!othis.find('.'+NAV_BAR)[0]) {\r\n othis.append(bar);\r\n ( othis.hasClass(NAV_TREE)\r\n ? itemElem.find('dd,>.'+ NAV_TITLE) \r\n : itemElem\r\n ).on('mouseenter', function() {\r\n follow.call(this, bar, othis, index);\r\n }).on('mouseleave', function() { // 鼠标移出\r\n // 是否为垂直导航\r\n if (othis.hasClass(NAV_TREE)) {\r\n bar.css({\r\n height: 0,\r\n opacity: 0\r\n });\r\n } else {\r\n // 隐藏子菜单\r\n clearTimeout(timerMore[index]);\r\n timerMore[index] = setTimeout(function(){\r\n othis.find('.'+ NAV_CHILD).removeClass(SHOW);\r\n othis.find('.'+ NAV_MORE).removeClass(NAV_MORE +'d');\r\n }, 300);\r\n }\r\n });\r\n\r\n // 鼠标离开当前菜单时\r\n othis.on('mouseleave', function() {\r\n clearTimeout(timer[index])\r\n timeEnd[index] = setTimeout(function() {\r\n if (!othis.hasClass(NAV_TREE)) {\r\n bar.css({\r\n width: 0,\r\n left: bar.position().left + bar.width() / 2,\r\n opacity: 0\r\n });\r\n }\r\n }, TIME);\r\n });\r\n }\r\n \r\n // 展开子菜单\r\n itemElem.find('a').each(function() {\r\n var thisA = $(this);\r\n var parent = thisA.parent();\r\n var child = thisA.siblings('.'+ NAV_CHILD);\r\n \r\n // 输出小箭头\r\n if (child[0] && !thisA.children('.'+ NAV_MORE)[0]) {\r\n thisA.append('');\r\n }\r\n \r\n thisA.off('click', call.clickThis).on('click', call.clickThis); // 点击菜单\r\n });\r\n });\r\n }\r\n \r\n //面包屑\r\n ,breadcrumb: function(){\r\n var ELEM = '.layui-breadcrumb';\r\n \r\n $(ELEM + elemFilter).each(function(){\r\n var othis = $(this)\r\n ,ATTE_SPR = 'lay-separator'\r\n ,separator = othis.attr(ATTE_SPR) || '/'\r\n ,aNode = othis.find('a');\r\n if(aNode.next('span['+ ATTE_SPR +']')[0]) return;\r\n aNode.each(function(index){\r\n if(index === aNode.length - 1) return;\r\n $(this).after(''+ separator +'');\r\n });\r\n othis.css('visibility', 'visible');\r\n });\r\n }\r\n \r\n //进度条\r\n ,progress: function(){\r\n var ELEM = 'layui-progress';\r\n $('.' + ELEM + elemFilter).each(function(){\r\n var othis = $(this)\r\n ,elemBar = othis.find('.layui-progress-bar')\r\n ,percent = elemBar.attr('lay-percent');\r\n\r\n elemBar.css('width', function(){\r\n return /^.+\\/.+$/.test(percent) \r\n ? (new Function('return '+ percent)() * 100) + '%'\r\n : percent;\r\n });\r\n \r\n if(othis.attr('lay-showpercent')){\r\n setTimeout(function(){\r\n elemBar.html(''+ percent +'');\r\n },350);\r\n }\r\n });\r\n }\r\n \r\n //折叠面板\r\n ,collapse: function(){\r\n var ELEM = 'layui-collapse';\r\n \r\n $('.' + ELEM + elemFilter).each(function(){\r\n var elemItem = $(this).find('.layui-colla-item')\r\n elemItem.each(function(){\r\n var othis = $(this)\r\n ,elemTitle = othis.find('.layui-colla-title')\r\n ,elemCont = othis.find('.layui-colla-content')\r\n ,isNone = elemCont.css('display') === 'none';\r\n \r\n //初始状态\r\n elemTitle.find('.layui-colla-icon').remove();\r\n elemTitle.append(''+ (isNone ? '' : '') +'');\r\n\r\n //点击标题\r\n elemTitle.off('click', call.collapse).on('click', call.collapse);\r\n }); \r\n \r\n });\r\n }\r\n };\r\n\r\n return items[type] ? items[type]() : layui.each(items, function(index, item){\r\n item();\r\n });\r\n };\r\n \r\n Element.prototype.render = Element.prototype.init;\r\n\r\n var element = new Element();\r\n var dom = $(document);\r\n \r\n $(function(){\r\n element.render();\r\n });\r\n\r\n dom.on('click', '.layui-tab-title li', call.tabClick); // Tab 切换\r\n // dom.on('click', call.hideTabMore); // 隐藏展开的 Tab\r\n $(window).on('resize', call.tabAuto); // 自适应\r\n \r\n exports(MOD_NAME, element);\r\n});\r\n\r\n","/**\r\n * upload\r\n * 上传组件\r\n */\r\n \r\nlayui.define(['lay', 'layer'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var layer = layui.layer;\r\n var device = layui.device();\r\n\r\n // 模块名\r\n var MOD_NAME = 'upload';\r\n var MOD_INDEX = 'layui_'+ MOD_NAME +'_index'; // 模块索引名\r\n\r\n // 外部接口\r\n var upload = {\r\n config: {}, // 全局配置项\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0, // 索引\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n upload: function(files){\r\n that.upload.call(that, files);\r\n },\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n config: that.config\r\n }\r\n };\r\n \r\n // 字符常量\r\n var ELEM = 'layui-upload';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled';\r\n \r\n var ELEM_FILE = 'layui-upload-file';\r\n var ELEM_FORM = 'layui-upload-form';\r\n var ELEM_IFRAME = 'layui-upload-iframe';\r\n var ELEM_CHOOSE = 'layui-upload-choose';\r\n var ELEM_DRAG = 'layui-upload-drag';\r\n var UPLOADING = 'UPLOADING';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++upload.index;\r\n that.config = $.extend({}, that.config, upload.config, options);\r\n that.render();\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n accept: 'images', // 允许上传的文件类型:images/file/video/audio\r\n exts: '', // 允许上传的文件后缀名\r\n auto: true, // 是否选完文件后自动上传\r\n bindAction: '', // 手动上传触发的元素\r\n url: '', // 上传地址\r\n force: '', // 强制规定返回的数据格式,目前只支持是否强制 json\r\n field: 'file', // 文件字段名\r\n acceptMime: '', // 筛选出的文件类型,默认为所有文件\r\n method: 'post', // 请求上传的 http 类型\r\n data: {}, // 请求上传的额外参数\r\n drag: true, // 是否允许拖拽上传\r\n size: 0, // 文件限制大小,默认不限制\r\n number: 0, // 允许同时上传的文件数,默认不限制\r\n multiple: false, // 是否允许多文件上传,不支持 ie8-9\r\n text: { // 自定义提示文本\r\n \"cross-domain\": \"Cross-domain requests are not supported\", // 跨域\r\n \"data-format-error\": \"Please return JSON data format\", // 数据格式错误\r\n \"check-error\": \"\", // 文件格式校验失败\r\n \"error\": \"\", // 上传失败\r\n \"limit-number\": null, // 限制 number 属性的提示 --- function\r\n \"limit-size\": null // 限制 size 属性的提示 --- function\r\n }\r\n };\r\n\r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.render(true);\r\n };\r\n \r\n // 初始渲染\r\n Class.prototype.render = function(rerender){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if (elem.length > 1) {\r\n layui.each(elem, function() {\r\n upload.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0], {\r\n attr: elem.attr('lay-data') ? 'lay-data' : null // 兼容旧版的 lay-data 属性\r\n }));\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if (!rerender && elem[0] && elem.data(MOD_INDEX)) {\r\n var newThat = thisModule.getThis(elem.data(MOD_INDEX));\r\n if(!newThat) return;\r\n\r\n return newThat.reload(options);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n options.bindAction = $(options.bindAction);\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n that.file();\r\n that.events();\r\n };\r\n \r\n //追加文件域\r\n Class.prototype.file = function(){\r\n var that = this;\r\n var options = that.config;\r\n var elemFile = that.elemFile = $([\r\n ''\r\n ].join(''));\r\n var next = options.elem.next();\r\n \r\n if(next.hasClass(ELEM_FILE) || next.hasClass(ELEM_FORM)){\r\n next.remove();\r\n }\r\n \r\n //包裹ie8/9容器\r\n if(device.ie && device.ie < 10){\r\n options.elem.wrap('
                          ');\r\n }\r\n \r\n that.isFile() ? (\r\n that.elemFile = options.elem,\r\n options.field = options.elem[0].name\r\n ) : options.elem.after(elemFile);\r\n \r\n //初始化ie8/9的Form域\r\n if(device.ie && device.ie < 10){\r\n that.initIE();\r\n }\r\n };\r\n \r\n //ie8-9初始化\r\n Class.prototype.initIE = function(){\r\n var that = this;\r\n var options = that.config;\r\n var iframe = $('');\r\n var elemForm = $(['
                          '\r\n ,''].join(''));\r\n \r\n //插入iframe \r\n $('#'+ ELEM_IFRAME)[0] || $('body').append(iframe);\r\n\r\n //包裹文件域\r\n if(!options.elem.next().hasClass(ELEM_FORM)){\r\n that.elemFile.wrap(elemForm); \r\n \r\n //追加额外的参数\r\n options.elem.next('.'+ ELEM_FORM).append(function(){\r\n var arr = [];\r\n layui.each(options.data, function(key, value){\r\n value = typeof value === 'function' ? value() : value;\r\n arr.push('')\r\n });\r\n return arr.join('');\r\n }());\r\n }\r\n };\r\n \r\n //异常提示\r\n Class.prototype.msg = function(content){\r\n return layer.msg(content, {\r\n icon: 2,\r\n shift: 6\r\n });\r\n };\r\n \r\n //判断绑定元素是否为文件域本身\r\n Class.prototype.isFile = function(){\r\n var elem = this.config.elem[0];\r\n if(!elem) return;\r\n return elem.tagName.toLocaleLowerCase() === 'input' && elem.type === 'file'\r\n }\r\n \r\n //预读图片信息\r\n Class.prototype.preview = function(callback){\r\n var that = this;\r\n if(window.FileReader){\r\n layui.each(that.chooseFiles, function(index, file){\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file); \r\n reader.onload = function(){\r\n callback && callback(index, file, this.result);\r\n }\r\n });\r\n }\r\n };\r\n \r\n // 执行上传\r\n Class.prototype.upload = function(files, type){\r\n var that = this;\r\n var options = that.config;\r\n var text = options.text || {};\r\n var elemFile = that.elemFile[0];\r\n\r\n // 获取文件队列\r\n var getFiles = function(){\r\n return files || that.files || that.chooseFiles || elemFile.files;\r\n };\r\n \r\n // 高级浏览器处理方式,支持跨域\r\n var ajaxSend = function(){\r\n var successful = 0;\r\n var failed = 0;\r\n var items = getFiles();\r\n\r\n // 多文件全部上传完毕的回调\r\n var allDone = function(){\r\n if(options.multiple && successful + failed === that.fileLength){\r\n typeof options.allDone === 'function' && options.allDone({\r\n total: that.fileLength,\r\n successful: successful,\r\n failed: failed\r\n });\r\n }\r\n };\r\n\r\n // 发送请求\r\n var request = function(sets){\r\n var formData = new FormData();\r\n\r\n // 恢复文件状态\r\n var resetFileState = function(file) {\r\n if (sets.unified) {\r\n layui.each(items, function(index, file){\r\n delete file[UPLOADING];\r\n });\r\n } else {\r\n delete file[UPLOADING];\r\n }\r\n };\r\n\r\n // 追加额外的参数\r\n layui.each(options.data, function(key, value){\r\n value = typeof value === 'function' ? value() : value;\r\n formData.append(key, value);\r\n });\r\n\r\n /*\r\n * 添加 file 到表单域\r\n */\r\n\r\n // 是否统一上传\r\n if (sets.unified) {\r\n layui.each(items, function(index, file){\r\n if (file[UPLOADING]) return;\r\n file[UPLOADING] = true; // 上传中的标记\r\n formData.append(options.field, file);\r\n });\r\n } else { // 逐一上传\r\n if (sets.file[UPLOADING]) return;\r\n formData.append(options.field, sets.file);\r\n sets.file[UPLOADING] = true; // 上传中的标记\r\n }\r\n\r\n // ajax 参数\r\n var opts = {\r\n url: options.url,\r\n type: 'post', // 统一采用 post 上传\r\n data: formData,\r\n dataType: options.dataType || 'json',\r\n contentType: false,\r\n processData: false,\r\n headers: options.headers || {},\r\n success: function(res){ // 成功回调\r\n options.unified ? (successful += that.fileLength) : successful++;\r\n done(sets.index, res);\r\n allDone(sets.index);\r\n resetFileState(sets.file);\r\n },\r\n error: function(e){ // 异常回调\r\n options.unified ? (failed += that.fileLength) : failed++;\r\n that.msg(text['error'] || [\r\n 'Upload failed, please try again.',\r\n 'status: '+ (e.status || '') +' - '+ (e.statusText || 'error')\r\n ].join('
                          '));\r\n error(sets.index);\r\n allDone(sets.index);\r\n resetFileState(sets.file);\r\n }\r\n };\r\n\r\n // 进度条\r\n if(typeof options.progress === 'function'){\r\n opts.xhr = function(){\r\n var xhr = $.ajaxSettings.xhr();\r\n // 上传进度\r\n xhr.upload.addEventListener(\"progress\", function (obj) {\r\n if(obj.lengthComputable){\r\n var percent = Math.floor((obj.loaded/obj.total)* 100); // 百分比\r\n options.progress(percent, (options.item ? options.item[0] : options.elem[0]) , obj, sets.index);\r\n }\r\n });\r\n return xhr;\r\n }\r\n }\r\n $.ajax(opts);\r\n };\r\n\r\n // 多文件是否一起上传\r\n if(options.unified){\r\n request({\r\n unified: true,\r\n index: 0\r\n });\r\n } else {\r\n layui.each(items, function(index, file){\r\n request({\r\n index: index,\r\n file: file\r\n });\r\n });\r\n }\r\n };\r\n \r\n // 低版本 IE 处理方式,不支持跨域\r\n var iframeSend = function(){\r\n var iframe = $('#'+ ELEM_IFRAME);\r\n \r\n that.elemFile.parent().submit();\r\n\r\n // 获取响应信息\r\n clearInterval(Class.timer);\r\n Class.timer = setInterval(function() {\r\n var res, iframeBody = iframe.contents().find('body');\r\n try {\r\n res = iframeBody.text();\r\n } catch(e) {\r\n that.msg(text['cross-domain']); \r\n clearInterval(Class.timer);\r\n error();\r\n }\r\n if(res){\r\n clearInterval(Class.timer);\r\n iframeBody.html('');\r\n done(0, res);\r\n }\r\n }, 30); \r\n };\r\n \r\n // 统一回调\r\n var done = function(index, res){\r\n that.elemFile.next('.'+ ELEM_CHOOSE).remove();\r\n elemFile.value = '';\r\n \r\n if(options.force === 'json'){\r\n if(typeof res !== 'object'){\r\n try {\r\n res = JSON.parse(res);\r\n } catch(e){\r\n res = {};\r\n return that.msg(text['data-format-error']);\r\n }\r\n }\r\n }\r\n \r\n typeof options.done === 'function' && options.done(res, index || 0, function(files){\r\n that.upload(files);\r\n });\r\n };\r\n \r\n // 统一网络异常回调\r\n var error = function(index){\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n typeof options.error === 'function' && options.error(index || 0, function(files){\r\n that.upload(files);\r\n });\r\n };\r\n \r\n var check;\r\n var exts = options.exts;\r\n var value = function(){\r\n var arr = [];\r\n layui.each(files || that.chooseFiles, function(i, item){\r\n arr.push(item.name);\r\n });\r\n return arr;\r\n }();\r\n \r\n // 回调函数返回的参数\r\n var args = {\r\n // 预览\r\n preview: function(callback){\r\n that.preview(callback);\r\n },\r\n // 上传\r\n upload: function(index, file){\r\n var thisFile = {};\r\n thisFile[index] = file;\r\n that.upload(thisFile);\r\n },\r\n // 追加文件到队列\r\n pushFile: function(){\r\n that.files = that.files || {};\r\n layui.each(that.chooseFiles, function(index, item){\r\n that.files[index] = item;\r\n });\r\n return that.files;\r\n },\r\n // 重置文件\r\n resetFile: function(index, file, filename){\r\n var newFile = new File([file], filename);\r\n that.files = that.files || {};\r\n that.files[index] = newFile;\r\n }\r\n };\r\n \r\n // 提交上传\r\n var send = function(){\r\n // 上传前的回调 - 如果回调函数明确返回 false,则停止上传\r\n if(options.before && (options.before(args) === false)) return;\r\n\r\n // IE 兼容处理\r\n if(device.ie){\r\n return device.ie > 9 ? ajaxSend() : iframeSend();\r\n }\r\n \r\n ajaxSend();\r\n };\r\n \r\n // 文件类型名称\r\n var typeName = ({\r\n file: '文件',\r\n images: '图片',\r\n video: '视频',\r\n audio: '音频'\r\n })[options.accept] || '文件';\r\n\r\n // 校验文件格式\r\n value = value.length === 0 \r\n ? ((elemFile.value.match(/[^\\/\\\\]+\\..+/g)||[]) || '')\r\n : value;\r\n \r\n // 若文件域值为空\r\n if (value.length === 0) return;\r\n \r\n // 根据文件类型校验\r\n switch(options.accept){\r\n case 'file': // 一般文件\r\n layui.each(value, function(i, item){\r\n if(exts && !RegExp('.\\\\.('+ exts +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n case 'video': // 视频文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'avi|mp4|wma|rmvb|rm|flash|3gp|flv') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n case 'audio': // 音频文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'mp3|wav|mid') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n default: // 图片文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'jpg|png|gif|bmp|jpeg|svg') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n }\r\n \r\n // 校验失败提示\r\n if(check){\r\n that.msg(text['check-error'] || ('选择的'+ typeName +'中包含不支持的格式'));\r\n return elemFile.value = '';\r\n }\r\n\r\n // 选择文件的回调 \r\n if(type === 'choose' || options.auto){\r\n options.choose && options.choose(args);\r\n if(type === 'choose'){\r\n return;\r\n }\r\n }\r\n \r\n // 检验文件数量\r\n that.fileLength = function(){\r\n var length = 0;\r\n var items = getFiles();\r\n layui.each(items, function(){\r\n length++;\r\n });\r\n return length;\r\n }();\r\n \r\n if(options.number && that.fileLength > options.number){\r\n return that.msg(typeof text['limit-number'] === 'function' \r\n ? text['limit-number'](options, that.fileLength) \r\n : (\r\n '同时最多只能上传: '+ options.number + ' 个文件'\r\n +'
                          您当前已经选择了: '+ that.fileLength +' 个文件'\r\n ));\r\n }\r\n \r\n // 检验文件大小\r\n if(options.size > 0 && !(device.ie && device.ie < 10)){\r\n var limitSize;\r\n \r\n layui.each(getFiles(), function(index, file){\r\n if(file.size > 1024*options.size){\r\n var size = options.size/1024;\r\n size = size >= 1 ? (size.toFixed(2) + 'MB') : options.size + 'KB'\r\n elemFile.value = '';\r\n limitSize = size;\r\n }\r\n });\r\n if(limitSize) return that.msg(typeof text['limit-size'] === 'function' \r\n ? text['limit-size'](options, limitSize) \r\n : '文件大小不能超过 '+ limitSize);\r\n }\r\n\r\n send();\r\n };\r\n \r\n //事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 设置当前选择的文件队列\r\n var setChooseFile = function(files){\r\n that.chooseFiles = {};\r\n layui.each(files, function(i, item){\r\n var time = new Date().getTime();\r\n that.chooseFiles[time + '-' + i] = item;\r\n });\r\n };\r\n \r\n // 设置选择的文本\r\n var setChooseText = function(files, filename){\r\n var elemFile = that.elemFile;\r\n var item = options.item ? options.item : options.elem;\r\n var value = files.length > 1 \r\n ? files.length + '个文件' \r\n : ((files[0] || {}).name || (elemFile[0].value.match(/[^\\/\\\\]+\\..+/g)||[]) || '');\r\n \r\n if(elemFile.next().hasClass(ELEM_CHOOSE)){\r\n elemFile.next().remove();\r\n }\r\n that.upload(null, 'choose');\r\n if(that.isFile() || options.choose) return;\r\n elemFile.after(''+ value +'');\r\n };\r\n\r\n // 点击上传容器\r\n options.elem.off('upload.start').on('upload.start', function(){\r\n var othis = $(this);\r\n\r\n that.config.item = othis;\r\n that.elemFile[0].click();\r\n });\r\n \r\n // 拖拽上传\r\n if(!(device.ie && device.ie < 10)){\r\n options.elem.off('upload.over').on('upload.over', function(){\r\n var othis = $(this)\r\n othis.attr('lay-over', '');\r\n })\r\n .off('upload.leave').on('upload.leave', function(){\r\n var othis = $(this)\r\n othis.removeAttr('lay-over');\r\n })\r\n .off('upload.drop').on('upload.drop', function(e, param){\r\n var othis = $(this);\r\n var files = param.originalEvent.dataTransfer.files || [];\r\n \r\n othis.removeAttr('lay-over');\r\n setChooseFile(files);\r\n\r\n options.auto ? that.upload() : setChooseText(files); // 是否自动触发上传\r\n });\r\n }\r\n \r\n // 文件选择\r\n that.elemFile.on('change', function(){\r\n var files = this.files || [];\r\n\r\n if(files.length === 0) return;\r\n\r\n setChooseFile(files);\r\n\r\n options.auto ? that.upload() : setChooseText(files); // 是否自动触发上传\r\n });\r\n \r\n // 手动触发上传\r\n options.bindAction.off('upload.action').on('upload.action', function(){\r\n that.upload();\r\n });\r\n\r\n\r\n // 防止事件重复绑定\r\n if(options.elem.data(MOD_INDEX)) return;\r\n\r\n\r\n // 目标元素 click 事件\r\n options.elem.on('click', function(){\r\n if(that.isFile()) return;\r\n $(this).trigger('upload.start');\r\n });\r\n \r\n // 目标元素 drop 事件\r\n if(options.drag){\r\n options.elem.on('dragover', function(e){\r\n e.preventDefault();\r\n $(this).trigger('upload.over');\r\n }).on('dragleave', function(e){\r\n $(this).trigger('upload.leave');\r\n }).on('drop', function(e){\r\n e.preventDefault();\r\n $(this).trigger('upload.drop', e);\r\n });\r\n }\r\n \r\n // 手动上传时触发上传的元素 click 事件\r\n options.bindAction.on('click', function(){\r\n $(this).trigger('upload.action');\r\n });\r\n \r\n // 绑定元素索引\r\n options.elem.data(MOD_INDEX, options.id);\r\n };\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n\r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 核心入口 \r\n upload.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n \r\n exports(MOD_NAME, upload);\r\n});\r\n\r\n","/**\r\n * form 表单组件\r\n */\r\n \r\nlayui.define(['lay', 'layer', 'util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var layer = layui.layer;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n \r\n var MOD_NAME = 'form';\r\n var ELEM = '.layui-form';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled';\r\n var OUT_OF_RANGE = 'layui-input-number-out-of-range';\r\n \r\n var Form = function(){\r\n this.config = {\r\n // 内置的验证规则\r\n verify: {\r\n required: function(value) {\r\n if (!/[\\S]+/.test(value)) {\r\n return '必填项不能为空';\r\n }\r\n },\r\n phone: function(value) {\r\n var EXP = /^1\\d{10}$/;\r\n if (value && !EXP.test(value)) {\r\n return '手机号格式不正确';\r\n }\r\n },\r\n email: function(value) {\r\n var EXP = /^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/;\r\n if (value && !EXP.test(value)) {\r\n return '邮箱格式不正确';\r\n }\r\n },\r\n url: function(value) {\r\n var EXP = /^(#|(http(s?)):\\/\\/|\\/\\/)[^\\s]+\\.[^\\s]+$/;\r\n if (value && !EXP.test(value)) {\r\n return '链接格式不正确';\r\n }\r\n },\r\n number: function(value){\r\n if (value && isNaN(value)) {\r\n return '只能填写数字';\r\n }\r\n },\r\n date: function(value){\r\n var EXP = /^(\\d{4})[-\\/](\\d{1}|0\\d{1}|1[0-2])([-\\/](\\d{1}|0\\d{1}|[1-2][0-9]|3[0-1]))*$/;\r\n if (value && !EXP.test(value)) {\r\n return '日期格式不正确';\r\n }\r\n },\r\n identity: function(value) {\r\n var EXP = /(^\\d{15}$)|(^\\d{17}(x|X|\\d)$)/;\r\n if (value && !EXP.test(value)) {\r\n return '身份证号格式不正确';\r\n }\r\n }\r\n },\r\n autocomplete: null // 全局 autocomplete 状态。 null 表示不干预\r\n };\r\n };\r\n \r\n // 全局设置\r\n Form.prototype.set = function(options){\r\n var that = this;\r\n $.extend(true, that.config, options);\r\n return that;\r\n };\r\n \r\n // 验证规则设定\r\n Form.prototype.verify = function(settings){\r\n var that = this;\r\n $.extend(true, that.config.verify, settings);\r\n return that;\r\n };\r\n\r\n // 获取指定表单对象\r\n Form.prototype.getFormElem = function(filter){\r\n return $(ELEM + function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }());\r\n };\r\n \r\n // 表单事件\r\n Form.prototype.on = function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n };\r\n \r\n // 赋值/取值\r\n Form.prototype.val = function(filter, object){\r\n var that = this\r\n ,formElem = that.getFormElem(filter);\r\n \r\n // 遍历\r\n formElem.each(function(index, item){\r\n var itemForm = $(this);\r\n \r\n // 赋值\r\n layui.each(object, function(key, value){\r\n var itemElem = itemForm.find('[name=\"'+ key +'\"]')\r\n ,type;\r\n \r\n // 如果对应的表单不存在,则不执行\r\n if(!itemElem[0]) return;\r\n type = itemElem[0].type;\r\n \r\n // 如果为复选框\r\n if(type === 'checkbox'){\r\n itemElem[0].checked = value;\r\n } else if(type === 'radio') { // 如果为单选框\r\n itemElem.each(function(){\r\n this.checked = this.value == value;\r\n });\r\n } else { // 其它类型的表单\r\n itemElem.val(value);\r\n }\r\n });\r\n });\r\n \r\n form.render(null, filter);\r\n \r\n // 返回值\r\n return that.getValue(filter);\r\n };\r\n \r\n // 取值\r\n Form.prototype.getValue = function(filter, itemForm){\r\n itemForm = itemForm || this.getFormElem(filter);\r\n \r\n var nameIndex = {} // 数组 name 索引\r\n ,field = {}\r\n ,fieldElem = itemForm.find('input,select,textarea') // 获取所有表单域\r\n \r\n layui.each(fieldElem, function(_, item){ \r\n var othis = $(this)\r\n ,init_name; // 初始 name\r\n \r\n item.name = (item.name || '').replace(/^\\s*|\\s*&/, '');\r\n if(!item.name) return;\r\n \r\n // 用于支持数组 name\r\n if(/^.*\\[\\]$/.test(item.name)){\r\n var key = item.name.match(/^(.*)\\[\\]$/g)[0];\r\n nameIndex[key] = nameIndex[key] | 0;\r\n init_name = item.name.replace(/^(.*)\\[\\]$/, '$1['+ (nameIndex[key]++) +']');\r\n }\r\n \r\n if(/^(checkbox|radio)$/.test(item.type) && !item.checked) return; // 复选框和单选框未选中,不记录字段 \r\n field[init_name || item.name] = item.value;\r\n });\r\n \r\n return field;\r\n };\r\n \r\n // 表单控件渲染\r\n Form.prototype.render = function(type, filter){\r\n var that = this;\r\n var options = that.config;\r\n var elemForm = $(ELEM + function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }());\r\n var items = {\r\n // 输入框\r\n input: function(elem){\r\n var inputs = elem || elemForm.find('input,textarea');\r\n\r\n // 初始化全局的 autocomplete\r\n options.autocomplete && inputs.attr('autocomplete', options.autocomplete);\r\n\r\n var handleInputNumber = function(elem, eventType){\r\n var that = this;\r\n var rawValue = elem.val();\r\n var value = Number(rawValue);\r\n var step = Number(elem.attr('step')) || 1; // 加减的数字间隔\r\n var min = Number(elem.attr('min'));\r\n var max = Number(elem.attr('max'));\r\n var precision = Number(elem.attr('lay-precision'));\r\n var noAction = eventType !== 'click' && rawValue === ''; // 初始渲染和失焦时空值不作处理\r\n var isInit = eventType === 'init';\r\n\r\n if(isNaN(value)) return; // 若非数字,则不作处理\r\n\r\n if(eventType === 'click'){\r\n var isDecrement = !!$(that).index() // 0: icon-up, 1: icon-down\r\n value = isDecrement ? value - step : value + step;\r\n }\r\n\r\n // 获取小数点后位数\r\n var decimals = function(step){\r\n var decimals = (step.toString().match(/\\.(\\d+$)/) || [])[1] || '';\r\n return decimals.length;\r\n };\r\n\r\n precision = precision >= 0 ? precision : Math.max(decimals(step), decimals(rawValue));\r\n\r\n if(!noAction){\r\n // 初始渲染时只处理数字精度\r\n if(!isInit){\r\n if(value <= min) value = min;\r\n if(value >= max) value = max;\r\n }\r\n if(precision) value = value.toFixed(precision);\r\n elem.val(value);\r\n }\r\n\r\n // 超出范围的样式\r\n var outOfRange = value < min || value > max;\r\n elem[outOfRange && !noAction ? 'addClass' : 'removeClass'](OUT_OF_RANGE);\r\n\r\n if(isInit) return;\r\n\r\n // 更新按钮状态\r\n var controlBtn = {\r\n increment: elem.next().find('.layui-icon-up'),\r\n decrement: elem.next().find('.layui-icon-down')\r\n }\r\n controlBtn.increment[(value >= max && !noAction) ? 'addClass' : 'removeClass'](DISABLED)\r\n controlBtn.decrement[(value <= min && !noAction) ? 'addClass' : 'removeClass'](DISABLED)\r\n }\r\n\r\n // 初始化输入框动态点缀\r\n elemForm.find('input[lay-affix],textarea[lay-affix]').each(function(){\r\n var othis = $(this);\r\n var affix = othis.attr('lay-affix');\r\n var CLASS_WRAP = 'layui-input-wrap';\r\n var CLASS_SUFFIX = 'layui-input-suffix';\r\n var CLASS_AFFIX = 'layui-input-affix';\r\n var disabled = othis.is('[disabled]') || othis.is('[readonly]');\r\n\r\n // 根据是否空值来显示或隐藏元素\r\n var showAffix = function(elem, value){\r\n elem = $(elem);\r\n if(!elem[0]) return;\r\n elem[$.trim(value) ? 'removeClass' : 'addClass'](HIDE);\r\n };\r\n\r\n // 渲染动态点缀内容\r\n var renderAffix = function(opts){\r\n opts = $.extend({}, (affixOptions[affix] || {\r\n value: affix\r\n }), opts, lay.options(othis[0]));\r\n var elemAffix = $('
                          ');\r\n var value = layui.isArray(opts.value) ? opts.value : [opts.value];\r\n var elemIcon = $(function(){\r\n var arr = [];\r\n layui.each(value, function(i, item){\r\n arr.push('');\r\n });\r\n return arr.join('');\r\n }());\r\n \r\n elemAffix.append(elemIcon); // 插入图标元素\r\n\r\n // 追加 className\r\n if(opts.split) elemAffix.addClass('layui-input-split');\r\n if(opts.className) elemAffix.addClass(opts.className);\r\n\r\n // 移除旧的元素\r\n var hasElemAffix = othis.next('.'+ CLASS_AFFIX);\r\n if(hasElemAffix[0]) hasElemAffix.remove();\r\n\r\n // 是否在规定的容器中\r\n if(!othis.parent().hasClass(CLASS_WRAP)){\r\n othis.wrap('
                          ');\r\n }\r\n\r\n // 是否已经存在后缀元素\r\n var hasElemSuffix = othis.next('.'+ CLASS_SUFFIX);\r\n if(hasElemSuffix[0]){\r\n hasElemAffix = hasElemSuffix.find('.'+ CLASS_AFFIX);\r\n if(hasElemAffix[0]) hasElemAffix.remove();\r\n\r\n hasElemSuffix.prepend(elemAffix);\r\n\r\n othis.css('padding-right', function(){\r\n var paddingRight = othis.closest('.layui-input-group')[0] \r\n ? 0 \r\n : hasElemSuffix.outerWidth();\r\n return paddingRight + elemAffix.outerWidth()\r\n });\r\n } else {\r\n elemAffix.addClass(CLASS_SUFFIX);\r\n othis.after(elemAffix);\r\n }\r\n\r\n opts.show === 'auto' && showAffix(elemAffix, othis.val());\r\n \r\n typeof opts.init === 'function' && opts.init.call(this, othis, opts);\r\n \r\n // 输入事件\r\n othis.on('input propertychange', function(){\r\n var value = this.value;\r\n opts.show === 'auto' && showAffix(elemAffix, value);\r\n });\r\n\r\n // 失去焦点事件\r\n othis.on('blur', function(){\r\n typeof opts.blur === 'function' && opts.blur.call(this, othis, opts);\r\n });\r\n \r\n // 点击动态后缀事件\r\n elemIcon.on('click', function(){\r\n var inputFilter = othis.attr('lay-filter');\r\n if($(this).hasClass(DISABLED)) return;\r\n \r\n typeof opts.click === 'function' && opts.click.call(this, othis, opts);\r\n \r\n // 对外事件\r\n layui.event.call(this, MOD_NAME, 'input-affix('+ inputFilter +')', {\r\n elem: othis[0],\r\n affix: affix,\r\n options: opts\r\n });\r\n });\r\n };\r\n \r\n // 动态点缀配置项\r\n var affixOptions = {\r\n eye: { // 密码显隐\r\n value: 'eye-invisible',\r\n click: function(elem, opts){ // 事件\r\n var SHOW_NAME = 'LAY_FORM_INPUT_AFFIX_SHOW';\r\n var isShow = elem.data(SHOW_NAME);\r\n \r\n elem.attr('type', isShow ? 'password' : 'text').data(SHOW_NAME, !isShow);\r\n\r\n renderAffix({\r\n value: isShow ? 'eye-invisible' : 'eye'\r\n });\r\n }\r\n },\r\n clear: { // 内容清除\r\n value: 'clear',\r\n click: function(elem){\r\n elem.val('').focus();\r\n showAffix($(this).parent(), null);\r\n },\r\n show: 'auto', // 根据输入框值是否存在来显示或隐藏点缀图标\r\n disabled: disabled // 跟随输入框禁用状态\r\n },\r\n number: { // 数字输入框\r\n value: ['up', 'down'],\r\n split: true,\r\n className: 'layui-input-number',\r\n disabled: othis.is('[disabled]'), // 跟随输入框禁用状态\r\n init: function(elem){\r\n handleInputNumber.call(this, elem, 'init')\r\n },\r\n click: function(elem){\r\n handleInputNumber.call(this, elem, 'click')\r\n },\r\n blur: function(elem){\r\n handleInputNumber.call(this, elem, 'blur')\r\n },\r\n }\r\n };\r\n \r\n renderAffix();\r\n });\r\n }\r\n \r\n // 下拉选择框\r\n ,select: function(elem){\r\n var TIPS = '请选择';\r\n var CLASS = 'layui-form-select';\r\n var TITLE = 'layui-select-title';\r\n var NONE = 'layui-select-none';\r\n var initValue = '';\r\n var thatInput;\r\n var selects = elem || elemForm.find('select');\r\n\r\n // 隐藏 select\r\n var hide = function(e, clear){\r\n if(!$(e.target).parent().hasClass(TITLE) || clear){\r\n $('.'+CLASS).removeClass(CLASS+'ed ' + CLASS+'up');\r\n thatInput && initValue && thatInput.val(initValue);\r\n }\r\n thatInput = null;\r\n };\r\n \r\n // 各种事件\r\n var events = function(reElem, disabled, isSearch){\r\n var select = $(this);\r\n var title = reElem.find('.' + TITLE);\r\n var input = title.find('input');\r\n var dl = reElem.find('dl');\r\n var dds = dl.children('dd');\r\n var dts = dl.children('dt'); // select 分组dt元素\r\n var index = this.selectedIndex; // 当前选中的索引\r\n var nearElem; // select 组件当前选中的附近元素,用于辅助快捷键功能\r\n \r\n if(disabled) return;\r\n\r\n // 搜索项\r\n var laySearch = select.attr('lay-search');\r\n \r\n // 展开下拉\r\n var showDown = function(){\r\n var top = reElem.offset().top + reElem.outerHeight() + 5 - $win.scrollTop();\r\n var dlHeight = dl.outerHeight();\r\n \r\n index = select[0].selectedIndex; // 获取最新的 selectedIndex\r\n reElem.addClass(CLASS+'ed');\r\n dds.removeClass(HIDE);\r\n dts.removeClass(HIDE);\r\n nearElem = null;\r\n\r\n // 初始选中样式\r\n dds.removeClass(THIS);\r\n index >= 0 && dds.eq(index).addClass(THIS);\r\n\r\n // 上下定位识别\r\n if(top + dlHeight > $win.height() && top >= dlHeight){\r\n reElem.addClass(CLASS + 'up');\r\n }\r\n\r\n followScroll();\r\n };\r\n \r\n // 隐藏下拉\r\n var hideDown = function(choose){\r\n reElem.removeClass(CLASS+'ed ' + CLASS+'up');\r\n input.blur();\r\n nearElem = null;\r\n \r\n if(choose) return;\r\n \r\n notOption(input.val(), function(none){\r\n var selectedIndex = select[0].selectedIndex;\r\n \r\n // 未查询到相关值\r\n if(none){\r\n initValue = $(select[0].options[selectedIndex]).html(); // 重新获得初始选中值\r\n \r\n // 如果是第一项,且文本值等于 placeholder,则清空初始值\r\n if(selectedIndex === 0 && initValue === input.attr('placeholder')){\r\n initValue = '';\r\n }\r\n\r\n // 如果有选中值,则将输入框纠正为该值。否则清空输入框\r\n input.val(initValue || '');\r\n }\r\n });\r\n };\r\n \r\n // 定位下拉滚动条\r\n var followScroll = function(){ \r\n var thisDd = dl.children('dd.'+ THIS);\r\n \r\n if(!thisDd[0]) return;\r\n \r\n var posTop = thisDd.position().top;\r\n var dlHeight = dl.height();\r\n var ddHeight = thisDd.height();\r\n \r\n // 若选中元素在滚动条不可见底部\r\n if(posTop > dlHeight){\r\n dl.scrollTop(posTop + dl.scrollTop() - dlHeight + ddHeight - 5);\r\n }\r\n \r\n // 若选择玄素在滚动条不可见顶部\r\n if(posTop < 0){\r\n dl.scrollTop(posTop + dl.scrollTop() - 5);\r\n }\r\n };\r\n \r\n // 点击标题区域\r\n title.on('click', function(e){\r\n reElem.hasClass(CLASS+'ed') ? (\r\n hideDown()\r\n ) : (\r\n hide(e, true), \r\n showDown()\r\n );\r\n dl.find('.'+NONE).remove();\r\n }); \r\n \r\n // 点击箭头获取焦点\r\n title.find('.layui-edge').on('click', function(){\r\n input.focus();\r\n });\r\n \r\n // select 中 input 键盘事件\r\n input.on('keyup', function(e){ // 键盘松开\r\n var keyCode = e.keyCode;\r\n \r\n // Tab键展开\r\n if(keyCode === 9){\r\n showDown();\r\n }\r\n }).on('keydown', function(e){ // 键盘按下\r\n var keyCode = e.keyCode;\r\n\r\n // Tab键隐藏\r\n if(keyCode === 9){\r\n hideDown();\r\n }\r\n \r\n // 标注 dd 的选中状态\r\n var setThisDd = function(prevNext, thisElem1){\r\n var nearDd, cacheNearElem\r\n e.preventDefault();\r\n\r\n // 得到当前队列元素 \r\n var thisElem = function(){\r\n var thisDd = dl.children('dd.'+ THIS);\r\n \r\n // 如果是搜索状态,且按 Down 键,且当前可视 dd 元素在选中元素之前,\r\n // 则将当前可视 dd 元素的上一个元素作为虚拟的当前选中元素,以保证递归不中断\r\n if(dl.children('dd.'+ HIDE)[0] && prevNext === 'next'){\r\n var showDd = dl.children('dd:not(.'+ HIDE +',.'+ DISABLED +')')\r\n ,firstIndex = showDd.eq(0).index();\r\n if(firstIndex >=0 && firstIndex < thisDd.index() && !showDd.hasClass(THIS)){\r\n return showDd.eq(0).prev()[0] ? showDd.eq(0).prev() : dl.children(':last');\r\n }\r\n }\r\n\r\n if(thisElem1 && thisElem1[0]){\r\n return thisElem1;\r\n }\r\n if(nearElem && nearElem[0]){\r\n return nearElem;\r\n }\r\n \r\n return thisDd;\r\n // return dds.eq(index);\r\n }();\r\n \r\n cacheNearElem = thisElem[prevNext](); // 当前元素的附近元素\r\n nearDd = thisElem[prevNext]('dd:not(.'+ HIDE +')'); // 当前可视元素的 dd 元素\r\n\r\n // 如果附近的元素不存在,则停止执行,并清空 nearElem\r\n if(!cacheNearElem[0]) return nearElem = null;\r\n \r\n // 记录附近的元素,让其成为下一个当前元素\r\n nearElem = thisElem[prevNext]();\r\n\r\n // 如果附近不是 dd ,或者附近的 dd 元素是禁用状态,则进入递归查找\r\n if((!nearDd[0] || nearDd.hasClass(DISABLED)) && nearElem[0]){\r\n return setThisDd(prevNext, nearElem);\r\n }\r\n \r\n nearDd.addClass(THIS).siblings().removeClass(THIS); // 标注样式\r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(keyCode === 38) setThisDd('prev'); // Up 键\r\n if(keyCode === 40) setThisDd('next'); // Down 键\r\n \r\n // Enter 键\r\n if(keyCode === 13){ \r\n e.preventDefault();\r\n dl.children('dd.'+THIS).trigger('click');\r\n }\r\n });\r\n \r\n // 检测值是否不属于 select 项\r\n var notOption = function(value, callback, origin){\r\n var num = 0;\r\n layui.each(dds, function(){\r\n var othis = $(this);\r\n var text = othis.text();\r\n\r\n // 是否区分大小写\r\n if(laySearch !== 'cs'){\r\n text = text.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n \r\n // 匹配\r\n var not = text.indexOf(value) === -1;\r\n \r\n if(value === '' || (origin === 'blur') ? value !== text : not) num++;\r\n origin === 'keyup' && othis[not ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n // 处理 select 分组元素\r\n origin === 'keyup' && layui.each(dts, function(){\r\n var othis = $(this)\r\n ,thisDds = othis.nextUntil('dt').filter('dd') // 当前分组下的dd元素\r\n ,allHide = thisDds.length == thisDds.filter('.' + HIDE).length; // 当前分组下所有dd元素都隐藏了\r\n othis[allHide ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n var none = num === dds.length;\r\n return callback(none), none;\r\n };\r\n \r\n // 搜索匹配\r\n var search = function(e){\r\n var value = this.value, keyCode = e.keyCode;\r\n \r\n if(keyCode === 9 || keyCode === 13 \r\n || keyCode === 37 || keyCode === 38 \r\n || keyCode === 39 || keyCode === 40\r\n ){\r\n return false;\r\n }\r\n \r\n notOption(value, function(none){\r\n if(none){\r\n dl.find('.'+NONE)[0] || dl.append('

                          无匹配项

                          ');\r\n } else {\r\n dl.find('.'+NONE).remove();\r\n }\r\n }, 'keyup');\r\n \r\n // 当搜索值清空时\r\n if(value === ''){\r\n // 取消选中项\r\n select.val('');\r\n dl.find('.'+ THIS).removeClass(THIS);\r\n (select[0].options[0] || {}).value || dl.children('dd:eq(0)').addClass(THIS);\r\n dl.find('.'+ NONE).remove();\r\n }\r\n \r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(isSearch){\r\n input.on('input propertychange', search).on('blur', function(e){\r\n var selectedIndex = select[0].selectedIndex;\r\n \r\n thatInput = input; // 当前的 select 中的 input 元素\r\n initValue = $(select[0].options[selectedIndex]).text(); // 重新获得初始选中值\r\n \r\n // 如果是第一项,且文本值等于 placeholder,则清空初始值\r\n if(selectedIndex === 0 && initValue === input.attr('placeholder')){\r\n initValue = '';\r\n }\r\n \r\n setTimeout(function(){\r\n notOption(input.val(), function(none){\r\n initValue || input.val(''); // none && !initValue\r\n }, 'blur');\r\n }, 200);\r\n });\r\n }\r\n\r\n // 选择\r\n dds.on('click', function(){\r\n var othis = $(this), value = othis.attr('lay-value');\r\n var filter = select.attr('lay-filter'); // 获取过滤器\r\n \r\n if(othis.hasClass(DISABLED)) return false;\r\n \r\n if(othis.hasClass('layui-select-tips')){\r\n input.val('');\r\n } else {\r\n input.val(othis.text());\r\n othis.addClass(THIS);\r\n }\r\n\r\n othis.siblings().removeClass(THIS);\r\n select.val(value).removeClass('layui-form-danger');\r\n\r\n layui.event.call(this, MOD_NAME, 'select('+ filter +')', {\r\n elem: select[0]\r\n ,value: value\r\n ,othis: reElem\r\n });\r\n\r\n hideDown(true);\r\n return false;\r\n });\r\n \r\n reElem.find('dl>dt').on('click', function(e){\r\n return false;\r\n });\r\n \r\n $(document).off('click', hide).on('click', hide); // 点击其它元素关闭 select\r\n }\r\n \r\n // 初始渲染 select 组件选项\r\n selects.each(function(index, select){\r\n var othis = $(this)\r\n ,hasRender = othis.next('.'+CLASS)\r\n ,disabled = this.disabled\r\n ,value = select.value\r\n ,selected = $(select.options[select.selectedIndex]) // 获取当前选中项\r\n ,optionsFirst = select.options[0];\r\n \r\n if(typeof othis.attr('lay-ignore') === 'string') return othis.show();\r\n \r\n var isSearch = typeof othis.attr('lay-search') === 'string'\r\n ,placeholder = optionsFirst ? (\r\n optionsFirst.value ? TIPS : (optionsFirst.innerHTML || TIPS)\r\n ) : TIPS;\r\n\r\n // 替代元素\r\n var reElem = $(['
                          '\r\n ,'
                          '\r\n ,('') // 禁用状态\r\n ,'
                          '\r\n ,'
                          '\r\n ,function(options){\r\n var arr = [];\r\n layui.each(options, function(index, item){\r\n var tagName = item.tagName.toLowerCase();\r\n\r\n if(index === 0 && !item.value && tagName !== 'optgroup'){\r\n arr.push('
                          '+ $.trim(item.innerHTML || TIPS) +'
                          ');\r\n } else if(tagName === 'optgroup'){\r\n arr.push('
                          '+ item.label +'
                          '); \r\n } else {\r\n arr.push('
                          '+ $.trim(item.innerHTML) +'
                          ');\r\n }\r\n });\r\n arr.length === 0 && arr.push('
                          没有选项
                          ');\r\n return arr.join('');\r\n }(othis.find('*')) +'
                          '\r\n ,'
                          '].join(''));\r\n \r\n hasRender[0] && hasRender.remove(); // 如果已经渲染,则Rerender\r\n othis.after(reElem); \r\n events.call(this, reElem, disabled, isSearch);\r\n });\r\n }\r\n \r\n // 复选框/开关\r\n ,checkbox: function(elem){\r\n var CLASS = {\r\n \"checkbox\": ['layui-form-checkbox', 'layui-form-checked', 'checkbox'],\r\n \"switch\": ['layui-form-switch', 'layui-form-onswitch', 'switch'],\r\n SUBTRA: 'layui-icon-indeterminate'\r\n };\r\n var checks = elem || elemForm.find('input[type=checkbox]');\r\n // 风格\r\n var skins = {\r\n \"primary\": true, // 默认风格\r\n \"tag\": true, // 标签风格\r\n \"switch\": true // 开关风格\r\n };\r\n // 事件\r\n var events = function(reElem, RE_CLASS){\r\n var check = $(this);\r\n \r\n // 勾选\r\n reElem.on('click', function(){\r\n var othis = $(this);\r\n var filter = check.attr('lay-filter') // 获取过滤器\r\n var title = (\r\n othis.next('*[lay-checkbox]')[0] \r\n ? othis.next().html()\r\n : check.attr('title') || ''\r\n );\r\n var skin = check.attr('lay-skin') || 'primary';\r\n\r\n // 开关\r\n title = skin === 'switch' ? title.split('|') : [title];\r\n\r\n // 禁用\r\n if(check[0].disabled) return;\r\n \r\n // 半选\r\n if (check[0].indeterminate) {\r\n check[0].indeterminate = false;\r\n reElem.find('.'+ CLASS.SUBTRA).removeClass(CLASS.SUBTRA).addClass('layui-icon-ok');\r\n }\r\n\r\n // 开关\r\n check[0].checked ? (\r\n check[0].checked = false,\r\n reElem.removeClass(RE_CLASS[1]),\r\n skin === 'switch' && reElem.children('div').html(title[1])\r\n ) : (\r\n check[0].checked = true,\r\n reElem.addClass(RE_CLASS[1]),\r\n skin === 'switch' && reElem.children('div').html(title[0])\r\n );\r\n \r\n // 事件\r\n layui.event.call(check[0], MOD_NAME, RE_CLASS[2]+'('+ filter +')', {\r\n elem: check[0],\r\n value: check[0].value,\r\n othis: reElem\r\n });\r\n });\r\n };\r\n \r\n // 遍历复选框\r\n checks.each(function(index, check){\r\n var othis = $(this);\r\n var skin = othis.attr('lay-skin') || 'primary';\r\n var title = util.escape($.trim(check.title || function(){ // 向下兼容 lay-text 属性\r\n return check.title = othis.attr('lay-text') || '';\r\n }()));\r\n var disabled = this.disabled;\r\n\r\n // if(!skins[skin]) skin = 'primary'; // 若非内置风格,则强制为默认风格\r\n var RE_CLASS = CLASS[skin] || CLASS.checkbox;\r\n\r\n // 替代元素\r\n var hasRender = othis.next('.' + RE_CLASS[0]);\r\n hasRender[0] && hasRender.remove(); // 若已经渲染,则 Rerender\r\n \r\n // 若存在标题模板,则优先读取标题模板\r\n if(othis.next('[lay-checkbox]')[0]){\r\n title = othis.next().html() || '';\r\n }\r\n\r\n // 若为开关,则对 title 进行分隔解析\r\n title = skin === 'switch' ? title.split('|') : [title];\r\n \r\n if(typeof othis.attr('lay-ignore') === 'string') return othis.show();\r\n \r\n // 替代元素\r\n var reElem = $(['
                          ',\r\n function(){ // 不同风格的内容\r\n var type = {\r\n // 复选框\r\n \"checkbox\": [\r\n (title[0] ? ('
                          '+ title[0] +'
                          ') : (skin === 'primary' ? '' : '
                          ')),\r\n ''\r\n ].join(''),\r\n // 开关\r\n \"switch\": '
                          '+ ((check.checked ? title[0] : title[1]) || '') +'
                          '\r\n };\r\n return type[skin] || type['checkbox'];\r\n }(),\r\n '
                          '].join(''));\r\n\r\n othis.after(reElem);\r\n events.call(this, reElem, RE_CLASS);\r\n });\r\n }\r\n \r\n // 单选框\r\n ,radio: function(elem){\r\n var CLASS = 'layui-form-radio';\r\n var ICON = ['layui-icon-radio', 'layui-icon-circle'];\r\n var radios = elem || elemForm.find('input[type=radio]');\r\n\r\n // 事件\r\n var events = function(reElem){\r\n var radio = $(this);\r\n var ANIM = 'layui-anim-scaleSpring';\r\n \r\n reElem.on('click', function(){\r\n var name = radio[0].name, forms = radio.parents(ELEM);\r\n var filter = radio.attr('lay-filter'); // 获取过滤器\r\n var sameRadio = forms.find('input[name='+ name.replace(/(\\.|#|\\[|\\])/g, '\\\\$1') +']'); // 找到相同name的兄弟\r\n \r\n if(radio[0].disabled) return;\r\n \r\n layui.each(sameRadio, function(){\r\n var next = $(this).next('.' + CLASS);\r\n this.checked = false;\r\n next.removeClass(CLASS + 'ed');\r\n next.children('.layui-icon').removeClass(ANIM + ' ' + ICON[0]).addClass(ICON[1]);\r\n });\r\n \r\n radio[0].checked = true;\r\n reElem.addClass(CLASS + 'ed');\r\n reElem.children('.layui-icon').addClass(ANIM + ' ' + ICON[0]);\r\n \r\n layui.event.call(radio[0], MOD_NAME, 'radio('+ filter +')', {\r\n elem: radio[0],\r\n value: radio[0].value,\r\n othis: reElem\r\n });\r\n });\r\n };\r\n \r\n // 初始渲染\r\n radios.each(function(index, radio){\r\n var othis = $(this), hasRender = othis.next('.' + CLASS);\r\n var disabled = this.disabled;\r\n \r\n if(typeof othis.attr('lay-ignore') === 'string') return othis.show();\r\n hasRender[0] && hasRender.remove(); // 如果已经渲染,则Rerender\r\n \r\n // 替代元素\r\n var reElem = $(['
                          ', // 禁用状态\r\n '',\r\n '
                          '+ function(){\r\n var title = util.escape(radio.title || '');\r\n if(othis.next('[lay-radio]')[0]){\r\n title = othis.next().html();\r\n }\r\n return title;\r\n }() +'
                          ',\r\n '
                          '].join(''));\r\n\r\n othis.after(reElem);\r\n events.call(this, reElem);\r\n });\r\n }\r\n };\r\n\r\n // 执行所有渲染项\r\n var renderItem = function(){\r\n layui.each(items, function(index, item){\r\n item();\r\n });\r\n };\r\n\r\n // jquery 对象\r\n if (layui.type(type) === 'object') {\r\n // 若对象为表单域容器\r\n if($(type).is(ELEM)){\r\n elemForm = $(type);\r\n renderItem();\r\n } else { // 对象为表单项\r\n type.each(function (index, item) {\r\n var elem = $(item);\r\n if (!elem.closest(ELEM).length) {\r\n return; // 若不在 layui-form 容器中直接跳过\r\n }\r\n if (item.tagName === 'SELECT') {\r\n items['select'](elem);\r\n } else if (item.tagName === 'INPUT') {\r\n var itemType = item.type;\r\n if (itemType === 'checkbox' || itemType === 'radio') {\r\n items[itemType](elem);\r\n } else {\r\n items['input'](elem);\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n type ? (\r\n items[type] ? items[type]() : hint.error('不支持的 \"'+ type + '\" 表单渲染')\r\n ) : renderItem();\r\n }\r\n return that;\r\n };\r\n\r\n // 主动触发验证 --- elem 即要验证的区域表单选择器 / return true or false\r\n Form.prototype.validate = function(elem) {\r\n var that = this;\r\n var intercept; // 拦截标识\r\n var options = that.config; // 获取全局配置项\r\n var verify = options.verify; // 验证规则\r\n var DANGER = 'layui-form-danger'; // 警示样式\r\n\r\n elem = $(elem);\r\n\r\n // 节点不存在可视为 true\r\n if (!elem[0]) return !0;\r\n\r\n // 若节点不存在特定属性,则查找容器内有待验证的子节点\r\n if (elem.attr('lay-verify') === undefined) {\r\n // 若校验的是一个不带验证规则的容器,校验内部的 lay-verify 节点\r\n if (that.validate(elem.find('*[lay-verify]')) === false) {\r\n return false;\r\n }\r\n }\r\n\r\n // 开始校验\r\n layui.each(elem, function(_, item) {\r\n var othis = $(this);\r\n var verifyStr = othis.attr('lay-verify') || '';\r\n var vers = verifyStr.split('|');\r\n var verType = othis.attr('lay-vertype'); // 提示方式\r\n var value = $.trim(othis.val());\r\n\r\n othis.removeClass(DANGER); // 移除警示样式\r\n \r\n // 遍历元素绑定的验证规则\r\n layui.each(vers, function(_, thisVer) {\r\n var verst; // 校验结果\r\n var errorText = ''; // 错误提示文本\r\n var rule = verify[thisVer]; // 获取校验规则\r\n \r\n // 匹配验证规则\r\n if (rule) {\r\n verst = typeof rule === 'function'\r\n ? errorText = rule(value, item) \r\n : !rule[0].test(value); // 兼容早期数组中的正则写法\r\n \r\n // 是否属于美化替换后的表单元素\r\n var isForm2Elem = item.tagName.toLowerCase() === 'select' || (\r\n /^(checkbox|radio)$/.test(item.type)\r\n );\r\n \r\n errorText = errorText || rule[1];\r\n \r\n // 获取自定义必填项提示文本\r\n if (thisVer === 'required') {\r\n errorText = othis.attr('lay-reqtext') || errorText;\r\n }\r\n \r\n // 若命中校验规则\r\n if (verst) {\r\n // 提示层风格\r\n if (verType === 'tips') {\r\n layer.tips(errorText, function(){\r\n if(typeof othis.attr('lay-ignore') !== 'string'){\r\n if(isForm2Elem){\r\n return othis.next();\r\n }\r\n }\r\n return othis;\r\n }(), {tips: 1});\r\n } else if(verType === 'alert') {\r\n layer.alert(errorText, {title: '提示', shadeClose: true});\r\n } \r\n // 若返回的为字符或数字,则自动弹出默认提示框;否则由 verify 方法中处理提示\r\n else if(/\\b(string|number)\\b/.test(typeof errorText)) {\r\n layer.msg(errorText, {icon: 5, shift: 6});\r\n }\r\n\r\n setTimeout(function() {\r\n (isForm2Elem ? othis.next().find('input') : item).focus();\r\n }, 7);\r\n \r\n othis.addClass(DANGER);\r\n return intercept = true;\r\n }\r\n }\r\n });\r\n\r\n if (intercept) return intercept;\r\n });\r\n\r\n return !intercept;\r\n };\r\n\r\n // 提交表单并校验\r\n var submit = Form.prototype.submit = function(filter, callback){\r\n var field = {}; // 字段集合\r\n var button = $(this); // 当前触发的按钮\r\n\r\n // 表单域 lay-filter 属性值\r\n var layFilter = typeof filter === 'string' \r\n ? filter \r\n : button.attr('lay-filter');\r\n\r\n // 当前所在表单域\r\n var elem = this.getFormElem \r\n ? this.getFormElem(layFilter) \r\n : button.parents(ELEM).eq(0);\r\n\r\n // 获取需要校验的元素\r\n var verifyElem = elem.find('*[lay-verify]');\r\n\r\n // 开始校验\r\n if(!form.validate(verifyElem)) return false;\r\n\r\n // 获取当前表单值\r\n field = form.getValue(null, elem);\r\n\r\n // 返回的参数\r\n var params = {\r\n elem: this.getFormElem ? (window.event && window.event.target) : this // 触发事件的对象\r\n ,form: this.getFormElem ? elem[0] : button.parents('form')[0] // 当前所在的 form 元素,如果存在的话\r\n ,field: field // 当前表单数据\r\n };\r\n \r\n // 回调\r\n typeof callback === 'function' && callback(params);\r\n \r\n // 事件\r\n return layui.event.call(this, MOD_NAME, 'submit('+ layFilter +')', params);\r\n };\r\n \r\n var form = new Form();\r\n var $dom = $(document);\r\n var $win = $(window);\r\n \r\n // 初始自动完成渲染\r\n $(function(){\r\n form.render();\r\n });\r\n \r\n // 表单 reset 重置渲染\r\n $dom.on('reset', ELEM, function(){\r\n var filter = $(this).attr('lay-filter');\r\n setTimeout(function(){\r\n form.render(null, filter);\r\n }, 50);\r\n });\r\n \r\n // 表单提交事件\r\n $dom.on('submit', ELEM, submit)\r\n .on('click', '*[lay-submit]', submit);\r\n \r\n exports(MOD_NAME, form);\r\n});\r\n\r\n \r\n","/**\n * layui.table\n * 表格组件\n */\n\nlayui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){\n \"use strict\";\n\n var $ = layui.$;\n var lay = layui.lay;\n var laytpl = layui.laytpl;\n var laypage = layui.laypage;\n var layer = layui.layer;\n var form = layui.form;\n var util = layui.util;\n var hint = layui.hint();\n var device = layui.device();\n\n // api\n var table = {\n config: { // 全局配置项\n checkName: 'LAY_CHECKED', // 是否选中状态的特定字段名\n indexName: 'LAY_INDEX', // 初始下标索引名,用于恢复当前页表格排序\n numbersName: 'LAY_NUM', // 序号\n disabledName: 'LAY_DISABLED' // 禁用状态的特定字段名\n },\n cache: {}, // 数据缓存\n index: layui.table ? (layui.table.index + 10000) : 0,\n\n // 设置全局项\n set: function(options){\n var that = this;\n that.config = $.extend({}, that.config, options);\n return that;\n },\n\n // 事件\n on: function(events, callback){\n return layui.onevent.call(this, MOD_NAME, events, callback);\n }\n };\n\n // 操作当前实例\n var thisTable = function(){\n var that = this;\n var options = that.config;\n var id = options.id || options.index;\n\n return {\n config: options,\n reload: function(options, deep){\n that.reload.call(that, options, deep);\n },\n reloadData: function(options, deep){\n table.reloadData(id, options, deep);\n },\n setColsWidth: function(){\n that.setColsWidth.call(that);\n },\n resize: function(){ // 重置表格尺寸/结构\n that.resize.call(that);\n }\n }\n };\n\n // 获取当前实例\n var getThisTable = function(id){\n var that = thisTable.that[id];\n if(!that) hint.error(id ? ('The table instance with ID \\''+ id +'\\' not found') : 'ID argument required');\n return that || null;\n };\n\n // 获取当前实例配置项\n var getThisTableConfig = function(id){\n var config = thisTable.config[id];\n if(!config) hint.error(id ? ('The table instance with ID \\''+ id +'\\' not found') : 'ID argument required');\n return config || null;\n };\n\n // 解析自定义模板数据\n var parseTempData = function(obj){\n obj = obj || {};\n\n var options = this.config || {};\n var item3 = obj.item3; // 表头数据\n var content = obj.content; // 原始内容\n if (item3.type === 'numbers') content = obj.tplData[table.config.numbersName];\n\n // 是否编码 HTML\n var escaped = 'escape' in item3 ? item3.escape : options.escape;\n if(escaped) content = util.escape(content);\n\n // 获取模板\n var templet = obj.text && item3.exportTemplet || (item3.templet || item3.toolbar);\n\n // 获取模板内容\n if(templet){\n content = typeof templet === 'function'\n ? templet.call(item3, obj.tplData, obj.obj)\n : laytpl($(templet).html() || String(content)).render($.extend({\n LAY_COL: item3\n }, obj.tplData));\n }\n\n // 是否只返回文本\n return obj.text ? $('
                          '+ content +'
                          ').text() : content;\n };\n\n // 字符\n var MOD_NAME = 'table';\n var ELEM = '.layui-table';\n var THIS = 'layui-this';\n var SHOW = 'layui-show';\n var HIDE = 'layui-hide';\n var HIDE_V = 'layui-hide-v';\n var DISABLED = 'layui-disabled';\n var NONE = 'layui-none';\n\n var ELEM_VIEW = 'layui-table-view';\n var ELEM_TOOL = '.layui-table-tool';\n var ELEM_BOX = '.layui-table-box';\n var ELEM_INIT = '.layui-table-init';\n var ELEM_HEADER = '.layui-table-header';\n var ELEM_BODY = '.layui-table-body';\n var ELEM_MAIN = '.layui-table-main';\n var ELEM_FIXED = '.layui-table-fixed';\n var ELEM_FIXL = '.layui-table-fixed-l';\n var ELEM_FIXR = '.layui-table-fixed-r';\n var ELEM_TOTAL = '.layui-table-total';\n var ELEM_PAGE = '.layui-table-page';\n var ELEM_PAGE_VIEW = '.layui-table-pageview';\n var ELEM_SORT = '.layui-table-sort';\n var ELEM_CHECKED = 'layui-table-checked';\n var ELEM_EDIT = 'layui-table-edit';\n var ELEM_HOVER = 'layui-table-hover';\n var ELEM_GROUP = 'laytable-cell-group';\n var ELEM_COL_SPECIAL = 'layui-table-col-special';\n var ELEM_TOOL_PANEL = 'layui-table-tool-panel';\n var ELEM_EXPAND = 'layui-table-expanded'\n\n var DATA_MOVE_NAME = 'LAY_TABLE_MOVE_DICT';\n\n // thead 区域模板\n var TPL_HEADER = function(options){\n var rowCols = '{{#var colspan = layui.type(item2.colspan2) === \\'number\\' ? item2.colspan2 : item2.colspan; if(colspan){}} colspan=\"{{=colspan}}\"{{#} if(item2.rowspan){}} rowspan=\"{{=item2.rowspan}}\"{{#}}}';\n\n options = options || {};\n return ['
                        '\n ,''\n ,'{{# layui.each(d.data.cols, function(i1, item1){ }}'\n ,''\n ,'{{# layui.each(item1, function(i2, item2){ }}'\n ,'{{# if(item2.fixed && item2.fixed !== \"right\"){ left = true; } }}'\n ,'{{# if(item2.fixed === \"right\"){ right = true; } }}'\n ,function(){\n if(options.fixed && options.fixed !== 'right'){\n return '{{# if(item2.fixed && item2.fixed !== \"right\"){ }}';\n }\n if(options.fixed === 'right'){\n return '{{# if(item2.fixed === \"right\"){ }}';\n }\n return '';\n }()\n ,'{{# var isSort = !(item2.colGroup) && item2.sort; }}'\n ,''\n ,(options.fixed ? '{{# }; }}' : '')\n ,'{{# }); }}'\n ,''\n ,'{{# }); }}'\n ,''\n ,'
                        \\' + item2.title + \\'\\').text() }}\"{{# } }}>'\n ,'
                        '\n ,'{{# if(item2.type === \"checkbox\"){ }}' //复选框\n ,''\n ,'{{# } else { }}'\n ,'{{-item2.title||\"\"}}'\n ,'{{# if(isSort){ }}'\n ,''\n ,'{{# } }}'\n ,'{{# } }}'\n ,'
                        '\n ,'
                        '].join('');\n };\n\n // tbody 区域模板\n var TPL_BODY = [''\n ,''\n ,'
                        '].join('');\n\n // 主模板\n var TPL_MAIN = [\n ,'{{# if(d.data.toolbar){ }}'\n ,'
                        '\n ,'
                        '\n ,'
                        '\n ,'
                        '\n ,'{{# } }}'\n\n ,'
                        '\n ,'{{# if(d.data.loading){ }}'\n ,'
                        '\n ,''\n ,'
                        '\n ,'{{# } }}'\n\n ,'{{# var left, right; }}'\n ,'
                        '\n ,TPL_HEADER()\n ,'
                        '\n ,'
                        '\n ,TPL_BODY\n ,'
                        '\n\n ,'{{# if(left){ }}'\n ,'
                        '\n ,'
                        '\n ,TPL_HEADER({fixed: true})\n ,'
                        '\n ,'
                        '\n ,TPL_BODY\n ,'
                        '\n ,'
                        '\n ,'{{# }; }}'\n\n ,'{{# if(right){ }}'\n ,'
                        '\n ,'
                        '\n ,TPL_HEADER({fixed: 'right'})\n ,'
                        '\n ,'
                        '\n ,'
                        '\n ,TPL_BODY\n ,'
                        '\n ,'
                        '\n ,'{{# }; }}'\n ,'
                        '\n\n ,'{{# if(d.data.totalRow){ }}'\n ,'
                        '\n ,''\n ,''\n , '
                        Total
                        '\n ,'
                        '\n ,'{{# } }}'\n\n ,'
                        '\n ,'
                        '\n ,'
                        '\n ].join('');\n\n var _WIN = $(window);\n var _DOC = $(document);\n\n // constructor\n var Class = function(options){\n var that = this;\n that.index = ++table.index;\n that.config = $.extend({}, that.config, table.config, options);\n that.render();\n };\n\n // 初始默认配置\n Class.prototype.config = {\n limit: 10, // 每页显示的数量\n loading: true, // 请求数据时,是否显示 loading\n escape: true, // 是否开启 HTML 编码功能,即转义 html 原文\n cellMinWidth: 60, // 所有单元格默认最小宽度\n cellMaxWidth: Number.MAX_VALUE, // 所有单元格默认最大宽度\n editTrigger: 'click', // 单元格编辑的事件触发方式\n defaultToolbar: ['filter', 'exports', 'print'], // 工具栏右侧图标\n defaultContextmenu: true, // 显示默认上下文菜单\n autoSort: true, // 是否前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)\n text: {\n none: '无数据'\n },\n cols: []\n };\n\n // 表格渲染\n Class.prototype.render = function(type){\n var that = this;\n var options = that.config;\n\n options.elem = $(options.elem);\n options.where = options.where || {};\n\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\n var id = options.id = 'id' in options ? options.id : (\n options.elem.attr('id') || that.index\n );\n\n thisTable.that[id] = that; // 记录当前实例对象\n thisTable.config[id] = options; // 记录当前实例配置项\n\n //请求参数的自定义格式\n options.request = $.extend({\n pageName: 'page',\n limitName: 'limit'\n }, options.request)\n\n // 响应数据的自定义格式\n options.response = $.extend({\n statusName: 'code', //规定数据状态的字段名称\n statusCode: 0, //规定成功的状态码\n msgName: 'msg', //规定状态信息的字段名称\n dataName: 'data', //规定数据总数的字段名称\n totalRowName: 'totalRow', //规定数据统计的字段名称\n countName: 'count'\n }, options.response);\n\n //如果 page 传入 laypage 对象\n if(options.page !== null && typeof options.page === 'object'){\n options.limit = options.page.limit || options.limit;\n options.limits = options.page.limits || options.limits;\n that.page = options.page.curr = options.page.curr || 1;\n delete options.page.elem;\n delete options.page.jump;\n }\n\n if(!options.elem[0]) return that;\n\n // 若元素未设 lay-filter 属性,则取实例 id 值\n if(!options.elem.attr('lay-filter')){\n options.elem.attr('lay-filter', options.id);\n }\n\n // 仅重载数据\n if(type === 'reloadData'){\n // 请求数据\n return that.pullData(that.page, {\n type: 'reloadData'\n });\n }\n\n // 初始化索引\n options.index = that.index;\n that.key = options.id || options.index;\n\n // 初始化一些其他参数\n that.setInit();\n\n // 高度铺满:full-差距值\n if(options.height && /^full-.+$/.test(options.height)){\n that.fullHeightGap = parseFloat(options.height.split('-')[1]) || 0;\n options.height = _WIN.height() - that.fullHeightGap;\n } else if (options.height && /^#\\w+\\S*-.+$/.test(options.height)) {\n var parentDiv = options.height.split(\"-\");\n that.parentHeightGap = parseFloat(parentDiv.pop()) || 0;\n that.parentDiv = parentDiv.join(\"-\");\n options.height = $(that.parentDiv).height() - that.parentHeightGap;\n }\n\n // 开始插入替代元素\n var othis = options.elem;\n var hasRender = othis.next('.' + ELEM_VIEW);\n\n // 主容器\n var reElem = that.elem = $('
                        ');\n\n // 添加 className\n reElem.addClass(function(){\n var arr = [\n ELEM_VIEW,\n ELEM_VIEW +'-'+ that.index,\n 'layui-form',\n 'layui-border-box'\n ];\n if(options.className) arr.push(options.className);\n return arr.join(' ');\n }()).attr({\n 'lay-filter': 'LAY-TABLE-FORM-DF-'+ that.index,\n 'lay-id': options.id,\n 'style': function(){\n var arr = [];\n if(options.width) arr.push('width:'+ options.width + 'px;');\n // if(options.height) arr.push('height:'+ options.height + 'px;');\n return arr.join('')\n }()\n }).html(laytpl(TPL_MAIN, {\n open: '{{', // 标签符前缀\n close: '}}' // 标签符后缀\n }).render({\n data: options,\n index: that.index //索引\n }));\n\n // 初始化样式\n that.renderStyle();\n\n // 生成替代元素\n hasRender[0] && hasRender.remove(); // 如果已经渲染,则 Rerender\n othis.after(reElem);\n\n // 各级容器\n that.layTool = reElem.find(ELEM_TOOL);\n that.layBox = reElem.find(ELEM_BOX);\n that.layHeader = reElem.find(ELEM_HEADER);\n that.layMain = reElem.find(ELEM_MAIN);\n that.layBody = reElem.find(ELEM_BODY);\n that.layFixed = reElem.find(ELEM_FIXED);\n that.layFixLeft = reElem.find(ELEM_FIXL);\n that.layFixRight = reElem.find(ELEM_FIXR);\n that.layTotal = reElem.find(ELEM_TOTAL);\n that.layPage = reElem.find(ELEM_PAGE);\n\n // 初始化头部工具栏\n that.renderToolbar();\n\n // 初始化底部分页栏\n that.renderPagebar();\n\n // 让表格平铺\n that.fullSize();\n\n that.pullData(that.page); // 请求数据\n that.events(); // 事件\n };\n\n // 根据列类型,定制化参数\n Class.prototype.initOpts = function(item){\n var that = this\n var options = that.config;\n var initWidth = {\n checkbox: 50,\n radio: 50,\n space: 30,\n numbers: 60\n };\n\n // 让 type 参数兼容旧版本\n if(item.checkbox) item.type = \"checkbox\";\n if(item.space) item.type = \"space\";\n if(!item.type) item.type = \"normal\";\n\n if(item.type !== \"normal\"){\n item.unresize = true;\n item.width = item.width || initWidth[item.type];\n }\n };\n\n //初始化一些参数\n Class.prototype.setInit = function(type){\n var that = this;\n var options = that.config;\n\n options.clientWidth = options.width || function(){ //获取容器宽度\n //如果父元素宽度为0(一般为隐藏元素),则继续查找上层元素,直到找到真实宽度为止\n var getWidth = function(parent){\n var width, isNone;\n parent = parent || options.elem.parent()\n width = parent.width();\n try {\n isNone = parent.css('display') === 'none';\n } catch(e){}\n if(parent[0] && (!width || isNone)) return getWidth(parent.parent());\n return width;\n };\n return getWidth();\n }();\n\n if(type === 'width') return options.clientWidth;\n // 初始化高度配置,如果设置了最高高度,以最高高度形式为准\n options.height = options.maxHeight || options.height;\n\n // 初始化 css 参数\n if(options.css && options.css.indexOf(ELEM_VIEW) === -1){\n var css = options.css.split('}');\n layui.each(css, function(index, value){\n if(value){\n css[index] = '.'+ ELEM_VIEW + '-'+ that.index + ' ' + value;\n }\n });\n options.css = css.join('}');\n }\n\n // 封装对 col 的配置处理\n var initChildCols = function (i1, item1, i2, item2) {\n //如果列参数为空,则移除\n if (!item2) {\n item1.splice(i2, 1);\n return;\n }\n\n item2.key = [options.index, i1, i2].join('-');\n item2.colspan = item2.colspan || 0;\n item2.rowspan = item2.rowspan || 0;\n\n //根据列类型,定制化参数\n that.initOpts(item2);\n\n //设置列的父列索引\n //如果是组合列,则捕获对应的子列\n var indexChild = i1 + (parseInt(item2.rowspan) || 1);\n if (indexChild < options.cols.length) { // 只要不是最后一层都会有子列\n item2.colGroup = true;\n var childIndex = 0;\n layui.each(options.cols[indexChild], function (i22, item22) {\n //如果子列已经被标注为{HAS_PARENT},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环\n if (item22.HAS_PARENT || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;\n\n item22.HAS_PARENT = true;\n item22.parentKey = [options.index, i1, i2].join('-') // i1 + '-' + i2;\n childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1);\n initChildCols(indexChild, options.cols[indexChild], i22, item22);\n });\n } else {\n item2.colGroup = false;\n }\n item2.hide = item2.hide && !item2.colGroup || false; // 初始化中中间节点的hide信息不做处理,否则会出错,如果需要必须将其子节点也都同步成hide\n };\n\n // 初始化列参数\n layui.each(options.cols, function(i1, item1){\n layui.each(item1, function(i2, item2){\n if (i1) {\n delete item2.HAS_PARENT; // 去掉临时的计数排除标识,避免有新字段插入的时候重新计算被跳过导致下标出错的问题\n } else {\n initChildCols(i1, item1, i2, item2); // 只解析顶层节点由递归完成解析\n }\n });\n });\n\n };\n\n // 初始化样式\n Class.prototype.renderStyle = function() {\n var that = this;\n var options = that.config;\n var index = that.index;\n var text = [];\n\n // 单元格宽度\n layui.each(options.cols, function(i1, item1) {\n layui.each(item1, function(i2, item2) {\n var key = [index, i1, i2].join('-');\n var val = item2.width ? ['width: ', item2.width, 'px'].join('') : '';\n text.push('.laytable-cell-'+ key +'{'+ val +'}');\n });\n });\n\n // 自定义行样式\n (function (lineStyle) {\n if (!lineStyle) return;\n var trClassName = '.layui-table-view-'+ index +' .layui-table-body .layui-table tr';\n var rules = lineStyle.split(';');\n var cellMaxHeight = 'none';\n\n // 计算单元格最大高度\n layui.each(rules, function(i, rule) {\n rule = rule.split(':');\n if (rule[0] === 'height') {\n var val = parseFloat(rule[1]);\n if (!isNaN(val)) cellMaxHeight = (val - 1) + 'px';\n return true;\n }\n });\n\n // 多行相关样式\n layui.each([\n '{'+ lineStyle +'}',\n '.layui-table-cell{height: auto; max-height: '+ cellMaxHeight +'; white-space: normal; text-overflow: clip;}',\n '> td:hover > .layui-table-cell{overflow: auto;}'\n ].concat(\n device.ie ? [\n '.layui-table-edit{height: '+ cellMaxHeight +';}',\n 'td[data-edit]:hover:after{height: '+ cellMaxHeight +';}'\n ] : []\n ), function(i, val) {\n val && text.push(trClassName + ' ' + val);\n });\n })(options.lineStyle);\n\n // 自定义 css 属性\n if (options.css) text.push(options.css);\n\n // 生成 style\n lay.style({\n target: that.elem[0],\n text: text.join(''),\n id: 'DF-table-'+ index\n });\n };\n\n // 初始工具栏\n Class.prototype.renderToolbar = function(){\n var that = this\n var options = that.config\n\n // 添加工具栏左侧模板\n var leftDefaultTemp = [\n '
                        ',\n '
                        ',\n '
                        '\n ].join('');\n var elemToolTemp = that.layTool.find('.layui-table-tool-temp');\n\n if(options.toolbar === 'default'){\n elemToolTemp.html(leftDefaultTemp);\n } else if(typeof options.toolbar === 'string'){\n var toolbarHtml = $(options.toolbar).html() || '';\n toolbarHtml && elemToolTemp.html(\n laytpl(toolbarHtml).render(options)\n );\n }\n\n // 添加工具栏右侧面板\n var layout = {\n filter: {\n title: '筛选列',\n layEvent: 'LAYTABLE_COLS',\n icon: 'layui-icon-cols'\n },\n exports: {\n title: '导出',\n layEvent: 'LAYTABLE_EXPORT',\n icon: 'layui-icon-export'\n },\n print: {\n title: '打印',\n layEvent: 'LAYTABLE_PRINT',\n icon: 'layui-icon-print'\n }\n }, iconElem = [];\n\n if(typeof options.defaultToolbar === 'object'){\n layui.each(options.defaultToolbar, function(i, item){\n var thisItem = typeof item === 'string' ? layout[item] : item;\n if(thisItem){\n iconElem.push('
                        '\n +''\n +'
                        ');\n }\n });\n }\n that.layTool.find('.layui-table-tool-self').html(iconElem.join(''));\n };\n\n // 分页栏\n Class.prototype.renderPagebar = function(){\n var that = this;\n var options = that.config;\n\n var layPagebar = that.layPagebar = $('
                        ');\n\n // 开启分页栏自定义模板\n if(options.pagebar){\n var pagebarHtml = $(options.pagebar).html() || '';\n pagebarHtml && layPagebar.append(laytpl(pagebarHtml).render(options));\n that.layPage.append(layPagebar);\n }\n };\n\n // 同步表头父列的相关值\n Class.prototype.setParentCol = function(hide, parentKey){\n var that = this;\n var options = that.config;\n\n var parentTh = that.layHeader.find('th[data-key=\"'+ parentKey +'\"]'); // 获取父列元素\n var parentColspan = parseInt(parentTh.attr('colspan')) || 0;\n\n if(parentTh[0]){\n var arrParentKey = parentKey.split('-');\n var getThisCol = options.cols[arrParentKey[1]][arrParentKey[2]];\n\n hide ? parentColspan-- : parentColspan++;\n\n parentTh.attr('colspan', parentColspan);\n parentTh[parentColspan ? 'removeClass' : 'addClass'](HIDE); // 如果子列显示,父列必然需要显示\n\n getThisCol.colspan2 = parentColspan; // 更新实际的 colspan 数\n getThisCol.hide = parentColspan < 1; // 同步 hide 参数\n\n // 递归,继续往上查询是否有父列\n var nextParentKey = parentTh.data('parentkey');\n nextParentKey && that.setParentCol(hide, nextParentKey);\n }\n };\n\n // 多级表头补丁\n Class.prototype.setColsPatch = function(){\n var that = this;\n var options = that.config;\n\n // 同步表头父列的相关值\n layui.each(options.cols, function(i1, item1){\n layui.each(item1, function(i2, item2){\n if(item2.hide){\n that.setParentCol(item2.hide, item2.parentKey);\n }\n });\n });\n };\n\n // 设置组合表头的最大宽度\n Class.prototype.setGroupWidth = function(th){\n var that = this;\n var options = that.config;\n\n if(options.cols.length <= 1) return;\n\n // 获取表头组合\n var groups = that.layHeader.find((\n // 根据当前活动的表头 parentkey 属性查找其组合表头\n th ? ('th[data-key='+ th.data('parentkey') +']>') : ''\n ) + '.' + ELEM_GROUP); // 若无指向当前活动表头,则自下而上获取所有组合表头\n\n groups.css('width', 0);\n layui.each(groups.get().reverse(), function(){\n var othis = $(this);\n var key = othis.parent().data('key');\n var maxWidth = 0;\n\n that.layHeader.eq(0).find('th[data-parentkey='+ key +']').width(function(i, width){\n var oTh = $(this);\n if(oTh.hasClass(HIDE)) return;\n width > 0 && (maxWidth += width);\n });\n\n // 给组合表头赋值最大宽度\n if(maxWidth) othis.css('max-width', maxWidth - 1);\n\n // 若当前活动的组合表头仍存在上级,则继续向上设置\n if(th && othis.parent().data('parentkey')){\n that.setGroupWidth(othis.parent());\n }\n });\n groups.css('width', 'auto');\n };\n\n // 动态分配列宽\n Class.prototype.setColsWidth = function(){\n var that = this;\n var options = that.config;\n var colNums = 0; // 列个数\n var autoColNums = 0; // 自动列宽的列个数\n var autoWidth = 0; // 自动列分配的宽度\n var countWidth = 0; // 所有列总宽度和\n var cntrWidth = that.setInit('width');\n\n // 统计列个数\n that.eachCols(function(i, item){\n item.hide || colNums++;\n });\n\n // 减去边框差和滚动条宽\n cntrWidth = cntrWidth - function(){\n return (options.skin === 'line' || options.skin === 'nob') ? 2 : colNums + 1;\n }() - that.getScrollWidth(that.layMain[0]) - 1;\n\n // 计算自动分配的宽度\n var getAutoWidth = function(back){\n // 遍历所有列\n layui.each(options.cols, function(i1, item1){\n layui.each(item1, function(i2, item2){\n var width = 0;\n var minWidth = item2.minWidth || options.cellMinWidth; // 最小宽度\n var maxWidth = item2.maxWidth || options.cellMaxWidth; // 最大宽度\n\n if(!item2){\n item1.splice(i2, 1);\n return;\n }\n\n if(item2.colGroup || item2.hide) return;\n\n if(!back){\n width = item2.width || 0;\n if(/\\d+%$/.test(width)){ // 列宽为百分比\n width = Math.floor((parseFloat(width) / 100) * cntrWidth);\n width < minWidth && (width = minWidth);\n width > maxWidth && (width = maxWidth);\n } else if(!width){ // 列宽未填写\n item2.width = width = 0;\n autoColNums++;\n } else if(item2.type === 'normal'){\n // 若 width 小于 minWidth, 则将 width 值自动设为 minWidth 的值\n width < minWidth && (item2.width = width = minWidth);\n // 若 width 大于 maxWidth, 则将 width 值自动设为 maxWidth 的值\n width > maxWidth && (item2.width = width = maxWidth);\n }\n } else if(autoWidth && autoWidth < minWidth){\n autoColNums--;\n width = minWidth;\n } else if(autoWidth && autoWidth > maxWidth){\n autoColNums--;\n width = maxWidth;\n }\n\n if(item2.hide) width = 0;\n countWidth = countWidth + width;\n });\n });\n\n // 如果未填充满,则将剩余宽度平分\n (cntrWidth > countWidth && autoColNums > 0) && (\n autoWidth = (cntrWidth - countWidth) / autoColNums\n );\n }\n\n getAutoWidth();\n getAutoWidth(true); // 重新检测分配的宽度是否低于最小列宽\n\n // 记录自动列数\n that.autoColNums = autoColNums = autoColNums > 0 ? autoColNums : 0;\n\n // 设置列宽\n that.eachCols(function(i3, item3){\n var minWidth = item3.minWidth || options.cellMinWidth;\n var maxWidth = item3.maxWidth || options.cellMaxWidth;\n\n if(item3.colGroup || item3.hide) return;\n\n // 给未分配宽的列平均分配宽\n if(item3.width === 0){\n that.cssRules(item3.key, function(item){\n item.style.width = Math.floor(function(){\n if(autoWidth < minWidth) return minWidth;\n if(autoWidth > maxWidth) return maxWidth;\n return autoWidth;\n }()) + 'px';\n });\n }\n\n // 给设定百分比的列分配列宽\n else if(/\\d+%$/.test(item3.width)){\n that.cssRules(item3.key, function(item){\n var width = Math.floor((parseFloat(item3.width) / 100) * cntrWidth);\n width < minWidth && (width = minWidth);\n width > maxWidth && (width = maxWidth);\n item.style.width = width + 'px';\n });\n }\n\n // 给拥有普通 width 值的列分配最新列宽\n else {\n that.cssRules(item3.key, function(item){\n item.style.width = item3.width + 'px';\n });\n }\n });\n\n // 填补 Math.floor 造成的数差\n var patchNums = that.layMain.width() - that.getScrollWidth(that.layMain[0])\n - that.layMain.children('table').outerWidth();\n\n if(that.autoColNums > 0 && patchNums >= -colNums && patchNums <= colNums){\n var getEndTh = function(th){\n var field;\n th = th || that.layHeader.eq(0).find('thead > tr:first-child > th:last-child')\n field = th.data('field');\n if(!field && th.prev()[0]){\n return getEndTh(th.prev())\n }\n return th;\n };\n var th = getEndTh();\n var key = th.data('key');\n\n that.cssRules(key, function(item){\n var width = item.style.width || th.outerWidth();\n item.style.width = (parseFloat(width) + patchNums) + 'px';\n\n // 二次校验,如果仍然出现横向滚动条(通常是 1px 的误差导致)\n if(that.layMain.height() - that.layMain.prop('clientHeight') > 0){\n item.style.width = (parseFloat(item.style.width) - 1) + 'px';\n }\n });\n }\n\n that.setGroupWidth();\n\n // 如果表格内容为空(无数据 或 请求异常)\n if (that.layMain.find('tbody').is(\":empty\")) {\n // 将表格宽度设置为跟表头一样的宽度,使之可以出现底部滚动条,以便滚动查看所有字段\n var headerWidth = that.layHeader.first().children('table').width()\n that.layMain.find('table').width(headerWidth);\n } else {\n that.layMain.find('table').width('auto');\n }\n\n that.loading(!0);\n };\n\n // 重置表格尺寸/结构\n Class.prototype.resize = function(){\n var that = this;\n\n if (!that.layMain) return;\n\n that.fullSize(); // 让表格铺满\n that.setColsWidth(); // 自适应列宽\n that.scrollPatch(); // 滚动条补丁\n };\n\n // 表格重载\n Class.prototype.reload = function(options, deep, type){\n var that = this;\n\n options = options || {};\n delete that.haveInit;\n\n // 防止数组深度合并\n layui.each(options, function(key, item){\n if(layui.type(item) === 'array') delete that.config[key];\n });\n\n // 对参数进行深度或浅扩展\n that.config = $.extend(deep, {}, that.config, options);\n if (type !== 'reloadData') {\n layui.each(that.config.cols, function (i1, item1) {\n layui.each(item1, function (i2, item2) {\n delete item2.colspan2;\n })\n })\n delete that.config.HAS_SET_COLS_PATCH;\n }\n // 执行渲染\n that.render(type);\n };\n\n // 异常提示\n Class.prototype.errorView = function(html){\n var that = this\n ,elemNone = that.layMain.find('.'+ NONE)\n ,layNone = $('
                        '+ (html || 'Error') +'
                        ');\n\n if(elemNone[0]){\n that.layNone.remove();\n elemNone.remove();\n }\n\n that.layFixed.addClass(HIDE);\n that.layMain.find('tbody').html('');\n\n that.layMain.append(that.layNone = layNone);\n\n // 异常情况下对 page 和 total 的内容处理\n that.layTotal.addClass(HIDE_V);\n that.layPage.find(ELEM_PAGE_VIEW).addClass(HIDE_V);\n\n table.cache[that.key] = []; //格式化缓存数据\n\n that.syncCheckAll();\n that.renderForm();\n that.setColsWidth();\n };\n\n // 初始页码\n Class.prototype.page = 1;\n\n // 获得数据\n Class.prototype.pullData = function(curr, opts){\n var that = this;\n var options = that.config;\n // 同步表头父列的相关值\n options.HAS_SET_COLS_PATCH || that.setColsPatch();\n options.HAS_SET_COLS_PATCH = true;\n var request = options.request;\n var response = options.response;\n var res;\n var sort = function(){\n if(typeof options.initSort === 'object'){\n that.sort({\n field: options.initSort.field,\n type: options.initSort.type,\n reloadType: opts.type\n });\n }\n };\n var done = function(res, origin){\n that.setColsWidth();\n typeof options.done === 'function' && options.done(\n res, curr, res[response.countName], origin\n );\n };\n\n opts = opts || {};\n\n // 数据拉取前的回调\n typeof options.before === 'function' && options.before(\n options\n );\n that.startTime = new Date().getTime(); // 渲染开始时间\n\n if (opts.renderData) { // 将 cache 信息重新渲染\n res = {};\n res[response.dataName] = table.cache[that.key];\n res[response.countName] = options.url ? (layui.type(options.page) === 'object' ? options.page.count : res[response.dataName].length) : options.data.length;\n\n // 记录合计行数据\n if(typeof options.totalRow === 'object'){\n res[response.totalRowName] = $.extend({}, that.totalRow);\n }\n\n that.renderData({\n res: res,\n curr: curr,\n count: res[response.countName],\n type: opts.type,\n sort: true\n }), done(res, 'renderData');\n } else if(options.url){ // Ajax请求\n var params = {};\n // 当 page 开启,默认自动传递 page、limit 参数\n if(options.page){\n params[request.pageName] = curr;\n params[request.limitName] = options.limit;\n }\n\n // 参数\n var data = $.extend(params, options.where);\n if(options.contentType && options.contentType.indexOf(\"application/json\") == 0){ // 提交 json 格式\n data = JSON.stringify(data);\n }\n\n that.loading();\n\n $.ajax({\n type: options.method || 'get',\n url: options.url,\n contentType: options.contentType,\n data: data,\n dataType: options.dataType || 'json',\n jsonpCallback: options.jsonpCallback,\n headers: options.headers || {},\n complete: typeof options.complete === 'function' ? options.complete : undefined,\n success: function(res){\n // 若有数据解析的回调,则获得其返回的数据\n if(typeof options.parseData === 'function'){\n res = options.parseData(res) || res;\n }\n // 检查数据格式是否符合规范\n if(res[response.statusName] != response.statusCode){\n that.errorView(\n res[response.msgName] ||\n ('返回的数据不符合规范,正确的成功状态码应为:\"'+ response.statusName +'\": '+ response.statusCode)\n );\n } else {\n that.totalRow = res[response.totalRowName];\n that.renderData({\n res: res,\n curr: curr,\n count: res[response.countName],\n type: opts.type\n }), sort();\n\n // 耗时(接口请求+视图渲染)\n options.time = (new Date().getTime() - that.startTime) + ' ms';\n }\n done(res);\n },\n error: function(e, msg){\n that.errorView('请求异常,错误提示:'+ msg);\n typeof options.error === 'function' && options.error(e, msg);\n }\n });\n } else if(layui.type(options.data) === 'array'){ //已知数据\n res = {};\n var startLimit = curr*options.limit - options.limit;\n var newData = options.data.concat();\n\n res[response.dataName] = options.page\n ? newData.splice(startLimit, options.limit)\n : newData;\n res[response.countName] = options.data.length;\n\n // 记录合计行数据\n if(typeof options.totalRow === 'object'){\n res[response.totalRowName] = $.extend({}, options.totalRow);\n }\n that.totalRow = res[response.totalRowName];\n\n that.renderData({\n res: res,\n curr: curr,\n count: res[response.countName],\n type: opts.type\n }), sort();\n\n done(res);\n }\n };\n\n // 遍历表头\n Class.prototype.eachCols = function(callback){\n var that = this;\n table.eachCols(null, callback, that.config.cols);\n return that;\n };\n\n // 获取表头参数项\n Class.prototype.col = function(key){\n try {\n key = key.split('-');\n return this.config.cols[key[1]][key[2]] || {};\n } catch(e){\n hint.error(e);\n return {};\n }\n };\n\n Class.prototype.getTrHtml = function(data, sort, curr, trsObj) {\n var that = this;\n var options = that.config;\n var trs = trsObj && trsObj.trs || [];\n var trs_fixed = trsObj && trsObj.trs_fixed || [];\n var trs_fixed_r = trsObj && trsObj.trs_fixed_r || [];\n curr = curr || 1\n\n layui.each(data, function(i1, item1){\n var tds = [];\n var tds_fixed = [];\n var tds_fixed_r = [];\n var numbers = i1 + options.limit*(curr - 1) + 1; // 序号\n\n // 数组值是否为 object,如果不是,则自动转为 object\n if(typeof item1 !== 'object'){\n data[i1] = item1 = {LAY_KEY: item1};\n try {\n table.cache[that.key][i1] = item1;\n } catch(e) {}\n }\n\n //若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])\n if(layui.type(item1) === 'array' && item1.length === 0) return;\n\n // 加入序号保留字段\n item1[table.config.numbersName] = numbers;\n\n // 记录下标索引,用于恢复排序\n if(!sort) item1[table.config.indexName] = i1;\n\n // 遍历表头\n that.eachCols(function(i3, item3){\n var field = item3.field || i3;\n var key = item3.key;\n var content = item1[field];\n\n if(content === undefined || content === null) content = '';\n if(item3.colGroup) return;\n\n // td 内容\n var td = [''\n ,'
                        '\n + function(){\n var tplData = $.extend(true, {\n LAY_COL: item3\n }, item1);\n var checkName = table.config.checkName;\n var disabledName = table.config.disabledName;\n\n // 渲染不同风格的列\n switch(item3.type){\n case 'checkbox': // 复选\n return '';\n //break;\n case 'radio': // 单选\n return '';\n //break;\n case 'numbers':\n return numbers;\n //break;\n }\n\n //解析工具列模板\n if(item3.toolbar){\n return laytpl($(item3.toolbar).html()||'').render(tplData);\n }\n return parseTempData.call(that, {\n item3: item3\n ,content: content\n ,tplData: tplData\n });\n }()\n ,'
                        '].join('');\n\n tds.push(td);\n if(item3.fixed && item3.fixed !== 'right') tds_fixed.push(td);\n if(item3.fixed === 'right') tds_fixed_r.push(td);\n });\n\n // 添加 tr 属性\n var trAttr = function(){\n var arr = ['data-index=\"'+ i1 +'\"'];\n if(item1[table.config.checkName]) arr.push('class=\"'+ ELEM_CHECKED +'\"');\n return arr.join(' ');\n }();\n\n trs.push(''+ tds.join('') + '');\n trs_fixed.push(''+ tds_fixed.join('') + '');\n trs_fixed_r.push(''+ tds_fixed_r.join('') + '');\n });\n\n return {\n trs: trs,\n trs_fixed: trs_fixed,\n trs_fixed_r: trs_fixed_r\n }\n }\n\n // 返回行节点代码\n table.getTrHtml = function (id, data) {\n var that = getThisTable(id);\n return that.getTrHtml(data, null, that.page);\n }\n\n // 数据渲染\n Class.prototype.renderData = function(opts){\n var that = this;\n var options = that.config;\n\n var res = opts.res;\n var curr = opts.curr;\n var count = that.count = opts.count;\n var sort = opts.sort;\n\n var data = res[options.response.dataName] || []; //列表数据\n var totalRowData = res[options.response.totalRowName]; //合计行数据\n var trs = [];\n var trs_fixed = [];\n var trs_fixed_r = [];\n\n // 渲染视图\n var render = function(){ // 后续性能提升的重点\n if(!sort && that.sortKey){\n return that.sort({\n field: that.sortKey.field,\n type: that.sortKey.sort,\n pull: true,\n reloadType: opts.type\n });\n }\n that.getTrHtml(data, sort, curr, {\n trs: trs,\n trs_fixed: trs_fixed,\n trs_fixed_r: trs_fixed_r\n });\n\n // 容器的滚动条位置\n if(!(options.scrollPos === 'fixed' && opts.type === 'reloadData')){\n that.layBody.scrollTop(0);\n }\n if(options.scrollPos === 'reset'){\n that.layBody.scrollLeft(0);\n }\n\n that.layMain.find('.'+ NONE).remove();\n that.layMain.find('tbody').html(trs.join(''));\n that.layFixLeft.find('tbody').html(trs_fixed.join(''));\n that.layFixRight.find('tbody').html(trs_fixed_r.join(''));\n\n // 渲染表单\n that.syncCheckAll();\n that.renderForm();\n\n // 因为 page 参数有可能发生变化 先重新铺满\n that.fullSize();\n\n // 滚动条补丁\n that.haveInit ? that.scrollPatch() : setTimeout(function(){\n that.scrollPatch();\n }, 50);\n that.haveInit = true;\n\n layer.close(that.tipsIndex);\n };\n\n table.cache[that.key] = data; //记录数据\n\n //显示隐藏合计栏\n that.layTotal[data.length == 0 ? 'addClass' : 'removeClass'](HIDE_V);\n\n //显示隐藏分页栏\n that.layPage[(options.page || options.pagebar) ? 'removeClass' : 'addClass'](HIDE);\n that.layPage.find(ELEM_PAGE_VIEW)[\n (!options.page || count == 0 || (data.length === 0 && curr == 1))\n ? 'addClass'\n : 'removeClass'\n ](HIDE_V);\n\n //如果无数据\n if(data.length === 0){\n return that.errorView(options.text.none);\n } else {\n that.layFixLeft.removeClass(HIDE);\n }\n\n //如果执行初始排序\n if(sort){\n return render();\n }\n\n //正常初始化数据渲染\n render(); //渲染数据\n that.renderTotal(data, totalRowData); //数据合计\n that.layTotal && that.layTotal.removeClass(HIDE);\n\n //同步分页状态\n if(options.page){\n options.page = $.extend({\n elem: 'layui-table-page' + options.index,\n count: count,\n limit: options.limit,\n limits: options.limits || [10,20,30,40,50,60,70,80,90],\n groups: 3,\n layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],\n prev: '',\n next: '',\n jump: function(obj, first){\n if(!first){\n //分页本身并非需要做以下更新,下面参数的同步,主要是因为其它处理统一用到了它们\n //而并非用的是 options.page 中的参数(以确保分页未开启的情况仍能正常使用)\n that.page = obj.curr; //更新页码\n options.limit = obj.limit; //更新每页条数\n\n that.pullData(obj.curr);\n }\n }\n }, options.page);\n options.page.count = count; //更新总条数\n laypage.render(options.page);\n }\n };\n\n // 重新渲染数据\n table.renderData = function (id) {\n var that = getThisTable(id);\n if (!that) {\n return;\n }\n\n that.pullData(that.page, {\n renderData: true,\n type: 'reloadData'\n });\n }\n\n // 数据合计行\n Class.prototype.renderTotal = function(data, totalRowData){\n var that = this;\n var options = that.config;\n var totalNums = {};\n\n if(!options.totalRow) return;\n\n layui.each(data, function(i1, item1){\n // 若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])\n if(layui.type(item1) === 'array' && item1.length === 0) return;\n\n that.eachCols(function(i3, item3){\n var field = item3.field || i3\n ,content = item1[field];\n\n if(item3.totalRow){\n totalNums[field] = (totalNums[field] || 0) + (parseFloat(content) || 0);\n }\n });\n });\n\n that.dataTotal = []; // 记录合计行结果\n\n var tds = [];\n that.eachCols(function(i3, item3){\n var field = item3.field || i3;\n\n // 合计数据的特定字段\n var TOTAL_NUMS = totalRowData && totalRowData[item3.field];\n\n // 合计数据的小数点位数处理\n var decimals = 'totalRowDecimals' in item3 ? item3.totalRowDecimals : 2;\n var thisTotalNum = totalNums[field]\n ? parseFloat(totalNums[field] || 0).toFixed(decimals)\n : '';\n\n // td 显示内容\n var content = function(){\n var text = item3.totalRowText || '';\n var tplData = {\n LAY_COL: item3\n };\n\n tplData[field] = thisTotalNum;\n\n // 获取自动计算的合并内容\n var getContent = item3.totalRow ? (parseTempData.call(that, {\n item3: item3,\n content: thisTotalNum,\n tplData: tplData\n }) || text) : text;\n\n // 如果直接传入了合计行数据,则不输出自动计算的结果\n return TOTAL_NUMS || getContent;\n }();\n\n // 合计原始结果\n var total = TOTAL_NUMS || thisTotalNum || '';\n item3.field && that.dataTotal.push({\n field: item3.field,\n total: $('
                        '+ content +'
                        ').text()\n });\n\n // td 容器\n var td = ['',\n '
                        ' + function(){\n var totalRow = item3.totalRow || options.totalRow;\n\n // 如果 totalRow 参数为字符类型,则解析为自定义模版\n if(typeof totalRow === 'string'){\n return laytpl(totalRow).render($.extend({\n TOTAL_NUMS: TOTAL_NUMS || totalNums[field],\n TOTAL_ROW: totalRowData || {},\n LAY_COL: item3\n }, item3));\n }\n return content;\n }(),\n '
                        '].join('');\n\n tds.push(td);\n });\n\n var patchElem = that.layTotal.find('.layui-table-patch'); // 可能存在滚动条补丁\n that.layTotal.find('tbody').html('' + tds.join('') + (patchElem.length ? patchElem.get(0).outerHTML : '') + '');\n };\n\n //找到对应的列元素\n Class.prototype.getColElem = function(parent, key){\n var that = this;\n //var options = that.config;\n return parent.eq(0).find('.laytable-cell-'+ key + ':eq(0)');\n };\n\n // 渲染表单\n Class.prototype.renderForm = function(type){\n var that = this;\n var options = that.config;\n var filter = that.elem.attr('lay-filter');\n form.render(type, filter);\n };\n\n // 同步全选按钮状态\n Class.prototype.syncCheckAll = function(){\n var that = this;\n var options = that.config;\n var checkAllElem = that.layHeader.find('input[name=\"layTableCheckbox\"]');\n var syncColsCheck = function(checked){\n that.eachCols(function(i, item){\n if(item.type === 'checkbox'){\n item[options.checkName] = checked;\n }\n });\n return checked;\n };\n var checkStatus = table.checkStatus(that.key);\n\n if(!checkAllElem[0]) return;\n\n // 选中状态\n syncColsCheck(checkStatus.isAll);\n checkAllElem.prop({\n checked: checkStatus.isAll,\n indeterminate: !checkStatus.isAll && checkStatus.data.length // 半选\n });\n form.render(checkAllElem);\n };\n\n // 标记当前活动行背景色\n Class.prototype.setRowActive = function(index, className, removeClass){\n var that = this;\n var options = that.config;\n var tr = that.layBody.find('tr[data-index=\"'+ index +'\"]');\n className = className || 'layui-table-click';\n\n if(removeClass) return tr.removeClass(className);\n\n tr.addClass(className);\n tr.siblings('tr').removeClass(className);\n };\n\n // 设置行选中状态\n Class.prototype.setRowChecked = function(opts){\n var that = this;\n var options = that.config;\n var tr = that.layBody.find('tr'+ (\n opts.index === 'all' ? '' : '[data-index=\"'+ opts.index +'\"]'\n ));\n\n // 默认属性\n opts = $.extend({\n type: 'checkbox' // 选中方式\n }, opts);\n\n // 同步数据选中属性值\n var thisData = table.cache[that.key];\n var existChecked = 'checked' in opts;\n var getChecked = function(value){\n // 若为单选框,则单向选中;若为复选框,则切换选中。\n return opts.type === 'radio' ? true : (existChecked ? opts.checked : !value)\n };\n\n // 设置数据选中属性\n layui.each(thisData, function(i, item){\n if(layui.type(item) === 'array' || item[options.disabledName]) return; // 空项\n if(Number(opts.index) === i || opts.index === 'all'){\n var checked = item[options.checkName] = getChecked(item[options.checkName]);\n tr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED); // 标记当前选中行背景色\n // 若为 radio 类型,则取消其他行选中背景色\n if(opts.type === 'radio'){\n tr.siblings().removeClass(ELEM_CHECKED);\n }\n } else if(opts.type === 'radio') {\n delete item[options.checkName];\n }\n });\n\n // 若存在复选框或单选框,则标注选中状态样式\n var checkedElem = tr.find('input[lay-type=\"'+ ({\n radio: 'layTableRadio',\n checkbox: 'layTableCheckbox'\n }[opts.type] || 'checkbox') +'\"]:not(:disabled)');\n var checkedSameElem = checkedElem.last();\n var fixRElem = checkedSameElem.closest(ELEM_FIXR);\n\n ( opts.type === 'radio' && fixRElem.hasClass(HIDE)\n ? checkedElem.first()\n : checkedElem ).prop('checked', getChecked(checkedSameElem.prop('checked')));\n\n that.syncCheckAll();\n that.renderForm(opts.type);\n };\n\n // 数据排序\n Class.prototype.sort = function(opts){ // field, type, pull, fromEvent\n var that = this;\n var field;\n var res = {};\n var options = that.config;\n var filter = options.elem.attr('lay-filter');\n var data = table.cache[that.key], thisData;\n\n opts = opts || {};\n\n // 字段匹配\n if(typeof opts.field === 'string'){\n field = opts.field;\n that.layHeader.find('th').each(function(i, item){\n var othis = $(this);\n var _field = othis.data('field');\n if(_field === opts.field){\n opts.field = othis;\n field = _field;\n return false;\n }\n });\n }\n\n try {\n field = field || opts.field.data('field');\n var key = opts.field.data('key');\n\n // 如果欲执行的排序已在状态中,则不执行渲染\n if(that.sortKey && !opts.pull){\n if(field === that.sortKey.field && opts.type === that.sortKey.sort){\n return;\n }\n }\n\n var elemSort = that.layHeader.find('th .laytable-cell-'+ key).find(ELEM_SORT);\n that.layHeader.find('th').find(ELEM_SORT).removeAttr('lay-sort'); // 清除其它标题排序状态\n elemSort.attr('lay-sort', opts.type || null);\n that.layFixed.find('th')\n } catch(e){\n hint.error('Table modules: sort field \\''+ field +'\\' not matched');\n }\n\n // 记录排序索引和类型\n that.sortKey = {\n field: field,\n sort: opts.type\n };\n\n // 默认为前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)\n if(options.autoSort){\n if(opts.type === 'asc'){ //升序\n thisData = layui.sort(data, field, null, true);\n } else if(opts.type === 'desc'){ //降序\n thisData = layui.sort(data, field, true, true);\n } else { // 清除排序\n thisData = layui.sort(data, table.config.indexName, null, true);\n delete that.sortKey;\n delete options.initSort;\n }\n }\n\n res[options.response.dataName] = thisData || data;\n\n // 重载数据\n that.renderData({\n res: res,\n curr: that.page,\n count: that.count,\n sort: true,\n type: opts.reloadType\n });\n\n // 排序是否来自于点击表头事件触发\n if(opts.fromEvent){\n options.initSort = {\n field: field,\n type: opts.type\n };\n layui.event.call(opts.field, MOD_NAME, 'sort('+ filter +')', $.extend({\n config: options\n }, options.initSort));\n }\n };\n\n // 请求 loading\n Class.prototype.loading = function(hide){\n var that = this;\n var options = that.config;\n if(options.loading){\n if(hide){\n that.layInit && that.layInit.remove();\n delete that.layInit;\n that.layBox.find(ELEM_INIT).remove();\n } else {\n that.layInit = $(['
                        ',\n '',\n '
                        '].join(''));\n that.layBox.append(that.layInit);\n }\n }\n };\n\n // 获取对应单元格的 cssRules\n Class.prototype.cssRules = function(key, callback){\n var that = this;\n var style = that.elem.children('style')[0];\n\n lay.getStyleRules(style, function(item){\n if (item.selectorText === ('.laytable-cell-'+ key)) {\n return callback(item), true;\n }\n });\n };\n\n // 让表格铺满\n Class.prototype.fullSize = function(){\n var that = this;\n var options = that.config;\n var height = options.height;\n var bodyHeight;\n\n if(that.fullHeightGap){\n height = _WIN.height() - that.fullHeightGap;\n if(height < 135) height = 135;\n // that.elem.css('height', height);\n } else if (that.parentDiv && that.parentHeightGap) {\n height = $(that.parentDiv).height() - that.parentHeightGap;\n if (height < 135) height = 135;\n // that.elem.css(\"height\", height);\n }\n\n // 如果多级表头,则填补表头高度\n if(options.cols.length > 1){\n // 补全高度\n var th = that.layFixed.find(ELEM_HEADER).find('th');\n // 固定列表头同步跟本体 th 一致高度\n var headerMain = that.layHeader.first();\n layui.each(th, function (thIndex, thElem) {\n thElem = $(thElem);\n thElem.height(headerMain.find('th[data-key=\"' + thElem.attr('data-key') + '\"]').height() + 'px');\n })\n }\n\n if(!height) return;\n\n // 减去列头区域的高度 --- 此处的数字常量是为了防止容器处在隐藏区域无法获得高度的问题,只对默认尺寸表格做支持\n bodyHeight = parseFloat(height) - (that.layHeader.outerHeight() || 39)\n\n // 减去工具栏的高度\n if(options.toolbar){\n bodyHeight -= (that.layTool.outerHeight() || 51);\n }\n\n // 减去统计栏的高度\n if(options.totalRow){\n bodyHeight -= (that.layTotal.outerHeight() || 40);\n }\n\n // 减去分页栏的高度\n if(options.page || options.pagebar){\n bodyHeight -= (that.layPage.outerHeight() || 43);\n }\n\n if (options.maxHeight) {\n layui.each({elem: height, layMain: bodyHeight}, function (elemName, elemHeight) {\n that[elemName].css({\n height: 'auto',\n maxHeight: elemHeight + 'px'\n });\n });\n } else {\n that.layMain.outerHeight(bodyHeight);\n }\n };\n\n //获取滚动条宽度\n Class.prototype.getScrollWidth = function(elem){\n var width;\n if(elem){\n width = elem.offsetWidth - elem.clientWidth;\n } else {\n elem = document.createElement('div');\n elem.style.width = '100px';\n elem.style.height = '100px';\n elem.style.overflowY = 'scroll';\n\n document.body.appendChild(elem);\n width = elem.offsetWidth - elem.clientWidth;\n document.body.removeChild(elem);\n }\n return width;\n };\n\n // 滚动条补丁\n Class.prototype.scrollPatch = function(){\n var that = this;\n var layMainTable = that.layMain.children('table');\n var scrollWidth = that.layMain.width() - that.layMain.prop('clientWidth'); // 纵向滚动条宽度\n var scrollHeight = that.layMain.height() - that.layMain.prop('clientHeight'); // 横向滚动条高度\n var getScrollWidth = that.getScrollWidth(that.layMain[0]); // 获取主容器滚动条宽度,如果有的话\n var outWidth = layMainTable.outerWidth() - that.layMain.width(); // 表格内容器的超出宽度\n\n // 添加补丁\n var addPatch = function(elem){\n if(scrollWidth && scrollHeight){\n elem = elem.eq(0);\n if(!elem.find('.layui-table-patch')[0]){\n var patchElem = $('
                        '); // 补丁元素\n patchElem.find('div').css({\n width: scrollWidth\n });\n elem.find('tr').append(patchElem);\n }\n } else {\n elem.find('.layui-table-patch').remove();\n }\n };\n\n addPatch(that.layHeader);\n addPatch(that.layTotal);\n\n // 固定列区域高度\n var mainHeight = that.layMain.height();\n var fixHeight = mainHeight - scrollHeight;\n\n that.layFixed.find(ELEM_BODY).css(\n 'height',\n layMainTable.height() >= fixHeight ? fixHeight : 'auto'\n ).scrollTop(that.layMain.scrollTop()); // 固定列滚动条高度\n\n // 表格宽度小于容器宽度时,隐藏固定列\n that.layFixRight[\n (table.cache[that.key] && table.cache[that.key].length) && outWidth > 0\n ? 'removeClass'\n : 'addClass'\n ](HIDE);\n\n // 操作栏\n that.layFixRight.css('right', scrollWidth - 1);\n };\n\n // 事件处理\n Class.prototype.events = function(){\n var that = this;\n var options = that.config;\n\n var filter = options.elem.attr('lay-filter');\n var th = that.layHeader.find('th');\n var ELEM_CELL = '.layui-table-cell';\n\n var _BODY = $('body');\n var dict = {};\n\n // 头部工具栏操作事件\n that.layTool.on('click', '*[lay-event]', function(e){\n var othis = $(this);\n var events = othis.attr('lay-event');\n var data = table.cache[options.id];\n var openPanel = function(sets){\n var list = $(sets.list);\n var panel = $('
                          ');\n\n panel.html(list);\n\n // 限制最大高度\n if(options.height){\n panel.css('max-height', options.height - (that.layTool.outerHeight() || 50));\n }\n\n // 插入元素\n othis.find('.' + ELEM_TOOL_PANEL)[0] || othis.append(panel);\n that.renderForm();\n\n panel.on('click', function(e){\n layui.stope(e);\n });\n\n sets.done && sets.done(panel, list)\n };\n\n layui.stope(e);\n _DOC.trigger('table.tool.panel.remove');\n layer.close(that.tipsIndex);\n\n switch(events){\n case 'LAYTABLE_COLS': // 筛选列\n openPanel({\n list: function(){\n var lis = [];\n that.eachCols(function(i, item){\n if(item.field && item.type == 'normal'){\n lis.push('
                        • ' + (item.fieldTitle || item.title || item.field) + '
                        • ').text()) +'\" lay-filter=\"LAY_TABLE_TOOL_COLS\">');\n }\n });\n return lis.join('');\n }()\n ,done: function(){\n form.on('checkbox(LAY_TABLE_TOOL_COLS)', function(obj){\n var othis = $(obj.elem);\n var checked = this.checked;\n var key = othis.data('key');\n var col = that.col(key);\n var hide = col.hide;\n var parentKey = othis.data('parentkey');\n\n if(!col.key) return;\n\n // 同步勾选列的 hide 值和隐藏样式\n col.hide = !checked;\n that.elem.find('*[data-key=\"'+ key +'\"]')[\n checked ? 'removeClass' : 'addClass'\n ](HIDE);\n\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\n if(hide != col.hide){\n that.setParentCol(!checked, parentKey);\n }\n\n // 重新适配尺寸\n that.resize();\n\n // 列筛选(显示或隐藏)后的事件\n layui.event.call(this, MOD_NAME, 'colToggled('+ filter +')', {\n col: col,\n config: options\n });\n });\n }\n });\n break;\n case 'LAYTABLE_EXPORT': // 导出\n if (!data.length) return layer.tips('当前表格无数据', this, {tips: 3});\n if(device.ie){\n layer.tips('导出功能不支持 IE,请用 Chrome 等高级浏览器导出', this, {\n tips: 3\n });\n } else {\n openPanel({\n list: function(){\n return [\n '
                        • 导出 csv 格式文件
                        • ',\n '
                        • 导出 xls 格式文件
                        • '\n ].join('')\n }(),\n done: function(panel, list){\n list.on('click', function(){\n var type = $(this).data('type')\n table.exportFile.call(that, options.id, null, type);\n });\n }\n });\n }\n break;\n case 'LAYTABLE_PRINT': // 打印\n if (!data.length) return layer.tips('当前表格无数据', this, {tips: 3});\n var printWin = window.open('about:blank', '_blank');\n var style = [''].join('')\n var html = $(that.layHeader.html()); // 输出表头\n\n html.append(that.layMain.find('table').html()); // 输出表体\n html.append(that.layTotal.find('table').html()) // 输出合计行\n\n html.find('th.layui-table-patch').remove(); // 移除补丁\n // 移除表头特殊列\n html.find('thead>tr>th.'+ ELEM_COL_SPECIAL).filter(function(i, thElem){\n return !$(thElem).children('.'+ ELEM_GROUP).length; // 父级表头除外\n }).remove();\n html.find('tbody>tr>td.'+ ELEM_COL_SPECIAL).remove(); // 移除表体特殊列\n\n printWin.document.write(style + html.prop('outerHTML'));\n printWin.document.close();\n\n if(layui.device('edg').edg){\n printWin.onafterprint = printWin.close;\n printWin.print();\n }else{\n printWin.print();\n printWin.close();\n }\n break;\n }\n\n layui.event.call(this, MOD_NAME, 'toolbar('+ filter +')', $.extend({\n event: events,\n config: options\n },{}));\n });\n\n // 表头自定义元素事件\n that.layHeader.on('click', '*[lay-event]', function(e){\n var othis = $(this);\n var events = othis.attr('lay-event');\n var th = othis.closest('th');\n var key = th.data('key');\n var col = that.col(key);\n\n layui.event.call(this, MOD_NAME, 'colTool('+ filter +')', $.extend({\n event: events,\n config: options,\n col: col\n },{}));\n });\n\n // 分页栏操作事件\n that.layPagebar.on('click', '*[lay-event]', function(e){\n var othis = $(this);\n var events = othis.attr('lay-event');\n\n layui.event.call(this, MOD_NAME, 'pagebar('+ filter +')', $.extend({\n event: events,\n config: options\n },{}));\n });\n\n // 拖拽调整宽度\n th.on('mousemove', function(e){\n var othis = $(this);\n var oLeft = othis.offset().left;\n var pLeft = e.clientX - oLeft;\n if(othis.data('unresize') || thisTable.eventMoveElem){\n return;\n }\n dict.allowResize = othis.width() - pLeft <= 10; //是否处于拖拽允许区域\n _BODY.css('cursor', (dict.allowResize ? 'col-resize' : ''));\n }).on('mouseleave', function(){\n var othis = $(this);\n if(thisTable.eventMoveElem) return;\n _BODY.css('cursor', '');\n }).on('mousedown', function(e){\n var othis = $(this);\n if(dict.allowResize){\n var key = othis.data('key');\n e.preventDefault();\n dict.offset = [e.clientX, e.clientY]; //记录初始坐标\n\n that.cssRules(key, function(item){\n var width = item.style.width || othis.outerWidth();\n dict.rule = item;\n dict.ruleWidth = parseFloat(width);\n dict.minWidth = othis.data('minwidth') || options.cellMinWidth;\n dict.maxWidth = othis.data('maxwidth') || options.cellMaxWidth;\n });\n\n // 临时记录当前拖拽信息\n othis.data(DATA_MOVE_NAME, dict);\n thisTable.eventMoveElem = othis;\n }\n });\n\n // 拖拽中\n if(!thisTable.docEvent){\n _DOC.on('mousemove', function(e){\n if(thisTable.eventMoveElem){\n var dict = thisTable.eventMoveElem.data(DATA_MOVE_NAME) || {};\n\n thisTable.eventMoveElem.data('resizing', 1);\n e.preventDefault();\n\n if(dict.rule){\n var setWidth = dict.ruleWidth + e.clientX - dict.offset[0];\n var id = thisTable.eventMoveElem.closest('.' + ELEM_VIEW).attr('lay-id');\n var thatTable = getThisTable(id);\n\n if(!thatTable) return;\n\n if(setWidth < dict.minWidth) setWidth = dict.minWidth;\n if(setWidth > dict.maxWidth) setWidth = dict.maxWidth;\n\n dict.rule.style.width = setWidth + 'px';\n thatTable.setGroupWidth(thisTable.eventMoveElem);\n layer.close(that.tipsIndex);\n }\n }\n }).on('mouseup', function(e){\n if(thisTable.eventMoveElem){\n var th = thisTable.eventMoveElem; // 当前触发拖拽的 th 元素\n var id = th.closest('.' + ELEM_VIEW).attr('lay-id');\n var thatTable = getThisTable(id);\n\n if(!thatTable) return;\n\n var key = th.data('key');\n var col = thatTable.col(key);\n var filter = thatTable.config.elem.attr('lay-filter');\n\n // 重置过度信息\n dict = {};\n _BODY.css('cursor', '');\n thatTable.scrollPatch();\n\n // 清除当前拖拽信息\n th.removeData(DATA_MOVE_NAME);\n delete thisTable.eventMoveElem;\n\n // 列拖拽宽度后的事件\n thatTable.cssRules(key, function(item){\n col.width = parseFloat(item.style.width);\n layui.event.call(th[0], MOD_NAME, 'colResized('+ filter +')', {\n col: col,\n config: thatTable.config\n });\n });\n }\n });\n }\n\n // 已给 document 执行全局事件,避免重复绑定\n thisTable.docEvent = true;\n\n\n // 排序\n th.on('click', function(e){\n var othis = $(this);\n var elemSort = othis.find(ELEM_SORT);\n var nowType = elemSort.attr('lay-sort');\n var type;\n\n // 排序不触发的条件\n if(!elemSort[0] || othis.data('resizing') === 1){\n return othis.removeData('resizing');\n }\n\n if(nowType === 'asc'){\n type = 'desc';\n } else if(nowType === 'desc'){\n type = null;\n } else {\n type = 'asc';\n }\n that.sort({\n field: othis,\n type: type,\n fromEvent: true\n });\n }).find(ELEM_SORT+' .layui-edge ').on('click', function(e){\n var othis = $(this);\n var index = othis.index();\n var field = othis.parents('th').eq(0).data('field');\n layui.stope(e);\n if(index === 0){\n that.sort({\n field: field,\n type: 'asc',\n fromEvent: true\n });\n } else {\n that.sort({\n field: field,\n type: 'desc',\n fromEvent: true\n });\n }\n });\n\n //数据行中的事件返回的公共对象成员\n var commonMember = that.commonMember = function(sets){\n var othis = $(this);\n var index = othis.parents('tr').eq(0).data('index');\n var tr = that.layBody.find('tr[data-index=\"'+ index +'\"]');\n var data = table.cache[that.key] || [];\n\n data = data[index] || {};\n\n // 事件返回的公共成员\n var obj = {\n tr: tr, // 行元素\n config: options,\n data: table.clearCacheKey(data), // 当前行数据\n dataCache: data, // 当前行缓存中的数据\n index: index,\n del: function(){ // 删除行数据\n table.cache[that.key][index] = [];\n tr.remove();\n that.scrollPatch();\n },\n update: function(fields, related){ // 修改行数据\n fields = fields || {};\n layui.each(fields, function(key, value){\n var td = tr.children('td[data-field=\"'+ key +'\"]');\n var cell = td.children(ELEM_CELL); // 获取当前修改的列\n\n // 更新缓存中的数据\n data[key] = obj.data[key] = value;\n\n // 更新相应列视图\n that.eachCols(function(i, item3){\n if(item3.field == key){\n cell.html(parseTempData.call(that, {\n item3: item3\n ,content: value\n ,tplData: $.extend({\n LAY_COL: item3\n }, data)\n }));\n td.data('content', value);\n }\n // 更新其他包含自定义模板且可能有所关联的列视图\n else if(related && (item3.templet || item3.toolbar)){\n var thisTd = tr.children('td[data-field=\"'+ (item3.field || i) +'\"]');\n var content = data[item3.field];\n\n thisTd.children(ELEM_CELL).html(parseTempData.call(that, {\n item3: item3\n ,content: content\n ,tplData: $.extend({\n LAY_COL: item3\n }, data)\n }));\n thisTd.data('content', content);\n }\n });\n });\n\n that.renderForm();\n },\n // 设置行选中状态\n setRowChecked: function(opts){\n that.setRowChecked($.extend({\n index: index\n }, opts));\n }\n // 获取当前列\n };\n\n return $.extend(obj, sets);\n };\n\n // 复选框选择(替代元素的 click 事件)\n that.elem.on('click', 'input[name=\"layTableCheckbox\"]+', function(e){\n var othis = $(this);\n var td = othis.closest('td');\n var checkbox = othis.prev();\n var children = that.layBody.find('input[name=\"layTableCheckbox\"]');\n var index = checkbox.parents('tr').eq(0).data('index');\n var checked = checkbox[0].checked;\n var isAll = checkbox.attr('lay-filter') === 'layTableAllChoose';\n\n if(checkbox[0].disabled) return;\n\n // 全选\n if(isAll){\n that.setRowChecked({\n index: 'all',\n checked: checked\n });\n } else {\n that.setRowChecked({\n index: index,\n checked: checked\n });\n layui.stope(e);\n }\n\n // 事件\n layui.event.call(\n checkbox[0],\n MOD_NAME, 'checkbox('+ filter +')',\n commonMember.call(checkbox[0], {\n checked: checked,\n type: isAll ? 'all' : 'one',\n getCol: function(){ // 获取当前列的表头配置信息\n return that.col(td.data('key'));\n }\n })\n );\n });\n\n // 单选框选择\n that.elem.on('click', 'input[lay-type=\"layTableRadio\"]+', function(e){\n var othis = $(this);\n var td = othis.closest('td');\n var radio = othis.prev();\n var checked = radio[0].checked;\n var index = radio.parents('tr').eq(0).data('index');\n\n layui.stope(e);\n if(radio[0].disabled) return false;\n\n // 标注选中样式\n that.setRowChecked({\n type: 'radio',\n index: index\n });\n\n // 事件\n layui.event.call(\n radio[0],\n MOD_NAME, 'radio('+ filter +')',\n commonMember.call(radio[0], {\n checked: checked,\n getCol: function(){ // 获取当前列的表头配置信息\n return that.col(td.data('key'));\n }\n })\n );\n });\n\n // 行事件\n that.layBody.on('mouseenter', 'tr', function(){ // 鼠标移入行\n var othis = $(this);\n var index = othis.index();\n if(othis.data('off')) return; // 不触发事件\n that.layBody.find('tr:eq('+ index +')').addClass(ELEM_HOVER)\n }).on('mouseleave', 'tr', function(){ // 鼠标移出行\n var othis = $(this);\n var index = othis.index();\n if(othis.data('off')) return; // 不触发事件\n that.layBody.find('tr:eq('+ index +')').removeClass(ELEM_HOVER)\n }).on('click', 'tr', function(e){ // 单击行\n // 不支持行单击事件的元素\n var UNROW = [\n '.layui-form-checkbox',\n '.layui-form-switch',\n '.layui-form-radio',\n '[lay-unrow]'\n ].join(',');\n if( $(e.target).is(UNROW) || $(e.target).closest(UNROW)[0]){\n return;\n }\n setRowEvent.call(this, 'row');\n }).on('dblclick', 'tr', function(){ // 双击行\n setRowEvent.call(this, 'rowDouble');\n }).on('contextmenu', 'tr', function(e){ // 菜单\n if (!options.defaultContextmenu) e.preventDefault();\n setRowEvent.call(this, 'rowContextmenu');\n });\n\n // 创建行单击、双击、菜单事件\n var setRowEvent = function(eventType){\n var othis = $(this);\n if(othis.data('off')) return; //不触发事件\n layui.event.call(this,\n MOD_NAME, eventType + '('+ filter +')',\n commonMember.call(othis.children('td')[0])\n );\n };\n\n // 渲染单元格编辑状态\n var renderGridEdit = function(othis, e){\n othis = $(othis);\n\n if(othis.data('off')) return; // 不触发事件\n\n var field = othis.data('field');\n var key = othis.data('key');\n var col = that.col(key);\n var index = othis.closest('tr').data('index');\n var data = table.cache[that.key][index];\n var elemCell = othis.children(ELEM_CELL);\n\n // 是否开启编辑\n // 若 edit 传入函数,则根据函数的返回结果判断是否开启编辑\n var editType = typeof col.edit === 'function'\n ? col.edit(data)\n : col.edit;\n\n // 显示编辑表单\n if(editType){\n var input = $(function(){\n var inputElem = '';\n if(editType === 'textarea') {\n inputElem = '';\n }\n return inputElem;\n }());\n\n input[0].value = othis.data('content') || data[field] || elemCell.text();\n othis.find('.'+ELEM_EDIT)[0] || othis.append(input);\n input.focus();\n e && layui.stope(e);\n }\n };\n\n // 单元格编辑 - 输入框内容被改变的事件\n that.layBody.on('change', '.'+ ELEM_EDIT, function(){\n var othis = $(this);\n var td = othis.parent();\n var value = this.value;\n var field = othis.parent().data('field');\n var index = othis.closest('tr').data('index');\n var data = table.cache[that.key][index];\n\n //事件回调的参数对象\n var params = commonMember.call(td[0], {\n value: value,\n field: field,\n oldValue: data[field], // 编辑前的值\n td: td,\n reedit: function(){ // 重新编辑\n setTimeout(function(){\n // 重新渲染为编辑状态\n renderGridEdit(params.td);\n\n // 将字段缓存的值恢复到编辑之前的值\n var obj = {};\n obj[field] = params.oldValue;\n params.update(obj);\n });\n },\n getCol: function(){ // 获取当前列的表头配置信息\n return that.col(td.data('key'));\n }\n });\n\n // 更新缓存中的值\n var obj = {}; //变更的键值\n obj[field] = value;\n params.update(obj);\n\n // 执行 API 编辑事件\n layui.event.call(td[0], MOD_NAME, 'edit('+ filter +')', params);\n }).on('blur', '.'+ ELEM_EDIT, function(){ // 单元格编辑 - 恢复非编辑状态事件\n $(this).remove(); // 移除编辑状态\n });\n\n // 表格主体单元格触发编辑的事件\n that.layBody.on(options.editTrigger, 'td', function(e){\n renderGridEdit(this, e)\n }).on('mouseenter', 'td', function(){\n showGridExpandIcon.call(this)\n }).on('mouseleave', 'td', function(){\n showGridExpandIcon.call(this, 'hide');\n });\n\n // 表格合计栏单元格 hover 显示展开图标\n that.layTotal.on('mouseenter', 'td', function(){\n showGridExpandIcon.call(this)\n }).on('mouseleave', 'td', function(){\n showGridExpandIcon.call(this, 'hide');\n });\n\n // 显示单元格展开图标\n var ELEM_GRID = 'layui-table-grid';\n var ELEM_GRID_DOWN = 'layui-table-grid-down';\n var ELEM_GRID_PANEL = 'layui-table-grid-panel';\n var showGridExpandIcon = function(hide){\n var othis = $(this);\n var elemCell = othis.children(ELEM_CELL);\n\n if(othis.data('off')) return; // 不触发事件\n if(othis.parent().hasClass(ELEM_EXPAND)) return; // 是否已为展开状态\n\n if(hide){\n othis.find('.layui-table-grid-down').remove();\n } else if((\n elemCell.prop('scrollWidth') > elemCell.outerWidth() ||\n elemCell.find(\"br\").length > 0\n ) && !options.lineStyle){\n if(elemCell.find('.'+ ELEM_GRID_DOWN)[0]) return;\n othis.append('
                          ');\n }\n };\n // 展开单元格内容\n var gridExpand = function(e, expandedMode){\n var othis = $(this);\n var td = othis.parent();\n var key = td.data('key');\n var col = that.col(key);\n var index = td.parent().data('index');\n var elemCell = td.children(ELEM_CELL);\n var ELEM_CELL_C = 'layui-table-cell-c';\n var elemCellClose = $('');\n\n expandedMode = expandedMode || col.expandedMode || options.cellExpandedMode;\n\n // 展开风格\n if (expandedMode === 'tips') { // TIPS 展开风格\n that.tipsIndex = layer.tips([\n '
                          ',\n elemCell.html(),\n '
                          ',\n ''\n ].join(''), elemCell[0], {\n tips: [3, ''],\n time: -1,\n anim: -1,\n maxWidth: (device.ios || device.android) ? 300 : that.elem.width()/2,\n isOutAnim: false,\n skin: 'layui-table-tips',\n success: function(layero, index){\n layero.find('.layui-table-tips-c').on('click', function(){\n layer.close(index);\n });\n }\n });\n } else { // 多行展开风格\n // 恢复其他已经展开的单元格\n that.elem.find('.'+ ELEM_CELL_C).trigger('click');\n\n // 设置当前单元格展开宽度\n that.cssRules(key, function(item){\n var width = item.style.width;\n var expandedWidth = col.expandedWidth || options.cellExpandedWidth;\n\n // 展开后的宽度不能小于当前宽度\n if(expandedWidth < parseFloat(width)) expandedWidth = parseFloat(width);\n\n elemCellClose.data('cell-width', width);\n item.style.width = expandedWidth + 'px';\n\n setTimeout(function(){\n that.scrollPatch(); // 滚动条补丁\n });\n });\n\n // 设置当前单元格展开样式\n that.setRowActive(index, ELEM_EXPAND);\n\n // 插入关闭按钮\n if(!elemCell.next('.'+ ELEM_CELL_C)[0]){\n elemCell.after(elemCellClose);\n }\n\n // 关闭展开状态\n elemCellClose.on('click', function(){\n var $this = $(this);\n that.setRowActive(index, [ELEM_EXPAND, ELEM_HOVER].join(' '), true); // 移除单元格展开样式\n that.cssRules(key, function(item){\n item.style.width = $this.data('cell-width'); // 恢复单元格展开前的宽度\n setTimeout(function(){\n that.resize(); // 滚动条补丁\n });\n });\n $this.remove();\n });\n }\n\n othis.remove();\n layui.stope(e);\n };\n\n // 表格主体单元格展开事件\n that.layBody.on('click', '.'+ ELEM_GRID_DOWN, function(e){\n gridExpand.call(this, e);\n });\n // 表格合计栏单元格展开事件\n that.layTotal.on('click', '.'+ ELEM_GRID_DOWN, function(e){\n gridExpand.call(this, e, 'tips'); // 强制采用 tips 风格\n });\n\n // 行工具条操作事件\n var toolFn = function(type){\n var othis = $(this);\n var td = othis.closest('td');\n var index = othis.parents('tr').eq(0).data('index');\n // 标记当前活动行\n that.setRowActive(index);\n\n // 执行事件\n layui.event.call(\n this,\n MOD_NAME,\n (type || 'tool') + '('+ filter +')',\n commonMember.call(this, {\n event: othis.attr('lay-event'),\n getCol: function(){ // 获取当前列的表头配置信息\n return that.col(td.data('key'));\n }\n })\n );\n };\n\n // 行工具条单击事件\n that.layBody.on('click', '*[lay-event]', function(e){\n toolFn.call(this);\n layui.stope(e);\n }).on('dblclick', '*[lay-event]', function(e){ //行工具条双击事件\n toolFn.call(this, 'toolDouble');\n layui.stope(e);\n });\n\n // 同步滚动条\n that.layMain.on('scroll', function(){\n var othis = $(this);\n var scrollLeft = othis.scrollLeft();\n var scrollTop = othis.scrollTop();\n\n that.layHeader.scrollLeft(scrollLeft);\n that.layTotal.scrollLeft(scrollLeft);\n that.layFixed.find(ELEM_BODY).scrollTop(scrollTop);\n\n layer.close(that.tipsIndex);\n });\n\n // 固定列滚轮事件 - 临时兼容方案\n that.layFixed.find(ELEM_BODY).on('mousewheel DOMMouseScroll', function(e) {\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail;\n var scrollTop = that.layMain.scrollTop();\n var step = 30;\n\n e.preventDefault();\n that.layMain.scrollTop(scrollTop + (delta > 0 ? -step : step));\n });\n };\n\n // 全局事件\n (function(){\n // 自适应尺寸\n _WIN.on('resize', function(){\n layui.each(thisTable.that, function(){\n this.resize();\n });\n });\n\n // 全局点击\n _DOC.on('click', function(){\n _DOC.trigger('table.remove.tool.panel');\n });\n\n // 工具面板移除事件\n _DOC.on('table.remove.tool.panel', function(){\n $('.' + ELEM_TOOL_PANEL).remove();\n });\n })();\n\n // 初始化\n table.init = function(filter, settings){\n settings = settings || {};\n var that = this;\n var inst = null;\n var elemTable = typeof filter === 'object' ? filter : (\n typeof filter === 'string'\n ? $('table[lay-filter=\"'+ filter +'\"]')\n : $(ELEM + '[lay-data], '+ ELEM + '[lay-options]')\n );\n var errorTips = 'Table element property lay-data configuration item has a syntax error: ';\n\n //遍历数据表格\n elemTable.each(function(){\n var othis = $(this);\n var attrData = othis.attr('lay-data');\n var tableData = lay.options(this, {\n attr: attrData ? 'lay-data' : null,\n errorText: errorTips + (attrData || othis.attr('lay-options'))\n });\n\n var options = $.extend({\n elem: this\n ,cols: []\n ,data: []\n ,skin: othis.attr('lay-skin') //风格\n ,size: othis.attr('lay-size') //尺寸\n ,even: typeof othis.attr('lay-even') === 'string' //偶数行背景\n }, table.config, settings, tableData);\n\n filter && othis.hide();\n\n //获取表头数据\n othis.find('thead>tr').each(function(i){\n options.cols[i] = [];\n $(this).children().each(function(ii){\n var th = $(this);\n var attrData = th.attr('lay-data');\n var itemData = lay.options(this, {\n attr: attrData ? 'lay-data' : null,\n errorText: errorTips + (attrData || th.attr('lay-options'))\n });\n\n var row = $.extend({\n title: th.text()\n ,colspan: parseInt(th.attr('colspan')) || 1 //列单元格\n ,rowspan: parseInt(th.attr('rowspan')) || 1 //行单元格\n }, itemData);\n\n options.cols[i].push(row);\n });\n });\n\n //缓存静态表体数据\n var trElem = othis.find('tbody>tr');\n\n //执行渲染\n var tableIns = table.render(options);\n\n //获取表体数据\n if (trElem.length && !settings.data && !tableIns.config.url) {\n var tdIndex = 0;\n table.eachCols(tableIns.config.id, function (i3, item3) {\n trElem.each(function(i1){\n options.data[i1] = options.data[i1] || {};\n var tr = $(this);\n var field = item3.field;\n options.data[i1][field] = tr.children('td').eq(tdIndex).html();\n });\n tdIndex++;\n })\n\n tableIns.reloadData({\n data: options.data\n });\n }\n });\n\n return that;\n };\n\n //记录所有实例\n thisTable.that = {}; //记录所有实例对象\n thisTable.config = {}; //记录所有实例配置项\n\n var eachChildCols = function (index, cols, i1, item2) {\n //如果是组合列,则捕获对应的子列\n if (item2.colGroup) {\n var childIndex = 0;\n index++;\n item2.CHILD_COLS = [];\n // 找到它的子列所在cols的下标\n var i2 = i1 + (parseInt(item2.rowspan) || 1);\n layui.each(cols[i2], function (i22, item22) {\n if (item22.parentKey) { // 如果字段信息中包含了parentKey和key信息\n if (item22.parentKey === item2.key) {\n item22.PARENT_COL_INDEX = index;\n item2.CHILD_COLS.push(item22);\n eachChildCols(index, cols, i2, item22);\n }\n } else {\n // 没有key信息以colspan数量所谓判断标准\n //如果子列已经被标注为{PARENT_COL_INDEX},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环\n if (item22.PARENT_COL_INDEX || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;\n item22.PARENT_COL_INDEX = index;\n item2.CHILD_COLS.push(item22);\n childIndex = childIndex + (parseInt(item22.colspan > 1 ? item22.colspan : 1));\n eachChildCols(index, cols, i2, item22);\n }\n });\n }\n };\n\n // 遍历表头\n table.eachCols = function(id, callback, cols){\n var config = thisTable.config[id] || {};\n var arrs = [], index = 0;\n\n cols = $.extend(true, [], cols || config.cols);\n\n //重新整理表头结构\n layui.each(cols, function(i1, item1){\n if (i1) return true; // 只需遍历第一层\n layui.each(item1, function(i2, item2){\n eachChildCols(index, cols, i1, item2);\n if(item2.PARENT_COL_INDEX) return; //如果是子列,则不进行追加,因为已经存储在父列中\n arrs.push(item2)\n });\n });\n\n //重新遍历列,如果有子列,则进入递归\n var eachArrs = function(obj){\n layui.each(obj || arrs, function(i, item){\n if(item.CHILD_COLS) return eachArrs(item.CHILD_COLS);\n typeof callback === 'function' && callback(i, item);\n });\n };\n\n eachArrs();\n };\n\n // 获取表格选中状态\n table.checkStatus = function(id){\n var nums = 0;\n var invalidNum = 0;\n var arr = [];\n var data = table.cache[id] || [];\n\n //计算全选个数\n layui.each(data, function(i, item){\n if(layui.type(item) === 'array' || item[table.config.disabledName]){\n invalidNum++; // 无效数据,或已删除的\n return;\n }\n if(item[table.config.checkName]){\n nums++;\n if(!item[table.config.disabledName]){\n arr.push(table.clearCacheKey(item));\n }\n }\n });\n return {\n data: arr, // 选中的数据\n isAll: data.length ? (nums === (data.length - invalidNum)) : false // 是否全选\n };\n };\n\n // 设置行选中状态\n table.setRowChecked = function(id, opts){\n var that = getThisTable(id);\n if(!that) return;\n that.setRowChecked(opts);\n };\n\n // 获取表格当前页的所有行数据\n table.getData = function(id){\n var arr = [];\n var data = table.cache[id] || [];\n layui.each(data, function(i, item){\n if(layui.type(item) === 'array'){\n return;\n }\n arr.push(table.clearCacheKey(item));\n });\n return arr;\n };\n\n // 重置表格尺寸结构\n table.resize = function(id){\n // 若指定表格唯一 id,则只执行该 id 对应的表格实例\n if(id){\n var config = getThisTableConfig(id); // 获取当前实例配置项\n if(!config) return;\n\n getThisTable(id).resize();\n\n } else { // 否则重置所有表格实例尺寸\n layui.each(thisTable.that, function(){\n this.resize();\n });\n }\n };\n\n // 表格导出\n table.exportFile = function(id, data, opts){\n data = data || table.clearCacheKey(table.cache[id]);\n opts = typeof opts === 'object' ? opts : function(){\n var obj = {};\n opts && (obj.type = opts);\n return obj;\n }();\n\n var type = opts.type || 'csv';\n var thatTable = thisTable.that[id];\n var config = thisTable.config[id] || {};\n var textType = ({\n csv: 'text/csv',\n xls: 'application/vnd.ms-excel'\n })[type];\n var alink = document.createElement(\"a\");\n\n if(device.ie) return hint.error('IE_NOT_SUPPORT_EXPORTS');\n\n // 处理 treeTable 数据\n if (config.tree && config.tree.view) {\n try {\n data = $.extend(true, [], table.cache[id]);\n data = (function fn(data) {\n return data.reduce(function (acc, obj){\n var children = obj.children || [];\n delete obj.children;\n return acc.concat(obj, fn(children));\n }, []);\n })(Array.from(data));\n } catch (e) {}\n }\n\n alink.href = 'data:'+ textType +';charset=utf-8,\\ufeff'+ encodeURIComponent(function(){\n var dataTitle = [];\n var dataMain = [];\n var dataTotal = [];\n var fieldsIsHide = {};\n\n // 表头和表体\n layui.each(data, function(i1, item1){\n var vals = [];\n if(typeof id === 'object'){ // 若 id 参数直接为表头数据\n layui.each(id, function(i, item){\n i1 == 0 && dataTitle.push(item || '');\n });\n layui.each(layui.isArray(item1) ? $.extend([], item1) : table.clearCacheKey(item1), function(i2, item2){\n vals.push('\"'+ (item2 || '') +'\"');\n });\n } else {\n table.eachCols(id, function(i3, item3){\n if(item3.ignoreExport === false || item3.field && item3.type == 'normal'){\n // 不导出隐藏列,除非设置 ignoreExport 强制导出\n if (\n (item3.hide && item3.ignoreExport !== false) ||\n item3.ignoreExport === true // 忽略导出\n ) {\n if(i1 == 0) fieldsIsHide[item3.field] = true; // 记录隐藏列\n return;\n }\n\n var content = item1[item3.field];\n if(content === undefined || content === null) content = '';\n\n i1 == 0 && dataTitle.push(item3.fieldTitle || item3.title || item3.field || '');\n\n // 解析内容\n content = parseTempData.call(thatTable, {\n item3: item3,\n content: content,\n tplData: item1,\n text: 'text',\n obj: {\n td: function(field){\n var td = thatTable.layBody.find('tr[data-index=\"'+ i1 +'\"]>td');\n return td.filter('[data-field=\"'+ field +'\"]');\n }\n }\n });\n\n // 异常处理\n content = content.replace(/\"/g, '\"\"'); // 避免内容存在「双引号」导致异常分隔\n // content += '\\t'; // 加「水平制表符」 避免内容被转换格式\n content = '\"'+ content +'\"'; // 避免内容存在「逗号」导致异常分隔\n\n // 插入内容\n vals.push(content);\n }\n });\n }\n dataMain.push(vals.join(','));\n });\n\n // 表合计\n thatTable && layui.each(thatTable.dataTotal, function(i, o){\n fieldsIsHide[o.field] || dataTotal.push('\"' + (o.total || '') + '\"');\n });\n\n return dataTitle.join(',') + '\\r\\n' + dataMain.join('\\r\\n') + '\\r\\n' + dataTotal.join(',');\n }());\n\n alink.download = (opts.title || config.title || 'table_'+ (config.index || '')) + '.' + type;\n document.body.appendChild(alink);\n alink.click();\n document.body.removeChild(alink);\n };\n\n // 获取表格配置信息\n table.getOptions = function (id) {\n return getThisTableConfig(id);\n }\n\n // 显示或隐藏列\n table.hideCol = function (id, cols) {\n var that = getThisTable(id);\n if (!that) {\n return;\n }\n\n if (layui.type(cols) === 'boolean') {\n // 显示全部或者隐藏全部\n that.eachCols(function (i2, item2) {\n var key = item2.key;\n var col = that.col(key);\n var parentKey = item2.parentKey;\n // 同步勾选列的 hide 值和隐藏样式\n if (col.hide != cols) {\n var hide = col.hide = cols;\n that.elem.find('*[data-key=\"'+ key +'\"]')[\n hide ? 'addClass' : 'removeClass'\n ](HIDE);\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\n that.setParentCol(hide, parentKey);\n }\n })\n } else {\n cols = layui.isArray(cols) ? cols : [cols];\n layui.each(cols, function (i1, item1) {\n that.eachCols(function (i2, item2) {\n if (item1.field === item2.field) {\n var key = item2.key;\n var col = that.col(key);\n var parentKey = item2.parentKey;\n // 同步勾选列的 hide 值和隐藏样式\n if ('hide' in item1 && col.hide != item1.hide) {\n var hide = col.hide = !!item1.hide;\n that.elem.find('*[data-key=\"'+ key +'\"]')[\n hide ? 'addClass' : 'removeClass'\n ](HIDE);\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\n that.setParentCol(hide, parentKey);\n }\n }\n })\n });\n }\n $('.' + ELEM_TOOL_PANEL).remove(); // 关闭字段筛选面板如果打开的话\n // 重新适配尺寸\n that.resize();\n }\n\n // 重载\n table.reload = function(id, options, deep, type){\n var config = getThisTableConfig(id); //获取当前实例配置项\n if(!config) return;\n\n var that = getThisTable(id);\n that.reload(options, deep, type);\n\n return thisTable.call(that);\n };\n\n // 仅重载数据\n table.reloadData = function(){\n var args = $.extend([], arguments);\n args[3] = 'reloadData';\n\n // 重载时,影响整个结构的参数,不适合更新的参数\n var dataParams = new RegExp('^('+ [\n 'elem', 'id', 'cols', 'width', 'height', 'maxHeight',\n 'toolbar', 'defaultToolbar',\n 'className', 'css', 'pagebar'\n ].join('|') + ')$');\n\n // 过滤与数据无关的参数\n layui.each(args[1], function (key, value) {\n if(dataParams.test(key)){\n delete args[1][key];\n }\n });\n\n return table.reload.apply(null, args);\n };\n\n // 核心入口\n table.render = function(options){\n var inst = new Class(options);\n return thisTable.call(inst);\n };\n\n // 清除临时 Key\n table.clearCacheKey = function(data){\n data = $.extend({}, data);\n delete data[table.config.checkName];\n delete data[table.config.indexName];\n delete data[table.config.numbersName];\n delete data[table.config.disabledName];\n return data;\n };\n\n // 自动完成渲染\n $(function(){\n table.init();\n });\n\n exports(MOD_NAME, table);\n});\n","/**\r\n * layui.treeTable\r\n * 树表组件\r\n */\r\n\r\nlayui.define(['table'], function (exports) {\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var form = layui.form;\r\n var table = layui.table;\r\n var hint = layui.hint();\r\n\r\n // api\r\n var treeTable = {\r\n config: {},\r\n // 事件\r\n on: table.on,\r\n // 遍历字段\r\n eachCols: table.eachCols,\r\n index: table.index,\r\n set: function (options) {\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n resize: table.resize,\r\n getOptions: table.getOptions,\r\n hideCol: table.hideCol,\r\n renderData: table.renderData\r\n };\r\n\r\n // 操作当前实例\r\n var thisTreeTable = function () {\r\n var that = this;\r\n var options = that.config\r\n var id = options.id || options.index;\r\n\r\n return {\r\n config: options,\r\n reload: function (options, deep) {\r\n that.reload.call(that, options, deep);\r\n },\r\n reloadData: function (options, deep) {\r\n treeTable.reloadData(id, options, deep);\r\n }\r\n }\r\n }\r\n\r\n // 获取当前实例\r\n var getThisTable = function (id) {\r\n var that = thisTreeTable.that[id];\r\n if (!that) hint.error(id ? ('The treeTable instance with ID \\'' + id + '\\' not found') : 'ID argument required');\r\n return that || null;\r\n }\r\n\r\n // 字符\r\n var MOD_NAME = 'treeTable';\r\n var HIDE = 'layui-hide';\r\n\r\n var ELEM_VIEW = '.layui-table-view';\r\n var ELEM_TREE = '.layui-table-tree';\r\n var ELEM_TOOL = '.layui-table-tool';\r\n var ELEM_BOX = '.layui-table-box';\r\n var ELEM_HEADER = '.layui-table-header';\r\n var ELEM_BODY = '.layui-table-body';\r\n var ELEM_MAIN = '.layui-table-main';\r\n var ELEM_FIXED = '.layui-table-fixed';\r\n var ELEM_FIXL = '.layui-table-fixed-l';\r\n var ELEM_FIXR = '.layui-table-fixed-r';\r\n var ELEM_CHECKED = 'layui-table-checked';\r\n\r\n var TABLE_TREE = 'layui-table-tree';\r\n var LAY_DATA_INDEX = 'LAY_DATA_INDEX';\r\n var LAY_DATA_INDEX_HISTORY = 'LAY_DATA_INDEX_HISTORY';\r\n var LAY_PARENT_INDEX = 'LAY_PARENT_INDEX';\r\n var LAY_CHECKBOX_HALF = 'LAY_CHECKBOX_HALF';\r\n var LAY_EXPAND = 'LAY_EXPAND';\r\n var LAY_HAS_EXPANDED = 'LAY_HAS_EXPANDED';\r\n var LAY_ASYNC_STATUS = 'LAY_ASYNC_STATUS';\r\n var LAY_CASCADE = ['all', 'parent', 'children', 'none'];\r\n\r\n // 构造器\r\n var Class = function (options) {\r\n var that = this;\r\n that.index = ++treeTable.index;\r\n that.config = $.extend(true, {}, that.config, treeTable.config, options);\r\n // 处理一些属性\r\n that.init();\r\n that.render();\r\n };\r\n\r\n var updateCache = function (id, childrenKey, data) {\r\n var tableCache = table.cache[id];\r\n layui.each(data || tableCache, function (index, item) {\r\n var itemDataIndex = item[LAY_DATA_INDEX];\r\n if (itemDataIndex.indexOf('-') !== -1) {\r\n tableCache[itemDataIndex] = item\r\n }\r\n item[childrenKey] && updateCache(id, childrenKey, item[childrenKey]);\r\n })\r\n }\r\n\r\n var updateOptions = function (id, options, reload) {\r\n var that = getThisTable(id);\r\n reload === 'reloadData' || (that.status = { // 用于记录一些状态信息\r\n expand: {} // 折叠状态\r\n });\r\n var thatOptionsTemp = $.extend(true, {}, that.getOptions(), options);\r\n var treeOptions = thatOptionsTemp.tree;\r\n var childrenKey = treeOptions.customName.children;\r\n var idKey = treeOptions.customName.id;\r\n // 处理属性\r\n delete options.hasNumberCol;\r\n delete options.hasChecboxCol;\r\n delete options.hasRadioCol;\r\n table.eachCols(null, function (i1, item1) {\r\n if (item1.type === 'numbers') {\r\n options.hasNumberCol = true;\r\n } else if (item1.type === 'checkbox') {\r\n options.hasChecboxCol = true;\r\n } else if (item1.type === 'radio') {\r\n options.hasRadioCol = true;\r\n }\r\n }, thatOptionsTemp.cols)\r\n\r\n var parseData = options.parseData;\r\n var done = options.done;\r\n\r\n if (thatOptionsTemp.url) {\r\n // 异步加载的时候需要处理parseData进行转换\r\n if (!reload || (reload && parseData && !parseData.mod)) {\r\n options.parseData = function () {\r\n var parseDataThat = this;\r\n var args = arguments;\r\n var retData = args[0];\r\n if (layui.type(parseData) === 'function') {\r\n retData = parseData.apply(parseDataThat, args) || args[0];\r\n }\r\n var dataName = parseDataThat.response.dataName;\r\n // 处理 isSimpleData\r\n if (treeOptions.data.isSimpleData && !treeOptions.async.enable) { // 异步加载和 isSimpleData 不应该一起使用\r\n retData[dataName] = that.flatToTree(retData[dataName]);\r\n }\r\n // 处理节点状态\r\n updateStatus(retData[dataName], function (item) {\r\n item[LAY_EXPAND] = LAY_EXPAND in item ? item[LAY_EXPAND] : (item[idKey] !== undefined && that.status.expand[item[idKey]])\r\n }, childrenKey);\r\n\r\n if (parseDataThat.autoSort && parseDataThat.initSort && parseDataThat.initSort.type) {\r\n layui.sort(retData[dataName], parseDataThat.initSort.field, parseDataThat.initSort.type === 'desc', true)\r\n }\r\n\r\n that.initData(retData[dataName]);\r\n\r\n return retData;\r\n }\r\n options.parseData.mod = true\r\n }\r\n } else {\r\n options.data = options.data || [];\r\n // 处理 isSimpleData\r\n if (treeOptions.data.isSimpleData) {\r\n options.data = that.flatToTree(options.data);\r\n }\r\n that.initData(options.data);\r\n }\r\n\r\n if (!reload || (reload && done && !done.mod)) {\r\n options.done = function () {\r\n var args = arguments;\r\n var doneThat = this;\r\n var isRenderData = args[3]; // 是否是 renderData\r\n if (!isRenderData) {\r\n delete that.isExpandAll;\r\n }\r\n\r\n var tableView = this.elem.next();\r\n that.updateStatus(null, {\r\n LAY_HAS_EXPANDED: false // 去除已经打开过的状态\r\n });\r\n // 更新cache中的内容 将子节点也存到cache中\r\n updateCache(id, childrenKey);\r\n // 更新全选框的状态\r\n var layTableAllChooseElem = tableView.find('[name=\"layTableCheckbox\"][lay-filter=\"layTableAllChoose\"]');\r\n if (layTableAllChooseElem.length) {\r\n var checkStatus = treeTable.checkStatus(id);\r\n layTableAllChooseElem.prop({\r\n checked: checkStatus.isAll && checkStatus.data.length,\r\n indeterminate: !checkStatus.isAll && checkStatus.data.length\r\n })\r\n }\r\n if (!isRenderData && thatOptionsTemp.autoSort && thatOptionsTemp.initSort && thatOptionsTemp.initSort.type) {\r\n treeTable.sort(id);\r\n }\r\n\r\n that.renderTreeTable(tableView);\r\n\r\n if (layui.type(done) === 'function') {\r\n return done.apply(doneThat, args);\r\n }\r\n }\r\n options.done.mod = true;\r\n }\r\n }\r\n\r\n Class.prototype.init = function () {\r\n var that = this;\r\n var options = that.config;\r\n var cascade = options.tree.data.cascade;\r\n if (LAY_CASCADE.indexOf(cascade) === -1) {\r\n options.tree.data.cascade = 'all'; // 超出范围的都重置为全联动\r\n }\r\n\r\n // 先初始一个空的表格以便拿到对应的表格实例信息\r\n var tableIns = table.render($.extend({}, options, {\r\n data: [],\r\n url: '',\r\n done: null\r\n }))\r\n var id = tableIns.config.id;\r\n thisTreeTable.that[id] = that; // 记录当前实例对象\r\n that.tableIns = tableIns;\r\n\r\n updateOptions(id, options);\r\n }\r\n\r\n // 初始默认配置\r\n Class.prototype.config = {\r\n tree: {\r\n customName: {\r\n children: \"children\", // 节点数据中保存子节点数据的属性名称\r\n isParent: \"isParent\", // 节点数据保存节点是否为父节点的属性名称\r\n name: \"name\", // 节点数据保存节点名称的属性名称\r\n id: \"id\", // 唯一标识的属性名称\r\n pid: \"parentId\", // 父节点唯一标识的属性名称\r\n icon: \"icon\" // 图标的属性名称\r\n },\r\n view: {\r\n indent: 14, // 层级缩进量\r\n flexIconClose: '', // 关闭时候的折叠图标\r\n flexIconOpen: '', // 打开时候的折叠图标\r\n showIcon: true, // 是否显示图标(节点类型图标)\r\n icon: '', // 节点图标,如果设置了这个属性或者数据中有这个字段信息,不管打开还是关闭都以这个图标的值为准\r\n iconClose: '', // 关闭时候的图标\r\n iconOpen: '', // 打开时候的图标\r\n iconLeaf: '', // 叶子节点的图标\r\n showFlexIconIfNotParent: false, // 当节点不是父节点的时候是否显示折叠图标\r\n dblClickExpand: true, // 双击节点时,是否自动展开父节点的标识\r\n expandAllDefault: false // 默认展开所有节点\r\n },\r\n data: {\r\n isSimpleData: false, // 是否简单数据模式\r\n rootPid: null, // 根节点的父 ID 值\r\n cascade: 'all' // 级联方式 默认全部级联:all 可选 级联父 parent 级联子 children\r\n },\r\n async: {\r\n enable: false, // 是否开启异步加载模式,只有开启的时候其他参数才起作用\r\n url: '', // 异步加载的接口,可以根据需要设置与顶层接口不同的接口,如果相同可以不设置该参数\r\n type: null, // 请求的接口类型,设置可缺省同上\r\n contentType: null, // 提交参数的数据类型,设置可缺省同上\r\n headers: null, // 设置可缺省同上\r\n where: null, // 设置可缺省同上\r\n autoParam: [] // 自动参数\r\n },\r\n callback: {\r\n beforeExpand: null, // 展开前的回调 return false 可以阻止展开的动作\r\n onExpand: null // 展开之后的回调\r\n }\r\n },\r\n };\r\n\r\n Class.prototype.getOptions = function () {\r\n var that = this;\r\n if (that.tableIns) {\r\n return table.getOptions(that.tableIns.config.id); // 获取表格的实时配置信息\r\n } else {\r\n return that.config;\r\n }\r\n };\r\n\r\n function flatToTree(flatArr, idKey, pIdKey, childrenKey, rootPid) {\r\n idKey = idKey || 'id';\r\n pIdKey = pIdKey || 'parentId';\r\n childrenKey = childrenKey || 'children';\r\n // 创建一个空的 nodes 对象,用于保存所有的节点\r\n var nodes = {};\r\n // 遍历所有节点,将其加入 nodes 对象中\r\n var idTemp = '';\r\n layui.each(flatArr, function (index, item) {\r\n idTemp = idKey + item[idKey];\r\n nodes[idTemp] = $.extend({}, item);\r\n nodes[idTemp][childrenKey] = [];\r\n })\r\n // 遍历所有节点,将其父子关系加入 nodes 对象\r\n var pidTemp = '';\r\n layui.each(nodes, function (index, item) {\r\n pidTemp = idKey + item[pIdKey];\r\n if (pidTemp && nodes[pidTemp]) {\r\n nodes[pidTemp][childrenKey].push(item);\r\n }\r\n })\r\n // 返回顶层节点\r\n return Object.keys(nodes)\r\n .map(function(k) {\r\n return nodes[k];\r\n })\r\n .filter(function (item) {\r\n return rootPid ? item[pIdKey] === rootPid : !item[pIdKey];\r\n })\r\n }\r\n\r\n Class.prototype.flatToTree = function (tableData) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var tableId = options.id;\r\n\r\n tableData = tableData || table.cache[tableId];\r\n\r\n return flatToTree(tableData, customName.id, customName.pid, customName.children, treeOptions.data.rootPid)\r\n }\r\n\r\n Class.prototype.treeToFlat = function (tableData, parentId, parentIndex) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var childrenKey = customName.children;\r\n var pIdKey = customName.pid;\r\n\r\n var flat = [];\r\n layui.each(tableData, function (i1, item1) {\r\n var dataIndex = (parentIndex ? parentIndex + '-' : '') + i1;\r\n var dataNew = $.extend({}, item1);\r\n dataNew[pIdKey] = item1[pIdKey] || parentId;\r\n flat.push(dataNew);\r\n flat = flat.concat(that.treeToFlat(item1[childrenKey], item1[customName.id], dataIndex));\r\n });\r\n\r\n return flat;\r\n }\r\n\r\n // 通过当前行数据返回 treeNode 信息\r\n Class.prototype.getTreeNode = function (data) {\r\n var that = this;\r\n if (!data) {\r\n return hint.error('找不到节点数据');\r\n }\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var customName = treeOptions.customName;\r\n\r\n // 带上一些常用的方法\r\n return {\r\n data: data,\r\n dataIndex: data[LAY_DATA_INDEX],\r\n getParentNode: function () {\r\n return that.getNodeByIndex(data[LAY_PARENT_INDEX])\r\n },\r\n };\r\n }\r\n\r\n // 通过 index 返回节点信息\r\n Class.prototype.getNodeByIndex = function (index) {\r\n var that = this;\r\n var treeNodeData = that.getNodeDataByIndex(index);\r\n if (!treeNodeData) {\r\n return hint.error('找不到节点数据');\r\n }\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var parentKey = customName.parent;\r\n var tableId = options.id;\r\n\r\n var treeNode = {\r\n data: treeNodeData,\r\n dataIndex: treeNodeData[LAY_DATA_INDEX],\r\n getParentNode: function () {\r\n return that.getNodeByIndex(treeNodeData[LAY_PARENT_INDEX])\r\n },\r\n update: function (data) {\r\n return treeTable.updateNode(tableId, index, data)\r\n },\r\n remove: function () {\r\n return treeTable.removeNode(tableId, index)\r\n },\r\n expand: function (opts) {\r\n return treeTable.expandNode(tableId, $.extend({}, opts, {\r\n index: index\r\n }))\r\n },\r\n setChecked: function (opts) {\r\n return treeTable.setRowChecked(tableId, $.extend({}, opts, {\r\n index: index\r\n }))\r\n }\r\n };\r\n\r\n treeNode.dataIndex = index;\r\n return treeNode;\r\n }\r\n\r\n // 通过 id 获取节点信息\r\n Class.prototype.getNodeById = function (id) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var idKey = customName.id;\r\n\r\n // 通过 id 拿到数据的 dataIndex\r\n var dataIndex = '';\r\n var tableDataFlat = treeTable.getData(options.id, true);\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[idKey] === id) {\r\n dataIndex = item1[LAY_DATA_INDEX];\r\n return true;\r\n }\r\n })\r\n if (!dataIndex) {\r\n return;\r\n }\r\n\r\n // 用 index\r\n return that.getNodeByIndex(dataIndex);\r\n }\r\n\r\n // 通过 index 获取节点数据\r\n Class.prototype.getNodeDataByIndex = function (index, clone, newValue) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableCache = table.cache[tableId];\r\n\r\n // 获取当前行中的数据\r\n var dataCache = tableCache[index];\r\n\r\n // 若非删除操作,则返回合并后的数据\r\n if (newValue !== 'delete' && dataCache) {\r\n $.extend(dataCache, newValue);\r\n return clone ? $.extend({}, dataCache) : dataCache;\r\n }\r\n\r\n // 删除操作\r\n var dataRet = tableCache;\r\n var indexArr = String(index).split('-');\r\n\r\n // if (options.url || indexArr.length > 1) tableCache = null // 只有在删除根节点的时候才需要处理\r\n\r\n // 根据 index 进行数据处理\r\n for (var i = 0, childrenKey = treeOptions.customName.children; i < indexArr.length; i++) {\r\n if (newValue && i === indexArr.length - 1) {\r\n if (newValue === 'delete') { // 删除并返回当前数据\r\n // 同步 cache --- 此段代码注释缘由:data 属性模式造成数据重复执行 splice (@Gitee: #I7Z0A/I82E2S)\r\n /*if (tableCache) {\r\n layui.each(tableCache, function (i1, item1) {\r\n if (item1[LAY_DATA_INDEX] === index) {\r\n tableCache.splice(i1, 1);\r\n return true;\r\n }\r\n })\r\n }*/\r\n return (i ? dataRet[childrenKey] : dataRet).splice(indexArr[i], 1)[0];\r\n } else { // 更新值\r\n $.extend((i ? dataRet[childrenKey] : dataRet)[indexArr[i]], newValue);\r\n }\r\n }\r\n dataRet = i ? dataRet[childrenKey][indexArr[i]] : dataRet[indexArr[i]];\r\n }\r\n return clone ? $.extend({}, dataRet) : dataRet;\r\n }\r\n\r\n treeTable.getNodeDataByIndex = function (id, index) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n return that.getNodeDataByIndex(index, true);\r\n }\r\n\r\n // 判断是否是父节点\r\n var checkIsParent = function (data, isParentKey, childrenKey) {\r\n isParentKey = isParentKey || 'isParent';\r\n childrenKey = childrenKey || 'children';\r\n layui.each(data, function (i1, item1) {\r\n if (!(isParentKey in item1)) {\r\n item1[isParentKey] = !!(item1[childrenKey] && item1[childrenKey].length);\r\n checkIsParent(item1[childrenKey]);\r\n }\r\n })\r\n }\r\n\r\n Class.prototype.initData = function (data, parentIndex) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n\r\n data = data || that.getTableData();\r\n\r\n var customName = treeOptions.customName;\r\n var isParentKey = customName.isParent;\r\n var childrenKey = customName.children;\r\n\r\n layui.each(data, function (i1, item1) {\r\n if (!(isParentKey in item1)) {\r\n item1[isParentKey] = !!(item1[childrenKey] && item1[childrenKey].length);\r\n }\r\n item1[LAY_DATA_INDEX_HISTORY] = item1[LAY_DATA_INDEX];\r\n item1[LAY_PARENT_INDEX] = parentIndex = parentIndex || '';\r\n var dataIndex = item1[LAY_DATA_INDEX] = (parentIndex ? parentIndex + '-' : '') + i1;\r\n that.initData(item1[childrenKey] || [], dataIndex);\r\n });\r\n\r\n updateCache(tableId, childrenKey, data);\r\n\r\n return data;\r\n }\r\n\r\n // 与 tableId 有关带防抖的方法\r\n var debounceFn = (function () {\r\n var fn = {};\r\n return function (tableId, func, wait) {\r\n if (!fn[tableId]) {\r\n fn[tableId] = layui.debounce(func, wait);\r\n }\r\n return fn[tableId];\r\n }\r\n })()\r\n\r\n // 优化参数,添加一个 getNodeByIndex 方法 只传 表格id 和行 dataIndex 分几步优化 todo\r\n var expandNode = function (treeNode, expandFlag, sonSign, focus, callbackFlag) {\r\n // treeNode // 需要展开的节点\r\n var trElem = treeNode.trElem;\r\n var tableViewElem = treeNode.tableViewElem || trElem.closest(ELEM_VIEW);\r\n var tableId = treeNode.tableId || tableViewElem.attr('lay-id');\r\n var options = treeNode.options || table.getOptions(tableId);\r\n var dataIndex = treeNode.dataIndex || trElem.attr('lay-data-index'); // 可能出现多层\r\n var treeTableThat = getThisTable(tableId);\r\n\r\n var treeOptions = options.tree || {};\r\n var customName = treeOptions.customName || {};\r\n var isParentKey = customName.isParent;\r\n\r\n var trData = treeTableThat.getNodeDataByIndex(dataIndex);\r\n\r\n // 后续调优:对已经展开的节点进行展开和已经关闭的节点进行关闭应该做优化减少不必要的代码执行 todo\r\n var isToggle = layui.type(expandFlag) !== 'boolean';\r\n var trExpand = isToggle ? !trData[LAY_EXPAND] : expandFlag;\r\n var retValue = trData[isParentKey] ? trExpand : null;\r\n\r\n if (callbackFlag && trExpand != trData[LAY_EXPAND] && (!trData[LAY_ASYNC_STATUS] || trData[LAY_ASYNC_STATUS] === 'local')) {\r\n var beforeExpand = treeOptions.callback.beforeExpand;\r\n if (layui.type(beforeExpand) === 'function') {\r\n if (beforeExpand(tableId, trData, expandFlag) === false) {\r\n return retValue;\r\n }\r\n }\r\n }\r\n\r\n var trExpanded = trData[LAY_HAS_EXPANDED]; // 展开过,包括异步加载\r\n\r\n // 找到表格中的同类节点(需要找到lay-data-index一致的所有行)\r\n var trsElem = tableViewElem.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n // 处理折叠按钮图标\r\n var flexIconElem = trsElem.find('.layui-table-tree-flexIcon');\r\n flexIconElem.html(trExpand ? treeOptions.view.flexIconOpen : treeOptions.view.flexIconClose)\r\n trData[isParentKey] && flexIconElem.css('visibility', 'visible');\r\n // 处理节点图标\r\n treeOptions.view.showIcon && trsElem\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(trExpand ? treeOptions.view.iconOpen : treeOptions.view.iconClose);\r\n trData[LAY_EXPAND] = trExpand;\r\n var trDataId = trData[customName.id];\r\n trDataId !== undefined && (treeTableThat.status.expand[trDataId] = trExpand);\r\n if (retValue === null) {\r\n return retValue;\r\n }\r\n\r\n var childNodes = trData[customName.children] || [];\r\n // 处理子节点展示与否\r\n if (trExpand) {\r\n // 展开\r\n if (trExpanded) { // 已经展开过\r\n if (!childNodes.length) return ;//异步如果子节点没有数据情况下双点行展开所有已展开的节点问题解决\r\n trsElem.nextAll(childNodes.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).removeClass(HIDE);\r\n layui.each(childNodes, function (i1, item1) {\r\n if (!item1[isParentKey]) {\r\n return;\r\n }\r\n\r\n if (sonSign && !isToggle && !item1[LAY_EXPAND]) { // 非状态切换的情况下\r\n // 级联展开子节点\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n } else if (item1[LAY_EXPAND]) { // 初始化级联展开\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, true);\r\n }\r\n });\r\n } else {\r\n var asyncSetting = treeOptions.async || {};\r\n var asyncUrl = asyncSetting.url || options.url;\r\n if (asyncSetting.enable && trData[isParentKey] && !trData[LAY_ASYNC_STATUS]) {\r\n trData[LAY_ASYNC_STATUS] = 'loading';\r\n flexIconElem.html('');\r\n\r\n // 异步获取子节点数据成功之后处理方法\r\n var asyncSuccessFn = function (data) {\r\n trData[LAY_ASYNC_STATUS] = 'success';\r\n trData[customName.children] = data;\r\n treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX])\r\n expandNode(treeNode, true, isToggle ? false : sonSign, focus, callbackFlag);\r\n }\r\n\r\n var format = asyncSetting.format; // 自定义数据返回方法\r\n if (layui.type(format) === 'function') {\r\n format(trData, options, asyncSuccessFn);\r\n return retValue;\r\n }\r\n\r\n var params = {};\r\n // 参数\r\n var data = $.extend(params, asyncSetting.where || options.where);\r\n var asyncAutoParam = asyncSetting.autoParam;\r\n layui.each(asyncAutoParam, function (index, item) {\r\n var itemStr = item;\r\n var itemArr = item.split('=');\r\n data[itemArr[0].trim()] = trData[(itemArr[1] || itemArr[0]).trim()]\r\n })\r\n\r\n var asyncContentType = asyncSetting.contentType || options.contentType;\r\n if (asyncContentType && asyncContentType.indexOf(\"application/json\") == 0) { // 提交 json 格式\r\n data = JSON.stringify(data);\r\n }\r\n var asyncType = asyncSetting.method || options.method;\r\n var asyncDataType = asyncSetting.dataType || options.dataType;\r\n var asyncJsonpCallback = asyncSetting.jsonpCallback || options.jsonpCallback;\r\n var asyncHeaders = asyncSetting.headers || options.headers;\r\n var asyncParseData = asyncSetting.parseData || options.parseData;\r\n var asyncResponse = asyncSetting.response || options.response;\r\n\r\n $.ajax({\r\n type: asyncType || 'get',\r\n url: asyncUrl,\r\n contentType: asyncContentType,\r\n data: data,\r\n dataType: asyncDataType || 'json',\r\n jsonpCallback: asyncJsonpCallback,\r\n headers: asyncHeaders || {},\r\n success: function (res) {\r\n // 若有数据解析的回调,则获得其返回的数据\r\n if (typeof asyncParseData === 'function') {\r\n res = asyncParseData.call(options, res) || res;\r\n }\r\n // 检查数据格式是否符合规范\r\n if (res[asyncResponse.statusName] != asyncResponse.statusCode) {\r\n trData[LAY_ASYNC_STATUS] = 'error';\r\n // 异常处理 todo\r\n flexIconElem.html('');\r\n // 事件\r\n } else {\r\n // 正常返回\r\n asyncSuccessFn(res[asyncResponse.dataName]);\r\n }\r\n },\r\n error: function (e, msg) {\r\n trData[LAY_ASYNC_STATUS] = 'error';\r\n // 异常处理 todo\r\n typeof options.error === 'function' && options.error(e, msg);\r\n }\r\n });\r\n return retValue;\r\n }\r\n trExpanded = trData[LAY_HAS_EXPANDED] = true;\r\n if (childNodes.length) {\r\n // 判断是否需要排序\r\n if (options.initSort && (!options.url || options.autoSort)) {\r\n var initSort = options.initSort;\r\n if (initSort.type) {\r\n layui.sort(childNodes, initSort.field, initSort.type === 'desc', true);\r\n } else {\r\n // 恢复默认\r\n layui.sort(childNodes, table.config.indexName, null, true);\r\n }\r\n }\r\n treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX]);\r\n // 将数据通过模板得出节点的html代码\r\n var str2 = table.getTrHtml(tableId, childNodes, null, null, dataIndex);\r\n\r\n var str2Obj = {\r\n trs: $(str2.trs.join('')),\r\n trs_fixed: $(str2.trs_fixed.join('')),\r\n trs_fixed_r: $(str2.trs_fixed_r.join(''))\r\n }\r\n var dataLevel = dataIndex.split('-').length - 1;\r\n var dataLevelNew = (dataLevel || 0) + 1;\r\n layui.each(childNodes, function (childIndex, childItem) {\r\n str2Obj.trs.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n })\r\n str2Obj.trs_fixed.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n })\r\n str2Obj.trs_fixed_r.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n })\r\n })\r\n\r\n tableViewElem.find(ELEM_MAIN).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs);\r\n tableViewElem.find(ELEM_FIXL).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs_fixed);\r\n tableViewElem.find(ELEM_FIXR).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs_fixed_r);\r\n\r\n // 初始化新增的节点中的内容\r\n treeTableThat.renderTreeTable(str2Obj.trs, dataLevelNew);\r\n\r\n if (sonSign && !isToggle) { // 非状态切换的情况下\r\n // 级联展开/关闭子节点\r\n layui.each(childNodes, function (i1, item1) {\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n })\r\n }\r\n }\r\n }\r\n } else {\r\n treeTableThat.isExpandAll = false;\r\n // 关闭\r\n if (sonSign && !isToggle) { // 非状态切换的情况下\r\n layui.each(childNodes, function (i1, item1) {\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n });\r\n tableViewElem.find(childNodes.map(function (value, index, array) { // 只隐藏直接子节点,其他由递归的处理\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).addClass(HIDE);\r\n } else {\r\n var childNodesFlat = treeTableThat.treeToFlat(childNodes, trData[customName.id], dataIndex);\r\n tableViewElem.find(childNodesFlat.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).addClass(HIDE);\r\n }\r\n }\r\n\r\n\r\n debounceFn('resize-' + tableId, function () {\r\n treeTable.resize(tableId);\r\n }, 0)();\r\n\r\n if (callbackFlag && trData[LAY_ASYNC_STATUS] !== 'loading') {\r\n var onExpand = treeOptions.callback.onExpand;\r\n layui.type(onExpand) === 'function' && onExpand(tableId, trData, trExpand);\r\n }\r\n\r\n return retValue;\r\n }\r\n\r\n /**\r\n * 展开或关闭一个节点\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {Number|String} opts.index 展开行的数据下标\r\n * @param {Boolean} [opts.expandFlag] 展开、关闭、切换\r\n * @param {Boolean} [opts.inherit] 是否级联子节点\r\n * @param {Boolean} [opts.callbackFlag] 是否触发事件\r\n * @return [{Boolean}] 状态结果\r\n * */\r\n treeTable.expandNode = function (id, opts) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n opts = opts || {};\r\n\r\n var index = opts.index;\r\n var expandFlag = opts.expandFlag;\r\n var sonSign = opts.inherit;\r\n var callbackFlag = opts.callbackFlag;\r\n\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n return expandNode({\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + index + '\"]').first()\r\n }, expandFlag, sonSign, null, callbackFlag)\r\n };\r\n\r\n /**\r\n * 展开或关闭全部节点\r\n * @param {String} id 树表id\r\n * @param {Boolean} expandFlag 展开或关闭\r\n * */\r\n treeTable.expandAll = function (id, expandFlag) {\r\n if (layui.type(expandFlag) !== 'boolean') {\r\n return hint.error('expandAll 的展开状态参数只接收true/false')\r\n }\r\n\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n that.isExpandAll = expandFlag;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var isParentKey = treeOptions.customName.isParent;\r\n var idKey = treeOptions.customName.id;\r\n var showFlexIconIfNotParent = treeOptions.view.showFlexIconIfNotParent;\r\n\r\n if (!expandFlag) {\r\n // 关闭所有\r\n // 将所有已经打开的节点的状态设置为关闭,\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = false;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = false);\r\n }\r\n }) // 只处理当前页,如果需要处理全部表格,需要用treeTable.updateStatus\r\n // 隐藏所有非顶层的节点\r\n tableView.find('.layui-table-box tbody tr[data-level!=\"0\"]').addClass(HIDE);\r\n\r\n tableView.find('.layui-table-tree-flexIcon').html(treeOptions.view.flexIconClose);\r\n treeOptions.view.showIcon && tableView\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(treeOptions.view.iconClose);\r\n } else {\r\n var tableDataFlat = treeTable.getData(id, true);\r\n // 展开所有\r\n // 存在异步加载\r\n if (treeOptions.async.enable) {\r\n // 判断是否有未加载过的节点\r\n var isAllAsyncDone = true;\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[isParentKey] && !item1[LAY_ASYNC_STATUS]) {\r\n isAllAsyncDone = false;\r\n return true;\r\n }\r\n })\r\n // 有未加载过的节点\r\n if (!isAllAsyncDone) {\r\n // 逐个展开\r\n layui.each(treeTable.getData(id), function (i1, item1) {\r\n treeTable.expandNode(id, {\r\n index: item1[LAY_DATA_INDEX],\r\n expandFlag: true,\r\n inherit: true\r\n })\r\n })\r\n return;\r\n }\r\n }\r\n\r\n // 先判断是否全部打开过了\r\n var isAllExpanded = true;\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[isParentKey] && !item1[LAY_HAS_EXPANDED]) {\r\n isAllExpanded = false;\r\n return true;\r\n }\r\n })\r\n // 如果全部节点已经都打开过,就可以简单处理跟隐藏所有节点反操作\r\n if (isAllExpanded) {\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = true;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = true);\r\n }\r\n });\r\n // 显示所有子节点\r\n tableView.find('tbody tr[data-level!=\"0\"]').removeClass(HIDE);\r\n // 处理节点的图标\r\n tableView.find('.layui-table-tree-flexIcon').html(treeOptions.view.flexIconOpen);\r\n treeOptions.view.showIcon && tableView\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(treeOptions.view.iconOpen);\r\n } else {\r\n // 如果有未打开过的父节点,将 tr 内容全部重新生成\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = true;\r\n d[LAY_HAS_EXPANDED] = true;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = true);\r\n }\r\n });\r\n if (options.initSort && options.initSort.type && options.autoSort) {\r\n return treeTable.sort(id);\r\n }\r\n var trAll = table.getTrHtml(id, tableDataFlat);\r\n\r\n var trAllObj = {\r\n trs: $(trAll.trs.join('')),\r\n trs_fixed: $(trAll.trs_fixed.join('')),\r\n trs_fixed_r: $(trAll.trs_fixed_r.join(''))\r\n }\r\n var props;\r\n layui.each(tableDataFlat, function (dataIndex, dataItem) {\r\n var dataLevel = dataItem[LAY_DATA_INDEX].split('-').length - 1;\r\n props = {\r\n 'data-index': dataItem[LAY_DATA_INDEX],\r\n 'lay-data-index': dataItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevel\r\n };\r\n trAllObj.trs.eq(dataIndex).attr(props)\r\n trAllObj.trs_fixed.eq(dataIndex).attr(props)\r\n trAllObj.trs_fixed_r.eq(dataIndex).attr(props)\r\n })\r\n layui.each(['main', 'fixed-l', 'fixed-r'], function (i, item) {\r\n tableView.find('.layui-table-' + item + ' tbody').html(trAllObj[['trs', 'trs_fixed', 'trs_fixed_r'][i]]);\r\n });\r\n that.renderTreeTable(tableView, 0, false);\r\n }\r\n }\r\n treeTable.resize(id);\r\n }\r\n\r\n Class.prototype.renderTreeTable = function (tableView, level, sonSign) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n !tableViewElem.hasClass(TABLE_TREE) && tableViewElem.addClass(TABLE_TREE);\r\n var tableId = options.id;\r\n var treeOptions = options.tree || {};\r\n var treeOptionsData = treeOptions.data || {};\r\n var treeOptionsView = treeOptions.view || {};\r\n var customName = treeOptions.customName || {};\r\n var isParentKey = customName.isParent;\r\n var tableFilterId = tableViewElem.attr('lay-filter');\r\n var treeTableThat = that;\r\n // var tableData = treeTableThat.getTableData();\r\n\r\n level = level || 0;\r\n\r\n if (!level) {\r\n // 初始化的表格里面没有level信息,可以作为顶层节点的判断\r\n tableViewElem.find('.layui-table-body tr:not([data-level])').attr('data-level', level);\r\n layui.each(table.cache[tableId], function (dataIndex, dataItem) {\r\n tableViewElem.find('.layui-table-main tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n tableViewElem.find('.layui-table-fixed-l tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n tableViewElem.find('.layui-table-fixed-r tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n })\r\n }\r\n\r\n var dataExpand = null; // 记录需要展开的数据\r\n var nameKey = customName.name;\r\n var indent = treeOptionsView.indent || 14;\r\n layui.each(tableView.find('td[data-field=\"' + nameKey + '\"]'), function (index, item) {\r\n item = $(item);\r\n var trElem = item.closest('tr');\r\n var itemCell = item.children('.layui-table-cell');\r\n if (itemCell.hasClass('layui-table-tree-item')) {\r\n return;\r\n }\r\n var trIndex = trElem.attr('lay-data-index');\r\n if (!trIndex) { // 排除在统计行中的节点\r\n return;\r\n }\r\n trElem = tableViewElem.find('tr[lay-data-index=\"' + trIndex + '\"]');\r\n var trData = treeTableThat.getNodeDataByIndex(trIndex);\r\n\r\n if (trData[LAY_EXPAND] && trData[isParentKey]) {\r\n // 需要展开\r\n dataExpand = dataExpand || {};\r\n dataExpand[trIndex] = true;\r\n }\r\n if (trData[LAY_CHECKBOX_HALF]) {\r\n trElem.find('input[type=\"checkbox\"][name=\"layTableCheckbox\"]').prop('indeterminate', true);\r\n }\r\n\r\n var htmlTemp = itemCell.html();\r\n itemCell = trElem.find('td[data-field=\"' + nameKey + '\"]>div.layui-table-cell');\r\n itemCell.addClass('layui-table-tree-item');\r\n var flexIconElem = itemCell\r\n .html(['
                          ',\r\n trData[LAY_EXPAND] ? treeOptionsView.flexIconOpen : treeOptionsView.flexIconClose, // 折叠图标\r\n '
                          ',\r\n treeOptionsView.showIcon ? '
                          ' +\r\n (trData[customName.icon] || treeOptionsView.icon ||\r\n (trData[isParentKey] ?\r\n (trData[LAY_EXPAND] ? treeOptionsView.iconOpen : treeOptionsView.iconClose) :\r\n treeOptionsView.iconLeaf) ||\r\n '') + '
                          ' : '', // 区分父子节点\r\n htmlTemp].join('')) // 图标要可定制\r\n .find('.layui-table-tree-flexIcon');\r\n\r\n // 添加展开按钮的事件\r\n flexIconElem.on('click', function (event) {\r\n layui.stope(event);\r\n // 处理数据\r\n // var trElem = item.closest('tr');\r\n expandNode({trElem: trElem}, null, null, null, true);\r\n });\r\n });\r\n\r\n if (!level && treeOptions.view.expandAllDefault && that.isExpandAll === undefined) {\r\n return treeTable.expandAll(tableId, true); // 默认展开全部\r\n }\r\n\r\n // 当前层的数据看看是否需要展开\r\n if (sonSign !== false && dataExpand) {\r\n layui.each(dataExpand, function (index, item) {\r\n var trDefaultExpand = tableViewElem.find('tr[lay-data-index=\"' + index + '\"]');\r\n trDefaultExpand.find('.layui-table-tree-flexIcon').html(treeOptionsView.flexIconOpen);\r\n expandNode({trElem: trDefaultExpand.first()}, true);\r\n });\r\n } else {\r\n debounceFn('renderTreeTable-' + tableId, function () {\r\n options.hasNumberCol && formatNumber(that);\r\n form.render($('.layui-table-tree[lay-id=\"' + tableId + '\"]'));\r\n }, 0)();\r\n }\r\n }\r\n\r\n var formatNumber = function (that) {\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n\r\n var num = 0;\r\n var trMain = tableViewElem.find('.layui-table-main tbody tr');\r\n var trFixedL = tableViewElem.find('.layui-table-fixed-l tbody tr');\r\n var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr');\r\n layui.each(that.treeToFlat(table.cache[options.id]), function (i1, item1) {\r\n if (item1['LAY_HIDE']) return;\r\n var itemData = that.getNodeDataByIndex(item1[LAY_DATA_INDEX]);\r\n itemData['LAY_NUM'] = ++num;\r\n trMain.eq(i1).find('.laytable-cell-numbers').html(num);\r\n trFixedL.eq(i1).find('.laytable-cell-numbers').html(num);\r\n trFixedR.eq(i1).find('.laytable-cell-numbers').html(num);\r\n })\r\n }\r\n\r\n // 树表渲染\r\n Class.prototype.render = function (type) {\r\n var that = this;\r\n that.tableIns = table[type === 'reloadData' ? 'reloadData' : 'reload'](that.tableIns.config.id, $.extend(true, {}, that.config));\r\n that.config = that.tableIns.config;\r\n };\r\n\r\n // 表格重载\r\n Class.prototype.reload = function (options, deep, type) {\r\n var that = this;\r\n\r\n options = options || {};\r\n delete that.haveInit;\r\n\r\n // 防止数组深度合并\r\n layui.each(options, function (key, item) {\r\n if (layui.type(item) === 'array') delete that.config[key];\r\n });\r\n\r\n // 根据需要处理options中的一些参数\r\n updateOptions(that.getOptions().id, options, type || true);\r\n\r\n // 对参数进行深度或浅扩展\r\n that.config = $.extend(deep, {}, that.config, options);\r\n\r\n // 执行渲染\r\n that.render(type);\r\n };\r\n\r\n // 仅重载数据\r\n treeTable.reloadData = function () {\r\n var args = $.extend(true, [], arguments);\r\n args[3] = 'reloadData';\r\n\r\n return treeTable.reload.apply(null, args);\r\n };\r\n\r\n var updateStatus = function (data, statusObj, childrenKey, notCascade) {\r\n var dataUpdated = [];\r\n layui.each(data, function (i1, item1) {\r\n if (layui.type(statusObj) === 'function') {\r\n statusObj(item1);\r\n } else {\r\n $.extend(item1, statusObj);\r\n }\r\n dataUpdated.push($.extend({}, item1));\r\n notCascade || (dataUpdated = dataUpdated.concat(updateStatus(item1[childrenKey], statusObj, childrenKey, notCascade)));\r\n });\r\n return dataUpdated;\r\n }\r\n\r\n Class.prototype.updateStatus = function (data, statusObj, notCascade) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n data = data || table.cache[options.id];\r\n\r\n return updateStatus(data, statusObj, treeOptions.customName.children, notCascade);\r\n }\r\n\r\n Class.prototype.getTableData = function () {\r\n var that = this;\r\n var options = that.getOptions();\r\n // return options.url ? table.cache[options.id] : options.data;\r\n return table.cache[options.id];\r\n }\r\n\r\n treeTable.updateStatus = function (id, statusObj, data) {\r\n var that = getThisTable(id);\r\n var options = that.getOptions();\r\n if (!data) {\r\n if (options.url) {\r\n data = table.cache[options.id];\r\n } else {\r\n data = options.data;\r\n }\r\n }\r\n return that.updateStatus(data, statusObj);\r\n }\r\n\r\n treeTable.sort = function (id) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n if (options.autoSort) {\r\n that.initData();\r\n treeTable.renderData(id);\r\n }\r\n }\r\n\r\n // 处理事件\r\n var updateObjParams = function (obj) {\r\n var tableId = obj.config.id;\r\n var tableThat = getThisTable(tableId);\r\n var trData = obj.data = treeTable.getNodeDataByIndex(tableId, obj.index); // 克隆的\r\n var trIndex = trData[LAY_DATA_INDEX];\r\n obj.dataIndex = trIndex;\r\n\r\n // 处理update方法\r\n var updateFn = obj.update;\r\n obj.update = function () {\r\n var updateThat = this;\r\n var args = arguments;\r\n $.extend(tableThat.getNodeDataByIndex(trIndex), args[0]);\r\n var ret = updateFn.apply(updateThat, args); // 主要负责更新节点内容\r\n var nameKey = obj.config.tree.customName.name;\r\n nameKey in args[0] && obj.tr.find('td[data-field=\"' + nameKey + '\"]').children('div.layui-table-cell').removeClass('layui-table-tree-item');\r\n tableThat.renderTreeTable(obj.tr, obj.tr.attr('data-level'), false);\r\n return ret;\r\n }\r\n\r\n // 处理del方法\r\n obj.del = function () {\r\n treeTable.removeNode(tableId, trData);\r\n }\r\n\r\n // 处理setRowChecked\r\n obj.setRowChecked = function (checked) {\r\n treeTable.setRowChecked(tableId, {\r\n index: trData,\r\n checked: checked\r\n });\r\n }\r\n }\r\n\r\n // 更新数据\r\n treeTable.updateNode = function (id, index, newNode) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var trElem = tableView.find('tr[lay-data-index=\"' + index + '\"]');\r\n var trIndex = trElem.attr('data-index');\r\n var trLevel = trElem.attr('data-level')\r\n\r\n if (!newNode) {\r\n return;\r\n }\r\n // 更新值\r\n var newNodeTemp = that.getNodeDataByIndex(index, false, newNode);\r\n // 获取新的tr替换\r\n var trNew = table.getTrHtml(id, [newNodeTemp]);\r\n // 重新渲染tr\r\n layui.each(['main', 'fixed-l', 'fixed-r'], function (i, item) {\r\n tableView.find('.layui-table-' + item + ' tbody tr[lay-data-index=\"' + index + '\"]').replaceWith($(trNew[['trs', 'trs_fixed', 'trs_fixed_r'][i]].join('')).attr({\r\n 'data-index': trIndex,\r\n 'lay-data-index': index,\r\n 'data-level': trLevel\r\n }));\r\n });\r\n that.renderTreeTable(tableView.find('tr[lay-data-index=\"' + index + '\"]'), trLevel);\r\n }\r\n\r\n // 删除数据\r\n treeTable.removeNode = function (id, node) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var delNode;\r\n var indexArr = [];\r\n delNode = that.getNodeDataByIndex(layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX], false, 'delete');\r\n var nodeP = that.getNodeDataByIndex(delNode[LAY_PARENT_INDEX]);\r\n that.updateCheckStatus(nodeP);\r\n var delNodesFlat = that.treeToFlat([delNode], delNode[treeOptions.customName.pid], delNode[LAY_PARENT_INDEX]);\r\n layui.each(delNodesFlat, function (i2, item2) {\r\n indexArr.push('tr[lay-data-index=\"' + item2[LAY_DATA_INDEX] + '\"]');\r\n })\r\n\r\n tableView.find(indexArr.join(',')).remove(); // 删除行\r\n // 重新整理数据\r\n var tableData = that.initData();\r\n // index发生变化需要更新页面tr中对应的lay-data-index 新增和删除都要注意数据结构变动之后的index问题\r\n layui.each(that.treeToFlat(tableData), function (i3, item3) {\r\n if (item3[LAY_DATA_INDEX_HISTORY] && item3[LAY_DATA_INDEX_HISTORY] !== item3[LAY_DATA_INDEX]) {\r\n tableView.find('tr[lay-data-index=\"' + item3[LAY_DATA_INDEX_HISTORY] + '\"]').attr({\r\n 'data-index': item3[LAY_DATA_INDEX],\r\n 'lay-data-index': item3[LAY_DATA_INDEX],\r\n });\r\n // item3[LAY_DATA_INDEX_HISTORY] = item3[LAY_DATA_INDEX]\r\n }\r\n });\r\n // 重新更新顶层节点的data-index;\r\n layui.each(table.cache[id], function (i4, item4) {\r\n tableView.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]').attr('data-index', i4);\r\n })\r\n options.hasNumberCol && formatNumber(that);\r\n\r\n // 重新适配尺寸\r\n treeTable.resize(id);\r\n }\r\n\r\n /**\r\n * 新增数据节点\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {String|Number} opts.parentIndex 指定的父节点,如果增加根节点,请设置 parentIndex 为 null 即可\r\n * @param {Number} opts.index 新节点插入的位置(从 0 开始)index = -1(默认) 时,插入到最后\r\n * @param {Object|Array} opts.data 新增的节点,单个或者多个\r\n * @param {Boolean} opts.focus 新增的节点,单个或者多个\r\n * @return {Array} 新增的节点\r\n * */\r\n treeTable.addNodes = function (id, opts) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableViewElem = options.elem.next();\r\n var checkName = table.config.checkName;\r\n\r\n opts = opts || {};\r\n\r\n var parentIndex = opts.parentIndex;\r\n var index = opts.index;\r\n var newNodes = opts.data;\r\n var focus = opts.focus;\r\n\r\n parentIndex = layui.type(parentIndex) === 'number' ? parentIndex.toString() : parentIndex;\r\n var parentNode = parentIndex ? that.getNodeDataByIndex(parentIndex) : null;\r\n index = layui.type(index) === 'number' ? index : -1;\r\n\r\n // 添加数据\r\n newNodes = $.extend(true, [], (layui.isArray(newNodes) ? newNodes : [newNodes]));\r\n\r\n // 若未传入 LAY_CHECKED 属性,则继承父节点的 checked 状态\r\n layui.each(newNodes, function(i, item){\r\n if(!(checkName in item) && parentNode){\r\n item[checkName] = parentNode[checkName];\r\n }\r\n })\r\n\r\n var tableData = that.getTableData(), dataAfter;\r\n if (!parentNode) {\r\n // 添加到根节点\r\n dataAfter = table.cache[id].splice(index === -1 ? table.cache[id].length : index);\r\n table.cache[id] = table.cache[id].concat(newNodes, dataAfter);\r\n if (!options.url) {\r\n // 静态data模式\r\n if (!options.page) {\r\n options.data = table.cache[id];\r\n } else {\r\n var pageOptions = options.page;\r\n options.data.splice.apply(options.data, [pageOptions.limit * (pageOptions.curr - 1), pageOptions.limit].concat(table.cache[id]))\r\n }\r\n }\r\n // 将新节点添加到页面\r\n tableData = that.initData();\r\n\r\n if (tableViewElem.find('.layui-none').length) {\r\n table.renderData(id);\r\n return newNodes;\r\n }\r\n\r\n var newNodesHtml = table.getTrHtml(id, newNodes);\r\n var newNodesHtmlObj = {\r\n trs: $(newNodesHtml.trs.join('')),\r\n trs_fixed: $(newNodesHtml.trs_fixed.join('')),\r\n trs_fixed_r: $(newNodesHtml.trs_fixed_r.join(''))\r\n }\r\n\r\n var attrs = {};\r\n layui.each(newNodes, function (newNodeIndex, newNodeItem) {\r\n attrs = {\r\n 'data-index': newNodeItem[LAY_DATA_INDEX],\r\n 'lay-data-index': newNodeItem[LAY_DATA_INDEX],\r\n 'data-level': '0'\r\n };\r\n newNodesHtmlObj.trs.eq(newNodeIndex).attr(attrs)\r\n newNodesHtmlObj.trs_fixed.eq(newNodeIndex).attr(attrs)\r\n newNodesHtmlObj.trs_fixed_r.eq(newNodeIndex).attr(attrs)\r\n })\r\n var trIndexPrev = parseInt(newNodes[0][LAY_DATA_INDEX]) - 1;\r\n var tableViewElemMAIN = tableViewElem.find(ELEM_MAIN);\r\n var tableViewElemFIXL = tableViewElem.find(ELEM_FIXL);\r\n var tableViewElemFIXR = tableViewElem.find(ELEM_FIXR);\r\n if (trIndexPrev === -1) {\r\n // 插入到开头\r\n tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs_fixed_r);\r\n } else {\r\n if (index === -1) {\r\n // 追加到最后\r\n tableViewElemMAIN.find('tbody').append(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tbody').append(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tbody').append(newNodesHtmlObj.trs_fixed_r);\r\n } else {\r\n var trIndexNext = dataAfter[0][LAY_DATA_INDEX_HISTORY];\r\n tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs_fixed_r);\r\n }\r\n\r\n }\r\n\r\n // 重新更新顶层节点的data-index;\r\n layui.each(table.cache[id], function (i4, item4) {\r\n tableViewElem.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]').attr('data-index', i4);\r\n })\r\n\r\n that.renderTreeTable(tableViewElem.find(newNodes.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')));\r\n } else {\r\n var isParentKey = treeOptions.customName.isParent;\r\n var childKey = treeOptions.customName.children;\r\n\r\n parentNode[isParentKey] = true;\r\n var childrenNodes = parentNode[childKey];\r\n if (!childrenNodes) {\r\n childrenNodes = parentNode[childKey] = newNodes;\r\n } else {\r\n dataAfter = childrenNodes.splice(index === -1 ? childrenNodes.length : index);\r\n childrenNodes = parentNode[childKey] = childrenNodes.concat(newNodes, dataAfter);\r\n }\r\n // 删除已经存在的同级节点以及他们的子节点,并且把中间节点的已展开过的状态设置为false\r\n that.updateStatus(childrenNodes, function (d) {\r\n if (d[isParentKey] || treeOptions.view.showFlexIconIfNotParent) {\r\n d[LAY_HAS_EXPANDED] = false;\r\n }\r\n });\r\n var childrenNodesFlat = that.treeToFlat(childrenNodes);\r\n tableViewElem.find(childrenNodesFlat.map(function (value) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).remove();\r\n\r\n tableData = that.initData();\r\n // 去掉父节点的已经展开过的状态,重新执行一次展开的方法\r\n parentNode[LAY_HAS_EXPANDED] = false;\r\n parentNode[LAY_ASYNC_STATUS] = 'local'; // 转为本地数据,应该规定异步加载子节点的时候addNodes的规则\r\n expandNode({trElem: tableViewElem.find('tr[lay-data-index=\"' + parentIndex + '\"]')}, true)\r\n }\r\n that.updateCheckStatus(parentNode);\r\n treeTable.resize(id);\r\n if (focus) {\r\n // 滚动到第一个新增的节点\r\n tableViewElem.find(ELEM_MAIN).find('tr[lay-data-index=\"' + newNodes[0][LAY_DATA_INDEX] + '\"]').get(0).scrollIntoViewIfNeeded();\r\n }\r\n\r\n return newNodes;\r\n }\r\n\r\n // 获取表格选中状态\r\n treeTable.checkStatus = function (id, includeHalfCheck) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var checkName = table.config.checkName;\r\n\r\n // 需要区分单双选\r\n var tableData = treeTable.getData(id, true);\r\n var checkedData = tableData.filter(function (value, index, array) {\r\n return value[checkName] || (includeHalfCheck && value[LAY_CHECKBOX_HALF]);\r\n });\r\n\r\n var isAll = true;\r\n layui.each(treeOptions.data.cascade === 'all' ? table.cache[id] : treeTable.getData(id, true), function (i1, item1) {\r\n if (!item1[checkName]) {\r\n isAll = false;\r\n return true;\r\n }\r\n })\r\n\r\n return {\r\n data: checkedData,\r\n isAll: isAll\r\n }\r\n }\r\n\r\n // 排序之后重新渲染成树表\r\n treeTable.on('sort', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n treeTable.sort(tableId);\r\n }\r\n });\r\n\r\n // 行点击\r\n treeTable.on('row', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // 行双击\r\n treeTable.on('rowDouble', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n\r\n var treeOptions = options.tree || {};\r\n if (treeOptions.view.dblClickExpand) {\r\n expandNode({trElem: obj.tr.first()}, null, null, null, true);\r\n }\r\n }\r\n })\r\n\r\n // 菜单\r\n treeTable.on('rowContextmenu', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // tr中带lay-event节点点击\r\n treeTable.on('tool', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // 行内编辑\r\n treeTable.on('edit', function (obj) {\r\n // 如果编辑涉及到关键的name字段需要重新更新一下tr节点\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n if (obj.field === options.tree.customName.name) {\r\n var updateData = {};\r\n updateData[obj.field] = obj.value;\r\n obj.update(updateData); // 通过update调用执行tr节点的更新\r\n }\r\n }\r\n });\r\n\r\n // 单选\r\n treeTable.on('radio', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n var that = getThisTable(tableId);\r\n updateObjParams(obj);\r\n checkNode.call(that, obj.tr, obj.checked)\r\n }\r\n })\r\n\r\n // 设置或取消行选中样式\r\n Class.prototype.setRowCheckedClass = function(tr, checked){\r\n var that = this;\r\n var options = that.getOptions();\r\n\r\n var index = tr.data('index');\r\n var tableViewElem = options.elem.next();\r\n \r\n tr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED); // 主体行\r\n\r\n // 右侧固定行\r\n tr.each(function(){\r\n var index = $(this).data('index');\r\n var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr[data-index=\"'+ index +'\"]');\r\n trFixedR[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED);\r\n });\r\n };\r\n\r\n // 更新表格的复选框状态\r\n Class.prototype.updateCheckStatus = function (dataP, checked) {\r\n var that = this;\r\n var options = that.getOptions();\r\n if (!options.hasChecboxCol) {\r\n return false; // 如果没有复选列则不需要更新状态\r\n }\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableView = options.elem.next();\r\n\r\n var checkName = table.config.checkName;\r\n\r\n var cascade = treeOptions.data.cascade;\r\n var isCascadeParent = cascade === 'all' || cascade === 'parent';\r\n\r\n // 如有必要更新父节点们的状态\r\n if (isCascadeParent && dataP) {\r\n var trsP = that.updateParentCheckStatus(dataP, layui.type(checked) === 'boolean' ? checked : null);\r\n layui.each(trsP, function (indexP, itemP) {\r\n var checkboxElem = tableView.find('tr[lay-data-index=\"' + itemP[LAY_DATA_INDEX] + '\"] input[name=\"layTableCheckbox\"]:not(:disabled)');\r\n var checked = itemP[checkName];\r\n\r\n // 标记父节点行背景色\r\n that.setRowCheckedClass(checkboxElem.closest('tr'), checked);\r\n \r\n // 设置原始复选框 checked 属性值并渲染\r\n form.render(checkboxElem.prop({\r\n checked: checked,\r\n indeterminate: itemP[LAY_CHECKBOX_HALF]\r\n }))\r\n })\r\n }\r\n\r\n // 更新全选的状态\r\n var isAll = true;\r\n var isIndeterminate = false;\r\n var data = treeOptions.data.cascade === 'all' ? table.cache[tableId] : treeTable.getData(tableId, true);\r\n data = data.filter(function (item) {\r\n return !item[options.disabledName];\r\n });\r\n layui.each(data, function (i1, item1) {\r\n if (item1[checkName] || item1[LAY_CHECKBOX_HALF]) {\r\n isIndeterminate = true;\r\n }\r\n if (!item1[checkName]) {\r\n isAll = false;\r\n }\r\n if (isIndeterminate && !isAll) {\r\n return true;\r\n }\r\n })\r\n isIndeterminate = isIndeterminate && !isAll;\r\n form.render(tableView.find('input[name=\"layTableCheckbox\"][lay-filter=\"layTableAllChoose\"]').prop({\r\n 'checked': isAll,\r\n indeterminate: isIndeterminate\r\n }));\r\n\r\n return isAll\r\n }\r\n\r\n // 更新父节点的选中状态\r\n Class.prototype.updateParentCheckStatus = function (dataP, checked) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var checkName = table.config.checkName;\r\n var childrenKey = treeOptions.customName.children;\r\n\r\n var dataRet = [];\r\n dataP[LAY_CHECKBOX_HALF] = false; // 先设置为非半选,是否为半选又下面逻辑判断\r\n if (checked === true) {\r\n // 为真需要判断子节点的情况\r\n if (!dataP[childrenKey].length) {\r\n checked = false;\r\n } else {\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (!item[checkName]) { // 只要有一个子节点为false\r\n checked = false;\r\n dataP[LAY_CHECKBOX_HALF] = true;\r\n return true; // 跳出循环\r\n }\r\n });\r\n }\r\n } else if (checked === false) {\r\n // 判断是否为半选\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (item[checkName] || item[LAY_CHECKBOX_HALF]) { // 只要有一个子节点为选中或者半选状态\r\n dataP[LAY_CHECKBOX_HALF] = true;\r\n return true;\r\n }\r\n });\r\n } else {\r\n // 状态不确定的情况下根据子节点的信息\r\n checked = false;\r\n var checkedNum = 0;\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (item[checkName]) {\r\n checkedNum++;\r\n }\r\n });\r\n checked = dataP[childrenKey].length ? dataP[childrenKey].length === checkedNum : dataP[checkName]; // 如果没有子节点保留原来的状态;\r\n dataP[LAY_CHECKBOX_HALF] = checked ? false : checkedNum > 0;\r\n }\r\n dataP[checkName] = checked;\r\n dataRet.push($.extend({}, dataP));\r\n if (dataP[LAY_PARENT_INDEX]) {\r\n dataRet = dataRet.concat(that.updateParentCheckStatus(table.cache[tableId][dataP[LAY_PARENT_INDEX]], checked));\r\n }\r\n return dataRet\r\n }\r\n\r\n var checkNode = function (trElem, checked, callbackFlag) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableView = options.elem.next();\r\n var inputElem = (trElem.length ? trElem : tableView).find('.laytable-cell-radio, .laytable-cell-checkbox').children('input').last();\r\n // 判断是单选还是多选 不应该同时存在radio列和checkbox列\r\n var isRadio = inputElem.attr('type') === 'radio';\r\n\r\n if (callbackFlag) {\r\n var triggerEvent = function () {\r\n var fn = function (event) {\r\n layui.stope(event);\r\n }\r\n inputElem.parent().on('click', fn); // 添加临时的阻止冒泡事件\r\n inputElem.next().click();\r\n inputElem.parent().off('click', fn);\r\n }\r\n // 如果需要触发事件可以简单的触发对应节点的click事件\r\n if (isRadio) {\r\n // 单选只能选中或者切换其他的不能取消选中 后续看是否有支持的必要 todo\r\n if (checked && !inputElem.prop('checked')) {\r\n triggerEvent()\r\n }\r\n } else {\r\n if (layui.type(checked) === 'boolean') {\r\n if (inputElem.prop('checked') !== checked) {\r\n // 如果当前已经是想要修改的状态则不做处理\r\n triggerEvent()\r\n }\r\n } else {\r\n // 切换\r\n triggerEvent()\r\n }\r\n }\r\n } else {\r\n var trData = that.getNodeDataByIndex(trElem.attr('data-index'));\r\n var checkName = table.config.checkName;\r\n // 如果不触发事件应该有一个方法可以更新数据以及页面的节点\r\n if (isRadio) {\r\n if (!trData) {\r\n // 单选必须是一个存在的行\r\n return;\r\n }\r\n var statusChecked = {};\r\n statusChecked[checkName] = false;\r\n // that.updateStatus(null, statusChecked); // 取消其他的选中状态\r\n that.updateStatus(null, function (d) {\r\n if (d[checkName]) {\r\n var radioElem = tableView.find('tr[lay-data-index=\"' + d[LAY_DATA_INDEX] + '\"] input[type=\"radio\"][lay-type=\"layTableRadio\"]');\r\n d[checkName] = false;\r\n\r\n // 取消当前选中行背景色\r\n that.setRowCheckedClass(radioElem.closest('tr'), false);\r\n form.render(radioElem.prop('checked', false));\r\n }\r\n }); // 取消其他的选中状态\r\n trData[checkName] = checked;\r\n\r\n that.setRowCheckedClass(trElem, checked); // 标记当前选中行背景色\r\n that.setRowCheckedClass(trElem.siblings(), false); // 取消其他行背景色\r\n\r\n form.render(trElem.find('input[type=\"radio\"][lay-type=\"layTableRadio\"]').prop('checked', checked));\r\n } else {\r\n // 切换只能用到单条,全选到这一步的时候应该是一个确定的状态\r\n checked = layui.type(checked) === 'boolean' ? checked : !trData[checkName]; // 状态切换,如果遇到不可操作的节点待处理 todo\r\n // 全选或者是一个父节点,将子节点的状态同步为当前节点的状态\r\n // 处理不可操作的信息\r\n var checkedStatusFn = function (d) {\r\n if (!d[table.config.disabledName]) { // 节点不可操作的不处理\r\n d[checkName] = checked;\r\n d[LAY_CHECKBOX_HALF] = false;\r\n }\r\n }\r\n\r\n var trs = that.updateStatus(trData ? [trData] : table.cache[tableId], checkedStatusFn, trData && ['parent', 'none'].indexOf(treeOptions.data.cascade) !== -1);\r\n var checkboxElem = tableView.find(trs.map(function (value) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"] input[name=\"layTableCheckbox\"]:not(:disabled)';\r\n }).join(','));\r\n\r\n that.setRowCheckedClass(checkboxElem.closest('tr'), checked); // 标记当前选中行背景色\r\n form.render(checkboxElem.prop({checked: checked, indeterminate: false}));\r\n\r\n var trDataP;\r\n\r\n // 更新父节点以及更上层节点的状态\r\n if (trData && trData[LAY_PARENT_INDEX]) {\r\n // 找到父节点,然后判断父节点的子节点是否全部选中\r\n trDataP = that.getNodeDataByIndex(trData[LAY_PARENT_INDEX]);\r\n }\r\n\r\n return that.updateCheckStatus(trDataP, checked);\r\n }\r\n }\r\n }\r\n\r\n // 多选\r\n treeTable.on('checkbox', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n var that = getThisTable(tableId);\r\n var checked = obj.checked;\r\n updateObjParams(obj)\r\n obj.isAll = checkNode.call(that, obj.tr, checked);\r\n }\r\n })\r\n\r\n /**\r\n * 设置行选中状态\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {Object|String} opts.index 节点下标\r\n * @param {Boolean} opts.checked 选中或取消\r\n * @param {Boolean} [opts.callbackFlag] 是否触发事件回调\r\n * */\r\n treeTable.setRowChecked = function (id, opts) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var tableView = options.elem.next();\r\n\r\n opts = opts || {};\r\n\r\n var node = opts.index;\r\n var checked = opts.checked;\r\n var callbackFlag = opts.callbackFlag;\r\n\r\n var dataIndex = layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX];\r\n // 判断是否在当前页面中\r\n var nodeData = that.getNodeDataByIndex(dataIndex);\r\n if (!nodeData) {\r\n // 目前只能处理当前页的数据\r\n return;\r\n }\r\n\r\n var collectNeedExpandNodeIndex = function(index){\r\n needExpandIndex.push(index);\r\n var trElem = tableView.find('tr[lay-data-index=\"' + index + '\"]');\r\n if (!trElem.length) {\r\n var nodeData = that.getNodeDataByIndex(index);\r\n var parentIndex = nodeData[LAY_PARENT_INDEX];\r\n parentIndex && collectNeedExpandNodeIndex(parentIndex);\r\n }\r\n }\r\n\r\n // 判断是否展开过\r\n var trElem = tableView.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n if (!trElem.length) {\r\n var parentIndex = nodeData[LAY_PARENT_INDEX];\r\n var needExpandIndex = [];\r\n collectNeedExpandNodeIndex(parentIndex);\r\n // 如果还没有展开没有渲染的要先渲染出来\r\n layui.each(needExpandIndex.reverse(),function(index, nodeIndex){\r\n treeTable.expandNode(id, {\r\n index: nodeIndex,\r\n expandFlag: true\r\n });\r\n })\r\n trElem = tableView.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n }\r\n checkNode.call(that, trElem, checked, callbackFlag);\r\n }\r\n\r\n treeTable.checkAllNodes = function (id, checked) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var tableView = options.elem.next();\r\n\r\n checkNode.call(that, tableView.find('tr[data-index=\"NONE\"]'), !!checked)\r\n }\r\n\r\n /**\r\n * 获得数据\r\n * @param {String} id 表格id\r\n * @param {Boolean} [isSimpleData] 是否返回平铺结构的数据\r\n * @return {Array} 表格数据\r\n * */\r\n treeTable.getData = function (id, isSimpleData) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n var tableData = [];\r\n layui.each($.extend(true, [], table.cache[id] || []), function (index, item) {\r\n // 遍历排除掉临时的数据\r\n tableData.push(item);\r\n })\r\n return isSimpleData ? that.treeToFlat(tableData) : tableData;\r\n }\r\n\r\n /**\r\n * 重新加载子节点\r\n * @param {String} id 表格id\r\n * @param {String} dataIndex 父节点的dataIndex\r\n * */\r\n treeTable.reloadAsyncNode = function (id, dataIndex) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n if (!treeOptions.async || !treeOptions.async.enable) {\r\n return;\r\n }\r\n var dataP = that.getNodeDataByIndex(dataIndex);\r\n if (!dataP) {\r\n return;\r\n }\r\n dataP[LAY_HAS_EXPANDED] = false;\r\n dataP[LAY_EXPAND] = false;\r\n dataP[LAY_ASYNC_STATUS] = false;\r\n layui.each(that.treeToFlat(dataP[treeOptions.customName.children]).reverse(), function (i1, item1) {\r\n treeTable.removeNode(id, item1[LAY_DATA_INDEX]);\r\n })\r\n // 重新展开\r\n treeTable.expandNode(id, {\r\n index: dataIndex,\r\n expandFlag: true,\r\n callbackFlag: true,\r\n })\r\n }\r\n\r\n /**\r\n * 通过数据id获取节点对象\r\n * */\r\n treeTable.getNodeById = function (id, dataId) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n return that.getNodeById(dataId);\r\n }\r\n\r\n /**\r\n * 根据自定义规则搜索节点数据\r\n * @param {String} id 树表id\r\n * @param {Function} filter 自定义过滤器函数\r\n * @param {Object} [opts]\r\n * @param {Boolean} [opts.isSingle] 是否只找到第一个\r\n * @param {Object} [opts.parentNode] 在指定在某个父节点下的子节点中搜索\r\n * @return {Object} 节点对象\r\n * */\r\n treeTable.getNodesByFilter = function (id, filter, opts) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n var options = that.getOptions();\r\n\r\n opts = opts || {};\r\n var isSingle = opts.isSingle;\r\n var parentNode = opts.parentNode;\r\n var dataP = parentNode && parentNode.data;\r\n // dataP = dataP || table.cache[id];\r\n var nodes = that.treeToFlat(dataP ? (dataP[options.tree.customName.children] || []) : table.cache[id]).filter(filter);\r\n var nodesResult = [];\r\n layui.each(nodes, function (i1, item1) {\r\n nodesResult.push(that.getNodeByIndex(item1[LAY_DATA_INDEX]));\r\n if (isSingle) {\r\n return true;\r\n }\r\n });\r\n\r\n return nodesResult;\r\n }\r\n\r\n\r\n // 记录所有实例\r\n thisTreeTable.that = {}; // 记录所有实例对象\r\n // thisTreeTable.config = {}; // 记录所有实例配置项\r\n\r\n // 重载\r\n treeTable.reload = function (id, options, deep, type) {\r\n // deep = deep !== false; // 默认采用深拷贝\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n that.reload(options, deep, type);\r\n return thisTreeTable.call(that);\r\n };\r\n\r\n // 核心入口\r\n treeTable.render = function (options) {\r\n var inst = new Class(options);\r\n return thisTreeTable.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, treeTable);\r\n});\r\n","/**\r\n * tree 树组件\r\n */\r\n\r\nlayui.define('form', function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var form = layui.form;\r\n var layer = layui.layer;\r\n \r\n // 模块名\r\n var MOD_NAME = 'tree';\r\n\r\n // 外部接口\r\n var tree = {\r\n config: {\r\n customName: { // 自定义 data 字段名\r\n id: 'id',\r\n title: 'title',\r\n children: 'children'\r\n }\r\n },\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || that.index;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n thisModule.config[id] = options; // 记录当前实例配置项\r\n \r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n getChecked: function(){\r\n return that.getChecked.call(that);\r\n },\r\n setChecked: function(id){// 设置值\r\n return that.setChecked.call(that, id);\r\n }\r\n }\r\n };\r\n \r\n // 获取当前实例配置项\r\n var getThisModuleConfig = function(id){\r\n var config = thisModule.config[id];\r\n if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');\r\n return config || null;\r\n }\r\n\r\n // 字符常量\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var NONE = 'layui-none';\r\n var DISABLED = 'layui-disabled';\r\n \r\n var ELEM_VIEW = 'layui-tree';\r\n var ELEM_SET = 'layui-tree-set';\r\n var ICON_CLICK = 'layui-tree-iconClick';\r\n var ICON_ADD = 'layui-icon-addition';\r\n var ICON_SUB = 'layui-icon-subtraction';\r\n var ELEM_ENTRY = 'layui-tree-entry';\r\n var ELEM_MAIN = 'layui-tree-main';\r\n var ELEM_TEXT = 'layui-tree-txt';\r\n var ELEM_PACK = 'layui-tree-pack';\r\n var ELEM_SPREAD = 'layui-tree-spread';\r\n var ELEM_LINE_SHORT = 'layui-tree-setLineShort';\r\n var ELEM_SHOW = 'layui-tree-showLine';\r\n var ELEM_EXTEND = 'layui-tree-lineExtend';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++tree.index;\r\n that.config = $.extend({}, that.config, tree.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n data: [], // 数据\r\n \r\n showCheckbox: false, // 是否显示复选框\r\n showLine: true, // 是否开启连接线\r\n accordion: false, // 是否开启手风琴模式\r\n onlyIconControl: false, // 是否仅允许节点左侧图标控制展开收缩\r\n isJump: false, // 是否允许点击节点时弹出新窗口跳转\r\n edit: false, // 是否开启节点的操作图标\r\n \r\n text: {\r\n defaultNodeName: '未命名', // 节点默认名称\r\n none: '无数据' // 数据为空时的文本提示\r\n }\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n \r\n layui.each(options, function(key, item){\r\n if(layui.type(item) === 'array') delete that.config[key];\r\n });\r\n \r\n that.config = $.extend(true, {}, that.config, options);\r\n that.render();\r\n };\r\n\r\n // 主体渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, tree.config.customName, options.customName);\r\n \r\n that.checkids = [];\r\n\r\n var temp = $('
                          ');\r\n that.tree(temp);\r\n\r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return;\r\n\r\n // 索引\r\n that.key = options.id || that.index;\r\n \r\n // 插入组件结构\r\n that.elem = temp;\r\n that.elemNone = $('
                          '+ options.text.none +'
                          ');\r\n othis.html(that.elem);\r\n\r\n if(that.elem.find('.layui-tree-set').length == 0){\r\n return that.elem.append(that.elemNone);\r\n };\r\n \r\n // 复选框渲染\r\n if(options.showCheckbox){\r\n that.renderForm('checkbox');\r\n };\r\n\r\n that.elem.find('.layui-tree-set').each(function(){\r\n var othis = $(this);\r\n // 最外层\r\n if(!othis.parent('.layui-tree-pack')[0]){\r\n othis.addClass('layui-tree-setHide');\r\n };\r\n\r\n // 没有下一个节点 上一层父级有延伸线\r\n if(!othis.next()[0] && othis.parents('.layui-tree-pack').eq(1).hasClass('layui-tree-lineExtend')){\r\n othis.addClass(ELEM_LINE_SHORT);\r\n };\r\n \r\n // 没有下一个节点 外层最后一个\r\n if(!othis.next()[0] && !othis.parents('.layui-tree-set').eq(0).next()[0]){\r\n othis.addClass(ELEM_LINE_SHORT);\r\n };\r\n });\r\n\r\n that.events();\r\n };\r\n \r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n form.render(type, 'LAY-tree-'+ this.index);\r\n };\r\n\r\n // 节点解析\r\n Class.prototype.tree = function(elem, children){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var data = children || options.data;\r\n\r\n // 遍历数据\r\n layui.each(data, function(index, item){\r\n var hasChild = item[customName.children] && item[customName.children].length > 0;\r\n var packDiv = $('
                          ');\r\n var entryDiv = $(['
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n // 箭头\r\n ,function(){\r\n if(options.showLine){\r\n if(hasChild){\r\n return '';\r\n }else{\r\n return '';\r\n };\r\n }else{\r\n return '';\r\n };\r\n }()\r\n \r\n // 复选框\r\n ,function(){\r\n return options.showCheckbox ? '' : '';\r\n }()\r\n \r\n // 节点\r\n ,function(){\r\n if(options.isJump && item.href){\r\n return ''+ (item[customName.title] || item.label || options.text.defaultNodeName) +'';\r\n }else{\r\n return ''+ (item[customName.title] || item.label || options.text.defaultNodeName) +'';\r\n }\r\n }()\r\n ,'
                          '\r\n \r\n // 节点操作图标\r\n ,function(){\r\n if(!options.edit) return '';\r\n \r\n var editIcon = {\r\n add: ''\r\n ,update: ''\r\n ,del: ''\r\n }, arr = ['
                          '];\r\n \r\n if(options.edit === true){\r\n options.edit = ['update', 'del']\r\n }\r\n \r\n if(typeof options.edit === 'object'){\r\n layui.each(options.edit, function(i, val){\r\n arr.push(editIcon[val] || '')\r\n });\r\n return arr.join('') + '
                          ';\r\n }\r\n }()\r\n ,'
                          '].join(''));\r\n\r\n // 如果有子节点,则递归继续生成树\r\n if(hasChild){\r\n entryDiv.append(packDiv);\r\n that.tree(packDiv, item[customName.children]);\r\n };\r\n\r\n elem.append(entryDiv);\r\n \r\n // 若有前置节点,前置节点加连接线\r\n if(entryDiv.prev('.'+ELEM_SET)[0]){\r\n entryDiv.prev().children('.layui-tree-pack').addClass('layui-tree-showLine');\r\n };\r\n \r\n // 若无子节点,则父节点加延伸线\r\n if(!hasChild){\r\n entryDiv.parent('.layui-tree-pack').addClass('layui-tree-lineExtend');\r\n };\r\n\r\n // 展开节点操作\r\n that.spread(entryDiv, item);\r\n \r\n // 选择框\r\n if(options.showCheckbox){\r\n item.checked && that.checkids.push(item[customName.id]);\r\n that.checkClick(entryDiv, item);\r\n }\r\n \r\n // 操作节点\r\n options.edit && that.operate(entryDiv, item);\r\n \r\n });\r\n };\r\n\r\n // 展开节点\r\n Class.prototype.spread = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var entry = elem.children('.'+ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n var elemCheckbox = elemMain.find('input[same=\"layuiTreeCheck\"]');\r\n var elemIcon = entry.find('.'+ ICON_CLICK);\r\n var elemText = entry.find('.'+ ELEM_TEXT);\r\n var touchOpen = options.onlyIconControl ? elemIcon : elemMain; // 判断展开通过节点还是箭头图标\r\n var state = '';\r\n \r\n // 展开收缩\r\n touchOpen.on('click', function(e){\r\n var packCont = elem.children('.'+ELEM_PACK)\r\n ,iconClick = touchOpen.children('.layui-icon')[0] ? touchOpen.children('.layui-icon') : touchOpen.find('.layui-tree-icon').children('.layui-icon');\r\n\r\n // 若没有子节点\r\n if(!packCont[0]){\r\n state = 'normal';\r\n }else{\r\n if(elem.hasClass(ELEM_SPREAD)){\r\n elem.removeClass(ELEM_SPREAD);\r\n packCont.slideUp(200);\r\n iconClick.removeClass(ICON_SUB).addClass(ICON_ADD); \r\n that.updateFieldValue(item, 'spread', false);\r\n }else{\r\n elem.addClass(ELEM_SPREAD);\r\n packCont.slideDown(200);\r\n iconClick.addClass(ICON_SUB).removeClass(ICON_ADD);\r\n that.updateFieldValue(item, 'spread', true);\r\n\r\n // 是否手风琴\r\n if(options.accordion){\r\n var sibls = elem.siblings('.'+ELEM_SET);\r\n sibls.removeClass(ELEM_SPREAD);\r\n sibls.children('.'+ELEM_PACK).slideUp(200);\r\n sibls.find('.layui-tree-icon').children('.layui-icon').removeClass(ICON_SUB).addClass(ICON_ADD);\r\n };\r\n };\r\n };\r\n });\r\n \r\n // 点击回调\r\n elemText.on('click', function(){\r\n var othis = $(this);\r\n \r\n // 判断是否禁用状态\r\n if(othis.hasClass(DISABLED)) return;\r\n \r\n // 判断展开收缩状态\r\n if(elem.hasClass(ELEM_SPREAD)){\r\n state = options.onlyIconControl ? 'open' : 'close';\r\n } else {\r\n state = options.onlyIconControl ? 'close' : 'open';\r\n }\r\n\r\n // 获取选中状态\r\n if(elemCheckbox[0]){\r\n that.updateFieldValue(item, 'checked', elemCheckbox.prop('checked'));\r\n }\r\n \r\n // 点击产生的回调\r\n options.click && options.click({\r\n elem: elem,\r\n state: state,\r\n data: item\r\n });\r\n });\r\n };\r\n\r\n // 更新数据源 checked,spread 字段值\r\n Class.prototype.updateFieldValue = function(obj, field, value){\r\n if(field in obj) obj[field] = value;\r\n };\r\n \r\n // 计算复选框选中状态\r\n Class.prototype.setCheckbox = function(elem, item, elemCheckbox){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var checked = elemCheckbox.prop('checked');\r\n \r\n if(elemCheckbox.prop('disabled')) return;\r\n\r\n // 同步子节点选中状态\r\n if(typeof item[customName.children] === 'object' || elem.find('.'+ELEM_PACK)[0]){\r\n var elemCheckboxs = elem.find('.'+ ELEM_PACK).find('input[same=\"layuiTreeCheck\"]');\r\n elemCheckboxs.each(function(index){\r\n if(this.disabled) return; // 不可点击则跳过\r\n var children = item[customName.children][index];\r\n if(children) that.updateFieldValue(children, 'checked', checked);\r\n that.updateFieldValue(this, 'checked', checked);\r\n });\r\n };\r\n\r\n // 同步父节点选中状态\r\n var setParentsChecked = function(thisNodeElem){\r\n // 若无父节点,则终止递归\r\n if(!thisNodeElem.parents('.'+ ELEM_SET)[0]) return;\r\n\r\n var state;\r\n var parentPack = thisNodeElem.parent('.'+ ELEM_PACK);\r\n var parentNodeElem = parentPack.parent();\r\n var parentCheckbox = parentPack.prev().find('input[same=\"layuiTreeCheck\"]');\r\n\r\n // 如果子节点有任意一条选中,则父节点为选中状态\r\n if(checked){\r\n parentCheckbox.prop('checked', checked);\r\n } else { // 如果当前节点取消选中,则根据计算“兄弟和子孙”节点选中状态,来同步父节点选中状态\r\n parentPack.find('input[same=\"layuiTreeCheck\"]').each(function(){\r\n if(this.checked){\r\n state = true;\r\n }\r\n });\r\n \r\n // 如果兄弟子孙节点全部未选中,则父节点也应为非选中状态\r\n state || parentCheckbox.prop('checked', false);\r\n }\r\n \r\n // 向父节点递归\r\n setParentsChecked(parentNodeElem);\r\n };\r\n \r\n setParentsChecked(elem);\r\n\r\n that.renderForm('checkbox');\r\n };\r\n \r\n // 复选框选择\r\n Class.prototype.checkClick = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var entry = elem.children('.'+ ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n \r\n \r\n \r\n // 点击复选框\r\n elemMain.on('click', 'input[same=\"layuiTreeCheck\"]+', function(e){\r\n layui.stope(e); // 阻止点击节点事件\r\n\r\n var elemCheckbox = $(this).prev();\r\n var checked = elemCheckbox.prop('checked');\r\n \r\n if(elemCheckbox.prop('disabled')) return;\r\n \r\n that.setCheckbox(elem, item, elemCheckbox);\r\n that.updateFieldValue(item, 'checked', checked);\r\n\r\n // 复选框点击产生的回调\r\n options.oncheck && options.oncheck({\r\n elem: elem,\r\n checked: checked,\r\n data: item\r\n });\r\n });\r\n };\r\n\r\n // 节点操作\r\n Class.prototype.operate = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var entry = elem.children('.'+ ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n\r\n entry.children('.layui-tree-btnGroup').on('click', '.layui-icon', function(e){\r\n layui.stope(e); // 阻止节点操作\r\n\r\n var type = $(this).data(\"type\");\r\n var packCont = elem.children('.'+ELEM_PACK);\r\n var returnObj = {\r\n data: item,\r\n type: type,\r\n elem:elem\r\n };\r\n // 增加\r\n if(type == 'add'){\r\n // 若节点本身无子节点\r\n if(!packCont[0]){\r\n // 若开启连接线,更改图标样式\r\n if(options.showLine){\r\n elemMain.find('.'+ICON_CLICK).addClass('layui-tree-icon');\r\n elemMain.find('.'+ICON_CLICK).children('.layui-icon').addClass(ICON_ADD).removeClass('layui-icon-file');\r\n // 若未开启连接线,显示箭头\r\n } else {\r\n elemMain.find('.layui-tree-iconArrow').removeClass(HIDE);\r\n };\r\n // 节点添加子节点容器\r\n elem.append('
                          ');\r\n };\r\n\r\n // 新增节点\r\n var key = options.operate && options.operate(returnObj);\r\n var obj = {};\r\n\r\n obj[customName.title] = options.text.defaultNodeName;\r\n obj[customName.id] = key;\r\n that.tree(elem.children('.'+ELEM_PACK), [obj]);\r\n \r\n // 放在新增后面,因为要对元素进行操作\r\n if(options.showLine){\r\n // 节点本身无子节点\r\n if(!packCont[0]){\r\n // 遍历兄弟节点,判断兄弟节点是否有子节点\r\n var siblings = elem.siblings('.'+ELEM_SET)\r\n var num = 1;\r\n var parentPack = elem.parent('.'+ELEM_PACK);\r\n\r\n layui.each(siblings, function(index, i){\r\n if(!$(i).children('.'+ELEM_PACK)[0]){\r\n num = 0;\r\n };\r\n });\r\n\r\n // 若兄弟节点都有子节点\r\n if(num == 1){\r\n // 兄弟节点添加连接线\r\n siblings.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n siblings.children('.'+ELEM_PACK).children('.'+ELEM_SET).removeClass(ELEM_LINE_SHORT);\r\n elem.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n // 父级移除延伸线\r\n parentPack.removeClass(ELEM_EXTEND);\r\n // 同层节点最后一个更改线的状态\r\n parentPack.children('.'+ELEM_SET).last().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n } else {\r\n elem.children('.'+ELEM_PACK).children('.'+ELEM_SET).addClass(ELEM_LINE_SHORT);\r\n };\r\n } else {\r\n // 添加延伸线\r\n if(!packCont.hasClass(ELEM_EXTEND)){\r\n packCont.addClass(ELEM_EXTEND);\r\n };\r\n // 子节点添加延伸线\r\n elem.find('.'+ELEM_PACK).each(function(){\r\n $(this).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n });\r\n // 如果前一个节点有延伸线\r\n if(packCont.children('.'+ELEM_SET).last().prev().hasClass(ELEM_LINE_SHORT)){\r\n packCont.children('.'+ELEM_SET).last().prev().removeClass(ELEM_LINE_SHORT);\r\n }else{\r\n // 若之前的没有,说明处于连接状态\r\n packCont.children('.'+ELEM_SET).last().removeClass(ELEM_LINE_SHORT);\r\n };\r\n // 若是最外层,要始终保持相连的状态\r\n if(!elem.parent('.'+ELEM_PACK)[0] && elem.next()[0]){\r\n packCont.children('.'+ELEM_SET).last().removeClass(ELEM_LINE_SHORT);\r\n };\r\n };\r\n };\r\n if(!options.showCheckbox) return;\r\n // 若开启复选框,同步新增节点状态\r\n if(elemMain.find('input[same=\"layuiTreeCheck\"]')[0].checked){\r\n var packLast = elem.children('.'+ELEM_PACK).children('.'+ELEM_SET).last();\r\n packLast.find('input[same=\"layuiTreeCheck\"]')[0].checked = true;\r\n };\r\n that.renderForm('checkbox');\r\n \r\n // 修改\r\n } else if(type == 'update') {\r\n var text = elemMain.children('.'+ ELEM_TEXT).html();\r\n elemMain.children('.'+ ELEM_TEXT).html('');\r\n // 添加输入框,覆盖在文字上方\r\n elemMain.append('');\r\n // 获取焦点\r\n elemMain.children('.layui-tree-editInput').val(text).focus();\r\n // 嵌入文字移除输入框\r\n var getVal = function(input){\r\n var textNew = input.val().trim();\r\n textNew = textNew ? textNew : options.text.defaultNodeName;\r\n input.remove();\r\n elemMain.children('.'+ ELEM_TEXT).html(textNew);\r\n \r\n // 同步数据\r\n returnObj.data[customName.title] = textNew;\r\n \r\n // 节点修改的回调\r\n options.operate && options.operate(returnObj);\r\n };\r\n // 失去焦点\r\n elemMain.children('.layui-tree-editInput').blur(function(){\r\n getVal($(this));\r\n });\r\n // 回车\r\n elemMain.children('.layui-tree-editInput').on('keydown', function(e){\r\n if(e.keyCode === 13){\r\n e.preventDefault();\r\n getVal($(this));\r\n };\r\n });\r\n\r\n // 删除\r\n } else {\r\n layer.confirm('确认删除该节点 \"'+ (item[customName.title] || '') +'\" 吗?', function(index){\r\n options.operate && options.operate(returnObj); // 节点删除的回调\r\n returnObj.status = 'remove'; // 标注节点删除\r\n \r\n layer.close(index);\r\n \r\n // 若删除最后一个,显示空数据提示\r\n if(!elem.prev('.'+ELEM_SET)[0] && !elem.next('.'+ELEM_SET)[0] && !elem.parent('.'+ELEM_PACK)[0]){\r\n elem.remove();\r\n that.elem.append(that.elemNone);\r\n return;\r\n };\r\n // 若有兄弟节点\r\n if(elem.siblings('.'+ELEM_SET).children('.'+ELEM_ENTRY)[0]){\r\n // 若开启复选框\r\n if(options.showCheckbox){\r\n // 若开启复选框,进行下步操作\r\n var elemDel = function(elem){\r\n // 若无父结点,则不执行\r\n if(!elem.parents('.'+ELEM_SET)[0]) return;\r\n var siblingTree = elem.siblings('.'+ELEM_SET).children('.'+ELEM_ENTRY);\r\n var parentTree = elem.parent('.'+ELEM_PACK).prev();\r\n var checkState = parentTree.find('input[same=\"layuiTreeCheck\"]')[0];\r\n var state = 1;\r\n var num = 0;\r\n\r\n // 若父节点未勾选\r\n if(checkState.checked == false){\r\n // 遍历兄弟节点\r\n siblingTree.each(function(i, item1){\r\n var input = $(item1).find('input[same=\"layuiTreeCheck\"]')[0]\r\n if(input.checked == false && !input.disabled){\r\n state = 0;\r\n };\r\n // 判断是否全为不可勾选框\r\n if(!input.disabled){\r\n num = 1;\r\n };\r\n });\r\n // 若有可勾选选择框并且已勾选\r\n if(state == 1 && num == 1){\r\n // 勾选父节点\r\n checkState.checked = true;\r\n that.renderForm('checkbox');\r\n // 向上遍历祖先节点\r\n elemDel(parentTree.parent('.'+ELEM_SET));\r\n };\r\n };\r\n };\r\n elemDel(elem);\r\n };\r\n // 若开启连接线\r\n if(options.showLine){\r\n // 遍历兄弟节点,判断兄弟节点是否有子节点\r\n var siblings = elem.siblings('.'+ELEM_SET);\r\n var num = 1;\r\n var parentPack = elem.parent('.'+ELEM_PACK);\r\n\r\n layui.each(siblings, function(index, i){\r\n if(!$(i).children('.'+ELEM_PACK)[0]){\r\n num = 0;\r\n };\r\n });\r\n // 若兄弟节点都有子节点\r\n if(num == 1){\r\n // 若节点本身无子节点\r\n if(!packCont[0]){\r\n // 父级去除延伸线,因为此时子节点里没有空节点\r\n parentPack.removeClass(ELEM_EXTEND);\r\n siblings.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n siblings.children('.'+ELEM_PACK).children('.'+ELEM_SET).removeClass(ELEM_LINE_SHORT);\r\n };\r\n // 若为最后一个节点\r\n if(!elem.next()[0]){\r\n elem.prev().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n }else{\r\n parentPack.children('.'+ELEM_SET).last().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n };\r\n // 若为最外层最后一个节点,去除前一个结点的连接线\r\n if(!elem.next()[0] && !elem.parents('.'+ELEM_SET)[1] && !elem.parents('.'+ELEM_SET).eq(0).next()[0]){\r\n elem.prev('.'+ELEM_SET).addClass(ELEM_LINE_SHORT);\r\n };\r\n }else{\r\n // 若为最后一个节点且有延伸线\r\n if(!elem.next()[0] && elem.hasClass(ELEM_LINE_SHORT)){\r\n elem.prev().addClass(ELEM_LINE_SHORT);\r\n };\r\n };\r\n };\r\n \r\n } else {\r\n // 若无兄弟节点\r\n var prevDiv = elem.parent('.'+ELEM_PACK).prev();\r\n // 若开启了连接线\r\n if(options.showLine){\r\n prevDiv.find('.'+ICON_CLICK).removeClass('layui-tree-icon');\r\n prevDiv.find('.'+ICON_CLICK).children('.layui-icon').removeClass(ICON_SUB).addClass('layui-icon-file');\r\n // 父节点所在层添加延伸线\r\n var pare = prevDiv.parents('.'+ELEM_PACK).eq(0);\r\n pare.addClass(ELEM_EXTEND);\r\n\r\n // 兄弟节点最后子节点添加延伸线\r\n pare.children('.'+ELEM_SET).each(function(){\r\n $(this).children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n });\r\n }else{\r\n // 父节点隐藏箭头\r\n prevDiv.find('.layui-tree-iconArrow').addClass(HIDE);\r\n };\r\n // 移除展开属性\r\n elem.parents('.'+ELEM_SET).eq(0).removeClass(ELEM_SPREAD);\r\n // 移除节点容器\r\n elem.parent('.'+ELEM_PACK).remove();\r\n };\r\n\r\n elem.remove();\r\n });\r\n \r\n };\r\n });\r\n };\r\n\r\n // 部分事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n var checkWarp = that.elem.find('.layui-tree-checkedFirst');\r\n \r\n // 初始选中\r\n that.setChecked(that.checkids);\r\n \r\n // 搜索\r\n that.elem.find('.layui-tree-search').on('keyup', function(){\r\n var input = $(this);\r\n var val = input.val();\r\n var pack = input.nextAll();\r\n var arr = [];\r\n\r\n // 遍历所有的值\r\n pack.find('.'+ ELEM_TEXT).each(function(){\r\n var entry = $(this).parents('.'+ELEM_ENTRY);\r\n // 若值匹配,加一个类以作标识\r\n if($(this).html().indexOf(val) != -1){\r\n arr.push($(this).parent());\r\n \r\n var select = function(div){\r\n div.addClass('layui-tree-searchShow');\r\n // 向上父节点渲染\r\n if(div.parent('.'+ELEM_PACK)[0]){\r\n select(div.parent('.'+ELEM_PACK).parent('.'+ELEM_SET));\r\n };\r\n };\r\n select(entry.parent('.'+ELEM_SET));\r\n };\r\n });\r\n\r\n // 根据标志剔除\r\n pack.find('.'+ELEM_ENTRY).each(function(){\r\n var parent = $(this).parent('.'+ELEM_SET);\r\n if(!parent.hasClass('layui-tree-searchShow')){\r\n parent.addClass(HIDE);\r\n };\r\n });\r\n if(pack.find('.layui-tree-searchShow').length == 0){\r\n that.elem.append(that.elemNone);\r\n };\r\n\r\n // 节点过滤的回调\r\n options.onsearch && options.onsearch({\r\n elem: arr\r\n });\r\n });\r\n\r\n // 还原搜索初始状态\r\n that.elem.find('.layui-tree-search').on('keydown', function(){\r\n $(this).nextAll().find('.'+ELEM_ENTRY).each(function(){\r\n var parent = $(this).parent('.'+ELEM_SET);\r\n parent.removeClass('layui-tree-searchShow '+ HIDE);\r\n });\r\n if($('.layui-tree-emptyText')[0]) $('.layui-tree-emptyText').remove();\r\n });\r\n };\r\n\r\n // 得到选中节点\r\n Class.prototype.getChecked = function(){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var checkId = [];\r\n var checkData = [];\r\n \r\n // 遍历节点找到选中索引\r\n that.elem.find('.layui-form-checked').each(function(){\r\n checkId.push($(this).prev()[0].value);\r\n });\r\n \r\n // 遍历节点\r\n var eachNodes = function(data, checkNode){\r\n layui.each(data, function(index, item){\r\n layui.each(checkId, function(index2, item2){\r\n if(item[customName.id] == item2){\r\n that.updateFieldValue(item, 'checked', true);\r\n\r\n var cloneItem = $.extend({}, item);\r\n delete cloneItem[customName.children];\r\n\r\n checkNode.push(cloneItem);\r\n \r\n if(item[customName.children]){\r\n cloneItem[customName.children] = [];\r\n eachNodes(item[customName.children], cloneItem[customName.children]);\r\n }\r\n return true\r\n }\r\n });\r\n });\r\n };\r\n\r\n eachNodes($.extend({}, options.data), checkData);\r\n \r\n return checkData;\r\n };\r\n\r\n // 设置选中节点\r\n Class.prototype.setChecked = function(checkedId){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 初始选中\r\n that.elem.find('.'+ELEM_SET).each(function(i, item){\r\n var thisId = $(this).data('id');\r\n var input = $(item).children('.'+ELEM_ENTRY).find('input[same=\"layuiTreeCheck\"]');\r\n var reInput = input.next();\r\n \r\n // 若返回数字\r\n if(typeof checkedId === 'number'){\r\n if(thisId.toString() == checkedId.toString()){\r\n if(!input[0].checked){\r\n reInput.click();\r\n };\r\n return false;\r\n };\r\n } \r\n // 若返回数组\r\n else if(typeof checkedId === 'object'){\r\n layui.each(checkedId, function(index, value){\r\n if(value.toString() == thisId.toString() && !input[0].checked){\r\n reInput.click();\r\n return true;\r\n }\r\n });\r\n };\r\n });\r\n };\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n thisModule.config = {}; // 记录所有实例配置项\r\n \r\n // 重载实例\r\n tree.reload = function(id, options){\r\n var that = thisModule.that[id];\r\n that.reload(options);\r\n \r\n return thisModule.call(that);\r\n };\r\n \r\n // 获得选中的节点数据\r\n tree.getChecked = function(id){\r\n var that = thisModule.that[id];\r\n return that.getChecked();\r\n };\r\n \r\n // 设置选中节点\r\n tree.setChecked = function(id, checkedId){\r\n var that = thisModule.that[id];\r\n return that.setChecked(checkedId);\r\n };\r\n \r\n // 核心入口\r\n tree.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, tree);\r\n})","/**\r\n * transfer 穿梭框组件\r\n */\r\n\r\nlayui.define(['laytpl', 'form'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var laytpl = layui.laytpl;\r\n var form = layui.form;\r\n \r\n // 模块名\r\n var MOD_NAME = 'transfer';\r\n\r\n // 外部接口\r\n var transfer = {\r\n config: {},\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || that.index;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n thisModule.config[id] = options; // 记录当前实例配置项\r\n \r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n // 获取右侧数据\r\n getData: function(){\r\n return that.getData.call(that);\r\n }\r\n }\r\n };\r\n \r\n // 获取当前实例配置项\r\n var getThisModuleConfig = function(id){\r\n var config = thisModule.config[id];\r\n if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');\r\n return config || null;\r\n };\r\n\r\n // 字符常量\r\n var ELEM = 'layui-transfer';\r\n var HIDE = 'layui-hide'; \r\n var DISABLED = 'layui-btn-disabled';\r\n var NONE = 'layui-none';\r\n var ELEM_BOX = 'layui-transfer-box';\r\n var ELEM_HEADER = 'layui-transfer-header';\r\n var ELEM_SEARCH = 'layui-transfer-search';\r\n var ELEM_ACTIVE = 'layui-transfer-active';\r\n var ELEM_DATA = 'layui-transfer-data';\r\n \r\n // 穿梭框模板\r\n var TPL_BOX = function(obj){\r\n obj = obj || {};\r\n return ['
                          '\r\n ,'
                          '\r\n ,''\r\n ,'
                          '\r\n ,'{{# if(d.data.showSearch){ }}'\r\n ,'
                          '\r\n ,''\r\n ,''\r\n ,'
                          '\r\n ,'{{# } }}'\r\n ,'
                            '\r\n ,'
                            '].join('');\r\n };\r\n \r\n // 主模板\r\n var TPL_MAIN = ['
                            '\r\n ,TPL_BOX({\r\n index: 0\r\n ,checkAllName: 'layTransferLeftCheckAll'\r\n })\r\n ,'
                            '\r\n ,''\r\n ,''\r\n ,'
                            '\r\n ,TPL_BOX({\r\n index: 1\r\n ,checkAllName: 'layTransferRightCheckAll'\r\n })\r\n ,'
                            '].join('');\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++transfer.index;\r\n that.config = $.extend({}, that.config, transfer.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n title: ['列表一', '列表二'],\r\n width: 200,\r\n height: 360,\r\n data: [], // 数据源\r\n value: [], // 选中的数据\r\n showSearch: false, // 是否开启搜索\r\n id: '', // 唯一索引,默认自增 index\r\n text: {\r\n none: '无数据',\r\n searchNone: '无匹配数据'\r\n }\r\n };\r\n \r\n //重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.render();\r\n };\r\n\r\n //渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n //解析模板\r\n var thisElem = that.elem = $(laytpl(TPL_MAIN, {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n }).render({\r\n data: options\r\n ,index: that.index //索引\r\n }));\r\n \r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return;\r\n \r\n //初始化属性\r\n options.data = options.data || [];\r\n options.value = options.value || [];\r\n \r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n that.key = options.id;\r\n \r\n //插入组件结构\r\n othis.html(that.elem);\r\n \r\n //各级容器\r\n that.layBox = that.elem.find('.'+ ELEM_BOX)\r\n that.layHeader = that.elem.find('.'+ ELEM_HEADER)\r\n that.laySearch = that.elem.find('.'+ ELEM_SEARCH)\r\n that.layData = thisElem.find('.'+ ELEM_DATA);\r\n that.layBtn = thisElem.find('.'+ ELEM_ACTIVE + ' .layui-btn');\r\n \r\n //初始化尺寸\r\n that.layBox.css({\r\n width: options.width\r\n ,height: options.height\r\n });\r\n that.layData.css({\r\n height: function(){\r\n var height = options.height - that.layHeader.outerHeight();\r\n if(options.showSearch){\r\n height -= that.laySearch.outerHeight();\r\n }\r\n return height - 2;\r\n }()\r\n });\r\n \r\n that.renderData(); //渲染数据\r\n that.events(); //事件\r\n };\r\n \r\n // 渲染数据\r\n Class.prototype.renderData = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 左右穿梭框差异数据\r\n var arr = [{\r\n checkName: 'layTransferLeftCheck',\r\n views: []\r\n }, {\r\n checkName: 'layTransferRightCheck',\r\n views: []\r\n }];\r\n \r\n // 解析格式\r\n that.parseData(function(item){ \r\n // 标注为 selected 的为右边的数据\r\n var _index = item.selected ? 1 : 0\r\n var listElem = ['
                          • ',\r\n '',\r\n '
                          • '].join('');\r\n // 按照 options.value 顺序排列右侧数据\r\n if(_index){\r\n layui.each(options.value, function(i, v){\r\n if(v == item.value && item.selected){\r\n arr[_index].views[i] = listElem;\r\n }\r\n });\r\n } else {\r\n arr[_index].views.push(listElem);\r\n }\r\n delete item.selected;\r\n });\r\n \r\n that.layData.eq(0).html(arr[0].views.join(''));\r\n that.layData.eq(1).html(arr[1].views.join(''));\r\n \r\n that.renderCheckBtn();\r\n };\r\n \r\n //渲染表单\r\n Class.prototype.renderForm = function(type){\r\n form.render(type, 'LAY-transfer-'+ this.index);\r\n };\r\n \r\n //同步复选框和按钮状态\r\n Class.prototype.renderCheckBtn = function(obj){\r\n var that = this\r\n ,options = that.config;\r\n \r\n obj = obj || {};\r\n \r\n that.layBox.each(function(_index){\r\n var othis = $(this)\r\n ,thisDataElem = othis.find('.'+ ELEM_DATA)\r\n ,allElemCheckbox = othis.find('.'+ ELEM_HEADER).find('input[type=\"checkbox\"]')\r\n ,listElemCheckbox = thisDataElem.find('input[type=\"checkbox\"]');\r\n \r\n //同步复选框和按钮状态\r\n var nums = 0\r\n ,haveChecked = false;\r\n listElemCheckbox.each(function(){\r\n var isHide = $(this).data('hide');\r\n if(this.checked || this.disabled || isHide){\r\n nums++;\r\n }\r\n if(this.checked && !isHide){\r\n haveChecked = true;\r\n }\r\n });\r\n \r\n allElemCheckbox.prop('checked', haveChecked && nums === listElemCheckbox.length); //全选复选框状态\r\n that.layBtn.eq(_index)[haveChecked ? 'removeClass' : 'addClass'](DISABLED); //对应的按钮状态\r\n \r\n //无数据视图\r\n if(!obj.stopNone){\r\n var isNone = thisDataElem.children('li:not(.'+ HIDE +')').length\r\n that.noneView(thisDataElem, isNone ? '' : options.text.none);\r\n }\r\n });\r\n \r\n that.renderForm('checkbox');\r\n };\r\n \r\n //无数据视图\r\n Class.prototype.noneView = function(thisDataElem, text){\r\n var createNoneElem = $('

                            '+ (text || '') +'

                            ');\r\n if(thisDataElem.find('.'+ NONE)[0]){\r\n thisDataElem.find('.'+ NONE).remove();\r\n }\r\n text.replace(/\\s/g, '') && thisDataElem.append(createNoneElem);\r\n };\r\n \r\n //同步 value 属性值\r\n Class.prototype.setValue = function(){\r\n var that = this\r\n ,options = that.config\r\n ,arr = [];\r\n that.layBox.eq(1).find('.'+ ELEM_DATA +' input[type=\"checkbox\"]').each(function(){\r\n var isHide = $(this).data('hide');\r\n isHide || arr.push(this.value);\r\n });\r\n options.value = arr;\r\n \r\n return that;\r\n };\r\n\r\n //解析数据\r\n Class.prototype.parseData = function(callback){\r\n var that = this\r\n ,options = that.config\r\n ,newData = [];\r\n \r\n layui.each(options.data, function(index, item){\r\n //解析格式\r\n item = (typeof options.parseData === 'function' \r\n ? options.parseData(item) \r\n : item) || item;\r\n \r\n newData.push(item = $.extend({}, item))\r\n \r\n layui.each(options.value, function(index2, item2){\r\n if(item2 == item.value){\r\n item.selected = true;\r\n }\r\n });\r\n callback && callback(item);\r\n });\r\n \r\n options.data = newData;\r\n return that;\r\n };\r\n \r\n //获得右侧面板数据\r\n Class.prototype.getData = function(value){\r\n var that = this\r\n ,options = that.config\r\n ,selectedData = [];\r\n \r\n that.setValue();\r\n \r\n layui.each(value || options.value, function(index, item){\r\n layui.each(options.data, function(index2, item2){\r\n delete item2.selected;\r\n if(item == item2.value){\r\n selectedData.push(item2);\r\n };\r\n });\r\n });\r\n return selectedData;\r\n };\r\n\r\n //执行穿梭\r\n Class.prototype.transfer = function (_index, elem) {\r\n var that = this\r\n ,options = that.config\r\n ,thisBoxElem = that.layBox.eq(_index)\r\n ,arr = []\r\n\r\n if (!elem) {\r\n //通过按钮触发找到选中的进行移动\r\n thisBoxElem.each(function(_index){\r\n var othis = $(this)\r\n ,thisDataElem = othis.find('.'+ ELEM_DATA);\r\n\r\n thisDataElem.children('li').each(function(){\r\n var thisList = $(this)\r\n ,thisElemCheckbox = thisList.find('input[type=\"checkbox\"]')\r\n ,isHide = thisElemCheckbox.data('hide');\r\n\r\n if(thisElemCheckbox[0].checked && !isHide){\r\n thisElemCheckbox[0].checked = false;\r\n thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());\r\n thisList.remove();\r\n\r\n //记录当前穿梭的数据\r\n arr.push(thisElemCheckbox[0].value);\r\n }\r\n\r\n that.setValue();\r\n });\r\n });\r\n } else {\r\n //双击单条记录移动\r\n var thisList = elem\r\n ,thisElemCheckbox = thisList.find('input[type=\"checkbox\"]')\r\n\r\n thisElemCheckbox[0].checked = false;\r\n thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());\r\n thisList.remove();\r\n\r\n //记录当前穿梭的数据\r\n arr.push(thisElemCheckbox[0].value);\r\n\r\n that.setValue();\r\n }\r\n\r\n that.renderCheckBtn();\r\n\r\n //穿梭时,如果另外一个框正在搜索,则触发匹配\r\n var siblingInput = thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_SEARCH +' input')\r\n siblingInput.val() === '' || siblingInput.trigger('keyup');\r\n\r\n //穿梭时的回调\r\n options.onchange && options.onchange(that.getData(arr), _index);\r\n }\r\n\r\n //事件\r\n Class.prototype.events = function(){\r\n var that = this\r\n ,options = that.config;\r\n \r\n //左右复选框\r\n that.elem.on('click', 'input[lay-filter=\"layTransferCheckbox\"]+', function(){ \r\n var thisElemCheckbox = $(this).prev()\r\n ,checked = thisElemCheckbox[0].checked\r\n ,thisDataElem = thisElemCheckbox.parents('.'+ ELEM_BOX).eq(0).find('.'+ ELEM_DATA);\r\n \r\n if(thisElemCheckbox[0].disabled) return;\r\n \r\n //判断是否全选\r\n if(thisElemCheckbox.attr('lay-type') === 'all'){\r\n thisDataElem.find('input[type=\"checkbox\"]').each(function(){\r\n if(this.disabled) return;\r\n this.checked = checked;\r\n });\r\n }\r\n\r\n setTimeout(function () {\r\n that.renderCheckBtn({stopNone: true});\r\n }, 0)\r\n });\r\n\r\n // 双击穿梭\r\n that.elem.on('dblclick', '.' + ELEM_DATA + '>li', function(event){\r\n var elemThis = $(this)\r\n ,thisElemCheckbox = elemThis.children('input[type=\"checkbox\"]')\r\n ,thisDataElem = elemThis.parent()\r\n ,thisBoxElem = thisDataElem.parent()\r\n\r\n if(thisElemCheckbox[0].disabled) return;\r\n\r\n that.transfer(thisBoxElem.data('index'), elemThis);\r\n })\r\n\r\n // 穿梭按钮事件\r\n that.layBtn.on('click', function(){\r\n var othis = $(this)\r\n ,_index = othis.data('index')\r\n if(othis.hasClass(DISABLED)) return;\r\n\r\n that.transfer(_index);\r\n });\r\n \r\n //搜索\r\n that.laySearch.find('input').on('keyup', function(){\r\n var value = this.value;\r\n var thisDataElem = $(this).parents('.'+ ELEM_SEARCH).eq(0).siblings('.'+ ELEM_DATA);\r\n var thisListElem = thisDataElem.children('li');\r\n\r\n thisListElem.each(function(){\r\n var thisList = $(this);\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n var title = thisElemCheckbox[0].title;\r\n\r\n // 是否区分大小写\r\n if(options.showSearch !== 'cs'){\r\n title = title.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n\r\n var isMatch = title.indexOf(value) !== -1;\r\n\r\n thisList[isMatch ? 'removeClass': 'addClass'](HIDE);\r\n thisElemCheckbox.data('hide', isMatch ? false : true);\r\n });\r\n\r\n that.renderCheckBtn();\r\n \r\n //无匹配数据视图\r\n var isNone = thisListElem.length === thisDataElem.children('li.'+ HIDE).length;\r\n that.noneView(thisDataElem, isNone ? options.text.searchNone : '');\r\n });\r\n };\r\n \r\n //记录所有实例\r\n thisModule.that = {}; //记录所有实例对象\r\n thisModule.config = {}; //记录所有实例配置项\r\n \r\n //重载实例\r\n transfer.reload = function(id, options){\r\n var that = thisModule.that[id];\r\n that.reload(options);\r\n \r\n return thisModule.call(that);\r\n };\r\n \r\n //获得选中的数据(右侧面板)\r\n transfer.getData = function(id){\r\n var that = thisModule.that[id];\r\n return that.getData();\r\n };\r\n\r\n //核心入口\r\n transfer.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, transfer);\r\n});\r\n","/**\r\n * carousel 轮播模块\r\n * MIT Licensed \r\n */\r\n \r\nlayui.define(['jquery', 'lay'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n\r\n // 外部接口\r\n var carousel = {\r\n config: {}, // 全局配置项\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n \r\n // 字符常量\r\n var MOD_NAME = 'carousel';\r\n var ELEM = '.layui-carousel';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled'\r\n \r\n var ELEM_ITEM = '>*[carousel-item]>*';\r\n var ELEM_LEFT = 'layui-carousel-left';\r\n var ELEM_RIGHT = 'layui-carousel-right';\r\n var ELEM_PREV = 'layui-carousel-prev';\r\n var ELEM_NEXT = 'layui-carousel-next';\r\n var ELEM_ARROW = 'layui-carousel-arrow';\r\n var ELEM_IND = 'layui-carousel-ind';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, carousel.config, options);\r\n that.render();\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n width: '600px',\r\n height: '280px',\r\n full: false, // 是否全屏\r\n arrow: 'hover', // 切换箭头默认显示状态:hover/always/none\r\n indicator: 'inside', // 指示器位置:inside/outside/none\r\n autoplay: true, // 是否自动切换\r\n interval: 3000, // 自动切换的时间间隔,不能低于800ms\r\n anim: '', // 动画类型:default/updown/fade\r\n trigger: 'click', // 指示器的触发方式:click/hover\r\n index: 0 // 初始开始的索引\r\n };\r\n \r\n // 轮播渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n carousel.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n options.elem = $(options.elem);\r\n if(!options.elem[0]) return;\r\n that.elemItem = options.elem.find(ELEM_ITEM);\r\n \r\n if(options.index < 0) options.index = 0;\r\n if(options.index >= that.elemItem.length) options.index = that.elemItem.length - 1;\r\n if(options.interval < 800) options.interval = 800;\r\n\r\n // 是否全屏模式\r\n if(options.full){\r\n options.elem.css({\r\n position: 'fixed',\r\n width: '100%',\r\n height: '100%',\r\n zIndex: 9999\r\n });\r\n } else {\r\n options.elem.css({\r\n width: options.width,\r\n height: options.height\r\n });\r\n }\r\n \r\n options.elem.attr('lay-anim', options.anim);\r\n \r\n // 初始焦点状态\r\n that.elemItem.eq(options.index).addClass(THIS);\r\n\r\n // 指示器等动作\r\n if(that.elemItem.length <= 1) return;\r\n\r\n that.indicator();\r\n that.arrow();\r\n that.autoplay();\r\n that.events();\r\n };\r\n \r\n // 重置轮播\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n clearInterval(that.timer);\r\n that.config = $.extend({}, that.config, options);\r\n that.render();\r\n };\r\n \r\n // 获取上一个等待条目的索引\r\n Class.prototype.prevIndex = function(){\r\n var that = this;\r\n var options = that.config;\r\n var prevIndex = options.index - 1;\r\n\r\n if(prevIndex < 0){\r\n prevIndex = that.elemItem.length - 1;\r\n }\r\n\r\n return prevIndex;\r\n };\r\n \r\n // 获取下一个等待条目的索引\r\n Class.prototype.nextIndex = function(){\r\n var that = this;\r\n var options = that.config;\r\n var nextIndex = options.index + 1;\r\n\r\n if(nextIndex >= that.elemItem.length){\r\n nextIndex = 0;\r\n }\r\n\r\n return nextIndex;\r\n };\r\n \r\n // 索引递增\r\n Class.prototype.addIndex = function(num){\r\n var that = this;\r\n var options = that.config;\r\n \r\n num = num || 1;\r\n options.index = options.index + num;\r\n \r\n // index 不能超过轮播总数量\r\n if(options.index >= that.elemItem.length){\r\n options.index = 0;\r\n }\r\n };\r\n \r\n // 索引递减\r\n Class.prototype.subIndex = function(num){\r\n var that = this;\r\n var options = that.config;\r\n \r\n num = num || 1;\r\n options.index = options.index - num;\r\n \r\n // index 不能超过轮播总数量\r\n if(options.index < 0){\r\n options.index = that.elemItem.length - 1;\r\n }\r\n };\r\n \r\n // 自动轮播\r\n Class.prototype.autoplay = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n if(!options.autoplay) return;\r\n clearInterval(that.timer);\r\n \r\n that.timer = setInterval(function(){\r\n that.slide();\r\n }, options.interval);\r\n };\r\n \r\n // 箭头\r\n Class.prototype.arrow = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 模板\r\n var tplArrow = $([\r\n '',\r\n ''\r\n ].join(''));\r\n \r\n // 预设基础属性\r\n options.elem.attr('lay-arrow', options.arrow);\r\n \r\n // 避免重复插入\r\n if(options.elem.find('.'+ELEM_ARROW)[0]){\r\n options.elem.find('.'+ELEM_ARROW).remove();\r\n }\r\n options.elem.append(tplArrow);\r\n \r\n // 事件\r\n tplArrow.on('click', function(){\r\n var othis = $(this);\r\n var type = othis.attr('lay-type')\r\n that.slide(type);\r\n });\r\n };\r\n\r\n // 跳转到特定下标\r\n Class.prototype.goto = function(index){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(index > options.index){\r\n that.slide('add', index - options.index);\r\n } else if(index < options.index){\r\n that.slide('sub', options.index - index);\r\n }\r\n }\r\n \r\n // 指示器\r\n Class.prototype.indicator = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 模板\r\n var tplInd = that.elemInd = $(['
                              ',\r\n function(){\r\n var li = [];\r\n layui.each(that.elemItem, function(index){\r\n li.push('');\r\n });\r\n return li.join('');\r\n }(),\r\n '
                            '].join(''));\r\n \r\n // 预设基础属性\r\n options.elem.attr('lay-indicator', options.indicator);\r\n \r\n // 避免重复插入\r\n if(options.elem.find('.'+ELEM_IND)[0]){\r\n options.elem.find('.'+ELEM_IND).remove();\r\n }\r\n options.elem.append(tplInd);\r\n \r\n if(options.anim === 'updown'){\r\n tplInd.css('margin-top', -(tplInd.height()/2));\r\n }\r\n \r\n // 事件\r\n tplInd.find('li').on(options.trigger === 'hover' ? 'mouseover' : options.trigger, function(){\r\n that.goto($(this).index());\r\n });\r\n };\r\n \r\n // 滑动切换\r\n Class.prototype.slide = function(type, num){\r\n var that = this;\r\n var elemItem = that.elemItem;\r\n var options = that.config;\r\n var thisIndex = options.index;\r\n var filter = options.elem.attr('lay-filter');\r\n \r\n if(that.haveSlide) return;\r\n \r\n // 滑动方向\r\n if(type === 'sub'){\r\n that.subIndex(num);\r\n elemItem.eq(options.index).addClass(ELEM_PREV);\r\n setTimeout(function(){\r\n elemItem.eq(thisIndex).addClass(ELEM_RIGHT);\r\n elemItem.eq(options.index).addClass(ELEM_RIGHT);\r\n }, 50);\r\n } else { // 默认递增滑\r\n that.addIndex(num);\r\n elemItem.eq(options.index).addClass(ELEM_NEXT);\r\n setTimeout(function(){\r\n elemItem.eq(thisIndex).addClass(ELEM_LEFT);\r\n elemItem.eq(options.index).addClass(ELEM_LEFT);\r\n }, 50); \r\n }\r\n \r\n // 移除过渡类\r\n setTimeout(function(){\r\n elemItem.removeClass(THIS + ' ' + ELEM_PREV + ' ' + ELEM_NEXT + ' ' + ELEM_LEFT + ' ' + ELEM_RIGHT);\r\n elemItem.eq(options.index).addClass(THIS);\r\n that.haveSlide = false; // 解锁\r\n }, 350);\r\n \r\n // 指示器焦点\r\n that.elemInd.find('li').eq(options.index).addClass(THIS)\r\n .siblings().removeClass(THIS);\r\n \r\n that.haveSlide = true;\r\n \r\n // 回调返回的参数\r\n var params = {\r\n index: options.index,\r\n prevIndex: thisIndex,\r\n item: elemItem.eq(options.index)\r\n };\r\n \r\n typeof options.change === 'function' && options.change(params);\r\n layui.event.call(this, MOD_NAME, 'change('+ filter +')', params);\r\n };\r\n \r\n // 事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n if(options.elem.data('haveEvents')) return;\r\n \r\n // 移入移出容器\r\n options.elem.on('mouseenter', function(){\r\n if (that.config.autoplay === 'always') return;\r\n clearInterval(that.timer);\r\n }).on('mouseleave', function(){\r\n if (that.config.autoplay === 'always') return;\r\n that.autoplay();\r\n });\r\n \r\n options.elem.data('haveEvents', true);\r\n };\r\n \r\n // 核心入口\r\n carousel.render = function(options){\r\n return new Class(options);\r\n };\r\n \r\n exports(MOD_NAME, carousel);\r\n});\r\n\r\n \r\n","/**\r\n * rate 评分评星组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'],function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.jquery;\r\n var lay = layui.lay;\r\n\r\n // 外部接口\r\n var rate = {\r\n config: {},\r\n index: layui.rate ? (layui.rate.index + 10000) : 0,\r\n\r\n //设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n //事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n }\r\n\r\n // 操作当前实例\r\n var thisRate = function () {\r\n var that = this;\r\n var options = that.config;\r\n\r\n return {\r\n setvalue: function (value) {\r\n that.setvalue.call(that, value);\r\n },\r\n config: options\r\n }\r\n };\r\n\r\n //字符常量\r\n var MOD_NAME = 'rate';\r\n var ELEM_VIEW = 'layui-rate';\r\n var ICON_RATE = 'layui-icon-rate';\r\n var ICON_RATE_SOLID = 'layui-icon-rate-solid';\r\n var ICON_RATE_HALF = 'layui-icon-rate-half';\r\n var ICON_SOLID_HALF = 'layui-icon-rate-solid layui-icon-rate-half';\r\n var ICON_SOLID_RATE = 'layui-icon-rate-solid layui-icon-rate';\r\n var ICON_HALF_RATE = 'layui-icon-rate layui-icon-rate-half';\r\n\r\n //构造器\r\n var Class = function (options) {\r\n var that = this;\r\n that.index = ++rate.index;\r\n that.config = $.extend({}, that.config, rate.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n length: 5, //初始长度\r\n text: false, //是否显示评分等级\r\n readonly: false, //是否只读\r\n half: false, //是否可以半星\r\n value: 0, //星星选中个数\r\n theme: '' //主题颜色\r\n };\r\n\r\n //评分渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n rate.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n // 自定义主题\r\n var style = options.theme ? ('style=\"color: '+ options.theme + ';\"') : '';\r\n\r\n options.elem = $(options.elem);\r\n\r\n //最大值不能大于总长度\r\n if(options.value > options.length){\r\n options.value = options.length;\r\n }\r\n\r\n //如果没有选择半星的属性,却给了小数的数值,统一向上或向下取整\r\n if(parseInt(options.value) !== options.value){\r\n if(!options.half){\r\n options.value = (Math.ceil(options.value) - options.value) < 0.5 ? Math.ceil(options.value): Math.floor(options.value)\r\n }\r\n }\r\n\r\n //组件模板\r\n var temp = '
                              ';\r\n for(var i = 1;i <= options.length;i++){\r\n var item = '
                            • Math.floor(options.value)?ICON_RATE:ICON_RATE_SOLID)\r\n + '\" '+ style +'>
                            • ';\r\n\r\n if(options.half&&parseInt(options.value) !== options.value&&i == Math.ceil(options.value)){\r\n temp = temp + '
                            • ';\r\n }else{\r\n temp = temp +item;\r\n }\r\n }\r\n temp += '
                            ' + (options.text ? (''+ options.value + '星') : '') + '';\r\n\r\n //开始插入替代元素\r\n var othis = options.elem;\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n\r\n //生成替代元素\r\n hasRender[0] && hasRender.remove(); //如果已经渲染,则Rerender\r\n\r\n that.elemTemp = $(temp);\r\n\r\n options.span = that.elemTemp.next('span');\r\n\r\n options.setText && options.setText(options.value);\r\n\r\n othis.html(that.elemTemp);\r\n\r\n othis.addClass(\"layui-inline\");\r\n\r\n //如果不是只读,那么进行触控事件\r\n if(!options.readonly) that.action();\r\n\r\n };\r\n\r\n //评分重置\r\n Class.prototype.setvalue = function(value){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.value = value ;\r\n that.render();\r\n };\r\n\r\n //li触控事件\r\n Class.prototype.action = function(){\r\n var that = this;\r\n var options = that.config;\r\n var _ul = that.elemTemp;\r\n var wide = _ul.find(\"i\").width();\r\n\r\n _ul.children(\"li\").each(function(index){\r\n var ind = index + 1;\r\n var othis = $(this);\r\n\r\n //点击\r\n othis.on('click', function(e){\r\n //将当前点击li的索引值赋给value\r\n options.value = ind;\r\n if(options.half){\r\n //获取鼠标在li上的位置\r\n var x = e.pageX - $(this).offset().left;\r\n if(x <= wide / 2){\r\n options.value = options.value - 0.5;\r\n }\r\n }\r\n\r\n if(options.text) _ul.next(\"span\").text(options.value + \"星\");\r\n\r\n options.choose && options.choose(options.value);\r\n options.setText && options.setText(options.value);\r\n });\r\n\r\n //移入\r\n othis.on('mousemove', function(e){\r\n _ul.find(\"i\").each(function(){\r\n $(this).addClass(ICON_RATE).removeClass(ICON_SOLID_HALF)\r\n });\r\n _ul.find(\"i:lt(\" + ind + \")\").each(function(){\r\n $(this).addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE)\r\n });\r\n // 如果设置可选半星,那么判断鼠标相对li的位置\r\n if(options.half){\r\n var x = e.pageX - $(this).offset().left;\r\n if(x <= wide / 2){\r\n othis.children(\"i\").addClass(ICON_RATE_HALF).removeClass(ICON_RATE_SOLID)\r\n }\r\n }\r\n })\r\n\r\n //移出\r\n othis.on('mouseleave', function(){\r\n _ul.find(\"i\").each(function(){\r\n $(this).addClass(ICON_RATE).removeClass(ICON_SOLID_HALF)\r\n });\r\n _ul.find(\"i:lt(\" + Math.floor(options.value) + \")\").each(function(){\r\n $(this).addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE)\r\n });\r\n //如果设置可选半星,根据分数判断是否有半星\r\n if(options.half){\r\n if(parseInt(options.value) !== options.value){\r\n _ul.children(\"li:eq(\" + Math.floor(options.value) + \")\").children(\"i\").addClass(ICON_RATE_HALF).removeClass(ICON_SOLID_RATE)\r\n }\r\n }\r\n })\r\n\r\n })\r\n };\r\n\r\n //事件处理\r\n Class.prototype.events = function () {\r\n var that = this;\r\n //var options = that.config;\r\n };\r\n\r\n //核心入口\r\n rate.render = function(options){\r\n var inst = new Class(options);\r\n return thisRate.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, rate);\r\n})\r\n","/**\r\n * flow 流加载组件\r\n */\r\n\r\n\r\nlayui.define('jquery', function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$, Flow = function(options){}\r\n ,ELEM_MORE = 'layui-flow-more'\r\n ,ELEM_LOAD = '';\r\n\r\n //主方法\r\n Flow.prototype.load = function(options){\r\n var that = this, page = 0, lock, isOver, lazyimg, timer;\r\n options = options || {};\r\n\r\n var elem = $(options.elem); if(!elem[0]) return;\r\n var scrollElem = $(options.scrollElem || document); //滚动条所在元素\r\n var mb = options.mb || 50; //与底部的临界距离\r\n var isAuto = 'isAuto' in options ? options.isAuto : true; //是否自动滚动加载\r\n var end = options.end || '没有更多了'; //“末页”显示文案\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //加载更多\r\n var ELEM_TEXT = '加载更多'\r\n ,more = $('');\r\n\r\n if(!elem.find('.layui-flow-more')[0]){\r\n elem.append(more);\r\n }\r\n\r\n //加载下一个元素\r\n var next = function(html, over){\r\n html = $(html);\r\n more.before(html);\r\n over = over == 0 ? true : null;\r\n over ? more.html(end) : more.find('a').html(ELEM_TEXT);\r\n isOver = over;\r\n lock = null;\r\n lazyimg && lazyimg();\r\n };\r\n\r\n //触发请求\r\n var done = function(){\r\n lock = true;\r\n more.find('a').html(ELEM_LOAD);\r\n typeof options.done === 'function' && options.done(++page, next);\r\n };\r\n\r\n done();\r\n\r\n //不自动滚动加载\r\n more.find('a').on('click', function(){\r\n var othis = $(this);\r\n if(isOver) return;\r\n lock || done();\r\n });\r\n\r\n //如果允许图片懒加载\r\n if(options.isLazyimg){\r\n lazyimg = that.lazyimg({\r\n elem: options.elem + ' img'\r\n ,scrollElem: options.scrollElem\r\n });\r\n }\r\n\r\n if(!isAuto) return that;\r\n\r\n scrollElem.on('scroll', function(){\r\n var othis = $(this), top = othis.scrollTop();\r\n\r\n if(timer) clearTimeout(timer);\r\n if(isOver || !elem.width()) return; //如果已经结束,或者元素处于隐藏状态,则不执行滚动加载\r\n\r\n timer = setTimeout(function(){\r\n //计算滚动所在容器的可视高度\r\n var height = notDocument ? othis.height() : $(window).height();\r\n\r\n //计算滚动所在容器的实际高度\r\n var scrollHeight = notDocument\r\n ? othis.prop('scrollHeight')\r\n : document.documentElement.scrollHeight;\r\n\r\n //临界点\r\n if(scrollHeight - top - height <= mb){\r\n lock || done();\r\n }\r\n }, 100);\r\n });\r\n\r\n return that;\r\n };\r\n\r\n //图片懒加载\r\n Flow.prototype.lazyimg = function(options){\r\n var that = this, index = 0, haveScroll;\r\n options = options || {};\r\n\r\n var scrollElem = $(options.scrollElem || document); //滚动条所在元素\r\n var elem = options.elem || 'img';\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //显示图片\r\n var show = function(item, height){\r\n var start = scrollElem.scrollTop(), end = start + height;\r\n var elemTop = notDocument ? function(){\r\n return item.offset().top - scrollElem.offset().top + start;\r\n }() : item.offset().top;\r\n\r\n /* 始终只加载在当前屏范围内的图片 */\r\n if(elemTop >= start && elemTop <= end){\r\n if(item.attr('lay-src')){\r\n var src = item.attr('lay-src');\r\n layui.img(src, function(){\r\n var next = that.lazyimg.elem.eq(index);\r\n item.attr('src', src).removeAttr('lay-src');\r\n\r\n /* 当前图片加载就绪后,检测下一个图片是否在当前屏 */\r\n next[0] && render(next);\r\n index++;\r\n }, function(){\r\n var next = that.lazyimg.elem.eq(index);\r\n item.removeAttr('lay-src');\r\n });\r\n }\r\n }\r\n }, render = function(othis, scroll){\r\n\r\n //计算滚动所在容器的可视高度\r\n var height = notDocument ? (scroll||scrollElem).height() : $(window).height();\r\n var start = scrollElem.scrollTop(), end = start + height;\r\n\r\n that.lazyimg.elem = $(elem);\r\n\r\n if(othis){\r\n show(othis, height);\r\n } else {\r\n //计算未加载过的图片\r\n for(var i = 0; i < that.lazyimg.elem.length; i++){\r\n var item = that.lazyimg.elem.eq(i), elemTop = notDocument ? function(){\r\n return item.offset().top - scrollElem.offset().top + start;\r\n }() : item.offset().top;\r\n\r\n show(item, height);\r\n index = i;\r\n\r\n //如果图片的top坐标,超出了当前屏,则终止后续图片的遍历\r\n if(elemTop > end) break;\r\n }\r\n }\r\n };\r\n\r\n render();\r\n\r\n if(!haveScroll){\r\n var timer;\r\n scrollElem.on('scroll', function(){\r\n var othis = $(this);\r\n if(timer) clearTimeout(timer)\r\n timer = setTimeout(function(){\r\n render(null, othis);\r\n }, 50);\r\n });\r\n haveScroll = true;\r\n }\r\n return render;\r\n };\r\n\r\n //暴露接口\r\n exports('flow', new Flow());\r\n});\r\n","/**\r\n * code\r\n * Code 预览组件\r\n */\r\n\r\nlayui.define(['lay', 'util', 'element', 'form'], function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var util = layui.util;\r\n var element = layui.element;\r\n var form = layui.form;\r\n var layer = layui.layer;\r\n var hint = layui.hint();\r\n\r\n // 常量\r\n var CONST = {\r\n ELEM_VIEW: 'layui-code-view',\r\n ELEM_TAB: 'layui-tab',\r\n ELEM_HEADER: 'layui-code-header',\r\n ELEM_FULL: 'layui-code-full',\r\n ELEM_PREVIEW: 'layui-code-preview',\r\n ELEM_ITEM: 'layui-code-item',\r\n ELEM_SHOW: 'layui-show',\r\n ELEM_LINE: 'layui-code-line',\r\n ELEM_LINE_NUM: 'layui-code-line-number',\r\n ELEM_LN_MODE: 'layui-code-ln-mode',\r\n CDDE_DATA_CLASS: 'LayuiCodeDataClass',\r\n LINE_RAW_WIDTH: 45, // 行号初始宽度,需与 css 保持一致\r\n };\r\n\r\n // 默认参数项\r\n var config = {\r\n elem: '', // 元素选择器\r\n about: '', // 代码栏右上角信息\r\n ln: true, // 代码区域是否显示行号\r\n header: false, // 是否显示代码栏头部区域\r\n encode: true, // 是否对 code 进行编码(若开启预览,则强制开启)\r\n copy: true, // 是否开启代码区域复制功能图标\r\n // 默认文本\r\n text: {\r\n code: util.escape(''),\r\n preview: 'Preview',\r\n },\r\n wordWrap: true, // 是否自动换行\r\n lang: 'text', // 指定语言类型\r\n highlighter: false, // 是否开启语法高亮,'hljs','prism','shiki'\r\n langMarker: false, // 代码区域是否显示语言类型标记\r\n };\r\n\r\n // 初始索引\r\n var codeIndex = layui.code ? (layui.code.index + 10000) : 0;\r\n\r\n // 去除尾部空格\r\n var trimEnd = function(str){\r\n return String(str).replace(/\\s+$/, '');\r\n }\r\n // 保留首行缩进\r\n var trim = function(str){\r\n return trimEnd(str).replace(/^\\n|\\n$/, '');\r\n };\r\n\r\n // export api\r\n exports('code', function(options, mode){\r\n options = $.extend(true, {}, config, options);\r\n\r\n // 返回对象\r\n var ret = {\r\n config: options,\r\n reload: function(opts) { // 重载\r\n layui.code(this.updateOptions(opts));\r\n },\r\n updateOptions: function(opts) { // 更新属性(选项)\r\n opts = opts || {};\r\n delete opts.elem;\r\n return $.extend(true, options, opts);\r\n },\r\n reloadCode: function(opts) { // 仅重载 code\r\n layui.code(this.updateOptions(opts), 'reloadCode');\r\n }\r\n };\r\n\r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n // 是否正向渲染\r\n layui.each(options.obverse ? elem : elem.get().reverse(), function(){\r\n layui.code($.extend({}, options, {\r\n elem: this\r\n }), mode);\r\n });\r\n return ret;\r\n }\r\n\r\n // 目标元素是否存在\r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return ret;\r\n\r\n // 合并属性上的参数,并兼容旧版本属性写法 lay-*\r\n $.extend(true, options, lay.options(othis[0]), function(obj){\r\n var attrs = ['title', 'height', 'encode', 'skin', 'about'];\r\n layui.each(attrs, function(i, attr){\r\n var value = othis.attr('lay-'+ attr);\r\n if(typeof value === 'string'){\r\n obj[attr] = value;\r\n }\r\n })\r\n return obj;\r\n }({}));\r\n\r\n // codeRender 需要关闭编码\r\n // 未使用 codeRender 时若开启了预览,则强制开启编码\r\n options.encode = (options.encode || options.preview) && !options.codeRender;\r\n\r\n // 获得初始 code\r\n options.code = options.code || function(){\r\n var arr = [];\r\n var textarea = othis.children('textarea');\r\n\r\n // 若内容放置在 textarea 中\r\n textarea.each(function(){\r\n arr.push(trim(this.value));\r\n });\r\n\r\n // 内容直接放置在元素外层\r\n if(arr.length === 0){\r\n arr.push(trim(othis.html()));\r\n }\r\n\r\n return arr.join('');\r\n }();\r\n\r\n // 创建 code 行结构\r\n var createCode = function(html) {\r\n // codeRender\r\n if(typeof options.codeRender === 'function') {\r\n html = options.codeRender(String(html), options);\r\n }\r\n\r\n // code 行\r\n var lines = String(html).split(/\\r?\\n/g);\r\n\r\n // 包裹 code 行结构\r\n html = $.map(lines, function(line, num) {\r\n return [\r\n '
                            ',\r\n (\r\n options.ln ? [\r\n '
                            ',\r\n (util.digit(num + 1) + '.'),\r\n '
                            ',\r\n ].join('') : ''\r\n ),\r\n '
                            ',\r\n (line || ' '),\r\n '
                            ',\r\n '
                            '\r\n ].join('');\r\n });\r\n\r\n return {\r\n lines: lines,\r\n html: html\r\n };\r\n };\r\n\r\n // 原始 code\r\n var rawCode = options.code;\r\n\r\n // 最终 code\r\n var finalCode = function(code) {\r\n return typeof options.codeParse === 'function' ?\r\n options.codeParse(code, options) :\r\n code;\r\n };\r\n\r\n // 仅重载 code\r\n if (mode === 'reloadCode') {\r\n return othis.children('.layui-code-wrap').html(\r\n createCode(finalCode(rawCode)).html\r\n ), ret;\r\n }\r\n\r\n // 自增索引\r\n var index = layui.code.index = ++codeIndex;\r\n othis.attr('lay-code-index', index);\r\n\r\n // 初始化 className\r\n var hasDataClass = CONST.CDDE_DATA_CLASS in othis.data();\r\n if (hasDataClass) {\r\n othis.attr('class', othis.data(CONST.CDDE_DATA_CLASS) || '');\r\n }\r\n\r\n // 记录初始 className\r\n if (!hasDataClass) {\r\n othis.data(CONST.CDDE_DATA_CLASS, othis.attr('class'));\r\n }\r\n\r\n // 工具栏\r\n var tools = {\r\n copy: {\r\n className: 'file-b',\r\n title: ['复制代码'],\r\n event: function(obj){\r\n var code = util.unescape(finalCode(options.code));\r\n\r\n // 写入剪切板\r\n lay.clipboard.writeText({\r\n text: code,\r\n done: function() {\r\n layer.msg('已复制', {icon: 1});\r\n },\r\n error: function() {\r\n layer.msg('复制失败', {icon: 2});\r\n }\r\n });\r\n\r\n typeof options.onCopy === 'function' && options.onCopy(code);\r\n }\r\n }\r\n };\r\n\r\n // 移除包裹结构\r\n var unwrap = (function fn() {\r\n var elemViewHas = othis.parent('.' + CONST.ELEM_PREVIEW);\r\n var elemTabHas = elemViewHas.children('.'+ CONST.ELEM_TAB);\r\n var elemPreviewViewHas = elemViewHas.children('.' + CONST.ELEM_ITEM +'-preview');\r\n\r\n // 移除旧结构\r\n elemTabHas.remove(); // 移除 tab\r\n elemPreviewViewHas.remove(); // 移除预览区域\r\n if (elemViewHas[0]) othis.unwrap(); // 移除外层容器\r\n\r\n return fn;\r\n })();\r\n\r\n // 是否开启预览\r\n if(options.preview){\r\n var FILTER_VALUE = 'LAY-CODE-DF-'+ index;\r\n var layout = options.layout || ['code', 'preview'];\r\n var isIframePreview = options.preview === 'iframe';\r\n\r\n // 追加 Tab 组件\r\n var elemView = $('
                            ');\r\n var elemTabView = $('
                            ');\r\n var elemHeaderView = $('
                            ');\r\n var elemPreviewView = $('
                            ');\r\n var elemToolbar = $('
                            ');\r\n\r\n\r\n if(options.id) elemView.attr('id', options.id);\r\n elemView.addClass(options.className);\r\n elemTabView.attr('lay-filter', FILTER_VALUE);\r\n\r\n // 标签头\r\n layui.each(layout, function(i, v){\r\n var li = $('
                          • ');\r\n if(i === 0) li.addClass('layui-this');\r\n li.html(options.text[v]);\r\n elemHeaderView.append(li);\r\n });\r\n\r\n // 工具栏\r\n $.extend(tools, {\r\n 'full': {\r\n className: 'screen-full',\r\n title: ['最大化显示', '还原显示'],\r\n event: function(obj){\r\n var el = obj.elem;\r\n var elemView = el.closest('.'+ CONST.ELEM_PREVIEW);\r\n var classNameFull = 'layui-icon-'+ this.className;\r\n var classNameRestore = 'layui-icon-screen-restore';\r\n var title = this.title;\r\n var htmlElem = $('html,body');\r\n var ELEM_SCROLLBAR_HIDE = 'layui-scrollbar-hide';\r\n\r\n if(el.hasClass(classNameFull)){\r\n elemView.addClass(CONST.ELEM_FULL);\r\n el.removeClass(classNameFull).addClass(classNameRestore);\r\n el.attr('title', title[1]);\r\n htmlElem.addClass(ELEM_SCROLLBAR_HIDE);\r\n } else {\r\n elemView.removeClass(CONST.ELEM_FULL);\r\n el.removeClass(classNameRestore).addClass(classNameFull);\r\n el.attr('title', title[0]);\r\n htmlElem.removeClass(ELEM_SCROLLBAR_HIDE);\r\n }\r\n }\r\n },\r\n 'window': {\r\n className: 'release',\r\n title: ['在新窗口预览'],\r\n event: function(obj){\r\n util.openWin({\r\n content: finalCode(options.code)\r\n });\r\n }\r\n }\r\n });\r\n\r\n // copy\r\n if(options.copy){\r\n if(layui.type(options.tools) === 'array'){\r\n // 若 copy 未存在于 tools 中,则追加到最前\r\n if(options.tools.indexOf('copy') === -1){\r\n options.tools.unshift('copy');\r\n }\r\n } else {\r\n options.tools = ['copy'];\r\n }\r\n }\r\n\r\n // 工具栏事件\r\n elemToolbar.on('click', '>i', function(){\r\n var oi = $(this);\r\n var type = oi.data('type');\r\n var parameters = {\r\n elem: oi,\r\n type: type,\r\n options: options, // 当前属性选项\r\n rawCode: options.code, // 原始 code\r\n finalCode: util.unescape(finalCode(options.code)) // 最终 code\r\n };\r\n\r\n // 内部 tools event\r\n tools[type] && typeof tools[type].event === 'function' && tools[type].event(parameters);\r\n\r\n // 外部 tools event\r\n typeof options.toolsEvent === 'function' && options.toolsEvent(parameters);\r\n });\r\n\r\n // 增加工具栏\r\n if (options.addTools && options.tools) {\r\n options.tools = [].concat(options.tools, options.addTools);\r\n }\r\n\r\n // 渲染工具栏\r\n layui.each(options.tools, function(i, v){\r\n var viso = typeof v === 'object'; // 若为 object 值,则可自定义更多属性\r\n var tool = viso ? v : (\r\n tools[v] || {\r\n className: v,\r\n title: [v]\r\n }\r\n );\r\n\r\n var className = tool.className || tool.type;\r\n var title = tool.title || [''];\r\n var type = viso ? ( tool.type || className ) : v;\r\n\r\n if (!type) return;\r\n\r\n // 若非内置 tool,则合并到 tools 中\r\n if (!tools[type]) {\r\n var obj = {};\r\n obj[type] = tool;\r\n $.extend(tools, obj);\r\n }\r\n\r\n elemToolbar.append(\r\n ''\r\n );\r\n });\r\n\r\n othis.addClass(CONST.ELEM_ITEM).wrap(elemView); // 包裹外层容器\r\n elemTabView.append(elemHeaderView); // 追加标签头\r\n options.tools && elemTabView.append(elemToolbar); // 追加工具栏\r\n othis.before(elemTabView); // 追加标签结构\r\n\r\n // 追加预览\r\n if(isIframePreview){\r\n elemPreviewView.html('');\r\n }\r\n\r\n // 执行预览\r\n var runPreview = function(thisItemBody){\r\n var iframe = thisItemBody.children('iframe')[0];\r\n\r\n // 是否 iframe 方式预览\r\n if(isIframePreview && iframe){\r\n iframe.srcdoc = finalCode(options.code);\r\n } else {\r\n thisItemBody.html(options.code);\r\n }\r\n\r\n // 当前实例预览完毕后的回调\r\n setTimeout(function(){\r\n typeof options.done === 'function' && options.done({\r\n container: thisItemBody,\r\n options: options,\r\n render: function(){\r\n form.render(thisItemBody.find('.layui-form'));\r\n element.render();\r\n }\r\n });\r\n },3);\r\n };\r\n\r\n if(layout[0] === 'preview'){\r\n elemPreviewView.addClass(CONST.ELEM_SHOW);\r\n othis.before(elemPreviewView);\r\n runPreview(elemPreviewView);\r\n } else {\r\n othis.addClass(CONST.ELEM_SHOW).after(elemPreviewView);\r\n }\r\n\r\n // 内容项初始化样式\r\n options.previewStyle = [options.style, options.previewStyle].join('');\r\n elemPreviewView.attr('style', options.previewStyle);\r\n\r\n // tab change\r\n element.on('tab('+ FILTER_VALUE +')', function(data){\r\n var $this = $(this);\r\n var thisElem = $(data.elem).closest('.'+ CONST.ELEM_PREVIEW);\r\n var elemItemBody = thisElem.find('.'+ CONST.ELEM_ITEM);\r\n var thisItemBody = elemItemBody.eq(data.index);\r\n\r\n elemItemBody.removeClass(CONST.ELEM_SHOW);\r\n thisItemBody.addClass(CONST.ELEM_SHOW);\r\n\r\n if($this.attr('lay-id') === 'preview'){\r\n runPreview(thisItemBody);\r\n }\r\n\r\n setCodeLayout();\r\n });\r\n }\r\n\r\n // 创建 code 容器\r\n var codeElem = $(''); // 此处的闭合标签是为了兼容 IE8\r\n\r\n // 添加主容器 className\r\n othis.addClass(function(arr) {\r\n if (!options.wordWrap) arr.push('layui-code-nowrap');\r\n return arr.join(' ')\r\n }(['layui-code-view layui-border-box']));\r\n\r\n // code 主题风格\r\n var theme = options.theme || options.skin;\r\n if (theme) {\r\n othis.removeClass('layui-code-theme-dark layui-code-theme-light');\r\n othis.addClass('layui-code-theme-'+ theme);\r\n }\r\n\r\n // 添加高亮必要的 className\r\n if (options.highlighter) {\r\n othis.addClass([\r\n options.highlighter,\r\n 'language-' + options.lang,\r\n 'layui-code-hl'\r\n ].join(' '));\r\n }\r\n\r\n // 获取 code 行结构\r\n var createCodeRst = createCode(\r\n options.encode ? util.escape(finalCode(rawCode)) : rawCode // 是否编码\r\n );\r\n var lines = createCodeRst.lines;\r\n\r\n // 插入 code\r\n othis.html(codeElem.html(createCodeRst.html));\r\n\r\n // 插入行号边栏\r\n if (options.ln) {\r\n othis.append('
                            ');\r\n }\r\n\r\n // 兼容旧版本 height 属性\r\n if (options.height) {\r\n codeElem.css('max-height', options.height);\r\n }\r\n\r\n // code 区域样式\r\n options.codeStyle = [options.style, options.codeStyle].join('');\r\n if (options.codeStyle) {\r\n codeElem.attr('style', function(i, val) {\r\n return (val || '') + options.codeStyle;\r\n });\r\n }\r\n\r\n // 动态设置样式\r\n var cssRules = [\r\n {\r\n selector: '>.layui-code-wrap>.layui-code-line{}',\r\n setValue: function(item, value) {\r\n item.style['padding-left'] = value + 'px';\r\n }\r\n },\r\n {\r\n selector: '>.layui-code-wrap>.layui-code-line>.layui-code-line-number{}',\r\n setValue: function(item, value) {\r\n item.style.width = value + 'px';\r\n }\r\n },\r\n {\r\n selector: '>.layui-code-ln-side{}',\r\n setValue: function(item, value) {\r\n item.style.width = value + 'px';\r\n }\r\n }\r\n ];\r\n\r\n // 生成初始 style 元素\r\n var styleElem = lay.style({\r\n target: othis[0],\r\n id: 'DF-code-'+ index,\r\n text: $.map($.map(cssRules, function(val){\r\n return val.selector;\r\n }), function(val, i) {\r\n return ['.layui-code-view[lay-code-index=\"'+ index + '\"]', val].join(' ');\r\n }).join('')\r\n })\r\n\r\n // 动态设置 code 布局\r\n var setCodeLayout = (function fn() {\r\n if (options.ln) {\r\n var multiLine = Math.floor(lines.length / 100);\r\n var lineElem = codeElem.children('.'+ CONST.ELEM_LINE);\r\n var width = lineElem.last().children('.'+ CONST.ELEM_LINE_NUM).outerWidth();\r\n\r\n othis.addClass(CONST.ELEM_LN_MODE);\r\n\r\n // 若超出 100 行\r\n if (multiLine && width > CONST.LINE_RAW_WIDTH) {\r\n lay.getStyleRules(styleElem, function(item, i) {\r\n try {\r\n cssRules[i].setValue(item, width);\r\n } catch(e) { }\r\n });\r\n }\r\n }\r\n\r\n return fn;\r\n })();\r\n\r\n // 创建 code header\r\n if (options.header) {\r\n var headerElem = $('
                            ');\r\n headerElem.html(options.title || options.text.code);\r\n othis.prepend(headerElem);\r\n }\r\n\r\n // 创建 code 区域固定条\r\n var elemFixbar = $('
                            ');\r\n\r\n // 若开启复制,且未开启预览,则单独生成复制图标\r\n if(options.copy && !options.preview){\r\n var copyElem = $(['',\r\n '',\r\n ''].join(''));\r\n\r\n // 点击复制\r\n copyElem.on('click', function(){\r\n tools.copy.event();\r\n });\r\n\r\n elemFixbar.append(copyElem);\r\n }\r\n\r\n // 创建 language marker\r\n if (options.langMarker) {\r\n elemFixbar.append('' + options.lang + '');\r\n }\r\n\r\n // 创建 about 自定义内容\r\n if (options.about) {\r\n elemFixbar.append(options.about);\r\n }\r\n\r\n // 生成 code fixbar\r\n othis.append(elemFixbar);\r\n\r\n // code 渲染完毕后的回调\r\n if (!options.preview) {\r\n setTimeout(function(){\r\n typeof options.done === 'function' && options.done({});\r\n },3);\r\n }\r\n\r\n // 所有实例渲染完毕后的回调\r\n if(options.elem.length === index + 1){\r\n typeof options.allDone === 'function' && options.allDone();\r\n }\r\n\r\n return ret;\r\n });\r\n});\r\n\r\n// 若为源码版,则自动加载该组件依赖的 css 文件\r\nif(!layui['layui.all']){\r\n layui.addcss('modules/code.css?v=6', 'skincodecss');\r\n}\r\n"]} \ No newline at end of file