diff --git a/playground/dist/home.min.js b/playground/dist/home.min.js
index 721c68e..0745e70 100644
--- a/playground/dist/home.min.js
+++ b/playground/dist/home.min.js
@@ -7,4 +7,4 @@
  * see: http://github.com/requirejs/text for details
  */
 
-(function(e){if(typeof exports=="object"&&typeof module=="object")module.exports=e();else{if(typeof define=="function"&&define.amd)return define("libs/codemirror-4.8/lib/codemirror",[],e);this.CodeMirror=e()}})(function(){function S(e,t){if(!(this instanceof S))return new S(e,t);this.options=t=t?zo(t):{},zo(fi,t,!1),H(t);var n=t.value;typeof n=="string"&&(n=new js(n,t.mode)),this.doc=n;var s=this.display=new x(e,n);s.wrapper.CodeMirror=this,M(this),A(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),t.autofocus&&!d&&er(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,draggingText:!1,highlight:new Do,keySeq:null},r&&i<11&&setTimeout(Wo(Zn,this,!0),20),rr(this),fu(),kn(this),this.curOp.forceUpdate=!0,Rs(this,n),t.autofocus&&!d||nu()==s.input?setTimeout(Wo(Pr,this),20):Hr(this);for(var o in li)li.hasOwnProperty(o)&&li[o](this,t[o],hi);R(this);for(var u=0;u<mi.length;++u)mi[u](this);An(this)}function x(e,t){var n=this,o=n.input=Go("textarea",null,null,"position: absolute; padding: 0; width: 1px; height: 1em; outline: none");s?o.style.width="1000px":o.setAttribute("wrap","off"),p&&(o.style.border="1px solid black"),o.setAttribute("autocorrect","off"),o.setAttribute("autocapitalize","off"),o.setAttribute("spellcheck","false"),n.inputDiv=Go("div",[o],null,"overflow: hidden; position: relative; width: 3px; height: 0px;"),n.scrollbarH=Go("div",[Go("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar"),n.scrollbarV=Go("div",[Go("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),n.scrollbarFiller=Go("div",null,"CodeMirror-scrollbar-filler"),n.gutterFiller=Go("div",null,"CodeMirror-gutter-filler"),n.lineDiv=Go("div",null,"CodeMirror-code"),n.selectionDiv=Go("div",null,null,"position: relative; z-index: 1"),n.cursorDiv=Go("div",null,"CodeMirror-cursors"),n.measure=Go("div",null,"CodeMirror-measure"),n.lineMeasure=Go("div",null,"CodeMirror-measure"),n.lineSpace=Go("div",[n.measure,n.lineMeasure,n.selectionDiv,n.cursorDiv,n.lineDiv],null,"position: relative; outline: none"),n.mover=Go("div",[Go("div",[n.lineSpace],"CodeMirror-lines")],null,"position: relative"),n.sizer=Go("div",[n.mover],"CodeMirror-sizer"),n.heightForcer=Go("div",null,null,"position: absolute; height: "+Lo+"px; width: 1px;"),n.gutters=Go("div",null,"CodeMirror-gutters"),n.lineGutter=null,n.scroller=Go("div",[n.sizer,n.heightForcer,n.gutters],"CodeMirror-scroll"),n.scroller.setAttribute("tabIndex","-1"),n.wrapper=Go("div",[n.inputDiv,n.scrollbarH,n.scrollbarV,n.scrollbarFiller,n.gutterFiller,n.scroller],"CodeMirror"),r&&i<8&&(n.gutters.style.zIndex=-1,n.scroller.style.paddingRight=0),p&&(o.style.width="0px"),s||(n.scroller.draggable=!0),l&&(n.inputDiv.style.height="1px",n.inputDiv.style.position="absolute"),r&&i<8&&(n.scrollbarH.style.minHeight=n.scrollbarV.style.minWidth="18px"),e&&(e.appendChild?e.appendChild(n.wrapper):e(n.wrapper)),n.viewFrom=n.viewTo=t.first,n.view=[],n.externalMeasured=null,n.viewOffset=0,n.lastWrapHeight=n.lastWrapWidth=0,n.updateLineNumbers=null,n.lineNumWidth=n.lineNumInnerWidth=n.lineNumChars=null,n.prevInput="",n.alignWidgets=!1,n.pollingFast=!1,n.poll=new Do,n.cachedCharWidth=n.cachedTextHeight=n.cachedPaddingH=null,n.inaccurateSelection=!1,n.maxLine=null,n.maxLineLength=0,n.maxLineChanged=!1,n.wheelDX=n.wheelDY=n.wheelStartX=n.wheelStartY=null,n.shift=!1,n.selForContextMenu=null}function T(e){e.doc.mode=S.getMode(e.options,e.doc.modeOption),N(e)}function N(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.frontier=e.doc.first,Xt(e,100),e.state.modeGen++,e.curOp&&Un(e)}function C(e){e.options.lineWrapping?(su(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth=""):(iu(e.display.wrapper,"CodeMirror-wrap"),P(e)),L(e),Un(e),cn(e),setTimeout(function(){F(e)},100)}function k(e){var t=xn(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/Tn(e.display)-3);return function(i){if(ss(e.doc,i))return 0;var s=0;if(i.widgets)for(var o=0;o<i.widgets.length;o++)i.widgets[o].height&&(s+=i.widgets[o].height);return n?s+(Math.ceil(i.text.length/r)||1)*t:s+t}}function L(e){var t=e.doc,n=k(e);t.iter(function(e){var t=n(e);t!=e.height&&Xs(e,t)})}function A(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),cn(e)}function O(e){M(e),Un(e),setTimeout(function(){q(e)},20)}function M(e){var t=e.display.gutters,n=e.options.gutters;Zo(t);for(var r=0;r<n.length;++r){var i=n[r],s=t.appendChild(Go("div",null,"CodeMirror-gutter "+i));i=="CodeMirror-linenumbers"&&(e.display.lineGutter=s,s.style.width=(e.display.lineNumWidth||1)+"px")}t.style.display=r?"":"none",_(e)}function _(e){var t=e.display.gutters.offsetWidth;e.display.sizer.style.marginLeft=t+"px",e.display.scrollbarH.style.left=e.options.fixedGutter?t+"px":0}function D(e){if(e.height==0)return 0;var t=e.text.length,n,r=e;while(n=Yi(r)){var i=n.find(0,!0);r=i.from.line,t+=i.from.ch-i.to.ch}r=e;while(n=Zi(r)){var i=n.find(0,!0);t-=r.text.length-i.from.ch,r=i.to.line,t+=r.text.length-i.to.ch}return t}function P(e){var t=e.display,n=e.doc;t.maxLine=Us(n,n.first),t.maxLineLength=D(t.maxLine),t.maxLineChanged=!0,n.iter(function(e){var n=D(e);n>t.maxLineLength&&(t.maxLineLength=n,t.maxLine=e)})}function H(e){var t=qo(e.gutters,"CodeMirror-linenumbers");t==-1&&e.lineNumbers?e.gutters=e.gutters.concat(["CodeMirror-linenumbers"]):t>-1&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}function B(e){return e.display.scroller.clientHeight-e.display.wrapper.clientHeight<Lo-3}function j(e){var t=e.display.scroller;return{clientHeight:t.clientHeight,barHeight:e.display.scrollbarV.clientHeight,scrollWidth:t.scrollWidth,clientWidth:t.clientWidth,hScrollbarTakesSpace:B(e),barWidth:e.display.scrollbarH.clientWidth,docHeight:Math.round(e.doc.height+Qt(e.display))}}function F(e,t){t||(t=j(e));var n=e.display,r=pu(n.measure),i=t.docHeight+Lo,s=t.scrollWidth>t.clientWidth;s&&t.scrollWidth<=t.clientWidth+1&&r>0&&!t.hScrollbarTakesSpace&&(s=!1);var o=i>t.clientHeight;o?(n.scrollbarV.style.display="block",n.scrollbarV.style.bottom=s?r+"px":"0",n.scrollbarV.firstChild.style.height=Math.max(0,i-t.clientHeight+(t.barHeight||n.scrollbarV.clientHeight))+"px"):(n.scrollbarV.style.display="",n.scrollbarV.firstChild.style.height="0"),s?(n.scrollbarH.style.display="block",n.scrollbarH.style.right=o?r+"px":"0",n.scrollbarH.firstChild.style.width=t.scrollWidth-t.clientWidth+(t.barWidth||n.scrollbarH.clientWidth)+"px"):(n.scrollbarH.style.display="",n.scrollbarH.firstChild.style.width="0"),s&&o?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=n.scrollbarFiller.style.width=r+"px"):n.scrollbarFiller.style.display="",s&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r+"px",n.gutterFiller.style.width=n.gutters.offsetWidth+"px"):n.gutterFiller.style.display="";if(!e.state.checkedOverlayScrollbar&&t.clientHeight>0){if(r===0){var u=v&&!c?"12px":"18px";n.scrollbarV.style.minWidth=n.scrollbarH.style.minHeight=u;var a=function(t){mo(t)!=n.scrollbarV&&mo(t)!=n.scrollbarH&&jn(e,ur)(t)};yo(n.scrollbarV,"mousedown",a),yo(n.scrollbarH,"mousedown",a)}e.state.checkedOverlayScrollbar=!0}}function I(e,t,n){var r=n&&n.top!=null?Math.max(0,n.top):e.scroller.scrollTop;r=Math.floor(r-Kt(e));var i=n&&n.bottom!=null?n.bottom:r+e.wrapper.clientHeight,s=$s(t,r),o=$s(t,i);if(n&&n.ensure){var u=n.ensure.from.line,a=n.ensure.to.line;if(u<s)return{from:u,to:$s(t,Js(Us(t,u))+e.wrapper.clientHeight)};if(Math.min(a,t.lastLine())>=o)return{from:$s(t,Js(Us(t,a))-e.wrapper.clientHeight),to:a}}return{from:s,to:Math.max(o,s+1)}}function q(e){var t=e.display,n=t.view;if(!t.alignWidgets&&(!t.gutters.firstChild||!e.options.fixedGutter))return;var r=z(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,s=r+"px";for(var o=0;o<n.length;o++)if(!n[o].hidden){e.options.fixedGutter&&n[o].gutter&&(n[o].gutter.style.left=s);var u=n[o].alignable;if(u)for(var a=0;a<u.length;a++)u[a].style.left=s}e.options.fixedGutter&&(t.gutters.style.left=r+i+"px")}function R(e){if(!e.options.lineNumbers)return!1;var t=e.doc,n=U(e.options,t.first+t.size-1),r=e.display;if(n.length!=r.lineNumChars){var i=r.measure.appendChild(Go("div",[Go("div",n)],"CodeMirror-linenumber CodeMirror-gutter-elt")),s=i.firstChild.offsetWidth,o=i.offsetWidth-s;return r.lineGutter.style.width="",r.lineNumInnerWidth=Math.max(s,r.lineGutter.offsetWidth-o),r.lineNumWidth=r.lineNumInnerWidth+o,r.lineNumChars=r.lineNumInnerWidth?n.length:-1,r.lineGutter.style.width=r.lineNumWidth+"px",_(e),!0}return!1}function U(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function z(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function W(e,t,n){var r=e.display;this.viewport=t,this.visible=I(r,e.doc,t),this.editorIsHidden=!r.wrapper.offsetWidth,this.wrapperHeight=r.wrapper.clientHeight,this.wrapperWidth=r.wrapper.clientWidth,this.oldViewFrom=r.viewFrom,this.oldViewTo=r.viewTo,this.oldScrollerWidth=r.scroller.clientWidth,this.force=n,this.dims=Y(e)}function X(e,t){var n=e.display,r=e.doc;if(t.editorIsHidden)return Wn(e),!1;if(!t.force&&t.visible.from>=n.viewFrom&&t.visible.to<=n.viewTo&&(n.updateLineNumbers==null||n.updateLineNumbers>=n.viewTo)&&Jn(e)==0)return!1;R(e)&&(Wn(e),t.dims=Y(e));var i=r.first+r.size,s=Math.max(t.visible.from-e.options.viewportMargin,r.first),o=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFrom<s&&s-n.viewFrom<20&&(s=Math.max(r.first,n.viewFrom)),n.viewTo>o&&n.viewTo-o<20&&(o=Math.min(i,n.viewTo)),E&&(s=rs(e.doc,s),o=is(e.doc,o));var u=s!=n.viewFrom||o!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;$n(e,s,o),n.viewOffset=Js(Us(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px";var a=Jn(e);if(!u&&a==0&&!t.force&&(n.updateLineNumbers==null||n.updateLineNumbers>=n.viewTo))return!1;var f=nu();return a>4&&(n.lineDiv.style.display="none"),Z(e,n.updateLineNumbers,t.dims),a>4&&(n.lineDiv.style.display=""),f&&nu()!=f&&f.offsetHeight&&f.focus(),Zo(n.cursorDiv),Zo(n.selectionDiv),u&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,Xt(e,400)),n.updateLineNumbers=null,!0}function V(e,t){var n=t.force,r=t.viewport;for(var i=!0;;i=!1){if(i&&e.options.lineWrapping&&t.oldScrollerWidth!=e.display.scroller.clientWidth)n=!0;else{n=!1,r&&r.top!=null&&(r={top:Math.min(e.doc.height+Qt(e.display)-Lo-e.display.scroller.clientHeight,r.top)}),t.visible=I(e.display,e.doc,r);if(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break}if(!X(e,t))break;Q(e);var s=j(e);Rt(e),J(e,s),F(e,s)}So(e,"update",e),(e.display.viewFrom!=t.oldViewFrom||e.display.viewTo!=t.oldViewTo)&&So(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo)}function $(e,t){var n=new W(e,t);if(X(e,n)){Q(e),V(e,n);var r=j(e);Rt(e),J(e,r),F(e,r)}}function J(e,t){e.display.sizer.style.minHeight=e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=Math.max(t.docHeight,t.clientHeight-Lo)+"px"}function K(e,t){e.display.sizer.offsetWidth+e.display.gutters.offsetWidth<e.display.scroller.clientWidth-1&&(e.display.sizer.style.minHeight=e.display.heightForcer.style.top="0px",e.display.gutters.style.height=t.docHeight+"px")}function Q(e){var t=e.display,n=t.lineDiv.offsetTop;for(var s=0;s<t.view.length;s++){var o=t.view[s],u;if(o.hidden)continue;if(r&&i<8){var a=o.node.offsetTop+o.node.offsetHeight;u=a-n,n=a}else{var f=o.node.getBoundingClientRect();u=f.bottom-f.top}var l=o.line.height-u;u<2&&(u=xn(t));if(l>.001||l<-0.001){Xs(o.line,u),G(o.line);if(o.rest)for(var c=0;c<o.rest.length;c++)G(o.rest[c])}}}function G(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t)e.widgets[t].height=e.widgets[t].node.offsetHeight}function Y(e){var t=e.display,n={},r={},i=t.gutters.clientLeft;for(var s=t.gutters.firstChild,o=0;s;s=s.nextSibling,++o)n[e.options.gutters[o]]=s.offsetLeft+s.clientLeft+i,r[e.options.gutters[o]]=s.clientWidth;return{fixedPos:z(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function Z(e,t,n){function a(t){var n=t.nextSibling;return s&&v&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),n}var r=e.display,i=e.options.lineNumbers,o=r.lineDiv,u=o.firstChild,f=r.view,l=r.viewFrom;for(var c=0;c<f.length;c++){var h=f[c];if(!h.hidden)if(!h.node){var p=at(e,h,l,n);o.insertBefore(p,u)}else{while(u!=h.node)u=a(u);var d=i&&t!=null&&t<=l&&h.lineNumber;h.changes&&(qo(h.changes,"gutter")>-1&&(d=!1),et(e,h,l,n)),d&&(Zo(h.lineNumber),h.lineNumber.appendChild(document.createTextNode(U(e.options,l)))),u=h.node.nextSibling}l+=h.size}while(u)u=a(u)}function et(e,t,n,r){for(var i=0;i<t.changes.length;i++){var s=t.changes[i];s=="text"?it(e,t):s=="gutter"?ot(e,t,n,r):s=="class"?st(t):s=="widget"&&ut(t,r)}t.changes=null}function tt(e){return e.node==e.text&&(e.node=Go("div",null,null,"position: relative"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),r&&i<8&&(e.node.style.zIndex=2)),e.node}function nt(e){var t=e.bgClass?e.bgClass+" "+(e.line.bgClass||""):e.line.bgClass;t&&(t+=" CodeMirror-linebackground");if(e.background)t?e.background.className=t:(e.background.parentNode.removeChild(e.background),e.background=null);else if(t){var n=tt(e);e.background=n.insertBefore(Go("div",null,t),n.firstChild)}}function rt(e,t){var n=e.display.externalMeasured;return n&&n.line==t.line?(e.display.externalMeasured=null,t.measure=n.measure,n.built):Ns(e,t)}function it(e,t){var n=t.text.className,r=rt(e,t);t.text==t.node&&(t.node=r.pre),t.text.parentNode.replaceChild(r.pre,t.text),t.text=r.pre,r.bgClass!=t.bgClass||r.textClass!=t.textClass?(t.bgClass=r.bgClass,t.textClass=r.textClass,st(t)):n&&(t.text.className=n)}function st(e){nt(e),e.line.wrapClass?tt(e).className=e.line.wrapClass:e.node!=e.text&&(e.node.className="");var t=e.textClass?e.textClass+" "+(e.line.textClass||""):e.line.textClass;e.text.className=t||""}function ot(e,t,n,r){t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null);var i=t.line.gutterMarkers;if(e.options.lineNumbers||i){var s=tt(t),o=t.gutter=s.insertBefore(Go("div",null,"CodeMirror-gutter-wrapper","left: "+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px; width: "+r.gutterTotalWidth+"px"),t.text);t.line.gutterClass&&(o.className+=" "+t.line.gutterClass),e.options.lineNumbers&&(!i||!i["CodeMirror-linenumbers"])&&(t.lineNumber=o.appendChild(Go("div",U(e.options,n),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+r.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+e.display.lineNumInnerWidth+"px")));if(i)for(var u=0;u<e.options.gutters.length;++u){var a=e.options.gutters[u],f=i.hasOwnProperty(a)&&i[a];f&&o.appendChild(Go("div",[f],"CodeMirror-gutter-elt","left: "+r.gutterLeft[a]+"px; width: "+r.gutterWidth[a]+"px"))}}}function ut(e,t){e.alignable&&(e.alignable=null);for(var n=e.node.firstChild,r;n;n=r){var r=n.nextSibling;n.className=="CodeMirror-linewidget"&&e.node.removeChild(n)}ft(e,t)}function at(e,t,n,r){var i=rt(e,t);return t.text=t.node=i.pre,i.bgClass&&(t.bgClass=i.bgClass),i.textClass&&(t.textClass=i.textClass),st(t),ot(e,t,n,r),ft(t,r),t.node}function ft(e,t){lt(e.line,e,t,!0);if(e.rest)for(var n=0;n<e.rest.length;n++)lt(e.rest[n],e,t,!1)}function lt(e,t,n,r){if(!e.widgets)return;var i=tt(t);for(var s=0,o=e.widgets;s<o.length;++s){var u=o[s],a=Go("div",[u.node],"CodeMirror-linewidget");u.handleMouseEvents||(a.ignoreEvents=!0),ct(u,a,t,n),r&&u.above?i.insertBefore(a,t.gutter||t.text):i.appendChild(a),So(u,"redraw")}}function ct(e,t,n,r){if(e.noHScroll){(n.alignable||(n.alignable=[])).push(t);var i=r.wrapperWidth;t.style.left=r.fixedPos+"px",e.coverGutter||(i-=r.gutterTotalWidth,t.style.paddingLeft=r.gutterTotalWidth+"px"),t.style.width=i+"px"}e.coverGutter&&(t.style.zIndex=5,t.style.position="relative",e.noHScroll||(t.style.marginLeft=-r.gutterTotalWidth+"px"))}function dt(e){return ht(e.line,e.ch)}function vt(e,t){return pt(e,t)<0?t:e}function mt(e,t){return pt(e,t)<0?e:t}function gt(e,t){this.ranges=e,this.primIndex=t}function yt(e,t){this.anchor=e,this.head=t}function bt(e,t){var n=e[t];e.sort(function(e,t){return pt(e.from(),t.from())}),t=qo(e,n);for(var r=1;r<e.length;r++){var i=e[r],s=e[r-1];if(pt(s.to(),i.from())>=0){var o=mt(s.from(),i.from()),u=vt(s.to(),i.to()),a=s.empty()?i.from()==i.head:s.from()==s.head;r<=t&&--t,e.splice(--r,2,new yt(a?u:o,a?o:u))}}return new gt(e,t)}function wt(e,t){return new gt([new yt(e,t||e)],0)}function Et(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function St(e,t){if(t.line<e.first)return ht(e.first,0);var n=e.first+e.size-1;return t.line>n?ht(n,Us(e,n).text.length):xt(t,Us(e,t.line).text.length)}function xt(e,t){var n=e.ch;return n==null||n>t?ht(e.line,t):n<0?ht(e.line,0):e}function Tt(e,t){return t>=e.first&&t<e.first+e.size}function Nt(e,t){for(var n=[],r=0;r<t.length;r++)n[r]=St(e,t[r]);return n}function Ct(e,t,n,r){if(e.cm&&e.cm.display.shift||e.extend){var i=t.anchor;if(r){var s=pt(n,i)<0;s!=pt(r,i)<0?(i=n,n=r):s!=pt(n,r)<0&&(n=r)}return new yt(i,n)}return new yt(r||n,n)}function kt(e,t,n,r){Dt(e,new gt([Ct(e,e.sel.primary(),t,n)],0),r)}function Lt(e,t,n){for(var r=[],i=0;i<e.sel.ranges.length;i++)r[i]=Ct(e,e.sel.ranges[i],t[i],null);var s=bt(r,e.sel.primIndex);Dt(e,s,n)}function At(e,t,n,r){var i=e.sel.ranges.slice(0);i[t]=n,Dt(e,bt(i,e.sel.primIndex),r)}function Ot(e,t,n,r){Dt(e,wt(t,n),r)}function Mt(e,t){var n={ranges:t.ranges,update:function(t){this.ranges=[];for(var n=0;n<t.length;n++)this.ranges[n]=new yt(St(e,t[n].anchor),St(e,t[n].head))}};return wo(e,"beforeSelectionChange",e,n),e.cm&&wo(e.cm,"beforeSelectionChange",e.cm,n),n.ranges!=t.ranges?bt(n.ranges,n.ranges.length-1):t}function _t(e,t,n){var r=e.history.done,i=Fo(r);i&&i.ranges?(r[r.length-1]=t,Pt(e,t,n)):Dt(e,t,n)}function Dt(e,t,n){Pt(e,t,n),no(e,e.sel,e.cm?e.cm.curOp.id:NaN,n)}function Pt(e,t,n){if(Co(e,"beforeSelectionChange")||e.cm&&Co(e.cm,"beforeSelectionChange"))t=Mt(e,t);var r=n&&n.bias||(pt(t.primary().head,e.sel.primary().head)<0?-1:1);Ht(e,jt(e,t,r,!0)),(!n||n.scroll!==!1)&&e.cm&&ni(e.cm)}function Ht(e,t){if(t.equals(e.sel))return;e.sel=t,e.cm&&(e.cm.curOp.updateInput=e.cm.curOp.selectionChanged=!0,No(e.cm)),So(e,"cursorActivity",e)}function Bt(e){Ht(e,jt(e,e.sel,null,!1),Oo)}function jt(e,t,n,r){var i;for(var s=0;s<t.ranges.length;s++){var o=t.ranges[s],u=Ft(e,o.anchor,n,r),a=Ft(e,o.head,n,r);if(i||u!=o.anchor||a!=o.head)i||(i=t.ranges.slice(0,s)),i[s]=new yt(u,a)}return i?bt(i,t.primIndex):t}function Ft(e,t,n,r){var i=!1,s=t,o=n||1;e.cantEdit=!1;e:for(;;){var u=Us(e,s.line);if(u.markedSpans)for(var a=0;a<u.markedSpans.length;++a){var f=u.markedSpans[a],l=f.marker;if((f.from==null||(l.inclusiveLeft?f.from<=s.ch:f.from<s.ch))&&(f.to==null||(l.inclusiveRight?f.to>=s.ch:f.to>s.ch))){if(r){wo(l,"beforeCursorEnter");if(l.explicitlyCleared){if(!u.markedSpans)break;--a;continue}}if(!l.atomic)continue;var c=l.find(o<0?-1:1);if(pt(c,s)==0){c.ch+=o,c.ch<0?c.line>e.first?c=St(e,ht(c.line-1)):c=null:c.ch>u.text.length&&(c.line<e.first+e.size-1?c=ht(c.line+1,0):c=null);if(!c){if(i)return r?(e.cantEdit=!0,ht(e.first,0)):Ft(e,t,n,!0);i=!0,c=t,o=-o}}s=c;continue e}}return s}}function It(e){var t=e.display,n=e.doc,r={},i=r.cursors=document.createDocumentFragment(),s=r.selection=document.createDocumentFragment();for(var o=0;o<n.sel.ranges.length;o++){var u=n.sel.ranges[o],a=u.empty();(a||e.options.showCursorWhenSelecting)&&Ut(e,u,i),a||zt(e,u,s)}if(e.options.moveInputWithCursor){var f=gn(e,n.sel.primary().head,"div"),l=t.wrapper.getBoundingClientRect(),c=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,f.top+c.top-l.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,f.left+c.left-l.left))}return r}function qt(e,t){eu(e.display.cursorDiv,t.cursors),eu(e.display.selectionDiv,t.selection),t.teTop!=null&&(e.display.inputDiv.style.top=t.teTop+"px",e.display.inputDiv.style.left=t.teLeft+"px")}function Rt(e){qt(e,It(e))}function Ut(e,t,n){var r=gn(e,t.head,"div",null,null,!e.options.singleCursorHeightPerLine),i=n.appendChild(Go("div"," ","CodeMirror-cursor"));i.style.left=r.left+"px",i.style.top=r.top+"px",i.style.height=Math.max(0,r.bottom-r.top)*e.options.cursorHeight+"px";if(r.other){var s=n.appendChild(Go("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));s.style.display="",s.style.left=r.other.left+"px",s.style.top=r.other.top+"px",s.style.height=(r.other.bottom-r.other.top)*.85+"px"}}function zt(e,t,n){function f(e,t,n,r){t<0&&(t=0),t=Math.round(t),r=Math.round(r),s.appendChild(Go("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px; top: "+t+"px; width: "+(n==null?a-e:n)+"px; height: "+(r-t)+"px"))}function l(t,n,r){function h(n,r){return mn(e,ht(t,n),"div",s,r)}var s=Us(i,t),o=s.text.length,l,c;return Tu(Ks(s),n||0,r==null?o:r,function(e,t,i){var s=h(e,"left"),p,d,v;if(e==t)p=s,d=v=s.left;else{p=h(t-1,"right");if(i=="rtl"){var m=s;s=p,p=m}d=s.left,v=p.right}n==null&&e==0&&(d=u),p.top-s.top>3&&(f(d,s.top,null,s.bottom),d=u,s.bottom<p.top&&f(d,s.bottom,null,p.top)),r==null&&t==o&&(v=a);if(!l||s.top<l.top||s.top==l.top&&s.left<l.left)l=s;if(!c||p.bottom>c.bottom||p.bottom==c.bottom&&p.right>c.right)c=p;d<u+1&&(d=u),f(d,p.top,v-d,p.bottom)}),{start:l,end:c}}var r=e.display,i=e.doc,s=document.createDocumentFragment(),o=Gt(e.display),u=o.left,a=r.lineSpace.offsetWidth-o.right,c=t.from(),h=t.to();if(c.line==h.line)l(c.line,c.ch,h.ch);else{var p=Us(i,c.line),d=Us(i,h.line),v=ts(p)==ts(d),m=l(c.line,c.ch,v?p.text.length+1:null).end,g=l(h.line,v?0:null,h.ch).start;v&&(m.top<g.top-2?(f(m.right,m.top,null,m.bottom),f(u,g.top,g.left,g.bottom)):f(m.right,m.top,g.left-m.right,m.bottom)),m.bottom<g.top&&f(u,m.bottom,null,g.top)}n.appendChild(s)}function Wt(e){if(!e.state.focused)return;var t=e.display;clearInterval(t.blinker);var n=!0;t.cursorDiv.style.visibility="",e.options.cursorBlinkRate>0?t.blinker=setInterval(function(){t.cursorDiv.style.visibility=(n=!n)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}function Xt(e,t){e.doc.mode.startState&&e.doc.frontier<e.display.viewTo&&e.state.highlight.set(t,Wo(Vt,e))}function Vt(e){var t=e.doc;t.frontier<t.first&&(t.frontier=t.first);if(t.frontier>=e.display.viewTo)return;var n=+(new Date)+e.options.workTime,r=yi(t.mode,Jt(e,t.frontier)),i=[];t.iter(t.frontier,Math.min(t.first+t.size,e.display.viewTo+500),function(s){if(t.frontier>=e.display.viewFrom){var o=s.styles,u=bs(e,s,r,!0);s.styles=u.styles;var a=s.styleClasses,f=u.classes;f?s.styleClasses=f:a&&(s.styleClasses=null);var l=!o||o.length!=s.styles.length||a!=f&&(!a||!f||a.bgClass!=f.bgClass||a.textClass!=f.textClass);for(var c=0;!l&&c<o.length;++c)l=o[c]!=s.styles[c];l&&i.push(t.frontier),s.stateAfter=yi(t.mode,r)}else Es(e,s.text,r),s.stateAfter=t.frontier%5==0?yi(t.mode,r):null;++t.frontier;if(+(new Date)>n)return Xt(e,e.options.workDelay),!0}),i.length&&Bn(e,function(){for(var t=0;t<i.length;t++)zn(e,i[t],"text")})}function $t(e,t,n){var r,i,s=e.doc,o=n?-1:t-(e.doc.mode.innerMode?1e3:100);for(var u=t;u>o;--u){if(u<=s.first)return s.first;var a=Us(s,u-1);if(a.stateAfter&&(!n||u<=s.frontier))return u;var f=Po(a.text,null,e.options.tabSize);if(i==null||r>f)i=u-1,r=f}return i}function Jt(e,t,n){var r=e.doc,i=e.display;if(!r.mode.startState)return!0;var s=$t(e,t,n),o=s>r.first&&Us(r,s-1).stateAfter;return o?o=yi(r.mode,o):o=bi(r.mode),r.iter(s,t,function(n){Es(e,n.text,o);var u=s==t-1||s%5==0||s>=i.viewFrom&&s<i.viewTo;n.stateAfter=u?yi(r.mode,o):null,++s}),n&&(r.frontier=s),o}function Kt(e){return e.lineSpace.offsetTop}function Qt(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function Gt(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=eu(e.measure,Go("pre","x")),n=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,r={left:parseInt(n.paddingLeft),right:parseInt(n.paddingRight)};return!isNaN(r.left)&&!isNaN(r.right)&&(e.cachedPaddingH=r),r}function Yt(e,t,n){var r=e.options.lineWrapping,i=r&&e.display.scroller.clientWidth;if(!t.measure.heights||r&&t.measure.width!=i){var s=t.measure.heights=[];if(r){t.measure.width=i;var o=t.text.firstChild.getClientRects();for(var u=0;u<o.length-1;u++){var a=o[u],f=o[u+1];Math.abs(a.bottom-f.bottom)>2&&s.push((a.bottom+f.top)/2-n.top)}}s.push(n.bottom-n.top)}}function Zt(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var r=0;r<e.rest.length;r++)if(e.rest[r]==t)return{map:e.measure.maps[r],cache:e.measure.caches[r]};for(var r=0;r<e.rest.length;r++)if(Vs(e.rest[r])>n)return{map:e.measure.maps[r],cache:e.measure.caches[r],before:!0}}function en(e,t){t=ts(t);var n=Vs(t),r=e.display.externalMeasured=new qn(e.doc,t,n);r.lineN=n;var i=r.built=Ns(e,r);return r.text=i.pre,eu(e.display.lineMeasure,i.pre),r}function tn(e,t,n,r){return sn(e,rn(e,t),n,r)}function nn(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.display.view[Xn(e,t)];var n=e.display.externalMeasured;if(n&&t>=n.lineN&&t<n.lineN+n.size)return n}function rn(e,t){var n=Vs(t),r=nn(e,n);r&&!r.text?r=null:r&&r.changes&&et(e,r,n,Y(e)),r||(r=en(e,t));var i=Zt(r,t,n);return{line:t,view:r,rect:null,map:i.map,cache:i.cache,before:i.before,hasHeights:!1}}function sn(e,t,n,r,i){t.before&&(n=-1);var s=n+(r||""),o;return t.cache.hasOwnProperty(s)?o=t.cache[s]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(Yt(e,t.view,t.rect),t.hasHeights=!0),o=un(e,t,n,r),o.bogus||(t.cache[s]=o)),{left:o.left,right:o.right,top:i?o.rtop:o.top,bottom:i?o.rbottom:o.bottom}}function un(e,t,n,s){var o=t.map,u,a,f,l;for(var c=0;c<o.length;c+=3){var h=o[c],p=o[c+1];if(n<h)a=0,f=1,l="left";else if(n<p)a=n-h,f=a+1;else if(c==o.length-3||n==p&&o[c+3]>n)f=p-h,a=f-1,n>=p&&(l="right");if(a!=null){u=o[c+2],h==p&&s==(u.insertLeft?"left":"right")&&(l=s);if(s=="left"&&a==0)while(c&&o[c-2]==o[c-3]&&o[c-1].insertLeft)u=o[(c-=3)+2],l="left";if(s=="right"&&a==p-h)while(c<o.length-3&&o[c+3]==o[c+4]&&!o[c+5].insertLeft)u=o[(c+=3)+2],l="right";break}}var d;if(u.nodeType==3){for(var c=0;c<4;c++){while(a&&Qo(t.line.text.charAt(h+a)))--a;while(h+f<p&&Qo(t.line.text.charAt(h+f)))++f;if(r&&i<9&&a==0&&f==p-h)d=u.parentNode.getBoundingClientRect();else if(r&&e.options.lineWrapping){var v=Yo(u,a,f).getClientRects();v.length?d=v[s=="right"?v.length-1:0]:d=on}else d=Yo(u,a,f).getBoundingClientRect()||on;if(d.left||d.right||a==0)break;f=a,a-=1,l="right"}r&&i<11&&(d=an(e.display.measure,d))}else{a>0&&(l=s="right");var v;e.options.lineWrapping&&(v=u.getClientRects()).length>1?d=v[s=="right"?v.length-1:0]:d=u.getBoundingClientRect()}if(r&&i<9&&!a&&(!d||!d.left&&!d.right)){var m=u.parentNode.getClientRects()[0];m?d={left:m.left,right:m.left+Tn(e.display),top:m.top,bottom:m.bottom}:d=on}var g=d.top-t.rect.top,y=d.bottom-t.rect.top,b=(g+y)/2,w=t.view.measure.heights;for(var c=0;c<w.length-1;c++)if(b<w[c])break;var E=c?w[c-1]:0,S=w[c],x={left:(l=="right"?d.right:d.left)-t.rect.left,right:(l=="left"?d.left:d.right)-t.rect.left,top:E,bottom:S};return!d.left&&!d.right&&(x.bogus=!0),e.options.singleCursorHeightPerLine||(x.rtop=g,x.rbottom=y),x}function an(e,t){if(!window.screen||screen.logicalXDPI==null||screen.logicalXDPI==screen.deviceXDPI||!Su(e))return t;var n=screen.logicalXDPI/screen.deviceXDPI,r=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*n,right:t.right*n,top:t.top*r,bottom:t.bottom*r}}function fn(e){if(e.measure){e.measure.cache={},e.measure.heights=null;if(e.rest)for(var t=0;t<e.rest.length;t++)e.measure.caches[t]={}}}function ln(e){e.display.externalMeasure=null,Zo(e.display.lineMeasure);for(var t=0;t<e.display.view.length;t++)fn(e.display.view[t])}function cn(e){ln(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function hn(){return window.pageXOffset||(document.documentElement||document.body).scrollLeft}function pn(){return window.pageYOffset||(document.documentElement||document.body).scrollTop}function dn(e,t,n,r){if(t.widgets)for(var i=0;i<t.widgets.length;++i)if(t.widgets[i].above){var s=fs(t.widgets[i]);n.top+=s,n.bottom+=s}if(r=="line")return n;r||(r="local");var o=Js(t);r=="local"?o+=Kt(e.display):o-=e.display.viewOffset;if(r=="page"||r=="window"){var u=e.display.lineSpace.getBoundingClientRect();o+=u.top+(r=="window"?0:pn());var a=u.left+(r=="window"?0:hn());n.left+=a,n.right+=a}return n.top+=o,n.bottom+=o,n}function vn(e,t,n){if(n=="div")return t;var r=t.left,i=t.top;if(n=="page")r-=hn(),i-=pn();else if(n=="local"||!n){var s=e.display.sizer.getBoundingClientRect();r+=s.left,i+=s.top}var o=e.display.lineSpace.getBoundingClientRect();return{left:r-o.left,top:i-o.top}}function mn(e,t,n,r,i){return r||(r=Us(e.doc,t.line)),dn(e,r,tn(e,r,t.ch,i),n)}function gn(e,t,n,r,i,s){function o(t,o){var u=sn(e,i,t,o?"right":"left",s);return o?u.left=u.right:u.right=u.left,dn(e,r,u,n)}function u(e,t){var n=a[t],r=n.level%2;return e==Nu(n)&&t&&n.level<a[t-1].level?(n=a[--t],e=Cu(n)-(n.level%2?0:1),r=!0):e==Cu(n)&&t<a.length-1&&n.level<a[t+1].level&&(n=a[++t],e=Nu(n)-n.level%2,r=!1),r&&e==n.to&&e>n.from?o(e-1):o(e,r)}r=r||Us(e.doc,t.line),i||(i=rn(e,r));var a=Ks(r),f=t.ch;if(!a)return o(f);var l=Pu(a,f),c=u(f,l);return Du!=null&&(c.other=u(f,Du)),c}function yn(e,t){var n=0,t=St(e.doc,t);e.options.lineWrapping||(n=Tn(e.display)*t.ch);var r=Us(e.doc,t.line),i=Js(r)+Kt(e.display);return{left:n,right:n,top:i,bottom:i+r.height}}function bn(e,t,n,r){var i=ht(e,t);return i.xRel=r,n&&(i.outside=!0),i}function wn(e,t,n){var r=e.doc;n+=e.display.viewOffset;if(n<0)return bn(r.first,0,!0,-1);var i=$s(r,n),s=r.first+r.size-1;if(i>s)return bn(r.first+r.size-1,Us(r,s).text.length,!0,1);t<0&&(t=0);var o=Us(r,i);for(;;){var u=En(e,o,i,t,n),a=Zi(o),f=a&&a.find(0,!0);if(!a||!(u.ch>f.from.ch||u.ch==f.from.ch&&u.xRel>0))return u;i=Vs(o=f.to.line)}}function En(e,t,n,r,i){function f(r){var i=gn(e,ht(n,r),"line",t,a);return o=!0,s>i.bottom?i.left-u:s<i.top?i.left+u:(o=!1,i.left)}var s=i-Js(t),o=!1,u=2*e.display.wrapper.clientWidth,a=rn(e,t),l=Ks(t),c=t.text.length,h=ku(t),p=Lu(t),d=f(h),v=o,m=f(p),g=o;if(r>m)return bn(n,p,g,1);for(;;){if(l?p==h||p==Bu(t,h,1):p-h<=1){var y=r<d||r-d<=m-r?h:p,b=r-(y==h?d:m);while(Qo(t.text.charAt(y)))++y;var w=bn(n,y,y==h?v:g,b<-1?-1:b>1?1:0);return w}var E=Math.ceil(c/2),S=h+E;if(l){S=h;for(var x=0;x<E;++x)S=Bu(t,S,1)}var T=f(S);if(T>r){p=S,m=T;if(g=o)m+=1e3;c=E}else h=S,d=T,v=o,c-=E}}function xn(e){if(e.cachedTextHeight!=null)return e.cachedTextHeight;if(Sn==null){Sn=Go("pre");for(var t=0;t<49;++t)Sn.appendChild(document.createTextNode("x")),Sn.appendChild(Go("br"));Sn.appendChild(document.createTextNode("x"))}eu(e.measure,Sn);var n=Sn.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),Zo(e.measure),n||1}function Tn(e){if(e.cachedCharWidth!=null)return e.cachedCharWidth;var t=Go("span","xxxxxxxxxx"),n=Go("pre",[t]);eu(e.measure,n);var r=t.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function kn(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,id:++Cn},Nn?Nn.ops.push(e.curOp):e.curOp.ownsGroup=Nn={ops:[e.curOp],delayedCallbacks:[]}}function Ln(e){var t=e.delayedCallbacks,n=0;do{for(;n<t.length;n++)t[n]();for(var r=0;r<e.ops.length;r++){var i=e.ops[r];if(i.cursorActivityHandlers)while(i.cursorActivityCalled<i.cursorActivityHandlers.length)i.cursorActivityHandlers[i.cursorActivityCalled++](i.cm)}}while(n<t.length)}function An(e){var t=e.curOp,n=t.ownsGroup;if(!n)return;try{Ln(n)}finally{Nn=null;for(var r=0;r<n.ops.length;r++)n.ops[r].cm.curOp=null;On(n)}}function On(e){var t=e.ops;for(var n=0;n<t.length;n++)Mn(t[n]);for(var n=0;n<t.length;n++)_n(t[n]);for(var n=0;n<t.length;n++)Dn(t[n]);for(var n=0;n<t.length;n++)Pn(t[n]);for(var n=0;n<t.length;n++)Hn(t[n])}function Mn(e){var t=e.cm,n=t.display;e.updateMaxLine&&P(t),e.mustUpdate=e.viewChanged||e.forceUpdate||e.scrollTop!=null||e.scrollToPos&&(e.scrollToPos.from.line<n.viewFrom||e.scrollToPos.to.line>=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new W(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function _n(e){e.updatedDisplay=e.mustUpdate&&X(e.cm,e.update)}function Dn(e){var t=e.cm,n=t.display;e.updatedDisplay&&Q(t),e.barMeasure=j(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=tn(t,n.maxLine,n.maxLine.text.length).left+3,e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo+Lo-n.scroller.clientWidth));if(e.updatedDisplay||e.selectionChanged)e.newSelectionNodes=It(t)}function Pn(e){var t=e.cm;e.adjustWidthTo!=null&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft<t.doc.scrollLeft&&br(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1),e.newSelectionNodes&&qt(t,e.newSelectionNodes),e.updatedDisplay&&J(t,e.barMeasure),(e.updatedDisplay||e.startHeight!=t.doc.height)&&F(t,e.barMeasure),e.selectionChanged&&Wt(t),t.state.focused&&e.updateInput&&Zn(t,e.typing)}function Hn(e){var t=e.cm,n=t.display,r=t.doc;e.adjustWidthTo!=null&&Math.abs(e.barMeasure.scrollWidth-t.display.scroller.scrollWidth)>1&&F(t),e.updatedDisplay&&V(t,e.update),n.wheelStartX!=null&&(e.scrollTop!=null||e.scrollLeft!=null||e.scrollToPos)&&(n.wheelStartX=n.wheelStartY=null);if(e.scrollTop!=null&&(n.scroller.scrollTop!=e.scrollTop||e.forceScroll)){var i=Math.max(0,Math.min(n.scroller.scrollHeight-n.scroller.clientHeight,e.scrollTop));n.scroller.scrollTop=n.scrollbarV.scrollTop=r.scrollTop=i}if(e.scrollLeft!=null&&(n.scroller.scrollLeft!=e.scrollLeft||e.forceScroll)){var o=Math.max(0,Math.min(n.scroller.scrollWidth-n.scroller.clientWidth,e.scrollLeft));n.scroller.scrollLeft=n.scrollbarH.scrollLeft=r.scrollLeft=o,q(t)}if(e.scrollToPos){var u=Yr(t,St(r,e.scrollToPos.from),St(r,e.scrollToPos.to),e.scrollToPos.margin);e.scrollToPos.isCursor&&t.state.focused&&Gr(t,u)}var a=e.maybeHiddenMarkers,f=e.maybeUnhiddenMarkers;if(a)for(var l=0;l<a.length;++l)a[l].lines.length||wo(a[l],"hide");if(f)for(var l=0;l<f.length;++l)f[l].lines.length&&wo(f[l],"unhide");n.wrapper.offsetHeight&&(r.scrollTop=t.display.scroller.scrollTop),e.updatedDisplay&&s&&(t.options.lineWrapping&&K(t,e.barMeasure),e.barMeasure.scrollWidth>e.barMeasure.clientWidth&&e.barMeasure.scrollWidth<e.barMeasure.clientWidth+1&&!B(t)&&F(t)),e.changeObjs&&wo(t,"changes",t,e.changeObjs)}function Bn(e,t){if(e.curOp)return t();kn(e);try{return t()}finally{An(e)}}function jn(e,t){return function(){if(e.curOp)return t.apply(e,arguments);kn(e);try{return t.apply(e,arguments)}finally{An(e)}}}function Fn(e){return function(){if(this.curOp)return e.apply(this,arguments);kn(this);try{return e.apply(this,arguments)}finally{An(this)}}}function In(e){return function(){var t=this.cm;if(!t||t.curOp)return e.apply(this,arguments);kn(t);try{return e.apply(this,arguments)}finally{An(t)}}}function qn(e,t,n){this.line=t,this.rest=ns(t),this.size=this.rest?Vs(Fo(this.rest))-n+1:1,this.node=this.text=null,this.hidden=ss(e,t)}function Rn(e,t,n){var r=[],i;for(var s=t;s<n;s=i){var o=new qn(e.doc,Us(e.doc,s),s);i=s+o.size,r.push(o)}return r}function Un(e,t,n,r){t==null&&(t=e.doc.first),n==null&&(n=e.doc.first+e.doc.size),r||(r=0);var i=e.display;r&&n<i.viewTo&&(i.updateLineNumbers==null||i.updateLineNumbers>t)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0;if(t>=i.viewTo)E&&rs(e.doc,t)<i.viewTo&&Wn(e);else if(n<=i.viewFrom)E&&is(e.doc,n+r)>i.viewFrom?Wn(e):(i.viewFrom+=r,i.viewTo+=r);else if(t<=i.viewFrom&&n>=i.viewTo)Wn(e);else if(t<=i.viewFrom){var s=Vn(e,n,n+r,1);s?(i.view=i.view.slice(s.index),i.viewFrom=s.lineN,i.viewTo+=r):Wn(e)}else if(n>=i.viewTo){var s=Vn(e,t,t,-1);s?(i.view=i.view.slice(0,s.index),i.viewTo=s.lineN):Wn(e)}else{var o=Vn(e,t,t,-1),u=Vn(e,n,n+r,1);o&&u?(i.view=i.view.slice(0,o.index).concat(Rn(e,o.lineN,u.lineN)).concat(i.view.slice(u.index)),i.viewTo+=r):Wn(e)}var a=i.externalMeasured;a&&(n<a.lineN?a.lineN+=r:t<a.lineN+a.size&&(i.externalMeasured=null))}function zn(e,t,n){e.curOp.viewChanged=!0;var r=e.display,i=e.display.externalMeasured;i&&t>=i.lineN&&t<i.lineN+i.size&&(r.externalMeasured=null);if(t<r.viewFrom||t>=r.viewTo)return;var s=r.view[Xn(e,t)];if(s.node==null)return;var o=s.changes||(s.changes=[]);qo(o,n)==-1&&o.push(n)}function Wn(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function Xn(e,t){if(t>=e.display.viewTo)return null;t-=e.display.viewFrom;if(t<0)return null;var n=e.display.view;for(var r=0;r<n.length;r++){t-=n[r].size;if(t<0)return r}}function Vn(e,t,n,r){var i=Xn(e,t),s,o=e.display.view;if(!E||n==e.doc.first+e.doc.size)return{index:i,lineN:n};for(var u=0,a=e.display.viewFrom;u<i;u++)a+=o[u].size;if(a!=t){if(r>0){if(i==o.length-1)return null;s=a+o[i].size-t,i++}else s=a-t;t+=s,n+=s}while(rs(e.doc,n)!=n){if(i==(r<0?0:o.length-1))return null;n+=r*o[i-(r<0?1:0)].size,i+=r}return{index:i,lineN:n}}function $n(e,t,n){var r=e.display,i=r.view;i.length==0||t>=r.viewTo||n<=r.viewFrom?(r.view=Rn(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=Rn(e,t,r.viewFrom).concat(r.view):r.viewFrom<t&&(r.view=r.view.slice(Xn(e,t))),r.viewFrom=t,r.viewTo<n?r.view=r.view.concat(Rn(e,r.viewTo,n)):r.viewTo>n&&(r.view=r.view.slice(0,Xn(e,n)))),r.viewTo=n}function Jn(e){var t=e.display.view,n=0;for(var r=0;r<t.length;r++){var i=t[r];!i.hidden&&(!i.node||i.changes)&&++n}return n}function Kn(e){if(e.display.pollingFast)return;e.display.poll.set(e.options.pollInterval,function(){Yn(e),e.state.focused&&Kn(e)})}function Qn(e){function n(){var r=Yn(e);!r&&!t?(t=!0,e.display.poll.set(60,n)):(e.display.pollingFast=!1,Kn(e))}var t=!1;e.display.pollingFast=!0,e.display.poll.set(20,n)}function Yn(e){var t=e.display.input,n=e.display.prevInput,s=e.doc;if(!e.state.focused||bu(t)&&!n||nr(e)||e.options.disableInput||e.state.keySeq)return!1;e.state.pasteIncoming&&e.state.fakedLastChar&&(t.value=t.value.substring(0,t.value.length-1),e.state.fakedLastChar=!1);var o=t.value;if(o==n&&!e.somethingSelected())return!1;if(r&&i>=9&&e.display.inputHasSelection===o||v&&/[\uf700-\uf7ff]/.test(o))return Zn(e),!1;var u=!e.curOp;u&&kn(e),e.display.shift=!1,o.charCodeAt(0)==8203&&s.sel==e.display.selForContextMenu&&!n&&(n="​");var a=0,f=Math.min(n.length,o.length);while(a<f&&n.charCodeAt(a)==o.charCodeAt(a))++a;var l=o.slice(a),c=yu(l),h=null;e.state.pasteIncoming&&s.sel.ranges.length>1&&(Gn&&Gn.join("\n")==l?h=s.sel.ranges.length%Gn.length==0&&Ro(Gn,yu):c.length==s.sel.ranges.length&&(h=Ro(c,function(e){return[e]})));for(var p=s.sel.ranges.length-1;p>=0;p--){var d=s.sel.ranges[p],m=d.from(),g=d.to();a<n.length?m=ht(m.line,m.ch-(n.length-a)):e.state.overwrite&&d.empty()&&!e.state.pasteIncoming&&(g=ht(g.line,Math.min(Us(s,g.line).text.length,g.ch+Fo(c).length)));var y=e.curOp.updateInput,b={from:m,to:g,text:h?h[p%h.length]:c,origin:e.state.pasteIncoming?"paste":e.state.cutIncoming?"cut":"+input"};Wr(e.doc,b),So(e,"inputRead",e,b);if(l&&!e.state.pasteIncoming&&e.options.electricChars&&e.options.smartIndent&&d.head.ch<100&&(!p||s.sel.ranges[p-1].head.line!=d.head.line)){var w=e.getModeAt(d.head),E=Fr(b);if(w.electricChars){for(var S=0;S<w.electricChars.length;S++)if(l.indexOf(w.electricChars.charAt(S))>-1){ii(e,E.line,"smart");break}}else w.electricInput&&w.electricInput.test(Us(s,E.line).text.slice(0,E.ch))&&ii(e,E.line,"smart")}}return ni(e),e.curOp.updateInput=y,e.curOp.typing=!0,o.length>1e3||o.indexOf("\n")>-1?t.value=e.display.prevInput="":e.display.prevInput=o,u&&An(e),e.state.pasteIncoming=e.state.cutIncoming=!1,!0}function Zn(e,t){var n,s,o=e.doc;if(e.somethingSelected()){e.display.prevInput="";var u=o.sel.primary();n=wu&&(u.to().line-u.from().line>100||(s=e.getSelection()).length>1e3);var a=n?"-":s||e.getSelection();e.display.input.value=a,e.state.focused&&Io(e.display.input),r&&i>=9&&(e.display.inputHasSelection=a)}else t||(e.display.prevInput=e.display.input.value="",r&&i>=9&&(e.display.inputHasSelection=null));e.display.inaccurateSelection=n}function er(e){e.options.readOnly!="nocursor"&&(!d||nu()!=e.display.input)&&e.display.input.focus()}function tr(e){e.state.focused||(er(e),Pr(e))}function nr(e){return e.options.readOnly||e.doc.cantEdit}function rr(e){function n(){e.state.focused&&setTimeout(Wo(er,e),0)}function o(t){To(e,t)||vo(t)}function u(n){if(e.somethingSelected())Gn=e.getSelections(),t.inaccurateSelection&&(t.prevInput="",t.inaccurateSelection=!1,t.input.value=Gn.join("\n"),Io(t.input));else{var r=[],i=[];for(var s=0;s<e.doc.sel.ranges.length;s++){var o=e.doc.sel.ranges[s].head.line,u={anchor:ht(o,0),head:ht(o+1,0)};i.push(u),r.push(e.getRange(u.anchor,u.head))}n.type=="cut"?e.setSelections(i,null,Oo):(t.prevInput="",t.input.value=r.join("\n"),Io(t.input)),Gn=r}n.type=="cut"&&(e.state.cutIncoming=!0)}var t=e.display;yo(t.scroller,"mousedown",jn(e,ur)),r&&i<11?yo(t.scroller,"dblclick",jn(e,function(t){if(To(e,t))return;var n=or(e,t);if(!n||dr(e,t)||sr(e.display,t))return;co(t);var r=e.findWordAt(n);kt(e.doc,r.anchor,r.head)})):yo(t.scroller,"dblclick",function(t){To(e,t)||co(t)}),yo(t.lineSpace,"selectstart",function(e){sr(t,e)||co(e)}),b||yo(t.scroller,"contextmenu",function(t){Br(e,t)}),yo(t.scroller,"scroll",function(){t.scroller.clientHeight&&(yr(e,t.scroller.scrollTop),br(e,t.scroller.scrollLeft,!0),wo(e,"scroll",e))}),yo(t.scrollbarV,"scroll",function(){t.scroller.clientHeight&&yr(e,t.scrollbarV.scrollTop)}),yo(t.scrollbarH,"scroll",function(){t.scroller.clientHeight&&br(e,t.scrollbarH.scrollLeft)}),yo(t.scroller,"mousewheel",function(t){Sr(e,t)}),yo(t.scroller,"DOMMouseScroll",function(t){Sr(e,t)}),yo(t.scrollbarH,"mousedown",n),yo(t.scrollbarV,"mousedown",n),yo(t.wrapper,"scroll",function(){t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),yo(t.input,"keyup",function(t){_r.call(e,t)}),yo(t.input,"input",function(){r&&i>=9&&e.display.inputHasSelection&&(e.display.inputHasSelection=null),Qn(e)}),yo(t.input,"keydown",jn(e,Or)),yo(t.input,"keypress",jn(e,Dr)),yo(t.input,"focus",Wo(Pr,e)),yo(t.input,"blur",Wo(Hr,e)),e.options.dragDrop&&(yo(t.scroller,"dragstart",function(t){gr(e,t)}),yo(t.scroller,"dragenter",o),yo(t.scroller,"dragover",o),yo(t.scroller,"drop",jn(e,mr))),yo(t.scroller,"paste",function(n){if(sr(t,n))return;e.state.pasteIncoming=!0,er(e),Qn(e)}),yo(t.input,"paste",function(){if(s&&!e.state.fakedLastChar&&!(new Date-e.state.lastMiddleDown<200)){var n=t.input.selectionStart,r=t.input.selectionEnd;t.input.value+="$",t.input.selectionEnd=r,t.input.selectionStart=n,e.state.fakedLastChar=!0}e.state.pasteIncoming=!0,Qn(e)}),yo(t.input,"cut",u),yo(t.input,"copy",u),l&&yo(t.sizer,"mouseup",function(){nu()==t.input&&t.input.blur(),er(e)})}function ir(e){var t=e.display;if(t.lastWrapHeight==t.wrapper.clientHeight&&t.lastWrapWidth==t.wrapper.clientWidth)return;t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,e.setSize()}function sr(e,t){for(var n=mo(t);n!=e.wrapper;n=n.parentNode)if(!n||n.ignoreEvents||n.parentNode==e.sizer&&n!=e.mover)return!0}function or(e,t,n,r){var i=e.display;if(!n){var s=mo(t);if(s==i.scrollbarH||s==i.scrollbarV||s==i.scrollbarFiller||s==i.gutterFiller)return null}var o,u,a=i.lineSpace.getBoundingClientRect();try{o=t.clientX-a.left,u=t.clientY-a.top}catch(t){return null}var f=wn(e,o,u),l;if(r&&f.xRel==1&&(l=Us(e.doc,f.line).text).length==f.ch){var c=Po(l,l.length,e.options.tabSize)-l.length;f=ht(f.line,Math.max(0,Math.round((o-Gt(e.display).left)/Tn(e.display))-c))}return f}function ur(e){if(To(this,e))return;var t=this,n=t.display;n.shift=e.shiftKey;if(sr(n,e)){s||(n.scroller.draggable=!1,setTimeout(function(){n.scroller.draggable=!0},100));return}if(dr(t,e))return;var r=or(t,e);window.focus();switch(go(e)){case 1:r?lr(t,e,r):mo(e)==n.scroller&&co(e);break;case 2:s&&(t.state.lastMiddleDown=+(new Date)),r&&kt(t.doc,r),setTimeout(Wo(er,t),20),co(e);break;case 3:b&&Br(t,e)}}function lr(e,t,n){setTimeout(Wo(tr,e),0);var r=+(new Date),i;fr&&fr.time>r-400&&pt(fr.pos,n)==0?i="triple":ar&&ar.time>r-400&&pt(ar.pos,n)==0?(i="double",fr={time:r,pos:n}):(i="single",ar={time:r,pos:n});var s=e.doc.sel,o=v?t.metaKey:t.ctrlKey;e.options.dragDrop&&cu&&!nr(e)&&i=="single"&&s.contains(n)>-1&&s.somethingSelected()?cr(e,t,n,o):hr(e,t,n,i,o)}function cr(e,t,n,o){var u=e.display,a=jn(e,function(f){s&&(u.scroller.draggable=!1),e.state.draggingText=!1,bo(document,"mouseup",a),bo(u.scroller,"drop",a),Math.abs(t.clientX-f.clientX)+Math.abs(t.clientY-f.clientY)<10&&(co(f),o||kt(e.doc,n),er(e),r&&i==9&&setTimeout(function(){document.body.focus(),er(e)},20))});s&&(u.scroller.draggable=!0),e.state.draggingText=a,u.scroller.dragDrop&&u.scroller.dragDrop(),yo(document,"mouseup",a),yo(u.scroller,"drop",a)}function hr(e,t,n,r,i){function p(t){if(pt(h,t)==0)return;h=t;if(r=="rect"){var i=[],s=e.options.tabSize,l=Po(Us(o,n.line).text,n.ch,s),c=Po(Us(o,t.line).text,t.ch,s),p=Math.min(l,c),d=Math.max(l,c);for(var v=Math.min(n.line,t.line),m=Math.min(e.lastLine(),Math.max(n.line,t.line));v<=m;v++){var g=Us(o,v).text,y=Ho(g,p,s);p==d?i.push(new yt(ht(v,y),ht(v,y))):g.length>y&&i.push(new yt(ht(v,y),ht(v,Ho(g,d,s))))}i.length||i.push(new yt(n,n)),Dt(o,bt(f.ranges.slice(0,a).concat(i),a),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b=u,w=b.anchor,E=t;if(r!="single"){if(r=="double")var S=e.findWordAt(t);else var S=new yt(ht(t.line,0),St(o,ht(t.line+1,0)));pt(S.anchor,w)>0?(E=S.head,w=mt(b.from(),S.anchor)):(E=S.anchor,w=vt(b.to(),S.head))}var i=f.ranges.slice(0);i[a]=new yt(St(o,w),E),Dt(o,bt(i,a),Mo)}}function m(t){var n=++v,i=or(e,t,!0,r=="rect");if(!i)return;if(pt(i,h)!=0){tr(e),p(i);var u=I(s,o);(i.line>=u.to||i.line<u.from)&&setTimeout(jn(e,function(){v==n&&m(t)}),150)}else{var a=t.clientY<d.top?-20:t.clientY>d.bottom?20:0;a&&setTimeout(jn(e,function(){if(v!=n)return;s.scroller.scrollTop+=a,m(t)}),50)}}function g(t){v=Infinity,co(t),er(e),bo(document,"mousemove",y),bo(document,"mouseup",b),o.history.lastSelOrigin=null}var s=e.display,o=e.doc;co(t);var u,a,f=o.sel;i&&!t.shiftKey?(a=o.sel.contains(n),a>-1?u=o.sel.ranges[a]:u=new yt(n,n)):u=o.sel.primary();if(t.altKey)r="rect",i||(u=new yt(n,n)),n=or(e,t,!0,!0),a=-1;else if(r=="double"){var l=e.findWordAt(n);e.display.shift||o.extend?u=Ct(o,u,l.anchor,l.head):u=l}else if(r=="triple"){var c=new yt(ht(n.line,0),St(o,ht(n.line+1,0)));e.display.shift||o.extend?u=Ct(o,u,c.anchor,c.head):u=c}else u=Ct(o,u,n);i?a>-1?At(o,a,u,Mo):(a=o.sel.ranges.length,Dt(o,bt(o.sel.ranges.concat([u]),a),{scroll:!1,origin:"*mouse"})):(a=0,Dt(o,new gt([u],0),Mo),f=o.sel);var h=n,d=s.wrapper.getBoundingClientRect(),v=0,y=jn(e,function(e){go(e)?m(e):g(e)}),b=jn(e,g);yo(document,"mousemove",y),yo(document,"mouseup",b)}function pr(e,t,n,r,i){try{var s=t.clientX,o=t.clientY}catch(t){return!1}if(s>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&co(t);var u=e.display,a=u.lineDiv.getBoundingClientRect();if(o>a.bottom||!Co(e,n))return po(t);o-=a.top-u.viewOffset;for(var f=0;f<e.options.gutters.length;++f){var l=u.gutters.childNodes[f];if(l&&l.getBoundingClientRect().right>=s){var c=$s(e.doc,o),h=e.options.gutters[f];return i(e,n,e,c,h,t),po(t)}}}function dr(e,t){return pr(e,t,"gutterClick",!0,So)}function mr(e){var t=this;if(To(t,e)||sr(t.display,e))return;co(e),r&&(vr=+(new Date));var n=or(t,e,!0),i=e.dataTransfer.files;if(!n||nr(t))return;if(i&&i.length&&window.FileReader&&window.File){var s=i.length,o=Array(s),u=0,a=function(e,r){var i=new FileReader;i.onload=jn(t,function(){o[r]=i.result;if(++u==s){n=St(t.doc,n);var e={from:n,to:n,text:yu(o.join("\n")),origin:"paste"};Wr(t.doc,e),_t(t.doc,wt(n,Fr(e)))}}),i.readAsText(e)};for(var f=0;f<s;++f)a(i[f],f)}else{if(t.state.draggingText&&t.doc.sel.contains(n)>-1){t.state.draggingText(e),setTimeout(Wo(er,t),20);return}try{var o=e.dataTransfer.getData("Text");if(o){if(t.state.draggingText&&(v?!e.metaKey:!e.ctrlKey))var l=t.listSelections();Pt(t.doc,wt(n,n));if(l)for(var f=0;f<l.length;++f)Qr(t.doc,"",l[f].anchor,l[f].head,"drag");t.replaceSelection(o,"around","paste"),er(t)}}catch(e){}}}function gr(e,t){if(r&&(!e.state.draggingText||+(new Date)-vr<100)){vo(t);return}if(To(e,t)||sr(e.display,t))return;t.dataTransfer.setData("Text",e.getSelection());if(t.dataTransfer.setDragImage&&!f){var n=Go("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a&&(n.width=n.height=1,e.display.wrapper.appendChild(n),n._top=n.offsetTop),t.dataTransfer.setDragImage(n,0,0),a&&n.parentNode.removeChild(n)}}function yr(t,n){if(Math.abs(t.doc.scrollTop-n)<2)return;t.doc.scrollTop=n,e||$(t,{top:n}),t.display.scroller.scrollTop!=n&&(t.display.scroller.scrollTop=n),t.display.scrollbarV.scrollTop!=n&&(t.display.scrollbarV.scrollTop=n),e&&$(t),Xt(t,100)}function br(e,t,n){if(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)return;t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),e.doc.scrollLeft=t,q(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbarH.scrollLeft!=t&&(e.display.scrollbarH.scrollLeft=t)}function Sr(t,n){var r=n.wheelDeltaX,i=n.wheelDeltaY;r==null&&n.detail&&n.axis==n.HORIZONTAL_AXIS&&(r=n.detail),i==null&&n.detail&&n.axis==n.VERTICAL_AXIS?i=n.detail:i==null&&(i=n.wheelDelta);var o=t.display,u=o.scroller;if(!(r&&u.scrollWidth>u.clientWidth||i&&u.scrollHeight>u.clientHeight))return;if(i&&v&&s)e:for(var f=n.target,l=o.view;f!=u;f=f.parentNode)for(var c=0;c<l.length;c++)if(l[c].node==f){t.display.currentWheelTarget=f;break e}if(r&&!e&&!a&&Er!=null){i&&yr(t,Math.max(0,Math.min(u.scrollTop+i*Er,u.scrollHeight-u.clientHeight))),br(t,Math.max(0,Math.min(u.scrollLeft+r*Er,u.scrollWidth-u.clientWidth))),co(n),o.wheelStartX=null;return}if(i&&Er!=null){var h=i*Er,p=t.doc.scrollTop,d=p+o.wrapper.clientHeight;h<0?p=Math.max(0,p+h-50):d=Math.min(t.doc.height,d+h+50),$(t,{top:p,bottom:d})}wr<20&&(o.wheelStartX==null?(o.wheelStartX=u.scrollLeft,o.wheelStartY=u.scrollTop,o.wheelDX=r,o.wheelDY=i,setTimeout(function(){if(o.wheelStartX==null)return;var e=u.scrollLeft-o.wheelStartX,t=u.scrollTop-o.wheelStartY,n=t&&o.wheelDY&&t/o.wheelDY||e&&o.wheelDX&&e/o.wheelDX;o.wheelStartX=o.wheelStartY=null;if(!n)return;Er=(Er*wr+n)/(wr+1),++wr},200)):(o.wheelDX+=r,o.wheelDY+=i))}function xr(e,t,n){if(typeof t=="string"){t=wi[t];if(!t)return!1}e.display.pollingFast&&Yn(e)&&(e.display.pollingFast=!1);var r=e.display.shift,i=!1;try{nr(e)&&(e.state.suppressEdits=!0),n&&(e.display.shift=!1),i=t(e)!=Ao}finally{e.display.shift=r,e.state.suppressEdits=!1}return i}function Tr(e,t,n){for(var r=0;r<e.state.keyMaps.length;r++){var i=xi(t,e.state.keyMaps[r],n);if(i)return i}return e.options.extraKeys&&xi(t,e.options.extraKeys,n)||xi(t,e.options.keyMap,n)}function Cr(e,t,n,r){var i=e.state.keySeq;if(i){if(Ti(t))return"handled";Nr.set(50,function(){e.state.keySeq==i&&(e.state.keySeq=null,Zn(e))}),t=i+" "+t}var s=Tr(e,t,r);s=="multi"&&(e.state.keySeq=t),s=="handled"&&So(e,"keyHandled",e,t,n);if(s=="handled"||s=="multi")co(n),Wt(e);return i&&!s&&/\'$/.test(t)?(co(n),!0):!!s}function kr(e,t){var n=Ni(t,!0);return n?t.shiftKey&&!e.state.keySeq?Cr(e,"Shift-"+n,t,function(t){return xr(e,t,!0)})||Cr(e,n,t,function(t){if(typeof t=="string"?/^go[A-Z]/.test(t):t.motion)return xr(e,t)}):Cr(e,n,t,function(t){return xr(e,t)}):!1}function Lr(e,t,n){return Cr(e,"'"+n+"'",t,function(t){return xr(e,t,!0)})}function Or(e){var t=this;tr(t);if(To(t,e))return;r&&i<11&&e.keyCode==27&&(e.returnValue=!1);var n=e.keyCode;t.display.shift=n==16||e.shiftKey;var s=kr(t,e);a&&(Ar=s?n:null,!s&&n==88&&!wu&&(v?e.metaKey:e.ctrlKey)&&t.replaceSelection("",null,"cut")),n==18&&!/\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className)&&Mr(t)}function Mr(e){function n(e){if(e.keyCode==18||!e.altKey)iu(t,"CodeMirror-crosshair"),bo(document,"keyup",n),bo(document,"mouseover",n)}var t=e.display.lineDiv;su(t,"CodeMirror-crosshair"),yo(document,"keyup",n),yo(document,"mouseover",n)}function _r(e){e.keyCode==16&&(this.doc.sel.shift=!1),To(this,e)}function Dr(e){var t=this;if(To(t,e)||e.ctrlKey&&!e.altKey||v&&e.metaKey)return;var n=e.keyCode,s=e.charCode;if(a&&n==Ar){Ar=null,co(e);return}if((a&&(!e.which||e.which<10)||l)&&kr(t,e))return;var o=String.fromCharCode(s==null?n:s);if(Lr(t,e,o))return;r&&i>=9&&(t.display.inputHasSelection=null),Qn(t)}function Pr(e){if(e.options.readOnly=="nocursor")return;e.state.focused||(wo(e,"focus",e),e.state.focused=!0,su(e.display.wrapper,"CodeMirror-focused"),!e.curOp&&e.display.selForContextMenu!=e.doc.sel&&(Zn(e),s&&setTimeout(Wo(Zn,e,!0),0))),Kn(e),Wt(e)}function Hr(e){e.state.focused&&(wo(e,"blur",e),e.state.focused=!1,iu(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150)}function Br(e,t){function h(){if(n.input.selectionStart!=null){var t=e.somethingSelected(),r=n.input.value="​"+(t?n.input.value:"");n.prevInput=t?"":"​",n.input.selectionStart=1,n.input.selectionEnd=r.length,n.selForContextMenu=e.doc.sel}}function p(){n.inputDiv.style.position="relative",n.input.style.cssText=l,r&&i<9&&(n.scrollbarV.scrollTop=n.scroller.scrollTop=u),Kn(e);if(n.input.selectionStart!=null){(!r||r&&i<9)&&h();var t=0,s=function(){n.selForContextMenu==e.doc.sel&&n.input.selectionStart==0?jn(e,wi.selectAll)(e):t++<10?n.detectingSelectAll=setTimeout(s,500):Zn(e)};n.detectingSelectAll=setTimeout(s,200)}}if(To(e,t,"contextmenu"))return;var n=e.display;if(sr(n,t)||jr(e,t))return;var o=or(e,t),u=n.scroller.scrollTop;if(!o||a)return;var f=e.options.resetSelectionOnContextMenu;f&&e.doc.sel.contains(o)==-1&&jn(e,Dt)(e.doc,wt(o),Oo);var l=n.input.style.cssText;n.inputDiv.style.position="absolute",n.input.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(t.clientY-5)+"px; left: "+(t.clientX-5)+"px; z-index: 1000; background: "+(r?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";if(s)var c=window.scrollY;er(e),s&&window.scrollTo(null,c),Zn(e),e.somethingSelected()||(n.input.value=n.prevInput=" "),n.selForContextMenu=e.doc.sel,clearTimeout(n.detectingSelectAll),r&&i>=9&&h();if(b){vo(t);var d=function(){bo(window,"mouseup",d),setTimeout(p,20)};yo(window,"mouseup",d)}else setTimeout(p,50)}function jr(e,t){return Co(e,"gutterContextMenu")?pr(e,t,"gutterContextMenu",!1,wo):!1}function Ir(e,t){if(pt(e,t.from)<0)return e;if(pt(e,t.to)<=0)return Fr(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=Fr(t).ch-t.to.ch),ht(n,r)}function qr(e,t){var n=[];for(var r=0;r<e.sel.ranges.length;r++){var i=e.sel.ranges[r];n.push(new yt(Ir(i.anchor,t),Ir(i.head,t)))}return bt(n,e.sel.primIndex)}function Rr(e,t,n){return e.line==t.line?ht(n.line,e.ch-t.ch+n.ch):ht(n.line+(e.line-t.line),e.ch)}function Ur(e,t,n){var r=[],i=ht(e.first,0),s=i;for(var o=0;o<t.length;o++){var u=t[o],a=Rr(u.from,i,s),f=Rr(Fr(u),i,s);i=u.to,s=f;if(n=="around"){var l=e.sel.ranges[o],c=pt(l.head,l.anchor)<0;r[o]=new yt(c?f:a,c?a:f)}else r[o]=new yt(a,a)}return new gt(r,e.sel.primIndex)}function zr(e,t,n){var r={canceled:!1,from:t.from,to:t.to,text:t.text,origin:t.origin,cancel:function(){this.canceled=!0}};return n&&(r.update=function(t,n,r,i){t&&(this.from=St(e,t)),n&&(this.to=St(e,n)),r&&(this.text=r),i!==undefined&&(this.origin=i)}),wo(e,"beforeChange",e,r),e.cm&&wo(e.cm,"beforeChange",e.cm,r),r.canceled?null:{from:r.from,to:r.to,text:r.text,origin:r.origin}}function Wr(e,t,n){if(e.cm){if(!e.cm.curOp)return jn(e.cm,Wr)(e,t,n);if(e.cm.state.suppressEdits)return}if(Co(e,"beforeChange")||e.cm&&Co(e.cm,"beforeChange")){t=zr(e,t,!0);if(!t)return}var r=w&&!n&&Xi(e,t.from,t.to);if(r)for(var i=r.length-1;i>=0;--i)Xr(e,{from:r[i].from,to:r[i].to,text:i?[""]:t.text});else Xr(e,t)}function Xr(e,t){if(t.text.length==1&&t.text[0]==""&&pt(t.from,t.to)==0)return;var n=qr(e,t);eo(e,t,n,e.cm?e.cm.curOp.id:NaN),Jr(e,t,n,Ui(e,t));var r=[];qs(e,function(e,n){!n&&qo(r,e.history)==-1&&(lo(e.history,t),r.push(e.history)),Jr(e,t,null,Ui(e,t))})}function Vr(e,t,n){if(e.cm&&e.cm.state.suppressEdits)return;var r=e.history,i,s=e.sel,o=t=="undo"?r.done:r.undone,u=t=="undo"?r.undone:r.done;for(var a=0;a<o.length;a++){i=o[a];if(n?i.ranges&&!i.equals(e.sel):!i.ranges)break}if(a==o.length)return;r.lastOrigin=r.lastSelOrigin=null;for(;;){i=o.pop();if(!i.ranges)break;ro(i,u);if(n&&!i.equals(e.sel)){Dt(e,i,{clearRedo:!1});return}s=i}var f=[];ro(s,u),u.push({changes:f,generation:r.generation}),r.generation=i.generation||++r.maxGeneration;var l=Co(e,"beforeChange")||e.cm&&Co(e.cm,"beforeChange");for(var a=i.changes.length-1;a>=0;--a){var c=i.changes[a];c.origin=t;if(l&&!zr(e,c,!1)){o.length=0;return}f.push(Gs(e,c));var h=a?qr(e,c):Fo(o);Jr(e,c,h,Wi(e,c)),!a&&e.cm&&e.cm.scrollIntoView({from:c.from,to:Fr(c)});var p=[];qs(e,function(e,t){!t&&qo(p,e.history)==-1&&(lo(e.history,c),p.push(e.history)),Jr(e,c,null,Wi(e,c))})}}function $r(e,t){if(t==0)return;e.first+=t,e.sel=new gt(Ro(e.sel.ranges,function(e){return new yt(ht(e.anchor.line+t,e.anchor.ch),ht(e.head.line+t,e.head.ch))}),e.sel.primIndex);if(e.cm){Un(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;r<n.viewTo;r++)zn(e.cm,r,"gutter")}}function Jr(e,t,n,r){if(e.cm&&!e.cm.curOp)return jn(e.cm,Jr)(e,t,n,r);if(t.to.line<e.first){$r(e,t.text.length-1-(t.to.line-t.from.line));return}if(t.from.line>e.lastLine())return;if(t.from.line<e.first){var i=t.text.length-1-(e.first-t.from.line);$r(e,i),t={from:ht(e.first,0),to:ht(t.to.line+i,t.to.ch),text:[Fo(t.text)],origin:t.origin}}var s=e.lastLine();t.to.line>s&&(t={from:t.from,to:ht(s,Us(e,s).text.length),text:[t.text[0]],origin:t.origin}),t.removed=zs(e,t.from,t.to),n||(n=qr(e,t)),e.cm?Kr(e.cm,t,r):Ds(e,t,r),Pt(e,n,Oo)}function Kr(e,t,n){var r=e.doc,i=e.display,s=t.from,o=t.to,u=!1,a=s.line;e.options.lineWrapping||(a=Vs(ts(Us(r,s.line))),r.iter(a,o.line+1,function(e){if(e==i.maxLine)return u=!0,!0})),r.sel.contains(t.from,t.to)>-1&&No(e),Ds(r,t,n,k(e)),e.options.lineWrapping||(r.iter(a,s.line+t.text.length,function(e){var t=D(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,u=!1)}),u&&(e.curOp.updateMaxLine=!0)),r.frontier=Math.min(r.frontier,s.line),Xt(e,400);var f=t.text.length-(o.line-s.line)-1;s.line==o.line&&t.text.length==1&&!_s(e.doc,t)?zn(e,s.line,"text"):Un(e,s.line,o.line+1,f);var l=Co(e,"changes"),c=Co(e,"change");if(c||l){var h={from:s,to:o,text:t.text,removed:t.removed,origin:t.origin};c&&So(e,"change",e,h),l&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(h)}e.display.selForContextMenu=null}function Qr(e,t,n,r,i){r||(r=n);if(pt(r,n)<0){var s=r;r=n,n=s}typeof t=="string"&&(t=yu(t)),Wr(e,{from:n,to:r,text:t,origin:i})}function Gr(e,t){if(To(e,"scrollCursorIntoView"))return;var n=e.display,r=n.sizer.getBoundingClientRect(),i=null;t.top+r.top<0?i=!0:t.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1);if(i!=null&&!h){var s=Go("div","​",null,"position: absolute; top: "+(t.top-n.viewOffset-Kt(e.display))+"px; height: "+(t.bottom-t.top+Lo)+"px; left: "+t.left+"px; width: 2px;");e.display.lineSpace.appendChild(s),s.scrollIntoView(i),e.display.lineSpace.removeChild(s)}}function Yr(e,t,n,r){r==null&&(r=0);for(var i=0;i<5;i++){var s=!1,o=gn(e,t),u=!n||n==t?o:gn(e,n),a=ei(e,Math.min(o.left,u.left),Math.min(o.top,u.top)-r,Math.max(o.left,u.left),Math.max(o.bottom,u.bottom)+r),f=e.doc.scrollTop,l=e.doc.scrollLeft;a.scrollTop!=null&&(yr(e,a.scrollTop),Math.abs(e.doc.scrollTop-f)>1&&(s=!0)),a.scrollLeft!=null&&(br(e,a.scrollLeft),Math.abs(e.doc.scrollLeft-l)>1&&(s=!0));if(!s)return o}}function Zr(e,t,n,r,i){var s=ei(e,t,n,r,i);s.scrollTop!=null&&yr(e,s.scrollTop),s.scrollLeft!=null&&br(e,s.scrollLeft)}function ei(e,t,n,r,i){var s=e.display,o=xn(e.display);n<0&&(n=0);var u=e.curOp&&e.curOp.scrollTop!=null?e.curOp.scrollTop:s.scroller.scrollTop,a=s.scroller.clientHeight-Lo,f={};i-n>a&&(i=n+a);var l=e.doc.height+Qt(s),c=n<o,h=i>l-o;if(n<u)f.scrollTop=c?0:n;else if(i>u+a){var p=Math.min(n,(h?l:i)-a);p!=u&&(f.scrollTop=p)}var d=e.curOp&&e.curOp.scrollLeft!=null?e.curOp.scrollLeft:s.scroller.scrollLeft,v=s.scroller.clientWidth-Lo-s.gutters.offsetWidth,m=r-t>v;return m&&(r=t+v),t<10?f.scrollLeft=0:t<d?f.scrollLeft=Math.max(0,t-(m?0:10)):r>v+d-3&&(f.scrollLeft=r+(m?0:10)-v),f}function ti(e,t,n){(t!=null||n!=null)&&ri(e),t!=null&&(e.curOp.scrollLeft=(e.curOp.scrollLeft==null?e.doc.scrollLeft:e.curOp.scrollLeft)+t),n!=null&&(e.curOp.scrollTop=(e.curOp.scrollTop==null?e.doc.scrollTop:e.curOp.scrollTop)+n)}function ni(e){ri(e);var t=e.getCursor(),n=t,r=t;e.options.lineWrapping||(n=t.ch?ht(t.line,t.ch-1):t,r=ht(t.line,t.ch+1)),e.curOp.scrollToPos={from:n,to:r,margin:e.options.cursorScrollMargin,isCursor:!0}}function ri(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;var n=yn(e,t.from),r=yn(e,t.to),i=ei(e,Math.min(n.left,r.left),Math.min(n.top,r.top)-t.margin,Math.max(n.right,r.right),Math.max(n.bottom,r.bottom)+t.margin);e.scrollTo(i.scrollLeft,i.scrollTop)}}function ii(e,t,n,r){var i=e.doc,s;n==null&&(n="add"),n=="smart"&&(i.mode.indent?s=Jt(e,t):n="prev");var o=e.options.tabSize,u=Us(i,t),a=Po(u.text,null,o);u.stateAfter&&(u.stateAfter=null);var f=u.text.match(/^\s*/)[0],l;if(!r&&!/\S/.test(u.text))l=0,n="not";else if(n=="smart"){l=i.mode.indent(s,u.text.slice(f.length),u.text);if(l==Ao||l>150){if(!r)return;n="prev"}}n=="prev"?t>i.first?l=Po(Us(i,t-1).text,null,o):l=0:n=="add"?l=a+e.options.indentUnit:n=="subtract"?l=a-e.options.indentUnit:typeof n=="number"&&(l=a+n),l=Math.max(0,l);var c="",h=0;if(e.options.indentWithTabs)for(var p=Math.floor(l/o);p;--p)h+=o,c+="	";h<l&&(c+=jo(l-h));if(c!=f)Qr(i,c,ht(t,0),ht(t,f.length),"+input");else for(var p=0;p<i.sel.ranges.length;p++){var d=i.sel.ranges[p];if(d.head.line==t&&d.head.ch<f.length){var h=ht(t,f.length);At(i,p,new yt(h,h));break}}u.stateAfter=null}function si(e,t,n,r){var i=t,s=t;return typeof t=="number"?s=Us(e,Et(e,t)):i=Vs(t),i==null?null:(r(s,i)&&e.cm&&zn(e.cm,i,n),s)}function oi(e,t){var n=e.doc.sel.ranges,r=[];for(var i=0;i<n.length;i++){var s=t(n[i]);while(r.length&&pt(s.from,Fo(r).to)<=0){var o=r.pop();if(pt(o.from,s.from)<0){s.from=o.from;break}}r.push(s)}Bn(e,function(){for(var t=r.length-1;t>=0;t--)Qr(e.doc,"",r[t].from,r[t].to,"+delete");ni(e)})}function ui(e,t,n,r,i){function l(){var t=s+n;return t<e.first||t>=e.first+e.size?f=!1:(s=t,a=Us(e,t))}function c(e){var t=(i?Bu:ju)(a,o,n,!0);if(t==null){if(!!e||!l())return f=!1;i?o=(n<0?Lu:ku)(a):o=n<0?a.text.length:0}else o=t;return!0}var s=t.line,o=t.ch,u=n,a=Us(e,s),f=!0;if(r=="char")c();else if(r=="column")c(!0);else if(r=="word"||r=="group"){var h=null,p=r=="group",d=e.cm&&e.cm.getHelper(t,"wordChars");for(var v=!0;;v=!1){if(n<0&&!c(!v))break;var m=a.text.charAt(o)||"\n",g=$o(m,d)?"w":p&&m=="\n"?"n":!p||/\s/.test(m)?null:"p";p&&!v&&!g&&(g="s");if(h&&h!=g){n<0&&(n=1,c());break}g&&(h=g);if(n>0&&!c(!v))break}}var y=Ft(e,ht(s,o),u,!0);return f||(y.hitSide=!0),y}function ai(e,t,n,r){var i=e.doc,s=t.left,o;if(r=="page"){var u=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);o=t.top+n*(u-(n<0?1.5:.5)*xn(e.display))}else r=="line"&&(o=n>0?t.bottom+3:t.top-3);for(;;){var a=wn(e,s,o);if(!a.outside)break;if(n<0?o<=0:o>=i.height){a.hitSide=!0;break}o+=n*5}return a}function ci(e,t,n,r){S.defaults[e]=t,n&&(li[e]=r?function(e,t,r){r!=hi&&n(e,t,r)}:n)}function Si(e){var t=e.split(/-(?!$)/),e=t[t.length-1],n,r,i,s;for(var o=0;o<t.length-1;o++){var u=t[o];if(/^(cmd|meta|m)$/i.test(u))s=!0;else if(/^a(lt)?$/i.test(u))n=!0;else if(/^(c|ctrl|control)$/i.test(u))r=!0;else{if(!/^s(hift)$/i.test(u))throw new Error("Unrecognized modifier name: "+u);i=!0}}return n&&(e="Alt-"+e),r&&(e="Ctrl-"+e),s&&(e="Cmd-"+e),i&&(e="Shift-"+e),e}function Ci(e){return typeof e=="string"?Ei[e]:e}function Oi(e,t,n,r,i){if(r&&r.shared)return _i(e,t,n,r,i);if(e.cm&&!e.cm.curOp)return jn(e.cm,Oi)(e,t,n,r,i);var s=new Li(e,i),o=pt(t,n);r&&zo(r,s,!1);if(o>0||o==0&&s.clearWhenEmpty!==!1)return s;s.replacedWith&&(s.collapsed=!0,s.widgetNode=Go("span",[s.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||(s.widgetNode.ignoreEvents=!0),r.insertLeft&&(s.widgetNode.insertLeft=!0));if(s.collapsed){if(es(e,t.line,t,n,s)||t.line!=n.line&&es(e,n.line,t,n,s))throw new Error("Inserting collapsed marker partially overlapping an existing one");E=!0}s.addToHistory&&eo(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var u=t.line,a=e.cm,f;e.iter(u,n.line+1,function(e){a&&s.collapsed&&!a.options.lineWrapping&&ts(e)==a.display.maxLine&&(f=!0),s.collapsed&&u!=t.line&&Xs(e,0),Ii(e,new Bi(s,u==t.line?t.ch:null,u==n.line?n.ch:null)),++u}),s.collapsed&&e.iter(t.line,n.line+1,function(t){ss(e,t)&&Xs(t,0)}),s.clearOnEnter&&yo(s,"beforeCursorEnter",function(){s.clear()}),s.readOnly&&(w=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),s.collapsed&&(s.id=++Ai,s.atomic=!0);if(a){f&&(a.curOp.updateMaxLine=!0);if(s.collapsed)Un(a,t.line,n.line+1);else if(s.className||s.title||s.startStyle||s.endStyle)for(var l=t.line;l<=n.line;l++)zn(a,l,"text");s.atomic&&Bt(a.doc),So(a,"markerAdded",a,s)}return s}function _i(e,t,n,r,i){r=zo(r),r.shared=!1;var s=[Oi(e,t,n,r,i)],o=s[0],u=r.widgetNode;return qs(e,function(e){u&&(r.widgetNode=u.cloneNode(!0)),s.push(Oi(e,St(e,t),St(e,n),r,i));for(var a=0;a<e.linked.length;++a)if(e.linked[a].isParent)return;o=Fo(s)}),new Mi(s,o)}function Di(e){return e.findMarks(ht(e.first,0),e.clipPos(ht(e.lastLine())),function(e){return e.parent})}function Pi(e,t){for(var n=0;n<t.length;n++){var r=t[n],i=r.find(),s=e.clipPos(i.from),o=e.clipPos(i.to);if(pt(s,o)){var u=Oi(e,s,o,r.primary,r.primary.type);r.markers.push(u),u.parent=r}}}function Hi(e){for(var t=0;t<e.length;t++){var n=e[t],r=[n.primary.doc];qs(n.primary.doc,function(e){r.push(e)});for(var i=0;i<n.markers.length;i++){var s=n.markers[i];qo(r,s.doc)==-1&&(s.parent=null,n.markers.splice(i--,1))}}}function Bi(e,t,n){this.marker=e,this.from=t,this.to=n}function ji(e,t){if(e)for(var n=0;n<e.length;++n){var r=e[n];if(r.marker==t)return r}}function Fi(e,t){for(var n,r=0;r<e.length;++r)e[r]!=t&&(n||(n=[])).push(e[r]);return n}function Ii(e,t){e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],t.marker.attachLine(e)}function qi(e,t,n){if(e)for(var r=0,i;r<e.length;++r){var s=e[r],o=s.marker,u=s.from==null||(o.inclusiveLeft?s.from<=t:s.from<t);if(u||s.from==t&&o.type=="bookmark"&&(!n||!s.marker.insertLeft)){var a=s.to==null||(o.inclusiveRight?s.to>=t:s.to>t);(i||(i=[])).push(new Bi(o,s.from,a?null:s.to))}}return i}function Ri(e,t,n){if(e)for(var r=0,i;r<e.length;++r){var s=e[r],o=s.marker,u=s.to==null||(o.inclusiveRight?s.to>=t:s.to>t);if(u||s.from==t&&o.type=="bookmark"&&(!n||s.marker.insertLeft)){var a=s.from==null||(o.inclusiveLeft?s.from<=t:s.from<t);(i||(i=[])).push(new Bi(o,a?null:s.from-t,s.to==null?null:s.to-t))}}return i}function Ui(e,t){var n=Tt(e,t.from.line)&&Us(e,t.from.line).markedSpans,r=Tt(e,t.to.line)&&Us(e,t.to.line).markedSpans;if(!n&&!r)return null;var i=t.from.ch,s=t.to.ch,o=pt(t.from,t.to)==0,u=qi(n,i,o),a=Ri(r,s,o),f=t.text.length==1,l=Fo(t.text).length+(f?i:0);if(u)for(var c=0;c<u.length;++c){var h=u[c];if(h.to==null){var p=ji(a,h.marker);p?f&&(h.to=p.to==null?null:p.to+l):h.to=i}}if(a)for(var c=0;c<a.length;++c){var h=a[c];h.to!=null&&(h.to+=l);if(h.from==null){var p=ji(u,h.marker);p||(h.from=l,f&&(u||(u=[])).push(h))}else h.from+=l,f&&(u||(u=[])).push(h)}u&&(u=zi(u)),a&&a!=u&&(a=zi(a));var d=[u];if(!f){var v=t.text.length-2,m;if(v>0&&u)for(var c=0;c<u.length;++c)u[c].to==null&&(m||(m=[])).push(new Bi(u[c].marker,null,null));for(var c=0;c<v;++c)d.push(m);d.push(a)}return d}function zi(e){for(var t=0;t<e.length;++t){var n=e[t];n.from!=null&&n.from==n.to&&n.marker.clearWhenEmpty!==!1&&e.splice(t--,1)}return e.length?e:null}function Wi(e,t){var n=oo(e,t),r=Ui(e,t);if(!n)return r;if(!r)return n;for(var i=0;i<n.length;++i){var s=n[i],o=r[i];if(s&&o)e:for(var u=0;u<o.length;++u){var a=o[u];for(var f=0;f<s.length;++f)if(s[f].marker==a.marker)continue e;s.push(a)}else o&&(n[i]=o)}return n}function Xi(e,t,n){var r=null;e.iter(t.line,n.line+1,function(e){if(e.markedSpans)for(var t=0;t<e.markedSpans.length;++t){var n=e.markedSpans[t].marker;n.readOnly&&(!r||qo(r,n)==-1)&&(r||(r=[])).push(n)}});if(!r)return null;var i=[{from:t,to:n}];for(var s=0;s<r.length;++s){var o=r[s],u=o.find(0);for(var a=0;a<i.length;++a){var f=i[a];if(pt(f.to,u.from)<0||pt(f.from,u.to)>0)continue;var l=[a,1],c=pt(f.from,u.from),h=pt(f.to,u.to);(c<0||!o.inclusiveLeft&&!c)&&l.push({from:f.from,to:u.from}),(h>0||!o.inclusiveRight&&!h)&&l.push({from:u.to,to:f.to}),i.splice.apply(i,l),a+=l.length-1}}return i}function Vi(e){var t=e.markedSpans;if(!t)return;for(var n=0;n<t.length;++n)t[n].marker.detachLine(e);e.markedSpans=null}function $i(e,t){if(!t)return;for(var n=0;n<t.length;++n)t[n].marker.attachLine(e);e.markedSpans=t}function Ji(e){return e.inclusiveLeft?-1:0}function Ki(e){return e.inclusiveRight?1:0}function Qi(e,t){var n=e.lines.length-t.lines.length;if(n!=0)return n;var r=e.find(),i=t.find(),s=pt(r.from,i.from)||Ji(e)-Ji(t);if(s)return-s;var o=pt(r.to,i.to)||Ki(e)-Ki(t);return o?o:t.id-e.id}function Gi(e,t){var n=E&&e.markedSpans,r;if(n)for(var i,s=0;s<n.length;++s)i=n[s],i.marker.collapsed&&(t?i.from:i.to)==null&&(!r||Qi(r,i.marker)<0)&&(r=i.marker);return r}function Yi(e){return Gi(e,!0)}function Zi(e){return Gi(e,!1)}function es(e,t,n,r,i){var s=Us(e,t),o=E&&s.markedSpans;if(o)for(var u=0;u<o.length;++u){var a=o[u];if(!a.marker.collapsed)continue;var f=a.marker.find(0),l=pt(f.from,n)||Ji(a.marker)-Ji(i),c=pt(f.to,r)||Ki(a.marker)-Ki(i);if(l>=0&&c<=0||l<=0&&c>=0)continue;if(l<=0&&(pt(f.to,n)>0||a.marker.inclusiveRight&&i.inclusiveLeft)||l>=0&&(pt(f.from,r)<0||a.marker.inclusiveLeft&&i.inclusiveRight))return!0}}function ts(e){var t;while(t=Yi(e))e=t.find(-1,!0).line;return e}function ns(e){var t,n;while(t=Zi(e))e=t.find(1,!0).line,(n||(n=[])).push(e);return n}function rs(e,t){var n=Us(e,t),r=ts(n);return n==r?t:Vs(r)}function is(e,t){if(t>e.lastLine())return t;var n=Us(e,t),r;if(!ss(e,n))return t;while(r=Zi(n))n=r.find(1,!0).line;return Vs(n)+1}function ss(e,t){var n=E&&t.markedSpans;if(n)for(var r,i=0;i<n.length;++i){r=n[i];if(!r.marker.collapsed)continue;if(r.from==null)return!0;if(r.marker.widgetNode)continue;if(r.from==0&&r.marker.inclusiveLeft&&os(e,t,r))return!0}}function os(e,t,n){if(n.to==null){var r=n.marker.find(1,!0);return os(e,r.line,ji(r.line.markedSpans,n.marker))}if(n.marker.inclusiveRight&&n.to==t.text.length)return!0;for(var i,s=0;s<t.markedSpans.length;++s){i=t.markedSpans[s];if(i.marker.collapsed&&!i.marker.widgetNode&&i.from==n.to&&(i.to==null||i.to!=n.from)&&(i.marker.inclusiveLeft||n.marker.inclusiveRight)&&os(e,t,i))return!0}}function as(e,t,n){Js(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&ti(e,null,n)}function fs(e){if(e.height!=null)return e.height;if(!tu(document.body,e.node)){var t="position: relative;";e.coverGutter&&(t+="margin-left: -"+e.cm.getGutterElement().offsetWidth+"px;"),eu(e.cm.display.measure,Go("div",[e.node],null,t))}return e.height=e.node.offsetHeight}function ls(e,t,n,r){var i=new us(e,n,r);return i.noHScroll&&(e.display.alignWidgets=!0),si(e.doc,t,"widget",function(t){var n=t.widgets||(t.widgets=[]);i.insertAt==null?n.push(i):n.splice(Math.min(n.length-1,Math.max(0,i.insertAt)),0,i),i.line=t;if(!ss(e.doc,t)){var r=Js(t)<e.doc.scrollTop;Xs(t,t.height+fs(i)),r&&ti(e,null,i.height),e.curOp.forceUpdate=!0}return!0}),i}function hs(e,t,n,r){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),e.order!=null&&(e.order=null),Vi(e),$i(e,n);var i=r?r(e):1;i!=e.height&&Xs(e,i)}function ps(e){e.parent=null,Vi(e)}function ds(e,t){if(e)for(;;){var n=e.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!n)break;e=e.slice(0,n.index)+e.slice(n.index+n[0].length);var r=n[1]?"bgClass":"textClass";t[r]==null?t[r]=n[2]:(new RegExp("(?:^|s)"+n[2]+"(?:$|s)")).test(t[r])||(t[r]+=" "+n[2])}return e}function vs(e,t){if(e.blankLine)return e.blankLine(t);if(!e.innerMode)return;var n=S.innerMode(e,t);if(n.mode.blankLine)return n.mode.blankLine(n.state)}function ms(e,t,n,r){for(var i=0;i<10;i++){r&&(r[0]=S.innerMode(e,n).mode);var s=e.token(t,n);if(t.pos>t.start)return s}throw new Error("Mode "+e.name+" failed to advance stream.")}function gs(e,t,n,r){function i(e){return{start:l.start,end:l.pos,string:l.current(),type:u||null,state:e?yi(s.mode,f):f}}var s=e.doc,o=s.mode,u;t=St(s,t);var a=Us(s,t.line),f=Jt(e,t.line,n),l=new ki(a.text,e.options.tabSize),c;r&&(c=[]);while((r||l.pos<t.ch)&&!l.eol())l.start=l.pos,u=ms(o,l,f),r&&c.push(i(!0));return r?c:i()}function ys(e,t,n,r,i,s,o){var u=n.flattenSpans;u==null&&(u=e.options.flattenSpans);var a=0,f=null,l=new ki(t,e.options.tabSize),c,h=e.options.addModeClass&&[null];t==""&&ds(vs(n,r),s);while(!l.eol()){l.pos>e.options.maxHighlightLength?(u=!1,o&&Es(e,t,r,l.pos),l.pos=t.length,c=null):c=ds(ms(n,l,r,h),s);if(h){var p=h[0].name;p&&(c="m-"+(c?p+" "+c:p))}if(!u||f!=c)a<l.start&&i(l.start,f),a=l.start,f=c;l.start=l.pos}while(a<l.pos){var d=Math.min(l.pos,a+5e4);i(d,f),a=d}}function bs(e,t,n,r){var i=[e.state.modeGen],s={};ys(e,t.text,e.doc.mode,n,function(e,t){i.push(e,t)},s,r);for(var o=0;o<e.state.overlays.length;++o){var u=e.state.overlays[o],a=1,f=0;ys(e,t.text,u.mode,!0,function(e,t){var n=a;while(f<e){var r=i[a];r>e&&i.splice(a,1,e,i[a+1],r),a+=2,f=Math.min(e,r)}if(!t)return;if(u.opaque)i.splice(n,a-n,e,"cm-overlay "+t),a=n+2;else for(;n<a;n+=2){var s=i[n+1];i[n+1]=(s?s+" ":"")+"cm-overlay "+t}},s)}return{styles:i,classes:s.bgClass||s.textClass?s:null}}function ws(e,t,n){if(!t.styles||t.styles[0]!=e.state.modeGen){var r=bs(e,t,t.stateAfter=Jt(e,Vs(t)));t.styles=r.styles,r.classes?t.styleClasses=r.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.frontier&&e.doc.frontier++}return t.styles}function Es(e,t,n,r){var i=e.doc.mode,s=new ki(t,e.options.tabSize);s.start=s.pos=r||0,t==""&&vs(i,n);while(!s.eol()&&s.pos<=e.options.maxHighlightLength)ms(i,s,n),s.start=s.pos}function Ts(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass?xs:Ss;return n[e]||(n[e]=e.replace(/\S+/g,"cm-$&"))}function Ns(e,t){var n=Go("span",null,null,s?"padding-right: .1px":null),i={pre:Go("pre",[n]),content:n,col:0,pos:0,cm:e};t.measure={};for(var o=0;o<=(t.rest?t.rest.length:0);o++){var u=o?t.rest[o-1]:t.line,a;i.pos=0,i.addToken=ks,(r||s)&&e.getOption("lineWrapping")&&(i.addToken=Ls(i.addToken)),gu(e.display.measure)&&(a=Ks(u))&&(i.addToken=As(i.addToken,a)),i.map=[];var f=t!=e.display.externalMeasured&&Vs(u);Ms(u,i,ws(e,u,f)),u.styleClasses&&(u.styleClasses.bgClass&&(i.bgClass=ou(u.styleClasses.bgClass,i.bgClass||"")),u.styleClasses.textClass&&(i.textClass=ou(u.styleClasses.textClass,i.textClass||""))),i.map.length==0&&i.map.push(0,0,i.content.appendChild(vu(e.display.measure))),o==0?(t.measure.map=i.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(i.map),(t.measure.caches||(t.measure.caches=[])).push({}))}return s&&/\bcm-tab\b/.test(i.content.lastChild.className)&&(i.content.className="cm-tab-wrap-hack"),wo(e,"renderLine",e,t.line,i.pre),i.pre.className&&(i.textClass=ou(i.pre.className,i.textClass||"")),i}function Cs(e){var t=Go("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t}function ks(e,t,n,s,o,u){if(!t)return;var a=e.cm.options.specialChars,f=!1;if(!a.test(t)){e.col+=t.length;var l=document.createTextNode(t);e.map.push(e.pos,e.pos+t.length,l),r&&i<9&&(f=!0),e.pos+=t.length}else{var l=document.createDocumentFragment(),c=0;for(;;){a.lastIndex=c;var h=a.exec(t),p=h?h.index-c:t.length-c;if(p){var d=document.createTextNode(t.slice(c,c+p));r&&i<9?l.appendChild(Go("span",[d])):l.appendChild(d),e.map.push(e.pos,e.pos+p,d),e.col+=p,e.pos+=p}if(!h)break;c+=p+1;if(h[0]=="	"){var v=e.cm.options.tabSize,m=v-e.col%v,d=l.appendChild(Go("span",jo(m),"cm-tab"));e.col+=m}else{var d=e.cm.options.specialCharPlaceholder(h[0]);r&&i<9?l.appendChild(Go("span",[d])):l.appendChild(d),e.col+=1}e.map.push(e.pos,e.pos+1,d),e.pos++}}if(n||s||o||f){var g=n||"";s&&(g+=s),o&&(g+=o);var y=Go("span",[l],g);return u&&(y.title=u),e.content.appendChild(y)}e.content.appendChild(l)}function Ls(e){function t(e){var t=" ";for(var n=0;n<e.length-2;++n)t+=n%2?" ":" ";return t+=" ",t}return function(n,r,i,s,o,u){e(n,r.replace(/ {3,}/g,t),i,s,o,u)}}function As(e,t){return function(n,r,i,s,o,u){i=i?i+" cm-force-border":"cm-force-border";var a=n.pos,f=a+r.length;for(;;){for(var l=0;l<t.length;l++){var c=t[l];if(c.to>a&&c.from<=a)break}if(c.to>=f)return e(n,r,i,s,o,u);e(n,r.slice(0,c.to-a),i,s,null,u),s=null,r=r.slice(c.to-a),a=c.to}}}function Os(e,t,n,r){var i=!r&&n.widgetNode;i&&(e.map.push(e.pos,e.pos+t,i),e.content.appendChild(i)),e.pos+=t}function Ms(e,t,n){var r=e.markedSpans,i=e.text,s=0;if(!r){for(var o=1;o<n.length;o+=2)t.addToken(t,i.slice(s,s=n[o]),Ts(n[o+1],t.cm.options));return}var u=i.length,a=0,o=1,f="",l,c=0,h,p,d,v,m;for(;;){if(c==a){h=p=d=v="",m=null,c=Infinity;var g=[];for(var y=0;y<r.length;++y){var b=r[y],w=b.marker;b.from<=a&&(b.to==null||b.to>a)?(b.to!=null&&c>b.to&&(c=b.to,p=""),w.className&&(h+=" "+w.className),w.startStyle&&b.from==a&&(d+=" "+w.startStyle),w.endStyle&&b.to==c&&(p+=" "+w.endStyle),w.title&&!v&&(v=w.title),w.collapsed&&(!m||Qi(m.marker,w)<0)&&(m=b)):b.from>a&&c>b.from&&(c=b.from),w.type=="bookmark"&&b.from==a&&w.widgetNode&&g.push(w)}if(m&&(m.from||0)==a){Os(t,(m.to==null?u+1:m.to)-a,m.marker,m.from==null);if(m.to==null)return}if(!m&&g.length)for(var y=0;y<g.length;++y)Os(t,0,g[y])}if(a>=u)break;var E=Math.min(u,c);for(;;){if(f){var S=a+f.length;if(!m){var x=S>E?f.slice(0,E-a):f;t.addToken(t,x,l?l+h:h,d,a+x.length==c?p:"",v)}if(S>=E){f=f.slice(E-a),a=E;break}a=S,d=""}f=i.slice(s,s=n[o++]),l=Ts(n[o++],t.cm.options)}}}function _s(e,t){return t.from.ch==0&&t.to.ch==0&&Fo(t.text)==""&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function Ds(e,t,n,r){function i(e){return n?n[e]:null}function s(e,n,i){hs(e,n,i,r),So(e,"change",e,t)}var o=t.from,u=t.to,a=t.text,f=Us(e,o.line),l=Us(e,u.line),c=Fo(a),h=i(a.length-1),p=u.line-o.line;if(_s(e,t)){for(var d=0,v=[];d<a.length-1;++d)v.push(new cs(a[d],i(d),r));s(l,l.text,h),p&&e.remove(o.line,p),v.length&&e.insert(o.line,v)}else if(f==l)if(a.length==1)s(f,f.text.slice(0,o.ch)+c+f.text.slice(u.ch),h);else{for(var v=[],d=1;d<a.length-1;++d)v.push(new cs(a[d],i(d),r));v.push(new cs(c+f.text.slice(u.ch),h,r)),s(f,f.text.slice(0,o.ch)+a[0],i(0)),e.insert(o.line+1,v)}else if(a.length==1)s(f,f.text.slice(0,o.ch)+a[0]+l.text.slice(u.ch),i(0)),e.remove(o.line+1,p);else{s(f,f.text.slice(0,o.ch)+a[0],i(0)),s(l,c+l.text.slice(u.ch),h);for(var d=1,v=[];d<a.length-1;++d)v.push(new cs(a[d],i(d),r));p>1&&e.remove(o.line+1,p-1),e.insert(o.line+1,v)}So(e,"change",e,t)}function Ps(e){this.lines=e,this.parent=null;for(var t=0,n=0;t<e.length;++t)e[t].parent=this,n+=e[t].height;this.height=n}function Hs(e){this.children=e;var t=0,n=0;for(var r=0;r<e.length;++r){var i=e[r];t+=i.chunkSize(),n+=i.height,i.parent=this}this.size=t,this.height=n,this.parent=null}function qs(e,t,n){function r(e,i,s){if(e.linked)for(var o=0;o<e.linked.length;++o){var u=e.linked[o];if(u.doc==i)continue;var a=s&&u.sharedHist;if(n&&!a)continue;t(u.doc,a),r(u.doc,e,a)}}r(e,null,!0)}function Rs(e,t){if(t.cm)throw new Error("This document is already in use.");e.doc=t,t.cm=e,L(e),T(e),e.options.lineWrapping||P(e),e.options.mode=t.modeOption,Un(e)}function Us(e,t){t-=e.first;if(t<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],s=i.chunkSize();if(t<s){n=i;break}t-=s}return n.lines[t]}function zs(e,t,n){var r=[],i=t.line;return e.iter(t.line,n.line+1,function(e){var s=e.text;i==n.line&&(s=s.slice(0,n.ch)),i==t.line&&(s=s.slice(t.ch)),r.push(s),++i}),r}function Ws(e,t,n){var r=[];return e.iter(t,n,function(e){r.push(e.text)}),r}function Xs(e,t){var n=t-e.height;if(n)for(var r=e;r;r=r.parent)r.height+=n}function Vs(e){if(e.parent==null)return null;var t=e.parent,n=qo(t.lines,e);for(var r=t.parent;r;t=r,r=r.parent)for(var i=0;;++i){if(r.children[i]==t)break;n+=r.children[i].chunkSize()}return n+t.first}function $s(e,t){var n=e.first;e:do{for(var r=0;r<e.children.length;++r){var i=e.children[r],s=i.height;if(t<s){e=i;continue e}t-=s,n+=i.chunkSize()}return n}while(!e.lines);for(var r=0;r<e.lines.length;++r){var o=e.lines[r],u=o.height;if(t<u)break;t-=u}return n+r}function Js(e){e=ts(e);var t=0,n=e.parent;for(var r=0;r<n.lines.length;++r){var i=n.lines[r];if(i==e)break;t+=i.height}for(var s=n.parent;s;n=s,s=n.parent)for(var r=0;r<s.children.length;++r){var o=s.children[r];if(o==n)break;t+=o.height}return t}function Ks(e){var t=e.order;return t==null&&(t=e.order=Fu(e.text)),t}function Qs(e){this.done=[],this.undone=[],this.undoDepth=Infinity,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function Gs(e,t){var n={from:dt(t.from),to:Fr(t),text:zs(e,t.from,t.to)};return io(e,n,t.from.line,t.to.line+1),qs(e,function(e){io(e,n,t.from.line,t.to.line+1)},!0),n}function Ys(e){while(e.length){var t=Fo(e);if(!t.ranges)break;e.pop()}}function Zs(e,t){if(t)return Ys(e.done),Fo(e.done);if(e.done.length&&!Fo(e.done).ranges)return Fo(e.done);if(e.done.length>1&&!e.done[e.done.length-2].ranges)return e.done.pop(),Fo(e.done)}function eo(e,t,n,r){var i=e.history;i.undone.length=0;var s=+(new Date),o;if((i.lastOp==r||i.lastOrigin==t.origin&&t.origin&&(t.origin.charAt(0)=="+"&&e.cm&&i.lastModTime>s-e.cm.options.historyEventDelay||t.origin.charAt(0)=="*"))&&(o=Zs(i,i.lastOp==r))){var u=Fo(o.changes);pt(t.from,t.to)==0&&pt(t.from,u.to)==0?u.to=Fr(t):o.changes.push(Gs(e,t))}else{var a=Fo(i.done);(!a||!a.ranges)&&ro(e.sel,i.done),o={changes:[Gs(e,t)],generation:i.generation},i.done.push(o);while(i.done.length>i.undoDepth)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,u||wo(e,"historyAdded")}function to(e,t,n,r){var i=t.charAt(0);return i=="*"||i=="+"&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function no(e,t,n,r){var i=e.history,s=r&&r.origin;n==i.lastSelOp||s&&i.lastSelOrigin==s&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==s||to(e,s,Fo(i.done),t))?i.done[i.done.length-1]=t:ro(t,i.done),i.lastSelTime=+(new Date),i.lastSelOrigin=s,i.lastSelOp=n,r&&r.clearRedo!==!1&&Ys(i.undone)}function ro(e,t){var n=Fo(t);n&&n.ranges&&n.equals(e)||t.push(e)}function io(e,t,n,r){var i=t["spans_"+e.id],s=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),function(n){n.markedSpans&&((i||(i=t["spans_"+e.id]={}))[s]=n.markedSpans),++s})}function so(e){if(!e)return null;for(var t=0,n;t<e.length;++t)e[t].marker.explicitlyCleared?n||(n=e.slice(0,t)):n&&n.push(e[t]);return n?n.length?n:null:e}function oo(e,t){var n=t["spans_"+e.id];if(!n)return null;for(var r=0,i=[];r<t.text.length;++r)i.push(so(n[r]));return i}function uo(e,t,n){for(var r=0,i=[];r<e.length;++r){var s=e[r];if(s.ranges){i.push(n?gt.prototype.deepCopy.call(s):s);continue}var o=s.changes,u=[];i.push({changes:u});for(var a=0;a<o.length;++a){var f=o[a],l;u.push({from:f.from,to:f.to,text:f.text});if(t)for(var c in f)(l=c.match(/^spans_(\d+)$/))&&qo(t,Number(l[1]))>-1&&(Fo(u)[c]=f[c],delete f[c])}}return i}function ao(e,t,n,r){n<e.line?e.line+=r:t<e.line&&(e.line=t,e.ch=0)}function fo(e,t,n,r){for(var i=0;i<e.length;++i){var s=e[i],o=!0;if(s.ranges){s.copied||(s=e[i]=s.deepCopy(),s.copied=!0);for(var u=0;u<s.ranges.length;u++)ao(s.ranges[u].anchor,t,n,r),ao(s.ranges[u].head,t,n,r);continue}for(var u=0;u<s.changes.length;++u){var a=s.changes[u];if(n<a.from.line)a.from=ht(a.from.line+r,a.from.ch),a.to=ht(a.to.line+r,a.to.ch);else if(t<=a.to.line){o=!1;break}}o||(e.splice(0,i+1),i=0)}}function lo(e,t){var n=t.from.line,r=t.to.line,i=t.text.length-(r-n)-1;fo(e.done,n,r,i),fo(e.undone,n,r,i)}function po(e){return e.defaultPrevented!=null?e.defaultPrevented:e.returnValue==0}function mo(e){return e.target||e.srcElement}function go(e){var t=e.which;return t==null&&(e.button&1?t=1:e.button&2?t=3:e.button&4&&(t=2)),v&&e.ctrlKey&&t==1&&(t=3),t}function So(e,t){function s(e){return function(){e.apply(null,r)}}var n=e._handlers&&e._handlers[t];if(!n)return;var r=Array.prototype.slice.call(arguments,2),i;Nn?i=Nn.delayedCallbacks:Eo?i=Eo:(i=Eo=[],setTimeout(xo,0));for(var o=0;o<n.length;++o)i.push(s(n[o]))}function xo(){var e=Eo;Eo=null;for(var t=0;t<e.length;++t)e[t]()}function To(e,t,n){return typeof t=="string"&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),wo(e,n||t.type,e,t),po(t)||t.codemirrorIgnore}function No(e){var t=e._handlers&&e._handlers.cursorActivity;if(!t)return;var n=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]);for(var r=0;r<t.length;++r)qo(n,t[r])==-1&&n.push(t[r])}function Co(e,t){var n=e._handlers&&e._handlers[t];return n&&n.length>0}function ko(e){e.prototype.on=function(e,t){yo(this,e,t)},e.prototype.off=function(e,t){bo(this,e,t)}}function Do(){this.id=null}function Ho(e,t,n){for(var r=0,i=0;;){var s=e.indexOf("	",r);s==-1&&(s=e.length);var o=s-r;if(s==e.length||i+o>=t)return r+Math.min(o,t-i);i+=s-r,i+=n-i%n,r=s+1;if(i>=t)return r}}function jo(e){while(Bo.length<=e)Bo.push(Fo(Bo)+" ");return Bo[e]}function Fo(e){return e[e.length-1]}function qo(e,t){for(var n=0;n<e.length;++n)if(e[n]==t)return n;return-1}function Ro(e,t){var n=[];for(var r=0;r<e.length;r++)n[r]=t(e[r],r);return n}function Uo(e,t){var n;if(Object.create)n=Object.create(e);else{var r=function(){};r.prototype=e,n=new r}return t&&zo(t,n),n}function zo(e,t,n){t||(t={});for(var r in e)e.hasOwnProperty(r)&&(n!==!1||!t.hasOwnProperty(r))&&(t[r]=e[r]);return t}function Wo(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function $o(e,t){return t?t.source.indexOf("\\w")>-1&&Vo(e)?!0:t.test(e):Vo(e)}function Jo(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}function Qo(e){return e.charCodeAt(0)>=768&&Ko.test(e)}function Go(e,t,n,r){var i=document.createElement(e);n&&(i.className=n),r&&(i.style.cssText=r);if(typeof t=="string")i.appendChild(document.createTextNode(t));else if(t)for(var s=0;s<t.length;++s)i.appendChild(t[s]);return i}function Zo(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function eu(e,t){return Zo(e).appendChild(t)}function tu(e,t){if(e.contains)return e.contains(t);while(t=t.parentNode)if(t==e)return!0}function nu(){return document.activeElement}function ru(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}function ou(e,t){var n=e.split(" ");for(var r=0;r<n.length;r++)n[r]&&!ru(n[r]).test(t)&&(t+=" "+n[r]);return t}function uu(e){if(!document.body.getElementsByClassName)return;var t=document.body.getElementsByClassName("CodeMirror");for(var n=0;n<t.length;n++){var r=t[n].CodeMirror;r&&e(r)}}function fu(){if(au)return;lu(),au=!0}function lu(){var e;yo(window,"resize",function(){e==null&&(e=setTimeout(function(){e=null,hu=null,uu(ir)},100))}),yo(window,"blur",function(){uu(Hr)})}function pu(e){if(hu!=null)return hu;var t=Go("div",null,null,"width: 50px; height: 50px; overflow-x: scroll");return eu(e,t),t.offsetWidth&&(hu=t.offsetHeight-t.clientHeight),hu||0}function vu(e){if(du==null){var t=Go("span","​");eu(e,Go("span",[t,document.createTextNode("x")])),e.firstChild.offsetHeight!=0&&(du=t.offsetWidth<=1&&t.offsetHeight>2&&!(r&&i<8))}return du?Go("span","​"):Go("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px")}function gu(e){if(mu!=null)return mu;var t=eu(e,document.createTextNode("AخA")),n=Yo(t,0,1).getBoundingClientRect();if(!n||n.left==n.right)return!1;var r=Yo(t,1,2).getBoundingClientRect();return mu=r.right-n.right<3}function Su(e){if(Eu!=null)return Eu;var t=eu(e,Go("span","x")),n=t.getBoundingClientRect(),r=Yo(t,0,1).getBoundingClientRect();return Eu=Math.abs(n.left-r.left)>1}function Tu(e,t,n,r){if(!e)return r(t,n,"ltr");var i=!1;for(var s=0;s<e.length;++s){var o=e[s];if(o.from<n&&o.to>t||t==n&&o.to==t)r(Math.max(o.from,t),Math.min(o.to,n),o.level==1?"rtl":"ltr"),i=!0}i||r(t,n,"ltr")}function Nu(e){return e.level%2?e.to:e.from}function Cu(e){return e.level%2?e.from:e.to}function ku(e){var t=Ks(e);return t?Nu(t[0]):0}function Lu(e){var t=Ks(e);return t?Cu(Fo(t)):e.text.length}function Au(e,t){var n=Us(e.doc,t),r=ts(n);r!=n&&(t=Vs(r));var i=Ks(r),s=i?i[0].level%2?Lu(r):ku(r):0;return ht(t,s)}function Ou(e,t){var n,r=Us(e.doc,t);while(n=Zi(r))r=n.find(1,!0).line,t=null;var i=Ks(r),s=i?i[0].level%2?ku(r):Lu(r):r.text.length;return ht(t==null?Vs(r):t,s)}function Mu(e,t){var n=Au(e,t.line),r=Us(e.doc,n.line),i=Ks(r);if(!i||i[0].level==0){var s=Math.max(0,r.text.search(/\S/)),o=t.line==n.line&&t.ch<=s&&t.ch;return ht(n.line,o?0:s)}return n}function _u(e,t,n){var r=e[0].level;return t==r?!0:n==r?!1:t<n}function Pu(e,t){Du=null;for(var n=0,r;n<e.length;++n){var i=e[n];if(i.from<t&&i.to>t)return n;if(i.from==t||i.to==t){if(r!=null)return _u(e,i.level,e[r].level)?(i.from!=i.to&&(Du=r),n):(i.from!=i.to&&(Du=n),r);r=n}}return r}function Hu(e,t,n,r){if(!r)return t+n;do t+=n;while(t>0&&Qo(e.text.charAt(t)));return t}function Bu(e,t,n,r){var i=Ks(e);if(!i)return ju(e,t,n,r);var s=Pu(i,t),o=i[s],u=Hu(e,t,o.level%2?-n:n,r);for(;;){if(u>o.from&&u<o.to)return u;if(u==o.from||u==o.to)return Pu(i,u)==s?u:(o=i[s+=n],n>0==o.level%2?o.to:o.from);o=i[s+=n];if(!o)return null;n>0==o.level%2?u=Hu(e,o.to,-1,r):u=Hu(e,o.from,1,r)}}function ju(e,t,n,r){var i=t+n;if(r)while(i>0&&Qo(e.text.charAt(i)))i+=n;return i<0||i>e.text.length?null:i}var e=/gecko\/\d/i.test(navigator.userAgent),t=/MSIE \d/.test(navigator.userAgent),n=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),r=t||n,i=r&&(t?document.documentMode||6:n[1]),s=/WebKit\//.test(navigator.userAgent),o=s&&/Qt\/\d+\.\d+/.test(navigator.userAgent),u=/Chrome\//.test(navigator.userAgent),a=/Opera\//.test(navigator.userAgent),f=/Apple Computer/.test(navigator.vendor),l=/KHTML\//.test(navigator.userAgent),c=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent),h=/PhantomJS/.test(navigator.userAgent),p=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent),d=p||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent),v=p||/Mac/.test(navigator.platform),m=/win/i.test(navigator.platform),g=a&&navigator.userAgent.match(/Version\/(\d*\.\d*)/);g&&(g=Number(g[1])),g&&g>=15&&(a=!1,s=!0);var y=v&&(o||a&&(g==null||g<12.11)),b=e||r&&i>=9,w=!1,E=!1,ht=S.Pos=function(e,t){if(!(this instanceof ht))return new ht(e,t);this.line=e,this.ch=t},pt=S.cmpPos=function(e,t){return e.line-t.line||e.ch-t.ch};gt.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t<this.ranges.length;t++){var n=this.ranges[t],r=e.ranges[t];if(pt(n.anchor,r.anchor)!=0||pt(n.head,r.head)!=0)return!1}return!0},deepCopy:function(){for(var e=[],t=0;t<this.ranges.length;t++)e[t]=new yt(dt(this.ranges[t].anchor),dt(this.ranges[t].head));return new gt(e,this.primIndex)},somethingSelected:function(){for(var e=0;e<this.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},contains:function(e,t){t||(t=e);for(var n=0;n<this.ranges.length;n++){var r=this.ranges[n];if(pt(t,r.from())>=0&&pt(e,r.to())<=0)return n}return-1}},yt.prototype={from:function(){return mt(this.anchor,this.head)},to:function(){return vt(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var on={left:0,right:0,top:0,bottom:0},Sn,Nn=null,Cn=0,Gn=null,ar,fr,vr=0,wr=0,Er=null;r?Er=-0.53:e?Er=15:u?Er=-0.7:f&&(Er=-1/3);var Nr=new Do,Ar=null,Fr=S.changeEnd=function(e){return e.text?ht(e.from.line+e.text.length-1,Fo(e.text).length+(e.text.length==1?e.from.ch:0)):e.to};S.prototype={constructor:S,focus:function(){window.focus(),er(this),Qn(this)},setOption:function(e,t){var n=this.options,r=n[e];if(n[e]==t&&e!="mode")return;n[e]=t,li.hasOwnProperty(e)&&jn(this,li[e])(this,t,r)},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Ci(e))},removeKeyMap:function(e){var t=this.state.keyMaps;for(var n=0;n<t.length;++n)if(t[n]==e||t[n].name==e)return t.splice(n,1),!0},addOverlay:Fn(function(e,t){var n=e.token?e:S.getMode(this.options,e);if(n.startState)throw new Error("Overlays may not be stateful.");this.state.overlays.push({mode:n,modeSpec:e,opaque:t&&t.opaque}),this.state.modeGen++,Un(this)}),removeOverlay:Fn(function(e){var t=this.state.overlays;for(var n=0;n<t.length;++n){var r=t[n].modeSpec;if(r==e||typeof e=="string"&&r.name==e){t.splice(n,1),this.state.modeGen++,Un(this);return}}}),indentLine:Fn(function(e,t,n){typeof t!="string"&&typeof t!="number"&&(t==null?t=this.options.smartIndent?"smart":"prev":t=t?"add":"subtract"),Tt(this.doc,e)&&ii(this,e,t,n)}),indentSelection:Fn(function(e){var t=this.doc.sel.ranges,n=-1;for(var r=0;r<t.length;r++){var i=t[r];if(!i.empty()){var s=i.from(),o=i.to(),u=Math.max(n,s.line);n=Math.min(this.lastLine(),o.line-(o.ch?0:1))+1;for(var a=u;a<n;++a)ii(this,a,e);var f=this.doc.sel.ranges;s.ch==0&&t.length==f.length&&f[r].from().ch>0&&At(this.doc,r,new yt(s,f[r].to()),Oo)}else i.head.line>n&&(ii(this,i.head.line,e,!0),n=i.head.line,r==this.doc.sel.primIndex&&ni(this))}}),getTokenAt:function(e,t){return gs(this,e,t)},getLineTokens:function(e,t){return gs(this,ht(e),t,!0)},getTokenTypeAt:function(e){e=St(this.doc,e);var t=ws(this,Us(this.doc,e.line)),n=0,r=(t.length-1)/2,i=e.ch,s;if(i==0)s=t[2];else for(;;){var o=n+r>>1;if((o?t[o*2-1]:0)>=i)r=o;else{if(!(t[o*2+1]<i)){s=t[o*2+2];break}n=o+1}}var u=s?s.indexOf("cm-overlay "):-1;return u<0?s:u==0?null:s.slice(0,u-1)},getModeAt:function(e){var t=this.doc.mode;return t.innerMode?S.innerMode(t,this.getTokenAt(e).state).mode:t},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var n=[];if(!gi.hasOwnProperty(t))return gi;var r=gi[t],i=this.getModeAt(e);if(typeof i[t]=="string")r[i[t]]&&n.push(r[i[t]]);else if(i[t])for(var s=0;s<i[t].length;s++){var o=r[i[t][s]];o&&n.push(o)}else i.helperType&&r[i.helperType]?n.push(r[i.helperType]):r[i.name]&&n.push(r[i.name]);for(var s=0;s<r._global.length;s++){var u=r._global[s];u.pred(i,this)&&qo(n,u.val)==-1&&n.push(u.val)}return n},getStateAfter:function(e,t){var n=this.doc;return e=Et(n,e==null?n.first+n.size-1:e),Jt(this,e+1,t)},cursorCoords:function(e,t){var n,r=this.doc.sel.primary();return e==null?n=r.head:typeof e=="object"?n=St(this.doc,e):n=e?r.from():r.to(),gn(this,n,t||"page")},charCoords:function(e,t){return mn(this,St(this.doc,e),t||"page")},coordsChar:function(e,t){return e=vn(this,e,t||"page"),wn(this,e.left,e.top)},lineAtHeight:function(e,t){return e=vn(this,{top:e,left:0},t||"page").top,$s(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t){var n=!1,r=this.doc.first+this.doc.size-1;e<this.doc.first?e=this.doc.first:e>r&&(e=r,n=!0);var i=Us(this.doc,e);return dn(this,i,{top:0,left:0},t||"page").top+(n?this.doc.height-Js(i):0)},defaultTextHeight:function(){return xn(this.display)},defaultCharWidth:function(){return Tn(this.display)},setGutterMarker:Fn(function(e,t,n){return si(this.doc,e,"gutter",function(e){var r=e.gutterMarkers||(e.gutterMarkers={});return r[t]=n,!n&&Jo(r)&&(e.gutterMarkers=null),!0})}),clearGutter:Fn(function(e){var t=this,n=t.doc,r=n.first;n.iter(function(n){n.gutterMarkers&&n.gutterMarkers[e]&&(n.gutterMarkers[e]=null,zn(t,r,"gutter"),Jo(n.gutterMarkers)&&(n.gutterMarkers=null)),++r})}),addLineWidget:Fn(function(e,t,n){return ls(this,e,t,n)}),removeLineWidget:function(e){e.clear()},lineInfo:function(e){if(typeof e=="number"){if(!Tt(this.doc,e))return null;var t=e;e=Us(this.doc,e);if(!e)return null}else{var t=Vs(e);if(t==null)return null}return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,i){var s=this.display;e=gn(this,St(this.doc,e));var o=e.bottom,u=e.left;t.style.position="absolute",s.sizer.appendChild(t);if(r=="over")o=e.top;else if(r=="above"||r=="near"){var a=Math.max(s.wrapper.clientHeight,this.doc.height),f=Math.max(s.sizer.clientWidth,s.lineSpace.clientWidth);(r=="above"||e.bottom+t.offsetHeight>a)&&e.top>t.offsetHeight?o=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=a&&(o=e.bottom),u+t.offsetWidth>f&&(u=f-t.offsetWidth)}t.style.top=o+"px",t.style.left=t.style.right="",i=="right"?(u=s.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):(i=="left"?u=0:i=="middle"&&(u=(s.sizer.clientWidth-t.offsetWidth)/2),t.style.left=u+"px"),n&&Zr(this,u,o,u+t.offsetWidth,o+t.offsetHeight)},triggerOnKeyDown:Fn(Or),triggerOnKeyPress:Fn(Dr),triggerOnKeyUp:_r,execCommand:function(e){if(wi.hasOwnProperty(e))return wi[e](this)},findPosH:function(e,t,n,r){var i=1;t<0&&(i=-1,t=-t);for(var s=0,o=St(this.doc,e);s<t;++s){o=ui(this.doc,o,i,n,r);if(o.hitSide)break}return o},moveH:Fn(function(e,t){var n=this;n.extendSelectionsBy(function(r){return n.display.shift||n.doc.extend||r.empty()?ui(n.doc,r.head,e,t,n.options.rtlMoveVisually):e<0?r.from():r.to()},_o)}),deleteH:Fn(function(e,t){var n=this.doc.sel,r=this.doc;n.somethingSelected()?r.replaceSelection("",null,"+delete"):oi(this,function(n){var i=ui(r,n.head,e,t,!1);return e<0?{from:i,to:n.head}:{from:n.head,to:i}})}),findPosV:function(e,t,n,r){var i=1,s=r;t<0&&(i=-1,t=-t);for(var o=0,u=St(this.doc,e);o<t;++o){var a=gn(this,u,"div");s==null?s=a.left:a.left=s,u=ai(this,a,i,n);if(u.hitSide)break}return u},moveV:Fn(function(e,t){var n=this,r=this.doc,i=[],s=!n.display.shift&&!r.extend&&r.sel.somethingSelected();r.extendSelectionsBy(function(o){if(s)return e<0?o.from():o.to();var u=gn(n,o.head,"div");o.goalColumn!=null&&(u.left=o.goalColumn),i.push(u.left);var a=ai(n,u,e,t);return t=="page"&&o==r.sel.primary()&&ti(n,null,mn(n,a,"div").top-u.top),a},_o);if(i.length)for(var o=0;o<r.sel.ranges.length;o++)r.sel.ranges[o].goalColumn=i[o]}),findWordAt:function(e){var t=this.doc,n=Us(t,e.line).text,r=e.ch,i=e.ch;if(n){var s=this.getHelper(e,"wordChars");(e.xRel<0||i==n.length)&&r?--r:++i;var o=n.charAt(r),u=$o(o,s)?function(e){return $o(e,s)}:/\s/.test(o)?function(e){return/\s/.test(e)}:function(e){return!/\s/.test(e)&&!$o(e)};while(r>0&&u(n.charAt(r-1)))--r;while(i<n.length&&u(n.charAt(i)))++i}return new yt(ht(e.line,r),ht(e.line,i))},toggleOverwrite:function(e){if(e!=null&&e==this.state.overwrite)return;(this.state.overwrite=!this.state.overwrite)?su(this.display.cursorDiv,"CodeMirror-overwrite"):iu(this.display.cursorDiv,"CodeMirror-overwrite"),wo(this,"overwriteToggle",this,this.state.overwrite)},hasFocus:function(){return nu()==this.display.input},scrollTo:Fn(function(e,t){(e!=null||t!=null)&&ri(this),e!=null&&(this.curOp.scrollLeft=e),t!=null&&(this.curOp.scrollTop=t)}),getScrollInfo:function(){var e=this.display.scroller,t=Lo;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-t,width:e.scrollWidth-t,clientHeight:e.clientHeight-t,clientWidth:e.clientWidth-t}},scrollIntoView:Fn(function(e,t){e==null?(e={from:this.doc.sel.primary().head,to:null},t==null&&(t=this.options.cursorScrollMargin)):typeof e=="number"?e={from:ht(e,0),to:null}:e.from==null&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0;if(e.from.line!=null)ri(this),this.curOp.scrollToPos=e;else{var n=ei(this,Math.min(e.from.left,e.to.left),Math.min(e.from.top,e.to.top)-e.margin,Math.max(e.from.right,e.to.right),Math.max(e.from.bottom,e.to.bottom)+e.margin);this.scrollTo(n.scrollLeft,n.scrollTop)}}),setSize:Fn(function(e,t){function r(e){return typeof e=="number"||/^\d+$/.test(String(e))?e+"px":e}var n=this;e!=null&&(n.display.wrapper.style.width=r(e)),t!=null&&(n.display.wrapper.style.height=r(t)),n.options.lineWrapping&&ln(this);var i=n.display.viewFrom;n.doc.iter(i,n.display.viewTo,function(e){if(e.widgets)for(var t=0;t<e.widgets.length;t++)if(e.widgets[t].noHScroll){zn(n,i,"widget");break}++i}),n.curOp.forceUpdate=!0,wo(n,"refresh",this)}),operation:function(e){return Bn(this,e)},refresh:Fn(function(){var e=this.display.cachedTextHeight;Un(this),this.curOp.forceUpdate=!0,cn(this),this.scrollTo(this.doc.scrollLeft,this.doc.scrollTop),_(this),(e==null||Math.abs(e-xn(this.display))>.5)&&L(this),wo(this,"refresh",this)}),swapDoc:Fn(function(e){var t=this.doc;return t.cm=null,Rs(this,e),cn(this),Zn(this),this.scrollTo(e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,So(this,"swapDoc",this,t),t}),getInputField:function(){return this.display.input},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},ko(S);var fi=S.defaults={},li=S.optionHandlers={},hi=S.Init={toString:function(){return"CodeMirror.Init"}};ci("value","",function(e,t){e.setValue(t)},!0),ci("mode",null,function(e,t){e.doc.modeOption=t,T(e)},!0),ci("indentUnit",2,T,!0),ci("indentWithTabs",!1),ci("smartIndent",!0),ci("tabSize",4,function(e){N(e),cn(e),Un(e)},!0),ci("specialChars",/[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(e,t){e.options.specialChars=new RegExp(t.source+(t.test("	")?"":"|	"),"g"),e.refresh()},!0),ci("specialCharPlaceholder",Cs,function(e){e.refresh()},!0),ci("electricChars",!0),ci("rtlMoveVisually",!m),ci("wholeLineUpdateBefore",!0),ci("theme","default",function(e){A(e),O(e)},!0),ci("keyMap","default",function(e,t,n){var r=Ci(t),i=n!=S.Init&&Ci(n);i&&i.detach&&i.detach(e,r),r.attach&&r.attach(e,i||null)}),ci("extraKeys",null),ci("lineWrapping",!1,C,!0),ci("gutters",[],function(e){H(e.options),O(e)},!0),ci("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?z(e.display)+"px":"0",e.refresh()},!0),ci("coverGutterNextToScrollbar",!1,F,!0),ci("lineNumbers",!1,function(e){H(e.options),O(e)},!0),ci("firstLineNumber",1,O,!0),ci("lineNumberFormatter",function(e){return e},O,!0),ci("showCursorWhenSelecting",!1,Rt,!0),ci("resetSelectionOnContextMenu",!0),ci("readOnly",!1,function(e,t){t=="nocursor"?(Hr(e),e.display.input.blur(),e.display.disabled=!0):(e.display.disabled=!1,t||Zn(e))}),ci("disableInput",!1,function(e,t){t||Zn(e)},!0),ci("dragDrop",!0),ci("cursorBlinkRate",530),ci("cursorScrollMargin",0),ci("cursorHeight",1,Rt,!0),ci("singleCursorHeightPerLine",!0,Rt,!0),ci("workTime",100),ci("workDelay",100),ci("flattenSpans",!0,N,!0),ci("addModeClass",!1,N,!0),ci("pollInterval",100),ci("undoDepth",200,function(e,t){e.doc.history.undoDepth=t}),ci("historyEventDelay",1250),ci("viewportMargin",10,function(e){e.refresh()},!0),ci("maxHighlightLength",1e4,N,!0),ci("moveInputWithCursor",!0,function(e,t){t||(e.display.inputDiv.style.top=e.display.inputDiv.style.left=0)}),ci("tabindex",null,function(e,t){e.display.input.tabIndex=t||""}),ci("autofocus",null);var pi=S.modes={},di=S.mimeModes={};S.defineMode=function(e,t){!S.defaults.mode&&e!="null"&&(S.defaults.mode=e),arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),pi[e]=t},S.defineMIME=function(e,t){di[e]=t},S.resolveMode=function(e){if(typeof e=="string"&&di.hasOwnProperty(e))e=di[e];else if(e&&typeof e.name=="string"&&di.hasOwnProperty(e.name)){var t=di[e.name];typeof t=="string"&&(t={name:t}),e=Uo(t,e),e.name=t.name}else if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return S.resolveMode("application/xml");return typeof e=="string"?{name:e}:e||{name:"null"}},S.getMode=function(e,t){var t=S.resolveMode(t),n=pi[t.name];if(!n)return S.getMode(e,"text/plain");var r=n(e,t);if(vi.hasOwnProperty(t.name)){var i=vi[t.name];for(var s in i){if(!i.hasOwnProperty(s))continue;r.hasOwnProperty(s)&&(r["_"+s]=r[s]),r[s]=i[s]}}r.name=t.name,t.helperType&&(r.helperType=t.helperType);if(t.modeProps)for(var s in t.modeProps)r[s]=t.modeProps[s];return r},S.defineMode("null",function(){return{token:function(e){e.skipToEnd()}}}),S.defineMIME("text/plain","null");var vi=S.modeExtensions={};S.extendMode=function(e,t){var n=vi.hasOwnProperty(e)?vi[e]:vi[e]={};zo(t,n)},S.defineExtension=function(e,t){S.prototype[e]=t},S.defineDocExtension=function(e,t){js.prototype[e]=t},S.defineOption=ci;var mi=[];S.defineInitHook=function(e){mi.push(e)};var gi=S.helpers={};S.registerHelper=function(e,t,n){gi.hasOwnProperty(e)||(gi[e]=S[e]={_global:[]}),gi[e][t]=n},S.registerGlobalHelper=function(e,t,n,r){S.registerHelper(e,t,r),gi[e]._global.push({pred:n,val:r})};var yi=S.copyState=function(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var i=t[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n},bi=S.startState=function(e,t,n){return e.startState?e.startState(t,n):!0};S.innerMode=function(e,t){while(e.innerMode){var n=e.innerMode(t);if(!n||n.mode==e)break;t=n.state,e=n.mode}return n||{mode:e,state:t}};var wi=S.commands={selectAll:function(e){e.setSelection(ht(e.firstLine(),0),ht(e.lastLine()),Oo)},singleSelection:function(e){e.setSelection(e.getCursor("anchor"),e.getCursor("head"),Oo)},killLine:function(e){oi(e,function(t){if(t.empty()){var n=Us(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line<e.lastLine()?{from:t.head,to:ht(t.head.line+1,0)}:{from:t.head,to:ht(t.head.line,n)}}return{from:t.from(),to:t.to()}})},deleteLine:function(e){oi(e,function(t){return{from:ht(t.from().line,0),to:St(e.doc,ht(t.to().line+1,0))}})},delLineLeft:function(e){oi(e,function(e){return{from:ht(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(e){oi(e,function(t){var n=e.charCoords(t.head,"div").top+5,r=e.coordsChar({left:0,top:n},"div");return{from:r,to:t.from()}})},delWrappedLineRight:function(e){oi(e,function(t){var n=e.charCoords(t.head,"div").top+5,r=e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:n},"div");return{from:t.from(),to:r}})},undo:function(e){e.undo()},redo:function(e){e.redo()},undoSelection:function(e){e.undoSelection()},redoSelection:function(e){e.redoSelection()},goDocStart:function(e){e.extendSelection(ht(e.firstLine(),0))},goDocEnd:function(e){e.extendSelection(ht(e.lastLine()))},goLineStart:function(e){e.extendSelectionsBy(function(t){return Au(e,t.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(e){e.extendSelectionsBy(function(t){return Mu(e,t.head)},{origin:"+move",bias:1})},goLineEnd:function(e){e.extendSelectionsBy(function(t){return Ou(e,t.head.line)},{origin:"+move",bias:-1})},goLineRight:function(e){e.extendSelectionsBy(function(t){var n=e.charCoords(t.head,"div").top+5;return e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:n},"div")},_o)},goLineLeft:function(e){e.extendSelectionsBy(function(t){var n=e.charCoords(t.head,"div").top+5;return e.coordsChar({left:0,top:n},"div")},_o)},goLineLeftSmart:function(e){e.extendSelectionsBy(function(t){var n=e.charCoords(t.head,"div").top+5,r=e.coordsChar({left:0,top:n},"div");return r.ch<e.getLine(r.line).search(/\S/)?Mu(e,t.head):r},_o)},goLineUp:function(e){e.moveV(-1,"line")},goLineDown:function(e){e.moveV(1,"line")},goPageUp:function(e){e.moveV(-1,"page")},goPageDown:function(e){e.moveV(1,"page")},goCharLeft:function(e){e.moveH(-1,"char")},goCharRight:function(e){e.moveH(1,"char")},goColumnLeft:function(e){e.moveH(-1,"column")},goColumnRight:function(e){e.moveH(1,"column")},goWordLeft:function(e){e.moveH(-1,"word")},goGroupRight:function(e){e.moveH(1,"group")},goGroupLeft:function(e){e.moveH(-1,"group")},goWordRight:function(e){e.moveH(1,"word")},delCharBefore:function(e){e.deleteH(-1,"char")},delCharAfter:function(e){e.deleteH(1,"char")},delWordBefore:function(e){e.deleteH(-1,"word")},delWordAfter:function(e){e.deleteH(1,"word")},delGroupBefore:function(e){e.deleteH(-1,"group")},delGroupAfter:function(e){e.deleteH(1,"group")},indentAuto:function(e){e.indentSelection("smart")},indentMore:function(e){e.indentSelection("add")},indentLess:function(e){e.indentSelection("subtract")},insertTab:function(e){e.replaceSelection("	")},insertSoftTab:function(e){var t=[],n=e.listSelections(),r=e.options.tabSize;for(var i=0;i<n.length;i++){var s=n[i].from(),o=Po(e.getLine(s.line),s.ch,r);t.push((new Array(r-o%r+1)).join(" "))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection("add"):e.execCommand("insertTab")},transposeChars:function(e){Bn(e,function(){var t=e.listSelections(),n=[];for(var r=0;r<t.length;r++){var i=t[r].head,s=Us(e.doc,i.line).text;if(s){i.ch==s.length&&(i=new ht(i.line,i.ch-1));if(i.ch>0)i=new ht(i.line,i.ch+1),e.replaceRange(s.charAt(i.ch-1)+s.charAt(i.ch-2),ht(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var o=Us(e.doc,i.line-1).text;o&&e.replaceRange(s.charAt(0)+"\n"+o.charAt(o.length-1),ht(i.line-1,o.length-1),ht(i.line,1),"+transpose")}}n.push(new yt(i,i))}e.setSelections(n)})},newlineAndIndent:function(e){Bn(e,function(){var t=e.listSelections().length;for(var n=0;n<t;n++){var r=e.listSelections()[n];e.replaceRange("\n",r.anchor,r.head,"+input"),e.indentLine(r.from().line+1,null,!0),ni(e)}})},toggleOverwrite:function(e){e.toggleOverwrite()}},Ei=S.keyMap={};Ei.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Ei.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Ei.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars"},Ei.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Ei["default"]=v?Ei.macDefault:Ei.pcDefault,S.normalizeKeyMap=function(e){var t={};for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];if(/^(name|fallthrough|(de|at)tach)$/.test(n))continue;if(r=="..."){delete e[n];continue}var i=Ro(n.split(" "),Si);for(var s=0;s<i.length;s++){var o,u;s==i.length-1?(u=n,o=r):(u=i.slice(0,s+1).join(" "),o="...");var a=t[u];if(!a)t[u]=o;else if(a!=o)throw new Error("Inconsistent bindings for "+u)}delete e[n]}for(var f in t)e[f]=t[f];return e};var xi=S.lookupKey=function(e,t,n){t=Ci(t);var r=t.call?t.call(e):t[e];if(r===!1)return"nothing";if(r==="...")return"multi";if(r!=null&&n(r))return"handled";if(t.fallthrough){if(Object.prototype.toString.call(t.fallthrough)!="[object Array]")return xi(e,t.fallthrough,n);for(var i=0;i<t.fallthrough.length;i++){var s=xi(e,t.fallthrough[i],n);if(s)return s}}},Ti=S.isModifierKey=function(e){var t=typeof e=="string"?e:xu[e.keyCode];return t=="Ctrl"||t=="Alt"||t=="Shift"||t=="Mod"},Ni=S.keyName=function(e,t){if(a&&e.keyCode==34&&e["char"])return!1;var n=xu[e.keyCode],r=n;return r==null||e.altGraphKey?!1:(e.altKey&&n!="Alt"&&(r="Alt-"+r),(y?e.metaKey:e.ctrlKey)&&n!="Ctrl"&&(r="Ctrl-"+r),(y?e.ctrlKey:e.metaKey)&&n!="Cmd"&&(r="Cmd-"+r),!t&&e.shiftKey&&n!="Shift"&&(r="Shift-"+r),r)};S.fromTextArea=function(e,t){function r(){e.value=a.getValue()}t||(t={}),t.value=e.value,!t.tabindex&&e.tabindex&&(t.tabindex=e.tabindex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder);if(t.autofocus==null){var n=nu();t.autofocus=n==e||e.getAttribute("autofocus")!=null&&n==document.body}if(e.form){yo(e.form,"submit",r);if(!t.leaveSubmitMethodAlone){var i=e.form,s=i.submit;try{var o=i.submit=function(){r(),i.submit=s,i.submit(),i.submit=o}}catch(u){}}}e.style.display="none";var a=S(function(t){e.parentNode.insertBefore(t,e.nextSibling)},t);return a.save=r,a.getTextArea=function(){return e},a.toTextArea=function(){a.toTextArea=isNaN,r(),e.parentNode.removeChild(a.getWrapperElement()),e.style.display="",e.form&&(bo(e.form,"submit",r),typeof e.form.submit=="function"&&(e.form.submit=s))},a};var ki=S.StringStream=function(e,t){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};ki.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||undefined},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(e){var t=this.string.charAt(this.pos);if(typeof e=="string")var n=t==e;else var n=t&&(e.test?e.test(t):e(t));if(n)return++this.pos,t},eatWhile:function(e){var t=this.pos;while(this.eat(e));return this.pos>t},eatSpace:function(){var e=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},backUp:function(e){this.pos-=e},column:function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=Po(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?Po(this.string,this.lineStart,this.tabSize):0)},indentation:function(){return Po(this.string,null,this.tabSize)-(this.lineStart?Po(this.string,this.lineStart,this.tabSize):0)},match:function(e,t,n){if(typeof e!="string"){var s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&t!==!1&&(this.pos+=s[0].length),s)}var r=function(e){return n?e.toLowerCase():e},i=this.string.substr(this.pos,e.length);if(r(i)==r(e))return t!==!1&&(this.pos+=e.length),!0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}};var Li=S.TextMarker=function(e,t){this.lines=[],this.type=t,this.doc=e};ko(Li),Li.prototype.clear=function(){if(this.explicitlyCleared)return;var e=this.doc.cm,t=e&&!e.curOp;t&&kn(e);if(Co(this,"clear")){var n=this.find();n&&So(this,"clear",n.from,n.to)}var r=null,i=null;for(var s=0;s<this.lines.length;++s){var o=this.lines[s],u=ji(o.markedSpans,this);e&&!this.collapsed?zn(e,Vs(o),"text"):e&&(u.to!=null&&(i=Vs(o)),u.from!=null&&(r=Vs(o))),o.markedSpans=Fi(o.markedSpans,u),u.from==null&&this.collapsed&&!ss(this.doc,o)&&e&&Xs(o,xn(e.display))}if(e&&this.collapsed&&!e.options.lineWrapping)for(var s=0;s<this.lines.length;++s){var a=ts(this.lines[s]),f=D(a);f>e.display.maxLineLength&&(e.display.maxLine=a,e.display.maxLineLength=f,e.display.maxLineChanged=!0)}r!=null&&e&&this.collapsed&&Un(e,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Bt(e.doc)),e&&So(e,"markerCleared",e,this),t&&An(e),this.parent&&this.parent.clear()},Li.prototype.find=function(e,t){e==null&&this.type=="bookmark"&&(e=1);var n,r;for(var i=0;i<this.lines.length;++i){var s=this.lines[i],o=ji(s.markedSpans,this);if(o.from!=null){n=ht(t?s:Vs(s),o.from);if(e==-1)return n}if(o.to!=null){r=ht(t?s:Vs(s),o.to);if(e==1)return r}}return n&&{from:n,to:r}},Li.prototype.changed=function(){var e=this.find(-1,!0),t=this,n=this.doc.cm;if(!e||!n)return;Bn(n,function(){var r=e.line,i=Vs(e.line),s=nn(n,i);s&&(fn(s),n.curOp.selectionChanged=n.curOp.forceUpdate=!0),n.curOp.updateMaxLine=!0;if(!ss(t.doc,r)&&t.height!=null){var o=t.height;t.height=null;var u=fs(t)-o;u&&Xs(r,r.height+u)}})},Li.prototype.attachLine=function(e){if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(!t.maybeHiddenMarkers||qo(t.maybeHiddenMarkers,this)==-1)&&(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(e)},Li.prototype.detachLine=function(e){this.lines.splice(qo(this.lines,e),1);if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(t.maybeHiddenMarkers||(t.maybeHiddenMarkers=[])).push(this)}};var Ai=0,Mi=S.SharedTextMarker=function(e,t){this.markers=e,this.primary=t;for(var n=0;n<e.length;++n)e[n].parent=this};ko(Mi),Mi.prototype.clear=function(){if(this.explicitlyCleared)return;this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)this.markers[e].clear();So(this,"clear")},Mi.prototype.find=function(e,t){return this.primary.find(e,t)};var us=S.LineWidget=function(e,t,n){if(n)for(var r in n)n.hasOwnProperty(r)&&(this[r]=n[r]);this.cm=e,this.node=t};ko(us),us.prototype.clear=function(){var e=this.cm,t=this.line.widgets,n=this.line,r=Vs(n);if(r==null||!t)return;for(var i=0;i<t.length;++i)t[i]==this&&t.splice(i--,1);t.length||(n.widgets=null);var s=fs(this);Bn(e,function(){as(e,n,-s),zn(e,r,"widget"),Xs(n,Math.max(0,n.height-s))})},us.prototype.changed=function(){var e=this.height,t=this.cm,n=this.line;this.height=null;var r=fs(this)-e;if(!r)return;Bn(t,function(){t.curOp.forceUpdate=!0,as(t,n,r),Xs(n,n.height+r)})};var cs=S.Line=function(e,t,n){this.text=e,$i(this,t),this.height=n?n(this):1};ko(cs),cs.prototype.lineNo=function(){return Vs(this)};var Ss={},xs={};Ps.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var n=e,r=e+t;n<r;++n){var i=this.lines[n];this.height-=i.height,ps(i),So(i,"delete")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,n){this.height+=n,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var r=0;r<t.length;++r)t[r].parent=this},iterN:function(e,t,n){for(var r=e+t;e<r;++e)if(n(this.lines[e]))return!0}},Hs.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var n=0;n<this.children.length;++n){var r=this.children[n],i=r.chunkSize();if(e<i){var s=Math.min(t,i-e),o=r.height;r.removeInner(e,s),this.height-=o-r.height,i==s&&(this.children.splice(n--,1),r.parent=null);if((t-=s)==0)break;e=0}else e-=i}if(this.size-t<25&&(this.children.length>1||!(this.children[0]instanceof Ps))){var u=[];this.collapse(u),this.children=[new Ps(u)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t<this.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,n){this.size+=t.length,this.height+=n;for(var r=0;r<this.children.length;++r){var i=this.children[r],s=i.chunkSize();if(e<=s){i.insertInner(e,t,n);if(i.lines&&i.lines.length>50){while(i.lines.length>50){var o=i.lines.splice(i.lines.length-25,25),u=new Ps(o);i.height-=u.height,this.children.splice(r+1,0,u),u.parent=this}this.maybeSpill()}break}e-=s}},maybeSpill:function(){if(this.children.length<=10)return;var e=this;do{var t=e.children.splice(e.children.length-5,5),n=new Hs(t);if(!e.parent){var r=new Hs(e.children);r.parent=e,e.children=[r,n],e=r}else{e.size-=n.size,e.height-=n.height;var i=qo(e.parent.children,e);e.parent.children.splice(i+1,0,n)}n.parent=e.parent}while(e.children.length>10);e.parent.maybeSpill()},iterN:function(e,t,n){for(var r=0;r<this.children.length;++r){var i=this.children[r],s=i.chunkSize();if(e<s){var o=Math.min(t,s-e);if(i.iterN(e,o,n))return!0;if((t-=o)==0)break;e=0}else e-=s}}};var Bs=0,js=S.Doc=function(e,t,n){if(!(this instanceof js))return new js(e,t,n);n==null&&(n=0),Hs.call(this,[new Ps([new cs("",null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=n;var r=ht(n,0);this.sel=wt(r),this.history=new Qs(null),this.id=++Bs,this.modeOption=t,typeof e=="string"&&(e=yu(e)),Ds(this,{from:r,to:r,text:e}),Dt(this,wt(r),Oo)};js.prototype=Uo(Hs.prototype,{constructor:js,iter:function(e,t,n){n?this.iterN(e-this.first,t-e,n):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){var n=0;for(var r=0;r<t.length;++r)n+=t[r].height;this.insertInner(e-this.first,t,n)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=Ws(this,this.first,this.first+this.size);return e===!1?t:t.join(e||"\n")},setValue:In(function(e){var t=ht(this.first,0),n=this.first+this.size-1;Wr(this,{from:t,to:ht(n,Us(this,n).text.length),text:yu(e),origin:"setValue"},!0),Dt(this,wt(t))}),replaceRange:function(e,t,n,r){t=St(this,t),n=n?St(this,n):t,Qr(this,e,t,n,r)},getRange:function(e,t,n){var r=zs(this,St(this,e),St(this,t));return n===!1?r:r.join(n||"\n")},getLine:function(e){var t=this.getLineHandle(e);return t&&t.text},getLineHandle:function(e){if(Tt(this,e))return Us(this,e)},getLineNumber:function(e){return Vs(e)},getLineHandleVisualStart:function(e){return typeof e=="number"&&(e=Us(this,e)),ts(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return St(this,e)},getCursor:function(e){var t=this.sel.primary(),n;return e==null||e=="head"?n=t.head:e=="anchor"?n=t.anchor:e=="end"||e=="to"||e===!1?n=t.to():n=t.from(),n},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:In(function(e,t,n){Ot(this,St(this,typeof e=="number"?ht(e,t||0):e),null,n)}),setSelection:In(function(e,t,n){Ot(this,St(this,e),St(this,t||e),n)}),extendSelection:In(function(e,t,n){kt(this,St(this,e),t&&St(this,t),n)}),extendSelections:In(function(e,t){Lt(this,Nt(this,e,t))}),extendSelectionsBy:In(function(e,t){Lt(this,Ro(this.sel.ranges,e),t)}),setSelections:In(function(e,t,n){if(!e.length)return;for(var r=0,i=[];r<e.length;r++)i[r]=new yt(St(this,e[r].anchor),St(this,e[r].head));t==null&&(t=Math.min(e.length-1,this.sel.primIndex)),Dt(this,bt(i,t),n)}),addSelection:In(function(e,t,n){var r=this.sel.ranges.slice(0);r.push(new yt(St(this,e),St(this,t||e))),Dt(this,bt(r,r.length-1),n)}),getSelection:function(e){var t=this.sel.ranges,n;for(var r=0;r<t.length;r++){var i=zs(this,t[r].from(),t[r].to());n=n?n.concat(i):i}return e===!1?n:n.join(e||"\n")},getSelections:function(e){var t=[],n=this.sel.ranges;for(var r=0;r<n.length;r++){var i=zs(this,n[r].from(),n[r].to());e!==!1&&(i=i.join(e||"\n")),t[r]=i}return t},replaceSelection:function(e,t,n){var r=[];for(var i=0;i<this.sel.ranges.length;i++)r[i]=e;this.replaceSelections(r,t,n||"+input")},replaceSelections:In(function(e,t,n){var r=[],i=this.sel;for(var s=0;s<i.ranges.length;s++){var o=i.ranges[s];r[s]={from:o.from(),to:o.to(),text:yu(e[s]),origin:n}}var u=t&&t!="end"&&Ur(this,r,t);for(var s=r.length-1;s>=0;s--)Wr(this,r[s]);u?_t(this,u):this.cm&&ni(this.cm)}),undo:In(function(){Vr(this,"undo")}),redo:In(function(){Vr(this,"redo")}),undoSelection:In(function(){Vr(this,"undo",!0)}),redoSelection:In(function(){Vr(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){var e=this.history,t=0,n=0;for(var r=0;r<e.done.length;r++)e.done[r].ranges||++t;for(var r=0;r<e.undone.length;r++)e.undone[r].ranges||++n;return{undo:t,redo:n}},clearHistory:function(){this.history=new Qs(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:uo(this.history.done),undone:uo(this.history.undone)}},setHistory:function(e){var t=this.history=new Qs(this.history.maxGeneration);t.done=uo(e.done.slice(0),null,!0),t.undone=uo(e.undone.slice(0),null,!0)},addLineClass:In(function(e,t,n){return si(this,e,t=="gutter"?"gutter":"class",function(e){var r=t=="text"?"textClass":t=="background"?"bgClass":t=="gutter"?"gutterClass":"wrapClass";if(!e[r])e[r]=n;else{if(ru(n).test(e[r]))return!1;e[r]+=" "+n}return!0})}),removeLineClass:In(function(e,t,n){return si(this,e,"class",function(e){var r=t=="text"?"textClass":t=="background"?"bgClass":t=="gutter"?"gutterClass":"wrapClass",i=e[r];if(!i)return!1;if(n==null)e[r]=null;else{var s=i.match(ru(n));if(!s)return!1;var o=s.index+s[0].length;e[r]=i.slice(0,s.index)+(!s.index||o==i.length?"":" ")+i.slice(o)||null}return!0})}),markText:function(e,t,n){return Oi(this,St(this,e),St(this,t),n,"range")},setBookmark:function(e,t){var n={replacedWith:t&&(t.nodeType==null?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared};return e=St(this,e),Oi(this,e,e,n,"bookmark")},findMarksAt:function(e){e=St(this,e);var t=[],n=Us(this,e.line).markedSpans;if(n)for(var r=0;r<n.length;++r){var i=n[r];(i.from==null||i.from<=e.ch)&&(i.to==null||i.to>=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,n){e=St(this,e),t=St(this,t);var r=[],i=e.line;return this.iter(e.line,t.line+1,function(s){var o=s.markedSpans;if(o)for(var u=0;u<o.length;u++){var a=o[u];!(i==e.line&&e.ch>a.to||a.from==null&&i!=e.line||i==t.line&&a.from>t.ch)&&(!n||n(a.marker))&&r.push(a.marker.parent||a.marker)}++i}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var n=t.markedSpans;if(n)for(var r=0;r<n.length;++r)n[r].from!=null&&e.push(n[r].marker)}),e},posFromIndex:function(e){var t,n=this.first;return this.iter(function(r){var i=r.text.length+1;if(i>e)return t=e,!0;e-=i,++n}),St(this,ht(n,t))},indexFromPos:function(e){e=St(this,e);var t=e.ch;return e.line<this.first||e.ch<0?0:(this.iter(this.first,e.line,function(e){t+=e.text.length+1}),t)},copy:function(e){var t=new js(Ws(this,this.first,this.first+this.size),this.modeOption,this.first);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e||(e={});var t=this.first,n=this.first+this.size;e.from!=null&&e.from>t&&(t=e.from),e.to!=null&&e.to<n&&(n=e.to);var r=new js(Ws(this,t,n),e.mode||this.modeOption,t);return e.sharedHist&&(r.history=this.history),(this.linked||(this.linked=[])).push({doc:r,sharedHist:e.sharedHist}),r.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],Pi(r,Di(this)),r},unlinkDoc:function(e){e instanceof S&&(e=e.doc);if(this.linked)for(var t=0;t<this.linked.length;++t){var n=this.linked[t];if(n.doc!=e)continue;this.linked.splice(t,1),e.unlinkDoc(this),Hi(Di(this));break}if(e.history==this.history){var r=[e.id];qs(e,function(e){r.push(e.id)},!0),e.history=new Qs(null),e.history.done=uo(this.history.done,r),e.history.undone=uo(this.history.undone,r)}},iterLinkedDocs:function(e){qs(this,e)},getMode:function(){return this.mode},getEditor:function(){return this.cm}}),js.prototype.eachLine=js.prototype.iter;var Fs="iter insert remove copy getEditor".split(" ");for(var Is in js.prototype)js.prototype.hasOwnProperty(Is)&&qo(Fs,Is)<0&&(S.prototype[Is]=function(e){return function(){return e.apply(this.doc,arguments)}}(js.prototype[Is]));ko(js);var co=S.e_preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},ho=S.e_stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},vo=S.e_stop=function(e){co(e),ho(e)},yo=S.on=function(e,t,n){if(e.addEventListener)e.addEventListener(t,n,!1);else if(e.attachEvent)e.attachEvent("on"+t,n);else{var r=e._handlers||(e._handlers={}),i=r[t]||(r[t]=[]);i.push(n)}},bo=S.off=function(e,t,n){if(e.removeEventListener)e.removeEventListener(t,n,!1);else if(e.detachEvent)e.detachEvent("on"+t,n);else{var r=e._handlers&&e._handlers[t];if(!r)return;for(var i=0;i<r.length;++i)if(r[i]==n){r.splice(i,1);break}}},wo=S.signal=function(e,t){var n=e._handlers&&e._handlers[t];if(!n)return;var r=Array.prototype.slice.call(arguments,2);for(var i=0;i<n.length;++i)n[i].apply(null,r)},Eo=null,Lo=30,Ao=S.Pass={toString:function(){return"CodeMirror.Pass"}},Oo={scroll:!1},Mo={origin:"*mouse"},_o={origin:"+move"};Do.prototype.set=function(e,t){clearTimeout(this.id),this.id=setTimeout(t,e)};var Po=S.countColumn=function(e,t,n,r,i){t==null&&(t=e.search(/[^\s\u00a0]/),t==-1&&(t=e.length));for(var s=r||0,o=i||0;;){var u=e.indexOf("	",s);if(u<0||u>=t)return o+(t-s);o+=u-s,o+=n-o%n,s=u+1}},Bo=[""],Io=function(e){e.select()};p?Io=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:r&&(Io=function(e){try{e.select()}catch(t){}}),[].indexOf&&(qo=function(e,t){return e.indexOf(t)}),[].map&&(Ro=function(e,t){return e.map(t)});var Xo=/[\u00df\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Vo=S.isWordChar=function(e){return/\w/.test(e)||e>"€"&&(e.toUpperCase()!=e.toLowerCase()||Xo.test(e))},Ko=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/,Yo;document.createRange?Yo=function(e,t,n){var r=document.createRange();return r.setEnd(e,n),r.setStart(e,t),r}:Yo=function(e,t,n){var r=document.body.createTextRange();try{r.moveToElementText(e.parentNode)}catch(i){return r}return r.collapse(!0),r.moveEnd("character",n),r.moveStart("character",t),r},r&&i<11&&(nu=function(){try{return document.activeElement}catch(e){return document.body}});var iu=S.rmClass=function(e,t){var n=e.className,r=ru(t).exec(n);if(r){var i=n.slice(r.index+r[0].length);e.className=n.slice(0,r.index)+(i?r[1]+i:"")}},su=S.addClass=function(e,t){var n=e.className;ru(t).test(n)||(e.className+=(n?" ":"")+t)},au=!1,cu=function(){if(r&&i<9)return!1;var e=Go("div");return"draggable"in e||"dragDrop"in e}(),hu,du,mu,yu=S.splitLines="\n\nb".split(/\n/).length!=3?function(e){var t=0,n=[],r=e.length;while(t<=r){var i=e.indexOf("\n",t);i==-1&&(i=e.length);var s=e.slice(t,e.charAt(i-1)=="\r"?i-1:i),o=s.indexOf("\r");o!=-1?(n.push(s.slice(0,o)),t+=o+1):(n.push(s),t=i+1)}return n}:function(e){return e.split(/\r\n?|\n/)},bu=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(t){return!1}}:function(e){try{var t=e.ownerDocument.selection.createRange()}catch(n){}return!t||t.parentElement()!=e?!1:t.compareEndPoints("StartToEnd",t)!=0},wu=function(){var e=Go("div");return"oncopy"in e?!0:(e.setAttribute("oncopy","return;"),typeof e.oncopy=="function")}(),Eu=null,xu={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",107:"=",109:"-",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};S.keyNames=xu,function(){for(var e=0;e<10;e++)xu[e+48]=xu[e+96]=String(e);for(var e=65;e<=90;e++)xu[e]=String.fromCharCode(e);for(var e=1;e<=12;e++)xu[e+111]=xu[e+63235]="F"+e}();var Du,Fu=function(){function n(n){return n<=247?e.charAt(n):1424<=n&&n<=1524?"R":1536<=n&&n<=1773?t.charAt(n-1536):1774<=n&&n<=2220?"r":8192<=n&&n<=8203?"w":n==8204?"b":"L"}function f(e,t,n){this.level=e,this.from=t,this.to=n}var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,i=/[stwN]/,s=/[LRr]/,o=/[Lb1n]/,u=/[1n]/,a="L";return function(e){if(!r.test(e))return!1;var t=e.length,l=[];for(var c=0,h;c<t;++c)l.push(h=n(e.charCodeAt(c)));for(var c=0,p=a;c<t;++c){var h=l[c];h=="m"?l[c]=p:p=h}for(var c=0,d=a;c<t;++c){var h=l[c];h=="1"&&d=="r"?l[c]="n":s.test(h)&&(d=h,h=="r"&&(l[c]="R"))}for(var c=1,p=l[0];c<t-1;++c){var h=l[c];h=="+"&&p=="1"&&l[c+1]=="1"?l[c]="1":h==","&&p==l[c+1]&&(p=="1"||p=="n")&&(l[c]=p),p=h}for(var c=0;c<t;++c){var h=l[c];if(h==",")l[c]="N";else if(h=="%"){for(var v=c+1;v<t&&l[v]=="%";++v);var m=c&&l[c-1]=="!"||v<t&&l[v]=="1"?"1":"N";for(var g=c;g<v;++g)l[g]=m;c=v-1}}for(var c=0,d=a;c<t;++c){var h=l[c];d=="L"&&h=="1"?l[c]="L":s.test(h)&&(d=h)}for(var c=0;c<t;++c)if(i.test(l[c])){for(var v=c+1;v<t&&i.test(l[v]);++v);var y=(c?l[c-1]:a)=="L",b=(v<t?l[v]:a)=="L",m=y||b?"L":"R";for(var g=c;g<v;++g)l[g]=m;c=v-1}var w=[],E;for(var c=0;c<t;)if(o.test(l[c])){var S=c;for(++c;c<t&&o.test(l[c]);++c);w.push(new f(0,S,c))}else{var x=c,T=w.length;for(++c;c<t&&l[c]!="L";++c);for(var g=x;g<c;)if(u.test(l[g])){x<g&&w.splice(T,0,new f(1,x,g));var N=g;for(++g;g<c&&u.test(l[g]);++g);w.splice(T,0,new f(2,N,g)),x=g}else++g;x<c&&w.splice(T,0,new f(1,x,c))}return w[0].level==1&&(E=e.match(/^\s+/))&&(w[0].from=E[0].length,w.unshift(new f(0,0,E[0].length))),Fo(w).level==1&&(E=e.match(/\s+$/))&&(Fo(w).to-=E[0].length,w.push(new f(0,t-E[0].length,t))),w[0].level!=Fo(w).level&&w.push(new f(w[0].level,t,t)),w}}();return S.version="4.8.0",S}),define("CMLint",["react","lodash","jquery","./libs/codemirror-4.8/lib/codemirror"],function(e,t,n,r){function i(e){var t=e.severity;t||(t="error");var n=document.createElement("div");return n.className="CodeMirror-lint-message-"+t,n.appendChild(document.createTextNode(e.message)),n}function o(e,t){var n=document.createDocumentFragment(),r={severity:"error",message:t.message};n.appendChild(i(r)),e.setGutterMarker(Math.max(t.line,0),s,a(n,"error",!1,"state.options.tooltips"))}function u(e){e.clearGutter(s)}function a(e,t,n,i){var s=document.createElement("div"),o=s;return s.className="CodeMirror-lint-marker-"+t,n&&(o=s.appendChild(document.createElement("div")),o.className="CodeMirror-lint-marker-multiple"),i!==!1&&r.on(o,"mouseover",function(t){h(t,e,o)}),s}function f(e,t){function i(e){if(!n.parentNode)return r.off(document,"mousemove",i);n.style.top=Math.max(0,e.clientY-n.offsetHeight-5)+"px",n.style.left=e.clientX+5+"px"}var n=document.createElement("div");return n.className="CodeMirror-lint-tooltip",n.appendChild(t.cloneNode(!0)),document.body.appendChild(n),r.on(document,"mousemove",i),i(e),n.style.opacity!==null&&(n.style.opacity=1),n}function l(e){e.parentNode&&e.parentNode.removeChild(e)}function c(e){if(!e.parentNode)return;e.style.opacity===null&&l(e),e.style.opacity=0,setTimeout(function(){l(e)},600)}function h(e,t,n){function s(){r.off(n,"mouseout",s),i&&(c(i),i=null)}var i=f(e,t),o=setInterval(function(){if(i)for(var e=n;;e=e.parentNode){if(e===document.body)return undefined;if(!e){s();break}}if(!i)return clearInterval(o)},400);r.on(n,"mouseout",s)}var s="rt-annotations";return{GUTTER_ID:s,annotate:o,clearMarks:u}}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("libs/codemirror-4.8/mode/javascript/javascript",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){e.defineMode("javascript",function(t,n){function h(e){var t=!1,n,r=!1;while((n=e.next())!=null){if(!t){if(n=="/"&&!r)return;n=="["?r=!0:r&&n=="]"&&(r=!1)}t=!t&&n=="\\"}}function v(e,t,n){return p=e,d=n,t}function m(e,t){var n=e.next();if(n=='"'||n=="'")return t.tokenize=g(n),t.tokenize(e,t);if(n=="."&&e.match(/^\d+(?:[eE][+\-]?\d+)?/))return v("number","number");if(n=="."&&e.match(".."))return v("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(n))return v(n);if(n=="="&&e.eat(">"))return v("=>","operator");if(n=="0"&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),v("number","number");if(/\d/.test(n))return e.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),v("number","number");if(n=="/")return e.eat("*")?(t.tokenize=y,y(e,t)):e.eat("/")?(e.skipToEnd(),v("comment","comment")):t.lastType=="operator"||t.lastType=="keyword c"||t.lastType=="sof"||/^[\[{}\(,;:]$/.test(t.lastType)?(h(e),e.eatWhile(/[gimy]/),v("regexp","string-2")):(e.eatWhile(l),v("operator","operator",e.current()));if(n=="`")return t.tokenize=b,b(e,t);if(n=="#")return e.skipToEnd(),v("error","error");if(l.test(n))return e.eatWhile(l),v("operator","operator",e.current());if(a.test(n)){e.eatWhile(a);var r=e.current(),i=f.propertyIsEnumerable(r)&&f[r];return i&&t.lastType!="."?v(i.type,i.style,r):v("variable","variable",r)}}function g(e){return function(t,n){var r=!1,i;if(s&&t.peek()=="@"&&t.match(c))return n.tokenize=m,v("jsonld-keyword","meta");while((i=t.next())!=null){if(i==e&&!r)break;r=!r&&i=="\\"}return r||(n.tokenize=m),v("string","string")}}function y(e,t){var n=!1,r;while(r=e.next()){if(r=="/"&&n){t.tokenize=m;break}n=r=="*"}return v("comment","comment")}function b(e,t){var n=!1,r;while((r=e.next())!=null){if(!n&&(r=="`"||r=="$"&&e.eat("{"))){t.tokenize=m;break}n=!n&&r=="\\"}return v("quasi","string-2",e.current())}function E(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var n=e.string.indexOf("=>",e.start);if(n<0)return;var r=0,i=!1;for(var s=n-1;s>=0;--s){var o=e.string.charAt(s),u=w.indexOf(o);if(u>=0&&u<3){if(!r){++s;break}if(--r==0)break}else if(u>=3&&u<6)++r;else if(a.test(o))i=!0;else if(i&&!r){++s;break}}i&&!r&&(t.fatArrowAt=s)}function x(e,t,n,r,i,s){this.indented=e,this.column=t,this.type=n,this.prev=i,this.info=s,r!=null&&(this.align=r)}function T(e,t){for(var n=e.localVars;n;n=n.next)if(n.name==t)return!0;for(var r=e.context;r;r=r.prev)for(var n=r.vars;n;n=n.next)if(n.name==t)return!0}function N(e,t,n,r,i){var s=e.cc;C.state=e,C.stream=i,C.marked=null,C.cc=s,C.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);for(;;){var u=s.length?s.pop():o?j:B;if(u(n,r)){while(s.length&&s[s.length-1].lex)s.pop()();return C.marked?C.marked:n=="variable"&&T(e,r)?"variable-2":t}}}function k(){for(var e=arguments.length-1;e>=0;e--)C.cc.push(arguments[e])}function L(){return k.apply(null,arguments),!0}function A(e){function t(t){for(var n=t;n;n=n.next)if(n.name==e)return!0;return!1}var r=C.state;if(r.context){C.marked="def";if(t(r.localVars))return;r.localVars={name:e,next:r.localVars}}else{if(t(r.globalVars))return;n.globalVars&&(r.globalVars={name:e,next:r.globalVars})}}function M(){C.state.context={prev:C.state.context,vars:C.state.localVars},C.state.localVars=O}function _(){C.state.localVars=C.state.context.vars,C.state.context=C.state.context.prev}function D(e,t){var n=function(){var n=C.state,r=n.indented;if(n.lexical.type=="stat")r=n.lexical.indented;else for(var i=n.lexical;i&&i.type==")"&&i.align;i=i.prev)r=i.indented;n.lexical=new x(r,C.stream.column(),e,null,n.lexical,t)};return n.lex=!0,n}function P(){var e=C.state;e.lexical.prev&&(e.lexical.type==")"&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function H(e){function t(n){return n==e?L():e==";"?k():L(t)}return t}function B(e,t){return e=="var"?L(D("vardef",t.length),it,H(";"),P):e=="keyword a"?L(D("form"),j,B,P):e=="keyword b"?L(D("form"),B,P):e=="{"?L(D("}"),tt,P):e==";"?L():e=="if"?(C.state.lexical.info=="else"&&C.state.cc[C.state.cc.length-1]==P&&C.state.cc.pop()(),L(D("form"),j,B,P,ft)):e=="function"?L(vt):e=="for"?L(D("form"),lt,B,P):e=="variable"?L(D("stat"),J):e=="switch"?L(D("form"),j,D("}","switch"),H("{"),tt,P,P):e=="case"?L(j,H(":")):e=="default"?L(H(":")):e=="catch"?L(D("form"),M,H("("),mt,H(")"),B,P,_):e=="module"?L(D("form"),M,Et,_,P):e=="class"?L(D("form"),gt,P):e=="export"?L(D("form"),St,P):e=="import"?L(D("form"),xt,P):k(D("stat"),j,H(";"),P)}function j(e){return I(e,!1)}function F(e){return I(e,!0)}function I(e,t){if(C.state.fatArrowAt==C.stream.start){var n=t?$:V;if(e=="(")return L(M,D(")"),Z(st,")"),P,H("=>"),n,_);if(e=="variable")return k(M,st,H("=>"),n,_)}var r=t?z:U;return S.hasOwnProperty(e)?L(r):e=="function"?L(vt,r):e=="keyword c"?L(t?R:q):e=="("?L(D(")"),q,Lt,H(")"),P,r):e=="operator"||e=="spread"?L(t?F:j):e=="["?L(D("]"),Ct,P,r):e=="{"?et(Q,"}",null,r):e=="quasi"?k(W,r):L()}function q(e){return e.match(/[;\}\)\],]/)?k():k(j)}function R(e){return e.match(/[;\}\)\],]/)?k():k(F)}function U(e,t){return e==","?L(j):z(e,t,!1)}function z(e,t,n){var r=n==0?U:z,i=n==0?j:F;if(e=="=>")return L(M,n?$:V,_);if(e=="operator")return/\+\+|--/.test(t)?L(r):t=="?"?L(j,H(":"),i):L(i);if(e=="quasi")return k(W,r);if(e==";")return;if(e=="(")return et(F,")","call",r);if(e==".")return L(K,r);if(e=="[")return L(D("]"),q,H("]"),P,r)}function W(e,t){return e!="quasi"?k():t.slice(t.length-2)!="${"?L(W):L(j,X)}function X(e){if(e=="}")return C.marked="string-2",C.state.tokenize=b,L(W)}function V(e){return E(C.stream,C.state),k(e=="{"?B:j)}function $(e){return E(C.stream,C.state),k(e=="{"?B:F)}function J(e){return e==":"?L(P,B):k(U,H(";"),P)}function K(e){if(e=="variable")return C.marked="property",L()}function Q(e,t){if(e=="variable"||C.style=="keyword")return C.marked="property",t=="get"||t=="set"?L(G):L(Y);if(e=="number"||e=="string")return C.marked=s?"property":C.style+" property",L(Y);if(e=="jsonld-keyword")return L(Y);if(e=="[")return L(j,H("]"),Y)}function G(e){return e!="variable"?k(Y):(C.marked="property",L(vt))}function Y(e){if(e==":")return L(F);if(e=="(")return k(vt)}function Z(e,t){function n(r){if(r==","){var i=C.state.lexical;return i.info=="call"&&(i.pos=(i.pos||0)+1),L(e,n)}return r==t?L():L(H(t))}return function(r){return r==t?L():k(e,n)}}function et(e,t,n){for(var r=3;r<arguments.length;r++)C.cc.push(arguments[r]);return L(D(t,n),Z(e,t),P)}function tt(e){return e=="}"?L():k(B,tt)}function nt(e){if(u&&e==":")return L(rt)}function rt(e){if(e=="variable")return C.marked="variable-3",L()}function it(){return k(st,nt,ut,at)}function st(e,t){if(e=="variable")return A(t),L();if(e=="[")return et(st,"]");if(e=="{")return et(ot,"}")}function ot(e,t){return e=="variable"&&!C.stream.match(/^\s*:/,!1)?(A(t),L(ut)):(e=="variable"&&(C.marked="property"),L(H(":"),st,ut))}function ut(e,t){if(t=="=")return L(F)}function at(e){if(e==",")return L(it)}function ft(e,t){if(e=="keyword b"&&t=="else")return L(D("form","else"),B,P)}function lt(e){if(e=="(")return L(D(")"),ct,H(")"),P)}function ct(e){return e=="var"?L(it,H(";"),pt):e==";"?L(pt):e=="variable"?L(ht):k(j,H(";"),pt)}function ht(e,t){return t=="in"||t=="of"?(C.marked="keyword",L(j)):L(U,pt)}function pt(e,t){return e==";"?L(dt):t=="in"||t=="of"?(C.marked="keyword",L(j)):k(j,H(";"),dt)}function dt(e){e!=")"&&L(j)}function vt(e,t){if(t=="*")return C.marked="keyword",L(vt);if(e=="variable")return A(t),L(vt);if(e=="(")return L(M,D(")"),Z(mt,")"),P,B,_)}function mt(e){return e=="spread"?L(mt):k(st,nt)}function gt(e,t){if(e=="variable")return A(t),L(yt)}function yt(e,t){if(t=="extends")return L(j,yt);if(e=="{")return L(D("}"),bt,P)}function bt(e,t){if(e=="variable"||C.style=="keyword")return C.marked="property",t=="get"||t=="set"?L(wt,vt,bt):L(vt,bt);if(t=="*")return C.marked="keyword",L(bt);if(e==";")return L(bt);if(e=="}")return L()}function wt(e){return e!="variable"?k():(C.marked="property",L())}function Et(e,t){if(e=="string")return L(B);if(e=="variable")return A(t),L(Nt)}function St(e,t){return t=="*"?(C.marked="keyword",L(Nt,H(";"))):t=="default"?(C.marked="keyword",L(j,H(";"))):k(B)}function xt(e){return e=="string"?L():k(Tt,Nt)}function Tt(e,t){return e=="{"?et(Tt,"}"):(e=="variable"&&A(t),L())}function Nt(e,t){if(t=="from")return C.marked="keyword",L(j)}function Ct(e){return e=="]"?L():k(F,kt)}function kt(e){return e=="for"?k(Lt,H("]")):e==","?L(Z(R,"]")):k(Z(F,"]"))}function Lt(e){if(e=="for")return L(lt,Lt);if(e=="if")return L(j,Lt)}var r=t.indentUnit,i=n.statementIndent,s=n.jsonld,o=n.json||s,u=n.typescript,a=n.wordCharacters||/[\w$\xa1-\uffff]/,f=function(){function e(e){return{type:e,style:"keyword"}}var t=e("keyword a"),n=e("keyword b"),r=e("keyword c"),i=e("operator"),s={type:"atom",style:"atom"},o={"if":e("if"),"while":t,"with":t,"else":n,"do":n,"try":n,"finally":n,"return":r,"break":r,"continue":r,"new":r,"delete":r,"throw":r,"debugger":r,"var":e("var"),"const":e("var"),let:e("var"),"function":e("function"),"catch":e("catch"),"for":e("for"),"switch":e("switch"),"case":e("case"),"default":e("default"),"in":i,"typeof":i,"instanceof":i,"true":s,"false":s,"null":s,"undefined":s,NaN:s,Infinity:s,"this":e("this"),module:e("module"),"class":e("class"),"super":e("atom"),yield:r,"export":e("export"),"import":e("import"),"extends":r};if(u){var a={type:"variable",style:"variable-3"},f={"interface":e("interface"),"extends":e("extends"),constructor:e("constructor"),"public":e("public"),"private":e("private"),"protected":e("protected"),"static":e("static"),string:a,number:a,bool:a,any:a};for(var l in f)o[l]=f[l]}return o}(),l=/[+\-*&%=<>!?|~^]/,c=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,p,d,w="([{}])",S={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,"this":!0,"jsonld-keyword":!0},C={state:null,column:null,marked:null,cc:null},O={name:"this",next:{name:"arguments"}};return P.lex=!0,{startState:function(e){var t={tokenize:m,lastType:"sof",cc:[],lexical:new x((e||0)-r,0,"block",!1),localVars:n.localVars,context:n.localVars&&{vars:n.localVars},indented:0};return n.globalVars&&typeof n.globalVars=="object"&&(t.globalVars=n.globalVars),t},token:function(e,t){e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),E(e,t));if(t.tokenize!=y&&e.eatSpace())return null;var n=t.tokenize(e,t);return p=="comment"?n:(t.lastType=p!="operator"||d!="++"&&d!="--"?p:"incdec",N(t,n,p,d,e))},indent:function(t,s){if(t.tokenize==y)return e.Pass;if(t.tokenize!=m)return 0;var o=s&&s.charAt(0),u=t.lexical;if(!/^\s*else\b/.test(s))for(var a=t.cc.length-1;a>=0;--a){var f=t.cc[a];if(f==P)u=u.prev;else if(f!=ft)break}u.type=="stat"&&o=="}"&&(u=u.prev),i&&u.type==")"&&u.prev.type=="stat"&&(u=u.prev);var l=u.type,c=o==l;return l=="vardef"?u.indented+(t.lastType=="operator"||t.lastType==","?u.info+1:0):l=="form"&&o=="{"?u.indented:l=="form"?u.indented+r:l=="stat"?u.indented+(t.lastType=="operator"||t.lastType==","?i||r:0):u.info=="switch"&&!c&&n.doubleIndentSwitch!=0?u.indented+(/^(?:case|default)\b/.test(s)?r:2*r):u.align?u.column+(c?0:1):u.indented+(c?0:r)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:o?null:"/*",blockCommentEnd:o?null:"*/",lineComment:o?null:"//",fold:"brace",helperType:o?"json":"javascript",jsonldMode:s,jsonMode:o}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("libs/codemirror-4.8/addon/hint/xml-hint",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function n(n,r){var i=r&&r.schemaInfo,s=r&&r.quoteChar||'"';if(!i)return;var o=n.getCursor(),u=n.getTokenAt(o);if(/^<\/?$/.test(u.string)&&u.end==o.ch){var a=n.getTokenAt(t(o.line,o.ch+1));a.start==o.ch&&/\btag\b/.test(a.type)&&(u=a)}var f=e.innerMode(n.getMode(),u.state);if(f.mode.name!="xml")return;var l=[],c=!1,h,p=/\btag\b/.test(u.type)&&!/>$/.test(u.string),d=p&&/^\w/.test(u.string),v;if(d){var m=n.getLine(o.line).slice(Math.max(0,u.start-2),u.start),g=/<\/$/.test(m)?"close":/<$/.test(m)?"open":null;g&&(v=u.start-(g=="close"?2:1))}else p&&u.string=="<"?g="open":p&&u.string=="</"&&(g="close");if(!p&&!f.state.tagName||g){d&&(h=u.string),c=g;var y=f.state.context,b=y&&i[y.tagName],w=y?b&&b.children:i["!top"];if(w&&g!="close")for(var E=0;E<w.length;++E)(!h||w[E].lastIndexOf(h,0)==0)&&l.push("<"+w[E]);else if(g!="close")for(var S in i)i.hasOwnProperty(S)&&S!="!top"&&S!="!attrs"&&(!h||S.lastIndexOf(h,0)==0)&&l.push("<"+S);y&&(!h||g=="close"&&y.tagName.lastIndexOf(h,0)==0)&&l.push("</"+y.tagName+">")}else{var b=i[f.state.tagName],x=b&&b.attrs,T=i["!attrs"];if(!x&&!T)return;if(!x)x=T;else if(T){var N={};for(var C in T)T.hasOwnProperty(C)&&(N[C]=T[C]);for(var C in x)x.hasOwnProperty(C)&&(N[C]=x[C]);x=N}if(u.type=="string"||u.string=="="){var m=n.getRange(t(o.line,Math.max(0,o.ch-60)),t(o.line,u.type=="string"?u.start:u.end)),k=m.match(/([^\s\u00a0=<>\"\']+)=$/),L;if(!k||!x.hasOwnProperty(k[1])||!(L=x[k[1]]))return;typeof L=="function"&&(L=L.call(this,n));if(u.type=="string"){h=u.string;var A=0;/['"]/.test(u.string.charAt(0))&&(s=u.string.charAt(0),h=u.string.slice(1),A++);var O=u.string.length;/['"]/.test(u.string.charAt(O-1))&&(s=u.string.charAt(O-1),h=u.string.substr(A,O-2)),c=!0}for(var E=0;E<L.length;++E)(!h||L[E].lastIndexOf(h,0)==0)&&l.push(s+L[E]+s)}else{u.type=="attribute"&&(h=u.string,c=!0);for(var M in x)x.hasOwnProperty(M)&&(!h||M.lastIndexOf(h,0)==0)&&l.push(M)}}return{list:l,from:c?t(o.line,v==null?u.start:v):o,to:c?t(o.line,u.end):o}}var t=e.Pos;e.registerHelper("hint","xml",n)}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror","./xml-hint")):typeof define=="function"&&define.amd?define("libs/codemirror-4.8/addon/hint/html-hint",["../../lib/codemirror","./xml-hint"],e):e(CodeMirror)}(function(e){function l(e){for(var t in f)f.hasOwnProperty(t)&&(e.attrs[t]=f[t])}function h(t,n){var r={schemaInfo:a};if(n)for(var i in n)r[i]=n[i];return e.hint.xml(t,r)}var t="ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu".split(" "),n=["_blank","_self","_top","_parent"],r=["ascii","utf-8","utf-16","latin1","latin1"],i=["get","post","put","delete"],s=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],o=["all","screen","print","embossed","braille","handheld","print","projection","screen","tty","tv","speech","3d-glasses","resolution [>][<][=] [X]","device-aspect-ratio: X/Y","orientation:portrait","orientation:landscape","device-height: [X]","device-width: [X]"],u={attrs:{}},a={a:{attrs:{href:null,ping:null,type:null,media:o,target:n,hreflang:t}},abbr:u,acronym:u,address:u,applet:u,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:o,hreflang:t,type:null,shape:["default","rect","circle","poly"]}},article:u,aside:u,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["","autoplay"],loop:["","loop"],controls:["","controls"]}},b:u,base:{attrs:{href:null,target:n}},basefont:u,bdi:u,bdo:u,big:u,blockquote:{attrs:{cite:null}},body:u,br:u,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["","autofocus"],disabled:["","autofocus"],formenctype:s,formmethod:i,formnovalidate:["","novalidate"],formtarget:n,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:u,center:u,cite:u,code:u,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["","disabled"],checked:["","checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["","disabled"],multiple:["","multiple"]}},datalist:{attrs:{data:null}},dd:u,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["","open"]}},dfn:u,dir:u,div:u,dl:u,dt:u,em:u,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["","disabled"],form:null,name:null}},figcaption:u,figure:u,font:u,footer:u,form:{attrs:{action:null,name:null,"accept-charset":r,autocomplete:["on","off"],enctype:s,method:i,novalidate:["","novalidate"],target:n}},frame:u,frameset:u,h1:u,h2:u,h3:u,h4:u,h5:u,h6:u,head:{attrs:{},children:["title","base","link","style","meta","script","noscript","command"]},header:u,hgroup:u,hr:u,html:{attrs:{manifest:null},children:["head","body"]},i:u,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["","seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["","autofocus"],checked:["","checked"],disabled:["","disabled"],formenctype:s,formmethod:i,formnovalidate:["","novalidate"],formtarget:n,multiple:["","multiple"],readonly:["","readonly"],required:["","required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:u,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["","autofocus"],disabled:["","disabled"],keytype:["RSA"]}},label:{attrs:{"for":null,form:null}},legend:u,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:t,media:o,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:u,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:r,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:u,noframes:u,noscript:u,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["","typemustmatch"]}},ol:{attrs:{reversed:["","reversed"],start:null,type:["1","a","A","i","I"]}},optgroup:{attrs:{disabled:["","disabled"],label:null}},option:{attrs:{disabled:["","disabled"],label:null,selected:["","selected"],value:null}},output:{attrs:{"for":null,form:null,name:null}},p:u,param:{attrs:{name:null,value:null}},pre:u,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:u,rt:u,ruby:u,s:u,samp:u,script:{attrs:{type:["text/javascript"],src:null,async:["","async"],defer:["","defer"],charset:r}},section:u,select:{attrs:{form:null,name:null,size:null,autofocus:["","autofocus"],disabled:["","disabled"],multiple:["","multiple"]}},small:u,source:{attrs:{src:null,type:null,media:null}},span:u,strike:u,strong:u,style:{attrs:{type:["text/css"],media:o,scoped:null}},sub:u,summary:u,sup:u,table:u,tbody:u,td:{attrs:{colspan:null,rowspan:null,headers:null}},textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["","autofocus"],disabled:["","disabled"],readonly:["","readonly"],required:["","required"],wrap:["soft","hard"]}},tfoot:u,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:u,time:{attrs:{datetime:null}},title:u,tr:u,track:{attrs:{src:null,label:null,"default":null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:t}},tt:u,u:u,ul:u,"var":u,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["","autoplay"],mediagroup:["movie"],muted:["","muted"],controls:["","controls"]}},wbr:u},f={accesskey:["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"],"class":null,contenteditable:["true","false"],contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["en","es"],spellcheck:["true","false"],style:null,tabindex:["1","2","3","4","5","6","7","8","9"],title:null,translate:["yes","no"],onclick:null,rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"]};l(u);for(var c in a)a.hasOwnProperty(c)&&a[c]!=u&&l(a[c]);e.htmlSchema=a,e.registerHelper("hint","html",h)}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("libs/codemirror-4.8/addon/hint/show-hint",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function r(e,t){this.cm=e,this.options=this.buildOptions(t),this.widget=this.onClose=null}function i(e){return typeof e=="string"?e:e.text}function s(e,t){function s(e,r){var s;typeof r!="string"?s=function(e){return r(e,t)}:n.hasOwnProperty(r)?s=n[r]:s=r,i[e]=s}var n={Up:function(){t.moveFocus(-1)},Down:function(){t.moveFocus(1)},PageUp:function(){t.moveFocus(-t.menuSize()+1,!0)},PageDown:function(){t.moveFocus(t.menuSize()-1,!0)},Home:function(){t.setFocus(0)},End:function(){t.setFocus(t.length-1)},Enter:t.pick,Tab:t.pick,Esc:t.close},r=e.options.customKeys,i=r?{}:n;if(r)for(var o in r)r.hasOwnProperty(o)&&s(o,r[o]);var u=e.options.extraKeys;if(u)for(var o in u)u.hasOwnProperty(o)&&s(o,u[o]);return i}function o(e,t){while(t&&t!=e){if(t.nodeName.toUpperCase()==="LI"&&t.parentNode==e)return t;t=t.parentNode}}function u(r,u){this.completion=r,this.data=u;var a=this,f=r.cm,l=this.hints=document.createElement("ul");l.className="CodeMirror-hints",this.selectedHint=u.selectedHint||0;var c=u.list;for(var h=0;h<c.length;++h){var p=l.appendChild(document.createElement("li")),d=c[h],v=t+(h!=this.selectedHint?"":" "+n);d.className!=null&&(v=d.className+" "+v),p.className=v,d.render?d.render(p,u,d):p.appendChild(document.createTextNode(d.displayText||i(d))),p.hintId=h}var m=f.cursorCoords(r.options.alignWithWord?u.from:null),g=m.left,y=m.bottom,b=!0;l.style.left=g+"px",l.style.top=y+"px";var w=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth),E=window.innerHeight||Math.max(document.body.offsetHeight,document.documentElement.offsetHeight);(r.options.container||document.body).appendChild(l);var S=l.getBoundingClientRect(),x=S.bottom-E;if(x>0){var T=S.bottom-S.top,N=m.top-(m.bottom-S.top);if(N-T>0)l.style.top=(y=m.top-T)+"px",b=!1;else if(T>E){l.style.height=E-5+"px",l.style.top=(y=m.bottom-S.top)+"px";var C=f.getCursor();u.from.ch!=C.ch&&(m=f.cursorCoords(C),l.style.left=(g=m.left)+"px",S=l.getBoundingClientRect())}}var k=S.left-w;k>0&&(S.right-S.left>w&&(l.style.width=w-5+"px",k-=S.right-S.left-w),l.style.left=(g=m.left-k)+"px"),f.addKeyMap(this.keyMap=s(r,{moveFocus:function(e,t){a.changeActive(a.selectedHint+e,t)},setFocus:function(e){a.changeActive(e)},menuSize:function(){return a.screenAmount()},length:c.length,close:function(){r.close()},pick:function(){a.pick()},data:u}));if(r.options.closeOnUnfocus){var L;f.on("blur",this.onBlur=function(){L=setTimeout(function(){r.close()},100)}),f.on("focus",this.onFocus=function(){clearTimeout(L)})}var A=f.getScrollInfo();return f.on("scroll",this.onScroll=function(){var e=f.getScrollInfo(),t=f.getWrapperElement().getBoundingClientRect(),n=y+A.top-e.top,i=n-(window.pageYOffset||(document.documentElement||document.body).scrollTop);b||(i+=l.offsetHeight);if(i<=t.top||i>=t.bottom)return r.close();l.style.top=n+"px",l.style.left=g+A.left-e.left+"px"}),e.on(l,"dblclick",function(e){var t=o(l,e.target||e.srcElement);t&&t.hintId!=null&&(a.changeActive(t.hintId),a.pick())}),e.on(l,"click",function(e){var t=o(l,e.target||e.srcElement);t&&t.hintId!=null&&(a.changeActive(t.hintId),r.options.completeOnSingleClick&&a.pick())}),e.on(l,"mousedown",function(){setTimeout(function(){f.focus()},20)}),e.signal(u,"select",c[0],l.firstChild),!0}var t="CodeMirror-hint",n="CodeMirror-hint-active";e.showHint=function(e,t,n){if(!t)return e.showHint(n);n&&n.async&&(t.async=!0);var r={hint:t};if(n)for(var i in n)r[i]=n[i];return e.showHint(r)},e.defineExtension("showHint",function(t){if(this.listSelections().length>1||this.somethingSelected())return;this.state.completionActive&&this.state.completionActive.close();var n=this.state.completionActive=new r(this,t),i=n.options.hint;if(!i)return;e.signal(this,"startCompletion",this);if(!i.async)return n.showHints(i(this,n.options));i(this,function(e){n.showHints(e)},n.options)}),r.prototype={close:function(){if(!this.active())return;this.cm.state.completionActive=null,this.widget&&this.widget.close(),this.onClose&&this.onClose(),e.signal(this.cm,"endCompletion",this.cm)},active:function(){return this.cm.state.completionActive==this},pick:function(t,n){var r=t.list[n];r.hint?r.hint(this.cm,t,r):this.cm.replaceRange(i(r),r.from||t.from,r.to||t.to,"complete"),e.signal(t,"pick",r),this.close()},showHints:function(e){if(!e||!e.list.length||!this.active())return this.close();this.options.completeSingle&&e.list.length==1?this.pick(e,0):this.showWidget(e)},showWidget:function(t){function c(){if(i)return;i=!0,r.close(),r.cm.off("cursorActivity",v),t&&e.signal(t,"close")}function h(){if(i)return;e.signal(t,"update");var n=r.options.hint;n.async?n(r.cm,p,r.options):p(n(r.cm,r.options))}function p(e){t=e;if(i)return;if(!t||!t.list.length)return c();r.widget&&r.widget.close(),r.widget=new u(r,t)}function d(){n&&(l(n),n=0)}function v(){d();var e=r.cm.getCursor(),t=r.cm.getLine(e.line);e.line!=o.line||t.length-e.ch!=a-o.ch||e.ch<o.ch||r.cm.somethingSelected()||e.ch&&s.test(t.charAt(e.ch-1))?r.close():(n=f(h),r.widget&&r.widget.close())}this.widget=new u(this,t),e.signal(t,"shown");var n=0,r=this,i,s=this.options.closeCharacters,o=this.cm.getCursor(),a=this.cm.getLine(o.line).length,f=window.requestAnimationFrame||function(e){return setTimeout(e,1e3/60)},l=window.cancelAnimationFrame||clearTimeout;this.cm.on("cursorActivity",v),this.onClose=c},buildOptions:function(e){var t=this.cm.options.hintOptions,n={};for(var r in a)n[r]=a[r];if(t)for(var r in t)t[r]!==undefined&&(n[r]=t[r]);if(e)for(var r in e)e[r]!==undefined&&(n[r]=e[r]);return n}},u.prototype={close:function(){if(this.completion.widget!=this)return;this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var e=this.completion.cm;this.completion.options.closeOnUnfocus&&(e.off("blur",this.onBlur),e.off("focus",this.onFocus)),e.off("scroll",this.onScroll)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(t,r){t>=this.data.list.length?t=r?this.data.list.length-1:0:t<0&&(t=r?0:this.data.list.length-1);if(this.selectedHint==t)return;var i=this.hints.childNodes[this.selectedHint];i.className=i.className.replace(" "+n,""),i=this.hints.childNodes[this.selectedHint=t],i.className+=" "+n,i.offsetTop<this.hints.scrollTop?this.hints.scrollTop=i.offsetTop-3:i.offsetTop+i.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=i.offsetTop+i.offsetHeight-this.hints.clientHeight+3),e.signal(this.data,"select",this.data.list[this.selectedHint],i)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},e.registerHelper("hint","auto",function(t,n){var r=t.getHelpers(t.getCursor(),"hint"),i;if(r.length)for(var s=0;s<r.length;s++){var o=r[s](t,n);if(o&&o.list.length)return o}else if(i=t.getHelper(t.getCursor(),"hintWords")){if(i)return e.hint.fromList(t,{words:i})}else if(e.hint.anyword)return e.hint.anyword(t,n)}),e.registerHelper("hint","fromList",function(t,n){var r=t.getCursor(),i=t.getTokenAt(r),s=[];for(var o=0;o<n.words.length;o++){var u=n.words[o];u.slice(0,i.string.length)==i.string&&s.push(u)}if(s.length)return{list:s,from:e.Pos(r.line,i.start),to:e.Pos(r.line,i.end)}}),e.commands.autocomplete=e.showHint;var a={hint:e.hint.auto,completeSingle:!0,alignWithWord:!0,closeCharacters:/[\s()\[\]{};:>,]/,closeOnUnfocus:!0,completeOnSingleClick:!1,container:null,customKeys:null,extraKeys:null};e.defineOption("hintOptions",null)}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("libs/codemirror-4.8/mode/xml/xml",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){e.defineMode("xml",function(t,n){function l(e,t){function n(n){return t.tokenize=n,n(e,t)}var r=e.next();if(r=="<")return e.eat("!")?e.eat("[")?e.match("CDATA[")?n(p("atom","]]>")):null:e.match("--")?n(p("comment","-->")):e.match("DOCTYPE",!0,!0)?(e.eatWhile(/[\w\._\-]/),n(d(1))):null:e.eat("?")?(e.eatWhile(/[\w\._\-]/),t.tokenize=p("meta","?>"),"meta"):(a=e.eat("/")?"closeTag":"openTag",t.tokenize=c,"tag bracket");if(r=="&"){var i;return e.eat("#")?e.eat("x")?i=e.eatWhile(/[a-fA-F\d]/)&&e.eat(";"):i=e.eatWhile(/[\d]/)&&e.eat(";"):i=e.eatWhile(/[\w\.\-:]/)&&e.eat(";"),i?"atom":"error"}return e.eatWhile(/[^&<]/),null}function c(e,t){var n=e.next();if(n==">"||n=="/"&&e.eat(">"))return t.tokenize=l,a=n==">"?"endTag":"selfcloseTag","tag bracket";if(n=="=")return a="equals",null;if(n=="<"){t.tokenize=l,t.state=y,t.tagName=t.tagStart=null;var r=t.tokenize(e,t);return r?r+" tag error":"tag error"}return/[\'\"]/.test(n)?(t.tokenize=h(n),t.stringStartCol=e.column(),t.tokenize(e,t)):(e.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function h(e){var t=function(t,n){while(!t.eol())if(t.next()==e){n.tokenize=c;break}return"string"};return t.isInAttribute=!0,t}function p(e,t){return function(n,r){while(!n.eol()){if(n.match(t)){r.tokenize=l;break}n.next()}return e}}function d(e){return function(t,n){var r;while((r=t.next())!=null){if(r=="<")return n.tokenize=d(e+1),n.tokenize(t,n);if(r==">"){if(e==1){n.tokenize=l;break}return n.tokenize=d(e-1),n.tokenize(t,n)}}return"meta"}}function v(e,t,n){this.prev=e.context,this.tagName=t,this.indent=e.indented,this.startOfLine=n;if(o.doNotIndent.hasOwnProperty(t)||e.context&&e.context.noIndent)this.noIndent=!0}function m(e){e.context&&(e.context=e.context.prev)}function g(e,t){var n;for(;;){if(!e.context)return;n=e.context.tagName;if(!o.contextGrabbers.hasOwnProperty(n)||!o.contextGrabbers[n].hasOwnProperty(t))return;m(e)}}function y(e,t,n){return e=="openTag"?(n.tagStart=t.column(),b):e=="closeTag"?w:y}function b(e,t,n){return e=="word"?(n.tagName=t.current(),f="tag",x):(f="error",b)}function w(e,t,n){if(e=="word"){var r=t.current();return n.context&&n.context.tagName!=r&&o.implicitlyClosed.hasOwnProperty(n.context.tagName)&&m(n),n.context&&n.context.tagName==r?(f="tag",E):(f="tag error",S)}return f="error",S}function E(e,t,n){return e!="endTag"?(f="error",E):(m(n),y)}function S(e,t,n){return f="error",E(e,t,n)}function x(e,t,n){if(e=="word")return f="attribute",T;if(e=="endTag"||e=="selfcloseTag"){var r=n.tagName,i=n.tagStart;return n.tagName=n.tagStart=null,e=="selfcloseTag"||o.autoSelfClosers.hasOwnProperty(r)?g(n,r):(g(n,r),n.context=new v(n,r,i==n.indented)),y}return f="error",x}function T(e,t,n){return e=="equals"?N:(o.allowMissing||(f="error"),x(e,t,n))}function N(e,t,n){return e=="string"?C:e=="word"&&o.allowUnquoted?(f="string",x):(f="error",x(e,t,n))}function C(e,t,n){return e=="string"?C:x(e,t,n)}var r=t.indentUnit,i=n.multilineTagIndentFactor||1,s=n.multilineTagIndentPastTag;s==null&&(s=!0);var o=n.htmlMode?{autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0}:{autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,caseFold:!1},u=n.alignCDATA,a,f;return{startState:function(){return{tokenize:l,state:y,indented:0,tagName:null,tagStart:null,context:null}},token:function(e,t){!t.tagName&&e.sol()&&(t.indented=e.indentation());if(e.eatSpace())return null;a=null;var n=t.tokenize(e,t);return(n||a)&&n!="comment"&&(f=null,t.state=t.state(a||n,e,t),f&&(n=f=="error"?n+" error":f)),n},indent:function(t,n,a){var f=t.context;if(t.tokenize.isInAttribute)return t.tagStart==t.indented?t.stringStartCol+1:t.indented+r;if(f&&f.noIndent)return e.Pass;if(t.tokenize!=c&&t.tokenize!=l)return a?a.match(/^(\s*)/)[0].length:0;if(t.tagName)return s?t.tagStart+t.tagName.length+2:t.tagStart+r*i;if(u&&/<!\[CDATA\[/.test(n))return 0;var h=n&&/^<(\/)?([\w_:\.-]*)/.exec(n);if(h&&h[1])while(f){if(f.tagName==h[2]){f=f.prev;break}if(!o.implicitlyClosed.hasOwnProperty(f.tagName))break;f=f.prev}else if(h)while(f){var p=o.contextGrabbers[f.tagName];if(!p||!p.hasOwnProperty(h[2]))break;f=f.prev}while(f&&!f.startOfLine)f=f.prev;return f?f.indent+r:0},electricInput:/<\/[\s\w:]+>$/,blockCommentStart:"<!--",blockCommentEnd:"-->",configuration:n.htmlMode?"html":"xml",helperType:n.htmlMode?"html":"xml"}}),e.defineMIME("text/xml","xml"),e.defineMIME("application/xml","xml"),e.mimeModes.hasOwnProperty("text/html")||e.defineMIME("text/html",{name:"xml",htmlMode:!0})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("libs/codemirror-4.8/addon/runmode/runmode",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){e.runMode=function(t,n,r,i){var s=e.getMode(e.defaults,n),o=/MSIE \d/.test(navigator.userAgent),u=o&&(document.documentMode==null||document.documentMode<9);if(r.nodeType==1){var a=i&&i.tabSize||e.defaults.tabSize,f=r,l=0;f.innerHTML="",r=function(e,t){if(e=="\n"){f.appendChild(document.createTextNode(u?"\r":e)),l=0;return}var n="";for(var r=0;;){var i=e.indexOf("	",r);if(i==-1){n+=e.slice(r),l+=e.length-r;break}l+=i-r,n+=e.slice(r,i);var s=a-l%a;l+=s;for(var o=0;o<s;++o)n+=" ";r=i+1}if(t){var c=f.appendChild(document.createElement("span"));c.className="cm-"+t.replace(/ +/g," cm-"),c.appendChild(document.createTextNode(n))}else f.appendChild(document.createTextNode(n))}}var c=e.splitLines(t),h=i&&i.state||e.startState(s);for(var p=0,d=c.length;p<d;++p){p&&r("\n");var v=new e.StringStream(c[p]);!v.string&&s.blankLine&&s.blankLine(h);while(!v.eol()){var m=s.token(v,h);r(v.current(),m,p,v.start,h),v.start=v.pos}}}}),define("CodeMirrorEditor",["react","lodash","jquery","./libs/codemirror-4.8/lib/codemirror","./CMLint","./libs/codemirror-4.8/mode/javascript/javascript","./libs/codemirror-4.8/addon/hint/html-hint","./libs/codemirror-4.8/addon/hint/show-hint","./libs/codemirror-4.8/addon/hint/xml-hint","./libs/codemirror-4.8/addon/hint/html-hint","./libs/codemirror-4.8/mode/xml/xml","./libs/codemirror-4.8/addon/runmode/runmode"],function(e,t,n,r,i){function u(e,t){return(!t||t())&&setTimeout(function(){e.state.completionActive||e.showHint({completeSingle:!1})},100),r.Pass}function a(e){return u(e,function(){var t=e.getCursor();return e.getRange(r.Pos(t.line,t.ch-1),t)==="<"})}function f(e){return u(e,function(){var t=e.getTokenAt(e.getCursor());if(t.type!=="string"||!!/['"]/.test(t.string.charAt(t.string.length-1))&&t.string.length!==1){var n=r.innerMode(e.getMode(),t.state).state;return n.tagName}return!1})}var s={div:{attrs:{"rt-props":null,"rt-if":null,"rt-repeat":null,"rt-class":null,"rt-scope":null,valueLink:null,key:null,ref:null,dangerouslySetInnerHTML:null}}},o=r.htmlSchema;Object.keys(r.htmlSchema).forEach(function(e){o[e].attrs=t.defaults(s.div.attrs,o[e].attrs)});var l=e.createClass({displayName:"CodeMirrorEditor",propTypes:{id:e.PropTypes.string,readOnly:e.PropTypes.bool,runMode:e.PropTypes.bool,mode:e.PropTypes.string},getDefaultProps:function(){return{readOnly:!1,mode:"html"}},getInitialState:function(){return{editorId:t.uniqueId()}},render:function(){var n=t.omit(this.props,["ref","key","value","valueLink","onChange"]);return n.id=this.props.id||this.state.editorId,n.defaultValue=this.props.valueLink?this.props.valueLink():this.props.value,e.DOM.textarea(n)},componentWillUpdate:function(e){var t=e.valueLink?e.valueLink():e.value;this.editor&&this.editor.getValue()!==t&&this.editor.setValue(t||"")},componentDidMount:function(){var e=this.props.valueLink?this.props.valueLink():this.props.value,t={readOnly:this.props.readOnly,lineWrapping:!0,smartIndent:!0,matchBrackets:!0,value:e,lineNumbers:!0,mode:"javascript",gutters:["CodeMirror-linenumbers","rt-annotations"],theme:"solarized"};this.props.mode==="html"?(t.mode="text/html",t.extraKeys={"'<'":u,"'/'":a,"' '":f,"'='":f,"Ctrl-Space":"autocomplete"},t.hintOptions={schemaInfo:o}):t.mode="javascript",this.editor=r.fromTextArea(this.getDOMNode(),t),this.props.readOnly||this.editor.on("change",function(){this.props.valueLink?this.props.valueLink(this.editor.getValue()):this.props.onChange&&this.props.onChange({target:{value:this.editor.getValue()}})}.bind(this))},annotate:function(e){i.annotate(this.editor,e)},clearAnnotations:function(){i.clearMarks(this.editor)},componentWillUnmount:function(){this.editor.toTextArea()}});return l}),define("playground-fiddle.rt",["react/addons","lodash","./CodeMirrorEditor"],function(e,t,n){function r(e){this.setState({templateHTML:e.target.value})}function i(e){this.setState({templateProps:e.target.value})}function s(e){e.preventDefault()}return function(){return e.createElement("div",{className:"playground"},e.createElement("div",{className:"fiddle-row"},e.createElement("div",{className:"code-area",id:"area-rt"},e.createElement(n,{ref:"editorRT",id:"editor-rt",className:"large-text-area",value:this.state.templateHTML,mode:"html",onChange:r.bind(this)})),e.createElement("div",{className:"code-area",id:"area-code"},e.createElement(n,{ref:"editorCode",id:"editor-code",className:"large-text-area",value:this.state.templateProps,mode:"javascript",onChange:i.bind(this)}))),e.createElement("div",{className:"fiddle-row"},e.createElement("div",{className:"code-area",id:"area-generated"},e.createElement(n,{id:"editor-generated",className:"large-text-area",ref:"editorGenerated",value:this.templateSource,mode:"javascript",readOnly:!0})),e.createElement("div",{className:"code-area",id:"area-result"},e.createElement("div",{id:"result-area",key:"result-area",className:"sample-view"},e.createElement("form",{className:"result-area-form",ref:"mount",onSubmit:s.bind(this)})))))}}),define("playground.rt",["react/addons","lodash","./CodeMirrorEditor"],function(e,t,n){function r(e,t,n){n.preventDefault(),this.setState({currentTab:e[0]})}function i(t,n){return e.createElement("li",{role:"presentation",className:e.addons.classSet({active:this.state.currentTab===t[0]}),onClick:r.bind(this,t,n)},e.createElement("a",{"aria-controls":t[1]},t[1]))}function s(e){this.setState({templateHTML:e.target.value})}function o(e){this.setState({templateProps:e.target.value})}function u(e){e.preventDefault()}return function(){return e.createElement("div",{className:"playground"},e.createElement("div",{id:this.props.id+"-myTab",className:"code-area "+this.getLayoutClass()},e.createElement.apply(this,t.flatten(["ul",{className:"nav nav-tabs",role:"tablist"},t.map(this.getTabs(),i.bind(this))])),e.createElement("div",{},this.state.currentTab==="templateHTML"?e.createElement("div",{className:"tab-pane active"},e.createElement(n,{ref:"editorRT",className:"large-text-area",style:{border:this.validHTML?"":"2px solid red"},value:this.state.templateHTML,mode:"html",onChange:s.bind(this)})):null,this.state.currentTab==="templateProps"?e.createElement("div",{className:"tab-pane active"},e.createElement(n,{ref:"editorCode",className:"large-text-area",style:{border:this.validProps?"":"2px solid red"},value:this.state.templateProps,mode:"javascript",onChange:o.bind(this)})):null,this.state.currentTab==="templateSource"?e.createElement("div",{className:"tab-pane active"},e.createElement(n,{className:"large-text-area",value:this.templateSource,mode:"javascript",readOnly:!0})):null)),e.createElement("div",{key:"result-area",className:"result-area "+this.getLayoutClass()},e.createElement("span",{className:"preview-title"}," "),e.createElement("form",{ref:"mount",className:"sample-view",onSubmit:u.bind(this)})),e.createElement("br",{style:{clear:"both"}}))}}),define("playground",["react","jquery","lodash","./playground-fiddle.rt","./playground.rt"],function(React,$,_,pgFiddleTemplate,playgroundTemplate){function showMessage(e,t){e&&e.showMessage&&e.annotate({line:1,message:t})}function clearMessage(e){e&&e.clearMessage&&e.clearAnnotations()}function generateRenderFunc(e){return function(){var t=null;try{t=e.apply(this)}catch(n){t=React.DOM.div.apply(this,[{style:{color:"red"}},"Exception:"+n.message])}return React.DOM.div.apply(this,_.flatten([{key:"result"},t]))}}var templateHTML="<div></div>",templateProps="var template = React.createClass({\n   render: function () {\n       return templateRT.apply(this);\n   }\n});",Playground=React.createClass({displayName:"Playground",mixins:[React.addons.LinkedStateMixin],propTypes:{direction:React.PropTypes.oneOf(["horizontal","vertical"]),codeVisible:React.PropTypes.bool,fiddle:React.PropTypes.bool},templateSource:"",validHTML:!0,validProps:!0,setTimeout:function(){clearTimeout(this.timeoutID),this.timeoutID=setTimeout.apply(null,arguments)},getDefaultProps:function(){return{direction:"horizontal",codeVisible:!0,fiddle:!1}},getLayoutClass:function(){return this.props.direction==="horizontal"&&"horizontal"||"vertical"},getTabs:function(){return this.props.codeVisible?[["templateHTML","Template"],["templateProps","Class"],["templateSource","Generated code"]]:[["templateHTML","Template"],["templateSource","Generated code"]]},updateSample:function(state){this.generateCode(state),this.validHTML=!0,this.sampleRender=generateRenderFunc(this.sampleFunc);try{this.validProps=!0,this.sample=eval("(function () {"+this.templateSource+"\n"+state.templateProps+"\n return React.createElement("+state.name+");})()"),clearMessage(this.refs.editorCode)}catch(e){this.validProps=!1,this.sample=null;var editor=this.refs.editorCode;this.showError(e,editor)}},showError:function(e,t){var n=this.refs.mount.getDOMNode();this.setTimeout(function(){showMessage(t,e.message),React.render(React.createElement("div",{className:"playground-error"},e.toString()),n)},500)},showErrorAnnotation:function(e,t){var n=this.refs.mount.getDOMNode();this.setTimeout(function(){t.annotate(e),React.render(React.createElement("div",{className:"playground-error"},e.message),n)},500)},clear:function(){var e={templateHTML:templateHTML,templateProps:templateProps};this.setState(e)},generateCode:function(e){var t=e.templateHTML,n=this.refs.editorRT,r=window.reactTemplates.normalizeName(e.name)+"RT",i=null;try{i=window.reactTemplates.convertTemplateToReact(t.trim().replace(/\r/g,""),{modules:"none",name:r}),clearMessage(n)}catch(s){var o=null;s.name==="RTCodeError"?o={line:s.line,message:s.message,index:s.index}:o={line:1,message:s.message},this.showErrorAnnotation(o,n),console.log(s)}this.templateSource=i},getInitialState:function(){var e={templateHTML:this.props.templateHTML||templateHTML,templateProps:this.props.templateProps||templateProps,name:this.props.name||"template",currentTab:"templateHTML"};return e},componentDidMount:function(){this.props.fiddle&&(window.addEventListener("resize",this.calcSize),this.calcSize()),this.updateSample(this.state),this.renderSample()},renderSample:function(){var e=this.refs.mount.getDOMNode();this.sample&&React.render(this.sample,e)},componentDidUpdate:function(){this.renderSample()},componentWillUnmount:function(){window.removeEventListener("resize",this.calcSize)},calcSize:function(){var e=$(window).height()-$("#header").height(),t=e/2-10;$(".code-area").each(function(){$(this).height(t)}),this.refs.editorCode.editor.refresh(),this.refs.editorRT.editor.refresh(),this.refs.editorGenerated.editor.refresh()},componentWillUpdate:function(e,t){(t.templateHTML!==this.state.templateHTML||t.templateProps!==this.state.templateProps)&&this.updateSample(t)},render:function(){this.generateCode(this.state);var e=this.props.fiddle?pgFiddleTemplate:playgroundTemplate;return e.apply(this)}});return Playground}),define("CodeMirrorViewer",["react","lodash","jquery","./libs/codemirror-4.8/lib/codemirror","./libs/codemirror-4.8/mode/javascript/javascript","./libs/codemirror-4.8/mode/xml/xml","./libs/codemirror-4.8/addon/runmode/runmode"],function(e,t,n,r){return e.createClass({displayName:"CodeMirrorViewer",propTypes:{id:e.PropTypes.string,mode:e.PropTypes.string},getDefaultProps:function(){return{mode:"html"}},getInitialState:function(){return{editorId:t.uniqueId()}},render:function(){var n=t.omit(this.props,["ref","key","value","valueLink","onChange"]);n.id=this.props.id||this.state.editorId,n.className="cm-s-default";var r=this.props.valueLink?this.props.valueLink():this.props.value;return e.DOM.pre(n,r)},componentWillUpdate:function(e){var t=e.valueLink?e.valueLink():e.value;this.editor&&this.editor.getValue()!==t&&this.editor.setValue(t||"")},componentDidMount:function(){var e=this.props.valueLink?this.props.valueLink():this.props.value,t=this.props.mode;this.props.mode==="html"&&(t="text/html"),this.editor=r.runMode(e,t,this.getDOMNode())},componentWillUnmount:function(){this.editor.toTextArea()}})}),define("examples.rt",["react/addons","lodash","./playground","./CodeMirrorViewer"],function(e,t,n,r){return function(){return e.createElement("div",{id:"examples"},e.createElement("div",{className:"example"},e.createElement("h3",{},"Hello world in React Templates"),e.createElement("p",{},'\n            Simple "Hello world" HTML transformed into React JavaScript code.\n        '),e.createElement(n,t.merge({},{id:"helloExample",direction:"horizontal"},this.state.samples.hello))),e.createElement("div",{className:"example"},e.createElement("h3",{},"rt-if"),e.createElement("p",{},"\n            This shows the use of rt-if.\n        "),e.createElement(n,t.merge({},{id:"ifExample",direction:"horizontal"},this.state.samples.rtIf))),e.createElement("div",{className:"example"},e.createElement("h3",{},"rt-repeat"),e.createElement("p",{},"\n            This uses rt-repeat to show multiple items and rt-scope to create a reusable name for multiple calculations.\n        "),e.createElement(n,t.merge({},{id:"repeatExample",direction:"horizontal"},this.state.samples.repeat))),e.createElement("div",{className:"example"},e.createElement("h3",{},"rt-props"),e.createElement("p",{},"\n            rt-props is used to pass all the original properties set on this component (except the ones used for the component logic: onClick and eventId) to the element that will actually represent this component.\n        "),e.createElement(n,t.merge({},{id:"propsExample",direction:"horizontal"},this.state.samples.props))),e.createElement("div",{className:"example"},e.createElement("h3",{},"Improved todo list"),e.createElement("p",{},"\n            Every project needs a todo list example, so here is ours.\n        "),e.createElement(n,t.merge({},{id:"todoExample",direction:"horizontal"},this.state.samples.todo))),e.createElement("div",{className:"example"},e.createElement("h3",{},"Weather"),e.createElement("p",{},"\n            This example shows working with async events, the usage of regular event handler function pointers instead of lambda expression, and working with two-way binding.\n        "),e.createElement(n,t.merge({},{id:"weatherExample",direction:"horizontal"},this.state.samples.weather))),e.createElement("div",{id:"rt-require",className:"example"},e.createElement("h3",{},"rt-require"),e.createElement("p",{},"\n            This example shows how to load other React components and libraries into a React template and then use them within the template.\n        "),e.createElement(r,t.merge({},{mode:"javascript"},this.state.rtRequire))),e.createElement("div",{id:"amd",className:"example"},e.createElement("h3",{},"AMD"),e.createElement("p",{},"\n            This example shows the rt-require sample output with AMD support.\n        "),e.createElement(r,t.merge({},{mode:"javascript"},this.state.amd))),e.createElement("div",{id:"commonjs",className:"example"},e.createElement("h3",{},"CommonJS"),e.createElement("p",{},"\n            This example shows the rt-require sample output with CommonJS support.\n        "),e.createElement(r,t.merge({},{mode:"javascript"},this.state.cjs))))}}),define("text",["module"],function(e){var t,n,r=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],i=/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,s=/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im,o=typeof location!="undefined"&&location.href,u=o&&location.protocol&&location.protocol.replace(/\:/,""),a=o&&location.hostname,f=o&&(location.port||undefined),l=[],c=e.config&&e.config()||{};t={version:"2.0.5",strip:function(e){if(e){e=e.replace(i,"");var t=e.match(s);t&&(e=t[1])}else e="";return e},jsEscape:function(e){return e.replace(/(['\\])/g,"\\$1").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r").replace(/[\u2028]/g,"\\u2028").replace(/[\u2029]/g,"\\u2029")},createXhr:c.createXhr||function(){var e,t,n;if(typeof XMLHttpRequest!="undefined")return new XMLHttpRequest;if(typeof ActiveXObject!="undefined")for(t=0;t<3;t+=1){n=r[t];try{e=new ActiveXObject(n)}catch(i){}if(e){r=[n];break}}return e},parseName:function(e){var t,n,r,i=!1,s=e.indexOf("."),o=e.indexOf("./")===0||e.indexOf("../")===0;return s!==-1&&(!o||s>1)?(t=e.substring(0,s),n=e.substring(s+1,e.length)):t=e,r=n||t,s=r.indexOf("!"),s!==-1&&(i=r.substring(s+1)==="strip",r=r.substring(0,s),n?n=r:t=r),{moduleName:t,ext:n,strip:i}},xdRegExp:/^((\w+)\:)?\/\/([^\/\\]+)/,useXhr:function(e,n,r,i){var s,o,u,a=t.xdRegExp.exec(e);return a?(s=a[2],o=a[3],o=o.split(":"),u=o[1],o=o[0],(!s||s===n)&&(!o||o.toLowerCase()===r.toLowerCase())&&(!u&&!o||u===i)):!0},finishLoad:function(e,n,r,i){r=n?t.strip(r):r,c.isBuild&&(l[e]=r),i(r)},load:function(e,n,r,i){if(i.isBuild&&!i.inlineText){r();return}c.isBuild=i.isBuild;var s=t.parseName(e),l=s.moduleName+(s.ext?"."+s.ext:""),h=n.toUrl(l),p=c.useXhr||t.useXhr;!o||p(h,u,a,f)?t.get(h,function(n){t.finishLoad(e,s.strip,n,r)},function(e){r.error&&r.error(e)}):n([l],function(e){t.finishLoad(s.moduleName+"."+s.ext,s.strip,e,r)})},write:function(e,n,r,i){if(l.hasOwnProperty(n)){var s=t.jsEscape(l[n]);r.asModule(e+"!"+n,"define(function () { return '"+s+"';});\n")}},writeFile:function(e,n,r,i,s){var o=t.parseName(n),u=o.ext?"."+o.ext:"",a=o.moduleName+u,f=r.toUrl(o.moduleName+u)+".js";t.load(a,r,function(n){var r=function(e){return i(f,e)};r.asModule=function(e,t){return i.asModule(e,f,t)},t.write(e,a,r,s)},s)}};if(c.env==="node"||!c.env&&typeof process!="undefined"&&process.versions&&!!process.versions.node)n=require.nodeRequire("fs"),t.get=function(e,t){var r=n.readFileSync(e,"utf8");r.indexOf("")===0&&(r=r.substring(1)),t(r)};else if(c.env==="xhr"||!c.env&&t.createXhr())t.get=function(e,n,r,i){var s=t.createXhr(),o;s.open("GET",e,!0);if(i)for(o in i)i.hasOwnProperty(o)&&s.setRequestHeader(o.toLowerCase(),i[o]);c.onXhr&&c.onXhr(s,e),s.onreadystatechange=function(t){var i,o;s.readyState===4&&(i=s.status,i>399&&i<600?(o=new Error(e+" HTTP status: "+i),o.xhr=s,r(o)):n(s.responseText))},s.send(null)};else if(c.env==="rhino"||!c.env&&typeof Packages!="undefined"&&typeof java!="undefined")t.get=function(e,t){var n,r,i="utf-8",s=new java.io.File(e),o=java.lang.System.getProperty("line.separator"),u=new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(s),i)),a="";try{n=new java.lang.StringBuffer,r=u.readLine(),r&&r.length()&&r.charAt(0)===65279&&(r=r.substring(1)),n.append(r);while((r=u.readLine())!==null)n.append(o),n.append(r);a=String(n.toString())}finally{u.close()}t(a)};return t}),define("text!samples/hello.code",[],function(){return"var <%= name %> = React.createClass({\n    render: function () {\n        return <%= name %>RT.apply(this);\n    }\n});"}),define("text!samples/hello.rt",[],function(){return"<h2>Hello world</h2>\n"}),define("text!samples/todo.code",[],function(){return"var <%= name %> = React.createClass({\n    mixins: [React.addons.LinkedStateMixin],\n    getInitialState: function () {\n        return {edited: '', todos: [], counter: 0};\n    },\n    add: function () {\n        if (this.state.edited.trim().length === 0) {\n            return;\n        }\n        var newTodo = {value: this.state.edited, done: false, key: this.state.counter};\n        this.setState({todos: this.state.todos.concat(newTodo), edited: '', counter: this.state.counter + 1});\n    },\n    remove: function (todo) {\n        this.setState({todos: _.reject(this.state.todos, todo)});\n    },\n    toggleChecked: function (index) {\n        var todos = _.cloneDeep(this.state.todos);\n        todos[index].done = !todos[index].done;\n        this.setState({todos: todos});\n    },\n    clearDone: function () {\n        this.setState({todos: _.filter(this.state.todos, {done: false})});\n    },\n    render: function () {\n        return <%= name %>RT.apply(this);\n    }\n});"}),define("text!samples/todo.rt",[],function(){return'<div>\n    <strong>{_.filter(this.state.todos, {done:true}).length}</strong>\n    done,\n    <strong>{_.filter(this.state.todos, {done:false}).length}</strong>\n    pending\n    <br/>\n    <div rt-repeat="todo in this.state.todos" key="{todo.key}">\n        <img src="img/samples/delete.png"\n             onClick="()=>this.remove(todo)"\n             title="Remove Todo"\n             style="cursor:pointer"/>\n        <input type="checkbox" checked="{todo.done}"\n               onChange="()=>this.toggleChecked(todoIndex)"/>\n        <span style="text-decoration: {todo.done ? \'line-through\': \'none\'}">{todo.value}</span>\n    </div>\n    <input key="myinput" style="width:130px" type="text"\n           onKeyDown="(e) => if (e.keyCode == 13) { e.preventDefault(); this.add(); }"\n           valueLink="{this.linkState(\'edited\')}"/>\n    <button onClick="()=>this.add()">Add</button><br/>\n    <button onClick="()=>this.clearDone()">Clear done</button>\n</div>'}),define("text!samples/rt-if.code",[],function(){return"var <%= name %> = React.createClass({\n    getInitialState: function () {\n        return {open: false};\n    },\n    toggle: function() {\n        this.setState({open: !this.state.open});\n    },\n    render: function () {\n        return <%= name %>RT.apply(this);\n    }\n});"}),define("text!samples/rt-if.rt",[],function(){return'<div>\n    <h4 style="cursor:pointer" onClick="()=>this.toggle()">\n        Click to {this.state.open ? \'close\' : \'open\'}\n    </h4>\n    <p rt-if="this.state.open">This is my paragraph. It opens and\n                               closes</p>\n</div>'}),define("text!samples/rt-props.code",[],function(){return"var <%= name %> = React.createClass({\n    mixins: [React.addons.LinkedStateMixin],\n    getInitialState: function() {\n        return { key: 'color', val: 'blue' };\n    },\n    getProps: function() {\n        var ret = { style: {\n          color: 'black',\n          backgroundColor: 'white',\n          borderColor: 'black'\n        }};\n        ret.style[this.state.key] = this.state.val;\n        return ret;\n    },\n    render: function () {\n        return <%= name %>RT.apply(this);\n    }\n});"}),define("text!samples/rt-props.rt",[],function(){return'<div>\n    Style:\n    <select valueLink="{this.linkState(\'key\')}">\n        <option value="color">Color</option>\n        <option value="backgroundColor">Background color</option>\n        <option value="borderColor">Border color</option>\n    </select><br/>\n    Value:\n    <select valueLink="{this.linkState(\'val\')}">\n        <option value="blue">Blue</option>\n        <option value="red">Red</option>\n        <option value="yellow">Yellow</option>\n    </select><br/><br/>\n    <div style="padding:5px;text-align:center;border:1px solid"\n         rt-props="this.getProps()">Sample</div>\n</div>'}),define("text!samples/rt-repeat.code",[],function(){return"var <%= name %> = React.createClass({\n    getInitialState: function () {\n        return {\n            items: ['One', 'Two', 'Three']\n        };\n    },\n    render: function () {\n        return <%= name %>RT.apply(this);\n    }\n});"}),define("text!samples/rt-repeat.rt",[],function(){return'<div>\n    <ul>\n        <li rt-repeat="item in this.state.items">{item}</li>\n    </ul>\n</div>'}),define("text!samples/weather.code",[],function(){return"var <%= name %> = React.createClass({\n    mixins: [React.addons.LinkedStateMixin],\n    getInitialState: function() {\n        this.cityIds = [5391959,293397,2643743];\n        this.fetchWeather();\n        return { loading: true, cityToAdd: '', info: [] };\n    },\n    addCity: function() {\n        if (this.state.cityToAdd.trim() == '') {\n            return;\n        }\n        this.setState({ loading: true, cityToAdd: '' });\n        $.get('http://api.openweathermap.org/data/2.5/weather?q=' + this.state.cityToAdd, this.findCityCallback);\n    },\n    findCityCallback: function(result) {\n        if (result.id && !_.contains(this.cityIds, result.id)) {\n            this.cityIds.unshift(result.id);\n            this.fetchWeather();\n        } else {\n            this.setState({ loading: false });\n        }\n    },\n    refresh: function() {\n        this.setState({ loading:true });\n        this.fetchWeather();\n    },\n    fetchWeather: function() {\n       $.get('http://api.openweathermap.org/data/2.5/group?id=' + this.cityIds.join(',') + '&units=metric', this.fetchWeatherCallback);\n    },\n    fetchWeatherCallback: function(result) {\n        this.setState({ loading:false, info: result.list });\n    },\n    render: function () {\n        return <%= name %>RT.apply(this);\n    }\n});"}),define("text!samples/weather.rt",[],function(){return'<div>\n    <h4>Cities weather report</h4>\n    <input placeholder="Type a city to add"\n           style="width:130px"\n           valueLink="{this.linkState(\'cityToAdd\')}"\n           onKeyDown="(e)=>if (e.keyCode === 13) { e.preventDefault(); this.addCity(); }"/>\n    <button onClick="{this.addCity}">Add</button>\n    <div key="preloader" rt-if="this.state.loading">\n        -- Loading --\n    </div>\n    <div rt-repeat="city in this.state.info" key="{city.id}">\n        {cityIndex+1})\n        <img rt-repeat="weather in city.weather"\n             src="http://openweathermap.org/img/w/{weather.icon}.png"\n             title="{weather.description}"/>\n        <span style="white-space:nowrap">{city.name}, {city.sys.country}</span>\n    </div>\n    <button onClick="{this.refresh}">Refresh</button>\n</div>'}),define("text!samples/rt-require.rt",[],function(){return'<rt-require dependency="comps/myComp" as="myComp"/>\n<rt-require dependency="utils/utils" as="utils"/>\n<div>\n    <myComp customProp="{utils.doSomething()}">myComp is just a regular tag</myComp>\n</div>\n'}),define("examples",["lodash","react","./examples.rt","text!./samples/hello.code","text!./samples/hello.rt","text!./samples/todo.code","text!./samples/todo.rt","text!./samples/rt-if.code","text!./samples/rt-if.rt","text!./samples/rt-props.code","text!./samples/rt-props.rt","text!./samples/rt-repeat.code","text!./samples/rt-repeat.rt","text!./samples/weather.code","text!./samples/weather.rt","text!./samples/rt-require.rt"],function(e,t,n,r,i,s,o,u,a,f,l,c,h,p,d,v){var m={hello:[r,i],todo:[s,o],props:[f,l],rtIf:[u,a],repeat:[c,h],weather:[p,d]};Object.keys(m).forEach(function(t){m[t]={name:t,templateProps:e.template(m[t][0],{name:t}),templateHTML:m[t][1]}});var g=t.createClass({displayName:"Examples",mixins:[t.addons.LinkedStateMixin],getInitialState:function(){var e=window.reactTemplates.convertTemplateToReact(v,{modules:"amd",name:"template"}),t=window.reactTemplates.convertTemplateToReact(v,{modules:"commonjs",name:"template"});return{rtRequire:{value:v},amd:{value:e},cjs:{value:t},samples:m}},render:n});return g}),requirejs.config({paths:{lodash:"//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min",jquery:"//code.jquery.com/jquery-1.11.0.min",firebase:"https://cdn.firebase.com/js/client/2.0.5/firebase",react:"//fb.me/react-with-addons-0.12.2",text:"libs/requirejs-plugins/text",json:"libs/requirejs-plugins/json"},shim:{lodash:{exports:"_"},firebase:{exports:"Firebase"},jquery:{exports:"$"},react:{exports:"React"}},map:{"*":{"react/addons":"react"}}}),requirejs(["jquery","react","./examples"],function(e,t,n){var r=t.createElement(n);t.render(r,document.getElementById("home-section"))}),define("home-main.js",function(){});
\ No newline at end of file
+(function(e){if(typeof exports=="object"&&typeof module=="object")module.exports=e();else{if(typeof define=="function"&&define.amd)return define("libs/codemirror-4.8/lib/codemirror",[],e);this.CodeMirror=e()}})(function(){function S(e,t){if(!(this instanceof S))return new S(e,t);this.options=t=t?zo(t):{},zo(fi,t,!1),H(t);var n=t.value;typeof n=="string"&&(n=new js(n,t.mode)),this.doc=n;var s=this.display=new x(e,n);s.wrapper.CodeMirror=this,M(this),A(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),t.autofocus&&!d&&er(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,draggingText:!1,highlight:new Do,keySeq:null},r&&i<11&&setTimeout(Wo(Zn,this,!0),20),rr(this),fu(),kn(this),this.curOp.forceUpdate=!0,Rs(this,n),t.autofocus&&!d||nu()==s.input?setTimeout(Wo(Pr,this),20):Hr(this);for(var o in li)li.hasOwnProperty(o)&&li[o](this,t[o],hi);R(this);for(var u=0;u<mi.length;++u)mi[u](this);An(this)}function x(e,t){var n=this,o=n.input=Go("textarea",null,null,"position: absolute; padding: 0; width: 1px; height: 1em; outline: none");s?o.style.width="1000px":o.setAttribute("wrap","off"),p&&(o.style.border="1px solid black"),o.setAttribute("autocorrect","off"),o.setAttribute("autocapitalize","off"),o.setAttribute("spellcheck","false"),n.inputDiv=Go("div",[o],null,"overflow: hidden; position: relative; width: 3px; height: 0px;"),n.scrollbarH=Go("div",[Go("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar"),n.scrollbarV=Go("div",[Go("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),n.scrollbarFiller=Go("div",null,"CodeMirror-scrollbar-filler"),n.gutterFiller=Go("div",null,"CodeMirror-gutter-filler"),n.lineDiv=Go("div",null,"CodeMirror-code"),n.selectionDiv=Go("div",null,null,"position: relative; z-index: 1"),n.cursorDiv=Go("div",null,"CodeMirror-cursors"),n.measure=Go("div",null,"CodeMirror-measure"),n.lineMeasure=Go("div",null,"CodeMirror-measure"),n.lineSpace=Go("div",[n.measure,n.lineMeasure,n.selectionDiv,n.cursorDiv,n.lineDiv],null,"position: relative; outline: none"),n.mover=Go("div",[Go("div",[n.lineSpace],"CodeMirror-lines")],null,"position: relative"),n.sizer=Go("div",[n.mover],"CodeMirror-sizer"),n.heightForcer=Go("div",null,null,"position: absolute; height: "+Lo+"px; width: 1px;"),n.gutters=Go("div",null,"CodeMirror-gutters"),n.lineGutter=null,n.scroller=Go("div",[n.sizer,n.heightForcer,n.gutters],"CodeMirror-scroll"),n.scroller.setAttribute("tabIndex","-1"),n.wrapper=Go("div",[n.inputDiv,n.scrollbarH,n.scrollbarV,n.scrollbarFiller,n.gutterFiller,n.scroller],"CodeMirror"),r&&i<8&&(n.gutters.style.zIndex=-1,n.scroller.style.paddingRight=0),p&&(o.style.width="0px"),s||(n.scroller.draggable=!0),l&&(n.inputDiv.style.height="1px",n.inputDiv.style.position="absolute"),r&&i<8&&(n.scrollbarH.style.minHeight=n.scrollbarV.style.minWidth="18px"),e&&(e.appendChild?e.appendChild(n.wrapper):e(n.wrapper)),n.viewFrom=n.viewTo=t.first,n.view=[],n.externalMeasured=null,n.viewOffset=0,n.lastWrapHeight=n.lastWrapWidth=0,n.updateLineNumbers=null,n.lineNumWidth=n.lineNumInnerWidth=n.lineNumChars=null,n.prevInput="",n.alignWidgets=!1,n.pollingFast=!1,n.poll=new Do,n.cachedCharWidth=n.cachedTextHeight=n.cachedPaddingH=null,n.inaccurateSelection=!1,n.maxLine=null,n.maxLineLength=0,n.maxLineChanged=!1,n.wheelDX=n.wheelDY=n.wheelStartX=n.wheelStartY=null,n.shift=!1,n.selForContextMenu=null}function T(e){e.doc.mode=S.getMode(e.options,e.doc.modeOption),N(e)}function N(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.frontier=e.doc.first,Xt(e,100),e.state.modeGen++,e.curOp&&Un(e)}function C(e){e.options.lineWrapping?(su(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth=""):(iu(e.display.wrapper,"CodeMirror-wrap"),P(e)),L(e),Un(e),cn(e),setTimeout(function(){F(e)},100)}function k(e){var t=xn(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/Tn(e.display)-3);return function(i){if(ss(e.doc,i))return 0;var s=0;if(i.widgets)for(var o=0;o<i.widgets.length;o++)i.widgets[o].height&&(s+=i.widgets[o].height);return n?s+(Math.ceil(i.text.length/r)||1)*t:s+t}}function L(e){var t=e.doc,n=k(e);t.iter(function(e){var t=n(e);t!=e.height&&Xs(e,t)})}function A(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),cn(e)}function O(e){M(e),Un(e),setTimeout(function(){q(e)},20)}function M(e){var t=e.display.gutters,n=e.options.gutters;Zo(t);for(var r=0;r<n.length;++r){var i=n[r],s=t.appendChild(Go("div",null,"CodeMirror-gutter "+i));i=="CodeMirror-linenumbers"&&(e.display.lineGutter=s,s.style.width=(e.display.lineNumWidth||1)+"px")}t.style.display=r?"":"none",_(e)}function _(e){var t=e.display.gutters.offsetWidth;e.display.sizer.style.marginLeft=t+"px",e.display.scrollbarH.style.left=e.options.fixedGutter?t+"px":0}function D(e){if(e.height==0)return 0;var t=e.text.length,n,r=e;while(n=Yi(r)){var i=n.find(0,!0);r=i.from.line,t+=i.from.ch-i.to.ch}r=e;while(n=Zi(r)){var i=n.find(0,!0);t-=r.text.length-i.from.ch,r=i.to.line,t+=r.text.length-i.to.ch}return t}function P(e){var t=e.display,n=e.doc;t.maxLine=Us(n,n.first),t.maxLineLength=D(t.maxLine),t.maxLineChanged=!0,n.iter(function(e){var n=D(e);n>t.maxLineLength&&(t.maxLineLength=n,t.maxLine=e)})}function H(e){var t=qo(e.gutters,"CodeMirror-linenumbers");t==-1&&e.lineNumbers?e.gutters=e.gutters.concat(["CodeMirror-linenumbers"]):t>-1&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}function B(e){return e.display.scroller.clientHeight-e.display.wrapper.clientHeight<Lo-3}function j(e){var t=e.display.scroller;return{clientHeight:t.clientHeight,barHeight:e.display.scrollbarV.clientHeight,scrollWidth:t.scrollWidth,clientWidth:t.clientWidth,hScrollbarTakesSpace:B(e),barWidth:e.display.scrollbarH.clientWidth,docHeight:Math.round(e.doc.height+Qt(e.display))}}function F(e,t){t||(t=j(e));var n=e.display,r=pu(n.measure),i=t.docHeight+Lo,s=t.scrollWidth>t.clientWidth;s&&t.scrollWidth<=t.clientWidth+1&&r>0&&!t.hScrollbarTakesSpace&&(s=!1);var o=i>t.clientHeight;o?(n.scrollbarV.style.display="block",n.scrollbarV.style.bottom=s?r+"px":"0",n.scrollbarV.firstChild.style.height=Math.max(0,i-t.clientHeight+(t.barHeight||n.scrollbarV.clientHeight))+"px"):(n.scrollbarV.style.display="",n.scrollbarV.firstChild.style.height="0"),s?(n.scrollbarH.style.display="block",n.scrollbarH.style.right=o?r+"px":"0",n.scrollbarH.firstChild.style.width=t.scrollWidth-t.clientWidth+(t.barWidth||n.scrollbarH.clientWidth)+"px"):(n.scrollbarH.style.display="",n.scrollbarH.firstChild.style.width="0"),s&&o?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=n.scrollbarFiller.style.width=r+"px"):n.scrollbarFiller.style.display="",s&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r+"px",n.gutterFiller.style.width=n.gutters.offsetWidth+"px"):n.gutterFiller.style.display="";if(!e.state.checkedOverlayScrollbar&&t.clientHeight>0){if(r===0){var u=v&&!c?"12px":"18px";n.scrollbarV.style.minWidth=n.scrollbarH.style.minHeight=u;var a=function(t){mo(t)!=n.scrollbarV&&mo(t)!=n.scrollbarH&&jn(e,ur)(t)};yo(n.scrollbarV,"mousedown",a),yo(n.scrollbarH,"mousedown",a)}e.state.checkedOverlayScrollbar=!0}}function I(e,t,n){var r=n&&n.top!=null?Math.max(0,n.top):e.scroller.scrollTop;r=Math.floor(r-Kt(e));var i=n&&n.bottom!=null?n.bottom:r+e.wrapper.clientHeight,s=$s(t,r),o=$s(t,i);if(n&&n.ensure){var u=n.ensure.from.line,a=n.ensure.to.line;if(u<s)return{from:u,to:$s(t,Js(Us(t,u))+e.wrapper.clientHeight)};if(Math.min(a,t.lastLine())>=o)return{from:$s(t,Js(Us(t,a))-e.wrapper.clientHeight),to:a}}return{from:s,to:Math.max(o,s+1)}}function q(e){var t=e.display,n=t.view;if(!t.alignWidgets&&(!t.gutters.firstChild||!e.options.fixedGutter))return;var r=z(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,s=r+"px";for(var o=0;o<n.length;o++)if(!n[o].hidden){e.options.fixedGutter&&n[o].gutter&&(n[o].gutter.style.left=s);var u=n[o].alignable;if(u)for(var a=0;a<u.length;a++)u[a].style.left=s}e.options.fixedGutter&&(t.gutters.style.left=r+i+"px")}function R(e){if(!e.options.lineNumbers)return!1;var t=e.doc,n=U(e.options,t.first+t.size-1),r=e.display;if(n.length!=r.lineNumChars){var i=r.measure.appendChild(Go("div",[Go("div",n)],"CodeMirror-linenumber CodeMirror-gutter-elt")),s=i.firstChild.offsetWidth,o=i.offsetWidth-s;return r.lineGutter.style.width="",r.lineNumInnerWidth=Math.max(s,r.lineGutter.offsetWidth-o),r.lineNumWidth=r.lineNumInnerWidth+o,r.lineNumChars=r.lineNumInnerWidth?n.length:-1,r.lineGutter.style.width=r.lineNumWidth+"px",_(e),!0}return!1}function U(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function z(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function W(e,t,n){var r=e.display;this.viewport=t,this.visible=I(r,e.doc,t),this.editorIsHidden=!r.wrapper.offsetWidth,this.wrapperHeight=r.wrapper.clientHeight,this.wrapperWidth=r.wrapper.clientWidth,this.oldViewFrom=r.viewFrom,this.oldViewTo=r.viewTo,this.oldScrollerWidth=r.scroller.clientWidth,this.force=n,this.dims=Y(e)}function X(e,t){var n=e.display,r=e.doc;if(t.editorIsHidden)return Wn(e),!1;if(!t.force&&t.visible.from>=n.viewFrom&&t.visible.to<=n.viewTo&&(n.updateLineNumbers==null||n.updateLineNumbers>=n.viewTo)&&Jn(e)==0)return!1;R(e)&&(Wn(e),t.dims=Y(e));var i=r.first+r.size,s=Math.max(t.visible.from-e.options.viewportMargin,r.first),o=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFrom<s&&s-n.viewFrom<20&&(s=Math.max(r.first,n.viewFrom)),n.viewTo>o&&n.viewTo-o<20&&(o=Math.min(i,n.viewTo)),E&&(s=rs(e.doc,s),o=is(e.doc,o));var u=s!=n.viewFrom||o!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;$n(e,s,o),n.viewOffset=Js(Us(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px";var a=Jn(e);if(!u&&a==0&&!t.force&&(n.updateLineNumbers==null||n.updateLineNumbers>=n.viewTo))return!1;var f=nu();return a>4&&(n.lineDiv.style.display="none"),Z(e,n.updateLineNumbers,t.dims),a>4&&(n.lineDiv.style.display=""),f&&nu()!=f&&f.offsetHeight&&f.focus(),Zo(n.cursorDiv),Zo(n.selectionDiv),u&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,Xt(e,400)),n.updateLineNumbers=null,!0}function V(e,t){var n=t.force,r=t.viewport;for(var i=!0;;i=!1){if(i&&e.options.lineWrapping&&t.oldScrollerWidth!=e.display.scroller.clientWidth)n=!0;else{n=!1,r&&r.top!=null&&(r={top:Math.min(e.doc.height+Qt(e.display)-Lo-e.display.scroller.clientHeight,r.top)}),t.visible=I(e.display,e.doc,r);if(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break}if(!X(e,t))break;Q(e);var s=j(e);Rt(e),J(e,s),F(e,s)}So(e,"update",e),(e.display.viewFrom!=t.oldViewFrom||e.display.viewTo!=t.oldViewTo)&&So(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo)}function $(e,t){var n=new W(e,t);if(X(e,n)){Q(e),V(e,n);var r=j(e);Rt(e),J(e,r),F(e,r)}}function J(e,t){e.display.sizer.style.minHeight=e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=Math.max(t.docHeight,t.clientHeight-Lo)+"px"}function K(e,t){e.display.sizer.offsetWidth+e.display.gutters.offsetWidth<e.display.scroller.clientWidth-1&&(e.display.sizer.style.minHeight=e.display.heightForcer.style.top="0px",e.display.gutters.style.height=t.docHeight+"px")}function Q(e){var t=e.display,n=t.lineDiv.offsetTop;for(var s=0;s<t.view.length;s++){var o=t.view[s],u;if(o.hidden)continue;if(r&&i<8){var a=o.node.offsetTop+o.node.offsetHeight;u=a-n,n=a}else{var f=o.node.getBoundingClientRect();u=f.bottom-f.top}var l=o.line.height-u;u<2&&(u=xn(t));if(l>.001||l<-0.001){Xs(o.line,u),G(o.line);if(o.rest)for(var c=0;c<o.rest.length;c++)G(o.rest[c])}}}function G(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t)e.widgets[t].height=e.widgets[t].node.offsetHeight}function Y(e){var t=e.display,n={},r={},i=t.gutters.clientLeft;for(var s=t.gutters.firstChild,o=0;s;s=s.nextSibling,++o)n[e.options.gutters[o]]=s.offsetLeft+s.clientLeft+i,r[e.options.gutters[o]]=s.clientWidth;return{fixedPos:z(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function Z(e,t,n){function a(t){var n=t.nextSibling;return s&&v&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),n}var r=e.display,i=e.options.lineNumbers,o=r.lineDiv,u=o.firstChild,f=r.view,l=r.viewFrom;for(var c=0;c<f.length;c++){var h=f[c];if(!h.hidden)if(!h.node){var p=at(e,h,l,n);o.insertBefore(p,u)}else{while(u!=h.node)u=a(u);var d=i&&t!=null&&t<=l&&h.lineNumber;h.changes&&(qo(h.changes,"gutter")>-1&&(d=!1),et(e,h,l,n)),d&&(Zo(h.lineNumber),h.lineNumber.appendChild(document.createTextNode(U(e.options,l)))),u=h.node.nextSibling}l+=h.size}while(u)u=a(u)}function et(e,t,n,r){for(var i=0;i<t.changes.length;i++){var s=t.changes[i];s=="text"?it(e,t):s=="gutter"?ot(e,t,n,r):s=="class"?st(t):s=="widget"&&ut(t,r)}t.changes=null}function tt(e){return e.node==e.text&&(e.node=Go("div",null,null,"position: relative"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),r&&i<8&&(e.node.style.zIndex=2)),e.node}function nt(e){var t=e.bgClass?e.bgClass+" "+(e.line.bgClass||""):e.line.bgClass;t&&(t+=" CodeMirror-linebackground");if(e.background)t?e.background.className=t:(e.background.parentNode.removeChild(e.background),e.background=null);else if(t){var n=tt(e);e.background=n.insertBefore(Go("div",null,t),n.firstChild)}}function rt(e,t){var n=e.display.externalMeasured;return n&&n.line==t.line?(e.display.externalMeasured=null,t.measure=n.measure,n.built):Ns(e,t)}function it(e,t){var n=t.text.className,r=rt(e,t);t.text==t.node&&(t.node=r.pre),t.text.parentNode.replaceChild(r.pre,t.text),t.text=r.pre,r.bgClass!=t.bgClass||r.textClass!=t.textClass?(t.bgClass=r.bgClass,t.textClass=r.textClass,st(t)):n&&(t.text.className=n)}function st(e){nt(e),e.line.wrapClass?tt(e).className=e.line.wrapClass:e.node!=e.text&&(e.node.className="");var t=e.textClass?e.textClass+" "+(e.line.textClass||""):e.line.textClass;e.text.className=t||""}function ot(e,t,n,r){t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null);var i=t.line.gutterMarkers;if(e.options.lineNumbers||i){var s=tt(t),o=t.gutter=s.insertBefore(Go("div",null,"CodeMirror-gutter-wrapper","left: "+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px; width: "+r.gutterTotalWidth+"px"),t.text);t.line.gutterClass&&(o.className+=" "+t.line.gutterClass),e.options.lineNumbers&&(!i||!i["CodeMirror-linenumbers"])&&(t.lineNumber=o.appendChild(Go("div",U(e.options,n),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+r.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+e.display.lineNumInnerWidth+"px")));if(i)for(var u=0;u<e.options.gutters.length;++u){var a=e.options.gutters[u],f=i.hasOwnProperty(a)&&i[a];f&&o.appendChild(Go("div",[f],"CodeMirror-gutter-elt","left: "+r.gutterLeft[a]+"px; width: "+r.gutterWidth[a]+"px"))}}}function ut(e,t){e.alignable&&(e.alignable=null);for(var n=e.node.firstChild,r;n;n=r){var r=n.nextSibling;n.className=="CodeMirror-linewidget"&&e.node.removeChild(n)}ft(e,t)}function at(e,t,n,r){var i=rt(e,t);return t.text=t.node=i.pre,i.bgClass&&(t.bgClass=i.bgClass),i.textClass&&(t.textClass=i.textClass),st(t),ot(e,t,n,r),ft(t,r),t.node}function ft(e,t){lt(e.line,e,t,!0);if(e.rest)for(var n=0;n<e.rest.length;n++)lt(e.rest[n],e,t,!1)}function lt(e,t,n,r){if(!e.widgets)return;var i=tt(t);for(var s=0,o=e.widgets;s<o.length;++s){var u=o[s],a=Go("div",[u.node],"CodeMirror-linewidget");u.handleMouseEvents||(a.ignoreEvents=!0),ct(u,a,t,n),r&&u.above?i.insertBefore(a,t.gutter||t.text):i.appendChild(a),So(u,"redraw")}}function ct(e,t,n,r){if(e.noHScroll){(n.alignable||(n.alignable=[])).push(t);var i=r.wrapperWidth;t.style.left=r.fixedPos+"px",e.coverGutter||(i-=r.gutterTotalWidth,t.style.paddingLeft=r.gutterTotalWidth+"px"),t.style.width=i+"px"}e.coverGutter&&(t.style.zIndex=5,t.style.position="relative",e.noHScroll||(t.style.marginLeft=-r.gutterTotalWidth+"px"))}function dt(e){return ht(e.line,e.ch)}function vt(e,t){return pt(e,t)<0?t:e}function mt(e,t){return pt(e,t)<0?e:t}function gt(e,t){this.ranges=e,this.primIndex=t}function yt(e,t){this.anchor=e,this.head=t}function bt(e,t){var n=e[t];e.sort(function(e,t){return pt(e.from(),t.from())}),t=qo(e,n);for(var r=1;r<e.length;r++){var i=e[r],s=e[r-1];if(pt(s.to(),i.from())>=0){var o=mt(s.from(),i.from()),u=vt(s.to(),i.to()),a=s.empty()?i.from()==i.head:s.from()==s.head;r<=t&&--t,e.splice(--r,2,new yt(a?u:o,a?o:u))}}return new gt(e,t)}function wt(e,t){return new gt([new yt(e,t||e)],0)}function Et(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function St(e,t){if(t.line<e.first)return ht(e.first,0);var n=e.first+e.size-1;return t.line>n?ht(n,Us(e,n).text.length):xt(t,Us(e,t.line).text.length)}function xt(e,t){var n=e.ch;return n==null||n>t?ht(e.line,t):n<0?ht(e.line,0):e}function Tt(e,t){return t>=e.first&&t<e.first+e.size}function Nt(e,t){for(var n=[],r=0;r<t.length;r++)n[r]=St(e,t[r]);return n}function Ct(e,t,n,r){if(e.cm&&e.cm.display.shift||e.extend){var i=t.anchor;if(r){var s=pt(n,i)<0;s!=pt(r,i)<0?(i=n,n=r):s!=pt(n,r)<0&&(n=r)}return new yt(i,n)}return new yt(r||n,n)}function kt(e,t,n,r){Dt(e,new gt([Ct(e,e.sel.primary(),t,n)],0),r)}function Lt(e,t,n){for(var r=[],i=0;i<e.sel.ranges.length;i++)r[i]=Ct(e,e.sel.ranges[i],t[i],null);var s=bt(r,e.sel.primIndex);Dt(e,s,n)}function At(e,t,n,r){var i=e.sel.ranges.slice(0);i[t]=n,Dt(e,bt(i,e.sel.primIndex),r)}function Ot(e,t,n,r){Dt(e,wt(t,n),r)}function Mt(e,t){var n={ranges:t.ranges,update:function(t){this.ranges=[];for(var n=0;n<t.length;n++)this.ranges[n]=new yt(St(e,t[n].anchor),St(e,t[n].head))}};return wo(e,"beforeSelectionChange",e,n),e.cm&&wo(e.cm,"beforeSelectionChange",e.cm,n),n.ranges!=t.ranges?bt(n.ranges,n.ranges.length-1):t}function _t(e,t,n){var r=e.history.done,i=Fo(r);i&&i.ranges?(r[r.length-1]=t,Pt(e,t,n)):Dt(e,t,n)}function Dt(e,t,n){Pt(e,t,n),no(e,e.sel,e.cm?e.cm.curOp.id:NaN,n)}function Pt(e,t,n){if(Co(e,"beforeSelectionChange")||e.cm&&Co(e.cm,"beforeSelectionChange"))t=Mt(e,t);var r=n&&n.bias||(pt(t.primary().head,e.sel.primary().head)<0?-1:1);Ht(e,jt(e,t,r,!0)),(!n||n.scroll!==!1)&&e.cm&&ni(e.cm)}function Ht(e,t){if(t.equals(e.sel))return;e.sel=t,e.cm&&(e.cm.curOp.updateInput=e.cm.curOp.selectionChanged=!0,No(e.cm)),So(e,"cursorActivity",e)}function Bt(e){Ht(e,jt(e,e.sel,null,!1),Oo)}function jt(e,t,n,r){var i;for(var s=0;s<t.ranges.length;s++){var o=t.ranges[s],u=Ft(e,o.anchor,n,r),a=Ft(e,o.head,n,r);if(i||u!=o.anchor||a!=o.head)i||(i=t.ranges.slice(0,s)),i[s]=new yt(u,a)}return i?bt(i,t.primIndex):t}function Ft(e,t,n,r){var i=!1,s=t,o=n||1;e.cantEdit=!1;e:for(;;){var u=Us(e,s.line);if(u.markedSpans)for(var a=0;a<u.markedSpans.length;++a){var f=u.markedSpans[a],l=f.marker;if((f.from==null||(l.inclusiveLeft?f.from<=s.ch:f.from<s.ch))&&(f.to==null||(l.inclusiveRight?f.to>=s.ch:f.to>s.ch))){if(r){wo(l,"beforeCursorEnter");if(l.explicitlyCleared){if(!u.markedSpans)break;--a;continue}}if(!l.atomic)continue;var c=l.find(o<0?-1:1);if(pt(c,s)==0){c.ch+=o,c.ch<0?c.line>e.first?c=St(e,ht(c.line-1)):c=null:c.ch>u.text.length&&(c.line<e.first+e.size-1?c=ht(c.line+1,0):c=null);if(!c){if(i)return r?(e.cantEdit=!0,ht(e.first,0)):Ft(e,t,n,!0);i=!0,c=t,o=-o}}s=c;continue e}}return s}}function It(e){var t=e.display,n=e.doc,r={},i=r.cursors=document.createDocumentFragment(),s=r.selection=document.createDocumentFragment();for(var o=0;o<n.sel.ranges.length;o++){var u=n.sel.ranges[o],a=u.empty();(a||e.options.showCursorWhenSelecting)&&Ut(e,u,i),a||zt(e,u,s)}if(e.options.moveInputWithCursor){var f=gn(e,n.sel.primary().head,"div"),l=t.wrapper.getBoundingClientRect(),c=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,f.top+c.top-l.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,f.left+c.left-l.left))}return r}function qt(e,t){eu(e.display.cursorDiv,t.cursors),eu(e.display.selectionDiv,t.selection),t.teTop!=null&&(e.display.inputDiv.style.top=t.teTop+"px",e.display.inputDiv.style.left=t.teLeft+"px")}function Rt(e){qt(e,It(e))}function Ut(e,t,n){var r=gn(e,t.head,"div",null,null,!e.options.singleCursorHeightPerLine),i=n.appendChild(Go("div"," ","CodeMirror-cursor"));i.style.left=r.left+"px",i.style.top=r.top+"px",i.style.height=Math.max(0,r.bottom-r.top)*e.options.cursorHeight+"px";if(r.other){var s=n.appendChild(Go("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));s.style.display="",s.style.left=r.other.left+"px",s.style.top=r.other.top+"px",s.style.height=(r.other.bottom-r.other.top)*.85+"px"}}function zt(e,t,n){function f(e,t,n,r){t<0&&(t=0),t=Math.round(t),r=Math.round(r),s.appendChild(Go("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px; top: "+t+"px; width: "+(n==null?a-e:n)+"px; height: "+(r-t)+"px"))}function l(t,n,r){function h(n,r){return mn(e,ht(t,n),"div",s,r)}var s=Us(i,t),o=s.text.length,l,c;return Tu(Ks(s),n||0,r==null?o:r,function(e,t,i){var s=h(e,"left"),p,d,v;if(e==t)p=s,d=v=s.left;else{p=h(t-1,"right");if(i=="rtl"){var m=s;s=p,p=m}d=s.left,v=p.right}n==null&&e==0&&(d=u),p.top-s.top>3&&(f(d,s.top,null,s.bottom),d=u,s.bottom<p.top&&f(d,s.bottom,null,p.top)),r==null&&t==o&&(v=a);if(!l||s.top<l.top||s.top==l.top&&s.left<l.left)l=s;if(!c||p.bottom>c.bottom||p.bottom==c.bottom&&p.right>c.right)c=p;d<u+1&&(d=u),f(d,p.top,v-d,p.bottom)}),{start:l,end:c}}var r=e.display,i=e.doc,s=document.createDocumentFragment(),o=Gt(e.display),u=o.left,a=r.lineSpace.offsetWidth-o.right,c=t.from(),h=t.to();if(c.line==h.line)l(c.line,c.ch,h.ch);else{var p=Us(i,c.line),d=Us(i,h.line),v=ts(p)==ts(d),m=l(c.line,c.ch,v?p.text.length+1:null).end,g=l(h.line,v?0:null,h.ch).start;v&&(m.top<g.top-2?(f(m.right,m.top,null,m.bottom),f(u,g.top,g.left,g.bottom)):f(m.right,m.top,g.left-m.right,m.bottom)),m.bottom<g.top&&f(u,m.bottom,null,g.top)}n.appendChild(s)}function Wt(e){if(!e.state.focused)return;var t=e.display;clearInterval(t.blinker);var n=!0;t.cursorDiv.style.visibility="",e.options.cursorBlinkRate>0?t.blinker=setInterval(function(){t.cursorDiv.style.visibility=(n=!n)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}function Xt(e,t){e.doc.mode.startState&&e.doc.frontier<e.display.viewTo&&e.state.highlight.set(t,Wo(Vt,e))}function Vt(e){var t=e.doc;t.frontier<t.first&&(t.frontier=t.first);if(t.frontier>=e.display.viewTo)return;var n=+(new Date)+e.options.workTime,r=yi(t.mode,Jt(e,t.frontier)),i=[];t.iter(t.frontier,Math.min(t.first+t.size,e.display.viewTo+500),function(s){if(t.frontier>=e.display.viewFrom){var o=s.styles,u=bs(e,s,r,!0);s.styles=u.styles;var a=s.styleClasses,f=u.classes;f?s.styleClasses=f:a&&(s.styleClasses=null);var l=!o||o.length!=s.styles.length||a!=f&&(!a||!f||a.bgClass!=f.bgClass||a.textClass!=f.textClass);for(var c=0;!l&&c<o.length;++c)l=o[c]!=s.styles[c];l&&i.push(t.frontier),s.stateAfter=yi(t.mode,r)}else Es(e,s.text,r),s.stateAfter=t.frontier%5==0?yi(t.mode,r):null;++t.frontier;if(+(new Date)>n)return Xt(e,e.options.workDelay),!0}),i.length&&Bn(e,function(){for(var t=0;t<i.length;t++)zn(e,i[t],"text")})}function $t(e,t,n){var r,i,s=e.doc,o=n?-1:t-(e.doc.mode.innerMode?1e3:100);for(var u=t;u>o;--u){if(u<=s.first)return s.first;var a=Us(s,u-1);if(a.stateAfter&&(!n||u<=s.frontier))return u;var f=Po(a.text,null,e.options.tabSize);if(i==null||r>f)i=u-1,r=f}return i}function Jt(e,t,n){var r=e.doc,i=e.display;if(!r.mode.startState)return!0;var s=$t(e,t,n),o=s>r.first&&Us(r,s-1).stateAfter;return o?o=yi(r.mode,o):o=bi(r.mode),r.iter(s,t,function(n){Es(e,n.text,o);var u=s==t-1||s%5==0||s>=i.viewFrom&&s<i.viewTo;n.stateAfter=u?yi(r.mode,o):null,++s}),n&&(r.frontier=s),o}function Kt(e){return e.lineSpace.offsetTop}function Qt(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function Gt(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=eu(e.measure,Go("pre","x")),n=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,r={left:parseInt(n.paddingLeft),right:parseInt(n.paddingRight)};return!isNaN(r.left)&&!isNaN(r.right)&&(e.cachedPaddingH=r),r}function Yt(e,t,n){var r=e.options.lineWrapping,i=r&&e.display.scroller.clientWidth;if(!t.measure.heights||r&&t.measure.width!=i){var s=t.measure.heights=[];if(r){t.measure.width=i;var o=t.text.firstChild.getClientRects();for(var u=0;u<o.length-1;u++){var a=o[u],f=o[u+1];Math.abs(a.bottom-f.bottom)>2&&s.push((a.bottom+f.top)/2-n.top)}}s.push(n.bottom-n.top)}}function Zt(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var r=0;r<e.rest.length;r++)if(e.rest[r]==t)return{map:e.measure.maps[r],cache:e.measure.caches[r]};for(var r=0;r<e.rest.length;r++)if(Vs(e.rest[r])>n)return{map:e.measure.maps[r],cache:e.measure.caches[r],before:!0}}function en(e,t){t=ts(t);var n=Vs(t),r=e.display.externalMeasured=new qn(e.doc,t,n);r.lineN=n;var i=r.built=Ns(e,r);return r.text=i.pre,eu(e.display.lineMeasure,i.pre),r}function tn(e,t,n,r){return sn(e,rn(e,t),n,r)}function nn(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.display.view[Xn(e,t)];var n=e.display.externalMeasured;if(n&&t>=n.lineN&&t<n.lineN+n.size)return n}function rn(e,t){var n=Vs(t),r=nn(e,n);r&&!r.text?r=null:r&&r.changes&&et(e,r,n,Y(e)),r||(r=en(e,t));var i=Zt(r,t,n);return{line:t,view:r,rect:null,map:i.map,cache:i.cache,before:i.before,hasHeights:!1}}function sn(e,t,n,r,i){t.before&&(n=-1);var s=n+(r||""),o;return t.cache.hasOwnProperty(s)?o=t.cache[s]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(Yt(e,t.view,t.rect),t.hasHeights=!0),o=un(e,t,n,r),o.bogus||(t.cache[s]=o)),{left:o.left,right:o.right,top:i?o.rtop:o.top,bottom:i?o.rbottom:o.bottom}}function un(e,t,n,s){var o=t.map,u,a,f,l;for(var c=0;c<o.length;c+=3){var h=o[c],p=o[c+1];if(n<h)a=0,f=1,l="left";else if(n<p)a=n-h,f=a+1;else if(c==o.length-3||n==p&&o[c+3]>n)f=p-h,a=f-1,n>=p&&(l="right");if(a!=null){u=o[c+2],h==p&&s==(u.insertLeft?"left":"right")&&(l=s);if(s=="left"&&a==0)while(c&&o[c-2]==o[c-3]&&o[c-1].insertLeft)u=o[(c-=3)+2],l="left";if(s=="right"&&a==p-h)while(c<o.length-3&&o[c+3]==o[c+4]&&!o[c+5].insertLeft)u=o[(c+=3)+2],l="right";break}}var d;if(u.nodeType==3){for(var c=0;c<4;c++){while(a&&Qo(t.line.text.charAt(h+a)))--a;while(h+f<p&&Qo(t.line.text.charAt(h+f)))++f;if(r&&i<9&&a==0&&f==p-h)d=u.parentNode.getBoundingClientRect();else if(r&&e.options.lineWrapping){var v=Yo(u,a,f).getClientRects();v.length?d=v[s=="right"?v.length-1:0]:d=on}else d=Yo(u,a,f).getBoundingClientRect()||on;if(d.left||d.right||a==0)break;f=a,a-=1,l="right"}r&&i<11&&(d=an(e.display.measure,d))}else{a>0&&(l=s="right");var v;e.options.lineWrapping&&(v=u.getClientRects()).length>1?d=v[s=="right"?v.length-1:0]:d=u.getBoundingClientRect()}if(r&&i<9&&!a&&(!d||!d.left&&!d.right)){var m=u.parentNode.getClientRects()[0];m?d={left:m.left,right:m.left+Tn(e.display),top:m.top,bottom:m.bottom}:d=on}var g=d.top-t.rect.top,y=d.bottom-t.rect.top,b=(g+y)/2,w=t.view.measure.heights;for(var c=0;c<w.length-1;c++)if(b<w[c])break;var E=c?w[c-1]:0,S=w[c],x={left:(l=="right"?d.right:d.left)-t.rect.left,right:(l=="left"?d.left:d.right)-t.rect.left,top:E,bottom:S};return!d.left&&!d.right&&(x.bogus=!0),e.options.singleCursorHeightPerLine||(x.rtop=g,x.rbottom=y),x}function an(e,t){if(!window.screen||screen.logicalXDPI==null||screen.logicalXDPI==screen.deviceXDPI||!Su(e))return t;var n=screen.logicalXDPI/screen.deviceXDPI,r=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*n,right:t.right*n,top:t.top*r,bottom:t.bottom*r}}function fn(e){if(e.measure){e.measure.cache={},e.measure.heights=null;if(e.rest)for(var t=0;t<e.rest.length;t++)e.measure.caches[t]={}}}function ln(e){e.display.externalMeasure=null,Zo(e.display.lineMeasure);for(var t=0;t<e.display.view.length;t++)fn(e.display.view[t])}function cn(e){ln(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function hn(){return window.pageXOffset||(document.documentElement||document.body).scrollLeft}function pn(){return window.pageYOffset||(document.documentElement||document.body).scrollTop}function dn(e,t,n,r){if(t.widgets)for(var i=0;i<t.widgets.length;++i)if(t.widgets[i].above){var s=fs(t.widgets[i]);n.top+=s,n.bottom+=s}if(r=="line")return n;r||(r="local");var o=Js(t);r=="local"?o+=Kt(e.display):o-=e.display.viewOffset;if(r=="page"||r=="window"){var u=e.display.lineSpace.getBoundingClientRect();o+=u.top+(r=="window"?0:pn());var a=u.left+(r=="window"?0:hn());n.left+=a,n.right+=a}return n.top+=o,n.bottom+=o,n}function vn(e,t,n){if(n=="div")return t;var r=t.left,i=t.top;if(n=="page")r-=hn(),i-=pn();else if(n=="local"||!n){var s=e.display.sizer.getBoundingClientRect();r+=s.left,i+=s.top}var o=e.display.lineSpace.getBoundingClientRect();return{left:r-o.left,top:i-o.top}}function mn(e,t,n,r,i){return r||(r=Us(e.doc,t.line)),dn(e,r,tn(e,r,t.ch,i),n)}function gn(e,t,n,r,i,s){function o(t,o){var u=sn(e,i,t,o?"right":"left",s);return o?u.left=u.right:u.right=u.left,dn(e,r,u,n)}function u(e,t){var n=a[t],r=n.level%2;return e==Nu(n)&&t&&n.level<a[t-1].level?(n=a[--t],e=Cu(n)-(n.level%2?0:1),r=!0):e==Cu(n)&&t<a.length-1&&n.level<a[t+1].level&&(n=a[++t],e=Nu(n)-n.level%2,r=!1),r&&e==n.to&&e>n.from?o(e-1):o(e,r)}r=r||Us(e.doc,t.line),i||(i=rn(e,r));var a=Ks(r),f=t.ch;if(!a)return o(f);var l=Pu(a,f),c=u(f,l);return Du!=null&&(c.other=u(f,Du)),c}function yn(e,t){var n=0,t=St(e.doc,t);e.options.lineWrapping||(n=Tn(e.display)*t.ch);var r=Us(e.doc,t.line),i=Js(r)+Kt(e.display);return{left:n,right:n,top:i,bottom:i+r.height}}function bn(e,t,n,r){var i=ht(e,t);return i.xRel=r,n&&(i.outside=!0),i}function wn(e,t,n){var r=e.doc;n+=e.display.viewOffset;if(n<0)return bn(r.first,0,!0,-1);var i=$s(r,n),s=r.first+r.size-1;if(i>s)return bn(r.first+r.size-1,Us(r,s).text.length,!0,1);t<0&&(t=0);var o=Us(r,i);for(;;){var u=En(e,o,i,t,n),a=Zi(o),f=a&&a.find(0,!0);if(!a||!(u.ch>f.from.ch||u.ch==f.from.ch&&u.xRel>0))return u;i=Vs(o=f.to.line)}}function En(e,t,n,r,i){function f(r){var i=gn(e,ht(n,r),"line",t,a);return o=!0,s>i.bottom?i.left-u:s<i.top?i.left+u:(o=!1,i.left)}var s=i-Js(t),o=!1,u=2*e.display.wrapper.clientWidth,a=rn(e,t),l=Ks(t),c=t.text.length,h=ku(t),p=Lu(t),d=f(h),v=o,m=f(p),g=o;if(r>m)return bn(n,p,g,1);for(;;){if(l?p==h||p==Bu(t,h,1):p-h<=1){var y=r<d||r-d<=m-r?h:p,b=r-(y==h?d:m);while(Qo(t.text.charAt(y)))++y;var w=bn(n,y,y==h?v:g,b<-1?-1:b>1?1:0);return w}var E=Math.ceil(c/2),S=h+E;if(l){S=h;for(var x=0;x<E;++x)S=Bu(t,S,1)}var T=f(S);if(T>r){p=S,m=T;if(g=o)m+=1e3;c=E}else h=S,d=T,v=o,c-=E}}function xn(e){if(e.cachedTextHeight!=null)return e.cachedTextHeight;if(Sn==null){Sn=Go("pre");for(var t=0;t<49;++t)Sn.appendChild(document.createTextNode("x")),Sn.appendChild(Go("br"));Sn.appendChild(document.createTextNode("x"))}eu(e.measure,Sn);var n=Sn.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),Zo(e.measure),n||1}function Tn(e){if(e.cachedCharWidth!=null)return e.cachedCharWidth;var t=Go("span","xxxxxxxxxx"),n=Go("pre",[t]);eu(e.measure,n);var r=t.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function kn(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,id:++Cn},Nn?Nn.ops.push(e.curOp):e.curOp.ownsGroup=Nn={ops:[e.curOp],delayedCallbacks:[]}}function Ln(e){var t=e.delayedCallbacks,n=0;do{for(;n<t.length;n++)t[n]();for(var r=0;r<e.ops.length;r++){var i=e.ops[r];if(i.cursorActivityHandlers)while(i.cursorActivityCalled<i.cursorActivityHandlers.length)i.cursorActivityHandlers[i.cursorActivityCalled++](i.cm)}}while(n<t.length)}function An(e){var t=e.curOp,n=t.ownsGroup;if(!n)return;try{Ln(n)}finally{Nn=null;for(var r=0;r<n.ops.length;r++)n.ops[r].cm.curOp=null;On(n)}}function On(e){var t=e.ops;for(var n=0;n<t.length;n++)Mn(t[n]);for(var n=0;n<t.length;n++)_n(t[n]);for(var n=0;n<t.length;n++)Dn(t[n]);for(var n=0;n<t.length;n++)Pn(t[n]);for(var n=0;n<t.length;n++)Hn(t[n])}function Mn(e){var t=e.cm,n=t.display;e.updateMaxLine&&P(t),e.mustUpdate=e.viewChanged||e.forceUpdate||e.scrollTop!=null||e.scrollToPos&&(e.scrollToPos.from.line<n.viewFrom||e.scrollToPos.to.line>=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new W(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function _n(e){e.updatedDisplay=e.mustUpdate&&X(e.cm,e.update)}function Dn(e){var t=e.cm,n=t.display;e.updatedDisplay&&Q(t),e.barMeasure=j(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=tn(t,n.maxLine,n.maxLine.text.length).left+3,e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo+Lo-n.scroller.clientWidth));if(e.updatedDisplay||e.selectionChanged)e.newSelectionNodes=It(t)}function Pn(e){var t=e.cm;e.adjustWidthTo!=null&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft<t.doc.scrollLeft&&br(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1),e.newSelectionNodes&&qt(t,e.newSelectionNodes),e.updatedDisplay&&J(t,e.barMeasure),(e.updatedDisplay||e.startHeight!=t.doc.height)&&F(t,e.barMeasure),e.selectionChanged&&Wt(t),t.state.focused&&e.updateInput&&Zn(t,e.typing)}function Hn(e){var t=e.cm,n=t.display,r=t.doc;e.adjustWidthTo!=null&&Math.abs(e.barMeasure.scrollWidth-t.display.scroller.scrollWidth)>1&&F(t),e.updatedDisplay&&V(t,e.update),n.wheelStartX!=null&&(e.scrollTop!=null||e.scrollLeft!=null||e.scrollToPos)&&(n.wheelStartX=n.wheelStartY=null);if(e.scrollTop!=null&&(n.scroller.scrollTop!=e.scrollTop||e.forceScroll)){var i=Math.max(0,Math.min(n.scroller.scrollHeight-n.scroller.clientHeight,e.scrollTop));n.scroller.scrollTop=n.scrollbarV.scrollTop=r.scrollTop=i}if(e.scrollLeft!=null&&(n.scroller.scrollLeft!=e.scrollLeft||e.forceScroll)){var o=Math.max(0,Math.min(n.scroller.scrollWidth-n.scroller.clientWidth,e.scrollLeft));n.scroller.scrollLeft=n.scrollbarH.scrollLeft=r.scrollLeft=o,q(t)}if(e.scrollToPos){var u=Yr(t,St(r,e.scrollToPos.from),St(r,e.scrollToPos.to),e.scrollToPos.margin);e.scrollToPos.isCursor&&t.state.focused&&Gr(t,u)}var a=e.maybeHiddenMarkers,f=e.maybeUnhiddenMarkers;if(a)for(var l=0;l<a.length;++l)a[l].lines.length||wo(a[l],"hide");if(f)for(var l=0;l<f.length;++l)f[l].lines.length&&wo(f[l],"unhide");n.wrapper.offsetHeight&&(r.scrollTop=t.display.scroller.scrollTop),e.updatedDisplay&&s&&(t.options.lineWrapping&&K(t,e.barMeasure),e.barMeasure.scrollWidth>e.barMeasure.clientWidth&&e.barMeasure.scrollWidth<e.barMeasure.clientWidth+1&&!B(t)&&F(t)),e.changeObjs&&wo(t,"changes",t,e.changeObjs)}function Bn(e,t){if(e.curOp)return t();kn(e);try{return t()}finally{An(e)}}function jn(e,t){return function(){if(e.curOp)return t.apply(e,arguments);kn(e);try{return t.apply(e,arguments)}finally{An(e)}}}function Fn(e){return function(){if(this.curOp)return e.apply(this,arguments);kn(this);try{return e.apply(this,arguments)}finally{An(this)}}}function In(e){return function(){var t=this.cm;if(!t||t.curOp)return e.apply(this,arguments);kn(t);try{return e.apply(this,arguments)}finally{An(t)}}}function qn(e,t,n){this.line=t,this.rest=ns(t),this.size=this.rest?Vs(Fo(this.rest))-n+1:1,this.node=this.text=null,this.hidden=ss(e,t)}function Rn(e,t,n){var r=[],i;for(var s=t;s<n;s=i){var o=new qn(e.doc,Us(e.doc,s),s);i=s+o.size,r.push(o)}return r}function Un(e,t,n,r){t==null&&(t=e.doc.first),n==null&&(n=e.doc.first+e.doc.size),r||(r=0);var i=e.display;r&&n<i.viewTo&&(i.updateLineNumbers==null||i.updateLineNumbers>t)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0;if(t>=i.viewTo)E&&rs(e.doc,t)<i.viewTo&&Wn(e);else if(n<=i.viewFrom)E&&is(e.doc,n+r)>i.viewFrom?Wn(e):(i.viewFrom+=r,i.viewTo+=r);else if(t<=i.viewFrom&&n>=i.viewTo)Wn(e);else if(t<=i.viewFrom){var s=Vn(e,n,n+r,1);s?(i.view=i.view.slice(s.index),i.viewFrom=s.lineN,i.viewTo+=r):Wn(e)}else if(n>=i.viewTo){var s=Vn(e,t,t,-1);s?(i.view=i.view.slice(0,s.index),i.viewTo=s.lineN):Wn(e)}else{var o=Vn(e,t,t,-1),u=Vn(e,n,n+r,1);o&&u?(i.view=i.view.slice(0,o.index).concat(Rn(e,o.lineN,u.lineN)).concat(i.view.slice(u.index)),i.viewTo+=r):Wn(e)}var a=i.externalMeasured;a&&(n<a.lineN?a.lineN+=r:t<a.lineN+a.size&&(i.externalMeasured=null))}function zn(e,t,n){e.curOp.viewChanged=!0;var r=e.display,i=e.display.externalMeasured;i&&t>=i.lineN&&t<i.lineN+i.size&&(r.externalMeasured=null);if(t<r.viewFrom||t>=r.viewTo)return;var s=r.view[Xn(e,t)];if(s.node==null)return;var o=s.changes||(s.changes=[]);qo(o,n)==-1&&o.push(n)}function Wn(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function Xn(e,t){if(t>=e.display.viewTo)return null;t-=e.display.viewFrom;if(t<0)return null;var n=e.display.view;for(var r=0;r<n.length;r++){t-=n[r].size;if(t<0)return r}}function Vn(e,t,n,r){var i=Xn(e,t),s,o=e.display.view;if(!E||n==e.doc.first+e.doc.size)return{index:i,lineN:n};for(var u=0,a=e.display.viewFrom;u<i;u++)a+=o[u].size;if(a!=t){if(r>0){if(i==o.length-1)return null;s=a+o[i].size-t,i++}else s=a-t;t+=s,n+=s}while(rs(e.doc,n)!=n){if(i==(r<0?0:o.length-1))return null;n+=r*o[i-(r<0?1:0)].size,i+=r}return{index:i,lineN:n}}function $n(e,t,n){var r=e.display,i=r.view;i.length==0||t>=r.viewTo||n<=r.viewFrom?(r.view=Rn(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=Rn(e,t,r.viewFrom).concat(r.view):r.viewFrom<t&&(r.view=r.view.slice(Xn(e,t))),r.viewFrom=t,r.viewTo<n?r.view=r.view.concat(Rn(e,r.viewTo,n)):r.viewTo>n&&(r.view=r.view.slice(0,Xn(e,n)))),r.viewTo=n}function Jn(e){var t=e.display.view,n=0;for(var r=0;r<t.length;r++){var i=t[r];!i.hidden&&(!i.node||i.changes)&&++n}return n}function Kn(e){if(e.display.pollingFast)return;e.display.poll.set(e.options.pollInterval,function(){Yn(e),e.state.focused&&Kn(e)})}function Qn(e){function n(){var r=Yn(e);!r&&!t?(t=!0,e.display.poll.set(60,n)):(e.display.pollingFast=!1,Kn(e))}var t=!1;e.display.pollingFast=!0,e.display.poll.set(20,n)}function Yn(e){var t=e.display.input,n=e.display.prevInput,s=e.doc;if(!e.state.focused||bu(t)&&!n||nr(e)||e.options.disableInput||e.state.keySeq)return!1;e.state.pasteIncoming&&e.state.fakedLastChar&&(t.value=t.value.substring(0,t.value.length-1),e.state.fakedLastChar=!1);var o=t.value;if(o==n&&!e.somethingSelected())return!1;if(r&&i>=9&&e.display.inputHasSelection===o||v&&/[\uf700-\uf7ff]/.test(o))return Zn(e),!1;var u=!e.curOp;u&&kn(e),e.display.shift=!1,o.charCodeAt(0)==8203&&s.sel==e.display.selForContextMenu&&!n&&(n="​");var a=0,f=Math.min(n.length,o.length);while(a<f&&n.charCodeAt(a)==o.charCodeAt(a))++a;var l=o.slice(a),c=yu(l),h=null;e.state.pasteIncoming&&s.sel.ranges.length>1&&(Gn&&Gn.join("\n")==l?h=s.sel.ranges.length%Gn.length==0&&Ro(Gn,yu):c.length==s.sel.ranges.length&&(h=Ro(c,function(e){return[e]})));for(var p=s.sel.ranges.length-1;p>=0;p--){var d=s.sel.ranges[p],m=d.from(),g=d.to();a<n.length?m=ht(m.line,m.ch-(n.length-a)):e.state.overwrite&&d.empty()&&!e.state.pasteIncoming&&(g=ht(g.line,Math.min(Us(s,g.line).text.length,g.ch+Fo(c).length)));var y=e.curOp.updateInput,b={from:m,to:g,text:h?h[p%h.length]:c,origin:e.state.pasteIncoming?"paste":e.state.cutIncoming?"cut":"+input"};Wr(e.doc,b),So(e,"inputRead",e,b);if(l&&!e.state.pasteIncoming&&e.options.electricChars&&e.options.smartIndent&&d.head.ch<100&&(!p||s.sel.ranges[p-1].head.line!=d.head.line)){var w=e.getModeAt(d.head),E=Fr(b);if(w.electricChars){for(var S=0;S<w.electricChars.length;S++)if(l.indexOf(w.electricChars.charAt(S))>-1){ii(e,E.line,"smart");break}}else w.electricInput&&w.electricInput.test(Us(s,E.line).text.slice(0,E.ch))&&ii(e,E.line,"smart")}}return ni(e),e.curOp.updateInput=y,e.curOp.typing=!0,o.length>1e3||o.indexOf("\n")>-1?t.value=e.display.prevInput="":e.display.prevInput=o,u&&An(e),e.state.pasteIncoming=e.state.cutIncoming=!1,!0}function Zn(e,t){var n,s,o=e.doc;if(e.somethingSelected()){e.display.prevInput="";var u=o.sel.primary();n=wu&&(u.to().line-u.from().line>100||(s=e.getSelection()).length>1e3);var a=n?"-":s||e.getSelection();e.display.input.value=a,e.state.focused&&Io(e.display.input),r&&i>=9&&(e.display.inputHasSelection=a)}else t||(e.display.prevInput=e.display.input.value="",r&&i>=9&&(e.display.inputHasSelection=null));e.display.inaccurateSelection=n}function er(e){e.options.readOnly!="nocursor"&&(!d||nu()!=e.display.input)&&e.display.input.focus()}function tr(e){e.state.focused||(er(e),Pr(e))}function nr(e){return e.options.readOnly||e.doc.cantEdit}function rr(e){function n(){e.state.focused&&setTimeout(Wo(er,e),0)}function o(t){To(e,t)||vo(t)}function u(n){if(e.somethingSelected())Gn=e.getSelections(),t.inaccurateSelection&&(t.prevInput="",t.inaccurateSelection=!1,t.input.value=Gn.join("\n"),Io(t.input));else{var r=[],i=[];for(var s=0;s<e.doc.sel.ranges.length;s++){var o=e.doc.sel.ranges[s].head.line,u={anchor:ht(o,0),head:ht(o+1,0)};i.push(u),r.push(e.getRange(u.anchor,u.head))}n.type=="cut"?e.setSelections(i,null,Oo):(t.prevInput="",t.input.value=r.join("\n"),Io(t.input)),Gn=r}n.type=="cut"&&(e.state.cutIncoming=!0)}var t=e.display;yo(t.scroller,"mousedown",jn(e,ur)),r&&i<11?yo(t.scroller,"dblclick",jn(e,function(t){if(To(e,t))return;var n=or(e,t);if(!n||dr(e,t)||sr(e.display,t))return;co(t);var r=e.findWordAt(n);kt(e.doc,r.anchor,r.head)})):yo(t.scroller,"dblclick",function(t){To(e,t)||co(t)}),yo(t.lineSpace,"selectstart",function(e){sr(t,e)||co(e)}),b||yo(t.scroller,"contextmenu",function(t){Br(e,t)}),yo(t.scroller,"scroll",function(){t.scroller.clientHeight&&(yr(e,t.scroller.scrollTop),br(e,t.scroller.scrollLeft,!0),wo(e,"scroll",e))}),yo(t.scrollbarV,"scroll",function(){t.scroller.clientHeight&&yr(e,t.scrollbarV.scrollTop)}),yo(t.scrollbarH,"scroll",function(){t.scroller.clientHeight&&br(e,t.scrollbarH.scrollLeft)}),yo(t.scroller,"mousewheel",function(t){Sr(e,t)}),yo(t.scroller,"DOMMouseScroll",function(t){Sr(e,t)}),yo(t.scrollbarH,"mousedown",n),yo(t.scrollbarV,"mousedown",n),yo(t.wrapper,"scroll",function(){t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),yo(t.input,"keyup",function(t){_r.call(e,t)}),yo(t.input,"input",function(){r&&i>=9&&e.display.inputHasSelection&&(e.display.inputHasSelection=null),Qn(e)}),yo(t.input,"keydown",jn(e,Or)),yo(t.input,"keypress",jn(e,Dr)),yo(t.input,"focus",Wo(Pr,e)),yo(t.input,"blur",Wo(Hr,e)),e.options.dragDrop&&(yo(t.scroller,"dragstart",function(t){gr(e,t)}),yo(t.scroller,"dragenter",o),yo(t.scroller,"dragover",o),yo(t.scroller,"drop",jn(e,mr))),yo(t.scroller,"paste",function(n){if(sr(t,n))return;e.state.pasteIncoming=!0,er(e),Qn(e)}),yo(t.input,"paste",function(){if(s&&!e.state.fakedLastChar&&!(new Date-e.state.lastMiddleDown<200)){var n=t.input.selectionStart,r=t.input.selectionEnd;t.input.value+="$",t.input.selectionEnd=r,t.input.selectionStart=n,e.state.fakedLastChar=!0}e.state.pasteIncoming=!0,Qn(e)}),yo(t.input,"cut",u),yo(t.input,"copy",u),l&&yo(t.sizer,"mouseup",function(){nu()==t.input&&t.input.blur(),er(e)})}function ir(e){var t=e.display;if(t.lastWrapHeight==t.wrapper.clientHeight&&t.lastWrapWidth==t.wrapper.clientWidth)return;t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,e.setSize()}function sr(e,t){for(var n=mo(t);n!=e.wrapper;n=n.parentNode)if(!n||n.ignoreEvents||n.parentNode==e.sizer&&n!=e.mover)return!0}function or(e,t,n,r){var i=e.display;if(!n){var s=mo(t);if(s==i.scrollbarH||s==i.scrollbarV||s==i.scrollbarFiller||s==i.gutterFiller)return null}var o,u,a=i.lineSpace.getBoundingClientRect();try{o=t.clientX-a.left,u=t.clientY-a.top}catch(t){return null}var f=wn(e,o,u),l;if(r&&f.xRel==1&&(l=Us(e.doc,f.line).text).length==f.ch){var c=Po(l,l.length,e.options.tabSize)-l.length;f=ht(f.line,Math.max(0,Math.round((o-Gt(e.display).left)/Tn(e.display))-c))}return f}function ur(e){if(To(this,e))return;var t=this,n=t.display;n.shift=e.shiftKey;if(sr(n,e)){s||(n.scroller.draggable=!1,setTimeout(function(){n.scroller.draggable=!0},100));return}if(dr(t,e))return;var r=or(t,e);window.focus();switch(go(e)){case 1:r?lr(t,e,r):mo(e)==n.scroller&&co(e);break;case 2:s&&(t.state.lastMiddleDown=+(new Date)),r&&kt(t.doc,r),setTimeout(Wo(er,t),20),co(e);break;case 3:b&&Br(t,e)}}function lr(e,t,n){setTimeout(Wo(tr,e),0);var r=+(new Date),i;fr&&fr.time>r-400&&pt(fr.pos,n)==0?i="triple":ar&&ar.time>r-400&&pt(ar.pos,n)==0?(i="double",fr={time:r,pos:n}):(i="single",ar={time:r,pos:n});var s=e.doc.sel,o=v?t.metaKey:t.ctrlKey;e.options.dragDrop&&cu&&!nr(e)&&i=="single"&&s.contains(n)>-1&&s.somethingSelected()?cr(e,t,n,o):hr(e,t,n,i,o)}function cr(e,t,n,o){var u=e.display,a=jn(e,function(f){s&&(u.scroller.draggable=!1),e.state.draggingText=!1,bo(document,"mouseup",a),bo(u.scroller,"drop",a),Math.abs(t.clientX-f.clientX)+Math.abs(t.clientY-f.clientY)<10&&(co(f),o||kt(e.doc,n),er(e),r&&i==9&&setTimeout(function(){document.body.focus(),er(e)},20))});s&&(u.scroller.draggable=!0),e.state.draggingText=a,u.scroller.dragDrop&&u.scroller.dragDrop(),yo(document,"mouseup",a),yo(u.scroller,"drop",a)}function hr(e,t,n,r,i){function p(t){if(pt(h,t)==0)return;h=t;if(r=="rect"){var i=[],s=e.options.tabSize,l=Po(Us(o,n.line).text,n.ch,s),c=Po(Us(o,t.line).text,t.ch,s),p=Math.min(l,c),d=Math.max(l,c);for(var v=Math.min(n.line,t.line),m=Math.min(e.lastLine(),Math.max(n.line,t.line));v<=m;v++){var g=Us(o,v).text,y=Ho(g,p,s);p==d?i.push(new yt(ht(v,y),ht(v,y))):g.length>y&&i.push(new yt(ht(v,y),ht(v,Ho(g,d,s))))}i.length||i.push(new yt(n,n)),Dt(o,bt(f.ranges.slice(0,a).concat(i),a),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b=u,w=b.anchor,E=t;if(r!="single"){if(r=="double")var S=e.findWordAt(t);else var S=new yt(ht(t.line,0),St(o,ht(t.line+1,0)));pt(S.anchor,w)>0?(E=S.head,w=mt(b.from(),S.anchor)):(E=S.anchor,w=vt(b.to(),S.head))}var i=f.ranges.slice(0);i[a]=new yt(St(o,w),E),Dt(o,bt(i,a),Mo)}}function m(t){var n=++v,i=or(e,t,!0,r=="rect");if(!i)return;if(pt(i,h)!=0){tr(e),p(i);var u=I(s,o);(i.line>=u.to||i.line<u.from)&&setTimeout(jn(e,function(){v==n&&m(t)}),150)}else{var a=t.clientY<d.top?-20:t.clientY>d.bottom?20:0;a&&setTimeout(jn(e,function(){if(v!=n)return;s.scroller.scrollTop+=a,m(t)}),50)}}function g(t){v=Infinity,co(t),er(e),bo(document,"mousemove",y),bo(document,"mouseup",b),o.history.lastSelOrigin=null}var s=e.display,o=e.doc;co(t);var u,a,f=o.sel;i&&!t.shiftKey?(a=o.sel.contains(n),a>-1?u=o.sel.ranges[a]:u=new yt(n,n)):u=o.sel.primary();if(t.altKey)r="rect",i||(u=new yt(n,n)),n=or(e,t,!0,!0),a=-1;else if(r=="double"){var l=e.findWordAt(n);e.display.shift||o.extend?u=Ct(o,u,l.anchor,l.head):u=l}else if(r=="triple"){var c=new yt(ht(n.line,0),St(o,ht(n.line+1,0)));e.display.shift||o.extend?u=Ct(o,u,c.anchor,c.head):u=c}else u=Ct(o,u,n);i?a>-1?At(o,a,u,Mo):(a=o.sel.ranges.length,Dt(o,bt(o.sel.ranges.concat([u]),a),{scroll:!1,origin:"*mouse"})):(a=0,Dt(o,new gt([u],0),Mo),f=o.sel);var h=n,d=s.wrapper.getBoundingClientRect(),v=0,y=jn(e,function(e){go(e)?m(e):g(e)}),b=jn(e,g);yo(document,"mousemove",y),yo(document,"mouseup",b)}function pr(e,t,n,r,i){try{var s=t.clientX,o=t.clientY}catch(t){return!1}if(s>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&co(t);var u=e.display,a=u.lineDiv.getBoundingClientRect();if(o>a.bottom||!Co(e,n))return po(t);o-=a.top-u.viewOffset;for(var f=0;f<e.options.gutters.length;++f){var l=u.gutters.childNodes[f];if(l&&l.getBoundingClientRect().right>=s){var c=$s(e.doc,o),h=e.options.gutters[f];return i(e,n,e,c,h,t),po(t)}}}function dr(e,t){return pr(e,t,"gutterClick",!0,So)}function mr(e){var t=this;if(To(t,e)||sr(t.display,e))return;co(e),r&&(vr=+(new Date));var n=or(t,e,!0),i=e.dataTransfer.files;if(!n||nr(t))return;if(i&&i.length&&window.FileReader&&window.File){var s=i.length,o=Array(s),u=0,a=function(e,r){var i=new FileReader;i.onload=jn(t,function(){o[r]=i.result;if(++u==s){n=St(t.doc,n);var e={from:n,to:n,text:yu(o.join("\n")),origin:"paste"};Wr(t.doc,e),_t(t.doc,wt(n,Fr(e)))}}),i.readAsText(e)};for(var f=0;f<s;++f)a(i[f],f)}else{if(t.state.draggingText&&t.doc.sel.contains(n)>-1){t.state.draggingText(e),setTimeout(Wo(er,t),20);return}try{var o=e.dataTransfer.getData("Text");if(o){if(t.state.draggingText&&(v?!e.metaKey:!e.ctrlKey))var l=t.listSelections();Pt(t.doc,wt(n,n));if(l)for(var f=0;f<l.length;++f)Qr(t.doc,"",l[f].anchor,l[f].head,"drag");t.replaceSelection(o,"around","paste"),er(t)}}catch(e){}}}function gr(e,t){if(r&&(!e.state.draggingText||+(new Date)-vr<100)){vo(t);return}if(To(e,t)||sr(e.display,t))return;t.dataTransfer.setData("Text",e.getSelection());if(t.dataTransfer.setDragImage&&!f){var n=Go("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a&&(n.width=n.height=1,e.display.wrapper.appendChild(n),n._top=n.offsetTop),t.dataTransfer.setDragImage(n,0,0),a&&n.parentNode.removeChild(n)}}function yr(t,n){if(Math.abs(t.doc.scrollTop-n)<2)return;t.doc.scrollTop=n,e||$(t,{top:n}),t.display.scroller.scrollTop!=n&&(t.display.scroller.scrollTop=n),t.display.scrollbarV.scrollTop!=n&&(t.display.scrollbarV.scrollTop=n),e&&$(t),Xt(t,100)}function br(e,t,n){if(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)return;t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),e.doc.scrollLeft=t,q(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbarH.scrollLeft!=t&&(e.display.scrollbarH.scrollLeft=t)}function Sr(t,n){var r=n.wheelDeltaX,i=n.wheelDeltaY;r==null&&n.detail&&n.axis==n.HORIZONTAL_AXIS&&(r=n.detail),i==null&&n.detail&&n.axis==n.VERTICAL_AXIS?i=n.detail:i==null&&(i=n.wheelDelta);var o=t.display,u=o.scroller;if(!(r&&u.scrollWidth>u.clientWidth||i&&u.scrollHeight>u.clientHeight))return;if(i&&v&&s)e:for(var f=n.target,l=o.view;f!=u;f=f.parentNode)for(var c=0;c<l.length;c++)if(l[c].node==f){t.display.currentWheelTarget=f;break e}if(r&&!e&&!a&&Er!=null){i&&yr(t,Math.max(0,Math.min(u.scrollTop+i*Er,u.scrollHeight-u.clientHeight))),br(t,Math.max(0,Math.min(u.scrollLeft+r*Er,u.scrollWidth-u.clientWidth))),co(n),o.wheelStartX=null;return}if(i&&Er!=null){var h=i*Er,p=t.doc.scrollTop,d=p+o.wrapper.clientHeight;h<0?p=Math.max(0,p+h-50):d=Math.min(t.doc.height,d+h+50),$(t,{top:p,bottom:d})}wr<20&&(o.wheelStartX==null?(o.wheelStartX=u.scrollLeft,o.wheelStartY=u.scrollTop,o.wheelDX=r,o.wheelDY=i,setTimeout(function(){if(o.wheelStartX==null)return;var e=u.scrollLeft-o.wheelStartX,t=u.scrollTop-o.wheelStartY,n=t&&o.wheelDY&&t/o.wheelDY||e&&o.wheelDX&&e/o.wheelDX;o.wheelStartX=o.wheelStartY=null;if(!n)return;Er=(Er*wr+n)/(wr+1),++wr},200)):(o.wheelDX+=r,o.wheelDY+=i))}function xr(e,t,n){if(typeof t=="string"){t=wi[t];if(!t)return!1}e.display.pollingFast&&Yn(e)&&(e.display.pollingFast=!1);var r=e.display.shift,i=!1;try{nr(e)&&(e.state.suppressEdits=!0),n&&(e.display.shift=!1),i=t(e)!=Ao}finally{e.display.shift=r,e.state.suppressEdits=!1}return i}function Tr(e,t,n){for(var r=0;r<e.state.keyMaps.length;r++){var i=xi(t,e.state.keyMaps[r],n);if(i)return i}return e.options.extraKeys&&xi(t,e.options.extraKeys,n)||xi(t,e.options.keyMap,n)}function Cr(e,t,n,r){var i=e.state.keySeq;if(i){if(Ti(t))return"handled";Nr.set(50,function(){e.state.keySeq==i&&(e.state.keySeq=null,Zn(e))}),t=i+" "+t}var s=Tr(e,t,r);s=="multi"&&(e.state.keySeq=t),s=="handled"&&So(e,"keyHandled",e,t,n);if(s=="handled"||s=="multi")co(n),Wt(e);return i&&!s&&/\'$/.test(t)?(co(n),!0):!!s}function kr(e,t){var n=Ni(t,!0);return n?t.shiftKey&&!e.state.keySeq?Cr(e,"Shift-"+n,t,function(t){return xr(e,t,!0)})||Cr(e,n,t,function(t){if(typeof t=="string"?/^go[A-Z]/.test(t):t.motion)return xr(e,t)}):Cr(e,n,t,function(t){return xr(e,t)}):!1}function Lr(e,t,n){return Cr(e,"'"+n+"'",t,function(t){return xr(e,t,!0)})}function Or(e){var t=this;tr(t);if(To(t,e))return;r&&i<11&&e.keyCode==27&&(e.returnValue=!1);var n=e.keyCode;t.display.shift=n==16||e.shiftKey;var s=kr(t,e);a&&(Ar=s?n:null,!s&&n==88&&!wu&&(v?e.metaKey:e.ctrlKey)&&t.replaceSelection("",null,"cut")),n==18&&!/\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className)&&Mr(t)}function Mr(e){function n(e){if(e.keyCode==18||!e.altKey)iu(t,"CodeMirror-crosshair"),bo(document,"keyup",n),bo(document,"mouseover",n)}var t=e.display.lineDiv;su(t,"CodeMirror-crosshair"),yo(document,"keyup",n),yo(document,"mouseover",n)}function _r(e){e.keyCode==16&&(this.doc.sel.shift=!1),To(this,e)}function Dr(e){var t=this;if(To(t,e)||e.ctrlKey&&!e.altKey||v&&e.metaKey)return;var n=e.keyCode,s=e.charCode;if(a&&n==Ar){Ar=null,co(e);return}if((a&&(!e.which||e.which<10)||l)&&kr(t,e))return;var o=String.fromCharCode(s==null?n:s);if(Lr(t,e,o))return;r&&i>=9&&(t.display.inputHasSelection=null),Qn(t)}function Pr(e){if(e.options.readOnly=="nocursor")return;e.state.focused||(wo(e,"focus",e),e.state.focused=!0,su(e.display.wrapper,"CodeMirror-focused"),!e.curOp&&e.display.selForContextMenu!=e.doc.sel&&(Zn(e),s&&setTimeout(Wo(Zn,e,!0),0))),Kn(e),Wt(e)}function Hr(e){e.state.focused&&(wo(e,"blur",e),e.state.focused=!1,iu(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150)}function Br(e,t){function h(){if(n.input.selectionStart!=null){var t=e.somethingSelected(),r=n.input.value="​"+(t?n.input.value:"");n.prevInput=t?"":"​",n.input.selectionStart=1,n.input.selectionEnd=r.length,n.selForContextMenu=e.doc.sel}}function p(){n.inputDiv.style.position="relative",n.input.style.cssText=l,r&&i<9&&(n.scrollbarV.scrollTop=n.scroller.scrollTop=u),Kn(e);if(n.input.selectionStart!=null){(!r||r&&i<9)&&h();var t=0,s=function(){n.selForContextMenu==e.doc.sel&&n.input.selectionStart==0?jn(e,wi.selectAll)(e):t++<10?n.detectingSelectAll=setTimeout(s,500):Zn(e)};n.detectingSelectAll=setTimeout(s,200)}}if(To(e,t,"contextmenu"))return;var n=e.display;if(sr(n,t)||jr(e,t))return;var o=or(e,t),u=n.scroller.scrollTop;if(!o||a)return;var f=e.options.resetSelectionOnContextMenu;f&&e.doc.sel.contains(o)==-1&&jn(e,Dt)(e.doc,wt(o),Oo);var l=n.input.style.cssText;n.inputDiv.style.position="absolute",n.input.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(t.clientY-5)+"px; left: "+(t.clientX-5)+"px; z-index: 1000; background: "+(r?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";if(s)var c=window.scrollY;er(e),s&&window.scrollTo(null,c),Zn(e),e.somethingSelected()||(n.input.value=n.prevInput=" "),n.selForContextMenu=e.doc.sel,clearTimeout(n.detectingSelectAll),r&&i>=9&&h();if(b){vo(t);var d=function(){bo(window,"mouseup",d),setTimeout(p,20)};yo(window,"mouseup",d)}else setTimeout(p,50)}function jr(e,t){return Co(e,"gutterContextMenu")?pr(e,t,"gutterContextMenu",!1,wo):!1}function Ir(e,t){if(pt(e,t.from)<0)return e;if(pt(e,t.to)<=0)return Fr(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=Fr(t).ch-t.to.ch),ht(n,r)}function qr(e,t){var n=[];for(var r=0;r<e.sel.ranges.length;r++){var i=e.sel.ranges[r];n.push(new yt(Ir(i.anchor,t),Ir(i.head,t)))}return bt(n,e.sel.primIndex)}function Rr(e,t,n){return e.line==t.line?ht(n.line,e.ch-t.ch+n.ch):ht(n.line+(e.line-t.line),e.ch)}function Ur(e,t,n){var r=[],i=ht(e.first,0),s=i;for(var o=0;o<t.length;o++){var u=t[o],a=Rr(u.from,i,s),f=Rr(Fr(u),i,s);i=u.to,s=f;if(n=="around"){var l=e.sel.ranges[o],c=pt(l.head,l.anchor)<0;r[o]=new yt(c?f:a,c?a:f)}else r[o]=new yt(a,a)}return new gt(r,e.sel.primIndex)}function zr(e,t,n){var r={canceled:!1,from:t.from,to:t.to,text:t.text,origin:t.origin,cancel:function(){this.canceled=!0}};return n&&(r.update=function(t,n,r,i){t&&(this.from=St(e,t)),n&&(this.to=St(e,n)),r&&(this.text=r),i!==undefined&&(this.origin=i)}),wo(e,"beforeChange",e,r),e.cm&&wo(e.cm,"beforeChange",e.cm,r),r.canceled?null:{from:r.from,to:r.to,text:r.text,origin:r.origin}}function Wr(e,t,n){if(e.cm){if(!e.cm.curOp)return jn(e.cm,Wr)(e,t,n);if(e.cm.state.suppressEdits)return}if(Co(e,"beforeChange")||e.cm&&Co(e.cm,"beforeChange")){t=zr(e,t,!0);if(!t)return}var r=w&&!n&&Xi(e,t.from,t.to);if(r)for(var i=r.length-1;i>=0;--i)Xr(e,{from:r[i].from,to:r[i].to,text:i?[""]:t.text});else Xr(e,t)}function Xr(e,t){if(t.text.length==1&&t.text[0]==""&&pt(t.from,t.to)==0)return;var n=qr(e,t);eo(e,t,n,e.cm?e.cm.curOp.id:NaN),Jr(e,t,n,Ui(e,t));var r=[];qs(e,function(e,n){!n&&qo(r,e.history)==-1&&(lo(e.history,t),r.push(e.history)),Jr(e,t,null,Ui(e,t))})}function Vr(e,t,n){if(e.cm&&e.cm.state.suppressEdits)return;var r=e.history,i,s=e.sel,o=t=="undo"?r.done:r.undone,u=t=="undo"?r.undone:r.done;for(var a=0;a<o.length;a++){i=o[a];if(n?i.ranges&&!i.equals(e.sel):!i.ranges)break}if(a==o.length)return;r.lastOrigin=r.lastSelOrigin=null;for(;;){i=o.pop();if(!i.ranges)break;ro(i,u);if(n&&!i.equals(e.sel)){Dt(e,i,{clearRedo:!1});return}s=i}var f=[];ro(s,u),u.push({changes:f,generation:r.generation}),r.generation=i.generation||++r.maxGeneration;var l=Co(e,"beforeChange")||e.cm&&Co(e.cm,"beforeChange");for(var a=i.changes.length-1;a>=0;--a){var c=i.changes[a];c.origin=t;if(l&&!zr(e,c,!1)){o.length=0;return}f.push(Gs(e,c));var h=a?qr(e,c):Fo(o);Jr(e,c,h,Wi(e,c)),!a&&e.cm&&e.cm.scrollIntoView({from:c.from,to:Fr(c)});var p=[];qs(e,function(e,t){!t&&qo(p,e.history)==-1&&(lo(e.history,c),p.push(e.history)),Jr(e,c,null,Wi(e,c))})}}function $r(e,t){if(t==0)return;e.first+=t,e.sel=new gt(Ro(e.sel.ranges,function(e){return new yt(ht(e.anchor.line+t,e.anchor.ch),ht(e.head.line+t,e.head.ch))}),e.sel.primIndex);if(e.cm){Un(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;r<n.viewTo;r++)zn(e.cm,r,"gutter")}}function Jr(e,t,n,r){if(e.cm&&!e.cm.curOp)return jn(e.cm,Jr)(e,t,n,r);if(t.to.line<e.first){$r(e,t.text.length-1-(t.to.line-t.from.line));return}if(t.from.line>e.lastLine())return;if(t.from.line<e.first){var i=t.text.length-1-(e.first-t.from.line);$r(e,i),t={from:ht(e.first,0),to:ht(t.to.line+i,t.to.ch),text:[Fo(t.text)],origin:t.origin}}var s=e.lastLine();t.to.line>s&&(t={from:t.from,to:ht(s,Us(e,s).text.length),text:[t.text[0]],origin:t.origin}),t.removed=zs(e,t.from,t.to),n||(n=qr(e,t)),e.cm?Kr(e.cm,t,r):Ds(e,t,r),Pt(e,n,Oo)}function Kr(e,t,n){var r=e.doc,i=e.display,s=t.from,o=t.to,u=!1,a=s.line;e.options.lineWrapping||(a=Vs(ts(Us(r,s.line))),r.iter(a,o.line+1,function(e){if(e==i.maxLine)return u=!0,!0})),r.sel.contains(t.from,t.to)>-1&&No(e),Ds(r,t,n,k(e)),e.options.lineWrapping||(r.iter(a,s.line+t.text.length,function(e){var t=D(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,u=!1)}),u&&(e.curOp.updateMaxLine=!0)),r.frontier=Math.min(r.frontier,s.line),Xt(e,400);var f=t.text.length-(o.line-s.line)-1;s.line==o.line&&t.text.length==1&&!_s(e.doc,t)?zn(e,s.line,"text"):Un(e,s.line,o.line+1,f);var l=Co(e,"changes"),c=Co(e,"change");if(c||l){var h={from:s,to:o,text:t.text,removed:t.removed,origin:t.origin};c&&So(e,"change",e,h),l&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(h)}e.display.selForContextMenu=null}function Qr(e,t,n,r,i){r||(r=n);if(pt(r,n)<0){var s=r;r=n,n=s}typeof t=="string"&&(t=yu(t)),Wr(e,{from:n,to:r,text:t,origin:i})}function Gr(e,t){if(To(e,"scrollCursorIntoView"))return;var n=e.display,r=n.sizer.getBoundingClientRect(),i=null;t.top+r.top<0?i=!0:t.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1);if(i!=null&&!h){var s=Go("div","​",null,"position: absolute; top: "+(t.top-n.viewOffset-Kt(e.display))+"px; height: "+(t.bottom-t.top+Lo)+"px; left: "+t.left+"px; width: 2px;");e.display.lineSpace.appendChild(s),s.scrollIntoView(i),e.display.lineSpace.removeChild(s)}}function Yr(e,t,n,r){r==null&&(r=0);for(var i=0;i<5;i++){var s=!1,o=gn(e,t),u=!n||n==t?o:gn(e,n),a=ei(e,Math.min(o.left,u.left),Math.min(o.top,u.top)-r,Math.max(o.left,u.left),Math.max(o.bottom,u.bottom)+r),f=e.doc.scrollTop,l=e.doc.scrollLeft;a.scrollTop!=null&&(yr(e,a.scrollTop),Math.abs(e.doc.scrollTop-f)>1&&(s=!0)),a.scrollLeft!=null&&(br(e,a.scrollLeft),Math.abs(e.doc.scrollLeft-l)>1&&(s=!0));if(!s)return o}}function Zr(e,t,n,r,i){var s=ei(e,t,n,r,i);s.scrollTop!=null&&yr(e,s.scrollTop),s.scrollLeft!=null&&br(e,s.scrollLeft)}function ei(e,t,n,r,i){var s=e.display,o=xn(e.display);n<0&&(n=0);var u=e.curOp&&e.curOp.scrollTop!=null?e.curOp.scrollTop:s.scroller.scrollTop,a=s.scroller.clientHeight-Lo,f={};i-n>a&&(i=n+a);var l=e.doc.height+Qt(s),c=n<o,h=i>l-o;if(n<u)f.scrollTop=c?0:n;else if(i>u+a){var p=Math.min(n,(h?l:i)-a);p!=u&&(f.scrollTop=p)}var d=e.curOp&&e.curOp.scrollLeft!=null?e.curOp.scrollLeft:s.scroller.scrollLeft,v=s.scroller.clientWidth-Lo-s.gutters.offsetWidth,m=r-t>v;return m&&(r=t+v),t<10?f.scrollLeft=0:t<d?f.scrollLeft=Math.max(0,t-(m?0:10)):r>v+d-3&&(f.scrollLeft=r+(m?0:10)-v),f}function ti(e,t,n){(t!=null||n!=null)&&ri(e),t!=null&&(e.curOp.scrollLeft=(e.curOp.scrollLeft==null?e.doc.scrollLeft:e.curOp.scrollLeft)+t),n!=null&&(e.curOp.scrollTop=(e.curOp.scrollTop==null?e.doc.scrollTop:e.curOp.scrollTop)+n)}function ni(e){ri(e);var t=e.getCursor(),n=t,r=t;e.options.lineWrapping||(n=t.ch?ht(t.line,t.ch-1):t,r=ht(t.line,t.ch+1)),e.curOp.scrollToPos={from:n,to:r,margin:e.options.cursorScrollMargin,isCursor:!0}}function ri(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;var n=yn(e,t.from),r=yn(e,t.to),i=ei(e,Math.min(n.left,r.left),Math.min(n.top,r.top)-t.margin,Math.max(n.right,r.right),Math.max(n.bottom,r.bottom)+t.margin);e.scrollTo(i.scrollLeft,i.scrollTop)}}function ii(e,t,n,r){var i=e.doc,s;n==null&&(n="add"),n=="smart"&&(i.mode.indent?s=Jt(e,t):n="prev");var o=e.options.tabSize,u=Us(i,t),a=Po(u.text,null,o);u.stateAfter&&(u.stateAfter=null);var f=u.text.match(/^\s*/)[0],l;if(!r&&!/\S/.test(u.text))l=0,n="not";else if(n=="smart"){l=i.mode.indent(s,u.text.slice(f.length),u.text);if(l==Ao||l>150){if(!r)return;n="prev"}}n=="prev"?t>i.first?l=Po(Us(i,t-1).text,null,o):l=0:n=="add"?l=a+e.options.indentUnit:n=="subtract"?l=a-e.options.indentUnit:typeof n=="number"&&(l=a+n),l=Math.max(0,l);var c="",h=0;if(e.options.indentWithTabs)for(var p=Math.floor(l/o);p;--p)h+=o,c+="	";h<l&&(c+=jo(l-h));if(c!=f)Qr(i,c,ht(t,0),ht(t,f.length),"+input");else for(var p=0;p<i.sel.ranges.length;p++){var d=i.sel.ranges[p];if(d.head.line==t&&d.head.ch<f.length){var h=ht(t,f.length);At(i,p,new yt(h,h));break}}u.stateAfter=null}function si(e,t,n,r){var i=t,s=t;return typeof t=="number"?s=Us(e,Et(e,t)):i=Vs(t),i==null?null:(r(s,i)&&e.cm&&zn(e.cm,i,n),s)}function oi(e,t){var n=e.doc.sel.ranges,r=[];for(var i=0;i<n.length;i++){var s=t(n[i]);while(r.length&&pt(s.from,Fo(r).to)<=0){var o=r.pop();if(pt(o.from,s.from)<0){s.from=o.from;break}}r.push(s)}Bn(e,function(){for(var t=r.length-1;t>=0;t--)Qr(e.doc,"",r[t].from,r[t].to,"+delete");ni(e)})}function ui(e,t,n,r,i){function l(){var t=s+n;return t<e.first||t>=e.first+e.size?f=!1:(s=t,a=Us(e,t))}function c(e){var t=(i?Bu:ju)(a,o,n,!0);if(t==null){if(!!e||!l())return f=!1;i?o=(n<0?Lu:ku)(a):o=n<0?a.text.length:0}else o=t;return!0}var s=t.line,o=t.ch,u=n,a=Us(e,s),f=!0;if(r=="char")c();else if(r=="column")c(!0);else if(r=="word"||r=="group"){var h=null,p=r=="group",d=e.cm&&e.cm.getHelper(t,"wordChars");for(var v=!0;;v=!1){if(n<0&&!c(!v))break;var m=a.text.charAt(o)||"\n",g=$o(m,d)?"w":p&&m=="\n"?"n":!p||/\s/.test(m)?null:"p";p&&!v&&!g&&(g="s");if(h&&h!=g){n<0&&(n=1,c());break}g&&(h=g);if(n>0&&!c(!v))break}}var y=Ft(e,ht(s,o),u,!0);return f||(y.hitSide=!0),y}function ai(e,t,n,r){var i=e.doc,s=t.left,o;if(r=="page"){var u=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);o=t.top+n*(u-(n<0?1.5:.5)*xn(e.display))}else r=="line"&&(o=n>0?t.bottom+3:t.top-3);for(;;){var a=wn(e,s,o);if(!a.outside)break;if(n<0?o<=0:o>=i.height){a.hitSide=!0;break}o+=n*5}return a}function ci(e,t,n,r){S.defaults[e]=t,n&&(li[e]=r?function(e,t,r){r!=hi&&n(e,t,r)}:n)}function Si(e){var t=e.split(/-(?!$)/),e=t[t.length-1],n,r,i,s;for(var o=0;o<t.length-1;o++){var u=t[o];if(/^(cmd|meta|m)$/i.test(u))s=!0;else if(/^a(lt)?$/i.test(u))n=!0;else if(/^(c|ctrl|control)$/i.test(u))r=!0;else{if(!/^s(hift)$/i.test(u))throw new Error("Unrecognized modifier name: "+u);i=!0}}return n&&(e="Alt-"+e),r&&(e="Ctrl-"+e),s&&(e="Cmd-"+e),i&&(e="Shift-"+e),e}function Ci(e){return typeof e=="string"?Ei[e]:e}function Oi(e,t,n,r,i){if(r&&r.shared)return _i(e,t,n,r,i);if(e.cm&&!e.cm.curOp)return jn(e.cm,Oi)(e,t,n,r,i);var s=new Li(e,i),o=pt(t,n);r&&zo(r,s,!1);if(o>0||o==0&&s.clearWhenEmpty!==!1)return s;s.replacedWith&&(s.collapsed=!0,s.widgetNode=Go("span",[s.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||(s.widgetNode.ignoreEvents=!0),r.insertLeft&&(s.widgetNode.insertLeft=!0));if(s.collapsed){if(es(e,t.line,t,n,s)||t.line!=n.line&&es(e,n.line,t,n,s))throw new Error("Inserting collapsed marker partially overlapping an existing one");E=!0}s.addToHistory&&eo(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var u=t.line,a=e.cm,f;e.iter(u,n.line+1,function(e){a&&s.collapsed&&!a.options.lineWrapping&&ts(e)==a.display.maxLine&&(f=!0),s.collapsed&&u!=t.line&&Xs(e,0),Ii(e,new Bi(s,u==t.line?t.ch:null,u==n.line?n.ch:null)),++u}),s.collapsed&&e.iter(t.line,n.line+1,function(t){ss(e,t)&&Xs(t,0)}),s.clearOnEnter&&yo(s,"beforeCursorEnter",function(){s.clear()}),s.readOnly&&(w=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),s.collapsed&&(s.id=++Ai,s.atomic=!0);if(a){f&&(a.curOp.updateMaxLine=!0);if(s.collapsed)Un(a,t.line,n.line+1);else if(s.className||s.title||s.startStyle||s.endStyle)for(var l=t.line;l<=n.line;l++)zn(a,l,"text");s.atomic&&Bt(a.doc),So(a,"markerAdded",a,s)}return s}function _i(e,t,n,r,i){r=zo(r),r.shared=!1;var s=[Oi(e,t,n,r,i)],o=s[0],u=r.widgetNode;return qs(e,function(e){u&&(r.widgetNode=u.cloneNode(!0)),s.push(Oi(e,St(e,t),St(e,n),r,i));for(var a=0;a<e.linked.length;++a)if(e.linked[a].isParent)return;o=Fo(s)}),new Mi(s,o)}function Di(e){return e.findMarks(ht(e.first,0),e.clipPos(ht(e.lastLine())),function(e){return e.parent})}function Pi(e,t){for(var n=0;n<t.length;n++){var r=t[n],i=r.find(),s=e.clipPos(i.from),o=e.clipPos(i.to);if(pt(s,o)){var u=Oi(e,s,o,r.primary,r.primary.type);r.markers.push(u),u.parent=r}}}function Hi(e){for(var t=0;t<e.length;t++){var n=e[t],r=[n.primary.doc];qs(n.primary.doc,function(e){r.push(e)});for(var i=0;i<n.markers.length;i++){var s=n.markers[i];qo(r,s.doc)==-1&&(s.parent=null,n.markers.splice(i--,1))}}}function Bi(e,t,n){this.marker=e,this.from=t,this.to=n}function ji(e,t){if(e)for(var n=0;n<e.length;++n){var r=e[n];if(r.marker==t)return r}}function Fi(e,t){for(var n,r=0;r<e.length;++r)e[r]!=t&&(n||(n=[])).push(e[r]);return n}function Ii(e,t){e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],t.marker.attachLine(e)}function qi(e,t,n){if(e)for(var r=0,i;r<e.length;++r){var s=e[r],o=s.marker,u=s.from==null||(o.inclusiveLeft?s.from<=t:s.from<t);if(u||s.from==t&&o.type=="bookmark"&&(!n||!s.marker.insertLeft)){var a=s.to==null||(o.inclusiveRight?s.to>=t:s.to>t);(i||(i=[])).push(new Bi(o,s.from,a?null:s.to))}}return i}function Ri(e,t,n){if(e)for(var r=0,i;r<e.length;++r){var s=e[r],o=s.marker,u=s.to==null||(o.inclusiveRight?s.to>=t:s.to>t);if(u||s.from==t&&o.type=="bookmark"&&(!n||s.marker.insertLeft)){var a=s.from==null||(o.inclusiveLeft?s.from<=t:s.from<t);(i||(i=[])).push(new Bi(o,a?null:s.from-t,s.to==null?null:s.to-t))}}return i}function Ui(e,t){var n=Tt(e,t.from.line)&&Us(e,t.from.line).markedSpans,r=Tt(e,t.to.line)&&Us(e,t.to.line).markedSpans;if(!n&&!r)return null;var i=t.from.ch,s=t.to.ch,o=pt(t.from,t.to)==0,u=qi(n,i,o),a=Ri(r,s,o),f=t.text.length==1,l=Fo(t.text).length+(f?i:0);if(u)for(var c=0;c<u.length;++c){var h=u[c];if(h.to==null){var p=ji(a,h.marker);p?f&&(h.to=p.to==null?null:p.to+l):h.to=i}}if(a)for(var c=0;c<a.length;++c){var h=a[c];h.to!=null&&(h.to+=l);if(h.from==null){var p=ji(u,h.marker);p||(h.from=l,f&&(u||(u=[])).push(h))}else h.from+=l,f&&(u||(u=[])).push(h)}u&&(u=zi(u)),a&&a!=u&&(a=zi(a));var d=[u];if(!f){var v=t.text.length-2,m;if(v>0&&u)for(var c=0;c<u.length;++c)u[c].to==null&&(m||(m=[])).push(new Bi(u[c].marker,null,null));for(var c=0;c<v;++c)d.push(m);d.push(a)}return d}function zi(e){for(var t=0;t<e.length;++t){var n=e[t];n.from!=null&&n.from==n.to&&n.marker.clearWhenEmpty!==!1&&e.splice(t--,1)}return e.length?e:null}function Wi(e,t){var n=oo(e,t),r=Ui(e,t);if(!n)return r;if(!r)return n;for(var i=0;i<n.length;++i){var s=n[i],o=r[i];if(s&&o)e:for(var u=0;u<o.length;++u){var a=o[u];for(var f=0;f<s.length;++f)if(s[f].marker==a.marker)continue e;s.push(a)}else o&&(n[i]=o)}return n}function Xi(e,t,n){var r=null;e.iter(t.line,n.line+1,function(e){if(e.markedSpans)for(var t=0;t<e.markedSpans.length;++t){var n=e.markedSpans[t].marker;n.readOnly&&(!r||qo(r,n)==-1)&&(r||(r=[])).push(n)}});if(!r)return null;var i=[{from:t,to:n}];for(var s=0;s<r.length;++s){var o=r[s],u=o.find(0);for(var a=0;a<i.length;++a){var f=i[a];if(pt(f.to,u.from)<0||pt(f.from,u.to)>0)continue;var l=[a,1],c=pt(f.from,u.from),h=pt(f.to,u.to);(c<0||!o.inclusiveLeft&&!c)&&l.push({from:f.from,to:u.from}),(h>0||!o.inclusiveRight&&!h)&&l.push({from:u.to,to:f.to}),i.splice.apply(i,l),a+=l.length-1}}return i}function Vi(e){var t=e.markedSpans;if(!t)return;for(var n=0;n<t.length;++n)t[n].marker.detachLine(e);e.markedSpans=null}function $i(e,t){if(!t)return;for(var n=0;n<t.length;++n)t[n].marker.attachLine(e);e.markedSpans=t}function Ji(e){return e.inclusiveLeft?-1:0}function Ki(e){return e.inclusiveRight?1:0}function Qi(e,t){var n=e.lines.length-t.lines.length;if(n!=0)return n;var r=e.find(),i=t.find(),s=pt(r.from,i.from)||Ji(e)-Ji(t);if(s)return-s;var o=pt(r.to,i.to)||Ki(e)-Ki(t);return o?o:t.id-e.id}function Gi(e,t){var n=E&&e.markedSpans,r;if(n)for(var i,s=0;s<n.length;++s)i=n[s],i.marker.collapsed&&(t?i.from:i.to)==null&&(!r||Qi(r,i.marker)<0)&&(r=i.marker);return r}function Yi(e){return Gi(e,!0)}function Zi(e){return Gi(e,!1)}function es(e,t,n,r,i){var s=Us(e,t),o=E&&s.markedSpans;if(o)for(var u=0;u<o.length;++u){var a=o[u];if(!a.marker.collapsed)continue;var f=a.marker.find(0),l=pt(f.from,n)||Ji(a.marker)-Ji(i),c=pt(f.to,r)||Ki(a.marker)-Ki(i);if(l>=0&&c<=0||l<=0&&c>=0)continue;if(l<=0&&(pt(f.to,n)>0||a.marker.inclusiveRight&&i.inclusiveLeft)||l>=0&&(pt(f.from,r)<0||a.marker.inclusiveLeft&&i.inclusiveRight))return!0}}function ts(e){var t;while(t=Yi(e))e=t.find(-1,!0).line;return e}function ns(e){var t,n;while(t=Zi(e))e=t.find(1,!0).line,(n||(n=[])).push(e);return n}function rs(e,t){var n=Us(e,t),r=ts(n);return n==r?t:Vs(r)}function is(e,t){if(t>e.lastLine())return t;var n=Us(e,t),r;if(!ss(e,n))return t;while(r=Zi(n))n=r.find(1,!0).line;return Vs(n)+1}function ss(e,t){var n=E&&t.markedSpans;if(n)for(var r,i=0;i<n.length;++i){r=n[i];if(!r.marker.collapsed)continue;if(r.from==null)return!0;if(r.marker.widgetNode)continue;if(r.from==0&&r.marker.inclusiveLeft&&os(e,t,r))return!0}}function os(e,t,n){if(n.to==null){var r=n.marker.find(1,!0);return os(e,r.line,ji(r.line.markedSpans,n.marker))}if(n.marker.inclusiveRight&&n.to==t.text.length)return!0;for(var i,s=0;s<t.markedSpans.length;++s){i=t.markedSpans[s];if(i.marker.collapsed&&!i.marker.widgetNode&&i.from==n.to&&(i.to==null||i.to!=n.from)&&(i.marker.inclusiveLeft||n.marker.inclusiveRight)&&os(e,t,i))return!0}}function as(e,t,n){Js(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&ti(e,null,n)}function fs(e){if(e.height!=null)return e.height;if(!tu(document.body,e.node)){var t="position: relative;";e.coverGutter&&(t+="margin-left: -"+e.cm.getGutterElement().offsetWidth+"px;"),eu(e.cm.display.measure,Go("div",[e.node],null,t))}return e.height=e.node.offsetHeight}function ls(e,t,n,r){var i=new us(e,n,r);return i.noHScroll&&(e.display.alignWidgets=!0),si(e.doc,t,"widget",function(t){var n=t.widgets||(t.widgets=[]);i.insertAt==null?n.push(i):n.splice(Math.min(n.length-1,Math.max(0,i.insertAt)),0,i),i.line=t;if(!ss(e.doc,t)){var r=Js(t)<e.doc.scrollTop;Xs(t,t.height+fs(i)),r&&ti(e,null,i.height),e.curOp.forceUpdate=!0}return!0}),i}function hs(e,t,n,r){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),e.order!=null&&(e.order=null),Vi(e),$i(e,n);var i=r?r(e):1;i!=e.height&&Xs(e,i)}function ps(e){e.parent=null,Vi(e)}function ds(e,t){if(e)for(;;){var n=e.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!n)break;e=e.slice(0,n.index)+e.slice(n.index+n[0].length);var r=n[1]?"bgClass":"textClass";t[r]==null?t[r]=n[2]:(new RegExp("(?:^|s)"+n[2]+"(?:$|s)")).test(t[r])||(t[r]+=" "+n[2])}return e}function vs(e,t){if(e.blankLine)return e.blankLine(t);if(!e.innerMode)return;var n=S.innerMode(e,t);if(n.mode.blankLine)return n.mode.blankLine(n.state)}function ms(e,t,n,r){for(var i=0;i<10;i++){r&&(r[0]=S.innerMode(e,n).mode);var s=e.token(t,n);if(t.pos>t.start)return s}throw new Error("Mode "+e.name+" failed to advance stream.")}function gs(e,t,n,r){function i(e){return{start:l.start,end:l.pos,string:l.current(),type:u||null,state:e?yi(s.mode,f):f}}var s=e.doc,o=s.mode,u;t=St(s,t);var a=Us(s,t.line),f=Jt(e,t.line,n),l=new ki(a.text,e.options.tabSize),c;r&&(c=[]);while((r||l.pos<t.ch)&&!l.eol())l.start=l.pos,u=ms(o,l,f),r&&c.push(i(!0));return r?c:i()}function ys(e,t,n,r,i,s,o){var u=n.flattenSpans;u==null&&(u=e.options.flattenSpans);var a=0,f=null,l=new ki(t,e.options.tabSize),c,h=e.options.addModeClass&&[null];t==""&&ds(vs(n,r),s);while(!l.eol()){l.pos>e.options.maxHighlightLength?(u=!1,o&&Es(e,t,r,l.pos),l.pos=t.length,c=null):c=ds(ms(n,l,r,h),s);if(h){var p=h[0].name;p&&(c="m-"+(c?p+" "+c:p))}if(!u||f!=c)a<l.start&&i(l.start,f),a=l.start,f=c;l.start=l.pos}while(a<l.pos){var d=Math.min(l.pos,a+5e4);i(d,f),a=d}}function bs(e,t,n,r){var i=[e.state.modeGen],s={};ys(e,t.text,e.doc.mode,n,function(e,t){i.push(e,t)},s,r);for(var o=0;o<e.state.overlays.length;++o){var u=e.state.overlays[o],a=1,f=0;ys(e,t.text,u.mode,!0,function(e,t){var n=a;while(f<e){var r=i[a];r>e&&i.splice(a,1,e,i[a+1],r),a+=2,f=Math.min(e,r)}if(!t)return;if(u.opaque)i.splice(n,a-n,e,"cm-overlay "+t),a=n+2;else for(;n<a;n+=2){var s=i[n+1];i[n+1]=(s?s+" ":"")+"cm-overlay "+t}},s)}return{styles:i,classes:s.bgClass||s.textClass?s:null}}function ws(e,t,n){if(!t.styles||t.styles[0]!=e.state.modeGen){var r=bs(e,t,t.stateAfter=Jt(e,Vs(t)));t.styles=r.styles,r.classes?t.styleClasses=r.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.frontier&&e.doc.frontier++}return t.styles}function Es(e,t,n,r){var i=e.doc.mode,s=new ki(t,e.options.tabSize);s.start=s.pos=r||0,t==""&&vs(i,n);while(!s.eol()&&s.pos<=e.options.maxHighlightLength)ms(i,s,n),s.start=s.pos}function Ts(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass?xs:Ss;return n[e]||(n[e]=e.replace(/\S+/g,"cm-$&"))}function Ns(e,t){var n=Go("span",null,null,s?"padding-right: .1px":null),i={pre:Go("pre",[n]),content:n,col:0,pos:0,cm:e};t.measure={};for(var o=0;o<=(t.rest?t.rest.length:0);o++){var u=o?t.rest[o-1]:t.line,a;i.pos=0,i.addToken=ks,(r||s)&&e.getOption("lineWrapping")&&(i.addToken=Ls(i.addToken)),gu(e.display.measure)&&(a=Ks(u))&&(i.addToken=As(i.addToken,a)),i.map=[];var f=t!=e.display.externalMeasured&&Vs(u);Ms(u,i,ws(e,u,f)),u.styleClasses&&(u.styleClasses.bgClass&&(i.bgClass=ou(u.styleClasses.bgClass,i.bgClass||"")),u.styleClasses.textClass&&(i.textClass=ou(u.styleClasses.textClass,i.textClass||""))),i.map.length==0&&i.map.push(0,0,i.content.appendChild(vu(e.display.measure))),o==0?(t.measure.map=i.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(i.map),(t.measure.caches||(t.measure.caches=[])).push({}))}return s&&/\bcm-tab\b/.test(i.content.lastChild.className)&&(i.content.className="cm-tab-wrap-hack"),wo(e,"renderLine",e,t.line,i.pre),i.pre.className&&(i.textClass=ou(i.pre.className,i.textClass||"")),i}function Cs(e){var t=Go("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t}function ks(e,t,n,s,o,u){if(!t)return;var a=e.cm.options.specialChars,f=!1;if(!a.test(t)){e.col+=t.length;var l=document.createTextNode(t);e.map.push(e.pos,e.pos+t.length,l),r&&i<9&&(f=!0),e.pos+=t.length}else{var l=document.createDocumentFragment(),c=0;for(;;){a.lastIndex=c;var h=a.exec(t),p=h?h.index-c:t.length-c;if(p){var d=document.createTextNode(t.slice(c,c+p));r&&i<9?l.appendChild(Go("span",[d])):l.appendChild(d),e.map.push(e.pos,e.pos+p,d),e.col+=p,e.pos+=p}if(!h)break;c+=p+1;if(h[0]=="	"){var v=e.cm.options.tabSize,m=v-e.col%v,d=l.appendChild(Go("span",jo(m),"cm-tab"));e.col+=m}else{var d=e.cm.options.specialCharPlaceholder(h[0]);r&&i<9?l.appendChild(Go("span",[d])):l.appendChild(d),e.col+=1}e.map.push(e.pos,e.pos+1,d),e.pos++}}if(n||s||o||f){var g=n||"";s&&(g+=s),o&&(g+=o);var y=Go("span",[l],g);return u&&(y.title=u),e.content.appendChild(y)}e.content.appendChild(l)}function Ls(e){function t(e){var t=" ";for(var n=0;n<e.length-2;++n)t+=n%2?" ":" ";return t+=" ",t}return function(n,r,i,s,o,u){e(n,r.replace(/ {3,}/g,t),i,s,o,u)}}function As(e,t){return function(n,r,i,s,o,u){i=i?i+" cm-force-border":"cm-force-border";var a=n.pos,f=a+r.length;for(;;){for(var l=0;l<t.length;l++){var c=t[l];if(c.to>a&&c.from<=a)break}if(c.to>=f)return e(n,r,i,s,o,u);e(n,r.slice(0,c.to-a),i,s,null,u),s=null,r=r.slice(c.to-a),a=c.to}}}function Os(e,t,n,r){var i=!r&&n.widgetNode;i&&(e.map.push(e.pos,e.pos+t,i),e.content.appendChild(i)),e.pos+=t}function Ms(e,t,n){var r=e.markedSpans,i=e.text,s=0;if(!r){for(var o=1;o<n.length;o+=2)t.addToken(t,i.slice(s,s=n[o]),Ts(n[o+1],t.cm.options));return}var u=i.length,a=0,o=1,f="",l,c=0,h,p,d,v,m;for(;;){if(c==a){h=p=d=v="",m=null,c=Infinity;var g=[];for(var y=0;y<r.length;++y){var b=r[y],w=b.marker;b.from<=a&&(b.to==null||b.to>a)?(b.to!=null&&c>b.to&&(c=b.to,p=""),w.className&&(h+=" "+w.className),w.startStyle&&b.from==a&&(d+=" "+w.startStyle),w.endStyle&&b.to==c&&(p+=" "+w.endStyle),w.title&&!v&&(v=w.title),w.collapsed&&(!m||Qi(m.marker,w)<0)&&(m=b)):b.from>a&&c>b.from&&(c=b.from),w.type=="bookmark"&&b.from==a&&w.widgetNode&&g.push(w)}if(m&&(m.from||0)==a){Os(t,(m.to==null?u+1:m.to)-a,m.marker,m.from==null);if(m.to==null)return}if(!m&&g.length)for(var y=0;y<g.length;++y)Os(t,0,g[y])}if(a>=u)break;var E=Math.min(u,c);for(;;){if(f){var S=a+f.length;if(!m){var x=S>E?f.slice(0,E-a):f;t.addToken(t,x,l?l+h:h,d,a+x.length==c?p:"",v)}if(S>=E){f=f.slice(E-a),a=E;break}a=S,d=""}f=i.slice(s,s=n[o++]),l=Ts(n[o++],t.cm.options)}}}function _s(e,t){return t.from.ch==0&&t.to.ch==0&&Fo(t.text)==""&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function Ds(e,t,n,r){function i(e){return n?n[e]:null}function s(e,n,i){hs(e,n,i,r),So(e,"change",e,t)}var o=t.from,u=t.to,a=t.text,f=Us(e,o.line),l=Us(e,u.line),c=Fo(a),h=i(a.length-1),p=u.line-o.line;if(_s(e,t)){for(var d=0,v=[];d<a.length-1;++d)v.push(new cs(a[d],i(d),r));s(l,l.text,h),p&&e.remove(o.line,p),v.length&&e.insert(o.line,v)}else if(f==l)if(a.length==1)s(f,f.text.slice(0,o.ch)+c+f.text.slice(u.ch),h);else{for(var v=[],d=1;d<a.length-1;++d)v.push(new cs(a[d],i(d),r));v.push(new cs(c+f.text.slice(u.ch),h,r)),s(f,f.text.slice(0,o.ch)+a[0],i(0)),e.insert(o.line+1,v)}else if(a.length==1)s(f,f.text.slice(0,o.ch)+a[0]+l.text.slice(u.ch),i(0)),e.remove(o.line+1,p);else{s(f,f.text.slice(0,o.ch)+a[0],i(0)),s(l,c+l.text.slice(u.ch),h);for(var d=1,v=[];d<a.length-1;++d)v.push(new cs(a[d],i(d),r));p>1&&e.remove(o.line+1,p-1),e.insert(o.line+1,v)}So(e,"change",e,t)}function Ps(e){this.lines=e,this.parent=null;for(var t=0,n=0;t<e.length;++t)e[t].parent=this,n+=e[t].height;this.height=n}function Hs(e){this.children=e;var t=0,n=0;for(var r=0;r<e.length;++r){var i=e[r];t+=i.chunkSize(),n+=i.height,i.parent=this}this.size=t,this.height=n,this.parent=null}function qs(e,t,n){function r(e,i,s){if(e.linked)for(var o=0;o<e.linked.length;++o){var u=e.linked[o];if(u.doc==i)continue;var a=s&&u.sharedHist;if(n&&!a)continue;t(u.doc,a),r(u.doc,e,a)}}r(e,null,!0)}function Rs(e,t){if(t.cm)throw new Error("This document is already in use.");e.doc=t,t.cm=e,L(e),T(e),e.options.lineWrapping||P(e),e.options.mode=t.modeOption,Un(e)}function Us(e,t){t-=e.first;if(t<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],s=i.chunkSize();if(t<s){n=i;break}t-=s}return n.lines[t]}function zs(e,t,n){var r=[],i=t.line;return e.iter(t.line,n.line+1,function(e){var s=e.text;i==n.line&&(s=s.slice(0,n.ch)),i==t.line&&(s=s.slice(t.ch)),r.push(s),++i}),r}function Ws(e,t,n){var r=[];return e.iter(t,n,function(e){r.push(e.text)}),r}function Xs(e,t){var n=t-e.height;if(n)for(var r=e;r;r=r.parent)r.height+=n}function Vs(e){if(e.parent==null)return null;var t=e.parent,n=qo(t.lines,e);for(var r=t.parent;r;t=r,r=r.parent)for(var i=0;;++i){if(r.children[i]==t)break;n+=r.children[i].chunkSize()}return n+t.first}function $s(e,t){var n=e.first;e:do{for(var r=0;r<e.children.length;++r){var i=e.children[r],s=i.height;if(t<s){e=i;continue e}t-=s,n+=i.chunkSize()}return n}while(!e.lines);for(var r=0;r<e.lines.length;++r){var o=e.lines[r],u=o.height;if(t<u)break;t-=u}return n+r}function Js(e){e=ts(e);var t=0,n=e.parent;for(var r=0;r<n.lines.length;++r){var i=n.lines[r];if(i==e)break;t+=i.height}for(var s=n.parent;s;n=s,s=n.parent)for(var r=0;r<s.children.length;++r){var o=s.children[r];if(o==n)break;t+=o.height}return t}function Ks(e){var t=e.order;return t==null&&(t=e.order=Fu(e.text)),t}function Qs(e){this.done=[],this.undone=[],this.undoDepth=Infinity,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function Gs(e,t){var n={from:dt(t.from),to:Fr(t),text:zs(e,t.from,t.to)};return io(e,n,t.from.line,t.to.line+1),qs(e,function(e){io(e,n,t.from.line,t.to.line+1)},!0),n}function Ys(e){while(e.length){var t=Fo(e);if(!t.ranges)break;e.pop()}}function Zs(e,t){if(t)return Ys(e.done),Fo(e.done);if(e.done.length&&!Fo(e.done).ranges)return Fo(e.done);if(e.done.length>1&&!e.done[e.done.length-2].ranges)return e.done.pop(),Fo(e.done)}function eo(e,t,n,r){var i=e.history;i.undone.length=0;var s=+(new Date),o;if((i.lastOp==r||i.lastOrigin==t.origin&&t.origin&&(t.origin.charAt(0)=="+"&&e.cm&&i.lastModTime>s-e.cm.options.historyEventDelay||t.origin.charAt(0)=="*"))&&(o=Zs(i,i.lastOp==r))){var u=Fo(o.changes);pt(t.from,t.to)==0&&pt(t.from,u.to)==0?u.to=Fr(t):o.changes.push(Gs(e,t))}else{var a=Fo(i.done);(!a||!a.ranges)&&ro(e.sel,i.done),o={changes:[Gs(e,t)],generation:i.generation},i.done.push(o);while(i.done.length>i.undoDepth)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,u||wo(e,"historyAdded")}function to(e,t,n,r){var i=t.charAt(0);return i=="*"||i=="+"&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function no(e,t,n,r){var i=e.history,s=r&&r.origin;n==i.lastSelOp||s&&i.lastSelOrigin==s&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==s||to(e,s,Fo(i.done),t))?i.done[i.done.length-1]=t:ro(t,i.done),i.lastSelTime=+(new Date),i.lastSelOrigin=s,i.lastSelOp=n,r&&r.clearRedo!==!1&&Ys(i.undone)}function ro(e,t){var n=Fo(t);n&&n.ranges&&n.equals(e)||t.push(e)}function io(e,t,n,r){var i=t["spans_"+e.id],s=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),function(n){n.markedSpans&&((i||(i=t["spans_"+e.id]={}))[s]=n.markedSpans),++s})}function so(e){if(!e)return null;for(var t=0,n;t<e.length;++t)e[t].marker.explicitlyCleared?n||(n=e.slice(0,t)):n&&n.push(e[t]);return n?n.length?n:null:e}function oo(e,t){var n=t["spans_"+e.id];if(!n)return null;for(var r=0,i=[];r<t.text.length;++r)i.push(so(n[r]));return i}function uo(e,t,n){for(var r=0,i=[];r<e.length;++r){var s=e[r];if(s.ranges){i.push(n?gt.prototype.deepCopy.call(s):s);continue}var o=s.changes,u=[];i.push({changes:u});for(var a=0;a<o.length;++a){var f=o[a],l;u.push({from:f.from,to:f.to,text:f.text});if(t)for(var c in f)(l=c.match(/^spans_(\d+)$/))&&qo(t,Number(l[1]))>-1&&(Fo(u)[c]=f[c],delete f[c])}}return i}function ao(e,t,n,r){n<e.line?e.line+=r:t<e.line&&(e.line=t,e.ch=0)}function fo(e,t,n,r){for(var i=0;i<e.length;++i){var s=e[i],o=!0;if(s.ranges){s.copied||(s=e[i]=s.deepCopy(),s.copied=!0);for(var u=0;u<s.ranges.length;u++)ao(s.ranges[u].anchor,t,n,r),ao(s.ranges[u].head,t,n,r);continue}for(var u=0;u<s.changes.length;++u){var a=s.changes[u];if(n<a.from.line)a.from=ht(a.from.line+r,a.from.ch),a.to=ht(a.to.line+r,a.to.ch);else if(t<=a.to.line){o=!1;break}}o||(e.splice(0,i+1),i=0)}}function lo(e,t){var n=t.from.line,r=t.to.line,i=t.text.length-(r-n)-1;fo(e.done,n,r,i),fo(e.undone,n,r,i)}function po(e){return e.defaultPrevented!=null?e.defaultPrevented:e.returnValue==0}function mo(e){return e.target||e.srcElement}function go(e){var t=e.which;return t==null&&(e.button&1?t=1:e.button&2?t=3:e.button&4&&(t=2)),v&&e.ctrlKey&&t==1&&(t=3),t}function So(e,t){function s(e){return function(){e.apply(null,r)}}var n=e._handlers&&e._handlers[t];if(!n)return;var r=Array.prototype.slice.call(arguments,2),i;Nn?i=Nn.delayedCallbacks:Eo?i=Eo:(i=Eo=[],setTimeout(xo,0));for(var o=0;o<n.length;++o)i.push(s(n[o]))}function xo(){var e=Eo;Eo=null;for(var t=0;t<e.length;++t)e[t]()}function To(e,t,n){return typeof t=="string"&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),wo(e,n||t.type,e,t),po(t)||t.codemirrorIgnore}function No(e){var t=e._handlers&&e._handlers.cursorActivity;if(!t)return;var n=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]);for(var r=0;r<t.length;++r)qo(n,t[r])==-1&&n.push(t[r])}function Co(e,t){var n=e._handlers&&e._handlers[t];return n&&n.length>0}function ko(e){e.prototype.on=function(e,t){yo(this,e,t)},e.prototype.off=function(e,t){bo(this,e,t)}}function Do(){this.id=null}function Ho(e,t,n){for(var r=0,i=0;;){var s=e.indexOf("	",r);s==-1&&(s=e.length);var o=s-r;if(s==e.length||i+o>=t)return r+Math.min(o,t-i);i+=s-r,i+=n-i%n,r=s+1;if(i>=t)return r}}function jo(e){while(Bo.length<=e)Bo.push(Fo(Bo)+" ");return Bo[e]}function Fo(e){return e[e.length-1]}function qo(e,t){for(var n=0;n<e.length;++n)if(e[n]==t)return n;return-1}function Ro(e,t){var n=[];for(var r=0;r<e.length;r++)n[r]=t(e[r],r);return n}function Uo(e,t){var n;if(Object.create)n=Object.create(e);else{var r=function(){};r.prototype=e,n=new r}return t&&zo(t,n),n}function zo(e,t,n){t||(t={});for(var r in e)e.hasOwnProperty(r)&&(n!==!1||!t.hasOwnProperty(r))&&(t[r]=e[r]);return t}function Wo(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function $o(e,t){return t?t.source.indexOf("\\w")>-1&&Vo(e)?!0:t.test(e):Vo(e)}function Jo(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}function Qo(e){return e.charCodeAt(0)>=768&&Ko.test(e)}function Go(e,t,n,r){var i=document.createElement(e);n&&(i.className=n),r&&(i.style.cssText=r);if(typeof t=="string")i.appendChild(document.createTextNode(t));else if(t)for(var s=0;s<t.length;++s)i.appendChild(t[s]);return i}function Zo(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function eu(e,t){return Zo(e).appendChild(t)}function tu(e,t){if(e.contains)return e.contains(t);while(t=t.parentNode)if(t==e)return!0}function nu(){return document.activeElement}function ru(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}function ou(e,t){var n=e.split(" ");for(var r=0;r<n.length;r++)n[r]&&!ru(n[r]).test(t)&&(t+=" "+n[r]);return t}function uu(e){if(!document.body.getElementsByClassName)return;var t=document.body.getElementsByClassName("CodeMirror");for(var n=0;n<t.length;n++){var r=t[n].CodeMirror;r&&e(r)}}function fu(){if(au)return;lu(),au=!0}function lu(){var e;yo(window,"resize",function(){e==null&&(e=setTimeout(function(){e=null,hu=null,uu(ir)},100))}),yo(window,"blur",function(){uu(Hr)})}function pu(e){if(hu!=null)return hu;var t=Go("div",null,null,"width: 50px; height: 50px; overflow-x: scroll");return eu(e,t),t.offsetWidth&&(hu=t.offsetHeight-t.clientHeight),hu||0}function vu(e){if(du==null){var t=Go("span","​");eu(e,Go("span",[t,document.createTextNode("x")])),e.firstChild.offsetHeight!=0&&(du=t.offsetWidth<=1&&t.offsetHeight>2&&!(r&&i<8))}return du?Go("span","​"):Go("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px")}function gu(e){if(mu!=null)return mu;var t=eu(e,document.createTextNode("AخA")),n=Yo(t,0,1).getBoundingClientRect();if(!n||n.left==n.right)return!1;var r=Yo(t,1,2).getBoundingClientRect();return mu=r.right-n.right<3}function Su(e){if(Eu!=null)return Eu;var t=eu(e,Go("span","x")),n=t.getBoundingClientRect(),r=Yo(t,0,1).getBoundingClientRect();return Eu=Math.abs(n.left-r.left)>1}function Tu(e,t,n,r){if(!e)return r(t,n,"ltr");var i=!1;for(var s=0;s<e.length;++s){var o=e[s];if(o.from<n&&o.to>t||t==n&&o.to==t)r(Math.max(o.from,t),Math.min(o.to,n),o.level==1?"rtl":"ltr"),i=!0}i||r(t,n,"ltr")}function Nu(e){return e.level%2?e.to:e.from}function Cu(e){return e.level%2?e.from:e.to}function ku(e){var t=Ks(e);return t?Nu(t[0]):0}function Lu(e){var t=Ks(e);return t?Cu(Fo(t)):e.text.length}function Au(e,t){var n=Us(e.doc,t),r=ts(n);r!=n&&(t=Vs(r));var i=Ks(r),s=i?i[0].level%2?Lu(r):ku(r):0;return ht(t,s)}function Ou(e,t){var n,r=Us(e.doc,t);while(n=Zi(r))r=n.find(1,!0).line,t=null;var i=Ks(r),s=i?i[0].level%2?ku(r):Lu(r):r.text.length;return ht(t==null?Vs(r):t,s)}function Mu(e,t){var n=Au(e,t.line),r=Us(e.doc,n.line),i=Ks(r);if(!i||i[0].level==0){var s=Math.max(0,r.text.search(/\S/)),o=t.line==n.line&&t.ch<=s&&t.ch;return ht(n.line,o?0:s)}return n}function _u(e,t,n){var r=e[0].level;return t==r?!0:n==r?!1:t<n}function Pu(e,t){Du=null;for(var n=0,r;n<e.length;++n){var i=e[n];if(i.from<t&&i.to>t)return n;if(i.from==t||i.to==t){if(r!=null)return _u(e,i.level,e[r].level)?(i.from!=i.to&&(Du=r),n):(i.from!=i.to&&(Du=n),r);r=n}}return r}function Hu(e,t,n,r){if(!r)return t+n;do t+=n;while(t>0&&Qo(e.text.charAt(t)));return t}function Bu(e,t,n,r){var i=Ks(e);if(!i)return ju(e,t,n,r);var s=Pu(i,t),o=i[s],u=Hu(e,t,o.level%2?-n:n,r);for(;;){if(u>o.from&&u<o.to)return u;if(u==o.from||u==o.to)return Pu(i,u)==s?u:(o=i[s+=n],n>0==o.level%2?o.to:o.from);o=i[s+=n];if(!o)return null;n>0==o.level%2?u=Hu(e,o.to,-1,r):u=Hu(e,o.from,1,r)}}function ju(e,t,n,r){var i=t+n;if(r)while(i>0&&Qo(e.text.charAt(i)))i+=n;return i<0||i>e.text.length?null:i}var e=/gecko\/\d/i.test(navigator.userAgent),t=/MSIE \d/.test(navigator.userAgent),n=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),r=t||n,i=r&&(t?document.documentMode||6:n[1]),s=/WebKit\//.test(navigator.userAgent),o=s&&/Qt\/\d+\.\d+/.test(navigator.userAgent),u=/Chrome\//.test(navigator.userAgent),a=/Opera\//.test(navigator.userAgent),f=/Apple Computer/.test(navigator.vendor),l=/KHTML\//.test(navigator.userAgent),c=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent),h=/PhantomJS/.test(navigator.userAgent),p=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent),d=p||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent),v=p||/Mac/.test(navigator.platform),m=/win/i.test(navigator.platform),g=a&&navigator.userAgent.match(/Version\/(\d*\.\d*)/);g&&(g=Number(g[1])),g&&g>=15&&(a=!1,s=!0);var y=v&&(o||a&&(g==null||g<12.11)),b=e||r&&i>=9,w=!1,E=!1,ht=S.Pos=function(e,t){if(!(this instanceof ht))return new ht(e,t);this.line=e,this.ch=t},pt=S.cmpPos=function(e,t){return e.line-t.line||e.ch-t.ch};gt.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t<this.ranges.length;t++){var n=this.ranges[t],r=e.ranges[t];if(pt(n.anchor,r.anchor)!=0||pt(n.head,r.head)!=0)return!1}return!0},deepCopy:function(){for(var e=[],t=0;t<this.ranges.length;t++)e[t]=new yt(dt(this.ranges[t].anchor),dt(this.ranges[t].head));return new gt(e,this.primIndex)},somethingSelected:function(){for(var e=0;e<this.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},contains:function(e,t){t||(t=e);for(var n=0;n<this.ranges.length;n++){var r=this.ranges[n];if(pt(t,r.from())>=0&&pt(e,r.to())<=0)return n}return-1}},yt.prototype={from:function(){return mt(this.anchor,this.head)},to:function(){return vt(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var on={left:0,right:0,top:0,bottom:0},Sn,Nn=null,Cn=0,Gn=null,ar,fr,vr=0,wr=0,Er=null;r?Er=-0.53:e?Er=15:u?Er=-0.7:f&&(Er=-1/3);var Nr=new Do,Ar=null,Fr=S.changeEnd=function(e){return e.text?ht(e.from.line+e.text.length-1,Fo(e.text).length+(e.text.length==1?e.from.ch:0)):e.to};S.prototype={constructor:S,focus:function(){window.focus(),er(this),Qn(this)},setOption:function(e,t){var n=this.options,r=n[e];if(n[e]==t&&e!="mode")return;n[e]=t,li.hasOwnProperty(e)&&jn(this,li[e])(this,t,r)},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Ci(e))},removeKeyMap:function(e){var t=this.state.keyMaps;for(var n=0;n<t.length;++n)if(t[n]==e||t[n].name==e)return t.splice(n,1),!0},addOverlay:Fn(function(e,t){var n=e.token?e:S.getMode(this.options,e);if(n.startState)throw new Error("Overlays may not be stateful.");this.state.overlays.push({mode:n,modeSpec:e,opaque:t&&t.opaque}),this.state.modeGen++,Un(this)}),removeOverlay:Fn(function(e){var t=this.state.overlays;for(var n=0;n<t.length;++n){var r=t[n].modeSpec;if(r==e||typeof e=="string"&&r.name==e){t.splice(n,1),this.state.modeGen++,Un(this);return}}}),indentLine:Fn(function(e,t,n){typeof t!="string"&&typeof t!="number"&&(t==null?t=this.options.smartIndent?"smart":"prev":t=t?"add":"subtract"),Tt(this.doc,e)&&ii(this,e,t,n)}),indentSelection:Fn(function(e){var t=this.doc.sel.ranges,n=-1;for(var r=0;r<t.length;r++){var i=t[r];if(!i.empty()){var s=i.from(),o=i.to(),u=Math.max(n,s.line);n=Math.min(this.lastLine(),o.line-(o.ch?0:1))+1;for(var a=u;a<n;++a)ii(this,a,e);var f=this.doc.sel.ranges;s.ch==0&&t.length==f.length&&f[r].from().ch>0&&At(this.doc,r,new yt(s,f[r].to()),Oo)}else i.head.line>n&&(ii(this,i.head.line,e,!0),n=i.head.line,r==this.doc.sel.primIndex&&ni(this))}}),getTokenAt:function(e,t){return gs(this,e,t)},getLineTokens:function(e,t){return gs(this,ht(e),t,!0)},getTokenTypeAt:function(e){e=St(this.doc,e);var t=ws(this,Us(this.doc,e.line)),n=0,r=(t.length-1)/2,i=e.ch,s;if(i==0)s=t[2];else for(;;){var o=n+r>>1;if((o?t[o*2-1]:0)>=i)r=o;else{if(!(t[o*2+1]<i)){s=t[o*2+2];break}n=o+1}}var u=s?s.indexOf("cm-overlay "):-1;return u<0?s:u==0?null:s.slice(0,u-1)},getModeAt:function(e){var t=this.doc.mode;return t.innerMode?S.innerMode(t,this.getTokenAt(e).state).mode:t},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var n=[];if(!gi.hasOwnProperty(t))return gi;var r=gi[t],i=this.getModeAt(e);if(typeof i[t]=="string")r[i[t]]&&n.push(r[i[t]]);else if(i[t])for(var s=0;s<i[t].length;s++){var o=r[i[t][s]];o&&n.push(o)}else i.helperType&&r[i.helperType]?n.push(r[i.helperType]):r[i.name]&&n.push(r[i.name]);for(var s=0;s<r._global.length;s++){var u=r._global[s];u.pred(i,this)&&qo(n,u.val)==-1&&n.push(u.val)}return n},getStateAfter:function(e,t){var n=this.doc;return e=Et(n,e==null?n.first+n.size-1:e),Jt(this,e+1,t)},cursorCoords:function(e,t){var n,r=this.doc.sel.primary();return e==null?n=r.head:typeof e=="object"?n=St(this.doc,e):n=e?r.from():r.to(),gn(this,n,t||"page")},charCoords:function(e,t){return mn(this,St(this.doc,e),t||"page")},coordsChar:function(e,t){return e=vn(this,e,t||"page"),wn(this,e.left,e.top)},lineAtHeight:function(e,t){return e=vn(this,{top:e,left:0},t||"page").top,$s(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t){var n=!1,r=this.doc.first+this.doc.size-1;e<this.doc.first?e=this.doc.first:e>r&&(e=r,n=!0);var i=Us(this.doc,e);return dn(this,i,{top:0,left:0},t||"page").top+(n?this.doc.height-Js(i):0)},defaultTextHeight:function(){return xn(this.display)},defaultCharWidth:function(){return Tn(this.display)},setGutterMarker:Fn(function(e,t,n){return si(this.doc,e,"gutter",function(e){var r=e.gutterMarkers||(e.gutterMarkers={});return r[t]=n,!n&&Jo(r)&&(e.gutterMarkers=null),!0})}),clearGutter:Fn(function(e){var t=this,n=t.doc,r=n.first;n.iter(function(n){n.gutterMarkers&&n.gutterMarkers[e]&&(n.gutterMarkers[e]=null,zn(t,r,"gutter"),Jo(n.gutterMarkers)&&(n.gutterMarkers=null)),++r})}),addLineWidget:Fn(function(e,t,n){return ls(this,e,t,n)}),removeLineWidget:function(e){e.clear()},lineInfo:function(e){if(typeof e=="number"){if(!Tt(this.doc,e))return null;var t=e;e=Us(this.doc,e);if(!e)return null}else{var t=Vs(e);if(t==null)return null}return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,i){var s=this.display;e=gn(this,St(this.doc,e));var o=e.bottom,u=e.left;t.style.position="absolute",s.sizer.appendChild(t);if(r=="over")o=e.top;else if(r=="above"||r=="near"){var a=Math.max(s.wrapper.clientHeight,this.doc.height),f=Math.max(s.sizer.clientWidth,s.lineSpace.clientWidth);(r=="above"||e.bottom+t.offsetHeight>a)&&e.top>t.offsetHeight?o=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=a&&(o=e.bottom),u+t.offsetWidth>f&&(u=f-t.offsetWidth)}t.style.top=o+"px",t.style.left=t.style.right="",i=="right"?(u=s.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):(i=="left"?u=0:i=="middle"&&(u=(s.sizer.clientWidth-t.offsetWidth)/2),t.style.left=u+"px"),n&&Zr(this,u,o,u+t.offsetWidth,o+t.offsetHeight)},triggerOnKeyDown:Fn(Or),triggerOnKeyPress:Fn(Dr),triggerOnKeyUp:_r,execCommand:function(e){if(wi.hasOwnProperty(e))return wi[e](this)},findPosH:function(e,t,n,r){var i=1;t<0&&(i=-1,t=-t);for(var s=0,o=St(this.doc,e);s<t;++s){o=ui(this.doc,o,i,n,r);if(o.hitSide)break}return o},moveH:Fn(function(e,t){var n=this;n.extendSelectionsBy(function(r){return n.display.shift||n.doc.extend||r.empty()?ui(n.doc,r.head,e,t,n.options.rtlMoveVisually):e<0?r.from():r.to()},_o)}),deleteH:Fn(function(e,t){var n=this.doc.sel,r=this.doc;n.somethingSelected()?r.replaceSelection("",null,"+delete"):oi(this,function(n){var i=ui(r,n.head,e,t,!1);return e<0?{from:i,to:n.head}:{from:n.head,to:i}})}),findPosV:function(e,t,n,r){var i=1,s=r;t<0&&(i=-1,t=-t);for(var o=0,u=St(this.doc,e);o<t;++o){var a=gn(this,u,"div");s==null?s=a.left:a.left=s,u=ai(this,a,i,n);if(u.hitSide)break}return u},moveV:Fn(function(e,t){var n=this,r=this.doc,i=[],s=!n.display.shift&&!r.extend&&r.sel.somethingSelected();r.extendSelectionsBy(function(o){if(s)return e<0?o.from():o.to();var u=gn(n,o.head,"div");o.goalColumn!=null&&(u.left=o.goalColumn),i.push(u.left);var a=ai(n,u,e,t);return t=="page"&&o==r.sel.primary()&&ti(n,null,mn(n,a,"div").top-u.top),a},_o);if(i.length)for(var o=0;o<r.sel.ranges.length;o++)r.sel.ranges[o].goalColumn=i[o]}),findWordAt:function(e){var t=this.doc,n=Us(t,e.line).text,r=e.ch,i=e.ch;if(n){var s=this.getHelper(e,"wordChars");(e.xRel<0||i==n.length)&&r?--r:++i;var o=n.charAt(r),u=$o(o,s)?function(e){return $o(e,s)}:/\s/.test(o)?function(e){return/\s/.test(e)}:function(e){return!/\s/.test(e)&&!$o(e)};while(r>0&&u(n.charAt(r-1)))--r;while(i<n.length&&u(n.charAt(i)))++i}return new yt(ht(e.line,r),ht(e.line,i))},toggleOverwrite:function(e){if(e!=null&&e==this.state.overwrite)return;(this.state.overwrite=!this.state.overwrite)?su(this.display.cursorDiv,"CodeMirror-overwrite"):iu(this.display.cursorDiv,"CodeMirror-overwrite"),wo(this,"overwriteToggle",this,this.state.overwrite)},hasFocus:function(){return nu()==this.display.input},scrollTo:Fn(function(e,t){(e!=null||t!=null)&&ri(this),e!=null&&(this.curOp.scrollLeft=e),t!=null&&(this.curOp.scrollTop=t)}),getScrollInfo:function(){var e=this.display.scroller,t=Lo;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-t,width:e.scrollWidth-t,clientHeight:e.clientHeight-t,clientWidth:e.clientWidth-t}},scrollIntoView:Fn(function(e,t){e==null?(e={from:this.doc.sel.primary().head,to:null},t==null&&(t=this.options.cursorScrollMargin)):typeof e=="number"?e={from:ht(e,0),to:null}:e.from==null&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0;if(e.from.line!=null)ri(this),this.curOp.scrollToPos=e;else{var n=ei(this,Math.min(e.from.left,e.to.left),Math.min(e.from.top,e.to.top)-e.margin,Math.max(e.from.right,e.to.right),Math.max(e.from.bottom,e.to.bottom)+e.margin);this.scrollTo(n.scrollLeft,n.scrollTop)}}),setSize:Fn(function(e,t){function r(e){return typeof e=="number"||/^\d+$/.test(String(e))?e+"px":e}var n=this;e!=null&&(n.display.wrapper.style.width=r(e)),t!=null&&(n.display.wrapper.style.height=r(t)),n.options.lineWrapping&&ln(this);var i=n.display.viewFrom;n.doc.iter(i,n.display.viewTo,function(e){if(e.widgets)for(var t=0;t<e.widgets.length;t++)if(e.widgets[t].noHScroll){zn(n,i,"widget");break}++i}),n.curOp.forceUpdate=!0,wo(n,"refresh",this)}),operation:function(e){return Bn(this,e)},refresh:Fn(function(){var e=this.display.cachedTextHeight;Un(this),this.curOp.forceUpdate=!0,cn(this),this.scrollTo(this.doc.scrollLeft,this.doc.scrollTop),_(this),(e==null||Math.abs(e-xn(this.display))>.5)&&L(this),wo(this,"refresh",this)}),swapDoc:Fn(function(e){var t=this.doc;return t.cm=null,Rs(this,e),cn(this),Zn(this),this.scrollTo(e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,So(this,"swapDoc",this,t),t}),getInputField:function(){return this.display.input},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},ko(S);var fi=S.defaults={},li=S.optionHandlers={},hi=S.Init={toString:function(){return"CodeMirror.Init"}};ci("value","",function(e,t){e.setValue(t)},!0),ci("mode",null,function(e,t){e.doc.modeOption=t,T(e)},!0),ci("indentUnit",2,T,!0),ci("indentWithTabs",!1),ci("smartIndent",!0),ci("tabSize",4,function(e){N(e),cn(e),Un(e)},!0),ci("specialChars",/[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(e,t){e.options.specialChars=new RegExp(t.source+(t.test("	")?"":"|	"),"g"),e.refresh()},!0),ci("specialCharPlaceholder",Cs,function(e){e.refresh()},!0),ci("electricChars",!0),ci("rtlMoveVisually",!m),ci("wholeLineUpdateBefore",!0),ci("theme","default",function(e){A(e),O(e)},!0),ci("keyMap","default",function(e,t,n){var r=Ci(t),i=n!=S.Init&&Ci(n);i&&i.detach&&i.detach(e,r),r.attach&&r.attach(e,i||null)}),ci("extraKeys",null),ci("lineWrapping",!1,C,!0),ci("gutters",[],function(e){H(e.options),O(e)},!0),ci("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?z(e.display)+"px":"0",e.refresh()},!0),ci("coverGutterNextToScrollbar",!1,F,!0),ci("lineNumbers",!1,function(e){H(e.options),O(e)},!0),ci("firstLineNumber",1,O,!0),ci("lineNumberFormatter",function(e){return e},O,!0),ci("showCursorWhenSelecting",!1,Rt,!0),ci("resetSelectionOnContextMenu",!0),ci("readOnly",!1,function(e,t){t=="nocursor"?(Hr(e),e.display.input.blur(),e.display.disabled=!0):(e.display.disabled=!1,t||Zn(e))}),ci("disableInput",!1,function(e,t){t||Zn(e)},!0),ci("dragDrop",!0),ci("cursorBlinkRate",530),ci("cursorScrollMargin",0),ci("cursorHeight",1,Rt,!0),ci("singleCursorHeightPerLine",!0,Rt,!0),ci("workTime",100),ci("workDelay",100),ci("flattenSpans",!0,N,!0),ci("addModeClass",!1,N,!0),ci("pollInterval",100),ci("undoDepth",200,function(e,t){e.doc.history.undoDepth=t}),ci("historyEventDelay",1250),ci("viewportMargin",10,function(e){e.refresh()},!0),ci("maxHighlightLength",1e4,N,!0),ci("moveInputWithCursor",!0,function(e,t){t||(e.display.inputDiv.style.top=e.display.inputDiv.style.left=0)}),ci("tabindex",null,function(e,t){e.display.input.tabIndex=t||""}),ci("autofocus",null);var pi=S.modes={},di=S.mimeModes={};S.defineMode=function(e,t){!S.defaults.mode&&e!="null"&&(S.defaults.mode=e),arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),pi[e]=t},S.defineMIME=function(e,t){di[e]=t},S.resolveMode=function(e){if(typeof e=="string"&&di.hasOwnProperty(e))e=di[e];else if(e&&typeof e.name=="string"&&di.hasOwnProperty(e.name)){var t=di[e.name];typeof t=="string"&&(t={name:t}),e=Uo(t,e),e.name=t.name}else if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return S.resolveMode("application/xml");return typeof e=="string"?{name:e}:e||{name:"null"}},S.getMode=function(e,t){var t=S.resolveMode(t),n=pi[t.name];if(!n)return S.getMode(e,"text/plain");var r=n(e,t);if(vi.hasOwnProperty(t.name)){var i=vi[t.name];for(var s in i){if(!i.hasOwnProperty(s))continue;r.hasOwnProperty(s)&&(r["_"+s]=r[s]),r[s]=i[s]}}r.name=t.name,t.helperType&&(r.helperType=t.helperType);if(t.modeProps)for(var s in t.modeProps)r[s]=t.modeProps[s];return r},S.defineMode("null",function(){return{token:function(e){e.skipToEnd()}}}),S.defineMIME("text/plain","null");var vi=S.modeExtensions={};S.extendMode=function(e,t){var n=vi.hasOwnProperty(e)?vi[e]:vi[e]={};zo(t,n)},S.defineExtension=function(e,t){S.prototype[e]=t},S.defineDocExtension=function(e,t){js.prototype[e]=t},S.defineOption=ci;var mi=[];S.defineInitHook=function(e){mi.push(e)};var gi=S.helpers={};S.registerHelper=function(e,t,n){gi.hasOwnProperty(e)||(gi[e]=S[e]={_global:[]}),gi[e][t]=n},S.registerGlobalHelper=function(e,t,n,r){S.registerHelper(e,t,r),gi[e]._global.push({pred:n,val:r})};var yi=S.copyState=function(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var i=t[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n},bi=S.startState=function(e,t,n){return e.startState?e.startState(t,n):!0};S.innerMode=function(e,t){while(e.innerMode){var n=e.innerMode(t);if(!n||n.mode==e)break;t=n.state,e=n.mode}return n||{mode:e,state:t}};var wi=S.commands={selectAll:function(e){e.setSelection(ht(e.firstLine(),0),ht(e.lastLine()),Oo)},singleSelection:function(e){e.setSelection(e.getCursor("anchor"),e.getCursor("head"),Oo)},killLine:function(e){oi(e,function(t){if(t.empty()){var n=Us(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line<e.lastLine()?{from:t.head,to:ht(t.head.line+1,0)}:{from:t.head,to:ht(t.head.line,n)}}return{from:t.from(),to:t.to()}})},deleteLine:function(e){oi(e,function(t){return{from:ht(t.from().line,0),to:St(e.doc,ht(t.to().line+1,0))}})},delLineLeft:function(e){oi(e,function(e){return{from:ht(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(e){oi(e,function(t){var n=e.charCoords(t.head,"div").top+5,r=e.coordsChar({left:0,top:n},"div");return{from:r,to:t.from()}})},delWrappedLineRight:function(e){oi(e,function(t){var n=e.charCoords(t.head,"div").top+5,r=e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:n},"div");return{from:t.from(),to:r}})},undo:function(e){e.undo()},redo:function(e){e.redo()},undoSelection:function(e){e.undoSelection()},redoSelection:function(e){e.redoSelection()},goDocStart:function(e){e.extendSelection(ht(e.firstLine(),0))},goDocEnd:function(e){e.extendSelection(ht(e.lastLine()))},goLineStart:function(e){e.extendSelectionsBy(function(t){return Au(e,t.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(e){e.extendSelectionsBy(function(t){return Mu(e,t.head)},{origin:"+move",bias:1})},goLineEnd:function(e){e.extendSelectionsBy(function(t){return Ou(e,t.head.line)},{origin:"+move",bias:-1})},goLineRight:function(e){e.extendSelectionsBy(function(t){var n=e.charCoords(t.head,"div").top+5;return e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:n},"div")},_o)},goLineLeft:function(e){e.extendSelectionsBy(function(t){var n=e.charCoords(t.head,"div").top+5;return e.coordsChar({left:0,top:n},"div")},_o)},goLineLeftSmart:function(e){e.extendSelectionsBy(function(t){var n=e.charCoords(t.head,"div").top+5,r=e.coordsChar({left:0,top:n},"div");return r.ch<e.getLine(r.line).search(/\S/)?Mu(e,t.head):r},_o)},goLineUp:function(e){e.moveV(-1,"line")},goLineDown:function(e){e.moveV(1,"line")},goPageUp:function(e){e.moveV(-1,"page")},goPageDown:function(e){e.moveV(1,"page")},goCharLeft:function(e){e.moveH(-1,"char")},goCharRight:function(e){e.moveH(1,"char")},goColumnLeft:function(e){e.moveH(-1,"column")},goColumnRight:function(e){e.moveH(1,"column")},goWordLeft:function(e){e.moveH(-1,"word")},goGroupRight:function(e){e.moveH(1,"group")},goGroupLeft:function(e){e.moveH(-1,"group")},goWordRight:function(e){e.moveH(1,"word")},delCharBefore:function(e){e.deleteH(-1,"char")},delCharAfter:function(e){e.deleteH(1,"char")},delWordBefore:function(e){e.deleteH(-1,"word")},delWordAfter:function(e){e.deleteH(1,"word")},delGroupBefore:function(e){e.deleteH(-1,"group")},delGroupAfter:function(e){e.deleteH(1,"group")},indentAuto:function(e){e.indentSelection("smart")},indentMore:function(e){e.indentSelection("add")},indentLess:function(e){e.indentSelection("subtract")},insertTab:function(e){e.replaceSelection("	")},insertSoftTab:function(e){var t=[],n=e.listSelections(),r=e.options.tabSize;for(var i=0;i<n.length;i++){var s=n[i].from(),o=Po(e.getLine(s.line),s.ch,r);t.push((new Array(r-o%r+1)).join(" "))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection("add"):e.execCommand("insertTab")},transposeChars:function(e){Bn(e,function(){var t=e.listSelections(),n=[];for(var r=0;r<t.length;r++){var i=t[r].head,s=Us(e.doc,i.line).text;if(s){i.ch==s.length&&(i=new ht(i.line,i.ch-1));if(i.ch>0)i=new ht(i.line,i.ch+1),e.replaceRange(s.charAt(i.ch-1)+s.charAt(i.ch-2),ht(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var o=Us(e.doc,i.line-1).text;o&&e.replaceRange(s.charAt(0)+"\n"+o.charAt(o.length-1),ht(i.line-1,o.length-1),ht(i.line,1),"+transpose")}}n.push(new yt(i,i))}e.setSelections(n)})},newlineAndIndent:function(e){Bn(e,function(){var t=e.listSelections().length;for(var n=0;n<t;n++){var r=e.listSelections()[n];e.replaceRange("\n",r.anchor,r.head,"+input"),e.indentLine(r.from().line+1,null,!0),ni(e)}})},toggleOverwrite:function(e){e.toggleOverwrite()}},Ei=S.keyMap={};Ei.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Ei.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Ei.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars"},Ei.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Ei["default"]=v?Ei.macDefault:Ei.pcDefault,S.normalizeKeyMap=function(e){var t={};for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];if(/^(name|fallthrough|(de|at)tach)$/.test(n))continue;if(r=="..."){delete e[n];continue}var i=Ro(n.split(" "),Si);for(var s=0;s<i.length;s++){var o,u;s==i.length-1?(u=n,o=r):(u=i.slice(0,s+1).join(" "),o="...");var a=t[u];if(!a)t[u]=o;else if(a!=o)throw new Error("Inconsistent bindings for "+u)}delete e[n]}for(var f in t)e[f]=t[f];return e};var xi=S.lookupKey=function(e,t,n){t=Ci(t);var r=t.call?t.call(e):t[e];if(r===!1)return"nothing";if(r==="...")return"multi";if(r!=null&&n(r))return"handled";if(t.fallthrough){if(Object.prototype.toString.call(t.fallthrough)!="[object Array]")return xi(e,t.fallthrough,n);for(var i=0;i<t.fallthrough.length;i++){var s=xi(e,t.fallthrough[i],n);if(s)return s}}},Ti=S.isModifierKey=function(e){var t=typeof e=="string"?e:xu[e.keyCode];return t=="Ctrl"||t=="Alt"||t=="Shift"||t=="Mod"},Ni=S.keyName=function(e,t){if(a&&e.keyCode==34&&e["char"])return!1;var n=xu[e.keyCode],r=n;return r==null||e.altGraphKey?!1:(e.altKey&&n!="Alt"&&(r="Alt-"+r),(y?e.metaKey:e.ctrlKey)&&n!="Ctrl"&&(r="Ctrl-"+r),(y?e.ctrlKey:e.metaKey)&&n!="Cmd"&&(r="Cmd-"+r),!t&&e.shiftKey&&n!="Shift"&&(r="Shift-"+r),r)};S.fromTextArea=function(e,t){function r(){e.value=a.getValue()}t||(t={}),t.value=e.value,!t.tabindex&&e.tabindex&&(t.tabindex=e.tabindex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder);if(t.autofocus==null){var n=nu();t.autofocus=n==e||e.getAttribute("autofocus")!=null&&n==document.body}if(e.form){yo(e.form,"submit",r);if(!t.leaveSubmitMethodAlone){var i=e.form,s=i.submit;try{var o=i.submit=function(){r(),i.submit=s,i.submit(),i.submit=o}}catch(u){}}}e.style.display="none";var a=S(function(t){e.parentNode.insertBefore(t,e.nextSibling)},t);return a.save=r,a.getTextArea=function(){return e},a.toTextArea=function(){a.toTextArea=isNaN,r(),e.parentNode.removeChild(a.getWrapperElement()),e.style.display="",e.form&&(bo(e.form,"submit",r),typeof e.form.submit=="function"&&(e.form.submit=s))},a};var ki=S.StringStream=function(e,t){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};ki.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||undefined},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(e){var t=this.string.charAt(this.pos);if(typeof e=="string")var n=t==e;else var n=t&&(e.test?e.test(t):e(t));if(n)return++this.pos,t},eatWhile:function(e){var t=this.pos;while(this.eat(e));return this.pos>t},eatSpace:function(){var e=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},backUp:function(e){this.pos-=e},column:function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=Po(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?Po(this.string,this.lineStart,this.tabSize):0)},indentation:function(){return Po(this.string,null,this.tabSize)-(this.lineStart?Po(this.string,this.lineStart,this.tabSize):0)},match:function(e,t,n){if(typeof e!="string"){var s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&t!==!1&&(this.pos+=s[0].length),s)}var r=function(e){return n?e.toLowerCase():e},i=this.string.substr(this.pos,e.length);if(r(i)==r(e))return t!==!1&&(this.pos+=e.length),!0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}};var Li=S.TextMarker=function(e,t){this.lines=[],this.type=t,this.doc=e};ko(Li),Li.prototype.clear=function(){if(this.explicitlyCleared)return;var e=this.doc.cm,t=e&&!e.curOp;t&&kn(e);if(Co(this,"clear")){var n=this.find();n&&So(this,"clear",n.from,n.to)}var r=null,i=null;for(var s=0;s<this.lines.length;++s){var o=this.lines[s],u=ji(o.markedSpans,this);e&&!this.collapsed?zn(e,Vs(o),"text"):e&&(u.to!=null&&(i=Vs(o)),u.from!=null&&(r=Vs(o))),o.markedSpans=Fi(o.markedSpans,u),u.from==null&&this.collapsed&&!ss(this.doc,o)&&e&&Xs(o,xn(e.display))}if(e&&this.collapsed&&!e.options.lineWrapping)for(var s=0;s<this.lines.length;++s){var a=ts(this.lines[s]),f=D(a);f>e.display.maxLineLength&&(e.display.maxLine=a,e.display.maxLineLength=f,e.display.maxLineChanged=!0)}r!=null&&e&&this.collapsed&&Un(e,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Bt(e.doc)),e&&So(e,"markerCleared",e,this),t&&An(e),this.parent&&this.parent.clear()},Li.prototype.find=function(e,t){e==null&&this.type=="bookmark"&&(e=1);var n,r;for(var i=0;i<this.lines.length;++i){var s=this.lines[i],o=ji(s.markedSpans,this);if(o.from!=null){n=ht(t?s:Vs(s),o.from);if(e==-1)return n}if(o.to!=null){r=ht(t?s:Vs(s),o.to);if(e==1)return r}}return n&&{from:n,to:r}},Li.prototype.changed=function(){var e=this.find(-1,!0),t=this,n=this.doc.cm;if(!e||!n)return;Bn(n,function(){var r=e.line,i=Vs(e.line),s=nn(n,i);s&&(fn(s),n.curOp.selectionChanged=n.curOp.forceUpdate=!0),n.curOp.updateMaxLine=!0;if(!ss(t.doc,r)&&t.height!=null){var o=t.height;t.height=null;var u=fs(t)-o;u&&Xs(r,r.height+u)}})},Li.prototype.attachLine=function(e){if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(!t.maybeHiddenMarkers||qo(t.maybeHiddenMarkers,this)==-1)&&(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(e)},Li.prototype.detachLine=function(e){this.lines.splice(qo(this.lines,e),1);if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(t.maybeHiddenMarkers||(t.maybeHiddenMarkers=[])).push(this)}};var Ai=0,Mi=S.SharedTextMarker=function(e,t){this.markers=e,this.primary=t;for(var n=0;n<e.length;++n)e[n].parent=this};ko(Mi),Mi.prototype.clear=function(){if(this.explicitlyCleared)return;this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)this.markers[e].clear();So(this,"clear")},Mi.prototype.find=function(e,t){return this.primary.find(e,t)};var us=S.LineWidget=function(e,t,n){if(n)for(var r in n)n.hasOwnProperty(r)&&(this[r]=n[r]);this.cm=e,this.node=t};ko(us),us.prototype.clear=function(){var e=this.cm,t=this.line.widgets,n=this.line,r=Vs(n);if(r==null||!t)return;for(var i=0;i<t.length;++i)t[i]==this&&t.splice(i--,1);t.length||(n.widgets=null);var s=fs(this);Bn(e,function(){as(e,n,-s),zn(e,r,"widget"),Xs(n,Math.max(0,n.height-s))})},us.prototype.changed=function(){var e=this.height,t=this.cm,n=this.line;this.height=null;var r=fs(this)-e;if(!r)return;Bn(t,function(){t.curOp.forceUpdate=!0,as(t,n,r),Xs(n,n.height+r)})};var cs=S.Line=function(e,t,n){this.text=e,$i(this,t),this.height=n?n(this):1};ko(cs),cs.prototype.lineNo=function(){return Vs(this)};var Ss={},xs={};Ps.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var n=e,r=e+t;n<r;++n){var i=this.lines[n];this.height-=i.height,ps(i),So(i,"delete")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,n){this.height+=n,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var r=0;r<t.length;++r)t[r].parent=this},iterN:function(e,t,n){for(var r=e+t;e<r;++e)if(n(this.lines[e]))return!0}},Hs.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var n=0;n<this.children.length;++n){var r=this.children[n],i=r.chunkSize();if(e<i){var s=Math.min(t,i-e),o=r.height;r.removeInner(e,s),this.height-=o-r.height,i==s&&(this.children.splice(n--,1),r.parent=null);if((t-=s)==0)break;e=0}else e-=i}if(this.size-t<25&&(this.children.length>1||!(this.children[0]instanceof Ps))){var u=[];this.collapse(u),this.children=[new Ps(u)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t<this.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,n){this.size+=t.length,this.height+=n;for(var r=0;r<this.children.length;++r){var i=this.children[r],s=i.chunkSize();if(e<=s){i.insertInner(e,t,n);if(i.lines&&i.lines.length>50){while(i.lines.length>50){var o=i.lines.splice(i.lines.length-25,25),u=new Ps(o);i.height-=u.height,this.children.splice(r+1,0,u),u.parent=this}this.maybeSpill()}break}e-=s}},maybeSpill:function(){if(this.children.length<=10)return;var e=this;do{var t=e.children.splice(e.children.length-5,5),n=new Hs(t);if(!e.parent){var r=new Hs(e.children);r.parent=e,e.children=[r,n],e=r}else{e.size-=n.size,e.height-=n.height;var i=qo(e.parent.children,e);e.parent.children.splice(i+1,0,n)}n.parent=e.parent}while(e.children.length>10);e.parent.maybeSpill()},iterN:function(e,t,n){for(var r=0;r<this.children.length;++r){var i=this.children[r],s=i.chunkSize();if(e<s){var o=Math.min(t,s-e);if(i.iterN(e,o,n))return!0;if((t-=o)==0)break;e=0}else e-=s}}};var Bs=0,js=S.Doc=function(e,t,n){if(!(this instanceof js))return new js(e,t,n);n==null&&(n=0),Hs.call(this,[new Ps([new cs("",null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=n;var r=ht(n,0);this.sel=wt(r),this.history=new Qs(null),this.id=++Bs,this.modeOption=t,typeof e=="string"&&(e=yu(e)),Ds(this,{from:r,to:r,text:e}),Dt(this,wt(r),Oo)};js.prototype=Uo(Hs.prototype,{constructor:js,iter:function(e,t,n){n?this.iterN(e-this.first,t-e,n):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){var n=0;for(var r=0;r<t.length;++r)n+=t[r].height;this.insertInner(e-this.first,t,n)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=Ws(this,this.first,this.first+this.size);return e===!1?t:t.join(e||"\n")},setValue:In(function(e){var t=ht(this.first,0),n=this.first+this.size-1;Wr(this,{from:t,to:ht(n,Us(this,n).text.length),text:yu(e),origin:"setValue"},!0),Dt(this,wt(t))}),replaceRange:function(e,t,n,r){t=St(this,t),n=n?St(this,n):t,Qr(this,e,t,n,r)},getRange:function(e,t,n){var r=zs(this,St(this,e),St(this,t));return n===!1?r:r.join(n||"\n")},getLine:function(e){var t=this.getLineHandle(e);return t&&t.text},getLineHandle:function(e){if(Tt(this,e))return Us(this,e)},getLineNumber:function(e){return Vs(e)},getLineHandleVisualStart:function(e){return typeof e=="number"&&(e=Us(this,e)),ts(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return St(this,e)},getCursor:function(e){var t=this.sel.primary(),n;return e==null||e=="head"?n=t.head:e=="anchor"?n=t.anchor:e=="end"||e=="to"||e===!1?n=t.to():n=t.from(),n},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:In(function(e,t,n){Ot(this,St(this,typeof e=="number"?ht(e,t||0):e),null,n)}),setSelection:In(function(e,t,n){Ot(this,St(this,e),St(this,t||e),n)}),extendSelection:In(function(e,t,n){kt(this,St(this,e),t&&St(this,t),n)}),extendSelections:In(function(e,t){Lt(this,Nt(this,e,t))}),extendSelectionsBy:In(function(e,t){Lt(this,Ro(this.sel.ranges,e),t)}),setSelections:In(function(e,t,n){if(!e.length)return;for(var r=0,i=[];r<e.length;r++)i[r]=new yt(St(this,e[r].anchor),St(this,e[r].head));t==null&&(t=Math.min(e.length-1,this.sel.primIndex)),Dt(this,bt(i,t),n)}),addSelection:In(function(e,t,n){var r=this.sel.ranges.slice(0);r.push(new yt(St(this,e),St(this,t||e))),Dt(this,bt(r,r.length-1),n)}),getSelection:function(e){var t=this.sel.ranges,n;for(var r=0;r<t.length;r++){var i=zs(this,t[r].from(),t[r].to());n=n?n.concat(i):i}return e===!1?n:n.join(e||"\n")},getSelections:function(e){var t=[],n=this.sel.ranges;for(var r=0;r<n.length;r++){var i=zs(this,n[r].from(),n[r].to());e!==!1&&(i=i.join(e||"\n")),t[r]=i}return t},replaceSelection:function(e,t,n){var r=[];for(var i=0;i<this.sel.ranges.length;i++)r[i]=e;this.replaceSelections(r,t,n||"+input")},replaceSelections:In(function(e,t,n){var r=[],i=this.sel;for(var s=0;s<i.ranges.length;s++){var o=i.ranges[s];r[s]={from:o.from(),to:o.to(),text:yu(e[s]),origin:n}}var u=t&&t!="end"&&Ur(this,r,t);for(var s=r.length-1;s>=0;s--)Wr(this,r[s]);u?_t(this,u):this.cm&&ni(this.cm)}),undo:In(function(){Vr(this,"undo")}),redo:In(function(){Vr(this,"redo")}),undoSelection:In(function(){Vr(this,"undo",!0)}),redoSelection:In(function(){Vr(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){var e=this.history,t=0,n=0;for(var r=0;r<e.done.length;r++)e.done[r].ranges||++t;for(var r=0;r<e.undone.length;r++)e.undone[r].ranges||++n;return{undo:t,redo:n}},clearHistory:function(){this.history=new Qs(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:uo(this.history.done),undone:uo(this.history.undone)}},setHistory:function(e){var t=this.history=new Qs(this.history.maxGeneration);t.done=uo(e.done.slice(0),null,!0),t.undone=uo(e.undone.slice(0),null,!0)},addLineClass:In(function(e,t,n){return si(this,e,t=="gutter"?"gutter":"class",function(e){var r=t=="text"?"textClass":t=="background"?"bgClass":t=="gutter"?"gutterClass":"wrapClass";if(!e[r])e[r]=n;else{if(ru(n).test(e[r]))return!1;e[r]+=" "+n}return!0})}),removeLineClass:In(function(e,t,n){return si(this,e,"class",function(e){var r=t=="text"?"textClass":t=="background"?"bgClass":t=="gutter"?"gutterClass":"wrapClass",i=e[r];if(!i)return!1;if(n==null)e[r]=null;else{var s=i.match(ru(n));if(!s)return!1;var o=s.index+s[0].length;e[r]=i.slice(0,s.index)+(!s.index||o==i.length?"":" ")+i.slice(o)||null}return!0})}),markText:function(e,t,n){return Oi(this,St(this,e),St(this,t),n,"range")},setBookmark:function(e,t){var n={replacedWith:t&&(t.nodeType==null?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared};return e=St(this,e),Oi(this,e,e,n,"bookmark")},findMarksAt:function(e){e=St(this,e);var t=[],n=Us(this,e.line).markedSpans;if(n)for(var r=0;r<n.length;++r){var i=n[r];(i.from==null||i.from<=e.ch)&&(i.to==null||i.to>=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,n){e=St(this,e),t=St(this,t);var r=[],i=e.line;return this.iter(e.line,t.line+1,function(s){var o=s.markedSpans;if(o)for(var u=0;u<o.length;u++){var a=o[u];!(i==e.line&&e.ch>a.to||a.from==null&&i!=e.line||i==t.line&&a.from>t.ch)&&(!n||n(a.marker))&&r.push(a.marker.parent||a.marker)}++i}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var n=t.markedSpans;if(n)for(var r=0;r<n.length;++r)n[r].from!=null&&e.push(n[r].marker)}),e},posFromIndex:function(e){var t,n=this.first;return this.iter(function(r){var i=r.text.length+1;if(i>e)return t=e,!0;e-=i,++n}),St(this,ht(n,t))},indexFromPos:function(e){e=St(this,e);var t=e.ch;return e.line<this.first||e.ch<0?0:(this.iter(this.first,e.line,function(e){t+=e.text.length+1}),t)},copy:function(e){var t=new js(Ws(this,this.first,this.first+this.size),this.modeOption,this.first);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e||(e={});var t=this.first,n=this.first+this.size;e.from!=null&&e.from>t&&(t=e.from),e.to!=null&&e.to<n&&(n=e.to);var r=new js(Ws(this,t,n),e.mode||this.modeOption,t);return e.sharedHist&&(r.history=this.history),(this.linked||(this.linked=[])).push({doc:r,sharedHist:e.sharedHist}),r.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],Pi(r,Di(this)),r},unlinkDoc:function(e){e instanceof S&&(e=e.doc);if(this.linked)for(var t=0;t<this.linked.length;++t){var n=this.linked[t];if(n.doc!=e)continue;this.linked.splice(t,1),e.unlinkDoc(this),Hi(Di(this));break}if(e.history==this.history){var r=[e.id];qs(e,function(e){r.push(e.id)},!0),e.history=new Qs(null),e.history.done=uo(this.history.done,r),e.history.undone=uo(this.history.undone,r)}},iterLinkedDocs:function(e){qs(this,e)},getMode:function(){return this.mode},getEditor:function(){return this.cm}}),js.prototype.eachLine=js.prototype.iter;var Fs="iter insert remove copy getEditor".split(" ");for(var Is in js.prototype)js.prototype.hasOwnProperty(Is)&&qo(Fs,Is)<0&&(S.prototype[Is]=function(e){return function(){return e.apply(this.doc,arguments)}}(js.prototype[Is]));ko(js);var co=S.e_preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},ho=S.e_stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},vo=S.e_stop=function(e){co(e),ho(e)},yo=S.on=function(e,t,n){if(e.addEventListener)e.addEventListener(t,n,!1);else if(e.attachEvent)e.attachEvent("on"+t,n);else{var r=e._handlers||(e._handlers={}),i=r[t]||(r[t]=[]);i.push(n)}},bo=S.off=function(e,t,n){if(e.removeEventListener)e.removeEventListener(t,n,!1);else if(e.detachEvent)e.detachEvent("on"+t,n);else{var r=e._handlers&&e._handlers[t];if(!r)return;for(var i=0;i<r.length;++i)if(r[i]==n){r.splice(i,1);break}}},wo=S.signal=function(e,t){var n=e._handlers&&e._handlers[t];if(!n)return;var r=Array.prototype.slice.call(arguments,2);for(var i=0;i<n.length;++i)n[i].apply(null,r)},Eo=null,Lo=30,Ao=S.Pass={toString:function(){return"CodeMirror.Pass"}},Oo={scroll:!1},Mo={origin:"*mouse"},_o={origin:"+move"};Do.prototype.set=function(e,t){clearTimeout(this.id),this.id=setTimeout(t,e)};var Po=S.countColumn=function(e,t,n,r,i){t==null&&(t=e.search(/[^\s\u00a0]/),t==-1&&(t=e.length));for(var s=r||0,o=i||0;;){var u=e.indexOf("	",s);if(u<0||u>=t)return o+(t-s);o+=u-s,o+=n-o%n,s=u+1}},Bo=[""],Io=function(e){e.select()};p?Io=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:r&&(Io=function(e){try{e.select()}catch(t){}}),[].indexOf&&(qo=function(e,t){return e.indexOf(t)}),[].map&&(Ro=function(e,t){return e.map(t)});var Xo=/[\u00df\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Vo=S.isWordChar=function(e){return/\w/.test(e)||e>"€"&&(e.toUpperCase()!=e.toLowerCase()||Xo.test(e))},Ko=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/,Yo;document.createRange?Yo=function(e,t,n){var r=document.createRange();return r.setEnd(e,n),r.setStart(e,t),r}:Yo=function(e,t,n){var r=document.body.createTextRange();try{r.moveToElementText(e.parentNode)}catch(i){return r}return r.collapse(!0),r.moveEnd("character",n),r.moveStart("character",t),r},r&&i<11&&(nu=function(){try{return document.activeElement}catch(e){return document.body}});var iu=S.rmClass=function(e,t){var n=e.className,r=ru(t).exec(n);if(r){var i=n.slice(r.index+r[0].length);e.className=n.slice(0,r.index)+(i?r[1]+i:"")}},su=S.addClass=function(e,t){var n=e.className;ru(t).test(n)||(e.className+=(n?" ":"")+t)},au=!1,cu=function(){if(r&&i<9)return!1;var e=Go("div");return"draggable"in e||"dragDrop"in e}(),hu,du,mu,yu=S.splitLines="\n\nb".split(/\n/).length!=3?function(e){var t=0,n=[],r=e.length;while(t<=r){var i=e.indexOf("\n",t);i==-1&&(i=e.length);var s=e.slice(t,e.charAt(i-1)=="\r"?i-1:i),o=s.indexOf("\r");o!=-1?(n.push(s.slice(0,o)),t+=o+1):(n.push(s),t=i+1)}return n}:function(e){return e.split(/\r\n?|\n/)},bu=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(t){return!1}}:function(e){try{var t=e.ownerDocument.selection.createRange()}catch(n){}return!t||t.parentElement()!=e?!1:t.compareEndPoints("StartToEnd",t)!=0},wu=function(){var e=Go("div");return"oncopy"in e?!0:(e.setAttribute("oncopy","return;"),typeof e.oncopy=="function")}(),Eu=null,xu={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",107:"=",109:"-",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};S.keyNames=xu,function(){for(var e=0;e<10;e++)xu[e+48]=xu[e+96]=String(e);for(var e=65;e<=90;e++)xu[e]=String.fromCharCode(e);for(var e=1;e<=12;e++)xu[e+111]=xu[e+63235]="F"+e}();var Du,Fu=function(){function n(n){return n<=247?e.charAt(n):1424<=n&&n<=1524?"R":1536<=n&&n<=1773?t.charAt(n-1536):1774<=n&&n<=2220?"r":8192<=n&&n<=8203?"w":n==8204?"b":"L"}function f(e,t,n){this.level=e,this.from=t,this.to=n}var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,i=/[stwN]/,s=/[LRr]/,o=/[Lb1n]/,u=/[1n]/,a="L";return function(e){if(!r.test(e))return!1;var t=e.length,l=[];for(var c=0,h;c<t;++c)l.push(h=n(e.charCodeAt(c)));for(var c=0,p=a;c<t;++c){var h=l[c];h=="m"?l[c]=p:p=h}for(var c=0,d=a;c<t;++c){var h=l[c];h=="1"&&d=="r"?l[c]="n":s.test(h)&&(d=h,h=="r"&&(l[c]="R"))}for(var c=1,p=l[0];c<t-1;++c){var h=l[c];h=="+"&&p=="1"&&l[c+1]=="1"?l[c]="1":h==","&&p==l[c+1]&&(p=="1"||p=="n")&&(l[c]=p),p=h}for(var c=0;c<t;++c){var h=l[c];if(h==",")l[c]="N";else if(h=="%"){for(var v=c+1;v<t&&l[v]=="%";++v);var m=c&&l[c-1]=="!"||v<t&&l[v]=="1"?"1":"N";for(var g=c;g<v;++g)l[g]=m;c=v-1}}for(var c=0,d=a;c<t;++c){var h=l[c];d=="L"&&h=="1"?l[c]="L":s.test(h)&&(d=h)}for(var c=0;c<t;++c)if(i.test(l[c])){for(var v=c+1;v<t&&i.test(l[v]);++v);var y=(c?l[c-1]:a)=="L",b=(v<t?l[v]:a)=="L",m=y||b?"L":"R";for(var g=c;g<v;++g)l[g]=m;c=v-1}var w=[],E;for(var c=0;c<t;)if(o.test(l[c])){var S=c;for(++c;c<t&&o.test(l[c]);++c);w.push(new f(0,S,c))}else{var x=c,T=w.length;for(++c;c<t&&l[c]!="L";++c);for(var g=x;g<c;)if(u.test(l[g])){x<g&&w.splice(T,0,new f(1,x,g));var N=g;for(++g;g<c&&u.test(l[g]);++g);w.splice(T,0,new f(2,N,g)),x=g}else++g;x<c&&w.splice(T,0,new f(1,x,c))}return w[0].level==1&&(E=e.match(/^\s+/))&&(w[0].from=E[0].length,w.unshift(new f(0,0,E[0].length))),Fo(w).level==1&&(E=e.match(/\s+$/))&&(Fo(w).to-=E[0].length,w.push(new f(0,t-E[0].length,t))),w[0].level!=Fo(w).level&&w.push(new f(w[0].level,t,t)),w}}();return S.version="4.8.0",S}),define("CMLint",["react","lodash","jquery","./libs/codemirror-4.8/lib/codemirror"],function(e,t,n,r){function i(e){var t=e.severity;t||(t="error");var n=document.createElement("div");return n.className="CodeMirror-lint-message-"+t,n.appendChild(document.createTextNode(e.message)),n}function o(e,t){var n=document.createDocumentFragment(),r={severity:"error",message:t.message};n.appendChild(i(r)),e.setGutterMarker(Math.max(t.line,0),s,a(n,"error",!1,"state.options.tooltips"))}function u(e){e.clearGutter(s)}function a(e,t,n,i){var s=document.createElement("div"),o=s;return s.className="CodeMirror-lint-marker-"+t,n&&(o=s.appendChild(document.createElement("div")),o.className="CodeMirror-lint-marker-multiple"),i!==!1&&r.on(o,"mouseover",function(t){h(t,e,o)}),s}function f(e,t){function i(e){if(!n.parentNode)return r.off(document,"mousemove",i);n.style.top=Math.max(0,e.clientY-n.offsetHeight-5)+"px",n.style.left=e.clientX+5+"px"}var n=document.createElement("div");return n.className="CodeMirror-lint-tooltip",n.appendChild(t.cloneNode(!0)),document.body.appendChild(n),r.on(document,"mousemove",i),i(e),n.style.opacity!==null&&(n.style.opacity=1),n}function l(e){e.parentNode&&e.parentNode.removeChild(e)}function c(e){if(!e.parentNode)return;e.style.opacity===null&&l(e),e.style.opacity=0,setTimeout(function(){l(e)},600)}function h(e,t,n){function s(){r.off(n,"mouseout",s),i&&(c(i),i=null)}var i=f(e,t),o=setInterval(function(){if(i)for(var e=n;;e=e.parentNode){if(e===document.body)return undefined;if(!e){s();break}}if(!i)return clearInterval(o)},400);r.on(n,"mouseout",s)}var s="rt-annotations";return{GUTTER_ID:s,annotate:o,clearMarks:u}}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("libs/codemirror-4.8/mode/javascript/javascript",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){e.defineMode("javascript",function(t,n){function h(e){var t=!1,n,r=!1;while((n=e.next())!=null){if(!t){if(n=="/"&&!r)return;n=="["?r=!0:r&&n=="]"&&(r=!1)}t=!t&&n=="\\"}}function v(e,t,n){return p=e,d=n,t}function m(e,t){var n=e.next();if(n=='"'||n=="'")return t.tokenize=g(n),t.tokenize(e,t);if(n=="."&&e.match(/^\d+(?:[eE][+\-]?\d+)?/))return v("number","number");if(n=="."&&e.match(".."))return v("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(n))return v(n);if(n=="="&&e.eat(">"))return v("=>","operator");if(n=="0"&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),v("number","number");if(/\d/.test(n))return e.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),v("number","number");if(n=="/")return e.eat("*")?(t.tokenize=y,y(e,t)):e.eat("/")?(e.skipToEnd(),v("comment","comment")):t.lastType=="operator"||t.lastType=="keyword c"||t.lastType=="sof"||/^[\[{}\(,;:]$/.test(t.lastType)?(h(e),e.eatWhile(/[gimy]/),v("regexp","string-2")):(e.eatWhile(l),v("operator","operator",e.current()));if(n=="`")return t.tokenize=b,b(e,t);if(n=="#")return e.skipToEnd(),v("error","error");if(l.test(n))return e.eatWhile(l),v("operator","operator",e.current());if(a.test(n)){e.eatWhile(a);var r=e.current(),i=f.propertyIsEnumerable(r)&&f[r];return i&&t.lastType!="."?v(i.type,i.style,r):v("variable","variable",r)}}function g(e){return function(t,n){var r=!1,i;if(s&&t.peek()=="@"&&t.match(c))return n.tokenize=m,v("jsonld-keyword","meta");while((i=t.next())!=null){if(i==e&&!r)break;r=!r&&i=="\\"}return r||(n.tokenize=m),v("string","string")}}function y(e,t){var n=!1,r;while(r=e.next()){if(r=="/"&&n){t.tokenize=m;break}n=r=="*"}return v("comment","comment")}function b(e,t){var n=!1,r;while((r=e.next())!=null){if(!n&&(r=="`"||r=="$"&&e.eat("{"))){t.tokenize=m;break}n=!n&&r=="\\"}return v("quasi","string-2",e.current())}function E(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var n=e.string.indexOf("=>",e.start);if(n<0)return;var r=0,i=!1;for(var s=n-1;s>=0;--s){var o=e.string.charAt(s),u=w.indexOf(o);if(u>=0&&u<3){if(!r){++s;break}if(--r==0)break}else if(u>=3&&u<6)++r;else if(a.test(o))i=!0;else if(i&&!r){++s;break}}i&&!r&&(t.fatArrowAt=s)}function x(e,t,n,r,i,s){this.indented=e,this.column=t,this.type=n,this.prev=i,this.info=s,r!=null&&(this.align=r)}function T(e,t){for(var n=e.localVars;n;n=n.next)if(n.name==t)return!0;for(var r=e.context;r;r=r.prev)for(var n=r.vars;n;n=n.next)if(n.name==t)return!0}function N(e,t,n,r,i){var s=e.cc;C.state=e,C.stream=i,C.marked=null,C.cc=s,C.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);for(;;){var u=s.length?s.pop():o?j:B;if(u(n,r)){while(s.length&&s[s.length-1].lex)s.pop()();return C.marked?C.marked:n=="variable"&&T(e,r)?"variable-2":t}}}function k(){for(var e=arguments.length-1;e>=0;e--)C.cc.push(arguments[e])}function L(){return k.apply(null,arguments),!0}function A(e){function t(t){for(var n=t;n;n=n.next)if(n.name==e)return!0;return!1}var r=C.state;if(r.context){C.marked="def";if(t(r.localVars))return;r.localVars={name:e,next:r.localVars}}else{if(t(r.globalVars))return;n.globalVars&&(r.globalVars={name:e,next:r.globalVars})}}function M(){C.state.context={prev:C.state.context,vars:C.state.localVars},C.state.localVars=O}function _(){C.state.localVars=C.state.context.vars,C.state.context=C.state.context.prev}function D(e,t){var n=function(){var n=C.state,r=n.indented;if(n.lexical.type=="stat")r=n.lexical.indented;else for(var i=n.lexical;i&&i.type==")"&&i.align;i=i.prev)r=i.indented;n.lexical=new x(r,C.stream.column(),e,null,n.lexical,t)};return n.lex=!0,n}function P(){var e=C.state;e.lexical.prev&&(e.lexical.type==")"&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function H(e){function t(n){return n==e?L():e==";"?k():L(t)}return t}function B(e,t){return e=="var"?L(D("vardef",t.length),it,H(";"),P):e=="keyword a"?L(D("form"),j,B,P):e=="keyword b"?L(D("form"),B,P):e=="{"?L(D("}"),tt,P):e==";"?L():e=="if"?(C.state.lexical.info=="else"&&C.state.cc[C.state.cc.length-1]==P&&C.state.cc.pop()(),L(D("form"),j,B,P,ft)):e=="function"?L(vt):e=="for"?L(D("form"),lt,B,P):e=="variable"?L(D("stat"),J):e=="switch"?L(D("form"),j,D("}","switch"),H("{"),tt,P,P):e=="case"?L(j,H(":")):e=="default"?L(H(":")):e=="catch"?L(D("form"),M,H("("),mt,H(")"),B,P,_):e=="module"?L(D("form"),M,Et,_,P):e=="class"?L(D("form"),gt,P):e=="export"?L(D("form"),St,P):e=="import"?L(D("form"),xt,P):k(D("stat"),j,H(";"),P)}function j(e){return I(e,!1)}function F(e){return I(e,!0)}function I(e,t){if(C.state.fatArrowAt==C.stream.start){var n=t?$:V;if(e=="(")return L(M,D(")"),Z(st,")"),P,H("=>"),n,_);if(e=="variable")return k(M,st,H("=>"),n,_)}var r=t?z:U;return S.hasOwnProperty(e)?L(r):e=="function"?L(vt,r):e=="keyword c"?L(t?R:q):e=="("?L(D(")"),q,Lt,H(")"),P,r):e=="operator"||e=="spread"?L(t?F:j):e=="["?L(D("]"),Ct,P,r):e=="{"?et(Q,"}",null,r):e=="quasi"?k(W,r):L()}function q(e){return e.match(/[;\}\)\],]/)?k():k(j)}function R(e){return e.match(/[;\}\)\],]/)?k():k(F)}function U(e,t){return e==","?L(j):z(e,t,!1)}function z(e,t,n){var r=n==0?U:z,i=n==0?j:F;if(e=="=>")return L(M,n?$:V,_);if(e=="operator")return/\+\+|--/.test(t)?L(r):t=="?"?L(j,H(":"),i):L(i);if(e=="quasi")return k(W,r);if(e==";")return;if(e=="(")return et(F,")","call",r);if(e==".")return L(K,r);if(e=="[")return L(D("]"),q,H("]"),P,r)}function W(e,t){return e!="quasi"?k():t.slice(t.length-2)!="${"?L(W):L(j,X)}function X(e){if(e=="}")return C.marked="string-2",C.state.tokenize=b,L(W)}function V(e){return E(C.stream,C.state),k(e=="{"?B:j)}function $(e){return E(C.stream,C.state),k(e=="{"?B:F)}function J(e){return e==":"?L(P,B):k(U,H(";"),P)}function K(e){if(e=="variable")return C.marked="property",L()}function Q(e,t){if(e=="variable"||C.style=="keyword")return C.marked="property",t=="get"||t=="set"?L(G):L(Y);if(e=="number"||e=="string")return C.marked=s?"property":C.style+" property",L(Y);if(e=="jsonld-keyword")return L(Y);if(e=="[")return L(j,H("]"),Y)}function G(e){return e!="variable"?k(Y):(C.marked="property",L(vt))}function Y(e){if(e==":")return L(F);if(e=="(")return k(vt)}function Z(e,t){function n(r){if(r==","){var i=C.state.lexical;return i.info=="call"&&(i.pos=(i.pos||0)+1),L(e,n)}return r==t?L():L(H(t))}return function(r){return r==t?L():k(e,n)}}function et(e,t,n){for(var r=3;r<arguments.length;r++)C.cc.push(arguments[r]);return L(D(t,n),Z(e,t),P)}function tt(e){return e=="}"?L():k(B,tt)}function nt(e){if(u&&e==":")return L(rt)}function rt(e){if(e=="variable")return C.marked="variable-3",L()}function it(){return k(st,nt,ut,at)}function st(e,t){if(e=="variable")return A(t),L();if(e=="[")return et(st,"]");if(e=="{")return et(ot,"}")}function ot(e,t){return e=="variable"&&!C.stream.match(/^\s*:/,!1)?(A(t),L(ut)):(e=="variable"&&(C.marked="property"),L(H(":"),st,ut))}function ut(e,t){if(t=="=")return L(F)}function at(e){if(e==",")return L(it)}function ft(e,t){if(e=="keyword b"&&t=="else")return L(D("form","else"),B,P)}function lt(e){if(e=="(")return L(D(")"),ct,H(")"),P)}function ct(e){return e=="var"?L(it,H(";"),pt):e==";"?L(pt):e=="variable"?L(ht):k(j,H(";"),pt)}function ht(e,t){return t=="in"||t=="of"?(C.marked="keyword",L(j)):L(U,pt)}function pt(e,t){return e==";"?L(dt):t=="in"||t=="of"?(C.marked="keyword",L(j)):k(j,H(";"),dt)}function dt(e){e!=")"&&L(j)}function vt(e,t){if(t=="*")return C.marked="keyword",L(vt);if(e=="variable")return A(t),L(vt);if(e=="(")return L(M,D(")"),Z(mt,")"),P,B,_)}function mt(e){return e=="spread"?L(mt):k(st,nt)}function gt(e,t){if(e=="variable")return A(t),L(yt)}function yt(e,t){if(t=="extends")return L(j,yt);if(e=="{")return L(D("}"),bt,P)}function bt(e,t){if(e=="variable"||C.style=="keyword")return C.marked="property",t=="get"||t=="set"?L(wt,vt,bt):L(vt,bt);if(t=="*")return C.marked="keyword",L(bt);if(e==";")return L(bt);if(e=="}")return L()}function wt(e){return e!="variable"?k():(C.marked="property",L())}function Et(e,t){if(e=="string")return L(B);if(e=="variable")return A(t),L(Nt)}function St(e,t){return t=="*"?(C.marked="keyword",L(Nt,H(";"))):t=="default"?(C.marked="keyword",L(j,H(";"))):k(B)}function xt(e){return e=="string"?L():k(Tt,Nt)}function Tt(e,t){return e=="{"?et(Tt,"}"):(e=="variable"&&A(t),L())}function Nt(e,t){if(t=="from")return C.marked="keyword",L(j)}function Ct(e){return e=="]"?L():k(F,kt)}function kt(e){return e=="for"?k(Lt,H("]")):e==","?L(Z(R,"]")):k(Z(F,"]"))}function Lt(e){if(e=="for")return L(lt,Lt);if(e=="if")return L(j,Lt)}var r=t.indentUnit,i=n.statementIndent,s=n.jsonld,o=n.json||s,u=n.typescript,a=n.wordCharacters||/[\w$\xa1-\uffff]/,f=function(){function e(e){return{type:e,style:"keyword"}}var t=e("keyword a"),n=e("keyword b"),r=e("keyword c"),i=e("operator"),s={type:"atom",style:"atom"},o={"if":e("if"),"while":t,"with":t,"else":n,"do":n,"try":n,"finally":n,"return":r,"break":r,"continue":r,"new":r,"delete":r,"throw":r,"debugger":r,"var":e("var"),"const":e("var"),let:e("var"),"function":e("function"),"catch":e("catch"),"for":e("for"),"switch":e("switch"),"case":e("case"),"default":e("default"),"in":i,"typeof":i,"instanceof":i,"true":s,"false":s,"null":s,"undefined":s,NaN:s,Infinity:s,"this":e("this"),module:e("module"),"class":e("class"),"super":e("atom"),yield:r,"export":e("export"),"import":e("import"),"extends":r};if(u){var a={type:"variable",style:"variable-3"},f={"interface":e("interface"),"extends":e("extends"),constructor:e("constructor"),"public":e("public"),"private":e("private"),"protected":e("protected"),"static":e("static"),string:a,number:a,bool:a,any:a};for(var l in f)o[l]=f[l]}return o}(),l=/[+\-*&%=<>!?|~^]/,c=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,p,d,w="([{}])",S={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,"this":!0,"jsonld-keyword":!0},C={state:null,column:null,marked:null,cc:null},O={name:"this",next:{name:"arguments"}};return P.lex=!0,{startState:function(e){var t={tokenize:m,lastType:"sof",cc:[],lexical:new x((e||0)-r,0,"block",!1),localVars:n.localVars,context:n.localVars&&{vars:n.localVars},indented:0};return n.globalVars&&typeof n.globalVars=="object"&&(t.globalVars=n.globalVars),t},token:function(e,t){e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),E(e,t));if(t.tokenize!=y&&e.eatSpace())return null;var n=t.tokenize(e,t);return p=="comment"?n:(t.lastType=p!="operator"||d!="++"&&d!="--"?p:"incdec",N(t,n,p,d,e))},indent:function(t,s){if(t.tokenize==y)return e.Pass;if(t.tokenize!=m)return 0;var o=s&&s.charAt(0),u=t.lexical;if(!/^\s*else\b/.test(s))for(var a=t.cc.length-1;a>=0;--a){var f=t.cc[a];if(f==P)u=u.prev;else if(f!=ft)break}u.type=="stat"&&o=="}"&&(u=u.prev),i&&u.type==")"&&u.prev.type=="stat"&&(u=u.prev);var l=u.type,c=o==l;return l=="vardef"?u.indented+(t.lastType=="operator"||t.lastType==","?u.info+1:0):l=="form"&&o=="{"?u.indented:l=="form"?u.indented+r:l=="stat"?u.indented+(t.lastType=="operator"||t.lastType==","?i||r:0):u.info=="switch"&&!c&&n.doubleIndentSwitch!=0?u.indented+(/^(?:case|default)\b/.test(s)?r:2*r):u.align?u.column+(c?0:1):u.indented+(c?0:r)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:o?null:"/*",blockCommentEnd:o?null:"*/",lineComment:o?null:"//",fold:"brace",helperType:o?"json":"javascript",jsonldMode:s,jsonMode:o}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("libs/codemirror-4.8/addon/hint/xml-hint",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function n(n,r){var i=r&&r.schemaInfo,s=r&&r.quoteChar||'"';if(!i)return;var o=n.getCursor(),u=n.getTokenAt(o);if(/^<\/?$/.test(u.string)&&u.end==o.ch){var a=n.getTokenAt(t(o.line,o.ch+1));a.start==o.ch&&/\btag\b/.test(a.type)&&(u=a)}var f=e.innerMode(n.getMode(),u.state);if(f.mode.name!="xml")return;var l=[],c=!1,h,p=/\btag\b/.test(u.type)&&!/>$/.test(u.string),d=p&&/^\w/.test(u.string),v;if(d){var m=n.getLine(o.line).slice(Math.max(0,u.start-2),u.start),g=/<\/$/.test(m)?"close":/<$/.test(m)?"open":null;g&&(v=u.start-(g=="close"?2:1))}else p&&u.string=="<"?g="open":p&&u.string=="</"&&(g="close");if(!p&&!f.state.tagName||g){d&&(h=u.string),c=g;var y=f.state.context,b=y&&i[y.tagName],w=y?b&&b.children:i["!top"];if(w&&g!="close")for(var E=0;E<w.length;++E)(!h||w[E].lastIndexOf(h,0)==0)&&l.push("<"+w[E]);else if(g!="close")for(var S in i)i.hasOwnProperty(S)&&S!="!top"&&S!="!attrs"&&(!h||S.lastIndexOf(h,0)==0)&&l.push("<"+S);y&&(!h||g=="close"&&y.tagName.lastIndexOf(h,0)==0)&&l.push("</"+y.tagName+">")}else{var b=i[f.state.tagName],x=b&&b.attrs,T=i["!attrs"];if(!x&&!T)return;if(!x)x=T;else if(T){var N={};for(var C in T)T.hasOwnProperty(C)&&(N[C]=T[C]);for(var C in x)x.hasOwnProperty(C)&&(N[C]=x[C]);x=N}if(u.type=="string"||u.string=="="){var m=n.getRange(t(o.line,Math.max(0,o.ch-60)),t(o.line,u.type=="string"?u.start:u.end)),k=m.match(/([^\s\u00a0=<>\"\']+)=$/),L;if(!k||!x.hasOwnProperty(k[1])||!(L=x[k[1]]))return;typeof L=="function"&&(L=L.call(this,n));if(u.type=="string"){h=u.string;var A=0;/['"]/.test(u.string.charAt(0))&&(s=u.string.charAt(0),h=u.string.slice(1),A++);var O=u.string.length;/['"]/.test(u.string.charAt(O-1))&&(s=u.string.charAt(O-1),h=u.string.substr(A,O-2)),c=!0}for(var E=0;E<L.length;++E)(!h||L[E].lastIndexOf(h,0)==0)&&l.push(s+L[E]+s)}else{u.type=="attribute"&&(h=u.string,c=!0);for(var M in x)x.hasOwnProperty(M)&&(!h||M.lastIndexOf(h,0)==0)&&l.push(M)}}return{list:l,from:c?t(o.line,v==null?u.start:v):o,to:c?t(o.line,u.end):o}}var t=e.Pos;e.registerHelper("hint","xml",n)}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror","./xml-hint")):typeof define=="function"&&define.amd?define("libs/codemirror-4.8/addon/hint/html-hint",["../../lib/codemirror","./xml-hint"],e):e(CodeMirror)}(function(e){function l(e){for(var t in f)f.hasOwnProperty(t)&&(e.attrs[t]=f[t])}function h(t,n){var r={schemaInfo:a};if(n)for(var i in n)r[i]=n[i];return e.hint.xml(t,r)}var t="ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu".split(" "),n=["_blank","_self","_top","_parent"],r=["ascii","utf-8","utf-16","latin1","latin1"],i=["get","post","put","delete"],s=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],o=["all","screen","print","embossed","braille","handheld","print","projection","screen","tty","tv","speech","3d-glasses","resolution [>][<][=] [X]","device-aspect-ratio: X/Y","orientation:portrait","orientation:landscape","device-height: [X]","device-width: [X]"],u={attrs:{}},a={a:{attrs:{href:null,ping:null,type:null,media:o,target:n,hreflang:t}},abbr:u,acronym:u,address:u,applet:u,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:o,hreflang:t,type:null,shape:["default","rect","circle","poly"]}},article:u,aside:u,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["","autoplay"],loop:["","loop"],controls:["","controls"]}},b:u,base:{attrs:{href:null,target:n}},basefont:u,bdi:u,bdo:u,big:u,blockquote:{attrs:{cite:null}},body:u,br:u,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["","autofocus"],disabled:["","autofocus"],formenctype:s,formmethod:i,formnovalidate:["","novalidate"],formtarget:n,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:u,center:u,cite:u,code:u,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["","disabled"],checked:["","checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["","disabled"],multiple:["","multiple"]}},datalist:{attrs:{data:null}},dd:u,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["","open"]}},dfn:u,dir:u,div:u,dl:u,dt:u,em:u,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["","disabled"],form:null,name:null}},figcaption:u,figure:u,font:u,footer:u,form:{attrs:{action:null,name:null,"accept-charset":r,autocomplete:["on","off"],enctype:s,method:i,novalidate:["","novalidate"],target:n}},frame:u,frameset:u,h1:u,h2:u,h3:u,h4:u,h5:u,h6:u,head:{attrs:{},children:["title","base","link","style","meta","script","noscript","command"]},header:u,hgroup:u,hr:u,html:{attrs:{manifest:null},children:["head","body"]},i:u,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["","seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["","autofocus"],checked:["","checked"],disabled:["","disabled"],formenctype:s,formmethod:i,formnovalidate:["","novalidate"],formtarget:n,multiple:["","multiple"],readonly:["","readonly"],required:["","required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:u,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["","autofocus"],disabled:["","disabled"],keytype:["RSA"]}},label:{attrs:{"for":null,form:null}},legend:u,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:t,media:o,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:u,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:r,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:u,noframes:u,noscript:u,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["","typemustmatch"]}},ol:{attrs:{reversed:["","reversed"],start:null,type:["1","a","A","i","I"]}},optgroup:{attrs:{disabled:["","disabled"],label:null}},option:{attrs:{disabled:["","disabled"],label:null,selected:["","selected"],value:null}},output:{attrs:{"for":null,form:null,name:null}},p:u,param:{attrs:{name:null,value:null}},pre:u,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:u,rt:u,ruby:u,s:u,samp:u,script:{attrs:{type:["text/javascript"],src:null,async:["","async"],defer:["","defer"],charset:r}},section:u,select:{attrs:{form:null,name:null,size:null,autofocus:["","autofocus"],disabled:["","disabled"],multiple:["","multiple"]}},small:u,source:{attrs:{src:null,type:null,media:null}},span:u,strike:u,strong:u,style:{attrs:{type:["text/css"],media:o,scoped:null}},sub:u,summary:u,sup:u,table:u,tbody:u,td:{attrs:{colspan:null,rowspan:null,headers:null}},textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["","autofocus"],disabled:["","disabled"],readonly:["","readonly"],required:["","required"],wrap:["soft","hard"]}},tfoot:u,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:u,time:{attrs:{datetime:null}},title:u,tr:u,track:{attrs:{src:null,label:null,"default":null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:t}},tt:u,u:u,ul:u,"var":u,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["","autoplay"],mediagroup:["movie"],muted:["","muted"],controls:["","controls"]}},wbr:u},f={accesskey:["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"],"class":null,contenteditable:["true","false"],contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["en","es"],spellcheck:["true","false"],style:null,tabindex:["1","2","3","4","5","6","7","8","9"],title:null,translate:["yes","no"],onclick:null,rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"]};l(u);for(var c in a)a.hasOwnProperty(c)&&a[c]!=u&&l(a[c]);e.htmlSchema=a,e.registerHelper("hint","html",h)}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("libs/codemirror-4.8/addon/hint/show-hint",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function r(e,t){this.cm=e,this.options=this.buildOptions(t),this.widget=this.onClose=null}function i(e){return typeof e=="string"?e:e.text}function s(e,t){function s(e,r){var s;typeof r!="string"?s=function(e){return r(e,t)}:n.hasOwnProperty(r)?s=n[r]:s=r,i[e]=s}var n={Up:function(){t.moveFocus(-1)},Down:function(){t.moveFocus(1)},PageUp:function(){t.moveFocus(-t.menuSize()+1,!0)},PageDown:function(){t.moveFocus(t.menuSize()-1,!0)},Home:function(){t.setFocus(0)},End:function(){t.setFocus(t.length-1)},Enter:t.pick,Tab:t.pick,Esc:t.close},r=e.options.customKeys,i=r?{}:n;if(r)for(var o in r)r.hasOwnProperty(o)&&s(o,r[o]);var u=e.options.extraKeys;if(u)for(var o in u)u.hasOwnProperty(o)&&s(o,u[o]);return i}function o(e,t){while(t&&t!=e){if(t.nodeName.toUpperCase()==="LI"&&t.parentNode==e)return t;t=t.parentNode}}function u(r,u){this.completion=r,this.data=u;var a=this,f=r.cm,l=this.hints=document.createElement("ul");l.className="CodeMirror-hints",this.selectedHint=u.selectedHint||0;var c=u.list;for(var h=0;h<c.length;++h){var p=l.appendChild(document.createElement("li")),d=c[h],v=t+(h!=this.selectedHint?"":" "+n);d.className!=null&&(v=d.className+" "+v),p.className=v,d.render?d.render(p,u,d):p.appendChild(document.createTextNode(d.displayText||i(d))),p.hintId=h}var m=f.cursorCoords(r.options.alignWithWord?u.from:null),g=m.left,y=m.bottom,b=!0;l.style.left=g+"px",l.style.top=y+"px";var w=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth),E=window.innerHeight||Math.max(document.body.offsetHeight,document.documentElement.offsetHeight);(r.options.container||document.body).appendChild(l);var S=l.getBoundingClientRect(),x=S.bottom-E;if(x>0){var T=S.bottom-S.top,N=m.top-(m.bottom-S.top);if(N-T>0)l.style.top=(y=m.top-T)+"px",b=!1;else if(T>E){l.style.height=E-5+"px",l.style.top=(y=m.bottom-S.top)+"px";var C=f.getCursor();u.from.ch!=C.ch&&(m=f.cursorCoords(C),l.style.left=(g=m.left)+"px",S=l.getBoundingClientRect())}}var k=S.left-w;k>0&&(S.right-S.left>w&&(l.style.width=w-5+"px",k-=S.right-S.left-w),l.style.left=(g=m.left-k)+"px"),f.addKeyMap(this.keyMap=s(r,{moveFocus:function(e,t){a.changeActive(a.selectedHint+e,t)},setFocus:function(e){a.changeActive(e)},menuSize:function(){return a.screenAmount()},length:c.length,close:function(){r.close()},pick:function(){a.pick()},data:u}));if(r.options.closeOnUnfocus){var L;f.on("blur",this.onBlur=function(){L=setTimeout(function(){r.close()},100)}),f.on("focus",this.onFocus=function(){clearTimeout(L)})}var A=f.getScrollInfo();return f.on("scroll",this.onScroll=function(){var e=f.getScrollInfo(),t=f.getWrapperElement().getBoundingClientRect(),n=y+A.top-e.top,i=n-(window.pageYOffset||(document.documentElement||document.body).scrollTop);b||(i+=l.offsetHeight);if(i<=t.top||i>=t.bottom)return r.close();l.style.top=n+"px",l.style.left=g+A.left-e.left+"px"}),e.on(l,"dblclick",function(e){var t=o(l,e.target||e.srcElement);t&&t.hintId!=null&&(a.changeActive(t.hintId),a.pick())}),e.on(l,"click",function(e){var t=o(l,e.target||e.srcElement);t&&t.hintId!=null&&(a.changeActive(t.hintId),r.options.completeOnSingleClick&&a.pick())}),e.on(l,"mousedown",function(){setTimeout(function(){f.focus()},20)}),e.signal(u,"select",c[0],l.firstChild),!0}var t="CodeMirror-hint",n="CodeMirror-hint-active";e.showHint=function(e,t,n){if(!t)return e.showHint(n);n&&n.async&&(t.async=!0);var r={hint:t};if(n)for(var i in n)r[i]=n[i];return e.showHint(r)},e.defineExtension("showHint",function(t){if(this.listSelections().length>1||this.somethingSelected())return;this.state.completionActive&&this.state.completionActive.close();var n=this.state.completionActive=new r(this,t),i=n.options.hint;if(!i)return;e.signal(this,"startCompletion",this);if(!i.async)return n.showHints(i(this,n.options));i(this,function(e){n.showHints(e)},n.options)}),r.prototype={close:function(){if(!this.active())return;this.cm.state.completionActive=null,this.widget&&this.widget.close(),this.onClose&&this.onClose(),e.signal(this.cm,"endCompletion",this.cm)},active:function(){return this.cm.state.completionActive==this},pick:function(t,n){var r=t.list[n];r.hint?r.hint(this.cm,t,r):this.cm.replaceRange(i(r),r.from||t.from,r.to||t.to,"complete"),e.signal(t,"pick",r),this.close()},showHints:function(e){if(!e||!e.list.length||!this.active())return this.close();this.options.completeSingle&&e.list.length==1?this.pick(e,0):this.showWidget(e)},showWidget:function(t){function c(){if(i)return;i=!0,r.close(),r.cm.off("cursorActivity",v),t&&e.signal(t,"close")}function h(){if(i)return;e.signal(t,"update");var n=r.options.hint;n.async?n(r.cm,p,r.options):p(n(r.cm,r.options))}function p(e){t=e;if(i)return;if(!t||!t.list.length)return c();r.widget&&r.widget.close(),r.widget=new u(r,t)}function d(){n&&(l(n),n=0)}function v(){d();var e=r.cm.getCursor(),t=r.cm.getLine(e.line);e.line!=o.line||t.length-e.ch!=a-o.ch||e.ch<o.ch||r.cm.somethingSelected()||e.ch&&s.test(t.charAt(e.ch-1))?r.close():(n=f(h),r.widget&&r.widget.close())}this.widget=new u(this,t),e.signal(t,"shown");var n=0,r=this,i,s=this.options.closeCharacters,o=this.cm.getCursor(),a=this.cm.getLine(o.line).length,f=window.requestAnimationFrame||function(e){return setTimeout(e,1e3/60)},l=window.cancelAnimationFrame||clearTimeout;this.cm.on("cursorActivity",v),this.onClose=c},buildOptions:function(e){var t=this.cm.options.hintOptions,n={};for(var r in a)n[r]=a[r];if(t)for(var r in t)t[r]!==undefined&&(n[r]=t[r]);if(e)for(var r in e)e[r]!==undefined&&(n[r]=e[r]);return n}},u.prototype={close:function(){if(this.completion.widget!=this)return;this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var e=this.completion.cm;this.completion.options.closeOnUnfocus&&(e.off("blur",this.onBlur),e.off("focus",this.onFocus)),e.off("scroll",this.onScroll)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(t,r){t>=this.data.list.length?t=r?this.data.list.length-1:0:t<0&&(t=r?0:this.data.list.length-1);if(this.selectedHint==t)return;var i=this.hints.childNodes[this.selectedHint];i.className=i.className.replace(" "+n,""),i=this.hints.childNodes[this.selectedHint=t],i.className+=" "+n,i.offsetTop<this.hints.scrollTop?this.hints.scrollTop=i.offsetTop-3:i.offsetTop+i.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=i.offsetTop+i.offsetHeight-this.hints.clientHeight+3),e.signal(this.data,"select",this.data.list[this.selectedHint],i)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},e.registerHelper("hint","auto",function(t,n){var r=t.getHelpers(t.getCursor(),"hint"),i;if(r.length)for(var s=0;s<r.length;s++){var o=r[s](t,n);if(o&&o.list.length)return o}else if(i=t.getHelper(t.getCursor(),"hintWords")){if(i)return e.hint.fromList(t,{words:i})}else if(e.hint.anyword)return e.hint.anyword(t,n)}),e.registerHelper("hint","fromList",function(t,n){var r=t.getCursor(),i=t.getTokenAt(r),s=[];for(var o=0;o<n.words.length;o++){var u=n.words[o];u.slice(0,i.string.length)==i.string&&s.push(u)}if(s.length)return{list:s,from:e.Pos(r.line,i.start),to:e.Pos(r.line,i.end)}}),e.commands.autocomplete=e.showHint;var a={hint:e.hint.auto,completeSingle:!0,alignWithWord:!0,closeCharacters:/[\s()\[\]{};:>,]/,closeOnUnfocus:!0,completeOnSingleClick:!1,container:null,customKeys:null,extraKeys:null};e.defineOption("hintOptions",null)}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("libs/codemirror-4.8/mode/xml/xml",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){e.defineMode("xml",function(t,n){function l(e,t){function n(n){return t.tokenize=n,n(e,t)}var r=e.next();if(r=="<")return e.eat("!")?e.eat("[")?e.match("CDATA[")?n(p("atom","]]>")):null:e.match("--")?n(p("comment","-->")):e.match("DOCTYPE",!0,!0)?(e.eatWhile(/[\w\._\-]/),n(d(1))):null:e.eat("?")?(e.eatWhile(/[\w\._\-]/),t.tokenize=p("meta","?>"),"meta"):(a=e.eat("/")?"closeTag":"openTag",t.tokenize=c,"tag bracket");if(r=="&"){var i;return e.eat("#")?e.eat("x")?i=e.eatWhile(/[a-fA-F\d]/)&&e.eat(";"):i=e.eatWhile(/[\d]/)&&e.eat(";"):i=e.eatWhile(/[\w\.\-:]/)&&e.eat(";"),i?"atom":"error"}return e.eatWhile(/[^&<]/),null}function c(e,t){var n=e.next();if(n==">"||n=="/"&&e.eat(">"))return t.tokenize=l,a=n==">"?"endTag":"selfcloseTag","tag bracket";if(n=="=")return a="equals",null;if(n=="<"){t.tokenize=l,t.state=y,t.tagName=t.tagStart=null;var r=t.tokenize(e,t);return r?r+" tag error":"tag error"}return/[\'\"]/.test(n)?(t.tokenize=h(n),t.stringStartCol=e.column(),t.tokenize(e,t)):(e.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function h(e){var t=function(t,n){while(!t.eol())if(t.next()==e){n.tokenize=c;break}return"string"};return t.isInAttribute=!0,t}function p(e,t){return function(n,r){while(!n.eol()){if(n.match(t)){r.tokenize=l;break}n.next()}return e}}function d(e){return function(t,n){var r;while((r=t.next())!=null){if(r=="<")return n.tokenize=d(e+1),n.tokenize(t,n);if(r==">"){if(e==1){n.tokenize=l;break}return n.tokenize=d(e-1),n.tokenize(t,n)}}return"meta"}}function v(e,t,n){this.prev=e.context,this.tagName=t,this.indent=e.indented,this.startOfLine=n;if(o.doNotIndent.hasOwnProperty(t)||e.context&&e.context.noIndent)this.noIndent=!0}function m(e){e.context&&(e.context=e.context.prev)}function g(e,t){var n;for(;;){if(!e.context)return;n=e.context.tagName;if(!o.contextGrabbers.hasOwnProperty(n)||!o.contextGrabbers[n].hasOwnProperty(t))return;m(e)}}function y(e,t,n){return e=="openTag"?(n.tagStart=t.column(),b):e=="closeTag"?w:y}function b(e,t,n){return e=="word"?(n.tagName=t.current(),f="tag",x):(f="error",b)}function w(e,t,n){if(e=="word"){var r=t.current();return n.context&&n.context.tagName!=r&&o.implicitlyClosed.hasOwnProperty(n.context.tagName)&&m(n),n.context&&n.context.tagName==r?(f="tag",E):(f="tag error",S)}return f="error",S}function E(e,t,n){return e!="endTag"?(f="error",E):(m(n),y)}function S(e,t,n){return f="error",E(e,t,n)}function x(e,t,n){if(e=="word")return f="attribute",T;if(e=="endTag"||e=="selfcloseTag"){var r=n.tagName,i=n.tagStart;return n.tagName=n.tagStart=null,e=="selfcloseTag"||o.autoSelfClosers.hasOwnProperty(r)?g(n,r):(g(n,r),n.context=new v(n,r,i==n.indented)),y}return f="error",x}function T(e,t,n){return e=="equals"?N:(o.allowMissing||(f="error"),x(e,t,n))}function N(e,t,n){return e=="string"?C:e=="word"&&o.allowUnquoted?(f="string",x):(f="error",x(e,t,n))}function C(e,t,n){return e=="string"?C:x(e,t,n)}var r=t.indentUnit,i=n.multilineTagIndentFactor||1,s=n.multilineTagIndentPastTag;s==null&&(s=!0);var o=n.htmlMode?{autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0}:{autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,caseFold:!1},u=n.alignCDATA,a,f;return{startState:function(){return{tokenize:l,state:y,indented:0,tagName:null,tagStart:null,context:null}},token:function(e,t){!t.tagName&&e.sol()&&(t.indented=e.indentation());if(e.eatSpace())return null;a=null;var n=t.tokenize(e,t);return(n||a)&&n!="comment"&&(f=null,t.state=t.state(a||n,e,t),f&&(n=f=="error"?n+" error":f)),n},indent:function(t,n,a){var f=t.context;if(t.tokenize.isInAttribute)return t.tagStart==t.indented?t.stringStartCol+1:t.indented+r;if(f&&f.noIndent)return e.Pass;if(t.tokenize!=c&&t.tokenize!=l)return a?a.match(/^(\s*)/)[0].length:0;if(t.tagName)return s?t.tagStart+t.tagName.length+2:t.tagStart+r*i;if(u&&/<!\[CDATA\[/.test(n))return 0;var h=n&&/^<(\/)?([\w_:\.-]*)/.exec(n);if(h&&h[1])while(f){if(f.tagName==h[2]){f=f.prev;break}if(!o.implicitlyClosed.hasOwnProperty(f.tagName))break;f=f.prev}else if(h)while(f){var p=o.contextGrabbers[f.tagName];if(!p||!p.hasOwnProperty(h[2]))break;f=f.prev}while(f&&!f.startOfLine)f=f.prev;return f?f.indent+r:0},electricInput:/<\/[\s\w:]+>$/,blockCommentStart:"<!--",blockCommentEnd:"-->",configuration:n.htmlMode?"html":"xml",helperType:n.htmlMode?"html":"xml"}}),e.defineMIME("text/xml","xml"),e.defineMIME("application/xml","xml"),e.mimeModes.hasOwnProperty("text/html")||e.defineMIME("text/html",{name:"xml",htmlMode:!0})}),function(e){typeof exports=="object"&&typeof module=="object"?e(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define("libs/codemirror-4.8/addon/runmode/runmode",["../../lib/codemirror"],e):e(CodeMirror)}(function(e){e.runMode=function(t,n,r,i){var s=e.getMode(e.defaults,n),o=/MSIE \d/.test(navigator.userAgent),u=o&&(document.documentMode==null||document.documentMode<9);if(r.nodeType==1){var a=i&&i.tabSize||e.defaults.tabSize,f=r,l=0;f.innerHTML="",r=function(e,t){if(e=="\n"){f.appendChild(document.createTextNode(u?"\r":e)),l=0;return}var n="";for(var r=0;;){var i=e.indexOf("	",r);if(i==-1){n+=e.slice(r),l+=e.length-r;break}l+=i-r,n+=e.slice(r,i);var s=a-l%a;l+=s;for(var o=0;o<s;++o)n+=" ";r=i+1}if(t){var c=f.appendChild(document.createElement("span"));c.className="cm-"+t.replace(/ +/g," cm-"),c.appendChild(document.createTextNode(n))}else f.appendChild(document.createTextNode(n))}}var c=e.splitLines(t),h=i&&i.state||e.startState(s);for(var p=0,d=c.length;p<d;++p){p&&r("\n");var v=new e.StringStream(c[p]);!v.string&&s.blankLine&&s.blankLine(h);while(!v.eol()){var m=s.token(v,h);r(v.current(),m,p,v.start,h),v.start=v.pos}}}}),define("CodeMirrorEditor",["react","lodash","jquery","./libs/codemirror-4.8/lib/codemirror","./CMLint","./libs/codemirror-4.8/mode/javascript/javascript","./libs/codemirror-4.8/addon/hint/html-hint","./libs/codemirror-4.8/addon/hint/show-hint","./libs/codemirror-4.8/addon/hint/xml-hint","./libs/codemirror-4.8/addon/hint/html-hint","./libs/codemirror-4.8/mode/xml/xml","./libs/codemirror-4.8/addon/runmode/runmode"],function(e,t,n,r,i){function u(e,t){return(!t||t())&&setTimeout(function(){e.state.completionActive||e.showHint({completeSingle:!1})},100),r.Pass}function a(e){return u(e,function(){var t=e.getCursor();return e.getRange(r.Pos(t.line,t.ch-1),t)==="<"})}function f(e){return u(e,function(){var t=e.getTokenAt(e.getCursor());if(t.type!=="string"||!!/['"]/.test(t.string.charAt(t.string.length-1))&&t.string.length!==1){var n=r.innerMode(e.getMode(),t.state).state;return n.tagName}return!1})}var s={div:{attrs:{"rt-props":null,"rt-if":null,"rt-repeat":null,"rt-class":null,"rt-scope":null,valueLink:null,key:null,ref:null,dangerouslySetInnerHTML:null}}},o=r.htmlSchema;Object.keys(r.htmlSchema).forEach(function(e){o[e].attrs=t.defaults(s.div.attrs,o[e].attrs)});var l=e.createClass({displayName:"CodeMirrorEditor",propTypes:{id:e.PropTypes.string,readOnly:e.PropTypes.bool,runMode:e.PropTypes.bool,mode:e.PropTypes.string},getDefaultProps:function(){return{readOnly:!1,mode:"html"}},getInitialState:function(){return{editorId:t.uniqueId()}},render:function(){var n=t.omit(this.props,["ref","key","value","valueLink","onChange"]);return n.id=this.props.id||this.state.editorId,n.defaultValue=this.props.valueLink?this.props.valueLink():this.props.value,e.DOM.textarea(n)},componentWillUpdate:function(e){var t=e.valueLink?e.valueLink():e.value;this.editor&&this.editor.getValue()!==t&&this.editor.setValue(t||"")},componentDidMount:function(){var e=this.props.valueLink?this.props.valueLink():this.props.value,t={readOnly:this.props.readOnly,lineWrapping:!0,smartIndent:!0,matchBrackets:!0,value:e,lineNumbers:!0,mode:"javascript",gutters:["CodeMirror-linenumbers","rt-annotations"],theme:"solarized"};this.props.mode==="html"?(t.mode="text/html",t.extraKeys={"'<'":u,"'/'":a,"' '":f,"'='":f,"Ctrl-Space":"autocomplete"},t.hintOptions={schemaInfo:o}):t.mode="javascript",this.editor=r.fromTextArea(this.getDOMNode(),t),this.props.readOnly||this.editor.on("change",function(){this.props.valueLink?this.props.valueLink(this.editor.getValue()):this.props.onChange&&this.props.onChange({target:{value:this.editor.getValue()}})}.bind(this))},annotate:function(e){i.annotate(this.editor,e)},clearAnnotations:function(){i.clearMarks(this.editor)},componentWillUnmount:function(){this.editor.toTextArea()}});return l}),define("playground-fiddle.rt",["react/addons","lodash","./CodeMirrorEditor"],function(e,t,n){function r(e){this.setState({templateHTML:e.target.value})}function i(e){this.setState({templateProps:e.target.value})}function s(e){e.preventDefault()}return function(){return e.createElement("div",{className:"playground"},e.createElement("div",{className:"fiddle-row"},e.createElement("div",{className:"code-area",id:"area-rt"},e.createElement(n,{ref:"editorRT",id:"editor-rt",className:"large-text-area",value:this.state.templateHTML,mode:"html",onChange:r.bind(this)})),e.createElement("div",{className:"code-area",id:"area-code"},e.createElement(n,{ref:"editorCode",id:"editor-code",className:"large-text-area",value:this.state.templateProps,mode:"javascript",onChange:i.bind(this)}))),e.createElement("div",{className:"fiddle-row"},e.createElement("div",{className:"code-area",id:"area-generated"},e.createElement(n,{id:"editor-generated",className:"large-text-area",ref:"editorGenerated",value:this.templateSource,mode:"javascript",readOnly:!0})),e.createElement("div",{className:"code-area",id:"area-result"},e.createElement("div",{id:"result-area",key:"result-area",className:"sample-view"},e.createElement("form",{className:"result-area-form",ref:"mount",onSubmit:s.bind(this)})))))}}),define("playground.rt",["react/addons","lodash","./CodeMirrorEditor"],function(e,t,n){function r(e,t,n){n.preventDefault(),this.setState({currentTab:e[0]})}function i(t,n){return e.createElement("li",{role:"presentation",className:e.addons.classSet({active:this.state.currentTab===t[0]}),onClick:r.bind(this,t,n)},e.createElement("a",{"aria-controls":t[1]},t[1]))}function s(e){this.setState({templateHTML:e.target.value})}function o(e){this.setState({templateProps:e.target.value})}function u(e){e.preventDefault()}return function(){return e.createElement("div",{className:"playground"},e.createElement("div",{id:this.props.id+"-myTab",className:"code-area "+this.getLayoutClass()},e.createElement.apply(this,t.flatten(["ul",{className:"nav nav-tabs",role:"tablist"},t.map(this.getTabs(),i.bind(this))])),e.createElement("div",{},this.state.currentTab==="templateHTML"?e.createElement("div",{className:"tab-pane active"},e.createElement(n,{ref:"editorRT",className:"large-text-area",style:{border:this.validHTML?"":"2px solid red"},value:this.state.templateHTML,mode:"html",onChange:s.bind(this)})):null,this.state.currentTab==="templateProps"?e.createElement("div",{className:"tab-pane active"},e.createElement(n,{ref:"editorCode",className:"large-text-area",style:{border:this.validProps?"":"2px solid red"},value:this.state.templateProps,mode:"javascript",onChange:o.bind(this)})):null,this.state.currentTab==="templateSource"?e.createElement("div",{className:"tab-pane active"},e.createElement(n,{className:"large-text-area",value:this.templateSource,mode:"javascript",readOnly:!0})):null)),e.createElement("div",{key:"result-area",className:"result-area "+this.getLayoutClass()},e.createElement("span",{className:"preview-title"}," "),e.createElement("form",{ref:"mount",className:"sample-view",onSubmit:u.bind(this)})),e.createElement("br",{style:{clear:"both"}}))}}),define("playground",["react","jquery","lodash","./playground-fiddle.rt","./playground.rt"],function(React,$,_,pgFiddleTemplate,playgroundTemplate){function showMessage(e,t){e&&e.showMessage&&e.annotate({line:1,message:t})}function clearMessage(e){e&&e.clearMessage&&e.clearAnnotations()}function generateRenderFunc(e){return function(){var t=null;try{t=e.apply(this)}catch(n){t=React.DOM.div.apply(this,[{style:{color:"red"}},"Exception:"+n.message])}return React.DOM.div.apply(this,_.flatten([{key:"result"},t]))}}var templateHTML="<div></div>",templateProps="var template = React.createClass({\n   render: function () {\n       return templateRT.apply(this);\n   }\n});",Playground=React.createClass({displayName:"Playground",mixins:[React.addons.LinkedStateMixin],propTypes:{direction:React.PropTypes.oneOf(["horizontal","vertical"]),codeVisible:React.PropTypes.bool,fiddle:React.PropTypes.bool},templateSource:"",validHTML:!0,validProps:!0,setTimeout:function(){clearTimeout(this.timeoutID),this.timeoutID=setTimeout.apply(null,arguments)},getDefaultProps:function(){return{direction:"horizontal",codeVisible:!0,fiddle:!1}},getLayoutClass:function(){return this.props.direction==="horizontal"&&"horizontal"||"vertical"},getTabs:function(){return this.props.codeVisible?[["templateHTML","Template"],["templateProps","Class"],["templateSource","Generated code"]]:[["templateHTML","Template"],["templateSource","Generated code"]]},updateSample:function(state){this.generateCode(state),this.validHTML=!0,this.sampleRender=generateRenderFunc(this.sampleFunc);try{this.validProps=!0,this.sample=eval("(function () {"+this.templateSource+"\n"+state.templateProps+"\n return React.createElement("+state.name+");})()"),clearMessage(this.refs.editorCode)}catch(e){this.validProps=!1,this.sample=null;var editor=this.refs.editorCode;this.showError(e,editor)}},showError:function(e,t){var n=this.refs.mount.getDOMNode();this.setTimeout(function(){showMessage(t,e.message),React.render(React.createElement("div",{className:"playground-error"},e.toString()),n)},500)},showErrorAnnotation:function(e,t){var n=this.refs.mount.getDOMNode();this.setTimeout(function(){t.annotate(e),React.render(React.createElement("div",{className:"playground-error"},e.message),n)},500)},clear:function(){var e={templateHTML:templateHTML,templateProps:templateProps};this.setState(e)},generateCode:function(e){var t=e.templateHTML,n=this.refs.editorRT,r=window.reactTemplates.normalizeName(e.name)+"RT",i=null;try{i=window.reactTemplates.convertTemplateToReact(t.trim().replace(/\r/g,""),{modules:"none",name:r}),clearMessage(n)}catch(s){var o=null;s.name==="RTCodeError"?o={line:s.line,message:s.message,index:s.index}:o={line:1,message:s.message},this.showErrorAnnotation(o,n),console.log(s)}this.templateSource=i},getInitialState:function(){var e={templateHTML:this.props.templateHTML||templateHTML,templateProps:this.props.templateProps||templateProps,name:this.props.name||"template",currentTab:"templateHTML"};return e},componentDidMount:function(){this.props.fiddle&&(window.addEventListener("resize",this.calcSize),this.calcSize()),this.updateSample(this.state),this.renderSample()},renderSample:function(){var e=this.refs.mount.getDOMNode();this.sample&&React.render(this.sample,e)},componentDidUpdate:function(){this.renderSample()},componentWillUnmount:function(){window.removeEventListener("resize",this.calcSize)},calcSize:function(){var e=$(window).height()-$("#header").height(),t=e/2-10;$(".code-area").each(function(){$(this).height(t)}),this.refs.editorCode.editor.refresh(),this.refs.editorRT.editor.refresh(),this.refs.editorGenerated.editor.refresh()},componentWillUpdate:function(e,t){(t.templateHTML!==this.state.templateHTML||t.templateProps!==this.state.templateProps)&&this.updateSample(t)},render:function(){this.generateCode(this.state);var e=this.props.fiddle?pgFiddleTemplate:playgroundTemplate;return e.apply(this)}});return Playground}),define("CodeMirrorViewer",["react","lodash","jquery","./libs/codemirror-4.8/lib/codemirror","./libs/codemirror-4.8/mode/javascript/javascript","./libs/codemirror-4.8/mode/xml/xml","./libs/codemirror-4.8/addon/runmode/runmode"],function(e,t,n,r){return e.createClass({displayName:"CodeMirrorViewer",propTypes:{id:e.PropTypes.string,mode:e.PropTypes.string},getDefaultProps:function(){return{mode:"html"}},getInitialState:function(){return{editorId:t.uniqueId()}},render:function(){var n=t.omit(this.props,["ref","key","value","valueLink","onChange"]);n.id=this.props.id||this.state.editorId,n.className="cm-s-default";var r=this.props.valueLink?this.props.valueLink():this.props.value;return e.DOM.pre(n,r)},componentWillUpdate:function(e){var t=e.valueLink?e.valueLink():e.value;this.editor&&this.editor.getValue()!==t&&this.editor.setValue(t||"")},componentDidMount:function(){var e=this.props.valueLink?this.props.valueLink():this.props.value,t=this.props.mode;this.props.mode==="html"&&(t="text/html"),this.editor=r.runMode(e,t,this.getDOMNode())},componentWillUnmount:function(){this.editor.toTextArea()}})}),define("examples.rt",["react/addons","lodash","./playground","./CodeMirrorViewer"],function(e,t,n,r){return function(){return e.createElement("div",{id:"examples"},e.createElement("div",{className:"example"},e.createElement("h3",{},"Hello world in React Templates"),e.createElement("p",{},'\n            Simple "Hello world" HTML transformed into React JavaScript code.\n        '),e.createElement(n,t.merge({},{id:"helloExample",direction:"horizontal"},this.state.samples.hello))),e.createElement("div",{className:"example"},e.createElement("h3",{},"rt-if"),e.createElement("p",{},"\n            This shows the use of rt-if.\n        "),e.createElement(n,t.merge({},{id:"ifExample",direction:"horizontal"},this.state.samples.rtIf))),e.createElement("div",{className:"example"},e.createElement("h3",{},"rt-repeat"),e.createElement("p",{},"\n            This uses rt-repeat to show multiple items and rt-scope to create a reusable name for multiple calculations.\n        "),e.createElement(n,t.merge({},{id:"repeatExample",direction:"horizontal"},this.state.samples.repeat))),e.createElement("div",{className:"example"},e.createElement("h3",{},"rt-props"),e.createElement("p",{},"\n            rt-props is used to pass all the original properties set on this component (except the ones used for the component logic: onClick and eventId) to the element that will actually represent this component.\n        "),e.createElement(n,t.merge({},{id:"propsExample",direction:"horizontal"},this.state.samples.props))),e.createElement("div",{className:"example"},e.createElement("h3",{},"Improved todo list"),e.createElement("p",{},"\n            Every project needs a todo list example, so here is ours.\n        "),e.createElement(n,t.merge({},{id:"todoExample",direction:"horizontal"},this.state.samples.todo))),e.createElement("div",{className:"example"},e.createElement("h3",{},"Weather"),e.createElement("p",{},"\n            This example shows working with async events, the usage of regular event handler function pointers instead of lambda expression, and working with two-way binding.\n        "),e.createElement(n,t.merge({},{id:"weatherExample",direction:"horizontal"},this.state.samples.weather))),e.createElement("div",{id:"rt-require",className:"example"},e.createElement("h3",{},"rt-require"),e.createElement("p",{},"\n            This example shows how to load other React components and libraries into a React template and then use them within the template.\n        "),e.createElement(r,t.merge({},{mode:"javascript"},this.state.rtRequire))),e.createElement("div",{id:"amd",className:"example"},e.createElement("h3",{},"AMD"),e.createElement("p",{},"\n            This example shows the rt-require sample output with AMD support.\n        "),e.createElement(r,t.merge({},{mode:"javascript"},this.state.amd))),e.createElement("div",{id:"commonjs",className:"example"},e.createElement("h3",{},"CommonJS"),e.createElement("p",{},"\n            This example shows the rt-require sample output with CommonJS support.\n        "),e.createElement(r,t.merge({},{mode:"javascript"},this.state.cjs))),e.createElement("div",{id:"es6",className:"example"},e.createElement("h3",{},"ES6"),e.createElement("p",{},"\n            This example shows the rt-require sample output with ES6 support.\n        "),e.createElement(r,t.merge({},{mode:"javascript"},this.state.es6))))}}),define("text",["module"],function(e){var t,n,r=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],i=/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,s=/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im,o=typeof location!="undefined"&&location.href,u=o&&location.protocol&&location.protocol.replace(/\:/,""),a=o&&location.hostname,f=o&&(location.port||undefined),l=[],c=e.config&&e.config()||{};t={version:"2.0.5",strip:function(e){if(e){e=e.replace(i,"");var t=e.match(s);t&&(e=t[1])}else e="";return e},jsEscape:function(e){return e.replace(/(['\\])/g,"\\$1").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r").replace(/[\u2028]/g,"\\u2028").replace(/[\u2029]/g,"\\u2029")},createXhr:c.createXhr||function(){var e,t,n;if(typeof XMLHttpRequest!="undefined")return new XMLHttpRequest;if(typeof ActiveXObject!="undefined")for(t=0;t<3;t+=1){n=r[t];try{e=new ActiveXObject(n)}catch(i){}if(e){r=[n];break}}return e},parseName:function(e){var t,n,r,i=!1,s=e.indexOf("."),o=e.indexOf("./")===0||e.indexOf("../")===0;return s!==-1&&(!o||s>1)?(t=e.substring(0,s),n=e.substring(s+1,e.length)):t=e,r=n||t,s=r.indexOf("!"),s!==-1&&(i=r.substring(s+1)==="strip",r=r.substring(0,s),n?n=r:t=r),{moduleName:t,ext:n,strip:i}},xdRegExp:/^((\w+)\:)?\/\/([^\/\\]+)/,useXhr:function(e,n,r,i){var s,o,u,a=t.xdRegExp.exec(e);return a?(s=a[2],o=a[3],o=o.split(":"),u=o[1],o=o[0],(!s||s===n)&&(!o||o.toLowerCase()===r.toLowerCase())&&(!u&&!o||u===i)):!0},finishLoad:function(e,n,r,i){r=n?t.strip(r):r,c.isBuild&&(l[e]=r),i(r)},load:function(e,n,r,i){if(i.isBuild&&!i.inlineText){r();return}c.isBuild=i.isBuild;var s=t.parseName(e),l=s.moduleName+(s.ext?"."+s.ext:""),h=n.toUrl(l),p=c.useXhr||t.useXhr;!o||p(h,u,a,f)?t.get(h,function(n){t.finishLoad(e,s.strip,n,r)},function(e){r.error&&r.error(e)}):n([l],function(e){t.finishLoad(s.moduleName+"."+s.ext,s.strip,e,r)})},write:function(e,n,r,i){if(l.hasOwnProperty(n)){var s=t.jsEscape(l[n]);r.asModule(e+"!"+n,"define(function () { return '"+s+"';});\n")}},writeFile:function(e,n,r,i,s){var o=t.parseName(n),u=o.ext?"."+o.ext:"",a=o.moduleName+u,f=r.toUrl(o.moduleName+u)+".js";t.load(a,r,function(n){var r=function(e){return i(f,e)};r.asModule=function(e,t){return i.asModule(e,f,t)},t.write(e,a,r,s)},s)}};if(c.env==="node"||!c.env&&typeof process!="undefined"&&process.versions&&!!process.versions.node)n=require.nodeRequire("fs"),t.get=function(e,t){var r=n.readFileSync(e,"utf8");r.indexOf("")===0&&(r=r.substring(1)),t(r)};else if(c.env==="xhr"||!c.env&&t.createXhr())t.get=function(e,n,r,i){var s=t.createXhr(),o;s.open("GET",e,!0);if(i)for(o in i)i.hasOwnProperty(o)&&s.setRequestHeader(o.toLowerCase(),i[o]);c.onXhr&&c.onXhr(s,e),s.onreadystatechange=function(t){var i,o;s.readyState===4&&(i=s.status,i>399&&i<600?(o=new Error(e+" HTTP status: "+i),o.xhr=s,r(o)):n(s.responseText))},s.send(null)};else if(c.env==="rhino"||!c.env&&typeof Packages!="undefined"&&typeof java!="undefined")t.get=function(e,t){var n,r,i="utf-8",s=new java.io.File(e),o=java.lang.System.getProperty("line.separator"),u=new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(s),i)),a="";try{n=new java.lang.StringBuffer,r=u.readLine(),r&&r.length()&&r.charAt(0)===65279&&(r=r.substring(1)),n.append(r);while((r=u.readLine())!==null)n.append(o),n.append(r);a=String(n.toString())}finally{u.close()}t(a)};return t}),define("text!samples/hello.code",[],function(){return"var <%= name %> = React.createClass({\n    render: function () {\n        return <%= name %>RT.apply(this);\n    }\n});"}),define("text!samples/hello.rt",[],function(){return"<h2>Hello world</h2>\n"}),define("text!samples/todo.code",[],function(){return"var <%= name %> = React.createClass({\n    mixins: [React.addons.LinkedStateMixin],\n    getInitialState: function () {\n        return {edited: '', todos: [], counter: 0};\n    },\n    add: function () {\n        if (this.state.edited.trim().length === 0) {\n            return;\n        }\n        var newTodo = {value: this.state.edited, done: false, key: this.state.counter};\n        this.setState({todos: this.state.todos.concat(newTodo), edited: '', counter: this.state.counter + 1});\n    },\n    remove: function (todo) {\n        this.setState({todos: _.reject(this.state.todos, todo)});\n    },\n    toggleChecked: function (index) {\n        var todos = _.cloneDeep(this.state.todos);\n        todos[index].done = !todos[index].done;\n        this.setState({todos: todos});\n    },\n    clearDone: function () {\n        this.setState({todos: _.filter(this.state.todos, {done: false})});\n    },\n    render: function () {\n        return <%= name %>RT.apply(this);\n    }\n});"}),define("text!samples/todo.rt",[],function(){return'<div>\n    <strong>{_.filter(this.state.todos, {done:true}).length}</strong>\n    done,\n    <strong>{_.filter(this.state.todos, {done:false}).length}</strong>\n    pending\n    <br/>\n    <div rt-repeat="todo in this.state.todos" key="{todo.key}">\n        <img src="img/samples/delete.png"\n             onClick="()=>this.remove(todo)"\n             title="Remove Todo"\n             style="cursor:pointer"/>\n        <input type="checkbox" checked="{todo.done}"\n               onChange="()=>this.toggleChecked(todoIndex)"/>\n        <span style="text-decoration: {todo.done ? \'line-through\': \'none\'}">{todo.value}</span>\n    </div>\n    <input key="myinput" style="width:130px" type="text"\n           onKeyDown="(e) => if (e.keyCode == 13) { e.preventDefault(); this.add(); }"\n           valueLink="{this.linkState(\'edited\')}"/>\n    <button onClick="()=>this.add()">Add</button><br/>\n    <button onClick="()=>this.clearDone()">Clear done</button>\n</div>'}),define("text!samples/rt-if.code",[],function(){return"var <%= name %> = React.createClass({\n    getInitialState: function () {\n        return {open: false};\n    },\n    toggle: function() {\n        this.setState({open: !this.state.open});\n    },\n    render: function () {\n        return <%= name %>RT.apply(this);\n    }\n});"}),define("text!samples/rt-if.rt",[],function(){return'<div>\n    <h4 style="cursor:pointer" onClick="()=>this.toggle()">\n        Click to {this.state.open ? \'close\' : \'open\'}\n    </h4>\n    <p rt-if="this.state.open">This is my paragraph. It opens and\n                               closes</p>\n</div>'}),define("text!samples/rt-props.code",[],function(){return"var <%= name %> = React.createClass({\n    mixins: [React.addons.LinkedStateMixin],\n    getInitialState: function() {\n        return { key: 'color', val: 'blue' };\n    },\n    getProps: function() {\n        var ret = { style: {\n          color: 'black',\n          backgroundColor: 'white',\n          borderColor: 'black'\n        }};\n        ret.style[this.state.key] = this.state.val;\n        return ret;\n    },\n    render: function () {\n        return <%= name %>RT.apply(this);\n    }\n});"}),define("text!samples/rt-props.rt",[],function(){return'<div>\n    Style:\n    <select valueLink="{this.linkState(\'key\')}">\n        <option value="color">Color</option>\n        <option value="backgroundColor">Background color</option>\n        <option value="borderColor">Border color</option>\n    </select><br/>\n    Value:\n    <select valueLink="{this.linkState(\'val\')}">\n        <option value="blue">Blue</option>\n        <option value="red">Red</option>\n        <option value="yellow">Yellow</option>\n    </select><br/><br/>\n    <div style="padding:5px;text-align:center;border:1px solid"\n         rt-props="this.getProps()">Sample</div>\n</div>'}),define("text!samples/rt-repeat.code",[],function(){return"var <%= name %> = React.createClass({\n    getInitialState: function () {\n        return {\n            items: ['One', 'Two', 'Three']\n        };\n    },\n    render: function () {\n        return <%= name %>RT.apply(this);\n    }\n});"}),define("text!samples/rt-repeat.rt",[],function(){return'<div>\n    <ul>\n        <li rt-repeat="item in this.state.items">{item}</li>\n    </ul>\n</div>'}),define("text!samples/weather.code",[],function(){return"var <%= name %> = React.createClass({\n    mixins: [React.addons.LinkedStateMixin],\n    getInitialState: function() {\n        this.cityIds = [5391959,293397,2643743];\n        this.fetchWeather();\n        return { loading: true, cityToAdd: '', info: [] };\n    },\n    addCity: function() {\n        if (this.state.cityToAdd.trim() == '') {\n            return;\n        }\n        this.setState({ loading: true, cityToAdd: '' });\n        $.get('http://api.openweathermap.org/data/2.5/weather?q=' + this.state.cityToAdd, this.findCityCallback);\n    },\n    findCityCallback: function(result) {\n        if (result.id && !_.contains(this.cityIds, result.id)) {\n            this.cityIds.unshift(result.id);\n            this.fetchWeather();\n        } else {\n            this.setState({ loading: false });\n        }\n    },\n    refresh: function() {\n        this.setState({ loading:true });\n        this.fetchWeather();\n    },\n    fetchWeather: function() {\n       $.get('http://api.openweathermap.org/data/2.5/group?id=' + this.cityIds.join(',') + '&units=metric', this.fetchWeatherCallback);\n    },\n    fetchWeatherCallback: function(result) {\n        this.setState({ loading:false, info: result.list });\n    },\n    render: function () {\n        return <%= name %>RT.apply(this);\n    }\n});"}),define("text!samples/weather.rt",[],function(){return'<div>\n    <h4>Cities weather report</h4>\n    <input placeholder="Type a city to add"\n           style="width:130px"\n           valueLink="{this.linkState(\'cityToAdd\')}"\n           onKeyDown="(e)=>if (e.keyCode === 13) { e.preventDefault(); this.addCity(); }"/>\n    <button onClick="{this.addCity}">Add</button>\n    <div key="preloader" rt-if="this.state.loading">\n        -- Loading --\n    </div>\n    <div rt-repeat="city in this.state.info" key="{city.id}">\n        {cityIndex+1})\n        <img rt-repeat="weather in city.weather"\n             src="http://openweathermap.org/img/w/{weather.icon}.png"\n             title="{weather.description}"/>\n        <span style="white-space:nowrap">{city.name}, {city.sys.country}</span>\n    </div>\n    <button onClick="{this.refresh}">Refresh</button>\n</div>'}),define("text!samples/rt-require.rt",[],function(){return'<rt-require dependency="comps/myComp" as="myComp"/>\n<rt-require dependency="utils/utils" as="utils"/>\n<div>\n    <myComp customProp="{utils.doSomething()}">myComp is just a regular tag</myComp>\n</div>\n'}),define("examples",["lodash","react","./examples.rt","text!./samples/hello.code","text!./samples/hello.rt","text!./samples/todo.code","text!./samples/todo.rt","text!./samples/rt-if.code","text!./samples/rt-if.rt","text!./samples/rt-props.code","text!./samples/rt-props.rt","text!./samples/rt-repeat.code","text!./samples/rt-repeat.rt","text!./samples/weather.code","text!./samples/weather.rt","text!./samples/rt-require.rt"],function(e,t,n,r,i,s,o,u,a,f,l,c,h,p,d,v){var m={hello:[r,i],todo:[s,o],props:[f,l],rtIf:[u,a],repeat:[c,h],weather:[p,d]};Object.keys(m).forEach(function(t){m[t]={name:t,templateProps:e.template(m[t][0],{name:t}),templateHTML:m[t][1]}});var g=t.createClass({displayName:"Examples",mixins:[t.addons.LinkedStateMixin],getInitialState:function(){var e=window.reactTemplates.convertTemplateToReact(v,{modules:"amd",name:"template"}),t=window.reactTemplates.convertTemplateToReact(v,{modules:"commonjs",name:"template"}),n=window.reactTemplates.convertTemplateToReact(v,{modules:"es6",name:"template"});return{rtRequire:{value:v},amd:{value:e},cjs:{value:t},es6:{value:n},samples:m}},render:n});return g}),requirejs.config({paths:{lodash:"//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min",jquery:"//code.jquery.com/jquery-1.11.0.min",firebase:"https://cdn.firebase.com/js/client/2.0.5/firebase",react:"//fb.me/react-with-addons-0.12.2",text:"libs/requirejs-plugins/text",json:"libs/requirejs-plugins/json"},shim:{lodash:{exports:"_"},firebase:{exports:"Firebase"},jquery:{exports:"$"},react:{exports:"React"}},map:{"*":{"react/addons":"react"}}}),requirejs(["jquery","react","./examples"],function(e,t,n){var r=t.createElement(n);t.render(r,document.getElementById("home-section"))}),define("home-main.js",function(){});
\ No newline at end of file
diff --git a/playground/dist/rt-main.browser.js b/playground/dist/rt-main.browser.js
index 5d744f4..b93c483 100644
--- a/playground/dist/rt-main.browser.js
+++ b/playground/dist/rt-main.browser.js
@@ -1532,7 +1532,7 @@ exports.update = function(arr, parent) {
 // module.exports = $.extend(exports);
 
 }).call(this,require("buffer").Buffer)
-},{"buffer":82,"htmlparser2":44}],8:[function(require,module,exports){
+},{"buffer":83,"htmlparser2":44}],8:[function(require,module,exports){
 /**
  * Module dependencies
  */
@@ -3460,8 +3460,8 @@ function renderComment(elem) {
 }
 
 },{"domelementtype":28,"entities":29}],28:[function(require,module,exports){
-module.exports=require(26)
-},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/node_modules/domelementtype/index.js":26}],29:[function(require,module,exports){
+arguments[4][26][0].apply(exports,arguments)
+},{"dup":26}],29:[function(require,module,exports){
 var encode = require("./lib/encode.js"),
     decode = require("./lib/decode.js");
 
@@ -3835,7 +3835,7 @@ FeedHandler.prototype.onend = function(){
 
 module.exports = FeedHandler;
 
-},{"./index.js":44,"util":105}],39:[function(require,module,exports){
+},{"./index.js":44,"util":106}],39:[function(require,module,exports){
 var Tokenizer = require("./Tokenizer.js");
 
 /*
@@ -4187,7 +4187,7 @@ Parser.prototype.done = Parser.prototype.end;
 
 module.exports = Parser;
 
-},{"./Tokenizer.js":42,"events":86,"util":105}],40:[function(require,module,exports){
+},{"./Tokenizer.js":42,"events":87,"util":106}],40:[function(require,module,exports){
 module.exports = ProxyHandler;
 
 function ProxyHandler(cbs){
@@ -4251,7 +4251,7 @@ Object.keys(EVENTS).forEach(function(name){
 		throw Error("wrong number of arguments!");
 	}
 });
-},{"../":44,"./WritableStream.js":43,"util":105}],42:[function(require,module,exports){
+},{"../":44,"./WritableStream.js":43,"util":106}],42:[function(require,module,exports){
 module.exports = Tokenizer;
 
 var decodeCodePoint = require("entities/lib/decode_codepoint.js"),
@@ -5181,7 +5181,7 @@ WritableStream.prototype._write = function(chunk, encoding, cb){
 	this._parser.write(chunk);
 	cb();
 };
-},{"./Parser.js":39,"readable-stream":81,"stream":102,"util":105}],44:[function(require,module,exports){
+},{"./Parser.js":39,"readable-stream":82,"stream":103,"util":106}],44:[function(require,module,exports){
 var Parser = require("./Parser.js"),
     DomHandler = require("domhandler");
 
@@ -5252,8 +5252,8 @@ module.exports = {
 };
 
 },{"./CollectingHandler.js":37,"./FeedHandler.js":38,"./Parser.js":39,"./ProxyHandler.js":40,"./Stream.js":41,"./Tokenizer.js":42,"./WritableStream.js":43,"domelementtype":45,"domhandler":46,"domutils":49}],45:[function(require,module,exports){
-module.exports=require(26)
-},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/node_modules/domelementtype/index.js":26}],46:[function(require,module,exports){
+arguments[4][26][0].apply(exports,arguments)
+},{"dup":26}],46:[function(require,module,exports){
 var ElementType = require("domelementtype");
 
 var re_whitespace = /\s+/g;
@@ -5507,7 +5507,7 @@ Object.keys(domLvl1).forEach(function(key) {
 
 },{}],49:[function(require,module,exports){
 arguments[4][19][0].apply(exports,arguments)
-},{"./lib/helpers":50,"./lib/legacy":51,"./lib/manipulation":52,"./lib/querying":53,"./lib/stringify":54,"./lib/traversal":55,"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/index.js":19}],50:[function(require,module,exports){
+},{"./lib/helpers":50,"./lib/legacy":51,"./lib/manipulation":52,"./lib/querying":53,"./lib/stringify":54,"./lib/traversal":55,"dup":19}],50:[function(require,module,exports){
 // removeSubsets
 // Given an array of nodes, remove any member that is contained by another.
 exports.removeSubsets = function(nodes) {
@@ -5651,26 +5651,26 @@ exports.uniqueSort = function(nodes) {
 };
 
 },{}],51:[function(require,module,exports){
-module.exports=require(21)
-},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/lib/legacy.js":21,"domelementtype":45}],52:[function(require,module,exports){
-module.exports=require(22)
-},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/lib/manipulation.js":22}],53:[function(require,module,exports){
-module.exports=require(23)
-},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/lib/querying.js":23,"domelementtype":45}],54:[function(require,module,exports){
-module.exports=require(24)
-},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/lib/stringify.js":24,"domelementtype":45}],55:[function(require,module,exports){
-module.exports=require(25)
-},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/lib/traversal.js":25}],56:[function(require,module,exports){
-module.exports=require(31)
-},{"../maps/decode.json":57,"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/entities/lib/decode_codepoint.js":31}],57:[function(require,module,exports){
-module.exports=require(33)
-},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/entities/maps/decode.json":33}],58:[function(require,module,exports){
-module.exports=require(34)
-},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/entities/maps/entities.json":34}],59:[function(require,module,exports){
-module.exports=require(35)
-},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/entities/maps/legacy.json":35}],60:[function(require,module,exports){
-module.exports=require(36)
-},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/entities/maps/xml.json":36}],61:[function(require,module,exports){
+arguments[4][21][0].apply(exports,arguments)
+},{"domelementtype":45,"dup":21}],52:[function(require,module,exports){
+arguments[4][22][0].apply(exports,arguments)
+},{"dup":22}],53:[function(require,module,exports){
+arguments[4][23][0].apply(exports,arguments)
+},{"domelementtype":45,"dup":23}],54:[function(require,module,exports){
+arguments[4][24][0].apply(exports,arguments)
+},{"domelementtype":45,"dup":24}],55:[function(require,module,exports){
+arguments[4][25][0].apply(exports,arguments)
+},{"dup":25}],56:[function(require,module,exports){
+arguments[4][31][0].apply(exports,arguments)
+},{"../maps/decode.json":57,"dup":31}],57:[function(require,module,exports){
+arguments[4][33][0].apply(exports,arguments)
+},{"dup":33}],58:[function(require,module,exports){
+arguments[4][34][0].apply(exports,arguments)
+},{"dup":34}],59:[function(require,module,exports){
+arguments[4][35][0].apply(exports,arguments)
+},{"dup":35}],60:[function(require,module,exports){
+arguments[4][36][0].apply(exports,arguments)
+},{"dup":36}],61:[function(require,module,exports){
 (function (global){
 /**
  * @license
@@ -12486,11 +12486,11 @@ module.exports={
     "node": ">= 0.6"
   },
   "dependencies": {
-    "CSSselect": "~0.4.0",
+    "CSSselect": "^0.4.1",
+    "dom-serializer": "~0.0.0",
     "entities": "~1.1.1",
     "htmlparser2": "~3.8.1",
-    "dom-serializer": "~0.0.0",
-    "lodash": "~2.4.1"
+    "lodash": "^2.4.1"
   },
   "devDependencies": {
     "benchmark": "~1.0.0",
@@ -12546,6 +12546,7 @@ module.exports={
 (function (global){
 /*
   Copyright (C) 2012-2014 Yusuke Suzuki <utatane.tea@gmail.com>
+  Copyright (C) 2015 Ingvar Stepanyan <me@rreverser.com>
   Copyright (C) 2014 Ivan Nikulin <ifaaan@gmail.com>
   Copyright (C) 2012-2013 Michael Ficarra <escodegen.copyright@michael.ficarra.me>
   Copyright (C) 2012-2013 Mathias Bynens <mathias@qiwi.be>
@@ -12605,79 +12606,15 @@ module.exports={
         extra,
         parse,
         sourceMap,
+        sourceCode,
+        preserveBlankLines,
         FORMAT_MINIFY,
         FORMAT_DEFAULTS;
 
     estraverse = require('estraverse');
     esutils = require('esutils');
 
-    Syntax = {
-        AssignmentExpression: 'AssignmentExpression',
-        ArrayExpression: 'ArrayExpression',
-        ArrayPattern: 'ArrayPattern',
-        ArrowFunctionExpression: 'ArrowFunctionExpression',
-        BlockStatement: 'BlockStatement',
-        BinaryExpression: 'BinaryExpression',
-        BreakStatement: 'BreakStatement',
-        CallExpression: 'CallExpression',
-        CatchClause: 'CatchClause',
-        ClassBody: 'ClassBody',
-        ClassDeclaration: 'ClassDeclaration',
-        ClassExpression: 'ClassExpression',
-        ComprehensionBlock: 'ComprehensionBlock',
-        ComprehensionExpression: 'ComprehensionExpression',
-        ConditionalExpression: 'ConditionalExpression',
-        ContinueStatement: 'ContinueStatement',
-        DirectiveStatement: 'DirectiveStatement',
-        DoWhileStatement: 'DoWhileStatement',
-        DebuggerStatement: 'DebuggerStatement',
-        EmptyStatement: 'EmptyStatement',
-        ExportBatchSpecifier: 'ExportBatchSpecifier',
-        ExportDeclaration: 'ExportDeclaration',
-        ExportSpecifier: 'ExportSpecifier',
-        ExpressionStatement: 'ExpressionStatement',
-        ForStatement: 'ForStatement',
-        ForInStatement: 'ForInStatement',
-        ForOfStatement: 'ForOfStatement',
-        FunctionDeclaration: 'FunctionDeclaration',
-        FunctionExpression: 'FunctionExpression',
-        GeneratorExpression: 'GeneratorExpression',
-        Identifier: 'Identifier',
-        IfStatement: 'IfStatement',
-        ImportDeclaration: 'ImportDeclaration',
-        ImportDefaultSpecifier: 'ImportDefaultSpecifier',
-        ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',
-        ImportSpecifier: 'ImportSpecifier',
-        Literal: 'Literal',
-        LabeledStatement: 'LabeledStatement',
-        LogicalExpression: 'LogicalExpression',
-        MemberExpression: 'MemberExpression',
-        MethodDefinition: 'MethodDefinition',
-        ModuleSpecifier: 'ModuleSpecifier',
-        NewExpression: 'NewExpression',
-        ObjectExpression: 'ObjectExpression',
-        ObjectPattern: 'ObjectPattern',
-        Program: 'Program',
-        Property: 'Property',
-        ReturnStatement: 'ReturnStatement',
-        SequenceExpression: 'SequenceExpression',
-        SpreadElement: 'SpreadElement',
-        SwitchStatement: 'SwitchStatement',
-        SwitchCase: 'SwitchCase',
-        TaggedTemplateExpression: 'TaggedTemplateExpression',
-        TemplateElement: 'TemplateElement',
-        TemplateLiteral: 'TemplateLiteral',
-        ThisExpression: 'ThisExpression',
-        ThrowStatement: 'ThrowStatement',
-        TryStatement: 'TryStatement',
-        UnaryExpression: 'UnaryExpression',
-        UpdateExpression: 'UpdateExpression',
-        VariableDeclaration: 'VariableDeclaration',
-        VariableDeclarator: 'VariableDeclarator',
-        WhileStatement: 'WhileStatement',
-        WithStatement: 'WithStatement',
-        YieldExpression: 'YieldExpression'
-    };
+    Syntax = estraverse.Syntax;
 
     // Generation is done by generateExpression.
     function isExpression(node) {
@@ -12692,6 +12629,7 @@ module.exports={
     Precedence = {
         Sequence: 0,
         Yield: 1,
+        Await: 1,
         Assignment: 1,
         Conditional: 2,
         ArrowFunction: 2,
@@ -12797,7 +12735,8 @@ module.exports={
                 compact: false,
                 parentheses: true,
                 semicolons: true,
-                safeConcatenation: false
+                safeConcatenation: false,
+                preserveBlankLines: false
             },
             moz: {
                 comprehensionExpressionStartsWithAssignment: false,
@@ -12808,7 +12747,8 @@ module.exports={
             sourceMapWithCode: false,
             directive: false,
             raw: true,
-            verbatim: null
+            verbatim: null,
+            sourceCode: null
         };
     }
 
@@ -13257,7 +13197,11 @@ module.exports={
                 return '//' + comment.value;
             } else {
                 // Always use LineTerminator
-                return '//' + comment.value + '\n';
+                var result = '//' + comment.value;
+                if (!preserveBlankLines) {
+                    result += '\n';
+                }
+                return result;
             }
         }
         if (extra.format.indent.adjustMultilineComment && /[\n\r]/.test(comment.value)) {
@@ -13267,56 +13211,111 @@ module.exports={
     }
 
     function addComments(stmt, result) {
-        var i, len, comment, save, tailingToStatement, specialBase, fragment;
+        var i, len, comment, save, tailingToStatement, specialBase, fragment,
+            extRange, range, prevRange, prefix, infix, suffix, count;
 
         if (stmt.leadingComments && stmt.leadingComments.length > 0) {
             save = result;
 
-            comment = stmt.leadingComments[0];
-            result = [];
-            if (safeConcatenation && stmt.type === Syntax.Program && stmt.body.length === 0) {
-                result.push('\n');
-            }
-            result.push(generateComment(comment));
-            if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {
-                result.push('\n');
-            }
+            if (preserveBlankLines) {
+                comment = stmt.leadingComments[0];
+                result = [];
 
-            for (i = 1, len = stmt.leadingComments.length; i < len; ++i) {
-                comment = stmt.leadingComments[i];
-                fragment = [generateComment(comment)];
-                if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {
-                    fragment.push('\n');
+                extRange = comment.extendedRange;
+                range = comment.range;
+
+                prefix = sourceCode.substring(extRange[0], range[0]);
+                count = (prefix.match(/\n/g) || []).length;
+                if (count > 0) {
+                    result.push(stringRepeat('\n', count));
+                    result.push(addIndent(generateComment(comment)));
+                } else {
+                    result.push(prefix);
+                    result.push(generateComment(comment));
+                }
+
+                prevRange = range;
+
+                for (i = 1, len = stmt.leadingComments.length; i < len; i++) {
+                    comment = stmt.leadingComments[i];
+                    range = comment.range;
+
+                    infix = sourceCode.substring(prevRange[1], range[0]);
+                    count = (infix.match(/\n/g) || []).length;
+                    result.push(stringRepeat('\n', count));
+                    result.push(addIndent(generateComment(comment)));
+
+                    prevRange = range;
+                }
+
+                suffix = sourceCode.substring(range[1], extRange[1]);
+                count = (suffix.match(/\n/g) || []).length;
+                result.push(stringRepeat('\n', count));
+            } else {
+                comment = stmt.leadingComments[0];
+                result = [];
+                if (safeConcatenation && stmt.type === Syntax.Program && stmt.body.length === 0) {
+                    result.push('\n');
+                }
+                result.push(generateComment(comment));
+                if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {
+                    result.push('\n');
+                }
+
+                for (i = 1, len = stmt.leadingComments.length; i < len; ++i) {
+                    comment = stmt.leadingComments[i];
+                    fragment = [generateComment(comment)];
+                    if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {
+                        fragment.push('\n');
+                    }
+                    result.push(addIndent(fragment));
                 }
-                result.push(addIndent(fragment));
             }
 
             result.push(addIndent(save));
         }
 
         if (stmt.trailingComments) {
-            tailingToStatement = !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString());
-            specialBase = stringRepeat(' ', calculateSpaces(toSourceNodeWhenNeeded([base, result, indent]).toString()));
-            for (i = 0, len = stmt.trailingComments.length; i < len; ++i) {
-                comment = stmt.trailingComments[i];
-                if (tailingToStatement) {
-                    // We assume target like following script
-                    //
-                    // var t = 20;  /**
-                    //               * This is comment of t
-                    //               */
-                    if (i === 0) {
-                        // first case
-                        result = [result, indent];
-                    } else {
-                        result = [result, specialBase];
-                    }
-                    result.push(generateComment(comment, specialBase));
+
+            if (preserveBlankLines) {
+                comment = stmt.trailingComments[0];
+                extRange = comment.extendedRange;
+                range = comment.range;
+
+                prefix = sourceCode.substring(extRange[0], range[0]);
+                count = (prefix.match(/\n/g) || []).length;
+
+                if (count > 0) {
+                    result.push(stringRepeat('\n', count));
+                    result.push(addIndent(generateComment(comment)));
                 } else {
-                    result = [result, addIndent(generateComment(comment))];
+                    result.push(prefix);
+                    result.push(generateComment(comment));
                 }
-                if (i !== len - 1 && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {
-                    result = [result, '\n'];
+            } else {
+                tailingToStatement = !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString());
+                specialBase = stringRepeat(' ', calculateSpaces(toSourceNodeWhenNeeded([base, result, indent]).toString()));
+                for (i = 0, len = stmt.trailingComments.length; i < len; ++i) {
+                    comment = stmt.trailingComments[i];
+                    if (tailingToStatement) {
+                        // We assume target like following script
+                        //
+                        // var t = 20;  /**
+                        //               * This is comment of t
+                        //               */
+                        if (i === 0) {
+                            // first case
+                            result = [result, indent];
+                        } else {
+                            result = [result, specialBase];
+                        }
+                        result.push(generateComment(comment, specialBase));
+                    } else {
+                        result = [result, addIndent(generateComment(comment))];
+                    }
+                    if (i !== len - 1 && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {
+                        result = [result, '\n'];
+                    }
                 }
             }
         }
@@ -13324,6 +13323,20 @@ module.exports={
         return result;
     }
 
+    function generateBlankLines(start, end, result) {
+        var j, newlineCount = 0;
+
+        for (j = start; j < end; j++) {
+            if (sourceCode[j] === '\n') {
+                newlineCount++;
+            }
+        }
+
+        for (j = 1; j < newlineCount; j++) {
+            result.push(newline);
+        }
+    }
+
     function parenthesize(text, current, should) {
         if (current < should) {
             return ['(', text, ')'];
@@ -13399,6 +13412,25 @@ module.exports={
         return toSourceNodeWhenNeeded(node.name, node);
     }
 
+    function generateAsyncPrefix(node, spaceRequired) {
+        return node.async ? 'async' + (spaceRequired ? noEmptySpace() : space) : '';
+    }
+
+    function generateStarSuffix(node) {
+        var isGenerator = node.generator && !extra.moz.starlessGenerator;
+        return isGenerator ? '*' + space : '';
+    }
+
+    function generateMethodPrefix(prop) {
+        var func = prop.value;
+        if (func.async) {
+            return generateAsyncPrefix(func, !prop.computed);
+        } else {
+            // avoid space before method name
+            return generateStarSuffix(func) ? '*' : '';
+        }
+    }
+
     CodeGenerator.prototype.generatePattern = function (node, precedence, flags) {
         if (node.type === Syntax.Identifier) {
             return generateIdentifier(node);
@@ -13415,9 +13447,10 @@ module.exports={
                 !node.rest && (!node.defaults || node.defaults.length === 0) &&
                 node.params.length === 1 && node.params[0].type === Syntax.Identifier) {
             // arg => { } case
-            result = [generateIdentifier(node.params[0])];
+            result = [generateAsyncPrefix(node, true), generateIdentifier(node.params[0])];
         } else {
-            result = ['('];
+            result = node.type === Syntax.ArrowFunctionExpression ? [generateAsyncPrefix(node, false)] : [];
+            result.push('(');
             if (node.defaults) {
                 hasDefault = true;
             }
@@ -13536,22 +13569,81 @@ module.exports={
     CodeGenerator.Statement = {
 
         BlockStatement: function (stmt, flags) {
-            var result = ['{', newline], that = this;
+            var range, content, result = ['{', newline], that = this;
 
             withIndent(function () {
+                // handle functions without any code
+                if (stmt.body.length === 0 && preserveBlankLines) {
+                    range = stmt.range;
+                    if (range[1] - range[0] > 2) {
+                        content = sourceCode.substring(range[0] + 1, range[1] - 1);
+                        if (content[0] === '\n') {
+                            result = ['{'];
+                        }
+                        result.push(content);
+                    }
+                }
+
                 var i, iz, fragment, bodyFlags;
                 bodyFlags = S_TFFF;
                 if (flags & F_FUNC_BODY) {
                     bodyFlags |= F_DIRECTIVE_CTX;
                 }
+
                 for (i = 0, iz = stmt.body.length; i < iz; ++i) {
+                    if (preserveBlankLines) {
+                        // handle spaces before the first line
+                        if (i === 0) {
+                            if (stmt.body[0].leadingComments) {
+                                range = stmt.body[0].leadingComments[0].extendedRange;
+                                content = sourceCode.substring(range[0], range[1]);
+                                if (content[0] === '\n') {
+                                    result = ['{'];
+                                }
+                            }
+                            if (!stmt.body[0].leadingComments) {
+                                generateBlankLines(stmt.range[0], stmt.body[0].range[0], result);
+                            }
+                        }
+
+                        // handle spaces between lines
+                        if (i > 0) {
+                            if (!stmt.body[i - 1].trailingComments  && !stmt.body[i].leadingComments) {
+                                generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result);
+                            }
+                        }
+                    }
+
                     if (i === iz - 1) {
                         bodyFlags |= F_SEMICOLON_OPT;
                     }
-                    fragment = addIndent(that.generateStatement(stmt.body[i], bodyFlags));
+
+                    if (stmt.body[i].leadingComments && preserveBlankLines) {
+                        fragment = that.generateStatement(stmt.body[i], bodyFlags);
+                    } else {
+                        fragment = addIndent(that.generateStatement(stmt.body[i], bodyFlags));
+                    }
+
                     result.push(fragment);
                     if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {
-                        result.push(newline);
+                        if (preserveBlankLines && i < iz - 1) {
+                            // don't add a new line if there are leading coments
+                            // in the next statement
+                            if (!stmt.body[i + 1].leadingComments) {
+                                result.push(newline);
+                            }
+                        } else {
+                            result.push(newline);
+                        }
+                    }
+
+                    if (preserveBlankLines) {
+                        // handle spaces after the last line
+                        if (i === iz - 1) {
+                            if (!stmt.body[i].trailingComments) {
+                                generateBlankLines(stmt.body[i].range[1], stmt.range[1], result);
+                            }
+                        }
                     }
                 }
             });
@@ -13722,13 +13814,55 @@ module.exports={
         ExpressionStatement: function (stmt, flags) {
             var result, fragment;
 
+            function isClassPrefixed(fragment) {
+                var code;
+                if (fragment.slice(0, 5) !== 'class') {
+                    return false;
+                }
+                code = fragment.charCodeAt(5);
+                return code === 0x7B  /* '{' */ || esutils.code.isWhiteSpace(code) || esutils.code.isLineTerminator(code);
+            }
+
+            function isFunctionPrefixed(fragment) {
+                var code;
+                if (fragment.slice(0, 8) !== 'function') {
+                    return false;
+                }
+                code = fragment.charCodeAt(8);
+                return code === 0x28 /* '(' */ || esutils.code.isWhiteSpace(code) || code === 0x2A  /* '*' */ || esutils.code.isLineTerminator(code);
+            }
+
+            function isAsyncPrefixed(fragment) {
+                var code, i, iz;
+                if (fragment.slice(0, 5) !== 'async') {
+                    return false;
+                }
+                if (!esutils.code.isWhiteSpace(fragment.charCodeAt(5))) {
+                    return false;
+                }
+                for (i = 6, iz = fragment.length; i < iz; ++i) {
+                    if (!esutils.code.isWhiteSpace(fragment.charCodeAt(i))) {
+                        break;
+                    }
+                }
+                if (i === iz) {
+                    return false;
+                }
+                if (fragment.slice(i, i + 8) !== 'function') {
+                    return false;
+                }
+                code = fragment.charCodeAt(i + 8);
+                return code === 0x28 /* '(' */ || esutils.code.isWhiteSpace(code) || code === 0x2A  /* '*' */ || esutils.code.isLineTerminator(code);
+            }
+
             result = [this.generateExpression(stmt.expression, Precedence.Sequence, E_TTT)];
             // 12.4 '{', 'function', 'class' is not allowed in this position.
             // wrap expression with parentheses
             fragment = toSourceNodeWhenNeeded(result).toString();
-            if (fragment.charAt(0) === '{' ||  // ObjectExpression
-                    (fragment.slice(0, 5) === 'class' && ' {'.indexOf(fragment.charAt(5)) >= 0) ||  // class
-                    (fragment.slice(0, 8) === 'function' && '* ('.indexOf(fragment.charAt(8)) >= 0) ||  // function or generator
+            if (fragment.charCodeAt(0) === 0x7B  /* '{' */ ||  // ObjectExpression
+                    isClassPrefixed(fragment) ||
+                    isFunctionPrefixed(fragment) ||
+                    isAsyncPrefixed(fragment) ||
                     (directive && (flags & F_DIRECTIVE_CTX) && stmt.expression.type === Syntax.Literal && typeof stmt.expression.value === 'string')) {
                 result = ['(', result, ')' + this.semicolon(flags)];
             } else {
@@ -14086,20 +14220,52 @@ module.exports={
                 if (!safeConcatenation && i === iz - 1) {
                     bodyFlags |= F_SEMICOLON_OPT;
                 }
+
+                if (preserveBlankLines) {
+                    // handle spaces before the first line
+                    if (i === 0) {
+                        if (!stmt.body[0].leadingComments) {
+                            generateBlankLines(stmt.range[0], stmt.body[i].range[0], result);
+                        }
+                    }
+
+                    // handle spaces between lines
+                    if (i > 0) {
+                        if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) {
+                            generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result);
+                        }
+                    }
+                }
+
                 fragment = addIndent(this.generateStatement(stmt.body[i], bodyFlags));
                 result.push(fragment);
                 if (i + 1 < iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {
-                    result.push(newline);
+                    if (preserveBlankLines) {
+                        if (!stmt.body[i + 1].leadingComments) {
+                            result.push(newline);
+                        }
+                    } else {
+                        result.push(newline);
+                    }
+                }
+
+                if (preserveBlankLines) {
+                    // handle spaces after the last line
+                    if (i === iz - 1) {
+                        if (!stmt.body[i].trailingComments) {
+                            generateBlankLines(stmt.body[i].range[1], stmt.range[1], result);
+                        }
+                    }
                 }
             }
             return result;
         },
 
         FunctionDeclaration: function (stmt, flags) {
-            var isGenerator = stmt.generator && !extra.moz.starlessGenerator;
             return [
-                (isGenerator ? 'function*' : 'function'),
-                (isGenerator ? space : noEmptySpace()),
+                generateAsyncPrefix(stmt, true),
+                'function',
+                generateStarSuffix(stmt) || noEmptySpace(),
                 generateIdentifier(stmt.id),
                 this.generateFunctionBody(stmt)
             ];
@@ -14356,6 +14522,14 @@ module.exports={
             return parenthesize(result, Precedence.Yield, precedence);
         },
 
+        AwaitExpression: function (expr, precedence, flags) {
+            var result = join(
+                expr.delegate ? 'await*' : 'await',
+                this.generateExpression(expr.argument, Precedence.Await, E_TTT)
+            );
+            return parenthesize(result, Precedence.Await, precedence);
+        },
+
         UpdateExpression: function (expr, precedence, flags) {
             if (expr.prefix) {
                 return parenthesize(
@@ -14378,14 +14552,18 @@ module.exports={
         },
 
         FunctionExpression: function (expr, precedence, flags) {
-            var result, isGenerator;
-            isGenerator = expr.generator && !extra.moz.starlessGenerator;
-            result = isGenerator ? 'function*' : 'function';
-
+            var result = [
+                generateAsyncPrefix(expr, true),
+                'function'
+            ];
             if (expr.id) {
-                return [result, (isGenerator) ? space : noEmptySpace(), generateIdentifier(expr.id), this.generateFunctionBody(expr)];
+                result.push(generateStarSuffix(expr) || noEmptySpace());
+                result.push(generateIdentifier(expr.id));
+            } else {
+                result.push(generateStarSuffix(expr) || space);
             }
-            return [result + space, this.generateFunctionBody(expr)];
+            result.push(this.generateFunctionBody(expr));
+            return result;
         },
 
         ExportBatchSpecifier: function (expr, precedence, flags) {
@@ -14452,29 +14630,22 @@ module.exports={
             } else {
                 result = [];
             }
-
             if (expr.kind === 'get' || expr.kind === 'set') {
-                result = join(result, [
+                fragment = [
                     join(expr.kind, this.generatePropertyKey(expr.key, expr.computed)),
                     this.generateFunctionBody(expr.value)
-                ]);
+                ];
             } else {
                 fragment = [
+                    generateMethodPrefix(expr),
                     this.generatePropertyKey(expr.key, expr.computed),
                     this.generateFunctionBody(expr.value)
                 ];
-                if (expr.value.generator) {
-                    result.push('*');
-                    result.push(fragment);
-                } else {
-                    result = join(result, fragment);
-                }
             }
-            return result;
+            return join(result, fragment);
         },
 
         Property: function (expr, precedence, flags) {
-            var result;
             if (expr.kind === 'get' || expr.kind === 'set') {
                 return [
                     expr.kind, noEmptySpace(),
@@ -14488,13 +14659,11 @@ module.exports={
             }
 
             if (expr.method) {
-                result = [];
-                if (expr.value.generator) {
-                    result.push('*');
-                }
-                result.push(this.generatePropertyKey(expr.key, expr.computed));
-                result.push(this.generateFunctionBody(expr.value));
-                return result;
+                return [
+                    generateMethodPrefix(expr),
+                    this.generatePropertyKey(expr.key, expr.computed),
+                    this.generateFunctionBody(expr.value)
+                ];
             }
 
             return [
@@ -14869,6 +15038,8 @@ module.exports={
         directive = options.directive;
         parse = json ? null : options.parse;
         sourceMap = options.sourceMap;
+        sourceCode = options.sourceCode;
+        preserveBlankLines = options.format.preserveBlankLines && sourceCode !== null;
         extra = options;
 
         if (sourceMap) {
@@ -14933,7 +15104,7 @@ module.exports={
 /* vim: set sw=4 ts=4 et tw=80 : */
 
 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"./package.json":79,"estraverse":64,"esutils":68,"source-map":69}],64:[function(require,module,exports){
+},{"./package.json":80,"estraverse":64,"esutils":68,"source-map":69}],64:[function(require,module,exports){
 /*
   Copyright (C) 2012-2013 Yusuke Suzuki <utatane.tea@gmail.com>
   Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
@@ -16211,7 +16382,7 @@ exports.SourceMapGenerator = require('./source-map/source-map-generator').Source
 exports.SourceMapConsumer = require('./source-map/source-map-consumer').SourceMapConsumer;
 exports.SourceNode = require('./source-map/source-node').SourceNode;
 
-},{"./source-map/source-map-consumer":74,"./source-map/source-map-generator":75,"./source-map/source-node":76}],70:[function(require,module,exports){
+},{"./source-map/source-map-consumer":75,"./source-map/source-map-generator":76,"./source-map/source-node":77}],70:[function(require,module,exports){
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
@@ -16310,7 +16481,7 @@ define(function (require, exports, module) {
 
 });
 
-},{"./util":77,"amdefine":78}],71:[function(require,module,exports){
+},{"./util":78,"amdefine":79}],71:[function(require,module,exports){
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
@@ -16454,7 +16625,7 @@ define(function (require, exports, module) {
 
 });
 
-},{"./base64":72,"amdefine":78}],72:[function(require,module,exports){
+},{"./base64":72,"amdefine":79}],72:[function(require,module,exports){
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
@@ -16498,7 +16669,7 @@ define(function (require, exports, module) {
 
 });
 
-},{"amdefine":78}],73:[function(require,module,exports){
+},{"amdefine":79}],73:[function(require,module,exports){
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
@@ -16580,7 +16751,95 @@ define(function (require, exports, module) {
 
 });
 
-},{"amdefine":78}],74:[function(require,module,exports){
+},{"amdefine":79}],74:[function(require,module,exports){
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+if (typeof define !== 'function') {
+    var define = require('amdefine')(module, require);
+}
+define(function (require, exports, module) {
+
+  var util = require('./util');
+
+  /**
+   * Determine whether mappingB is after mappingA with respect to generated
+   * position.
+   */
+  function generatedPositionAfter(mappingA, mappingB) {
+    // Optimized for most common case
+    var lineA = mappingA.generatedLine;
+    var lineB = mappingB.generatedLine;
+    var columnA = mappingA.generatedColumn;
+    var columnB = mappingB.generatedColumn;
+    return lineB > lineA || lineB == lineA && columnB >= columnA ||
+           util.compareByGeneratedPositions(mappingA, mappingB) <= 0;
+  }
+
+  /**
+   * A data structure to provide a sorted view of accumulated mappings in a
+   * performance conscious manner. It trades a neglibable overhead in general
+   * case for a large speedup in case of mappings being added in order.
+   */
+  function MappingList() {
+    this._array = [];
+    this._sorted = true;
+    // Serves as infimum
+    this._last = {generatedLine: -1, generatedColumn: 0};
+  }
+
+  /**
+   * Iterate through internal items. This method takes the same arguments that
+   * `Array.prototype.forEach` takes.
+   *
+   * NOTE: The order of the mappings is NOT guaranteed.
+   */
+  MappingList.prototype.unsortedForEach =
+    function MappingList_forEach(aCallback, aThisArg) {
+      this._array.forEach(aCallback, aThisArg);
+    };
+
+  /**
+   * Add the given source mapping.
+   *
+   * @param Object aMapping
+   */
+  MappingList.prototype.add = function MappingList_add(aMapping) {
+    var mapping;
+    if (generatedPositionAfter(this._last, aMapping)) {
+      this._last = aMapping;
+      this._array.push(aMapping);
+    } else {
+      this._sorted = false;
+      this._array.push(aMapping);
+    }
+  };
+
+  /**
+   * Returns the flat, sorted array of mappings. The mappings are sorted by
+   * generated position.
+   *
+   * WARNING: This method returns internal data without copying, for
+   * performance. The return value must NOT be mutated, and should be treated as
+   * an immutable borrow. If you want to take ownership, you must make your own
+   * copy.
+   */
+  MappingList.prototype.toArray = function MappingList_toArray() {
+    if (!this._sorted) {
+      this._array.sort(util.compareByGeneratedPositions);
+      this._sorted = true;
+    }
+    return this._array;
+  };
+
+  exports.MappingList = MappingList;
+
+});
+
+},{"./util":78,"amdefine":79}],75:[function(require,module,exports){
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
@@ -16685,9 +16944,8 @@ define(function (require, exports, module) {
                                                               smc.sourceRoot);
       smc.file = aSourceMap._file;
 
-      smc.__generatedMappings = aSourceMap._mappings.slice()
-        .sort(util.compareByGeneratedPositions);
-      smc.__originalMappings = aSourceMap._mappings.slice()
+      smc.__generatedMappings = aSourceMap._mappings.toArray().slice();
+      smc.__originalMappings = aSourceMap._mappings.toArray().slice()
         .sort(util.compareByOriginalPositions);
 
       return smc;
@@ -17158,7 +17416,7 @@ define(function (require, exports, module) {
 
 });
 
-},{"./array-set":70,"./base64-vlq":71,"./binary-search":73,"./util":77,"amdefine":78}],75:[function(require,module,exports){
+},{"./array-set":70,"./base64-vlq":71,"./binary-search":73,"./util":78,"amdefine":79}],76:[function(require,module,exports){
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
@@ -17173,6 +17431,7 @@ define(function (require, exports, module) {
   var base64VLQ = require('./base64-vlq');
   var util = require('./util');
   var ArraySet = require('./array-set').ArraySet;
+  var MappingList = require('./mapping-list').MappingList;
 
   /**
    * An instance of the SourceMapGenerator represents a source map which is
@@ -17188,9 +17447,10 @@ define(function (require, exports, module) {
     }
     this._file = util.getArg(aArgs, 'file', null);
     this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+    this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
     this._sources = new ArraySet();
     this._names = new ArraySet();
-    this._mappings = [];
+    this._mappings = new MappingList();
     this._sourcesContents = null;
   }
 
@@ -17260,7 +17520,9 @@ define(function (require, exports, module) {
       var source = util.getArg(aArgs, 'source', null);
       var name = util.getArg(aArgs, 'name', null);
 
-      this._validateMapping(generated, original, source, name);
+      if (!this._skipValidation) {
+        this._validateMapping(generated, original, source, name);
+      }
 
       if (source != null && !this._sources.has(source)) {
         this._sources.add(source);
@@ -17270,7 +17532,7 @@ define(function (require, exports, module) {
         this._names.add(name);
       }
 
-      this._mappings.push({
+      this._mappings.add({
         generatedLine: generated.line,
         generatedColumn: generated.column,
         originalLine: original != null && original.line,
@@ -17347,7 +17609,7 @@ define(function (require, exports, module) {
       var newNames = new ArraySet();
 
       // Find mappings for the "sourceFile"
-      this._mappings.forEach(function (mapping) {
+      this._mappings.unsortedForEach(function (mapping) {
         if (mapping.source === sourceFile && mapping.originalLine != null) {
           // Check if it can be mapped by the source map, then update the mapping.
           var original = aSourceMapConsumer.originalPositionFor({
@@ -17453,15 +17715,10 @@ define(function (require, exports, module) {
       var result = '';
       var mapping;
 
-      // The mappings must be guaranteed to be in sorted order before we start
-      // serializing them or else the generated line numbers (which are defined
-      // via the ';' separators) will be all messed up. Note: it might be more
-      // performant to maintain the sorting as we insert them, rather than as we
-      // serialize them, but the big O is the same either way.
-      this._mappings.sort(util.compareByGeneratedPositions);
+      var mappings = this._mappings.toArray();
 
-      for (var i = 0, len = this._mappings.length; i < len; i++) {
-        mapping = this._mappings[i];
+      for (var i = 0, len = mappings.length; i < len; i++) {
+        mapping = mappings[i];
 
         if (mapping.generatedLine !== previousGeneratedLine) {
           previousGeneratedColumn = 0;
@@ -17472,7 +17729,7 @@ define(function (require, exports, module) {
         }
         else {
           if (i > 0) {
-            if (!util.compareByGeneratedPositions(mapping, this._mappings[i - 1])) {
+            if (!util.compareByGeneratedPositions(mapping, mappings[i - 1])) {
               continue;
             }
             result += ',';
@@ -17561,7 +17818,7 @@ define(function (require, exports, module) {
 
 });
 
-},{"./array-set":70,"./base64-vlq":71,"./util":77,"amdefine":78}],76:[function(require,module,exports){
+},{"./array-set":70,"./base64-vlq":71,"./mapping-list":74,"./util":78,"amdefine":79}],77:[function(require,module,exports){
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
@@ -17580,8 +17837,8 @@ define(function (require, exports, module) {
   // operating systems these days (capturing the result).
   var REGEX_NEWLINE = /(\r?\n)/;
 
-  // Matches a Windows-style newline, or any character.
-  var REGEX_CHARACTER = /\r\n|[\s\S]/g;
+  // Newline character code for charCodeAt() comparisons
+  var NEWLINE_CODE = 10;
 
   // Private symbol for identifying `SourceNode`s when multiple versions of
   // the source-map library are loaded. This MUST NOT CHANGE across
@@ -17939,12 +18196,12 @@ define(function (require, exports, module) {
         lastOriginalSource = null;
         sourceMappingActive = false;
       }
-      chunk.match(REGEX_CHARACTER).forEach(function (ch, idx, array) {
-        if (REGEX_NEWLINE.test(ch)) {
+      for (var idx = 0, length = chunk.length; idx < length; idx++) {
+        if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
           generated.line++;
           generated.column = 0;
           // Mappings end at eol
-          if (idx + 1 === array.length) {
+          if (idx + 1 === length) {
             lastOriginalSource = null;
             sourceMappingActive = false;
           } else if (sourceMappingActive) {
@@ -17962,9 +18219,9 @@ define(function (require, exports, module) {
             });
           }
         } else {
-          generated.column += ch.length;
+          generated.column++;
         }
-      });
+      }
     });
     this.walkSourceContents(function (sourceFile, sourceContent) {
       map.setSourceContent(sourceFile, sourceContent);
@@ -17977,7 +18234,7 @@ define(function (require, exports, module) {
 
 });
 
-},{"./source-map-generator":75,"./util":77,"amdefine":78}],77:[function(require,module,exports){
+},{"./source-map-generator":76,"./util":78,"amdefine":79}],78:[function(require,module,exports){
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
@@ -18298,7 +18555,7 @@ define(function (require, exports, module) {
 
 });
 
-},{"amdefine":78}],78:[function(require,module,exports){
+},{"amdefine":79}],79:[function(require,module,exports){
 (function (process,__filename){
 /** vim: et:ts=4:sw=4:sts=4
  * @license amdefine 0.1.0 Copyright (c) 2011, The Dojo Foundation All Rights Reserved.
@@ -18601,7 +18858,7 @@ function amdefine(module, requireFn) {
 module.exports = amdefine;
 
 }).call(this,require('_process'),"/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/amdefine.js")
-},{"_process":90,"path":89}],79:[function(require,module,exports){
+},{"_process":91,"path":90}],80:[function(require,module,exports){
 module.exports={
   "name": "escodegen",
   "description": "ECMAScript code generator",
@@ -18617,10 +18874,9 @@ module.exports={
     "README.md",
     "bin",
     "escodegen.js",
-    "gulpfile.js",
     "package.json"
   ],
-  "version": "1.4.3",
+  "version": "1.6.1",
   "engines": {
     "node": ">=0.10.0"
   },
@@ -18635,25 +18891,26 @@ module.exports={
     "url": "http://github.com/estools/escodegen.git"
   },
   "dependencies": {
-    "esprima": "^1.2.2",
-    "estraverse": "^1.9.0",
+    "estraverse": "^1.9.1",
     "esutils": "^1.1.6",
-    "optionator": "^0.4.0",
+    "esprima": "^1.2.2",
+    "optionator": "^0.5.0",
     "source-map": "~0.1.40"
   },
   "optionalDependencies": {
     "source-map": "~0.1.40"
   },
   "devDependencies": {
-    "esprima-moz": "*",
-    "semver": "^4.1.0",
+    "acorn-6to5": "^0.11.1-25",
     "bluebird": "^2.3.11",
-    "chai": "^1.10.0",
-    "gulp-mocha": "^2.0.0",
-    "gulp-eslint": "^0.2.0",
-    "gulp": "^3.8.10",
     "bower-registry-client": "^0.2.1",
-    "commonjs-everywhere": "^0.9.7"
+    "chai": "^1.10.0",
+    "commonjs-everywhere": "^0.9.7",
+    "esprima-moz": "*",
+    "gulp": "^3.8.10",
+    "gulp-eslint": "^0.2.0",
+    "gulp-mocha": "^2.0.0",
+    "semver": "^4.1.0"
   },
   "licenses": [
     {
@@ -18669,32 +18926,31 @@ module.exports={
     "build-min": "cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",
     "build": "cjsify -a path: tools/entry-point.js > escodegen.browser.js"
   },
-  "gitHead": "ee238d803cb10af46c7ce5a1aef9b57cf006c317",
+  "gitHead": "1ca664f68dcf220b76c9dc562b2337c5e0b4227d",
   "bugs": {
     "url": "https://github.com/estools/escodegen/issues"
   },
-  "_id": "escodegen@1.4.3",
-  "_shasum": "2b2422bf18c95e2542effaabc0c998712d490291",
-  "_from": "escodegen@1.4.3",
+  "_id": "escodegen@1.6.1",
+  "_shasum": "367de17d8510540d12bc6dcb8b3f918391265815",
+  "_from": "escodegen@1.6.1",
   "_npmVersion": "2.0.0-alpha-5",
   "_npmUser": {
     "name": "constellation",
     "email": "utatane.tea@gmail.com"
   },
   "dist": {
-    "shasum": "2b2422bf18c95e2542effaabc0c998712d490291",
-    "tarball": "http://registry.npmjs.org/escodegen/-/escodegen-1.4.3.tgz"
+    "shasum": "367de17d8510540d12bc6dcb8b3f918391265815",
+    "tarball": "http://registry.npmjs.org/escodegen/-/escodegen-1.6.1.tgz"
   },
   "directories": {},
-  "_resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.4.3.tgz",
+  "_resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.6.1.tgz",
   "readme": "ERROR: No README data found!"
 }
 
-},{}],80:[function(require,module,exports){
+},{}],81:[function(require,module,exports){
 /*
   Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>
   Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>
-  Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>
   Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
   Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>
   Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
@@ -18726,22 +18982,28 @@ module.exports={
 
 /*jslint bitwise:true plusplus:true */
 /*global esprima:true, define:true, exports:true, window: true,
-throwErrorTolerant: true,
 throwError: true, generateStatement: true, peek: true,
-parseAssignmentExpression: true, parseBlock: true, parseExpression: true,
+parseAssignmentExpression: true, parseBlock: true,
+parseClassExpression: true, parseClassDeclaration: true, parseExpression: true,
+parseForStatement: true,
 parseFunctionDeclaration: true, parseFunctionExpression: true,
 parseFunctionSourceElements: true, parseVariableIdentifier: true,
-parseLeftHandSideExpression: true,
-parseUnaryExpression: true,
-parseStatement: true, parseSourceElement: true */
+parseImportSpecifier: true,
+parseLeftHandSideExpression: true, parseParams: true, validateParam: true,
+parseSpreadOrAssignmentExpression: true,
+parseStatement: true, parseSourceElement: true, parseConciseBody: true,
+advanceXJSChild: true, isXJSIdentifierStart: true, isXJSIdentifierPart: true,
+scanXJSStringLiteral: true, scanXJSIdentifier: true,
+parseXJSAttributeValue: true, parseXJSChild: true, parseXJSElement: true, parseXJSExpressionContainer: true, parseXJSEmptyExpression: true,
+parseTypeAnnotation: true, parseTypeAnnotatableIdentifier: true,
+parseYieldExpression: true, parseAwaitExpression: true
+*/
 
 (function (root, factory) {
     'use strict';
 
     // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js,
     // Rhino, and plain browser loading.
-
-    /* istanbul ignore next */
     if (typeof define === 'function' && define.amd) {
         define(['exports'], factory);
     } else if (typeof exports !== 'undefined') {
@@ -18760,6 +19022,8 @@ parseStatement: true, parseSourceElement: true */
         Messages,
         Regex,
         SyntaxTreeDelegate,
+        XHTMLEntities,
+        ClassPropertyType,
         source,
         strict,
         index,
@@ -18780,7 +19044,10 @@ parseStatement: true, parseSourceElement: true */
         NumericLiteral: 6,
         Punctuator: 7,
         StringLiteral: 8,
-        RegularExpression: 9
+        RegularExpression: 9,
+        Template: 10,
+        XJSIdentifier: 11,
+        XJSText: 12
     };
 
     TokenName = {};
@@ -18792,6 +19059,8 @@ parseStatement: true, parseSourceElement: true */
     TokenName[Token.NumericLiteral] = 'Numeric';
     TokenName[Token.Punctuator] = 'Punctuator';
     TokenName[Token.StringLiteral] = 'String';
+    TokenName[Token.XJSIdentifier] = 'XJSIdentifier';
+    TokenName[Token.XJSText] = 'XJSText';
     TokenName[Token.RegularExpression] = 'RegularExpression';
 
     // A function following one of those tokens is an expression.
@@ -18806,46 +19075,91 @@ parseStatement: true, parseSourceElement: true */
                     '<=', '<', '>', '!=', '!=='];
 
     Syntax = {
-        AssignmentExpression: 'AssignmentExpression',
         ArrayExpression: 'ArrayExpression',
-        BlockStatement: 'BlockStatement',
+        ArrayPattern: 'ArrayPattern',
+        ArrowFunctionExpression: 'ArrowFunctionExpression',
+        AssignmentExpression: 'AssignmentExpression',
         BinaryExpression: 'BinaryExpression',
+        BlockStatement: 'BlockStatement',
         BreakStatement: 'BreakStatement',
         CallExpression: 'CallExpression',
         CatchClause: 'CatchClause',
+        ClassBody: 'ClassBody',
+        ClassDeclaration: 'ClassDeclaration',
+        ClassExpression: 'ClassExpression',
+        ClassProperty: 'ClassProperty',
+        ComprehensionBlock: 'ComprehensionBlock',
+        ComprehensionExpression: 'ComprehensionExpression',
         ConditionalExpression: 'ConditionalExpression',
         ContinueStatement: 'ContinueStatement',
-        DoWhileStatement: 'DoWhileStatement',
         DebuggerStatement: 'DebuggerStatement',
+        DoWhileStatement: 'DoWhileStatement',
         EmptyStatement: 'EmptyStatement',
+        ExportDeclaration: 'ExportDeclaration',
+        ExportBatchSpecifier: 'ExportBatchSpecifier',
+        ExportSpecifier: 'ExportSpecifier',
         ExpressionStatement: 'ExpressionStatement',
-        ForStatement: 'ForStatement',
         ForInStatement: 'ForInStatement',
+        ForOfStatement: 'ForOfStatement',
+        ForStatement: 'ForStatement',
         FunctionDeclaration: 'FunctionDeclaration',
         FunctionExpression: 'FunctionExpression',
         Identifier: 'Identifier',
         IfStatement: 'IfStatement',
-        Literal: 'Literal',
+        ImportDeclaration: 'ImportDeclaration',
+        ImportDefaultSpecifier: 'ImportDefaultSpecifier',
+        ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',
+        ImportSpecifier: 'ImportSpecifier',
         LabeledStatement: 'LabeledStatement',
+        Literal: 'Literal',
         LogicalExpression: 'LogicalExpression',
         MemberExpression: 'MemberExpression',
+        MethodDefinition: 'MethodDefinition',
+        ModuleSpecifier: 'ModuleSpecifier',
         NewExpression: 'NewExpression',
         ObjectExpression: 'ObjectExpression',
+        ObjectPattern: 'ObjectPattern',
+        ObjectTypeAnnotation: 'ObjectTypeAnnotation',
+        OptionalParameter: 'OptionalParameter',
+        ParametricTypeAnnotation: 'ParametricTypeAnnotation',
+        ParametricallyTypedIdentifier: 'ParametricallyTypedIdentifier',
         Program: 'Program',
         Property: 'Property',
         ReturnStatement: 'ReturnStatement',
         SequenceExpression: 'SequenceExpression',
-        SwitchStatement: 'SwitchStatement',
+        SpreadElement: 'SpreadElement',
+        SpreadProperty: 'SpreadProperty',
         SwitchCase: 'SwitchCase',
+        SwitchStatement: 'SwitchStatement',
+        TaggedTemplateExpression: 'TaggedTemplateExpression',
+        TemplateElement: 'TemplateElement',
+        TemplateLiteral: 'TemplateLiteral',
         ThisExpression: 'ThisExpression',
         ThrowStatement: 'ThrowStatement',
         TryStatement: 'TryStatement',
+        TypeAnnotatedIdentifier: 'TypeAnnotatedIdentifier',
+        TypeAnnotation: 'TypeAnnotation',
         UnaryExpression: 'UnaryExpression',
+        UnionTypeAnnotation: 'UnionTypeAnnotation',
         UpdateExpression: 'UpdateExpression',
         VariableDeclaration: 'VariableDeclaration',
         VariableDeclarator: 'VariableDeclarator',
+        VoidTypeAnnotation: 'VoidTypeAnnotation',
         WhileStatement: 'WhileStatement',
-        WithStatement: 'WithStatement'
+        WithStatement: 'WithStatement',
+        XJSIdentifier: 'XJSIdentifier',
+        XJSNamespacedName: 'XJSNamespacedName',
+        XJSMemberExpression: 'XJSMemberExpression',
+        XJSEmptyExpression: 'XJSEmptyExpression',
+        XJSExpressionContainer: 'XJSExpressionContainer',
+        XJSElement: 'XJSElement',
+        XJSClosingElement: 'XJSClosingElement',
+        XJSOpeningElement: 'XJSOpeningElement',
+        XJSAttribute: 'XJSAttribute',
+        XJSSpreadAttribute: 'XJSSpreadAttribute',
+        XJSText: 'XJSText',
+        YieldExpression: 'YieldExpression',
+        AwaitExpression: 'AwaitExpression'
     };
 
     PropertyKind = {
@@ -18854,6 +19168,11 @@ parseStatement: true, parseSourceElement: true */
         Set: 4
     };
 
+    ClassPropertyType = {
+        'static': 'static',
+        prototype: 'prototype'
+    };
+
     // Error messages should be identical to V8.
     Messages = {
         UnexpectedToken:  'Unexpected token %0',
@@ -18861,11 +19180,13 @@ parseStatement: true, parseSourceElement: true */
         UnexpectedString:  'Unexpected string',
         UnexpectedIdentifier:  'Unexpected identifier',
         UnexpectedReserved:  'Unexpected reserved word',
+        UnexpectedTemplate:  'Unexpected quasi %0',
         UnexpectedEOS:  'Unexpected end of input',
         NewlineAfterThrow:  'Illegal newline after throw',
         InvalidRegExp: 'Invalid regular expression',
         UnterminatedRegExp:  'Invalid regular expression: missing /',
         InvalidLHSInAssignment:  'Invalid left-hand side in assignment',
+        InvalidLHSInFormalsList:  'Invalid left-hand side in formals list',
         InvalidLHSInForIn:  'Invalid left-hand side in for-in',
         MultipleDefaultsInSwitch: 'More than one default clause in switch statement',
         NoCatchOrFinally:  'Missing catch or finally after try',
@@ -18873,12 +19194,20 @@ parseStatement: true, parseSourceElement: true */
         Redeclaration: '%0 \'%1\' has already been declared',
         IllegalContinue: 'Illegal continue statement',
         IllegalBreak: 'Illegal break statement',
+        IllegalDuplicateClassProperty: 'Illegal duplicate property in class definition',
         IllegalReturn: 'Illegal return statement',
+        IllegalSpread: 'Illegal spread element',
         StrictModeWith:  'Strict mode code may not include a with statement',
         StrictCatchVariable:  'Catch variable may not be eval or arguments in strict mode',
         StrictVarName:  'Variable name may not be eval or arguments in strict mode',
         StrictParamName:  'Parameter name eval or arguments is not allowed in strict mode',
         StrictParamDupe: 'Strict mode function may not have duplicate parameter names',
+        ParameterAfterRestParameter: 'Rest parameter must be final parameter of an argument list',
+        DefaultRestParameter: 'Rest parameter can not have a default value',
+        ElementAfterSpreadElement: 'Spread must be the final element of an element list',
+        PropertyAfterSpreadProperty: 'A rest property must be the final property of an object literal',
+        ObjectPatternAsRestParameter: 'Invalid rest parameter',
+        ObjectPatternAsSpread: 'Invalid spread argument',
         StrictFunctionName:  'Function name may not be eval or arguments in strict mode',
         StrictOctalLiteral:  'Octal literals are not allowed in strict mode.',
         StrictDelete:  'Delete of an unqualified identifier in strict mode.',
@@ -18888,13 +19217,24 @@ parseStatement: true, parseSourceElement: true */
         StrictLHSAssignment:  'Assignment to eval or arguments is not allowed in strict mode',
         StrictLHSPostfix:  'Postfix increment/decrement may not have eval or arguments operand in strict mode',
         StrictLHSPrefix:  'Prefix increment/decrement may not have eval or arguments operand in strict mode',
-        StrictReservedWord:  'Use of future reserved word in strict mode'
+        StrictReservedWord:  'Use of future reserved word in strict mode',
+        MissingFromClause: 'Missing from clause',
+        NoAsAfterImportNamespace: 'Missing as after import *',
+        InvalidModuleSpecifier: 'Invalid module specifier',
+        NoUnintializedConst: 'Const must be initialized',
+        ComprehensionRequiresBlock: 'Comprehension must have at least one block',
+        ComprehensionError:  'Comprehension Error',
+        EachNotAllowed:  'Each is not supported',
+        InvalidXJSAttributeValue: 'XJS value should be either an expression or a quoted XJS text',
+        ExpectedXJSClosingTag: 'Expected corresponding XJS closing tag for %0',
+        AdjacentXJSElements: 'Adjacent XJS elements must be wrapped in an enclosing tag'
     };
 
     // See also tools/generate-unicode-regex.py.
     Regex = {
-        NonAsciiIdentifierStart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]'),
-        NonAsciiIdentifierPart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]')
+        NonAsciiIdentifierStart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'),
+        NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'),
+        LeadingZeros: new RegExp('^0+(?!$)')
     };
 
     // Ensure the condition is true, otherwise throw an error.
@@ -18903,7 +19243,6 @@ parseStatement: true, parseSourceElement: true */
     // Do NOT use this to enforce a certain condition on any user input.
 
     function assert(condition, message) {
-        /* istanbul ignore if */
         if (!condition) {
             throw new Error('ASSERT: ' + message);
         }
@@ -18925,32 +19264,36 @@ parseStatement: true, parseSourceElement: true */
     // 7.2 White Space
 
     function isWhiteSpace(ch) {
-        return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) ||
-            (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0);
+        return (ch === 32) ||  // space
+            (ch === 9) ||      // tab
+            (ch === 0xB) ||
+            (ch === 0xC) ||
+            (ch === 0xA0) ||
+            (ch >= 0x1680 && '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(String.fromCharCode(ch)) > 0);
     }
 
     // 7.3 Line Terminators
 
     function isLineTerminator(ch) {
-        return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029);
+        return (ch === 10) || (ch === 13) || (ch === 0x2028) || (ch === 0x2029);
     }
 
     // 7.6 Identifier Names and Identifiers
 
     function isIdentifierStart(ch) {
-        return (ch === 0x24) || (ch === 0x5F) ||  // $ (dollar) and _ (underscore)
-            (ch >= 0x41 && ch <= 0x5A) ||         // A..Z
-            (ch >= 0x61 && ch <= 0x7A) ||         // a..z
-            (ch === 0x5C) ||                      // \ (backslash)
+        return (ch === 36) || (ch === 95) ||  // $ (dollar) and _ (underscore)
+            (ch >= 65 && ch <= 90) ||         // A..Z
+            (ch >= 97 && ch <= 122) ||        // a..z
+            (ch === 92) ||                    // \ (backslash)
             ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch)));
     }
 
     function isIdentifierPart(ch) {
-        return (ch === 0x24) || (ch === 0x5F) ||  // $ (dollar) and _ (underscore)
-            (ch >= 0x41 && ch <= 0x5A) ||         // A..Z
-            (ch >= 0x61 && ch <= 0x7A) ||         // a..z
-            (ch >= 0x30 && ch <= 0x39) ||         // 0..9
-            (ch === 0x5C) ||                      // \ (backslash)
+        return (ch === 36) || (ch === 95) ||  // $ (dollar) and _ (underscore)
+            (ch >= 65 && ch <= 90) ||         // A..Z
+            (ch >= 97 && ch <= 122) ||        // a..z
+            (ch >= 48 && ch <= 57) ||         // 0..9
+            (ch === 92) ||                    // \ (backslash)
             ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch)));
     }
 
@@ -18999,7 +19342,8 @@ parseStatement: true, parseSourceElement: true */
         }
 
         // 'const' is specialized as Keyword in V8.
-        // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next.
+        // 'yield' is only treated as a keyword in strict mode.
+        // 'let' is for compatiblity with SpiderMonkey and ES.next.
         // Some others are from future reserved words.
 
         switch (id.length) {
@@ -19013,7 +19357,7 @@ parseStatement: true, parseSourceElement: true */
                 (id === 'void') || (id === 'with') || (id === 'enum');
         case 5:
             return (id === 'while') || (id === 'break') || (id === 'catch') ||
-                (id === 'throw') || (id === 'const') || (id === 'yield') ||
+                (id === 'throw') || (id === 'const') ||
                 (id === 'class') || (id === 'super');
         case 6:
             return (id === 'return') || (id === 'typeof') || (id === 'delete') ||
@@ -19031,178 +19375,77 @@ parseStatement: true, parseSourceElement: true */
 
     // 7.4 Comments
 
-    function addComment(type, value, start, end, loc) {
-        var comment, attacher;
+    function skipComment() {
+        var ch, blockComment, lineComment;
 
-        assert(typeof start === 'number', 'Comment must have valid position');
-
-        // Because the way the actual token is scanned, often the comments
-        // (if any) are skipped twice during the lexical analysis.
-        // Thus, we need to skip adding a comment if the comment array already
-        // handled it.
-        if (state.lastCommentStart >= start) {
-            return;
-        }
-        state.lastCommentStart = start;
-
-        comment = {
-            type: type,
-            value: value
-        };
-        if (extra.range) {
-            comment.range = [start, end];
-        }
-        if (extra.loc) {
-            comment.loc = loc;
-        }
-        extra.comments.push(comment);
-        if (extra.attachComment) {
-            extra.leadingComments.push(comment);
-            extra.trailingComments.push(comment);
-        }
-    }
-
-    function skipSingleLineComment(offset) {
-        var start, loc, ch, comment;
-
-        start = index - offset;
-        loc = {
-            start: {
-                line: lineNumber,
-                column: index - lineStart - offset
-            }
-        };
+        blockComment = false;
+        lineComment = false;
 
         while (index < length) {
             ch = source.charCodeAt(index);
-            ++index;
-            if (isLineTerminator(ch)) {
-                if (extra.comments) {
-                    comment = source.slice(start + offset, index - 1);
-                    loc.end = {
-                        line: lineNumber,
-                        column: index - lineStart - 1
-                    };
-                    addComment('Line', comment, start, index - 1, loc);
+
+            if (lineComment) {
+                ++index;
+                if (isLineTerminator(ch)) {
+                    lineComment = false;
+                    if (ch === 13 && source.charCodeAt(index) === 10) {
+                        ++index;
+                    }
+                    ++lineNumber;
+                    lineStart = index;
                 }
+            } else if (blockComment) {
+                if (isLineTerminator(ch)) {
+                    if (ch === 13) {
+                        ++index;
+                    }
+                    if (ch !== 13 || source.charCodeAt(index) === 10) {
+                        ++lineNumber;
+                        ++index;
+                        lineStart = index;
+                        if (index >= length) {
+                            throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+                        }
+                    }
+                } else {
+                    ch = source.charCodeAt(index++);
+                    if (index >= length) {
+                        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+                    }
+                    // Block comment ends with '*/' (char #42, char #47).
+                    if (ch === 42) {
+                        ch = source.charCodeAt(index);
+                        if (ch === 47) {
+                            ++index;
+                            blockComment = false;
+                        }
+                    }
+                }
+            } else if (ch === 47) {
+                ch = source.charCodeAt(index + 1);
+                // Line comment starts with '//' (char #47, char #47).
+                if (ch === 47) {
+                    index += 2;
+                    lineComment = true;
+                } else if (ch === 42) {
+                    // Block comment starts with '/*' (char #47, char #42).
+                    index += 2;
+                    blockComment = true;
+                    if (index >= length) {
+                        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+                    }
+                } else {
+                    break;
+                }
+            } else if (isWhiteSpace(ch)) {
+                ++index;
+            } else if (isLineTerminator(ch)) {
+                ++index;
                 if (ch === 13 && source.charCodeAt(index) === 10) {
                     ++index;
                 }
                 ++lineNumber;
                 lineStart = index;
-                return;
-            }
-        }
-
-        if (extra.comments) {
-            comment = source.slice(start + offset, index);
-            loc.end = {
-                line: lineNumber,
-                column: index - lineStart
-            };
-            addComment('Line', comment, start, index, loc);
-        }
-    }
-
-    function skipMultiLineComment() {
-        var start, loc, ch, comment;
-
-        if (extra.comments) {
-            start = index - 2;
-            loc = {
-                start: {
-                    line: lineNumber,
-                    column: index - lineStart - 2
-                }
-            };
-        }
-
-        while (index < length) {
-            ch = source.charCodeAt(index);
-            if (isLineTerminator(ch)) {
-                if (ch === 0x0D && source.charCodeAt(index + 1) === 0x0A) {
-                    ++index;
-                }
-                ++lineNumber;
-                ++index;
-                lineStart = index;
-                if (index >= length) {
-                    throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-                }
-            } else if (ch === 0x2A) {
-                // Block comment ends with '*/'.
-                if (source.charCodeAt(index + 1) === 0x2F) {
-                    ++index;
-                    ++index;
-                    if (extra.comments) {
-                        comment = source.slice(start + 2, index - 2);
-                        loc.end = {
-                            line: lineNumber,
-                            column: index - lineStart
-                        };
-                        addComment('Block', comment, start, index, loc);
-                    }
-                    return;
-                }
-                ++index;
-            } else {
-                ++index;
-            }
-        }
-
-        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
-    }
-
-    function skipComment() {
-        var ch, start;
-
-        start = (index === 0);
-        while (index < length) {
-            ch = source.charCodeAt(index);
-
-            if (isWhiteSpace(ch)) {
-                ++index;
-            } else if (isLineTerminator(ch)) {
-                ++index;
-                if (ch === 0x0D && source.charCodeAt(index) === 0x0A) {
-                    ++index;
-                }
-                ++lineNumber;
-                lineStart = index;
-                start = true;
-            } else if (ch === 0x2F) { // U+002F is '/'
-                ch = source.charCodeAt(index + 1);
-                if (ch === 0x2F) {
-                    ++index;
-                    ++index;
-                    skipSingleLineComment(2);
-                    start = true;
-                } else if (ch === 0x2A) {  // U+002A is '*'
-                    ++index;
-                    ++index;
-                    skipMultiLineComment();
-                } else {
-                    break;
-                }
-            } else if (start && ch === 0x2D) { // U+002D is '-'
-                // U+003E is '>'
-                if ((source.charCodeAt(index + 1) === 0x2D) && (source.charCodeAt(index + 2) === 0x3E)) {
-                    // '-->' is a single-line comment
-                    index += 3;
-                    skipSingleLineComment(3);
-                } else {
-                    break;
-                }
-            } else if (ch === 0x3C) { // U+003C is '<'
-                if (source.slice(index + 1, index + 4) === '!--') {
-                    ++index; // `<`
-                    ++index; // `!`
-                    ++index; // `-`
-                    ++index; // `-`
-                    skipSingleLineComment(4);
-                } else {
-                    break;
-                }
             } else {
                 break;
             }
@@ -19224,15 +19467,47 @@ parseStatement: true, parseSourceElement: true */
         return String.fromCharCode(code);
     }
 
+    function scanUnicodeCodePointEscape() {
+        var ch, code, cu1, cu2;
+
+        ch = source[index];
+        code = 0;
+
+        // At least, one hex digit is required.
+        if (ch === '}') {
+            throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+        }
+
+        while (index < length) {
+            ch = source[index++];
+            if (!isHexDigit(ch)) {
+                break;
+            }
+            code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());
+        }
+
+        if (code > 0x10FFFF || ch !== '}') {
+            throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+        }
+
+        // UTF-16 Encoding
+        if (code <= 0xFFFF) {
+            return String.fromCharCode(code);
+        }
+        cu1 = ((code - 0x10000) >> 10) + 0xD800;
+        cu2 = ((code - 0x10000) & 1023) + 0xDC00;
+        return String.fromCharCode(cu1, cu2);
+    }
+
     function getEscapedIdentifier() {
         var ch, id;
 
         ch = source.charCodeAt(index++);
         id = String.fromCharCode(ch);
 
-        // '\u' (U+005C, U+0075) denotes an escaped character.
-        if (ch === 0x5C) {
-            if (source.charCodeAt(index) !== 0x75) {
+        // '\u' (char #92, char #117) denotes an escaped character.
+        if (ch === 92) {
+            if (source.charCodeAt(index) !== 117) {
                 throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
             }
             ++index;
@@ -19251,10 +19526,10 @@ parseStatement: true, parseSourceElement: true */
             ++index;
             id += String.fromCharCode(ch);
 
-            // '\u' (U+005C, U+0075) denotes an escaped character.
-            if (ch === 0x5C) {
+            // '\u' (char #92, char #117) denotes an escaped character.
+            if (ch === 92) {
                 id = id.substr(0, id.length - 1);
-                if (source.charCodeAt(index) !== 0x75) {
+                if (source.charCodeAt(index) !== 117) {
                     throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
                 }
                 ++index;
@@ -19275,8 +19550,8 @@ parseStatement: true, parseSourceElement: true */
         start = index++;
         while (index < length) {
             ch = source.charCodeAt(index);
-            if (ch === 0x5C) {
-                // Blackslash (U+005C) marks Unicode escape sequence.
+            if (ch === 92) {
+                // Blackslash (char #92) marks Unicode escape sequence.
                 index = start;
                 return getEscapedIdentifier();
             }
@@ -19295,8 +19570,8 @@ parseStatement: true, parseSourceElement: true */
 
         start = index;
 
-        // Backslash (U+005C) starts an escaped character.
-        id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier();
+        // Backslash (char #92) starts an escaped character.
+        id = (source.charCodeAt(index) === 92) ? getEscapedIdentifier() : getIdentifier();
 
         // There is no keyword or literal with only one character.
         // Thus, it must be an identifier.
@@ -19317,8 +19592,7 @@ parseStatement: true, parseSourceElement: true */
             value: id,
             lineNumber: lineNumber,
             lineStart: lineStart,
-            start: start,
-            end: index
+            range: [start, index]
         };
     }
 
@@ -19335,25 +19609,23 @@ parseStatement: true, parseSourceElement: true */
             ch4;
 
         switch (code) {
-
         // Check for most common single-character punctuators.
-        case 0x2E:  // . dot
-        case 0x28:  // ( open bracket
-        case 0x29:  // ) close bracket
-        case 0x3B:  // ; semicolon
-        case 0x2C:  // , comma
-        case 0x7B:  // { open curly brace
-        case 0x7D:  // } close curly brace
-        case 0x5B:  // [
-        case 0x5D:  // ]
-        case 0x3A:  // :
-        case 0x3F:  // ?
-        case 0x7E:  // ~
+        case 40:   // ( open bracket
+        case 41:   // ) close bracket
+        case 59:   // ; semicolon
+        case 44:   // , comma
+        case 123:  // { open curly brace
+        case 125:  // } close curly brace
+        case 91:   // [
+        case 93:   // ]
+        case 58:   // :
+        case 63:   // ?
+        case 126:  // ~
             ++index;
             if (extra.tokenize) {
-                if (code === 0x28) {
+                if (code === 40) {
                     extra.openParenToken = extra.tokens.length;
-                } else if (code === 0x7B) {
+                } else if (code === 123) {
                     extra.openCurlyToken = extra.tokens.length;
                 }
             }
@@ -19362,42 +19634,40 @@ parseStatement: true, parseSourceElement: true */
                 value: String.fromCharCode(code),
                 lineNumber: lineNumber,
                 lineStart: lineStart,
-                start: start,
-                end: index
+                range: [start, index]
             };
 
         default:
             code2 = source.charCodeAt(index + 1);
 
-            // '=' (U+003D) marks an assignment or comparison operator.
-            if (code2 === 0x3D) {
+            // '=' (char #61) marks an assignment or comparison operator.
+            if (code2 === 61) {
                 switch (code) {
-                case 0x2B:  // +
-                case 0x2D:  // -
-                case 0x2F:  // /
-                case 0x3C:  // <
-                case 0x3E:  // >
-                case 0x5E:  // ^
-                case 0x7C:  // |
-                case 0x25:  // %
-                case 0x26:  // &
-                case 0x2A:  // *
+                case 37:  // %
+                case 38:  // &
+                case 42:  // *:
+                case 43:  // +
+                case 45:  // -
+                case 47:  // /
+                case 60:  // <
+                case 62:  // >
+                case 94:  // ^
+                case 124: // |
                     index += 2;
                     return {
                         type: Token.Punctuator,
                         value: String.fromCharCode(code) + String.fromCharCode(code2),
                         lineNumber: lineNumber,
                         lineStart: lineStart,
-                        start: start,
-                        end: index
+                        range: [start, index]
                     };
 
-                case 0x21: // !
-                case 0x3D: // =
+                case 33: // !
+                case 61: // =
                     index += 2;
 
                     // !== and ===
-                    if (source.charCodeAt(index) === 0x3D) {
+                    if (source.charCodeAt(index) === 61) {
                         ++index;
                     }
                     return {
@@ -19405,61 +19675,106 @@ parseStatement: true, parseSourceElement: true */
                         value: source.slice(start, index),
                         lineNumber: lineNumber,
                         lineStart: lineStart,
-                        start: start,
-                        end: index
+                        range: [start, index]
                     };
+                default:
+                    break;
                 }
             }
+            break;
         }
 
+        // Peek more characters.
+
+        ch2 = source[index + 1];
+        ch3 = source[index + 2];
+        ch4 = source[index + 3];
+
         // 4-character punctuator: >>>=
 
-        ch4 = source.substr(index, 4);
-
-        if (ch4 === '>>>=') {
-            index += 4;
-            return {
-                type: Token.Punctuator,
-                value: ch4,
-                lineNumber: lineNumber,
-                lineStart: lineStart,
-                start: start,
-                end: index
-            };
+        if (ch1 === '>' && ch2 === '>' && ch3 === '>') {
+            if (ch4 === '=') {
+                index += 4;
+                return {
+                    type: Token.Punctuator,
+                    value: '>>>=',
+                    lineNumber: lineNumber,
+                    lineStart: lineStart,
+                    range: [start, index]
+                };
+            }
         }
 
         // 3-character punctuators: === !== >>> <<= >>=
 
-        ch3 = ch4.substr(0, 3);
-
-        if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {
+        if (ch1 === '>' && ch2 === '>' && ch3 === '>') {
             index += 3;
             return {
                 type: Token.Punctuator,
-                value: ch3,
+                value: '>>>',
                 lineNumber: lineNumber,
                 lineStart: lineStart,
-                start: start,
-                end: index
+                range: [start, index]
+            };
+        }
+
+        if (ch1 === '<' && ch2 === '<' && ch3 === '=') {
+            index += 3;
+            return {
+                type: Token.Punctuator,
+                value: '<<=',
+                lineNumber: lineNumber,
+                lineStart: lineStart,
+                range: [start, index]
+            };
+        }
+
+        if (ch1 === '>' && ch2 === '>' && ch3 === '=') {
+            index += 3;
+            return {
+                type: Token.Punctuator,
+                value: '>>=',
+                lineNumber: lineNumber,
+                lineStart: lineStart,
+                range: [start, index]
+            };
+        }
+
+        if (ch1 === '.' && ch2 === '.' && ch3 === '.') {
+            index += 3;
+            return {
+                type: Token.Punctuator,
+                value: '...',
+                lineNumber: lineNumber,
+                lineStart: lineStart,
+                range: [start, index]
             };
         }
 
         // Other 2-character punctuators: ++ -- << >> && ||
-        ch2 = ch3.substr(0, 2);
 
-        if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') {
+        if (ch1 === ch2 && ('+-<>&|'.indexOf(ch1) >= 0)) {
             index += 2;
             return {
                 type: Token.Punctuator,
-                value: ch2,
+                value: ch1 + ch2,
                 lineNumber: lineNumber,
                 lineStart: lineStart,
-                start: start,
-                end: index
+                range: [start, index]
+            };
+        }
+
+        if (ch1 === '=' && ch2 === '>') {
+            index += 2;
+            return {
+                type: Token.Punctuator,
+                value: '=>',
+                lineNumber: lineNumber,
+                lineStart: lineStart,
+                range: [start, index]
             };
         }
 
-        // 1-character punctuators: < > = ! + - * % & | ^ /
         if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {
             ++index;
             return {
@@ -19467,8 +19782,18 @@ parseStatement: true, parseSourceElement: true */
                 value: ch1,
                 lineNumber: lineNumber,
                 lineStart: lineStart,
-                start: start,
-                end: index
+                range: [start, index]
+            };
+        }
+
+        if (ch1 === '.') {
+            ++index;
+            return {
+                type: Token.Punctuator,
+                value: ch1,
+                lineNumber: lineNumber,
+                lineStart: lineStart,
+                range: [start, index]
             };
         }
 
@@ -19500,13 +19825,22 @@ parseStatement: true, parseSourceElement: true */
             value: parseInt('0x' + number, 16),
             lineNumber: lineNumber,
             lineStart: lineStart,
-            start: start,
-            end: index
+            range: [start, index]
         };
     }
 
-    function scanOctalLiteral(start) {
-        var number = '0' + source[index++];
+    function scanOctalLiteral(prefix, start) {
+        var number, octal;
+
+        if (isOctalDigit(prefix)) {
+            octal = true;
+            number = '0' + source[index++];
+        } else {
+            octal = false;
+            ++index;
+            number = '';
+        }
+
         while (index < length) {
             if (!isOctalDigit(source[index])) {
                 break;
@@ -19514,6 +19848,11 @@ parseStatement: true, parseSourceElement: true */
             number += source[index++];
         }
 
+        if (!octal && number.length === 0) {
+            // only 0o or 0O
+            throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+        }
+
         if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {
             throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
         }
@@ -19521,16 +19860,15 @@ parseStatement: true, parseSourceElement: true */
         return {
             type: Token.NumericLiteral,
             value: parseInt(number, 8),
-            octal: true,
+            octal: octal,
             lineNumber: lineNumber,
             lineStart: lineStart,
-            start: start,
-            end: index
+            range: [start, index]
         };
     }
 
     function scanNumericLiteral() {
-        var number, start, ch;
+        var number, start, ch, octal;
 
         ch = source[index];
         assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),
@@ -19544,15 +19882,47 @@ parseStatement: true, parseSourceElement: true */
 
             // Hex number starts with '0x'.
             // Octal number starts with '0'.
+            // Octal number in ES6 starts with '0o'.
+            // Binary number in ES6 starts with '0b'.
             if (number === '0') {
                 if (ch === 'x' || ch === 'X') {
                     ++index;
                     return scanHexLiteral(start);
                 }
-                if (isOctalDigit(ch)) {
-                    return scanOctalLiteral(start);
-                }
+                if (ch === 'b' || ch === 'B') {
+                    ++index;
+                    number = '';
 
+                    while (index < length) {
+                        ch = source[index];
+                        if (ch !== '0' && ch !== '1') {
+                            break;
+                        }
+                        number += source[index++];
+                    }
+
+                    if (number.length === 0) {
+                        // only 0b or 0B
+                        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+                    }
+
+                    if (index < length) {
+                        ch = source.charCodeAt(index);
+                        if (isIdentifierStart(ch) || isDecimalDigit(ch)) {
+                            throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+                        }
+                    }
+                    return {
+                        type: Token.NumericLiteral,
+                        value: parseInt(number, 2),
+                        lineNumber: lineNumber,
+                        lineStart: lineStart,
+                        range: [start, index]
+                    };
+                }
+                if (ch === 'o' || ch === 'O' || isOctalDigit(ch)) {
+                    return scanOctalLiteral(ch, start);
+                }
                 // decimal number starts with '0' such as '09' is illegal.
                 if (ch && isDecimalDigit(ch.charCodeAt(0))) {
                     throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
@@ -19598,17 +19968,14 @@ parseStatement: true, parseSourceElement: true */
             value: parseFloat(number),
             lineNumber: lineNumber,
             lineStart: lineStart,
-            start: start,
-            end: index
+            range: [start, index]
         };
     }
 
     // 7.8.4 String Literals
 
     function scanStringLiteral() {
-        var str = '', quote, start, ch, code, unescaped, restore, octal = false, startLineNumber, startLineStart;
-        startLineNumber = lineNumber;
-        startLineStart = lineStart;
+        var str = '', quote, start, ch, code, unescaped, restore, octal = false;
 
         quote = source[index];
         assert((quote === '\'' || quote === '"'),
@@ -19627,17 +19994,6 @@ parseStatement: true, parseSourceElement: true */
                 ch = source[index++];
                 if (!ch || !isLineTerminator(ch.charCodeAt(0))) {
                     switch (ch) {
-                    case 'u':
-                    case 'x':
-                        restore = index;
-                        unescaped = scanHexEscape(ch);
-                        if (unescaped) {
-                            str += unescaped;
-                        } else {
-                            index = restore;
-                            str += ch;
-                        }
-                        break;
                     case 'n':
                         str += '\n';
                         break;
@@ -19647,6 +20003,22 @@ parseStatement: true, parseSourceElement: true */
                     case 't':
                         str += '\t';
                         break;
+                    case 'u':
+                    case 'x':
+                        if (source[index] === '{') {
+                            ++index;
+                            str += scanUnicodeCodePointEscape();
+                        } else {
+                            restore = index;
+                            unescaped = scanHexEscape(ch);
+                            if (unescaped) {
+                                str += unescaped;
+                            } else {
+                                index = restore;
+                                str += ch;
+                            }
+                        }
+                        break;
                     case 'b':
                         str += '\b';
                         break;
@@ -19706,56 +20078,189 @@ parseStatement: true, parseSourceElement: true */
             type: Token.StringLiteral,
             value: str,
             octal: octal,
-            startLineNumber: startLineNumber,
-            startLineStart: startLineStart,
             lineNumber: lineNumber,
             lineStart: lineStart,
-            start: start,
-            end: index
+            range: [start, index]
         };
     }
 
-    function testRegExp(pattern, flags) {
-        var value;
-        try {
-            value = new RegExp(pattern, flags);
-        } catch (e) {
-            throwError({}, Messages.InvalidRegExp);
+    function scanTemplate() {
+        var cooked = '', ch, start, terminated, tail, restore, unescaped, code, octal;
+
+        terminated = false;
+        tail = false;
+        start = index;
+
+        ++index;
+
+        while (index < length) {
+            ch = source[index++];
+            if (ch === '`') {
+                tail = true;
+                terminated = true;
+                break;
+            } else if (ch === '$') {
+                if (source[index] === '{') {
+                    ++index;
+                    terminated = true;
+                    break;
+                }
+                cooked += ch;
+            } else if (ch === '\\') {
+                ch = source[index++];
+                if (!isLineTerminator(ch.charCodeAt(0))) {
+                    switch (ch) {
+                    case 'n':
+                        cooked += '\n';
+                        break;
+                    case 'r':
+                        cooked += '\r';
+                        break;
+                    case 't':
+                        cooked += '\t';
+                        break;
+                    case 'u':
+                    case 'x':
+                        if (source[index] === '{') {
+                            ++index;
+                            cooked += scanUnicodeCodePointEscape();
+                        } else {
+                            restore = index;
+                            unescaped = scanHexEscape(ch);
+                            if (unescaped) {
+                                cooked += unescaped;
+                            } else {
+                                index = restore;
+                                cooked += ch;
+                            }
+                        }
+                        break;
+                    case 'b':
+                        cooked += '\b';
+                        break;
+                    case 'f':
+                        cooked += '\f';
+                        break;
+                    case 'v':
+                        cooked += '\v';
+                        break;
+
+                    default:
+                        if (isOctalDigit(ch)) {
+                            code = '01234567'.indexOf(ch);
+
+                            // \0 is not octal escape sequence
+                            if (code !== 0) {
+                                octal = true;
+                            }
+
+                            if (index < length && isOctalDigit(source[index])) {
+                                octal = true;
+                                code = code * 8 + '01234567'.indexOf(source[index++]);
+
+                                // 3 digits are only allowed when string starts
+                                // with 0, 1, 2, 3
+                                if ('0123'.indexOf(ch) >= 0 &&
+                                        index < length &&
+                                        isOctalDigit(source[index])) {
+                                    code = code * 8 + '01234567'.indexOf(source[index++]);
+                                }
+                            }
+                            cooked += String.fromCharCode(code);
+                        } else {
+                            cooked += ch;
+                        }
+                        break;
+                    }
+                } else {
+                    ++lineNumber;
+                    if (ch ===  '\r' && source[index] === '\n') {
+                        ++index;
+                    }
+                    lineStart = index;
+                }
+            } else if (isLineTerminator(ch.charCodeAt(0))) {
+                ++lineNumber;
+                if (ch ===  '\r' && source[index] === '\n') {
+                    ++index;
+                }
+                lineStart = index;
+                cooked += '\n';
+            } else {
+                cooked += ch;
+            }
         }
-        return value;
+
+        if (!terminated) {
+            throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+        }
+
+        return {
+            type: Token.Template,
+            value: {
+                cooked: cooked,
+                raw: source.slice(start + 1, index - ((tail) ? 1 : 2))
+            },
+            tail: tail,
+            octal: octal,
+            lineNumber: lineNumber,
+            lineStart: lineStart,
+            range: [start, index]
+        };
     }
 
-    function scanRegExpBody() {
-        var ch, str, classMarker, terminated, body;
+    function scanTemplateElement(option) {
+        var startsWith, template;
 
+        lookahead = null;
+        skipComment();
+
+        startsWith = (option.head) ? '`' : '}';
+
+        if (source[index] !== startsWith) {
+            throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+        }
+
+        template = scanTemplate();
+
+        peek();
+
+        return template;
+    }
+
+    function scanRegExp() {
+        var str, ch, start, pattern, flags, value, classMarker = false, restore, terminated = false, tmp;
+
+        lookahead = null;
+        skipComment();
+
+        start = index;
         ch = source[index];
         assert(ch === '/', 'Regular expression literal must start with a slash');
         str = source[index++];
 
-        classMarker = false;
-        terminated = false;
         while (index < length) {
             ch = source[index++];
             str += ch;
-            if (ch === '\\') {
-                ch = source[index++];
-                // ECMA-262 7.8.5
-                if (isLineTerminator(ch.charCodeAt(0))) {
-                    throwError({}, Messages.UnterminatedRegExp);
-                }
-                str += ch;
-            } else if (isLineTerminator(ch.charCodeAt(0))) {
-                throwError({}, Messages.UnterminatedRegExp);
-            } else if (classMarker) {
+            if (classMarker) {
                 if (ch === ']') {
                     classMarker = false;
                 }
             } else {
-                if (ch === '/') {
+                if (ch === '\\') {
+                    ch = source[index++];
+                    // ECMA-262 7.8.5
+                    if (isLineTerminator(ch.charCodeAt(0))) {
+                        throwError({}, Messages.UnterminatedRegExp);
+                    }
+                    str += ch;
+                } else if (ch === '/') {
                     terminated = true;
                     break;
                 } else if (ch === '[') {
                     classMarker = true;
+                } else if (isLineTerminator(ch.charCodeAt(0))) {
+                    throwError({}, Messages.UnterminatedRegExp);
                 }
             }
         }
@@ -19765,17 +20270,8 @@ parseStatement: true, parseSourceElement: true */
         }
 
         // Exclude leading and trailing slash.
-        body = str.substr(1, str.length - 2);
-        return {
-            value: body,
-            literal: str
-        };
-    }
+        pattern = str.substr(1, str.length - 2);
 
-    function scanRegExpFlags() {
-        var ch, str, flags, restore;
-
-        str = '';
         flags = '';
         while (index < length) {
             ch = source[index];
@@ -19800,10 +20296,8 @@ parseStatement: true, parseSourceElement: true */
                         flags += 'u';
                         str += '\\u';
                     }
-                    throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL');
                 } else {
                     str += '\\';
-                    throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL');
                 }
             } else {
                 flags += ch;
@@ -19811,84 +20305,59 @@ parseStatement: true, parseSourceElement: true */
             }
         }
 
-        return {
-            value: flags,
-            literal: str
-        };
-    }
+        tmp = pattern;
+        if (flags.indexOf('u') >= 0) {
+            // Replace each astral symbol and every Unicode code point
+            // escape sequence that represents such a symbol with a single
+            // ASCII symbol to avoid throwing on regular expressions that
+            // are only valid in combination with the `/u` flag.
+            tmp = tmp
+                .replace(/\\u\{([0-9a-fA-F]{5,6})\}/g, 'x')
+                .replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, 'x');
+        }
 
-    function scanRegExp() {
-        var start, body, flags, pattern, value;
+        // First, detect invalid regular expressions.
+        try {
+            value = new RegExp(tmp);
+        } catch (e) {
+            throwError({}, Messages.InvalidRegExp);
+        }
 
-        lookahead = null;
-        skipComment();
-        start = index;
+        // Return a regular expression object for this pattern-flag pair, or
+        // `null` in case the current environment doesn't support the flags it
+        // uses.
+        try {
+            value = new RegExp(pattern, flags);
+        } catch (exception) {
+            value = null;
+        }
 
-        body = scanRegExpBody();
-        flags = scanRegExpFlags();
-        value = testRegExp(body.value, flags.value);
+        peek();
 
         if (extra.tokenize) {
             return {
                 type: Token.RegularExpression,
                 value: value,
+                regex: {
+                    pattern: pattern,
+                    flags: flags
+                },
                 lineNumber: lineNumber,
                 lineStart: lineStart,
-                start: start,
-                end: index
+                range: [start, index]
             };
         }
-
         return {
-            literal: body.literal + flags.literal,
+            literal: str,
             value: value,
-            start: start,
-            end: index
+            regex: {
+                pattern: pattern,
+                flags: flags
+            },
+            range: [start, index]
         };
     }
 
-    function collectRegex() {
-        var pos, loc, regex, token;
-
-        skipComment();
-
-        pos = index;
-        loc = {
-            start: {
-                line: lineNumber,
-                column: index - lineStart
-            }
-        };
-
-        regex = scanRegExp();
-        loc.end = {
-            line: lineNumber,
-            column: index - lineStart
-        };
-
-        /* istanbul ignore next */
-        if (!extra.tokenize) {
-            // Pop the previous token, which is likely '/' or '/='
-            if (extra.tokens.length > 0) {
-                token = extra.tokens[extra.tokens.length - 1];
-                if (token.range[0] === pos && token.type === 'Punctuator') {
-                    if (token.value === '/' || token.value === '/=') {
-                        extra.tokens.pop();
-                    }
-                }
-            }
-
-            extra.tokens.push({
-                type: 'RegularExpression',
-                value: regex.literal,
-                range: [pos, index],
-                loc: loc
-            });
-        }
-
-        return regex;
-    }
-
     function isIdentifierName(token) {
         return token.type === Token.Identifier ||
             token.type === Token.Keyword ||
@@ -19904,12 +20373,9 @@ parseStatement: true, parseSourceElement: true */
         prevToken = extra.tokens[extra.tokens.length - 1];
         if (!prevToken) {
             // Nothing before that: it cannot be a division.
-            return collectRegex();
+            return scanRegExp();
         }
         if (prevToken.type === 'Punctuator') {
-            if (prevToken.value === ']') {
-                return scanPunctuator();
-            }
             if (prevToken.value === ')') {
                 checkToken = extra.tokens[extra.openParenToken - 1];
                 if (checkToken &&
@@ -19918,7 +20384,7 @@ parseStatement: true, parseSourceElement: true */
                          checkToken.value === 'while' ||
                          checkToken.value === 'for' ||
                          checkToken.value === 'with')) {
-                    return collectRegex();
+                    return scanRegExp();
                 }
                 return scanPunctuator();
             }
@@ -19937,7 +20403,7 @@ parseStatement: true, parseSourceElement: true */
                     // Named function.
                     checkToken = extra.tokens[extra.openCurlyToken - 5];
                     if (!checkToken) {
-                        return collectRegex();
+                        return scanRegExp();
                     }
                 } else {
                     return scanPunctuator();
@@ -19949,12 +20415,12 @@ parseStatement: true, parseSourceElement: true */
                     return scanPunctuator();
                 }
                 // It is a declaration.
-                return collectRegex();
+                return scanRegExp();
             }
-            return collectRegex();
+            return scanRegExp();
         }
         if (prevToken.type === 'Keyword') {
-            return collectRegex();
+            return scanRegExp();
         }
         return scanPunctuator();
     }
@@ -19962,38 +20428,52 @@ parseStatement: true, parseSourceElement: true */
     function advance() {
         var ch;
 
-        skipComment();
+        if (!state.inXJSChild) {
+            skipComment();
+        }
 
         if (index >= length) {
             return {
                 type: Token.EOF,
                 lineNumber: lineNumber,
                 lineStart: lineStart,
-                start: index,
-                end: index
+                range: [index, index]
             };
         }
 
+        if (state.inXJSChild) {
+            return advanceXJSChild();
+        }
+
         ch = source.charCodeAt(index);
 
+        // Very common: ( and ) and ;
+        if (ch === 40 || ch === 41 || ch === 58) {
+            return scanPunctuator();
+        }
+
+        // String literal starts with single quote (#39) or double quote (#34).
+        if (ch === 39 || ch === 34) {
+            if (state.inXJSTag) {
+                return scanXJSStringLiteral();
+            }
+            return scanStringLiteral();
+        }
+
+        if (state.inXJSTag && isXJSIdentifierStart(ch)) {
+            return scanXJSIdentifier();
+        }
+
+        if (ch === 96) {
+            return scanTemplate();
+        }
         if (isIdentifierStart(ch)) {
             return scanIdentifier();
         }
 
-        // Very common: ( and ) and ;
-        if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {
-            return scanPunctuator();
-        }
-
-        // String literal starts with single quote (U+0027) or double quote (U+0022).
-        if (ch === 0x27 || ch === 0x22) {
-            return scanStringLiteral();
-        }
-
-
-        // Dot (.) U+002E can also start a floating-point number, hence the need
+        // Dot (.) char #46 can also start a floating-point number, hence the need
         // to check the next character.
-        if (ch === 0x2E) {
+        if (ch === 46) {
             if (isDecimalDigit(source.charCodeAt(index + 1))) {
                 return scanNumericLiteral();
             }
@@ -20004,55 +20484,25 @@ parseStatement: true, parseSourceElement: true */
             return scanNumericLiteral();
         }
 
-        // Slash (/) U+002F can also start a regex.
-        if (extra.tokenize && ch === 0x2F) {
+        // Slash (/) char #47 can also start a regex.
+        if (extra.tokenize && ch === 47) {
             return advanceSlash();
         }
 
         return scanPunctuator();
     }
 
-    function collectToken() {
-        var loc, token, range, value;
-
-        skipComment();
-        loc = {
-            start: {
-                line: lineNumber,
-                column: index - lineStart
-            }
-        };
-
-        token = advance();
-        loc.end = {
-            line: lineNumber,
-            column: index - lineStart
-        };
-
-        if (token.type !== Token.EOF) {
-            value = source.slice(token.start, token.end);
-            extra.tokens.push({
-                type: TokenName[token.type],
-                value: value,
-                range: [token.start, token.end],
-                loc: loc
-            });
-        }
-
-        return token;
-    }
-
     function lex() {
         var token;
 
         token = lookahead;
-        index = token.end;
+        index = token.range[1];
         lineNumber = token.lineNumber;
         lineStart = token.lineStart;
 
-        lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance();
+        lookahead = advance();
 
-        index = token.end;
+        index = token.range[1];
         lineNumber = token.lineNumber;
         lineStart = token.lineStart;
 
@@ -20065,98 +20515,140 @@ parseStatement: true, parseSourceElement: true */
         pos = index;
         line = lineNumber;
         start = lineStart;
-        lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance();
+        lookahead = advance();
         index = pos;
         lineNumber = line;
         lineStart = start;
     }
 
-    function Position(line, column) {
-        this.line = line;
-        this.column = column;
+    function lookahead2() {
+        var adv, pos, line, start, result;
+
+        // If we are collecting the tokens, don't grab the next one yet.
+        adv = (typeof extra.advance === 'function') ? extra.advance : advance;
+
+        pos = index;
+        line = lineNumber;
+        start = lineStart;
+
+        // Scan for the next immediate token.
+        if (lookahead === null) {
+            lookahead = adv();
+        }
+        index = lookahead.range[1];
+        lineNumber = lookahead.lineNumber;
+        lineStart = lookahead.lineStart;
+
+        // Grab the token right after.
+        result = adv();
+        index = pos;
+        lineNumber = line;
+        lineStart = start;
+
+        return result;
     }
 
-    function SourceLocation(startLine, startColumn, line, column) {
-        this.start = new Position(startLine, startColumn);
-        this.end = new Position(line, column);
+    function rewind(token) {
+        index = token.range[0];
+        lineNumber = token.lineNumber;
+        lineStart = token.lineStart;
+        lookahead = token;
+    }
+
+    function markerCreate() {
+        if (!extra.loc && !extra.range) {
+            return undefined;
+        }
+        skipComment();
+        return {offset: index, line: lineNumber, col: index - lineStart};
+    }
+
+    function markerCreatePreserveWhitespace() {
+        if (!extra.loc && !extra.range) {
+            return undefined;
+        }
+        return {offset: index, line: lineNumber, col: index - lineStart};
+    }
+
+    function processComment(node) {
+        var lastChild,
+            trailingComments,
+            bottomRight = extra.bottomRightStack,
+            last = bottomRight[bottomRight.length - 1];
+
+        if (node.type === Syntax.Program) {
+            if (node.body.length > 0) {
+                return;
+            }
+        }
+
+        if (extra.trailingComments.length > 0) {
+            if (extra.trailingComments[0].range[0] >= node.range[1]) {
+                trailingComments = extra.trailingComments;
+                extra.trailingComments = [];
+            } else {
+                extra.trailingComments.length = 0;
+            }
+        } else {
+            if (last && last.trailingComments && last.trailingComments[0].range[0] >= node.range[1]) {
+                trailingComments = last.trailingComments;
+                delete last.trailingComments;
+            }
+        }
+
+        // Eating the stack.
+        if (last) {
+            while (last && last.range[0] >= node.range[0]) {
+                lastChild = last;
+                last = bottomRight.pop();
+            }
+        }
+
+        if (lastChild) {
+            if (lastChild.leadingComments && lastChild.leadingComments[lastChild.leadingComments.length - 1].range[1] <= node.range[0]) {
+                node.leadingComments = lastChild.leadingComments;
+                delete lastChild.leadingComments;
+            }
+        } else if (extra.leadingComments.length > 0 && extra.leadingComments[extra.leadingComments.length - 1].range[1] <= node.range[0]) {
+            node.leadingComments = extra.leadingComments;
+            extra.leadingComments = [];
+        }
+
+        if (trailingComments) {
+            node.trailingComments = trailingComments;
+        }
+
+        bottomRight.push(node);
+    }
+
+    function markerApply(marker, node) {
+        if (extra.range) {
+            node.range = [marker.offset, index];
+        }
+        if (extra.loc) {
+            node.loc = {
+                start: {
+                    line: marker.line,
+                    column: marker.col
+                },
+                end: {
+                    line: lineNumber,
+                    column: index - lineStart
+                }
+            };
+            node = delegate.postProcess(node);
+        }
+        if (extra.attachComment) {
+            processComment(node);
+        }
+        return node;
     }
 
     SyntaxTreeDelegate = {
 
         name: 'SyntaxTree',
 
-        processComment: function (node) {
-            var lastChild, trailingComments;
-
-            if (node.type === Syntax.Program) {
-                if (node.body.length > 0) {
-                    return;
-                }
-            }
-
-            if (extra.trailingComments.length > 0) {
-                if (extra.trailingComments[0].range[0] >= node.range[1]) {
-                    trailingComments = extra.trailingComments;
-                    extra.trailingComments = [];
-                } else {
-                    extra.trailingComments.length = 0;
-                }
-            } else {
-                if (extra.bottomRightStack.length > 0 &&
-                        extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments &&
-                        extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments[0].range[0] >= node.range[1]) {
-                    trailingComments = extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments;
-                    delete extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments;
-                }
-            }
-
-            // Eating the stack.
-            while (extra.bottomRightStack.length > 0 && extra.bottomRightStack[extra.bottomRightStack.length - 1].range[0] >= node.range[0]) {
-                lastChild = extra.bottomRightStack.pop();
-            }
-
-            if (lastChild) {
-                if (lastChild.leadingComments && lastChild.leadingComments[lastChild.leadingComments.length - 1].range[1] <= node.range[0]) {
-                    node.leadingComments = lastChild.leadingComments;
-                    delete lastChild.leadingComments;
-                }
-            } else if (extra.leadingComments.length > 0 && extra.leadingComments[extra.leadingComments.length - 1].range[1] <= node.range[0]) {
-                node.leadingComments = extra.leadingComments;
-                extra.leadingComments = [];
-            }
-
-
-            if (trailingComments) {
-                node.trailingComments = trailingComments;
-            }
-
-            extra.bottomRightStack.push(node);
-        },
-
-        markEnd: function (node, startToken) {
-            if (extra.range) {
-                node.range = [startToken.start, index];
-            }
-            if (extra.loc) {
-                node.loc = new SourceLocation(
-                    startToken.startLineNumber === undefined ?  startToken.lineNumber : startToken.startLineNumber,
-                    startToken.start - (startToken.startLineStart === undefined ?  startToken.lineStart : startToken.startLineStart),
-                    lineNumber,
-                    index - lineStart
-                );
-                this.postProcess(node);
-            }
-
-            if (extra.attachComment) {
-                this.processComment(node);
-            }
-            return node;
-        },
-
         postProcess: function (node) {
-            if (extra.source) {
-                node.loc.source = extra.source;
-            }
             return node;
         },
 
@@ -20280,35 +20772,198 @@ parseStatement: true, parseSourceElement: true */
             };
         },
 
-        createFunctionDeclaration: function (id, params, defaults, body) {
+        createForOfStatement: function (left, right, body) {
             return {
+                type: Syntax.ForOfStatement,
+                left: left,
+                right: right,
+                body: body
+            };
+        },
+
+        createFunctionDeclaration: function (id, params, defaults, body, rest, generator, expression,
+                                             isAsync, returnType, parametricType) {
+            var funDecl = {
                 type: Syntax.FunctionDeclaration,
                 id: id,
                 params: params,
                 defaults: defaults,
                 body: body,
-                rest: null,
-                generator: false,
-                expression: false
+                rest: rest,
+                generator: generator,
+                expression: expression,
+                returnType: returnType,
+                parametricType: parametricType
             };
+
+            if (isAsync) {
+                funDecl.async = true;
+            }
+
+            return funDecl;
         },
 
-        createFunctionExpression: function (id, params, defaults, body) {
-            return {
+        createFunctionExpression: function (id, params, defaults, body, rest, generator, expression,
+                                            isAsync, returnType, parametricType) {
+            var funExpr = {
                 type: Syntax.FunctionExpression,
                 id: id,
                 params: params,
                 defaults: defaults,
                 body: body,
-                rest: null,
-                generator: false,
-                expression: false
+                rest: rest,
+                generator: generator,
+                expression: expression,
+                returnType: returnType,
+                parametricType: parametricType
             };
+
+            if (isAsync) {
+                funExpr.async = true;
+            }
+
+            return funExpr;
         },
 
         createIdentifier: function (name) {
             return {
                 type: Syntax.Identifier,
+                name: name,
+                // Only here to initialize the shape of the object to ensure
+                // that the 'typeAnnotation' key is ordered before others that
+                // are added later (like 'loc' and 'range'). This just helps
+                // keep the shape of Identifier nodes consistent with everything
+                // else.
+                typeAnnotation: undefined
+            };
+        },
+
+        createTypeAnnotation: function (typeIdentifier, parametricType, params, returnType, nullable) {
+            return {
+                type: Syntax.TypeAnnotation,
+                id: typeIdentifier,
+                parametricType: parametricType,
+                params: params,
+                returnType: returnType,
+                nullable: nullable
+            };
+        },
+
+        createParametricTypeAnnotation: function (parametricTypes) {
+            return {
+                type: Syntax.ParametricTypeAnnotation,
+                params: parametricTypes
+            };
+        },
+
+        createVoidTypeAnnotation: function () {
+            return {
+                type: Syntax.VoidTypeAnnotation
+            };
+        },
+
+        createObjectTypeAnnotation: function (properties, nullable) {
+            return {
+                type: Syntax.ObjectTypeAnnotation,
+                properties: properties,
+                nullable: nullable
+            };
+        },
+
+        createUnionTypeAnnotation: function (types) {
+            return {
+                type: Syntax.UnionTypeAnnotation,
+                types: types
+            };
+        },
+
+        createTypeAnnotatedIdentifier: function (identifier, annotation, isOptionalParam) {
+            return {
+                type: Syntax.TypeAnnotatedIdentifier,
+                id: identifier,
+                annotation: annotation
+            };
+        },
+
+        createOptionalParameter: function (identifier) {
+            return {
+                type: Syntax.OptionalParameter,
+                id: identifier
+            };
+        },
+
+        createXJSAttribute: function (name, value) {
+            return {
+                type: Syntax.XJSAttribute,
+                name: name,
+                value: value || null
+            };
+        },
+
+        createXJSSpreadAttribute: function (argument) {
+            return {
+                type: Syntax.XJSSpreadAttribute,
+                argument: argument
+            };
+        },
+
+        createXJSIdentifier: function (name) {
+            return {
+                type: Syntax.XJSIdentifier,
+                name: name
+            };
+        },
+
+        createXJSNamespacedName: function (namespace, name) {
+            return {
+                type: Syntax.XJSNamespacedName,
+                namespace: namespace,
+                name: name
+            };
+        },
+
+        createXJSMemberExpression: function (object, property) {
+            return {
+                type: Syntax.XJSMemberExpression,
+                object: object,
+                property: property
+            };
+        },
+
+        createXJSElement: function (openingElement, closingElement, children) {
+            return {
+                type: Syntax.XJSElement,
+                openingElement: openingElement,
+                closingElement: closingElement,
+                children: children
+            };
+        },
+
+        createXJSEmptyExpression: function () {
+            return {
+                type: Syntax.XJSEmptyExpression
+            };
+        },
+
+        createXJSExpressionContainer: function (expression) {
+            return {
+                type: Syntax.XJSExpressionContainer,
+                expression: expression
+            };
+        },
+
+        createXJSOpeningElement: function (name, attributes, selfClosing) {
+            return {
+                type: Syntax.XJSOpeningElement,
+                name: name,
+                selfClosing: selfClosing,
+                attributes: attributes
+            };
+        },
+
+        createXJSClosingElement: function (name) {
+            return {
+                type: Syntax.XJSClosingElement,
                 name: name
             };
         },
@@ -20331,11 +20986,15 @@ parseStatement: true, parseSourceElement: true */
         },
 
         createLiteral: function (token) {
-            return {
+            var object = {
                 type: Syntax.Literal,
                 value: token.value,
-                raw: source.slice(token.start, token.end)
+                raw: source.slice(token.range[0], token.range[1])
             };
+            if (token.regex) {
+                object.regex = token.regex;
+            }
+            return object;
         },
 
         createMemberExpression: function (accessor, object, property) {
@@ -20378,12 +21037,15 @@ parseStatement: true, parseSourceElement: true */
             };
         },
 
-        createProperty: function (kind, key, value) {
+        createProperty: function (kind, key, value, method, shorthand, computed) {
             return {
                 type: Syntax.Property,
                 key: key,
                 value: value,
-                kind: kind
+                kind: kind,
+                method: method,
+                shorthand: shorthand,
+                computed: computed
             };
         },
 
@@ -20487,7 +21149,196 @@ parseStatement: true, parseSourceElement: true */
                 object: object,
                 body: body
             };
+        },
+
+        createTemplateElement: function (value, tail) {
+            return {
+                type: Syntax.TemplateElement,
+                value: value,
+                tail: tail
+            };
+        },
+
+        createTemplateLiteral: function (quasis, expressions) {
+            return {
+                type: Syntax.TemplateLiteral,
+                quasis: quasis,
+                expressions: expressions
+            };
+        },
+
+        createSpreadElement: function (argument) {
+            return {
+                type: Syntax.SpreadElement,
+                argument: argument
+            };
+        },
+
+        createSpreadProperty: function (argument) {
+            return {
+                type: Syntax.SpreadProperty,
+                argument: argument
+            };
+        },
+
+        createTaggedTemplateExpression: function (tag, quasi) {
+            return {
+                type: Syntax.TaggedTemplateExpression,
+                tag: tag,
+                quasi: quasi
+            };
+        },
+
+        createArrowFunctionExpression: function (params, defaults, body, rest, expression, isAsync) {
+            var arrowExpr = {
+                type: Syntax.ArrowFunctionExpression,
+                id: null,
+                params: params,
+                defaults: defaults,
+                body: body,
+                rest: rest,
+                generator: false,
+                expression: expression
+            };
+
+            if (isAsync) {
+                arrowExpr.async = true;
+            }
+
+            return arrowExpr;
+        },
+
+        createMethodDefinition: function (propertyType, kind, key, value) {
+            return {
+                type: Syntax.MethodDefinition,
+                key: key,
+                value: value,
+                kind: kind,
+                'static': propertyType === ClassPropertyType.static
+            };
+        },
+
+        createClassProperty: function (propertyIdentifier) {
+            return {
+                type: Syntax.ClassProperty,
+                id: propertyIdentifier
+            };
+        },
+
+        createClassBody: function (body) {
+            return {
+                type: Syntax.ClassBody,
+                body: body
+            };
+        },
+
+        createClassExpression: function (id, superClass, body, parametricType) {
+            return {
+                type: Syntax.ClassExpression,
+                id: id,
+                superClass: superClass,
+                body: body,
+                parametricType: parametricType
+            };
+        },
+
+        createClassDeclaration: function (id, superClass, body, parametricType, superParametricType) {
+            return {
+                type: Syntax.ClassDeclaration,
+                id: id,
+                superClass: superClass,
+                body: body,
+                parametricType: parametricType,
+                superParametricType: superParametricType
+            };
+        },
+
+        createModuleSpecifier: function (token) {
+            return {
+                type: Syntax.ModuleSpecifier,
+                value: token.value,
+                raw: source.slice(token.range[0], token.range[1])
+            };
+        },
+
+        createExportSpecifier: function (id, name) {
+            return {
+                type: Syntax.ExportSpecifier,
+                id: id,
+                name: name
+            };
+        },
+
+        createExportBatchSpecifier: function () {
+            return {
+                type: Syntax.ExportBatchSpecifier
+            };
+        },
+
+        createImportDefaultSpecifier: function (id) {
+            return {
+                type: Syntax.ImportDefaultSpecifier,
+                id: id
+            };
+        },
+
+        createImportNamespaceSpecifier: function (id) {
+            return {
+                type: Syntax.ImportNamespaceSpecifier,
+                id: id
+            };
+        },
+
+        createExportDeclaration: function (isDefault, declaration, specifiers, source) {
+            return {
+                type: Syntax.ExportDeclaration,
+                'default': !!isDefault,
+                declaration: declaration,
+                specifiers: specifiers,
+                source: source
+            };
+        },
+
+        createImportSpecifier: function (id, name) {
+            return {
+                type: Syntax.ImportSpecifier,
+                id: id,
+                name: name
+            };
+        },
+
+        createImportDeclaration: function (specifiers, source) {
+            return {
+                type: Syntax.ImportDeclaration,
+                specifiers: specifiers,
+                source: source
+            };
+        },
+
+        createYieldExpression: function (argument, delegate) {
+            return {
+                type: Syntax.YieldExpression,
+                argument: argument,
+                delegate: delegate
+            };
+        },
+
+        createAwaitExpression: function (argument) {
+            return {
+                type: Syntax.AwaitExpression,
+                argument: argument
+            };
+        },
+
+        createComprehensionExpression: function (filter, blocks, body) {
+            return {
+                type: Syntax.ComprehensionExpression,
+                filter: filter,
+                blocks: blocks,
+                body: body
+            };
         }
+
     };
 
     // Return true if there is a line terminator before the next token.
@@ -20522,9 +21373,9 @@ parseStatement: true, parseSourceElement: true */
 
         if (typeof token.lineNumber === 'number') {
             error = new Error('Line ' + token.lineNumber + ': ' + msg);
-            error.index = token.start;
+            error.index = token.range[0];
             error.lineNumber = token.lineNumber;
-            error.column = token.start - lineStart + 1;
+            error.column = token.range[0] - lineStart + 1;
         } else {
             error = new Error('Line ' + lineNumber + ': ' + msg);
             error.index = index;
@@ -20560,7 +21411,7 @@ parseStatement: true, parseSourceElement: true */
             throwError(token, Messages.UnexpectedNumber);
         }
 
-        if (token.type === Token.StringLiteral) {
+        if (token.type === Token.StringLiteral || token.type === Token.XJSText) {
             throwError(token, Messages.UnexpectedString);
         }
 
@@ -20578,6 +21429,10 @@ parseStatement: true, parseSourceElement: true */
             throwError(token, Messages.UnexpectedToken, token.value);
         }
 
+        if (token.type === Token.Template) {
+            throwError(token, Messages.UnexpectedTemplate, token.value.raw);
+        }
+
         // BooleanLiteral, NullLiteral, or Punctuator.
         throwError(token, Messages.UnexpectedToken, token.value);
     }
@@ -20595,13 +21450,21 @@ parseStatement: true, parseSourceElement: true */
     // Expect the next token to match the specified keyword.
     // If not, an exception will be thrown.
 
-    function expectKeyword(keyword) {
+    function expectKeyword(keyword, contextual) {
         var token = lex();
-        if (token.type !== Token.Keyword || token.value !== keyword) {
+        if (token.type !== (contextual ? Token.Identifier : Token.Keyword) ||
+                token.value !== keyword) {
             throwUnexpected(token);
         }
     }
 
+    // Expect the next token to match the specified contextual keyword.
+    // If not, an exception will be thrown.
+
+    function expectContextualKeyword(keyword) {
+        return expectKeyword(keyword, true);
+    }
+
     // Return true if the next token matches the specified punctuator.
 
     function match(value) {
@@ -20610,8 +21473,15 @@ parseStatement: true, parseSourceElement: true */
 
     // Return true if the next token matches the specified keyword
 
-    function matchKeyword(keyword) {
-        return lookahead.type === Token.Keyword && lookahead.value === keyword;
+    function matchKeyword(keyword, contextual) {
+        var expectedType = contextual ? Token.Identifier : Token.Keyword;
+        return lookahead.type === expectedType && lookahead.value === keyword;
+    }
+
+    // Return true if the next token matches the specified contextual keyword
+
+    function matchContextualKeyword(keyword) {
+        return matchKeyword(keyword, true);
     }
 
     // Return true if the next token is an assignment operator
@@ -20637,11 +21507,36 @@ parseStatement: true, parseSourceElement: true */
             op === '|=';
     }
 
-    function consumeSemicolon() {
-        var line;
+    // Note that 'yield' is treated as a keyword in strict mode, but a
+    // contextual keyword (identifier) in non-strict mode, so we need to
+    // use matchKeyword('yield', false) and matchKeyword('yield', true)
+    // (i.e. matchContextualKeyword) appropriately.
+    function matchYield() {
+        return state.yieldAllowed && matchKeyword('yield', !strict);
+    }
 
-        // Catch the very common case first: immediately a semicolon (U+003B).
-        if (source.charCodeAt(index) === 0x3B || match(';')) {
+    function matchAsync() {
+        var backtrackToken = lookahead, matches = false;
+
+        if (matchContextualKeyword('async')) {
+            lex(); // Make sure peekLineTerminator() starts after 'async'.
+            matches = !peekLineTerminator();
+            rewind(backtrackToken); // Revert the lex().
+        }
+
+        return matches;
+    }
+
+    function matchAwait() {
+        return state.awaitAllowed && matchContextualKeyword('await');
+    }
+
+    function consumeSemicolon() {
+        var line, oldIndex = index, oldLineNumber = lineNumber,
+            oldLineStart = lineStart, oldLookahead = lookahead;
+
+        // Catch the very common case first: immediately a semicolon (char #59).
+        if (source.charCodeAt(index) === 59) {
             lex();
             return;
         }
@@ -20649,6 +21544,15 @@ parseStatement: true, parseSourceElement: true */
         line = lineNumber;
         skipComment();
         if (lineNumber !== line) {
+            index = oldIndex;
+            lineNumber = oldLineNumber;
+            lineStart = oldLineStart;
+            lookahead = oldLookahead;
+            return;
+        }
+
+        if (match(';')) {
+            lex();
             return;
         }
 
@@ -20663,52 +21567,144 @@ parseStatement: true, parseSourceElement: true */
         return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression;
     }
 
+    function isAssignableLeftHandSide(expr) {
+        return isLeftHandSide(expr) || expr.type === Syntax.ObjectPattern || expr.type === Syntax.ArrayPattern;
+    }
+
     // 11.1.4 Array Initialiser
 
     function parseArrayInitialiser() {
-        var elements = [], startToken;
+        var elements = [], blocks = [], filter = null, tmp, possiblecomprehension = true, body,
+            marker = markerCreate();
 
-        startToken = lookahead;
         expect('[');
-
         while (!match(']')) {
-            if (match(',')) {
+            if (lookahead.value === 'for' &&
+                    lookahead.type === Token.Keyword) {
+                if (!possiblecomprehension) {
+                    throwError({}, Messages.ComprehensionError);
+                }
+                matchKeyword('for');
+                tmp = parseForStatement({ignoreBody: true});
+                tmp.of = tmp.type === Syntax.ForOfStatement;
+                tmp.type = Syntax.ComprehensionBlock;
+                if (tmp.left.kind) { // can't be let or const
+                    throwError({}, Messages.ComprehensionError);
+                }
+                blocks.push(tmp);
+            } else if (lookahead.value === 'if' &&
+                           lookahead.type === Token.Keyword) {
+                if (!possiblecomprehension) {
+                    throwError({}, Messages.ComprehensionError);
+                }
+                expectKeyword('if');
+                expect('(');
+                filter = parseExpression();
+                expect(')');
+            } else if (lookahead.value === ',' &&
+                           lookahead.type === Token.Punctuator) {
+                possiblecomprehension = false; // no longer allowed.
                 lex();
                 elements.push(null);
             } else {
-                elements.push(parseAssignmentExpression());
-
-                if (!match(']')) {
-                    expect(',');
+                tmp = parseSpreadOrAssignmentExpression();
+                elements.push(tmp);
+                if (tmp && tmp.type === Syntax.SpreadElement) {
+                    if (!match(']')) {
+                        throwError({}, Messages.ElementAfterSpreadElement);
+                    }
+                } else if (!(match(']') || matchKeyword('for') || matchKeyword('if'))) {
+                    expect(','); // this lexes.
+                    possiblecomprehension = false;
                 }
             }
         }
 
-        lex();
+        expect(']');
 
-        return delegate.markEnd(delegate.createArrayExpression(elements), startToken);
+        if (filter && !blocks.length) {
+            throwError({}, Messages.ComprehensionRequiresBlock);
+        }
+
+        if (blocks.length) {
+            if (elements.length !== 1) {
+                throwError({}, Messages.ComprehensionError);
+            }
+            return markerApply(marker, delegate.createComprehensionExpression(filter, blocks, elements[0]));
+        }
+        return markerApply(marker, delegate.createArrayExpression(elements));
     }
 
     // 11.1.5 Object Initialiser
 
-    function parsePropertyFunction(param, first) {
-        var previousStrict, body, startToken;
+    function parsePropertyFunction(options) {
+        var previousStrict, previousYieldAllowed, previousAwaitAllowed,
+            params, defaults, body, marker = markerCreate();
 
         previousStrict = strict;
-        startToken = lookahead;
-        body = parseFunctionSourceElements();
-        if (first && strict && isRestrictedWord(param[0].name)) {
-            throwErrorTolerant(first, Messages.StrictParamName);
+        previousYieldAllowed = state.yieldAllowed;
+        state.yieldAllowed = options.generator;
+        previousAwaitAllowed = state.awaitAllowed;
+        state.awaitAllowed = options.async;
+        params = options.params || [];
+        defaults = options.defaults || [];
+
+        body = parseConciseBody();
+        if (options.name && strict && isRestrictedWord(params[0].name)) {
+            throwErrorTolerant(options.name, Messages.StrictParamName);
         }
         strict = previousStrict;
-        return delegate.markEnd(delegate.createFunctionExpression(null, param, [], body), startToken);
+        state.yieldAllowed = previousYieldAllowed;
+        state.awaitAllowed = previousAwaitAllowed;
+
+        return markerApply(marker, delegate.createFunctionExpression(
+            null,
+            params,
+            defaults,
+            body,
+            options.rest || null,
+            options.generator,
+            body.type !== Syntax.BlockStatement,
+            options.async,
+            options.returnType,
+            options.parametricType
+        ));
     }
 
-    function parseObjectPropertyKey() {
-        var token, startToken;
 
-        startToken = lookahead;
-        token = lex();
+    function parsePropertyMethodFunction(options) {
+        var previousStrict, tmp, method;
+
+        previousStrict = strict;
+        strict = true;
+
+        tmp = parseParams();
+
+        if (tmp.stricted) {
+            throwErrorTolerant(tmp.stricted, tmp.message);
+        }
+
+        method = parsePropertyFunction({
+            params: tmp.params,
+            defaults: tmp.defaults,
+            rest: tmp.rest,
+            generator: options.generator,
+            async: options.async,
+            returnType: tmp.returnType,
+            parametricType: options.parametricType
+        });
+
+        strict = previousStrict;
+
+        return method;
+    }
+
+
+    function parseObjectPropertyKey() {
+        var marker = markerCreate(),
+            token = lex(),
+            propertyKey,
+            result;
 
         // Note: This function is called only from parseObjectProperty(), where
         // EOF and Punctuator tokens are already filtered out.
@@ -20717,95 +21713,219 @@ parseStatement: true, parseSourceElement: true */
             if (strict && token.octal) {
                 throwErrorTolerant(token, Messages.StrictOctalLiteral);
             }
-            return delegate.markEnd(delegate.createLiteral(token), startToken);
+            return markerApply(marker, delegate.createLiteral(token));
         }
 
-        return delegate.markEnd(delegate.createIdentifier(token.value), startToken);
+        if (token.type === Token.Punctuator && token.value === '[') {
+            // For computed properties we should skip the [ and ], and
+            // capture in marker only the assignment expression itself.
+            marker = markerCreate();
+            propertyKey = parseAssignmentExpression();
+            result = markerApply(marker, propertyKey);
+            expect(']');
+            return result;
+        }
+
+        return markerApply(marker, delegate.createIdentifier(token.value));
     }
 
     function parseObjectProperty() {
-        var token, key, id, value, param, startToken;
+        var token, key, id, value, param, expr, computed,
+            marker = markerCreate();
 
         token = lookahead;
-        startToken = lookahead;
-
-        if (token.type === Token.Identifier) {
+        computed = (token.value === '[');
 
+        if (token.type === Token.Identifier || computed || matchAsync()) {
             id = parseObjectPropertyKey();
 
+            if (match(':')) {
+                lex();
+
+                return markerApply(
+                    marker,
+                    delegate.createProperty(
+                        'init',
+                        id,
+                        parseAssignmentExpression(),
+                        false,
+                        false,
+                        computed
+                    )
+                );
+            }
+
+            if (match('(')) {
+                return markerApply(
+                    marker,
+                    delegate.createProperty(
+                        'init',
+                        id,
+                        parsePropertyMethodFunction({
+                            generator: false,
+                            async: false
+                        }),
+                        true,
+                        false,
+                        computed
+                    )
+                );
+            }
+
             // Property Assignment: Getter and Setter.
 
-            if (token.value === 'get' && !match(':')) {
+            if (token.value === 'get') {
+                computed = (lookahead.value === '[');
                 key = parseObjectPropertyKey();
+
                 expect('(');
                 expect(')');
-                value = parsePropertyFunction([]);
-                return delegate.markEnd(delegate.createProperty('get', key, value), startToken);
+
+                return markerApply(
+                    marker,
+                    delegate.createProperty(
+                        'get',
+                        key,
+                        parsePropertyFunction({
+                            generator: false,
+                            async: false
+                        }),
+                        false,
+                        false,
+                        computed
+                    )
+                );
             }
-            if (token.value === 'set' && !match(':')) {
+
+            if (token.value === 'set') {
+                computed = (lookahead.value === '[');
                 key = parseObjectPropertyKey();
+
                 expect('(');
                 token = lookahead;
-                if (token.type !== Token.Identifier) {
-                    expect(')');
-                    throwErrorTolerant(token, Messages.UnexpectedToken, token.value);
-                    value = parsePropertyFunction([]);
-                } else {
-                    param = [ parseVariableIdentifier() ];
-                    expect(')');
-                    value = parsePropertyFunction(param, token);
-                }
-                return delegate.markEnd(delegate.createProperty('set', key, value), startToken);
+                param = [ parseTypeAnnotatableIdentifier() ];
+                expect(')');
+
+                return markerApply(
+                    marker,
+                    delegate.createProperty(
+                        'set',
+                        key,
+                        parsePropertyFunction({
+                            params: param,
+                            generator: false,
+                            async: false,
+                            name: token
+                        }),
+                        false,
+                        false,
+                        computed
+                    )
+                );
             }
-            expect(':');
-            value = parseAssignmentExpression();
-            return delegate.markEnd(delegate.createProperty('init', id, value), startToken);
+
+            if (token.value === 'async') {
+                computed = (lookahead.value === '[');
+                key = parseObjectPropertyKey();
+
+                return markerApply(
+                    marker,
+                    delegate.createProperty(
+                        'init',
+                        key,
+                        parsePropertyMethodFunction({
+                            generator: false,
+                            async: true
+                        }),
+                        true,
+                        false,
+                        computed
+                    )
+                );
+            }
+
+            if (computed) {
+                // Computed properties can only be used with full notation.
+                throwUnexpected(lookahead);
+            }
+
+            return markerApply(
+                marker,
+                delegate.createProperty('init', id, id, false, true, false)
+            );
         }
+
         if (token.type === Token.EOF || token.type === Token.Punctuator) {
-            throwUnexpected(token);
-        } else {
-            key = parseObjectPropertyKey();
-            expect(':');
-            value = parseAssignmentExpression();
-            return delegate.markEnd(delegate.createProperty('init', key, value), startToken);
+            if (!match('*')) {
+                throwUnexpected(token);
+            }
+            lex();
+
+            computed = (lookahead.type === Token.Punctuator && lookahead.value === '[');
+
+            id = parseObjectPropertyKey();
+
+            if (!match('(')) {
+                throwUnexpected(lex());
+            }
+
+            return markerApply(marker, delegate.createProperty('init', id, parsePropertyMethodFunction({ generator: true }), true, false, computed));
         }
+        key = parseObjectPropertyKey();
+        if (match(':')) {
+            lex();
+            return markerApply(marker, delegate.createProperty('init', key, parseAssignmentExpression(), false, false, false));
+        }
+        if (match('(')) {
+            return markerApply(marker, delegate.createProperty('init', key, parsePropertyMethodFunction({ generator: false }), true, false, false));
+        }
+        throwUnexpected(lex());
+    }
+
+    function parseObjectSpreadProperty() {
+        var marker = markerCreate();
+        expect('...');
+        return markerApply(marker, delegate.createSpreadProperty(parseAssignmentExpression()));
     }
 
     function parseObjectInitialiser() {
-        var properties = [], property, name, key, kind, map = {}, toString = String, startToken;
-
-        startToken = lookahead;
+        var properties = [], property, name, key, kind, map = {}, toString = String,
+            marker = markerCreate();
 
         expect('{');
 
         while (!match('}')) {
-            property = parseObjectProperty();
-
-            if (property.key.type === Syntax.Identifier) {
-                name = property.key.name;
+            if (match('...')) {
+                property = parseObjectSpreadProperty();
             } else {
-                name = toString(property.key.value);
-            }
-            kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set;
+                property = parseObjectProperty();
 
-            key = '$' + name;
-            if (Object.prototype.hasOwnProperty.call(map, key)) {
-                if (map[key] === PropertyKind.Data) {
-                    if (strict && kind === PropertyKind.Data) {
-                        throwErrorTolerant({}, Messages.StrictDuplicateProperty);
-                    } else if (kind !== PropertyKind.Data) {
-                        throwErrorTolerant({}, Messages.AccessorDataProperty);
-                    }
+                if (property.key.type === Syntax.Identifier) {
+                    name = property.key.name;
                 } else {
-                    if (kind === PropertyKind.Data) {
-                        throwErrorTolerant({}, Messages.AccessorDataProperty);
-                    } else if (map[key] & kind) {
-                        throwErrorTolerant({}, Messages.AccessorGetSet);
-                    }
+                    name = toString(property.key.value);
+                }
+                kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set;
+
+                key = '$' + name;
+                if (Object.prototype.hasOwnProperty.call(map, key)) {
+                    if (map[key] === PropertyKind.Data) {
+                        if (strict && kind === PropertyKind.Data) {
+                            throwErrorTolerant({}, Messages.StrictDuplicateProperty);
+                        } else if (kind !== PropertyKind.Data) {
+                            throwErrorTolerant({}, Messages.AccessorDataProperty);
+                        }
+                    } else {
+                        if (kind === PropertyKind.Data) {
+                            throwErrorTolerant({}, Messages.AccessorDataProperty);
+                        } else if (map[key] & kind) {
+                            throwErrorTolerant({}, Messages.AccessorGetSet);
+                        }
+                    }
+                    map[key] |= kind;
+                } else {
+                    map[key] = kind;
                 }
-                map[key] |= kind;
-            } else {
-                map[key] = kind;
             }
 
             properties.push(property);
@@ -20817,7 +21937,32 @@ parseStatement: true, parseSourceElement: true */
 
         expect('}');
 
-        return delegate.markEnd(delegate.createObjectExpression(properties), startToken);
+        return markerApply(marker, delegate.createObjectExpression(properties));
+    }
+
+    function parseTemplateElement(option) {
+        var marker = markerCreate(),
+            token = scanTemplateElement(option);
+        if (strict && token.octal) {
+            throwError(token, Messages.StrictOctalLiteral);
+        }
+        return markerApply(marker, delegate.createTemplateElement({ raw: token.value.raw, cooked: token.value.cooked }, token.tail));
+    }
+
+    function parseTemplateLiteral() {
+        var quasi, quasis, expressions, marker = markerCreate();
+
+        quasi = parseTemplateElement({ head: true });
+        quasis = [ quasi ];
+        expressions = [];
+
+        while (!quasi.tail) {
+            expressions.push(parseExpression());
+            quasi = parseTemplateElement({ head: false });
+            quasis.push(quasi);
+        }
+
+        return markerApply(marker, delegate.createTemplateLiteral(quasis, expressions));
     }
 
     // 11.1.6 The Grouping Operator
@@ -20827,6 +21972,8 @@ parseStatement: true, parseSourceElement: true */
 
         expect('(');
 
+        ++state.parenthesizedCount;
+
         expr = parseExpression();
 
         expect(')');
@@ -20834,14 +21981,73 @@ parseStatement: true, parseSourceElement: true */
         return expr;
     }
 
+    function matchAsyncFuncExprOrDecl() {
+        var token;
+
+        if (matchAsync()) {
+            token = lookahead2();
+            if (token.type === Token.Keyword && token.value === 'function') {
+                return true;
+            }
+        }
+
+        return false;
+    }
 
     // 11.1 Primary Expressions
 
     function parsePrimaryExpression() {
-        var type, token, expr, startToken;
+        var marker, type, token, expr;
 
-        if (match('(')) {
-            return parseGroupExpression();
+        type = lookahead.type;
+
+        if (type === Token.Identifier) {
+            marker = markerCreate();
+            return markerApply(marker, delegate.createIdentifier(lex().value));
+        }
+
+        if (type === Token.StringLiteral || type === Token.NumericLiteral) {
+            if (strict && lookahead.octal) {
+                throwErrorTolerant(lookahead, Messages.StrictOctalLiteral);
+            }
+            marker = markerCreate();
+            return markerApply(marker, delegate.createLiteral(lex()));
+        }
+
+        if (type === Token.Keyword) {
+            if (matchKeyword('this')) {
+                marker = markerCreate();
+                lex();
+                return markerApply(marker, delegate.createThisExpression());
+            }
+
+            if (matchKeyword('function')) {
+                return parseFunctionExpression();
+            }
+
+            if (matchKeyword('class')) {
+                return parseClassExpression();
+            }
+
+            if (matchKeyword('super')) {
+                marker = markerCreate();
+                lex();
+                return markerApply(marker, delegate.createIdentifier('super'));
+            }
+        }
+
+        if (type === Token.BooleanLiteral) {
+            marker = markerCreate();
+            token = lex();
+            token.value = (token.value === 'true');
+            return markerApply(marker, delegate.createLiteral(token));
+        }
+
+        if (type === Token.NullLiteral) {
+            marker = markerCreate();
+            token = lex();
+            token.value = null;
+            return markerApply(marker, delegate.createLiteral(token));
         }
 
         if (match('[')) {
@@ -20852,61 +22058,44 @@ parseStatement: true, parseSourceElement: true */
             return parseObjectInitialiser();
         }
 
-        type = lookahead.type;
-        startToken = lookahead;
-
-        if (type === Token.Identifier) {
-            expr =  delegate.createIdentifier(lex().value);
-        } else if (type === Token.StringLiteral || type === Token.NumericLiteral) {
-            if (strict && lookahead.octal) {
-                throwErrorTolerant(lookahead, Messages.StrictOctalLiteral);
-            }
-            expr = delegate.createLiteral(lex());
-        } else if (type === Token.Keyword) {
-            if (matchKeyword('function')) {
-                return parseFunctionExpression();
-            }
-            if (matchKeyword('this')) {
-                lex();
-                expr = delegate.createThisExpression();
-            } else {
-                throwUnexpected(lex());
-            }
-        } else if (type === Token.BooleanLiteral) {
-            token = lex();
-            token.value = (token.value === 'true');
-            expr = delegate.createLiteral(token);
-        } else if (type === Token.NullLiteral) {
-            token = lex();
-            token.value = null;
-            expr = delegate.createLiteral(token);
-        } else if (match('/') || match('/=')) {
-            if (typeof extra.tokens !== 'undefined') {
-                expr = delegate.createLiteral(collectRegex());
-            } else {
-                expr = delegate.createLiteral(scanRegExp());
-            }
-            peek();
-        } else {
-            throwUnexpected(lex());
+        if (match('(')) {
+            return parseGroupExpression();
         }
 
-        return delegate.markEnd(expr, startToken);
+        if (match('/') || match('/=')) {
+            marker = markerCreate();
+            return markerApply(marker, delegate.createLiteral(scanRegExp()));
+        }
+
+        if (type === Token.Template) {
+            return parseTemplateLiteral();
+        }
+
+        if (match('<')) {
+            return parseXJSElement();
+        }
+
+        throwUnexpected(lex());
     }
 
     // 11.2 Left-Hand-Side Expressions
 
     function parseArguments() {
-        var args = [];
+        var args = [], arg;
 
         expect('(');
 
         if (!match(')')) {
             while (index < length) {
-                args.push(parseAssignmentExpression());
+                arg = parseSpreadOrAssignmentExpression();
+                args.push(arg);
+
                 if (match(')')) {
                     break;
+                } else if (arg.type === Syntax.SpreadElement) {
+                    throwError({}, Messages.ElementAfterSpreadElement);
                 }
+
                 expect(',');
             }
         }
@@ -20916,17 +22105,24 @@ parseStatement: true, parseSourceElement: true */
         return args;
     }
 
-    function parseNonComputedProperty() {
-        var token, startToken;
+    function parseSpreadOrAssignmentExpression() {
+        if (match('...')) {
+            var marker = markerCreate();
+            lex();
+            return markerApply(marker, delegate.createSpreadElement(parseAssignmentExpression()));
+        }
+        return parseAssignmentExpression();
+    }
 
-        startToken = lookahead;
-        token = lex();
+    function parseNonComputedProperty() {
+        var marker = markerCreate(),
+            token = lex();
 
         if (!isIdentifierName(token)) {
             throwUnexpected(token);
         }
 
-        return delegate.markEnd(delegate.createIdentifier(token.value), startToken);
+        return markerApply(marker, delegate.createIdentifier(token.value));
     }
 
     function parseNonComputedMember() {
@@ -20948,63 +22144,49 @@ parseStatement: true, parseSourceElement: true */
     }
 
     function parseNewExpression() {
-        var callee, args, startToken;
+        var callee, args, marker = markerCreate();
 
-        startToken = lookahead;
         expectKeyword('new');
         callee = parseLeftHandSideExpression();
         args = match('(') ? parseArguments() : [];
 
-        return delegate.markEnd(delegate.createNewExpression(callee, args), startToken);
+        return markerApply(marker, delegate.createNewExpression(callee, args));
     }
 
     function parseLeftHandSideExpressionAllowCall() {
-        var previousAllowIn, expr, args, property, startToken;
+        var expr, args, marker = markerCreate();
 
-        startToken = lookahead;
-
-        previousAllowIn = state.allowIn;
-        state.allowIn = true;
         expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression();
-        state.allowIn = previousAllowIn;
 
-        for (;;) {
-            if (match('.')) {
-                property = parseNonComputedMember();
-                expr = delegate.createMemberExpression('.', expr, property);
-            } else if (match('(')) {
+        while (match('.') || match('[') || match('(') || lookahead.type === Token.Template) {
+            if (match('(')) {
                 args = parseArguments();
-                expr = delegate.createCallExpression(expr, args);
+                expr = markerApply(marker, delegate.createCallExpression(expr, args));
             } else if (match('[')) {
-                property = parseComputedMember();
-                expr = delegate.createMemberExpression('[', expr, property);
+                expr = markerApply(marker, delegate.createMemberExpression('[', expr, parseComputedMember()));
+            } else if (match('.')) {
+                expr = markerApply(marker, delegate.createMemberExpression('.', expr, parseNonComputedMember()));
             } else {
-                break;
+                expr = markerApply(marker, delegate.createTaggedTemplateExpression(expr, parseTemplateLiteral()));
             }
-            delegate.markEnd(expr, startToken);
         }
 
         return expr;
     }
 
     function parseLeftHandSideExpression() {
-        var previousAllowIn, expr, property, startToken;
+        var expr, marker = markerCreate();
 
-        startToken = lookahead;
-
-        previousAllowIn = state.allowIn;
         expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression();
-        state.allowIn = previousAllowIn;
 
-        while (match('.') || match('[')) {
+        while (match('.') || match('[') || lookahead.type === Token.Template) {
             if (match('[')) {
-                property = parseComputedMember();
-                expr = delegate.createMemberExpression('[', expr, property);
+                expr = markerApply(marker, delegate.createMemberExpression('[', expr, parseComputedMember()));
+            } else if (match('.')) {
+                expr = markerApply(marker, delegate.createMemberExpression('.', expr, parseNonComputedMember()));
             } else {
-                property = parseNonComputedMember();
-                expr = delegate.createMemberExpression('.', expr, property);
+                expr = markerApply(marker, delegate.createTaggedTemplateExpression(expr, parseTemplateLiteral()));
             }
-            delegate.markEnd(expr, startToken);
         }
 
         return expr;
@@ -21013,24 +22195,26 @@ parseStatement: true, parseSourceElement: true */
     // 11.3 Postfix Expressions
 
     function parsePostfixExpression() {
-        var expr, token, startToken = lookahead;
+        var marker = markerCreate(),
+            expr = parseLeftHandSideExpressionAllowCall(),
+            token;
 
-        expr = parseLeftHandSideExpressionAllowCall();
+        if (lookahead.type !== Token.Punctuator) {
+            return expr;
+        }
 
-        if (lookahead.type === Token.Punctuator) {
-            if ((match('++') || match('--')) && !peekLineTerminator()) {
-                // 11.3.1, 11.3.2
-                if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
-                    throwErrorTolerant({}, Messages.StrictLHSPostfix);
-                }
-
-                if (!isLeftHandSide(expr)) {
-                    throwErrorTolerant({}, Messages.InvalidLHSInAssignment);
-                }
-
-                token = lex();
-                expr = delegate.markEnd(delegate.createPostfixExpression(token.value, expr), startToken);
+        if ((match('++') || match('--')) && !peekLineTerminator()) {
+            // 11.3.1, 11.3.2
+            if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
+                throwErrorTolerant({}, Messages.StrictLHSPostfix);
             }
+
+            if (!isLeftHandSide(expr)) {
+                throwError({}, Messages.InvalidLHSInAssignment);
+            }
+
+            token = lex();
+            expr = markerApply(marker, delegate.createPostfixExpression(token.value, expr));
         }
 
         return expr;
@@ -21039,12 +22223,14 @@ parseStatement: true, parseSourceElement: true */
     // 11.4 Unary Operators
 
     function parseUnaryExpression() {
-        var token, expr, startToken;
+        var marker, token, expr;
 
         if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) {
-            expr = parsePostfixExpression();
-        } else if (match('++') || match('--')) {
-            startToken = lookahead;
+            return parsePostfixExpression();
+        }
+
+        if (match('++') || match('--')) {
+            marker = markerCreate();
             token = lex();
             expr = parseUnaryExpression();
             // 11.4.4, 11.4.5
@@ -21053,31 +22239,31 @@ parseStatement: true, parseSourceElement: true */
             }
 
             if (!isLeftHandSide(expr)) {
-                throwErrorTolerant({}, Messages.InvalidLHSInAssignment);
+                throwError({}, Messages.InvalidLHSInAssignment);
             }
 
-            expr = delegate.createUnaryExpression(token.value, expr);
-            expr = delegate.markEnd(expr, startToken);
-        } else if (match('+') || match('-') || match('~') || match('!')) {
-            startToken = lookahead;
+            return markerApply(marker, delegate.createUnaryExpression(token.value, expr));
+        }
+
+        if (match('+') || match('-') || match('~') || match('!')) {
+            marker = markerCreate();
             token = lex();
             expr = parseUnaryExpression();
-            expr = delegate.createUnaryExpression(token.value, expr);
-            expr = delegate.markEnd(expr, startToken);
-        } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {
-            startToken = lookahead;
+            return markerApply(marker, delegate.createUnaryExpression(token.value, expr));
+        }
+
+        if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {
+            marker = markerCreate();
             token = lex();
             expr = parseUnaryExpression();
-            expr = delegate.createUnaryExpression(token.value, expr);
-            expr = delegate.markEnd(expr, startToken);
+            expr = markerApply(marker, delegate.createUnaryExpression(token.value, expr));
             if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) {
                 throwErrorTolerant({}, Messages.StrictDelete);
             }
-        } else {
-            expr = parsePostfixExpression();
+            return expr;
         }
 
-        return expr;
+        return parsePostfixExpression();
     }
 
     function binaryPrecedence(token, allowIn) {
@@ -21160,25 +22346,29 @@ parseStatement: true, parseSourceElement: true */
     // 11.11 Binary Logical Operators
 
     function parseBinaryExpression() {
-        var marker, markers, expr, token, prec, stack, right, operator, left, i;
+        var expr, token, prec, previousAllowIn, stack, right, operator, left, i,
+            marker, markers;
 
-        marker = lookahead;
+        previousAllowIn = state.allowIn;
+        state.allowIn = true;
+
+        marker = markerCreate();
         left = parseUnaryExpression();
 
         token = lookahead;
-        prec = binaryPrecedence(token, state.allowIn);
+        prec = binaryPrecedence(token, previousAllowIn);
         if (prec === 0) {
             return left;
         }
         token.prec = prec;
         lex();
 
-        markers = [marker, lookahead];
+        markers = [marker, markerCreate()];
         right = parseUnaryExpression();
 
         stack = [left, token, right];
 
-        while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) {
+        while ((prec = binaryPrecedence(lookahead, previousAllowIn)) > 0) {
 
             // Reduce: make a binary expression from the three topmost entries.
             while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {
@@ -21187,20 +22377,23 @@ parseStatement: true, parseSourceElement: true */
                 left = stack.pop();
                 expr = delegate.createBinaryExpression(operator, left, right);
                 markers.pop();
-                marker = markers[markers.length - 1];
-                delegate.markEnd(expr, marker);
+                marker = markers.pop();
+                markerApply(marker, expr);
                 stack.push(expr);
+                markers.push(marker);
             }
 
             // Shift.
             token = lex();
             token.prec = prec;
             stack.push(token);
-            markers.push(lookahead);
+            markers.push(markerCreate());
             expr = parseUnaryExpression();
             stack.push(expr);
         }
 
+        state.allowIn = previousAllowIn;
+
         // Final reduce to clean-up the stack.
         i = stack.length - 1;
         expr = stack[i];
@@ -21209,7 +22402,7 @@ parseStatement: true, parseSourceElement: true */
             expr = delegate.createBinaryExpression(stack[i - 1].value, stack[i - 2], expr);
             i -= 2;
             marker = markers.pop();
-            delegate.markEnd(expr, marker);
+            markerApply(marker, expr);
         }
 
         return expr;
@@ -21219,10 +22412,7 @@ parseStatement: true, parseSourceElement: true */
     // 11.12 Conditional Operator
 
     function parseConditionalExpression() {
-        var expr, previousAllowIn, consequent, alternate, startToken;
-
-        startToken = lookahead;
-
+        var expr, previousAllowIn, consequent, alternate, marker = markerCreate();
         expr = parseBinaryExpression();
 
         if (match('?')) {
@@ -21234,8 +22424,7 @@ parseStatement: true, parseSourceElement: true */
             expect(':');
             alternate = parseAssignmentExpression();
 
-            expr = delegate.createConditionalExpression(expr, consequent, alternate);
-            delegate.markEnd(expr, startToken);
+            expr = markerApply(marker, delegate.createConditionalExpression(expr, consequent, alternate));
         }
 
         return expr;
@@ -21243,55 +22432,320 @@ parseStatement: true, parseSourceElement: true */
 
     // 11.13 Assignment Operators
 
+    function reinterpretAsAssignmentBindingPattern(expr) {
+        var i, len, property, element;
+
+        if (expr.type === Syntax.ObjectExpression) {
+            expr.type = Syntax.ObjectPattern;
+            for (i = 0, len = expr.properties.length; i < len; i += 1) {
+                property = expr.properties[i];
+                if (property.type === Syntax.SpreadProperty) {
+                    if (i < len - 1) {
+                        throwError({}, Messages.PropertyAfterSpreadProperty);
+                    }
+                    reinterpretAsAssignmentBindingPattern(property.argument);
+                } else {
+                    if (property.kind !== 'init') {
+                        throwError({}, Messages.InvalidLHSInAssignment);
+                    }
+                    reinterpretAsAssignmentBindingPattern(property.value);
+                }
+            }
+        } else if (expr.type === Syntax.ArrayExpression) {
+            expr.type = Syntax.ArrayPattern;
+            for (i = 0, len = expr.elements.length; i < len; i += 1) {
+                element = expr.elements[i];
+                if (element) {
+                    reinterpretAsAssignmentBindingPattern(element);
+                }
+            }
+        } else if (expr.type === Syntax.Identifier) {
+            if (isRestrictedWord(expr.name)) {
+                throwError({}, Messages.InvalidLHSInAssignment);
+            }
+        } else if (expr.type === Syntax.SpreadElement) {
+            reinterpretAsAssignmentBindingPattern(expr.argument);
+            if (expr.argument.type === Syntax.ObjectPattern) {
+                throwError({}, Messages.ObjectPatternAsSpread);
+            }
+        } else {
+            if (expr.type !== Syntax.MemberExpression && expr.type !== Syntax.CallExpression && expr.type !== Syntax.NewExpression) {
+                throwError({}, Messages.InvalidLHSInAssignment);
+            }
+        }
+    }
+
+
+    function reinterpretAsDestructuredParameter(options, expr) {
+        var i, len, property, element;
+
+        if (expr.type === Syntax.ObjectExpression) {
+            expr.type = Syntax.ObjectPattern;
+            for (i = 0, len = expr.properties.length; i < len; i += 1) {
+                property = expr.properties[i];
+                if (property.type === Syntax.SpreadProperty) {
+                    if (i < len - 1) {
+                        throwError({}, Messages.PropertyAfterSpreadProperty);
+                    }
+                    reinterpretAsDestructuredParameter(options, property.argument);
+                } else {
+                    if (property.kind !== 'init') {
+                        throwError({}, Messages.InvalidLHSInFormalsList);
+                    }
+                    reinterpretAsDestructuredParameter(options, property.value);
+                }
+            }
+        } else if (expr.type === Syntax.ArrayExpression) {
+            expr.type = Syntax.ArrayPattern;
+            for (i = 0, len = expr.elements.length; i < len; i += 1) {
+                element = expr.elements[i];
+                if (element) {
+                    reinterpretAsDestructuredParameter(options, element);
+                }
+            }
+        } else if (expr.type === Syntax.Identifier) {
+            validateParam(options, expr, expr.name);
+        } else {
+            if (expr.type !== Syntax.MemberExpression) {
+                throwError({}, Messages.InvalidLHSInFormalsList);
+            }
+        }
+    }
+
+    function reinterpretAsCoverFormalsList(expressions) {
+        var i, len, param, params, defaults, defaultCount, options, rest;
+
+        params = [];
+        defaults = [];
+        defaultCount = 0;
+        rest = null;
+        options = {
+            paramSet: {}
+        };
+
+        for (i = 0, len = expressions.length; i < len; i += 1) {
+            param = expressions[i];
+            if (param.type === Syntax.Identifier) {
+                params.push(param);
+                defaults.push(null);
+                validateParam(options, param, param.name);
+            } else if (param.type === Syntax.ObjectExpression || param.type === Syntax.ArrayExpression) {
+                reinterpretAsDestructuredParameter(options, param);
+                params.push(param);
+                defaults.push(null);
+            } else if (param.type === Syntax.SpreadElement) {
+                assert(i === len - 1, 'It is guaranteed that SpreadElement is last element by parseExpression');
+                reinterpretAsDestructuredParameter(options, param.argument);
+                rest = param.argument;
+            } else if (param.type === Syntax.AssignmentExpression) {
+                params.push(param.left);
+                defaults.push(param.right);
+                ++defaultCount;
+                validateParam(options, param.left, param.left.name);
+            } else {
+                return null;
+            }
+        }
+
+        if (options.message === Messages.StrictParamDupe) {
+            throwError(
+                strict ? options.stricted : options.firstRestricted,
+                options.message
+            );
+        }
+
+        if (defaultCount === 0) {
+            defaults = [];
+        }
+
+        return {
+            params: params,
+            defaults: defaults,
+            rest: rest,
+            stricted: options.stricted,
+            firstRestricted: options.firstRestricted,
+            message: options.message
+        };
+    }
+
+    function parseArrowFunctionExpression(options, marker) {
+        var previousStrict, previousYieldAllowed, previousAwaitAllowed, body;
+
+        expect('=>');
+
+        previousStrict = strict;
+        previousYieldAllowed = state.yieldAllowed;
+        state.yieldAllowed = false;
+        previousAwaitAllowed = state.awaitAllowed;
+        state.awaitAllowed = !!options.async;
+        body = parseConciseBody();
+
+        if (strict && options.firstRestricted) {
+            throwError(options.firstRestricted, options.message);
+        }
+        if (strict && options.stricted) {
+            throwErrorTolerant(options.stricted, options.message);
+        }
+
+        strict = previousStrict;
+        state.yieldAllowed = previousYieldAllowed;
+        state.awaitAllowed = previousAwaitAllowed;
+
+        return markerApply(marker, delegate.createArrowFunctionExpression(
+            options.params,
+            options.defaults,
+            body,
+            options.rest,
+            body.type !== Syntax.BlockStatement,
+            !!options.async
+        ));
+    }
+
     function parseAssignmentExpression() {
-        var token, left, right, node, startToken;
+        var marker, expr, token, params, oldParenthesizedCount,
+            backtrackToken = lookahead, possiblyAsync = false;
+
+        if (matchYield()) {
+            return parseYieldExpression();
+        }
+
+        if (matchAwait()) {
+            return parseAwaitExpression();
+        }
+
+        oldParenthesizedCount = state.parenthesizedCount;
+
+        marker = markerCreate();
+
+        if (matchAsyncFuncExprOrDecl()) {
+            return parseFunctionExpression();
+        }
+
+        if (matchAsync()) {
+            // We can't be completely sure that this 'async' token is
+            // actually a contextual keyword modifying a function
+            // expression, so we might have to un-lex() it later by
+            // calling rewind(backtrackToken).
+            possiblyAsync = true;
+            lex();
+        }
+
+        if (match('(')) {
+            token = lookahead2();
+            if ((token.type === Token.Punctuator && token.value === ')') || token.value === '...') {
+                params = parseParams();
+                if (!match('=>')) {
+                    throwUnexpected(lex());
+                }
+                params.async = possiblyAsync;
+                return parseArrowFunctionExpression(params, marker);
+            }
+        }
 
         token = lookahead;
-        startToken = lookahead;
 
-        node = left = parseConditionalExpression();
+        // If the 'async' keyword is not followed by a '(' character or an
+        // identifier, then it can't be an arrow function modifier, and we
+        // should interpret it as a normal identifer.
+        if (possiblyAsync && !match('(') && token.type !== Token.Identifier) {
+            possiblyAsync = false;
+            rewind(backtrackToken);
+        }
+
+        expr = parseConditionalExpression();
+
+        if (match('=>') &&
+                (state.parenthesizedCount === oldParenthesizedCount ||
+                state.parenthesizedCount === (oldParenthesizedCount + 1))) {
+            if (expr.type === Syntax.Identifier) {
+                params = reinterpretAsCoverFormalsList([ expr ]);
+            } else if (expr.type === Syntax.SequenceExpression) {
+                params = reinterpretAsCoverFormalsList(expr.expressions);
+            }
+            if (params) {
+                params.async = possiblyAsync;
+                return parseArrowFunctionExpression(params, marker);
+            }
+        }
+
+        // If we haven't returned by now, then the 'async' keyword was not
+        // a function modifier, and we should rewind and interpret it as a
+        // normal identifier.
+        if (possiblyAsync) {
+            possiblyAsync = false;
+            rewind(backtrackToken);
+            expr = parseConditionalExpression();
+        }
 
         if (matchAssign()) {
-            // LeftHandSideExpression
-            if (!isLeftHandSide(left)) {
-                throwErrorTolerant({}, Messages.InvalidLHSInAssignment);
-            }
-
             // 11.13.1
-            if (strict && left.type === Syntax.Identifier && isRestrictedWord(left.name)) {
+            if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
                 throwErrorTolerant(token, Messages.StrictLHSAssignment);
             }
 
-            token = lex();
-            right = parseAssignmentExpression();
-            node = delegate.markEnd(delegate.createAssignmentExpression(token.value, left, right), startToken);
+            // ES.next draf 11.13 Runtime Semantics step 1
+            if (match('=') && (expr.type === Syntax.ObjectExpression || expr.type === Syntax.ArrayExpression)) {
+                reinterpretAsAssignmentBindingPattern(expr);
+            } else if (!isLeftHandSide(expr)) {
+                throwError({}, Messages.InvalidLHSInAssignment);
+            }
+
+            expr = markerApply(marker, delegate.createAssignmentExpression(lex().value, expr, parseAssignmentExpression()));
         }
 
-        return node;
+        return expr;
     }
 
     // 11.14 Comma Operator
 
     function parseExpression() {
-        var expr, startToken = lookahead;
+        var marker, expr, expressions, sequence, coverFormalsList, spreadFound, oldParenthesizedCount;
 
+        oldParenthesizedCount = state.parenthesizedCount;
+
+        marker = markerCreate();
         expr = parseAssignmentExpression();
+        expressions = [ expr ];
 
         if (match(',')) {
-            expr = delegate.createSequenceExpression([ expr ]);
-
             while (index < length) {
                 if (!match(',')) {
                     break;
                 }
+
                 lex();
-                expr.expressions.push(parseAssignmentExpression());
+                expr = parseSpreadOrAssignmentExpression();
+                expressions.push(expr);
+
+                if (expr.type === Syntax.SpreadElement) {
+                    spreadFound = true;
+                    if (!match(')')) {
+                        throwError({}, Messages.ElementAfterSpreadElement);
+                    }
+                    break;
+                }
             }
 
-            delegate.markEnd(expr, startToken);
+            sequence = markerApply(marker, delegate.createSequenceExpression(expressions));
         }
 
-        return expr;
+        if (match('=>')) {
+            // Do not allow nested parentheses on the LHS of the =>.
+            if (state.parenthesizedCount === oldParenthesizedCount || state.parenthesizedCount === (oldParenthesizedCount + 1)) {
+                expr = expr.type === Syntax.SequenceExpression ? expr.expressions : expressions;
+                coverFormalsList = reinterpretAsCoverFormalsList(expr);
+                if (coverFormalsList) {
+                    return parseArrowFunctionExpression(coverFormalsList, marker);
+                }
+            }
+            throwUnexpected(lex());
+        }
+
+        if (spreadFound && lookahead2().value !== '=>') {
+            throwError({}, Messages.IllegalSpread);
+        }
+
+        return sequence || expr;
     }
 
     // 12.1 Block
@@ -21315,45 +22769,212 @@ parseStatement: true, parseSourceElement: true */
     }
 
     function parseBlock() {
-        var block, startToken;
+        var block, marker = markerCreate();
 
-        startToken = lookahead;
         expect('{');
 
         block = parseStatementList();
 
         expect('}');
 
-        return delegate.markEnd(delegate.createBlockStatement(block), startToken);
+        return markerApply(marker, delegate.createBlockStatement(block));
     }
 
     // 12.2 Variable Statement
 
-    function parseVariableIdentifier() {
-        var token, startToken;
+    function parseObjectTypeAnnotation(nullable) {
+        var isMethod, marker, properties = [], property, propertyKey,
+            propertyTypeAnnotation;
 
-        startToken = lookahead;
-        token = lex();
+        expect('{');
+
+        while (!match('}')) {
+            marker = markerCreate();
+            propertyKey = parseObjectPropertyKey();
+            isMethod = match('(');
+            propertyTypeAnnotation = parseTypeAnnotation();
+            properties.push(markerApply(marker, delegate.createProperty(
+                'init',
+                propertyKey,
+                propertyTypeAnnotation,
+                isMethod,
+                false
+            )));
+
+            if (!match('}')) {
+                if (match(',') || match(';')) {
+                    lex();
+                } else {
+                    throwUnexpected(lookahead);
+                }
+            }
+        }
+
+        expect('}');
+
+        return delegate.createObjectTypeAnnotation(properties, nullable);
+    }
+
+    function parseVoidTypeAnnotation() {
+        var marker = markerCreate();
+        expectKeyword('void');
+        return markerApply(marker, delegate.createVoidTypeAnnotation());
+    }
+
+    function parseParametricTypeAnnotation() {
+        var marker = markerCreate(), typeIdentifier, paramTypes = [];
+
+        expect('<');
+        while (!match('>')) {
+            paramTypes.push(parseVariableIdentifier());
+            if (!match('>')) {
+                expect(',');
+            }
+        }
+        expect('>');
+
+        return markerApply(marker, delegate.createParametricTypeAnnotation(
+            paramTypes
+        ));
+    }
+
+    function parseTypeAnnotationWithoutUnions() {
+        var typeIdentifier = null, params = null, returnType = null,
+            nullable = false, marker = markerCreate(), returnTypeMarker = null,
+            parametricType, annotation;
+
+        if (match('?')) {
+            lex();
+            nullable = true;
+        }
+
+        if (match('{')) {
+            return markerApply(marker, parseObjectTypeAnnotation(nullable));
+        }
+
+        if (lookahead.type === Token.Identifier) {
+            typeIdentifier = parseVariableIdentifier();
+            if (match('<')) {
+                parametricType = parseParametricTypeAnnotation();
+            }
+        } else if (match('(')) {
+            lex();
+            params = [];
+            while (lookahead.type === Token.Identifier || match('?')) {
+                params.push(parseTypeAnnotatableIdentifier(
+                    true, /* requireTypeAnnotation */
+                    true /* canBeOptionalParam */
+                ));
+                if (!match(')')) {
+                    expect(',');
+                }
+            }
+            expect(')');
+
+            returnTypeMarker = markerCreate();
+            expect('=>');
+
+            returnType = parseTypeAnnotation(true);
+        } else {
+            if (!matchKeyword('void')) {
+                throwUnexpected(lookahead);
+            } else {
+                return markerApply(marker, parseVoidTypeAnnotation());
+            }
+        }
+
+        return markerApply(marker, delegate.createTypeAnnotation(
+            typeIdentifier,
+            parametricType,
+            params,
+            returnType,
+            nullable
+        ));
+    }
+
+    function parseUnionTypeAnnotation(types) {
+        while (match('|')) {
+            lex();
+            types.push(parseTypeAnnotationWithoutUnions());
+        }
+
+        return delegate.createUnionTypeAnnotation(
+            types
+        );
+    }
+
+    function parseTypeAnnotation(dontExpectColon) {
+        var type, marker = markerCreate();
+        if (!dontExpectColon) {
+            expect(':');
+        }
+
+        type = parseTypeAnnotationWithoutUnions(marker);
+
+        if (match('|')) {
+            type = parseUnionTypeAnnotation([type]);
+        }
+
+        return markerApply(marker, type);
+    }
+
+    function parseVariableIdentifier() {
+        var marker = markerCreate(),
+            token = lex();
 
         if (token.type !== Token.Identifier) {
             throwUnexpected(token);
         }
 
-        return delegate.markEnd(delegate.createIdentifier(token.value), startToken);
+        return markerApply(marker, delegate.createIdentifier(token.value));
+    }
+
+    function parseTypeAnnotatableIdentifier(requireTypeAnnotation, canBeOptionalParam) {
+        var marker = markerCreate(),
+            ident = parseVariableIdentifier(),
+            isOptionalParam = false;
+
+        if (canBeOptionalParam && match('?')) {
+            expect('?');
+            isOptionalParam = true;
+        }
+
+        if (requireTypeAnnotation || match(':')) {
+            ident = markerApply(marker, delegate.createTypeAnnotatedIdentifier(
+                ident,
+                parseTypeAnnotation()
+            ));
+        }
+
+        if (isOptionalParam) {
+            ident = markerApply(marker, delegate.createOptionalParameter(ident));
+        }
+
+        return ident;
     }
 
     function parseVariableDeclaration(kind) {
-        var init = null, id, startToken;
-
-        startToken = lookahead;
-        id = parseVariableIdentifier();
-
-        // 12.2.1
-        if (strict && isRestrictedWord(id.name)) {
-            throwErrorTolerant({}, Messages.StrictVarName);
+        var id,
+            marker = markerCreate(),
+            init = null;
+        if (match('{')) {
+            id = parseObjectInitialiser();
+            reinterpretAsAssignmentBindingPattern(id);
+        } else if (match('[')) {
+            id = parseArrayInitialiser();
+            reinterpretAsAssignmentBindingPattern(id);
+        } else {
+            id = state.allowKeyword ? parseNonComputedProperty() : parseTypeAnnotatableIdentifier();
+            // 12.2.1
+            if (strict && isRestrictedWord(id.name)) {
+                throwErrorTolerant({}, Messages.StrictVarName);
+            }
         }
 
         if (kind === 'const') {
+            if (!match('=')) {
+                throwError({}, Messages.NoUnintializedConst);
+            }
             expect('=');
             init = parseAssignmentExpression();
         } else if (match('=')) {
@@ -21361,7 +22982,7 @@ parseStatement: true, parseSourceElement: true */
             init = parseAssignmentExpression();
         }
 
-        return delegate.markEnd(delegate.createVariableDeclarator(id, init), startToken);
+        return markerApply(marker, delegate.createVariableDeclarator(id, init));
     }
 
     function parseVariableDeclarationList(kind) {
@@ -21379,7 +23000,7 @@ parseStatement: true, parseSourceElement: true */
     }
 
     function parseVariableStatement() {
-        var declarations;
+        var declarations, marker = markerCreate();
 
         expectKeyword('var');
 
@@ -21387,7 +23008,7 @@ parseStatement: true, parseSourceElement: true */
 
         consumeSemicolon();
 
-        return delegate.createVariableDeclaration(declarations, 'var');
+        return markerApply(marker, delegate.createVariableDeclaration(declarations, 'var'));
     }
 
     // kind may be `const` or `let`
@@ -21395,9 +23016,7 @@ parseStatement: true, parseSourceElement: true */
     // see http://wiki.ecmascript.org/doku.php?id=harmony:const
     // and http://wiki.ecmascript.org/doku.php?id=harmony:let
     function parseConstLetDeclaration(kind) {
-        var declarations, startToken;
-
-        startToken = lookahead;
+        var declarations, marker = markerCreate();
 
         expectKeyword(kind);
 
@@ -21405,28 +23024,270 @@ parseStatement: true, parseSourceElement: true */
 
         consumeSemicolon();
 
-        return delegate.markEnd(delegate.createVariableDeclaration(declarations, kind), startToken);
+        return markerApply(marker, delegate.createVariableDeclaration(declarations, kind));
+    }
+
+    // people.mozilla.org/~jorendorff/es6-draft.html
+
+    function parseModuleSpecifier() {
+        var marker = markerCreate(),
+            specifier;
+
+        if (lookahead.type !== Token.StringLiteral) {
+            throwError({}, Messages.InvalidModuleSpecifier);
+        }
+        specifier = delegate.createModuleSpecifier(lookahead);
+        lex();
+        return markerApply(marker, specifier);
+    }
+
+    function parseExportBatchSpecifier() {
+        var marker = markerCreate();
+        expect('*');
+        return markerApply(marker, delegate.createExportBatchSpecifier());
+    }
+
+    function parseExportSpecifier() {
+        var id, name = null, marker = markerCreate(), from;
+        if (matchKeyword('default')) {
+            lex();
+            id = markerApply(marker, delegate.createIdentifier('default'));
+            // export {default} from "something";
+        } else {
+            id = parseVariableIdentifier();
+        }
+        if (matchContextualKeyword('as')) {
+            lex();
+            name = parseNonComputedProperty();
+        }
+
+        return markerApply(marker, delegate.createExportSpecifier(id, name));
+    }
+
+    function parseExportDeclaration() {
+        var backtrackToken, id, previousAllowKeyword, declaration = null,
+            isExportFromIdentifier,
+            src = null, specifiers = [],
+            marker = markerCreate();
+
+        expectKeyword('export');
+
+        if (matchKeyword('default')) {
+            // covers:
+            // export default ...
+            lex();
+            if (matchKeyword('function') || matchKeyword('class')) {
+                backtrackToken = lookahead;
+                lex();
+                if (isIdentifierName(lookahead)) {
+                    // covers:
+                    // export default function foo () {}
+                    // export default class foo {}
+                    id = parseNonComputedProperty();
+                    rewind(backtrackToken);
+                    return markerApply(marker, delegate.createExportDeclaration(true, parseSourceElement(), [id], null));
+                }
+                // covers:
+                // export default function () {}
+                // export default class {}
+                rewind(backtrackToken);
+                switch (lookahead.value) {
+                case 'class':
+                    return markerApply(marker, delegate.createExportDeclaration(true, parseClassExpression(), [], null));
+                case 'function':
+                    return markerApply(marker, delegate.createExportDeclaration(true, parseFunctionExpression(), [], null));
+                }
+            }
+
+            if (matchContextualKeyword('from')) {
+                throwError({}, Messages.UnexpectedToken, lookahead.value);
+            }
+
+            // covers:
+            // export default {};
+            // export default [];
+            if (match('{')) {
+                declaration = parseObjectInitialiser();
+            } else if (match('[')) {
+                declaration = parseArrayInitialiser();
+            } else {
+                declaration = parseAssignmentExpression();
+            }
+            consumeSemicolon();
+            return markerApply(marker, delegate.createExportDeclaration(true, declaration, [], null));
+        }
+
+        // non-default export
+        if (lookahead.type === Token.Keyword) {
+            // covers:
+            // export var f = 1;
+            switch (lookahead.value) {
+            case 'let':
+            case 'const':
+            case 'var':
+            case 'class':
+            case 'function':
+                return markerApply(marker, delegate.createExportDeclaration(false, parseSourceElement(), specifiers, null));
+            }
+        }
+
+        if (match('*')) {
+            // covers:
+            // export * from "foo";
+            specifiers.push(parseExportBatchSpecifier());
+
+            if (!matchContextualKeyword('from')) {
+                throwError({}, lookahead.value ?
+                        Messages.UnexpectedToken : Messages.MissingFromClause, lookahead.value);
+            }
+            lex();
+            src = parseModuleSpecifier();
+            consumeSemicolon();
+
+            return markerApply(marker, delegate.createExportDeclaration(false, null, specifiers, src));
+        }
+
+        expect('{');
+        do {
+            isExportFromIdentifier = isExportFromIdentifier || matchKeyword('default');
+            specifiers.push(parseExportSpecifier());
+        } while (match(',') && lex());
+        expect('}');
+
+        if (matchContextualKeyword('from')) {
+            // covering:
+            // export {default} from "foo";
+            // export {foo} from "foo";
+            lex();
+            src = parseModuleSpecifier();
+            consumeSemicolon();
+        } else if (isExportFromIdentifier) {
+            // covering:
+            // export {default}; // missing fromClause
+            throwError({}, lookahead.value ?
+                    Messages.UnexpectedToken : Messages.MissingFromClause, lookahead.value);
+        } else {
+            // cover
+            // export {foo};
+            consumeSemicolon();
+        }
+        return markerApply(marker, delegate.createExportDeclaration(false, declaration, specifiers, src));
+    }
+
+
+    function parseImportSpecifier() {
+        // import {<foo as bar>} ...;
+        var id, name = null, marker = markerCreate();
+
+        id = parseNonComputedProperty();
+        if (matchContextualKeyword('as')) {
+            lex();
+            name = parseVariableIdentifier();
+        }
+
+        return markerApply(marker, delegate.createImportSpecifier(id, name));
+    }
+
+    function parseNamedImports() {
+        var specifiers = [];
+        // {foo, bar as bas}
+        expect('{');
+        do {
+            specifiers.push(parseImportSpecifier());
+        } while (match(',') && lex());
+        expect('}');
+        return specifiers;
+    }
+
+    function parseImportDefaultSpecifier() {
+        // import <foo> ...;
+        var id, marker = markerCreate();
+
+        id = parseNonComputedProperty();
+
+        return markerApply(marker, delegate.createImportDefaultSpecifier(id));
+    }
+
+    function parseImportNamespaceSpecifier() {
+        // import <* as foo> ...;
+        var id, marker = markerCreate();
+
+        expect('*');
+        if (!matchContextualKeyword('as')) {
+            throwError({}, Messages.NoAsAfterImportNamespace);
+        }
+        lex();
+        id = parseNonComputedProperty();
+
+        return markerApply(marker, delegate.createImportNamespaceSpecifier(id));
+    }
+
+    function parseImportDeclaration() {
+        var specifiers, src, marker = markerCreate();
+
+        expectKeyword('import');
+        specifiers = [];
+
+        if (lookahead.type === Token.StringLiteral) {
+            // covers:
+            // import "foo";
+            src = parseModuleSpecifier();
+            consumeSemicolon();
+            return markerApply(marker, delegate.createImportDeclaration(specifiers, src));
+        }
+
+        if (!matchKeyword('default') && isIdentifierName(lookahead)) {
+            // covers:
+            // import foo
+            // import foo, ...
+            specifiers.push(parseImportDefaultSpecifier());
+            if (match(',')) {
+                lex();
+            }
+        }
+        if (match('*')) {
+            // covers:
+            // import foo, * as foo
+            // import * as foo
+            specifiers.push(parseImportNamespaceSpecifier());
+        } else if (match('{')) {
+            // covers:
+            // import foo, {bar}
+            // import {bar}
+            specifiers = specifiers.concat(parseNamedImports());
+        }
+
+        if (!matchContextualKeyword('from')) {
+            throwError({}, lookahead.value ?
+                    Messages.UnexpectedToken : Messages.MissingFromClause, lookahead.value);
+        }
+        lex();
+        src = parseModuleSpecifier();
+        consumeSemicolon();
+
+        return markerApply(marker, delegate.createImportDeclaration(specifiers, src));
     }
 
     // 12.3 Empty Statement
 
     function parseEmptyStatement() {
+        var marker = markerCreate();
         expect(';');
-        return delegate.createEmptyStatement();
+        return markerApply(marker, delegate.createEmptyStatement());
     }
 
     // 12.4 Expression Statement
 
     function parseExpressionStatement() {
-        var expr = parseExpression();
+        var marker = markerCreate(), expr = parseExpression();
         consumeSemicolon();
-        return delegate.createExpressionStatement(expr);
+        return markerApply(marker, delegate.createExpressionStatement(expr));
     }
 
     // 12.5 If statement
 
     function parseIfStatement() {
-        var test, consequent, alternate;
+        var test, consequent, alternate, marker = markerCreate();
 
         expectKeyword('if');
 
@@ -21445,13 +23306,13 @@ parseStatement: true, parseSourceElement: true */
             alternate = null;
         }
 
-        return delegate.createIfStatement(test, consequent, alternate);
+        return markerApply(marker, delegate.createIfStatement(test, consequent, alternate));
     }
 
     // 12.6 Iteration Statements
 
     function parseDoWhileStatement() {
-        var body, test, oldInIteration;
+        var body, test, oldInIteration, marker = markerCreate();
 
         expectKeyword('do');
 
@@ -21474,11 +23335,11 @@ parseStatement: true, parseSourceElement: true */
             lex();
         }
 
-        return delegate.createDoWhileStatement(body, test);
+        return markerApply(marker, delegate.createDoWhileStatement(body, test));
     }
 
     function parseWhileStatement() {
-        var test, body, oldInIteration;
+        var test, body, oldInIteration, marker = markerCreate();
 
         expectKeyword('while');
 
@@ -21495,54 +23356,65 @@ parseStatement: true, parseSourceElement: true */
 
         state.inIteration = oldInIteration;
 
-        return delegate.createWhileStatement(test, body);
+        return markerApply(marker, delegate.createWhileStatement(test, body));
     }
 
     function parseForVariableDeclaration() {
-        var token, declarations, startToken;
+        var marker = markerCreate(),
+            token = lex(),
+            declarations = parseVariableDeclarationList();
 
-        startToken = lookahead;
-        token = lex();
-        declarations = parseVariableDeclarationList();
-
-        return delegate.markEnd(delegate.createVariableDeclaration(declarations, token.value), startToken);
+        return markerApply(marker, delegate.createVariableDeclaration(declarations, token.value));
     }
 
-    function parseForStatement() {
-        var init, test, update, left, right, body, oldInIteration;
-
+    function parseForStatement(opts) {
+        var init, test, update, left, right, body, operator, oldInIteration,
+            marker = markerCreate();
         init = test = update = null;
-
         expectKeyword('for');
 
+        // http://wiki.ecmascript.org/doku.php?id=proposals:iterators_and_generators&s=each
+        if (matchContextualKeyword('each')) {
+            throwError({}, Messages.EachNotAllowed);
+        }
+
         expect('(');
 
         if (match(';')) {
             lex();
         } else {
-            if (matchKeyword('var') || matchKeyword('let')) {
+            if (matchKeyword('var') || matchKeyword('let') || matchKeyword('const')) {
                 state.allowIn = false;
                 init = parseForVariableDeclaration();
                 state.allowIn = true;
 
-                if (init.declarations.length === 1 && matchKeyword('in')) {
-                    lex();
-                    left = init;
-                    right = parseExpression();
-                    init = null;
+                if (init.declarations.length === 1) {
+                    if (matchKeyword('in') || matchContextualKeyword('of')) {
+                        operator = lookahead;
+                        if (!((operator.value === 'in' || init.kind !== 'var') && init.declarations[0].init)) {
+                            lex();
+                            left = init;
+                            right = parseExpression();
+                            init = null;
+                        }
+                    }
                 }
             } else {
                 state.allowIn = false;
                 init = parseExpression();
                 state.allowIn = true;
 
-                if (matchKeyword('in')) {
+                if (matchContextualKeyword('of')) {
+                    operator = lex();
+                    left = init;
+                    right = parseExpression();
+                    init = null;
+                } else if (matchKeyword('in')) {
                     // LeftHandSideExpression
-                    if (!isLeftHandSide(init)) {
-                        throwErrorTolerant({}, Messages.InvalidLHSInForIn);
+                    if (!isAssignableLeftHandSide(init)) {
+                        throwError({}, Messages.InvalidLHSInForIn);
                     }
-
-                    lex();
+                    operator = lex();
                     left = init;
                     right = parseExpression();
                     init = null;
@@ -21571,31 +23443,38 @@ parseStatement: true, parseSourceElement: true */
         oldInIteration = state.inIteration;
         state.inIteration = true;
 
-        body = parseStatement();
+        if (!(opts !== undefined && opts.ignoreBody)) {
+            body = parseStatement();
+        }
 
         state.inIteration = oldInIteration;
 
-        return (typeof left === 'undefined') ?
-                delegate.createForStatement(init, test, update, body) :
-                delegate.createForInStatement(left, right, body);
+        if (typeof left === 'undefined') {
+            return markerApply(marker, delegate.createForStatement(init, test, update, body));
+        }
+
+        if (operator.value === 'in') {
+            return markerApply(marker, delegate.createForInStatement(left, right, body));
+        }
+        return markerApply(marker, delegate.createForOfStatement(left, right, body));
     }
 
     // 12.7 The continue statement
 
     function parseContinueStatement() {
-        var label = null, key;
+        var label = null, key, marker = markerCreate();
 
         expectKeyword('continue');
 
         // Optimize the most common form: 'continue;'.
-        if (source.charCodeAt(index) === 0x3B) {
+        if (source.charCodeAt(index) === 59) {
             lex();
 
             if (!state.inIteration) {
                 throwError({}, Messages.IllegalContinue);
             }
 
-            return delegate.createContinueStatement(null);
+            return markerApply(marker, delegate.createContinueStatement(null));
         }
 
         if (peekLineTerminator()) {
@@ -21603,7 +23482,7 @@ parseStatement: true, parseSourceElement: true */
                 throwError({}, Messages.IllegalContinue);
             }
 
-            return delegate.createContinueStatement(null);
+            return markerApply(marker, delegate.createContinueStatement(null));
         }
 
         if (lookahead.type === Token.Identifier) {
@@ -21621,25 +23500,25 @@ parseStatement: true, parseSourceElement: true */
             throwError({}, Messages.IllegalContinue);
         }
 
-        return delegate.createContinueStatement(label);
+        return markerApply(marker, delegate.createContinueStatement(label));
     }
 
     // 12.8 The break statement
 
     function parseBreakStatement() {
-        var label = null, key;
+        var label = null, key, marker = markerCreate();
 
         expectKeyword('break');
 
-        // Catch the very common case first: immediately a semicolon (U+003B).
-        if (source.charCodeAt(index) === 0x3B) {
+        // Catch the very common case first: immediately a semicolon (char #59).
+        if (source.charCodeAt(index) === 59) {
             lex();
 
             if (!(state.inIteration || state.inSwitch)) {
                 throwError({}, Messages.IllegalBreak);
             }
 
-            return delegate.createBreakStatement(null);
+            return markerApply(marker, delegate.createBreakStatement(null));
         }
 
         if (peekLineTerminator()) {
@@ -21647,7 +23526,7 @@ parseStatement: true, parseSourceElement: true */
                 throwError({}, Messages.IllegalBreak);
             }
 
-            return delegate.createBreakStatement(null);
+            return markerApply(marker, delegate.createBreakStatement(null));
         }
 
         if (lookahead.type === Token.Identifier) {
@@ -21665,13 +23544,13 @@ parseStatement: true, parseSourceElement: true */
             throwError({}, Messages.IllegalBreak);
         }
 
-        return delegate.createBreakStatement(label);
+        return markerApply(marker, delegate.createBreakStatement(label));
     }
 
     // 12.9 The return statement
 
     function parseReturnStatement() {
-        var argument = null;
+        var argument = null, marker = markerCreate();
 
         expectKeyword('return');
 
@@ -21680,16 +23559,16 @@ parseStatement: true, parseSourceElement: true */
         }
 
         // 'return' followed by a space and an identifier is very common.
-        if (source.charCodeAt(index) === 0x20) {
+        if (source.charCodeAt(index) === 32) {
             if (isIdentifierStart(source.charCodeAt(index + 1))) {
                 argument = parseExpression();
                 consumeSemicolon();
-                return delegate.createReturnStatement(argument);
+                return markerApply(marker, delegate.createReturnStatement(argument));
             }
         }
 
         if (peekLineTerminator()) {
-            return delegate.createReturnStatement(null);
+            return markerApply(marker, delegate.createReturnStatement(null));
         }
 
         if (!match(';')) {
@@ -21700,17 +23579,15 @@ parseStatement: true, parseSourceElement: true */
 
         consumeSemicolon();
 
-        return delegate.createReturnStatement(argument);
+        return markerApply(marker, delegate.createReturnStatement(argument));
     }
 
     // 12.10 The with statement
 
     function parseWithStatement() {
-        var object, body;
+        var object, body, marker = markerCreate();
 
         if (strict) {
-            // TODO(ikarienator): Should we update the test cases instead?
-            skipComment();
             throwErrorTolerant({}, Messages.StrictModeWith);
         }
 
@@ -21724,15 +23601,17 @@ parseStatement: true, parseSourceElement: true */
 
         body = parseStatement();
 
-        return delegate.createWithStatement(object, body);
+        return markerApply(marker, delegate.createWithStatement(object, body));
     }
 
     // 12.10 The swith statement
 
     function parseSwitchCase() {
-        var test, consequent = [], statement, startToken;
+        var test,
+            consequent = [],
+            sourceElement,
+            marker = markerCreate();
 
-        startToken = lookahead;
         if (matchKeyword('default')) {
             lex();
             test = null;
@@ -21746,15 +23625,18 @@ parseStatement: true, parseSourceElement: true */
             if (match('}') || matchKeyword('default') || matchKeyword('case')) {
                 break;
             }
-            statement = parseStatement();
-            consequent.push(statement);
+            sourceElement = parseSourceElement();
+            if (typeof sourceElement === 'undefined') {
+                break;
+            }
+            consequent.push(sourceElement);
         }
 
-        return delegate.markEnd(delegate.createSwitchCase(test, consequent), startToken);
+        return markerApply(marker, delegate.createSwitchCase(test, consequent));
     }
 
     function parseSwitchStatement() {
-        var discriminant, cases, clause, oldInSwitch, defaultFound;
+        var discriminant, cases, clause, oldInSwitch, defaultFound, marker = markerCreate();
 
         expectKeyword('switch');
 
@@ -21770,7 +23652,7 @@ parseStatement: true, parseSourceElement: true */
 
         if (match('}')) {
             lex();
-            return delegate.createSwitchStatement(discriminant, cases);
+            return markerApply(marker, delegate.createSwitchStatement(discriminant, cases));
         }
 
         oldInSwitch = state.inSwitch;
@@ -21795,13 +23677,13 @@ parseStatement: true, parseSourceElement: true */
 
         expect('}');
 
-        return delegate.createSwitchStatement(discriminant, cases);
+        return markerApply(marker, delegate.createSwitchStatement(discriminant, cases));
     }
 
     // 12.13 The throw statement
 
     function parseThrowStatement() {
-        var argument;
+        var argument, marker = markerCreate();
 
         expectKeyword('throw');
 
@@ -21813,15 +23695,14 @@ parseStatement: true, parseSourceElement: true */
 
         consumeSemicolon();
 
-        return delegate.createThrowStatement(argument);
+        return markerApply(marker, delegate.createThrowStatement(argument));
     }
 
     // 12.14 The try statement
 
     function parseCatchClause() {
-        var param, body, startToken;
+        var param, body, marker = markerCreate();
 
-        startToken = lookahead;
         expectKeyword('catch');
 
         expect('(');
@@ -21829,19 +23710,19 @@ parseStatement: true, parseSourceElement: true */
             throwUnexpected(lookahead);
         }
 
-        param = parseVariableIdentifier();
+        param = parseExpression();
         // 12.14.1
-        if (strict && isRestrictedWord(param.name)) {
+        if (strict && param.type === Syntax.Identifier && isRestrictedWord(param.name)) {
             throwErrorTolerant({}, Messages.StrictCatchVariable);
         }
 
         expect(')');
         body = parseBlock();
-        return delegate.markEnd(delegate.createCatchClause(param, body), startToken);
+        return markerApply(marker, delegate.createCatchClause(param, body));
     }
 
     function parseTryStatement() {
-        var block, handlers = [], finalizer = null;
+        var block, handlers = [], finalizer = null, marker = markerCreate();
 
         expectKeyword('try');
 
@@ -21860,44 +23741,41 @@ parseStatement: true, parseSourceElement: true */
             throwError({}, Messages.NoCatchOrFinally);
         }
 
-        return delegate.createTryStatement(block, [], handlers, finalizer);
+        return markerApply(marker, delegate.createTryStatement(block, [], handlers, finalizer));
     }
 
     // 12.15 The debugger statement
 
     function parseDebuggerStatement() {
+        var marker = markerCreate();
         expectKeyword('debugger');
 
         consumeSemicolon();
 
-        return delegate.createDebuggerStatement();
+        return markerApply(marker, delegate.createDebuggerStatement());
     }
 
     // 12 Statements
 
     function parseStatement() {
         var type = lookahead.type,
+            marker,
             expr,
             labeledBody,
-            key,
-            startToken;
+            key;
 
         if (type === Token.EOF) {
             throwUnexpected(lookahead);
         }
 
-        if (type === Token.Punctuator && lookahead.value === '{') {
-            return parseBlock();
-        }
-
-        startToken = lookahead;
-
         if (type === Token.Punctuator) {
             switch (lookahead.value) {
             case ';':
-                return delegate.markEnd(parseEmptyStatement(), startToken);
+                return parseEmptyStatement();
+            case '{':
+                return parseBlock();
             case '(':
-                return delegate.markEnd(parseExpressionStatement(), startToken);
+                return parseExpressionStatement();
             default:
                 break;
             }
@@ -21906,38 +23784,45 @@ parseStatement: true, parseSourceElement: true */
         if (type === Token.Keyword) {
             switch (lookahead.value) {
             case 'break':
-                return delegate.markEnd(parseBreakStatement(), startToken);
+                return parseBreakStatement();
             case 'continue':
-                return delegate.markEnd(parseContinueStatement(), startToken);
+                return parseContinueStatement();
             case 'debugger':
-                return delegate.markEnd(parseDebuggerStatement(), startToken);
+                return parseDebuggerStatement();
             case 'do':
-                return delegate.markEnd(parseDoWhileStatement(), startToken);
+                return parseDoWhileStatement();
             case 'for':
-                return delegate.markEnd(parseForStatement(), startToken);
+                return parseForStatement();
             case 'function':
-                return delegate.markEnd(parseFunctionDeclaration(), startToken);
+                return parseFunctionDeclaration();
+            case 'class':
+                return parseClassDeclaration();
             case 'if':
-                return delegate.markEnd(parseIfStatement(), startToken);
+                return parseIfStatement();
             case 'return':
-                return delegate.markEnd(parseReturnStatement(), startToken);
+                return parseReturnStatement();
             case 'switch':
-                return delegate.markEnd(parseSwitchStatement(), startToken);
+                return parseSwitchStatement();
             case 'throw':
-                return delegate.markEnd(parseThrowStatement(), startToken);
+                return parseThrowStatement();
             case 'try':
-                return delegate.markEnd(parseTryStatement(), startToken);
+                return parseTryStatement();
             case 'var':
-                return delegate.markEnd(parseVariableStatement(), startToken);
+                return parseVariableStatement();
             case 'while':
-                return delegate.markEnd(parseWhileStatement(), startToken);
+                return parseWhileStatement();
             case 'with':
-                return delegate.markEnd(parseWithStatement(), startToken);
+                return parseWithStatement();
             default:
                 break;
             }
         }
 
+        if (matchAsyncFuncExprOrDecl()) {
+            return parseFunctionDeclaration();
+        }
+
+        marker = markerCreate();
         expr = parseExpression();
 
         // 12.12 Labelled Statements
@@ -21952,21 +23837,28 @@ parseStatement: true, parseSourceElement: true */
             state.labelSet[key] = true;
             labeledBody = parseStatement();
             delete state.labelSet[key];
-            return delegate.markEnd(delegate.createLabeledStatement(expr, labeledBody), startToken);
+            return markerApply(marker, delegate.createLabeledStatement(expr, labeledBody));
         }
 
         consumeSemicolon();
 
-        return delegate.markEnd(delegate.createExpressionStatement(expr), startToken);
+        return markerApply(marker, delegate.createExpressionStatement(expr));
     }
 
     // 13 Function Definition
 
+    function parseConciseBody() {
+        if (match('{')) {
+            return parseFunctionSourceElements();
+        }
+        return parseAssignmentExpression();
+    }
+
     function parseFunctionSourceElements() {
         var sourceElement, sourceElements = [], token, directive, firstRestricted,
-            oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody, startToken;
+            oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody, oldParenthesizedCount,
+            marker = markerCreate();
 
-        startToken = lookahead;
         expect('{');
 
         while (index < length) {
@@ -21981,7 +23873,7 @@ parseStatement: true, parseSourceElement: true */
                 // this is not directive
                 break;
             }
-            directive = source.slice(token.start + 1, token.end - 1);
+            directive = source.slice(token.range[0] + 1, token.range[1] - 1);
             if (directive === 'use strict') {
                 strict = true;
                 if (firstRestricted) {
@@ -21998,11 +23890,13 @@ parseStatement: true, parseSourceElement: true */
         oldInIteration = state.inIteration;
         oldInSwitch = state.inSwitch;
         oldInFunctionBody = state.inFunctionBody;
+        oldParenthesizedCount = state.parenthesizedCount;
 
         state.labelSet = {};
         state.inIteration = false;
         state.inSwitch = false;
         state.inFunctionBody = true;
+        state.parenthesizedCount = 0;
 
         while (index < length) {
             if (match('}')) {
@@ -22021,44 +23915,107 @@ parseStatement: true, parseSourceElement: true */
         state.inIteration = oldInIteration;
         state.inSwitch = oldInSwitch;
         state.inFunctionBody = oldInFunctionBody;
+        state.parenthesizedCount = oldParenthesizedCount;
 
-        return delegate.markEnd(delegate.createBlockStatement(sourceElements), startToken);
+        return markerApply(marker, delegate.createBlockStatement(sourceElements));
+    }
+
+    function validateParam(options, param, name) {
+        var key = '$' + name;
+        if (strict) {
+            if (isRestrictedWord(name)) {
+                options.stricted = param;
+                options.message = Messages.StrictParamName;
+            }
+            if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {
+                options.stricted = param;
+                options.message = Messages.StrictParamDupe;
+            }
+        } else if (!options.firstRestricted) {
+            if (isRestrictedWord(name)) {
+                options.firstRestricted = param;
+                options.message = Messages.StrictParamName;
+            } else if (isStrictModeReservedWord(name)) {
+                options.firstRestricted = param;
+                options.message = Messages.StrictReservedWord;
+            } else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {
+                options.firstRestricted = param;
+                options.message = Messages.StrictParamDupe;
+            }
+        }
+        options.paramSet[key] = true;
+    }
+
+    function parseParam(options) {
+        var token, rest, param, def;
+
+        token = lookahead;
+        if (token.value === '...') {
+            token = lex();
+            rest = true;
+        }
+
+        if (match('[')) {
+            param = parseArrayInitialiser();
+            reinterpretAsDestructuredParameter(options, param);
+        } else if (match('{')) {
+            if (rest) {
+                throwError({}, Messages.ObjectPatternAsRestParameter);
+            }
+            param = parseObjectInitialiser();
+            reinterpretAsDestructuredParameter(options, param);
+        } else {
+            // Typing rest params is awkward, so punting on that for now
+            param =
+                rest
+                ? parseVariableIdentifier()
+                : parseTypeAnnotatableIdentifier(
+                    false, /* requireTypeAnnotation */
+                    true /* canBeOptionalParam */
+                );
+
+            validateParam(options, token, token.value);
+        }
+
+        if (match('=')) {
+            if (rest) {
+                throwErrorTolerant(lookahead, Messages.DefaultRestParameter);
+            }
+            lex();
+            def = parseAssignmentExpression();
+            ++options.defaultCount;
+        }
+
+        if (rest) {
+            if (!match(')')) {
+                throwError({}, Messages.ParameterAfterRestParameter);
+            }
+            options.rest = param;
+            return false;
+        }
+
+        options.params.push(param);
+        options.defaults.push(def);
+        return !match(')');
     }
 
     function parseParams(firstRestricted) {
-        var param, params = [], token, stricted, paramSet, key, message;
+        var options, marker = markerCreate();
+
+        options = {
+            params: [],
+            defaultCount: 0,
+            defaults: [],
+            rest: null,
+            firstRestricted: firstRestricted
+        };
+
         expect('(');
 
         if (!match(')')) {
-            paramSet = {};
+            options.paramSet = {};
             while (index < length) {
-                token = lookahead;
-                param = parseVariableIdentifier();
-                key = '$' + token.value;
-                if (strict) {
-                    if (isRestrictedWord(token.value)) {
-                        stricted = token;
-                        message = Messages.StrictParamName;
-                    }
-                    if (Object.prototype.hasOwnProperty.call(paramSet, key)) {
-                        stricted = token;
-                        message = Messages.StrictParamDupe;
-                    }
-                } else if (!firstRestricted) {
-                    if (isRestrictedWord(token.value)) {
-                        firstRestricted = token;
-                        message = Messages.StrictParamName;
-                    } else if (isStrictModeReservedWord(token.value)) {
-                        firstRestricted = token;
-                        message = Messages.StrictReservedWord;
-                    } else if (Object.prototype.hasOwnProperty.call(paramSet, key)) {
-                        firstRestricted = token;
-                        message = Messages.StrictParamDupe;
-                    }
-                }
-                params.push(param);
-                paramSet[key] = true;
-                if (match(')')) {
+                if (!parseParam(options)) {
                     break;
                 }
                 expect(',');
@@ -22067,22 +24024,44 @@ parseStatement: true, parseSourceElement: true */
 
         expect(')');
 
-        return {
-            params: params,
-            stricted: stricted,
-            firstRestricted: firstRestricted,
-            message: message
-        };
+        if (options.defaultCount === 0) {
+            options.defaults = [];
+        }
+
+        if (match(':')) {
+            options.returnType = parseTypeAnnotation();
+        }
+
+        return markerApply(marker, options);
     }
 
     function parseFunctionDeclaration() {
-        var id, params = [], body, token, stricted, tmp, firstRestricted, message, previousStrict, startToken;
+        var id, body, token, tmp, firstRestricted, message, generator, isAsync,
+            previousStrict, previousYieldAllowed, previousAwaitAllowed,
+            marker = markerCreate(), parametricType;
 
-        startToken = lookahead;
+        isAsync = false;
+        if (matchAsync()) {
+            lex();
+            isAsync = true;
+        }
 
         expectKeyword('function');
+
+        generator = false;
+        if (match('*')) {
+            lex();
+            generator = true;
+        }
+
         token = lookahead;
+
         id = parseVariableIdentifier();
+
+        if (match('<')) {
+            parametricType = parseParametricTypeAnnotation();
+        }
+
         if (strict) {
             if (isRestrictedWord(token.value)) {
                 throwErrorTolerant(token, Messages.StrictFunctionName);
@@ -22098,72 +24077,376 @@ parseStatement: true, parseSourceElement: true */
         }
 
         tmp = parseParams(firstRestricted);
-        params = tmp.params;
-        stricted = tmp.stricted;
         firstRestricted = tmp.firstRestricted;
         if (tmp.message) {
             message = tmp.message;
         }
 
         previousStrict = strict;
+        previousYieldAllowed = state.yieldAllowed;
+        state.yieldAllowed = generator;
+        previousAwaitAllowed = state.awaitAllowed;
+        state.awaitAllowed = isAsync;
+
         body = parseFunctionSourceElements();
+
         if (strict && firstRestricted) {
             throwError(firstRestricted, message);
         }
-        if (strict && stricted) {
-            throwErrorTolerant(stricted, message);
+        if (strict && tmp.stricted) {
+            throwErrorTolerant(tmp.stricted, message);
         }
         strict = previousStrict;
+        state.yieldAllowed = previousYieldAllowed;
+        state.awaitAllowed = previousAwaitAllowed;
 
-        return delegate.markEnd(delegate.createFunctionDeclaration(id, params, [], body), startToken);
+        return markerApply(
+            marker,
+            delegate.createFunctionDeclaration(
+                id,
+                tmp.params,
+                tmp.defaults,
+                body,
+                tmp.rest,
+                generator,
+                false,
+                isAsync,
+                tmp.returnType,
+                parametricType
+            )
+        );
     }
 
     function parseFunctionExpression() {
-        var token, id = null, stricted, firstRestricted, message, tmp, params = [], body, previousStrict, startToken;
+        var token, id = null, firstRestricted, message, tmp, body, generator, isAsync,
+            previousStrict, previousYieldAllowed, previousAwaitAllowed,
+            marker = markerCreate(), parametricType;
+
+        isAsync = false;
+        if (matchAsync()) {
+            lex();
+            isAsync = true;
+        }
 
-        startToken = lookahead;
         expectKeyword('function');
 
+        generator = false;
+
+        if (match('*')) {
+            lex();
+            generator = true;
+        }
+
         if (!match('(')) {
-            token = lookahead;
-            id = parseVariableIdentifier();
-            if (strict) {
-                if (isRestrictedWord(token.value)) {
-                    throwErrorTolerant(token, Messages.StrictFunctionName);
-                }
-            } else {
-                if (isRestrictedWord(token.value)) {
-                    firstRestricted = token;
-                    message = Messages.StrictFunctionName;
-                } else if (isStrictModeReservedWord(token.value)) {
-                    firstRestricted = token;
-                    message = Messages.StrictReservedWord;
+            if (!match('<')) {
+                token = lookahead;
+                id = parseVariableIdentifier();
+
+                if (strict) {
+                    if (isRestrictedWord(token.value)) {
+                        throwErrorTolerant(token, Messages.StrictFunctionName);
+                    }
+                } else {
+                    if (isRestrictedWord(token.value)) {
+                        firstRestricted = token;
+                        message = Messages.StrictFunctionName;
+                    } else if (isStrictModeReservedWord(token.value)) {
+                        firstRestricted = token;
+                        message = Messages.StrictReservedWord;
+                    }
                 }
             }
+
+            if (match('<')) {
+                parametricType = parseParametricTypeAnnotation();
+            }
         }
 
         tmp = parseParams(firstRestricted);
-        params = tmp.params;
-        stricted = tmp.stricted;
         firstRestricted = tmp.firstRestricted;
         if (tmp.message) {
             message = tmp.message;
         }
 
         previousStrict = strict;
+        previousYieldAllowed = state.yieldAllowed;
+        state.yieldAllowed = generator;
+        previousAwaitAllowed = state.awaitAllowed;
+        state.awaitAllowed = isAsync;
+
         body = parseFunctionSourceElements();
+
         if (strict && firstRestricted) {
             throwError(firstRestricted, message);
         }
-        if (strict && stricted) {
-            throwErrorTolerant(stricted, message);
+        if (strict && tmp.stricted) {
+            throwErrorTolerant(tmp.stricted, message);
         }
         strict = previousStrict;
+        state.yieldAllowed = previousYieldAllowed;
+        state.awaitAllowed = previousAwaitAllowed;
 
-        return delegate.markEnd(delegate.createFunctionExpression(id, params, [], body), startToken);
+        return markerApply(
+            marker,
+            delegate.createFunctionExpression(
+                id,
+                tmp.params,
+                tmp.defaults,
+                body,
+                tmp.rest,
+                generator,
+                false,
+                isAsync,
+                tmp.returnType,
+                parametricType
+            )
+        );
     }
 
-    // 14 Program
+    function parseYieldExpression() {
+        var delegateFlag, expr, marker = markerCreate();
+
+        expectKeyword('yield', !strict);
+
+        delegateFlag = false;
+        if (match('*')) {
+            lex();
+            delegateFlag = true;
+        }
+
+        expr = parseAssignmentExpression();
+
+        return markerApply(marker, delegate.createYieldExpression(expr, delegateFlag));
+    }
+
+    function parseAwaitExpression() {
+        var expr, marker = markerCreate();
+        expectContextualKeyword('await');
+        expr = parseAssignmentExpression();
+        return markerApply(marker, delegate.createAwaitExpression(expr));
+    }
+
+    // 14 Classes
+
+    function parseMethodDefinition(existingPropNames) {
+        var token, key, param, propType, isValidDuplicateProp = false,
+            isAsync, marker = markerCreate(), token2, parametricType,
+            parametricTypeMarker, annotationMarker;
+
+        if (lookahead.value === 'static') {
+            propType = ClassPropertyType.static;
+            lex();
+        } else {
+            propType = ClassPropertyType.prototype;
+        }
+
+        if (match('*')) {
+            lex();
+            return markerApply(marker, delegate.createMethodDefinition(
+                propType,
+                '',
+                parseObjectPropertyKey(),
+                parsePropertyMethodFunction({ generator: true })
+            ));
+        }
+
+        token = lookahead;
+        //parametricTypeMarker = markerCreate();
+        key = parseObjectPropertyKey();
+
+        if (token.value === 'get' && !match('(')) {
+            key = parseObjectPropertyKey();
+
+            // It is a syntax error if any other properties have a name
+            // duplicating this one unless they are a setter
+            if (existingPropNames[propType].hasOwnProperty(key.name)) {
+                isValidDuplicateProp =
+                    // There isn't already a getter for this prop
+                    existingPropNames[propType][key.name].get === undefined
+                    // There isn't already a data prop by this name
+                    && existingPropNames[propType][key.name].data === undefined
+                    // The only existing prop by this name is a setter
+                    && existingPropNames[propType][key.name].set !== undefined;
+                if (!isValidDuplicateProp) {
+                    throwError(key, Messages.IllegalDuplicateClassProperty);
+                }
+            } else {
+                existingPropNames[propType][key.name] = {};
+            }
+            existingPropNames[propType][key.name].get = true;
+
+            expect('(');
+            expect(')');
+            return markerApply(marker, delegate.createMethodDefinition(
+                propType,
+                'get',
+                key,
+                parsePropertyFunction({ generator: false })
+            ));
+        }
+        if (token.value === 'set' && !match('(')) {
+            key = parseObjectPropertyKey();
+
+            // It is a syntax error if any other properties have a name
+            // duplicating this one unless they are a getter
+            if (existingPropNames[propType].hasOwnProperty(key.name)) {
+                isValidDuplicateProp =
+                    // There isn't already a setter for this prop
+                    existingPropNames[propType][key.name].set === undefined
+                    // There isn't already a data prop by this name
+                    && existingPropNames[propType][key.name].data === undefined
+                    // The only existing prop by this name is a getter
+                    && existingPropNames[propType][key.name].get !== undefined;
+                if (!isValidDuplicateProp) {
+                    throwError(key, Messages.IllegalDuplicateClassProperty);
+                }
+            } else {
+                existingPropNames[propType][key.name] = {};
+            }
+            existingPropNames[propType][key.name].set = true;
+
+            expect('(');
+            token = lookahead;
+            param = [ parseTypeAnnotatableIdentifier() ];
+            expect(')');
+            return markerApply(marker, delegate.createMethodDefinition(
+                propType,
+                'set',
+                key,
+                parsePropertyFunction({ params: param, generator: false, name: token })
+            ));
+        }
+
+        if (match('<')) {
+            parametricType = parseParametricTypeAnnotation();
+        }
+
+        isAsync = token.value === 'async' && !match('(');
+        if (isAsync) {
+            key = parseObjectPropertyKey();
+        }
+
+        // It is a syntax error if any other properties have the same name as a
+        // non-getter, non-setter method
+        if (existingPropNames[propType].hasOwnProperty(key.name)) {
+            throwError(key, Messages.IllegalDuplicateClassProperty);
+        } else {
+            existingPropNames[propType][key.name] = {};
+        }
+        existingPropNames[propType][key.name].data = true;
+
+        return markerApply(marker, delegate.createMethodDefinition(
+            propType,
+            '',
+            key,
+            parsePropertyMethodFunction({
+                generator: false,
+                async: isAsync,
+                parametricType: parametricType
+            })
+        ));
+    }
+
+    function parseClassProperty(existingPropNames) {
+        var marker = markerCreate(), propertyIdentifier;
+
+        propertyIdentifier = parseTypeAnnotatableIdentifier();
+        expect(';');
+
+        return markerApply(marker, delegate.createClassProperty(
+            propertyIdentifier
+        ));
+    }
+
+    function parseClassElement(existingProps) {
+        if (match(';')) {
+            lex();
+            return;
+        }
+
+        var doubleLookahead = lookahead2();
+        if (doubleLookahead.type === Token.Punctuator) {
+            if (doubleLookahead.value === ':') {
+                return parseClassProperty(existingProps);
+            }
+        }
+
+        return parseMethodDefinition(existingProps);
+    }
+
+    function parseClassBody() {
+        var classElement, classElements = [], existingProps = {}, marker = markerCreate();
+
+        existingProps[ClassPropertyType.static] = {};
+        existingProps[ClassPropertyType.prototype] = {};
+
+        expect('{');
+
+        while (index < length) {
+            if (match('}')) {
+                break;
+            }
+            classElement = parseClassElement(existingProps);
+
+            if (typeof classElement !== 'undefined') {
+                classElements.push(classElement);
+            }
+        }
+
+        expect('}');
+
+        return markerApply(marker, delegate.createClassBody(classElements));
+    }
+
+    function parseClassExpression() {
+        var id, previousYieldAllowed, superClass = null, marker = markerCreate(),
+            parametricType;
+
+        expectKeyword('class');
+
+        if (!matchKeyword('extends') && !match('{')) {
+            id = parseVariableIdentifier();
+        }
+
+        if (match('<')) {
+            parametricType = parseParametricTypeAnnotation();
+        }
+
+        if (matchKeyword('extends')) {
+            expectKeyword('extends');
+            previousYieldAllowed = state.yieldAllowed;
+            state.yieldAllowed = false;
+            superClass = parseAssignmentExpression();
+            state.yieldAllowed = previousYieldAllowed;
+        }
+
+        return markerApply(marker, delegate.createClassExpression(id, superClass, parseClassBody(), parametricType));
+    }
+
+    function parseClassDeclaration() {
+        var id, previousYieldAllowed, superClass = null, marker = markerCreate(),
+            parametricType, superParametricType;
+
+        expectKeyword('class');
+
+        id = parseVariableIdentifier();
+
+        if (match('<')) {
+            parametricType = parseParametricTypeAnnotation();
+        }
+
+        if (matchKeyword('extends')) {
+            expectKeyword('extends');
+            previousYieldAllowed = state.yieldAllowed;
+            state.yieldAllowed = false;
+            superClass = parseAssignmentExpression();
+            state.yieldAllowed = previousYieldAllowed;
+        }
+
+        return markerApply(marker, delegate.createClassDeclaration(id, superClass, parseClassBody(), parametricType, superParametricType));
+    }
+
+    // 15 Program
 
     function parseSourceElement() {
         if (lookahead.type === Token.Keyword) {
@@ -22183,7 +24466,20 @@ parseStatement: true, parseSourceElement: true */
         }
     }
 
-    function parseSourceElements() {
+    function parseProgramElement() {
+        if (lookahead.type === Token.Keyword) {
+            switch (lookahead.value) {
+            case 'export':
+                return parseExportDeclaration();
+            case 'import':
+                return parseImportDeclaration();
+            }
+        }
+
+        return parseSourceElement();
+    }
+
+    function parseProgramElements() {
         var sourceElement, sourceElements = [], token, directive, firstRestricted;
 
         while (index < length) {
@@ -22192,13 +24488,13 @@ parseStatement: true, parseSourceElement: true */
                 break;
             }
 
-            sourceElement = parseSourceElement();
+            sourceElement = parseProgramElement();
             sourceElements.push(sourceElement);
             if (sourceElement.expression.type !== Syntax.Literal) {
                 // this is not directive
                 break;
             }
-            directive = source.slice(token.start + 1, token.end - 1);
+            directive = source.slice(token.range[0] + 1, token.range[1] - 1);
             if (directive === 'use strict') {
                 strict = true;
                 if (firstRestricted) {
@@ -22212,8 +24508,7 @@ parseStatement: true, parseSourceElement: true */
         }
 
         while (index < length) {
-            sourceElement = parseSourceElement();
-            /* istanbul ignore if */
+            sourceElement = parseProgramElement();
             if (typeof sourceElement === 'undefined') {
                 break;
             }
@@ -22223,15 +24518,917 @@ parseStatement: true, parseSourceElement: true */
     }
 
     function parseProgram() {
-        var body, startToken;
+        var body, marker = markerCreate();
+        strict = false;
+        peek();
+        body = parseProgramElements();
+        return markerApply(marker, delegate.createProgram(body));
+    }
+
+    // The following functions are needed only when the option to preserve
+    // the comments is active.
+
+    function addComment(type, value, start, end, loc) {
+        var comment;
+
+        assert(typeof start === 'number', 'Comment must have valid position');
+
+        // Because the way the actual token is scanned, often the comments
+        // (if any) are skipped twice during the lexical analysis.
+        // Thus, we need to skip adding a comment if the comment array already
+        // handled it.
+        if (state.lastCommentStart >= start) {
+            return;
+        }
+        state.lastCommentStart = start;
+
+        comment = {
+            type: type,
+            value: value
+        };
+        if (extra.range) {
+            comment.range = [start, end];
+        }
+        if (extra.loc) {
+            comment.loc = loc;
+        }
+        extra.comments.push(comment);
+        if (extra.attachComment) {
+            extra.leadingComments.push(comment);
+            extra.trailingComments.push(comment);
+        }
+    }
+
+    function scanComment() {
+        var comment, ch, loc, start, blockComment, lineComment;
+
+        comment = '';
+        blockComment = false;
+        lineComment = false;
+
+        while (index < length) {
+            ch = source[index];
+
+            if (lineComment) {
+                ch = source[index++];
+                if (isLineTerminator(ch.charCodeAt(0))) {
+                    loc.end = {
+                        line: lineNumber,
+                        column: index - lineStart - 1
+                    };
+                    lineComment = false;
+                    addComment('Line', comment, start, index - 1, loc);
+                    if (ch === '\r' && source[index] === '\n') {
+                        ++index;
+                    }
+                    ++lineNumber;
+                    lineStart = index;
+                    comment = '';
+                } else if (index >= length) {
+                    lineComment = false;
+                    comment += ch;
+                    loc.end = {
+                        line: lineNumber,
+                        column: length - lineStart
+                    };
+                    addComment('Line', comment, start, length, loc);
+                } else {
+                    comment += ch;
+                }
+            } else if (blockComment) {
+                if (isLineTerminator(ch.charCodeAt(0))) {
+                    if (ch === '\r') {
+                        ++index;
+                        comment += '\r';
+                    }
+                    if (ch !== '\r' || source[index] === '\n') {
+                        comment += source[index];
+                        ++lineNumber;
+                        ++index;
+                        lineStart = index;
+                        if (index >= length) {
+                            throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+                        }
+                    }
+                } else {
+                    ch = source[index++];
+                    if (index >= length) {
+                        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+                    }
+                    comment += ch;
+                    if (ch === '*') {
+                        ch = source[index];
+                        if (ch === '/') {
+                            comment = comment.substr(0, comment.length - 1);
+                            blockComment = false;
+                            ++index;
+                            loc.end = {
+                                line: lineNumber,
+                                column: index - lineStart
+                            };
+                            addComment('Block', comment, start, index, loc);
+                            comment = '';
+                        }
+                    }
+                }
+            } else if (ch === '/') {
+                ch = source[index + 1];
+                if (ch === '/') {
+                    loc = {
+                        start: {
+                            line: lineNumber,
+                            column: index - lineStart
+                        }
+                    };
+                    start = index;
+                    index += 2;
+                    lineComment = true;
+                    if (index >= length) {
+                        loc.end = {
+                            line: lineNumber,
+                            column: index - lineStart
+                        };
+                        lineComment = false;
+                        addComment('Line', comment, start, index, loc);
+                    }
+                } else if (ch === '*') {
+                    start = index;
+                    index += 2;
+                    blockComment = true;
+                    loc = {
+                        start: {
+                            line: lineNumber,
+                            column: index - lineStart - 2
+                        }
+                    };
+                    if (index >= length) {
+                        throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+                    }
+                } else {
+                    break;
+                }
+            } else if (isWhiteSpace(ch.charCodeAt(0))) {
+                ++index;
+            } else if (isLineTerminator(ch.charCodeAt(0))) {
+                ++index;
+                if (ch ===  '\r' && source[index] === '\n') {
+                    ++index;
+                }
+                ++lineNumber;
+                lineStart = index;
+            } else {
+                break;
+            }
+        }
+    }
+
+    // 16 XJS
+
+    XHTMLEntities = {
+        quot: '\u0022',
+        amp: '&',
+        apos: '\u0027',
+        lt: '<',
+        gt: '>',
+        nbsp: '\u00A0',
+        iexcl: '\u00A1',
+        cent: '\u00A2',
+        pound: '\u00A3',
+        curren: '\u00A4',
+        yen: '\u00A5',
+        brvbar: '\u00A6',
+        sect: '\u00A7',
+        uml: '\u00A8',
+        copy: '\u00A9',
+        ordf: '\u00AA',
+        laquo: '\u00AB',
+        not: '\u00AC',
+        shy: '\u00AD',
+        reg: '\u00AE',
+        macr: '\u00AF',
+        deg: '\u00B0',
+        plusmn: '\u00B1',
+        sup2: '\u00B2',
+        sup3: '\u00B3',
+        acute: '\u00B4',
+        micro: '\u00B5',
+        para: '\u00B6',
+        middot: '\u00B7',
+        cedil: '\u00B8',
+        sup1: '\u00B9',
+        ordm: '\u00BA',
+        raquo: '\u00BB',
+        frac14: '\u00BC',
+        frac12: '\u00BD',
+        frac34: '\u00BE',
+        iquest: '\u00BF',
+        Agrave: '\u00C0',
+        Aacute: '\u00C1',
+        Acirc: '\u00C2',
+        Atilde: '\u00C3',
+        Auml: '\u00C4',
+        Aring: '\u00C5',
+        AElig: '\u00C6',
+        Ccedil: '\u00C7',
+        Egrave: '\u00C8',
+        Eacute: '\u00C9',
+        Ecirc: '\u00CA',
+        Euml: '\u00CB',
+        Igrave: '\u00CC',
+        Iacute: '\u00CD',
+        Icirc: '\u00CE',
+        Iuml: '\u00CF',
+        ETH: '\u00D0',
+        Ntilde: '\u00D1',
+        Ograve: '\u00D2',
+        Oacute: '\u00D3',
+        Ocirc: '\u00D4',
+        Otilde: '\u00D5',
+        Ouml: '\u00D6',
+        times: '\u00D7',
+        Oslash: '\u00D8',
+        Ugrave: '\u00D9',
+        Uacute: '\u00DA',
+        Ucirc: '\u00DB',
+        Uuml: '\u00DC',
+        Yacute: '\u00DD',
+        THORN: '\u00DE',
+        szlig: '\u00DF',
+        agrave: '\u00E0',
+        aacute: '\u00E1',
+        acirc: '\u00E2',
+        atilde: '\u00E3',
+        auml: '\u00E4',
+        aring: '\u00E5',
+        aelig: '\u00E6',
+        ccedil: '\u00E7',
+        egrave: '\u00E8',
+        eacute: '\u00E9',
+        ecirc: '\u00EA',
+        euml: '\u00EB',
+        igrave: '\u00EC',
+        iacute: '\u00ED',
+        icirc: '\u00EE',
+        iuml: '\u00EF',
+        eth: '\u00F0',
+        ntilde: '\u00F1',
+        ograve: '\u00F2',
+        oacute: '\u00F3',
+        ocirc: '\u00F4',
+        otilde: '\u00F5',
+        ouml: '\u00F6',
+        divide: '\u00F7',
+        oslash: '\u00F8',
+        ugrave: '\u00F9',
+        uacute: '\u00FA',
+        ucirc: '\u00FB',
+        uuml: '\u00FC',
+        yacute: '\u00FD',
+        thorn: '\u00FE',
+        yuml: '\u00FF',
+        OElig: '\u0152',
+        oelig: '\u0153',
+        Scaron: '\u0160',
+        scaron: '\u0161',
+        Yuml: '\u0178',
+        fnof: '\u0192',
+        circ: '\u02C6',
+        tilde: '\u02DC',
+        Alpha: '\u0391',
+        Beta: '\u0392',
+        Gamma: '\u0393',
+        Delta: '\u0394',
+        Epsilon: '\u0395',
+        Zeta: '\u0396',
+        Eta: '\u0397',
+        Theta: '\u0398',
+        Iota: '\u0399',
+        Kappa: '\u039A',
+        Lambda: '\u039B',
+        Mu: '\u039C',
+        Nu: '\u039D',
+        Xi: '\u039E',
+        Omicron: '\u039F',
+        Pi: '\u03A0',
+        Rho: '\u03A1',
+        Sigma: '\u03A3',
+        Tau: '\u03A4',
+        Upsilon: '\u03A5',
+        Phi: '\u03A6',
+        Chi: '\u03A7',
+        Psi: '\u03A8',
+        Omega: '\u03A9',
+        alpha: '\u03B1',
+        beta: '\u03B2',
+        gamma: '\u03B3',
+        delta: '\u03B4',
+        epsilon: '\u03B5',
+        zeta: '\u03B6',
+        eta: '\u03B7',
+        theta: '\u03B8',
+        iota: '\u03B9',
+        kappa: '\u03BA',
+        lambda: '\u03BB',
+        mu: '\u03BC',
+        nu: '\u03BD',
+        xi: '\u03BE',
+        omicron: '\u03BF',
+        pi: '\u03C0',
+        rho: '\u03C1',
+        sigmaf: '\u03C2',
+        sigma: '\u03C3',
+        tau: '\u03C4',
+        upsilon: '\u03C5',
+        phi: '\u03C6',
+        chi: '\u03C7',
+        psi: '\u03C8',
+        omega: '\u03C9',
+        thetasym: '\u03D1',
+        upsih: '\u03D2',
+        piv: '\u03D6',
+        ensp: '\u2002',
+        emsp: '\u2003',
+        thinsp: '\u2009',
+        zwnj: '\u200C',
+        zwj: '\u200D',
+        lrm: '\u200E',
+        rlm: '\u200F',
+        ndash: '\u2013',
+        mdash: '\u2014',
+        lsquo: '\u2018',
+        rsquo: '\u2019',
+        sbquo: '\u201A',
+        ldquo: '\u201C',
+        rdquo: '\u201D',
+        bdquo: '\u201E',
+        dagger: '\u2020',
+        Dagger: '\u2021',
+        bull: '\u2022',
+        hellip: '\u2026',
+        permil: '\u2030',
+        prime: '\u2032',
+        Prime: '\u2033',
+        lsaquo: '\u2039',
+        rsaquo: '\u203A',
+        oline: '\u203E',
+        frasl: '\u2044',
+        euro: '\u20AC',
+        image: '\u2111',
+        weierp: '\u2118',
+        real: '\u211C',
+        trade: '\u2122',
+        alefsym: '\u2135',
+        larr: '\u2190',
+        uarr: '\u2191',
+        rarr: '\u2192',
+        darr: '\u2193',
+        harr: '\u2194',
+        crarr: '\u21B5',
+        lArr: '\u21D0',
+        uArr: '\u21D1',
+        rArr: '\u21D2',
+        dArr: '\u21D3',
+        hArr: '\u21D4',
+        forall: '\u2200',
+        part: '\u2202',
+        exist: '\u2203',
+        empty: '\u2205',
+        nabla: '\u2207',
+        isin: '\u2208',
+        notin: '\u2209',
+        ni: '\u220B',
+        prod: '\u220F',
+        sum: '\u2211',
+        minus: '\u2212',
+        lowast: '\u2217',
+        radic: '\u221A',
+        prop: '\u221D',
+        infin: '\u221E',
+        ang: '\u2220',
+        and: '\u2227',
+        or: '\u2228',
+        cap: '\u2229',
+        cup: '\u222A',
+        'int': '\u222B',
+        there4: '\u2234',
+        sim: '\u223C',
+        cong: '\u2245',
+        asymp: '\u2248',
+        ne: '\u2260',
+        equiv: '\u2261',
+        le: '\u2264',
+        ge: '\u2265',
+        sub: '\u2282',
+        sup: '\u2283',
+        nsub: '\u2284',
+        sube: '\u2286',
+        supe: '\u2287',
+        oplus: '\u2295',
+        otimes: '\u2297',
+        perp: '\u22A5',
+        sdot: '\u22C5',
+        lceil: '\u2308',
+        rceil: '\u2309',
+        lfloor: '\u230A',
+        rfloor: '\u230B',
+        lang: '\u2329',
+        rang: '\u232A',
+        loz: '\u25CA',
+        spades: '\u2660',
+        clubs: '\u2663',
+        hearts: '\u2665',
+        diams: '\u2666'
+    };
+
+    function getQualifiedXJSName(object) {
+        if (object.type === Syntax.XJSIdentifier) {
+            return object.name;
+        }
+        if (object.type === Syntax.XJSNamespacedName) {
+            return object.namespace.name + ':' + object.name.name;
+        }
+        if (object.type === Syntax.XJSMemberExpression) {
+            return (
+                getQualifiedXJSName(object.object) + '.' +
+                getQualifiedXJSName(object.property)
+            );
+        }
+    }
+
+    function isXJSIdentifierStart(ch) {
+        // exclude backslash (\)
+        return (ch !== 92) && isIdentifierStart(ch);
+    }
+
+    function isXJSIdentifierPart(ch) {
+        // exclude backslash (\) and add hyphen (-)
+        return (ch !== 92) && (ch === 45 || isIdentifierPart(ch));
+    }
+
+    function scanXJSIdentifier() {
+        var ch, start, value = '';
+
+        start = index;
+        while (index < length) {
+            ch = source.charCodeAt(index);
+            if (!isXJSIdentifierPart(ch)) {
+                break;
+            }
+            value += source[index++];
+        }
+
+        return {
+            type: Token.XJSIdentifier,
+            value: value,
+            lineNumber: lineNumber,
+            lineStart: lineStart,
+            range: [start, index]
+        };
+    }
+
+    function scanXJSEntity() {
+        var ch, str = '', start = index, count = 0, code;
+        ch = source[index];
+        assert(ch === '&', 'Entity must start with an ampersand');
+        index++;
+        while (index < length && count++ < 10) {
+            ch = source[index++];
+            if (ch === ';') {
+                break;
+            }
+            str += ch;
+        }
+
+        // Well-formed entity (ending was found).
+        if (ch === ';') {
+            // Numeric entity.
+            if (str[0] === '#') {
+                if (str[1] === 'x') {
+                    code = +('0' + str.substr(1));
+                } else {
+                    // Removing leading zeros in order to avoid treating as octal in old browsers.
+                    code = +str.substr(1).replace(Regex.LeadingZeros, '');
+                }
+
+                if (!isNaN(code)) {
+                    return String.fromCharCode(code);
+                }
+            } else if (XHTMLEntities[str]) {
+                return XHTMLEntities[str];
+            }
+        }
+
+        // Treat non-entity sequences as regular text.
+        index = start + 1;
+        return '&';
+    }
+
+    function scanXJSText(stopChars) {
+        var ch, str = '', start;
+        start = index;
+        while (index < length) {
+            ch = source[index];
+            if (stopChars.indexOf(ch) !== -1) {
+                break;
+            }
+            if (ch === '&') {
+                str += scanXJSEntity();
+            } else {
+                index++;
+                if (ch === '\r' && source[index] === '\n') {
+                    str += ch;
+                    ch = source[index];
+                    index++;
+                }
+                if (isLineTerminator(ch.charCodeAt(0))) {
+                    ++lineNumber;
+                    lineStart = index;
+                }
+                str += ch;
+            }
+        }
+        return {
+            type: Token.XJSText,
+            value: str,
+            lineNumber: lineNumber,
+            lineStart: lineStart,
+            range: [start, index]
+        };
+    }
+
+    function scanXJSStringLiteral() {
+        var innerToken, quote, start;
+
+        quote = source[index];
+        assert((quote === '\'' || quote === '"'),
+            'String literal must starts with a quote');
+
+        start = index;
+        ++index;
+
+        innerToken = scanXJSText([quote]);
+
+        if (quote !== source[index]) {
+            throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
+        }
+
+        ++index;
+
+        innerToken.range = [start, index];
+
+        return innerToken;
+    }
+
+    /**
+     * Between XJS opening and closing tags (e.g. <foo>HERE</foo>), anything that
+     * is not another XJS tag and is not an expression wrapped by {} is text.
+     */
+    function advanceXJSChild() {
+        var ch = source.charCodeAt(index);
+
+        // { (123) and < (60)
+        if (ch !== 123 && ch !== 60) {
+            return scanXJSText(['<', '{']);
+        }
+
+        return scanPunctuator();
+    }
+
+    function parseXJSIdentifier() {
+        var token, marker = markerCreate();
+
+        if (lookahead.type !== Token.XJSIdentifier) {
+            throwUnexpected(lookahead);
+        }
+
+        token = lex();
+        return markerApply(marker, delegate.createXJSIdentifier(token.value));
+    }
+
+    function parseXJSNamespacedName() {
+        var namespace, name, marker = markerCreate();
+
+        namespace = parseXJSIdentifier();
+        expect(':');
+        name = parseXJSIdentifier();
+
+        return markerApply(marker, delegate.createXJSNamespacedName(namespace, name));
+    }
+
+    function parseXJSMemberExpression() {
+        var marker = markerCreate(),
+            expr = parseXJSIdentifier();
+
+        while (match('.')) {
+            lex();
+            expr = markerApply(marker, delegate.createXJSMemberExpression(expr, parseXJSIdentifier()));
+        }
+
+        return expr;
+    }
+
+    function parseXJSElementName() {
+        if (lookahead2().value === ':') {
+            return parseXJSNamespacedName();
+        }
+        if (lookahead2().value === '.') {
+            return parseXJSMemberExpression();
+        }
+
+        return parseXJSIdentifier();
+    }
+
+    function parseXJSAttributeName() {
+        if (lookahead2().value === ':') {
+            return parseXJSNamespacedName();
+        }
+
+        return parseXJSIdentifier();
+    }
+
+    function parseXJSAttributeValue() {
+        var value, marker;
+        if (match('{')) {
+            value = parseXJSExpressionContainer();
+            if (value.expression.type === Syntax.XJSEmptyExpression) {
+                throwError(
+                    value,
+                    'XJS attributes must only be assigned a non-empty ' +
+                        'expression'
+                );
+            }
+        } else if (match('<')) {
+            value = parseXJSElement();
+        } else if (lookahead.type === Token.XJSText) {
+            marker = markerCreate();
+            value = markerApply(marker, delegate.createLiteral(lex()));
+        } else {
+            throwError({}, Messages.InvalidXJSAttributeValue);
+        }
+        return value;
+    }
+
+    function parseXJSEmptyExpression() {
+        var marker = markerCreatePreserveWhitespace();
+        while (source.charAt(index) !== '}') {
+            index++;
+        }
+        return markerApply(marker, delegate.createXJSEmptyExpression());
+    }
+
+    function parseXJSExpressionContainer() {
+        var expression, origInXJSChild, origInXJSTag, marker = markerCreate();
+
+        origInXJSChild = state.inXJSChild;
+        origInXJSTag = state.inXJSTag;
+        state.inXJSChild = false;
+        state.inXJSTag = false;
+
+        expect('{');
+
+        if (match('}')) {
+            expression = parseXJSEmptyExpression();
+        } else {
+            expression = parseExpression();
+        }
+
+        state.inXJSChild = origInXJSChild;
+        state.inXJSTag = origInXJSTag;
+
+        expect('}');
+
+        return markerApply(marker, delegate.createXJSExpressionContainer(expression));
+    }
+
+    function parseXJSSpreadAttribute() {
+        var expression, origInXJSChild, origInXJSTag, marker = markerCreate();
+
+        origInXJSChild = state.inXJSChild;
+        origInXJSTag = state.inXJSTag;
+        state.inXJSChild = false;
+        state.inXJSTag = false;
+
+        expect('{');
+        expect('...');
+
+        expression = parseAssignmentExpression();
+
+        state.inXJSChild = origInXJSChild;
+        state.inXJSTag = origInXJSTag;
+
+        expect('}');
+
+        return markerApply(marker, delegate.createXJSSpreadAttribute(expression));
+    }
+
+    function parseXJSAttribute() {
+        var name, marker;
+
+        if (match('{')) {
+            return parseXJSSpreadAttribute();
+        }
+
+        marker = markerCreate();
+
+        name = parseXJSAttributeName();
+
+        // HTML empty attribute
+        if (match('=')) {
+            lex();
+            return markerApply(marker, delegate.createXJSAttribute(name, parseXJSAttributeValue()));
+        }
+
+        return markerApply(marker, delegate.createXJSAttribute(name));
+    }
+
+    function parseXJSChild() {
+        var token, marker;
+        if (match('{')) {
+            token = parseXJSExpressionContainer();
+        } else if (lookahead.type === Token.XJSText) {
+            marker = markerCreatePreserveWhitespace();
+            token = markerApply(marker, delegate.createLiteral(lex()));
+        } else {
+            token = parseXJSElement();
+        }
+        return token;
+    }
+
+    function parseXJSClosingElement() {
+        var name, origInXJSChild, origInXJSTag, marker = markerCreate();
+        origInXJSChild = state.inXJSChild;
+        origInXJSTag = state.inXJSTag;
+        state.inXJSChild = false;
+        state.inXJSTag = true;
+        expect('<');
+        expect('/');
+        name = parseXJSElementName();
+        // Because advance() (called by lex() called by expect()) expects there
+        // to be a valid token after >, it needs to know whether to look for a
+        // standard JS token or an XJS text node
+        state.inXJSChild = origInXJSChild;
+        state.inXJSTag = origInXJSTag;
+        expect('>');
+        return markerApply(marker, delegate.createXJSClosingElement(name));
+    }
+
+    function parseXJSOpeningElement() {
+        var name, attribute, attributes = [], selfClosing = false, origInXJSChild, origInXJSTag, marker = markerCreate();
+
+        origInXJSChild = state.inXJSChild;
+        origInXJSTag = state.inXJSTag;
+        state.inXJSChild = false;
+        state.inXJSTag = true;
+
+        expect('<');
+
+        name = parseXJSElementName();
+
+        while (index < length &&
+                lookahead.value !== '/' &&
+                lookahead.value !== '>') {
+            attributes.push(parseXJSAttribute());
+        }
+
+        state.inXJSTag = origInXJSTag;
+
+        if (lookahead.value === '/') {
+            expect('/');
+            // Because advance() (called by lex() called by expect()) expects
+            // there to be a valid token after >, it needs to know whether to
+            // look for a standard JS token or an XJS text node
+            state.inXJSChild = origInXJSChild;
+            expect('>');
+            selfClosing = true;
+        } else {
+            state.inXJSChild = true;
+            expect('>');
+        }
+        return markerApply(marker, delegate.createXJSOpeningElement(name, attributes, selfClosing));
+    }
+
+    function parseXJSElement() {
+        var openingElement, closingElement = null, children = [], origInXJSChild, origInXJSTag, marker = markerCreate();
+
+        origInXJSChild = state.inXJSChild;
+        origInXJSTag = state.inXJSTag;
+        openingElement = parseXJSOpeningElement();
+
+        if (!openingElement.selfClosing) {
+            while (index < length) {
+                state.inXJSChild = false; // Call lookahead2() with inXJSChild = false because </ should not be considered in the child
+                if (lookahead.value === '<' && lookahead2().value === '/') {
+                    break;
+                }
+                state.inXJSChild = true;
+                children.push(parseXJSChild());
+            }
+            state.inXJSChild = origInXJSChild;
+            state.inXJSTag = origInXJSTag;
+            closingElement = parseXJSClosingElement();
+            if (getQualifiedXJSName(closingElement.name) !== getQualifiedXJSName(openingElement.name)) {
+                throwError({}, Messages.ExpectedXJSClosingTag, getQualifiedXJSName(openingElement.name));
+            }
+        }
+
+        // When (erroneously) writing two adjacent tags like
+        //
+        //     var x = <div>one</div><div>two</div>;
+        //
+        // the default error message is a bit incomprehensible. Since it's
+        // rarely (never?) useful to write a less-than sign after an XJS
+        // element, we disallow it here in the parser in order to provide a
+        // better error message. (In the rare case that the less-than operator
+        // was intended, the left tag can be wrapped in parentheses.)
+        if (!origInXJSChild && match('<')) {
+            throwError(lookahead, Messages.AdjacentXJSElements);
+        }
+
+        return markerApply(marker, delegate.createXJSElement(openingElement, closingElement, children));
+    }
+
+    function collectToken() {
+        var start, loc, token, range, value, entry;
+
+        if (!state.inXJSChild) {
+            skipComment();
+        }
+
+        start = index;
+        loc = {
+            start: {
+                line: lineNumber,
+                column: index - lineStart
+            }
+        };
+
+        token = extra.advance();
+        loc.end = {
+            line: lineNumber,
+            column: index - lineStart
+        };
+
+        if (token.type !== Token.EOF) {
+            range = [token.range[0], token.range[1]];
+            value = source.slice(token.range[0], token.range[1]);
+            entry = {
+                type: TokenName[token.type],
+                value: value,
+                range: range,
+                loc: loc
+            };
+            if (token.regex) {
+                entry.regex = {
+                    pattern: token.regex.pattern,
+                    flags: token.regex.flags
+                };
+            }
+            extra.tokens.push(entry);
+        }
+
+        return token;
+    }
+
+    function collectRegex() {
+        var pos, loc, regex, token;
 
         skipComment();
-        peek();
-        startToken = lookahead;
-        strict = false;
 
-        body = parseSourceElements();
-        return delegate.markEnd(delegate.createProgram(body), startToken);
+        pos = index;
+        loc = {
+            start: {
+                line: lineNumber,
+                column: index - lineStart
+            }
+        };
+
+        regex = extra.scanRegExp();
+        loc.end = {
+            line: lineNumber,
+            column: index - lineStart
+        };
+
+        if (!extra.tokenize) {
+            // Pop the previous token, which is likely '/' or '/='
+            if (extra.tokens.length > 0) {
+                token = extra.tokens[extra.tokens.length - 1];
+                if (token.range[0] === pos && token.type === 'Punctuator') {
+                    if (token.value === '/' || token.value === '/=') {
+                        extra.tokens.pop();
+                    }
+                }
+            }
+
+            extra.tokens.push({
+                type: 'RegularExpression',
+                value: regex.literal,
+                regex: regex.regex,
+                range: [pos, index],
+                loc: loc
+            });
+        }
+
+        return regex;
     }
 
     function filterTokenLocation() {
@@ -22243,6 +25440,12 @@ parseStatement: true, parseSourceElement: true */
                 type: entry.type,
                 value: entry.value
             };
+            if (entry.regex) {
+                token.regex = {
+                    pattern: entry.regex.pattern,
+                    flags: entry.regex.flags
+                };
+            }
             if (extra.range) {
                 token.range = entry.range;
             }
@@ -22255,6 +25458,52 @@ parseStatement: true, parseSourceElement: true */
         extra.tokens = tokens;
     }
 
+    function patch() {
+        if (extra.comments) {
+            extra.skipComment = skipComment;
+            skipComment = scanComment;
+        }
+
+        if (typeof extra.tokens !== 'undefined') {
+            extra.advance = advance;
+            extra.scanRegExp = scanRegExp;
+
+            advance = collectToken;
+            scanRegExp = collectRegex;
+        }
+    }
+
+    function unpatch() {
+        if (typeof extra.skipComment === 'function') {
+            skipComment = extra.skipComment;
+        }
+
+        if (typeof extra.scanRegExp === 'function') {
+            advance = extra.advance;
+            scanRegExp = extra.scanRegExp;
+        }
+    }
+
+    // This is used to modify the delegate.
+
+    function extend(object, properties) {
+        var entry, result = {};
+
+        for (entry in object) {
+            if (object.hasOwnProperty(entry)) {
+                result[entry] = object[entry];
+            }
+        }
+
+        for (entry in properties) {
+            if (properties.hasOwnProperty(entry)) {
+                result[entry] = properties[entry];
+            }
+        }
+
+        return result;
+    }
+
     function tokenize(code, options) {
         var toString,
             token,
@@ -22273,6 +25522,7 @@ parseStatement: true, parseSourceElement: true */
         length = source.length;
         lookahead = null;
         state = {
+            allowKeyword: true,
             allowIn: true,
             labelSet: {},
             inFunctionBody: false,
@@ -22304,6 +25554,19 @@ parseStatement: true, parseSourceElement: true */
             extra.errors = [];
         }
 
+        if (length > 0) {
+            if (typeof source[0] === 'undefined') {
+                // Try first to convert to a string. This is good as fast path
+                // for old IE which understands string indexing for string
+                // literals only and not for string object.
+                if (code instanceof String) {
+                    source = code.valueOf();
+                }
+            }
+        }
+
+        patch();
+
         try {
             peek();
             if (lookahead.type === Token.EOF) {
@@ -22338,6 +25601,7 @@ parseStatement: true, parseSourceElement: true */
         } catch (e) {
             throw e;
         } finally {
+            unpatch();
             extra = {};
         }
         return tokens;
@@ -22359,12 +25623,18 @@ parseStatement: true, parseSourceElement: true */
         length = source.length;
         lookahead = null;
         state = {
+            allowKeyword: false,
             allowIn: true,
             labelSet: {},
+            parenthesizedCount: 0,
             inFunctionBody: false,
             inIteration: false,
             inSwitch: false,
-            lastCommentStart: -1
+            inXJSChild: false,
+            inXJSTag: false,
+            lastCommentStart: -1,
+            yieldAllowed: false,
+            awaitAllowed: false
         };
 
         extra = {};
@@ -22374,7 +25644,12 @@ parseStatement: true, parseSourceElement: true */
             extra.attachComment = (typeof options.attachComment === 'boolean') && options.attachComment;
 
             if (extra.loc && options.source !== null && options.source !== undefined) {
-                extra.source = toString(options.source);
+                delegate = extend(delegate, {
+                    'postProcess': function (node) {
+                        node.loc.source = toString(options.source);
+                        return node;
+                    }
+                });
             }
 
             if (typeof options.tokens === 'boolean' && options.tokens) {
@@ -22395,6 +25670,18 @@ parseStatement: true, parseSourceElement: true */
             }
         }
 
+        if (length > 0) {
+            if (typeof source[0] === 'undefined') {
+                // Try first to convert to a string. This is good as fast path
+                // for old IE which understands string indexing for string
+                // literals only and not for string object.
+                if (code instanceof String) {
+                    source = code.valueOf();
+                }
+            }
+        }
+
+        patch();
         try {
             program = parseProgram();
             if (typeof extra.comments !== 'undefined') {
@@ -22410,6 +25697,7 @@ parseStatement: true, parseSourceElement: true */
         } catch (e) {
             throw e;
         } finally {
+            unpatch();
             extra = {};
         }
 
@@ -22417,14 +25705,13 @@ parseStatement: true, parseSourceElement: true */
     }
 
     // Sync with *.json manifests.
-    exports.version = '1.2.2';
+    exports.version = '7001.0001.0000-dev-harmony-fb';
 
     exports.tokenize = tokenize;
 
     exports.parse = parse;
 
     // Deep copy.
-   /* istanbul ignore next */
     exports.Syntax = (function () {
         var name, types = {};
 
@@ -22448,9 +25735,9 @@ parseStatement: true, parseSourceElement: true */
 }));
 /* vim: set sw=4 ts=4 et tw=80 : */
 
-},{}],81:[function(require,module,exports){
-
 },{}],82:[function(require,module,exports){
+
+},{}],83:[function(require,module,exports){
 /*!
  * The buffer module from node.js, for the browser.
  *
@@ -22463,11 +25750,12 @@ var ieee754 = require('ieee754')
 var isArray = require('is-array')
 
 exports.Buffer = Buffer
-exports.SlowBuffer = Buffer
+exports.SlowBuffer = SlowBuffer
 exports.INSPECT_MAX_BYTES = 50
 Buffer.poolSize = 8192 // not used by this implementation
 
 var kMaxLength = 0x3fffffff
+var rootParent = {}
 
 /**
  * If `Buffer.TYPED_ARRAY_SUPPORT`:
@@ -22527,8 +25815,6 @@ function Buffer (subject, encoding, noZero) {
   if (type === 'number')
     length = subject > 0 ? subject >>> 0 : 0
   else if (type === 'string') {
-    if (encoding === 'base64')
-      subject = base64clean(subject)
     length = Buffer.byteLength(subject, encoding)
   } else if (type === 'object' && subject !== null) { // assume object is array-like
     if (subject.type === 'Buffer' && isArray(subject.data))
@@ -22537,7 +25823,7 @@ function Buffer (subject, encoding, noZero) {
   } else
     throw new TypeError('must start with number, buffer, array or string')
 
-  if (this.length > kMaxLength)
+  if (length > kMaxLength)
     throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
       'size: 0x' + kMaxLength.toString(16) + ' bytes')
 
@@ -22573,6 +25859,18 @@ function Buffer (subject, encoding, noZero) {
     }
   }
 
+  if (length > 0 && length <= Buffer.poolSize)
+    buf.parent = rootParent
+
+  return buf
+}
+
+function SlowBuffer(subject, encoding, noZero) {
+  if (!(this instanceof SlowBuffer))
+    return new SlowBuffer(subject, encoding, noZero)
+
+  var buf = new Buffer(subject, encoding, noZero)
+  delete buf.parent
   return buf
 }
 
@@ -22723,7 +26021,7 @@ Buffer.prototype.toString = function (encoding, start, end) {
 }
 
 Buffer.prototype.equals = function (b) {
-  if(!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
+  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
   return Buffer.compare(this, b) === 0
 }
 
@@ -22783,7 +26081,7 @@ function hexWrite (buf, string, offset, length) {
 }
 
 function utf8Write (buf, string, offset, length) {
-  var charsWritten = blitBuffer(utf8ToBytes(string), buf, offset, length)
+  var charsWritten = blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
   return charsWritten
 }
 
@@ -22802,7 +26100,7 @@ function base64Write (buf, string, offset, length) {
 }
 
 function utf16leWrite (buf, string, offset, length) {
-  var charsWritten = blitBuffer(utf16leToBytes(string), buf, offset, length, 2)
+  var charsWritten = blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length, 2)
   return charsWritten
 }
 
@@ -22822,6 +26120,10 @@ Buffer.prototype.write = function (string, offset, length, encoding) {
   }
 
   offset = Number(offset) || 0
+
+  if (length < 0 || offset < 0 || offset > this.length)
+    throw new RangeError('attempt to write outside buffer bounds');
+
   var remaining = this.length - offset
   if (!length) {
     length = remaining
@@ -22900,13 +26202,19 @@ function asciiSlice (buf, start, end) {
   end = Math.min(buf.length, end)
 
   for (var i = start; i < end; i++) {
-    ret += String.fromCharCode(buf[i])
+    ret += String.fromCharCode(buf[i] & 0x7F)
   }
   return ret
 }
 
 function binarySlice (buf, start, end) {
-  return asciiSlice(buf, start, end)
+  var ret = ''
+  end = Math.min(buf.length, end)
+
+  for (var i = start; i < end; i++) {
+    ret += String.fromCharCode(buf[i])
+  }
+  return ret
 }
 
 function hexSlice (buf, start, end) {
@@ -22955,16 +26263,21 @@ Buffer.prototype.slice = function (start, end) {
   if (end < start)
     end = start
 
+  var newBuf
   if (Buffer.TYPED_ARRAY_SUPPORT) {
-    return Buffer._augment(this.subarray(start, end))
+    newBuf = Buffer._augment(this.subarray(start, end))
   } else {
     var sliceLen = end - start
-    var newBuf = new Buffer(sliceLen, undefined, true)
+    newBuf = new Buffer(sliceLen, undefined, true)
     for (var i = 0; i < sliceLen; i++) {
       newBuf[i] = this[i + start]
     }
-    return newBuf
   }
+
+  if (newBuf.length)
+    newBuf.parent = this.parent || this
+
+  return newBuf
 }
 
 /*
@@ -22977,6 +26290,35 @@ function checkOffset (offset, ext, length) {
     throw new RangeError('Trying to access beyond buffer length')
 }
 
+Buffer.prototype.readUIntLE = function (offset, byteLength, noAssert) {
+  offset = offset >>> 0
+  byteLength = byteLength >>> 0
+  if (!noAssert)
+    checkOffset(offset, byteLength, this.length)
+
+  var val = this[offset]
+  var mul = 1
+  var i = 0
+  while (++i < byteLength && (mul *= 0x100))
+    val += this[offset + i] * mul
+
+  return val
+}
+
+Buffer.prototype.readUIntBE = function (offset, byteLength, noAssert) {
+  offset = offset >>> 0
+  byteLength = byteLength >>> 0
+  if (!noAssert)
+    checkOffset(offset, byteLength, this.length)
+
+  var val = this[offset + --byteLength]
+  var mul = 1
+  while (byteLength > 0 && (mul *= 0x100))
+    val += this[offset + --byteLength] * mul;
+
+  return val
+}
+
 Buffer.prototype.readUInt8 = function (offset, noAssert) {
   if (!noAssert)
     checkOffset(offset, 1, this.length)
@@ -23015,6 +26357,44 @@ Buffer.prototype.readUInt32BE = function (offset, noAssert) {
       this[offset + 3])
 }
 
+Buffer.prototype.readIntLE = function (offset, byteLength, noAssert) {
+  offset = offset >>> 0
+  byteLength = byteLength >>> 0
+  if (!noAssert)
+    checkOffset(offset, byteLength, this.length)
+
+  var val = this[offset]
+  var mul = 1
+  var i = 0
+  while (++i < byteLength && (mul *= 0x100))
+    val += this[offset + i] * mul
+  mul *= 0x80
+
+  if (val >= mul)
+    val -= Math.pow(2, 8 * byteLength)
+
+  return val
+}
+
+Buffer.prototype.readIntBE = function (offset, byteLength, noAssert) {
+  offset = offset >>> 0
+  byteLength = byteLength >>> 0
+  if (!noAssert)
+    checkOffset(offset, byteLength, this.length)
+
+  var i = byteLength
+  var mul = 1
+  var val = this[offset + --i]
+  while (i > 0 && (mul *= 0x100))
+    val += this[offset + --i] * mul
+  mul *= 0x80
+
+  if (val >= mul)
+    val -= Math.pow(2, 8 * byteLength)
+
+  return val
+}
+
 Buffer.prototype.readInt8 = function (offset, noAssert) {
   if (!noAssert)
     checkOffset(offset, 1, this.length)
@@ -23083,8 +26463,40 @@ Buffer.prototype.readDoubleBE = function (offset, noAssert) {
 
 function checkInt (buf, value, offset, ext, max, min) {
   if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
-  if (value > max || value < min) throw new TypeError('value is out of bounds')
-  if (offset + ext > buf.length) throw new TypeError('index out of range')
+  if (value > max || value < min) throw new RangeError('value is out of bounds')
+  if (offset + ext > buf.length) throw new RangeError('index out of range')
+}
+
+Buffer.prototype.writeUIntLE = function (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  byteLength = byteLength >>> 0
+  if (!noAssert)
+    checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
+
+  var mul = 1
+  var i = 0
+  this[offset] = value & 0xFF
+  while (++i < byteLength && (mul *= 0x100))
+    this[offset + i] = (value / mul) >>> 0 & 0xFF
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeUIntBE = function (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  byteLength = byteLength >>> 0
+  if (!noAssert)
+    checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
+
+  var i = byteLength - 1
+  var mul = 1
+  this[offset + i] = value & 0xFF
+  while (--i >= 0 && (mul *= 0x100))
+    this[offset + i] = (value / mul) >>> 0 & 0xFF
+
+  return offset + byteLength
 }
 
 Buffer.prototype.writeUInt8 = function (value, offset, noAssert) {
@@ -23164,6 +26576,50 @@ Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) {
   return offset + 4
 }
 
+Buffer.prototype.writeIntLE = function (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) {
+    checkInt(this,
+             value,
+             offset,
+             byteLength,
+             Math.pow(2, 8 * byteLength - 1) - 1,
+             -Math.pow(2, 8 * byteLength - 1))
+  }
+
+  var i = 0
+  var mul = 1
+  var sub = value < 0 ? 1 : 0
+  this[offset] = value & 0xFF
+  while (++i < byteLength && (mul *= 0x100))
+    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeIntBE = function (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) {
+    checkInt(this,
+             value,
+             offset,
+             byteLength,
+             Math.pow(2, 8 * byteLength - 1) - 1,
+             -Math.pow(2, 8 * byteLength - 1))
+  }
+
+  var i = byteLength - 1
+  var mul = 1
+  var sub = value < 0 ? 1 : 0
+  this[offset + i] = value & 0xFF
+  while (--i >= 0 && (mul *= 0x100))
+    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+
+  return offset + byteLength
+}
+
 Buffer.prototype.writeInt8 = function (value, offset, noAssert) {
   value = +value
   offset = offset >>> 0
@@ -23229,8 +26685,9 @@ Buffer.prototype.writeInt32BE = function (value, offset, noAssert) {
 }
 
 function checkIEEE754 (buf, value, offset, ext, max, min) {
-  if (value > max || value < min) throw new TypeError('value is out of bounds')
-  if (offset + ext > buf.length) throw new TypeError('index out of range')
+  if (value > max || value < min) throw new RangeError('value is out of bounds')
+  if (offset + ext > buf.length) throw new RangeError('index out of range')
+  if (offset < 0) throw new RangeError('index out of range')
 }
 
 function writeFloat (buf, value, offset, littleEndian, noAssert) {
@@ -23269,18 +26726,19 @@ Buffer.prototype.copy = function (target, target_start, start, end) {
 
   if (!start) start = 0
   if (!end && end !== 0) end = this.length
+  if (target_start >= target.length) target_start = target.length
   if (!target_start) target_start = 0
+  if (end > 0 && end < start) end = start
 
   // Copy 0 bytes; we're done
-  if (end === start) return
-  if (target.length === 0 || source.length === 0) return
+  if (end === start) return 0
+  if (target.length === 0 || source.length === 0) return 0
 
   // Fatal error conditions
-  if (end < start) throw new TypeError('sourceEnd < sourceStart')
-  if (target_start < 0 || target_start >= target.length)
-    throw new TypeError('targetStart out of bounds')
-  if (start < 0 || start >= source.length) throw new TypeError('sourceStart out of bounds')
-  if (end < 0 || end > source.length) throw new TypeError('sourceEnd out of bounds')
+  if (target_start < 0)
+    throw new RangeError('targetStart out of bounds')
+  if (start < 0 || start >= source.length) throw new RangeError('sourceStart out of bounds')
+  if (end < 0) throw new RangeError('sourceEnd out of bounds')
 
   // Are we oob?
   if (end > this.length)
@@ -23297,6 +26755,8 @@ Buffer.prototype.copy = function (target, target_start, start, end) {
   } else {
     target._set(this.subarray(start, start + len), target_start)
   }
+
+  return len
 }
 
 // fill(value, start=0, end=buffer.length)
@@ -23305,14 +26765,14 @@ Buffer.prototype.fill = function (value, start, end) {
   if (!start) start = 0
   if (!end) end = this.length
 
-  if (end < start) throw new TypeError('end < start')
+  if (end < start) throw new RangeError('end < start')
 
   // Fill 0 bytes; we're done
   if (end === start) return
   if (this.length === 0) return
 
-  if (start < 0 || start >= this.length) throw new TypeError('start out of bounds')
-  if (end < 0 || end > this.length) throw new TypeError('end out of bounds')
+  if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')
+  if (end < 0 || end > this.length) throw new RangeError('end out of bounds')
 
   var i
   if (typeof value === 'number') {
@@ -23378,11 +26838,15 @@ Buffer._augment = function (arr) {
   arr.compare = BP.compare
   arr.copy = BP.copy
   arr.slice = BP.slice
+  arr.readUIntLE = BP.readUIntLE
+  arr.readUIntBE = BP.readUIntBE
   arr.readUInt8 = BP.readUInt8
   arr.readUInt16LE = BP.readUInt16LE
   arr.readUInt16BE = BP.readUInt16BE
   arr.readUInt32LE = BP.readUInt32LE
   arr.readUInt32BE = BP.readUInt32BE
+  arr.readIntLE = BP.readIntLE
+  arr.readIntBE = BP.readIntBE
   arr.readInt8 = BP.readInt8
   arr.readInt16LE = BP.readInt16LE
   arr.readInt16BE = BP.readInt16BE
@@ -23393,10 +26857,14 @@ Buffer._augment = function (arr) {
   arr.readDoubleLE = BP.readDoubleLE
   arr.readDoubleBE = BP.readDoubleBE
   arr.writeUInt8 = BP.writeUInt8
+  arr.writeUIntLE = BP.writeUIntLE
+  arr.writeUIntBE = BP.writeUIntBE
   arr.writeUInt16LE = BP.writeUInt16LE
   arr.writeUInt16BE = BP.writeUInt16BE
   arr.writeUInt32LE = BP.writeUInt32LE
   arr.writeUInt32BE = BP.writeUInt32BE
+  arr.writeIntLE = BP.writeIntLE
+  arr.writeIntBE = BP.writeIntBE
   arr.writeInt8 = BP.writeInt8
   arr.writeInt16LE = BP.writeInt16LE
   arr.writeInt16BE = BP.writeInt16BE
@@ -23413,11 +26881,13 @@ Buffer._augment = function (arr) {
   return arr
 }
 
-var INVALID_BASE64_RE = /[^+\/0-9A-z]/g
+var INVALID_BASE64_RE = /[^+\/0-9A-z\-]/g
 
 function base64clean (str) {
   // Node strips out invalid characters like \n and \t from the string, base64-js does not
   str = stringtrim(str).replace(INVALID_BASE64_RE, '')
+  // Node converts strings with length < 2 to ''
+  if (str.length < 2) return ''
   // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
   while (str.length % 4 !== 0) {
     str = str + '='
@@ -23441,22 +26911,100 @@ function toHex (n) {
   return n.toString(16)
 }
 
-function utf8ToBytes (str) {
-  var byteArray = []
-  for (var i = 0; i < str.length; i++) {
-    var b = str.charCodeAt(i)
-    if (b <= 0x7F) {
-      byteArray.push(b)
-    } else {
-      var start = i
-      if (b >= 0xD800 && b <= 0xDFFF) i++
-      var h = encodeURIComponent(str.slice(start, i+1)).substr(1).split('%')
-      for (var j = 0; j < h.length; j++) {
-        byteArray.push(parseInt(h[j], 16))
+function utf8ToBytes(string, units) {
+  var codePoint, length = string.length
+  var leadSurrogate = null
+  units = units || Infinity
+  var bytes = []
+  var i = 0
+
+  for (; i<length; i++) {
+    codePoint = string.charCodeAt(i)
+
+    // is surrogate component
+    if (codePoint > 0xD7FF && codePoint < 0xE000) {
+
+      // last char was a lead
+      if (leadSurrogate) {
+
+        // 2 leads in a row
+        if (codePoint < 0xDC00) {
+          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+          leadSurrogate = codePoint
+          continue
+        }
+
+        // valid surrogate pair
+        else {
+          codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000
+          leadSurrogate = null
+        }
+      }
+
+      // no lead yet
+      else {
+
+        // unexpected trail
+        if (codePoint > 0xDBFF) {
+          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+          continue
+        }
+
+        // unpaired lead
+        else if (i + 1 === length) {
+          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+          continue
+        }
+
+        // valid lead
+        else {
+          leadSurrogate = codePoint
+          continue
+        }
       }
     }
+
+    // valid bmp char, but last char was a lead
+    else if (leadSurrogate) {
+      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+      leadSurrogate = null
+    }
+
+    // encode utf8
+    if (codePoint < 0x80) {
+      if ((units -= 1) < 0) break
+      bytes.push(codePoint)
+    }
+    else if (codePoint < 0x800) {
+      if ((units -= 2) < 0) break
+      bytes.push(
+        codePoint >> 0x6 | 0xC0,
+        codePoint & 0x3F | 0x80
+      );
+    }
+    else if (codePoint < 0x10000) {
+      if ((units -= 3) < 0) break
+      bytes.push(
+        codePoint >> 0xC | 0xE0,
+        codePoint >> 0x6 & 0x3F | 0x80,
+        codePoint & 0x3F | 0x80
+      );
+    }
+    else if (codePoint < 0x200000) {
+      if ((units -= 4) < 0) break
+      bytes.push(
+        codePoint >> 0x12 | 0xF0,
+        codePoint >> 0xC & 0x3F | 0x80,
+        codePoint >> 0x6 & 0x3F | 0x80,
+        codePoint & 0x3F | 0x80
+      );
+    }
+    else {
+      throw new Error('Invalid code point')
+    }
   }
-  return byteArray
+
+  return bytes
 }
 
 function asciiToBytes (str) {
@@ -23468,10 +27016,13 @@ function asciiToBytes (str) {
   return byteArray
 }
 
-function utf16leToBytes (str) {
+function utf16leToBytes (str, units) {
   var c, hi, lo
   var byteArray = []
   for (var i = 0; i < str.length; i++) {
+
+    if ((units -= 2) < 0) break
+
     c = str.charCodeAt(i)
     hi = c >> 8
     lo = c % 256
@@ -23483,7 +27034,7 @@ function utf16leToBytes (str) {
 }
 
 function base64ToBytes (str) {
-  return base64.toByteArray(str)
+  return base64.toByteArray(base64clean(str))
 }
 
 function blitBuffer (src, dst, offset, length, unitSize) {
@@ -23504,7 +27055,7 @@ function decodeUtf8Char (str) {
   }
 }
 
-},{"base64-js":83,"ieee754":84,"is-array":85}],83:[function(require,module,exports){
+},{"base64-js":84,"ieee754":85,"is-array":86}],84:[function(require,module,exports){
 var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 
 ;(function (exports) {
@@ -23519,12 +27070,16 @@ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 	var NUMBER = '0'.charCodeAt(0)
 	var LOWER  = 'a'.charCodeAt(0)
 	var UPPER  = 'A'.charCodeAt(0)
+	var PLUS_URL_SAFE = '-'.charCodeAt(0)
+	var SLASH_URL_SAFE = '_'.charCodeAt(0)
 
 	function decode (elt) {
 		var code = elt.charCodeAt(0)
-		if (code === PLUS)
+		if (code === PLUS ||
+		    code === PLUS_URL_SAFE)
 			return 62 // '+'
-		if (code === SLASH)
+		if (code === SLASH ||
+		    code === SLASH_URL_SAFE)
 			return 63 // '/'
 		if (code < NUMBER)
 			return -1 //no match
@@ -23626,7 +27181,7 @@ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 	exports.fromByteArray = uint8ToBase64
 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
 
-},{}],84:[function(require,module,exports){
+},{}],85:[function(require,module,exports){
 exports.read = function(buffer, offset, isLE, mLen, nBytes) {
   var e, m,
       eLen = nBytes * 8 - mLen - 1,
@@ -23712,7 +27267,7 @@ exports.write = function(buffer, value, offset, isLE, mLen, nBytes) {
   buffer[offset + i - d] |= s * 128;
 };
 
-},{}],85:[function(require,module,exports){
+},{}],86:[function(require,module,exports){
 
 /**
  * isArray
@@ -23747,7 +27302,7 @@ module.exports = isArray || function (val) {
   return !! val && '[object Array]' == str.call(val);
 };
 
-},{}],86:[function(require,module,exports){
+},{}],87:[function(require,module,exports){
 // Copyright Joyent, Inc. and other Node contributors.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
@@ -24050,7 +27605,7 @@ function isUndefined(arg) {
   return arg === void 0;
 }
 
-},{}],87:[function(require,module,exports){
+},{}],88:[function(require,module,exports){
 if (typeof Object.create === 'function') {
   // implementation from standard node.js 'util' module
   module.exports = function inherits(ctor, superCtor) {
@@ -24075,12 +27630,12 @@ if (typeof Object.create === 'function') {
   }
 }
 
-},{}],88:[function(require,module,exports){
+},{}],89:[function(require,module,exports){
 module.exports = Array.isArray || function (arr) {
   return Object.prototype.toString.call(arr) == '[object Array]';
 };
 
-},{}],89:[function(require,module,exports){
+},{}],90:[function(require,module,exports){
 (function (process){
 // Copyright Joyent, Inc. and other Node contributors.
 //
@@ -24308,73 +27863,43 @@ var substr = 'ab'.substr(-1) === 'b'
 ;
 
 }).call(this,require('_process'))
-},{"_process":90}],90:[function(require,module,exports){
+},{"_process":91}],91:[function(require,module,exports){
 // shim for using process in browser
 
 var process = module.exports = {};
+var queue = [];
+var draining = false;
 
-process.nextTick = (function () {
-    var canSetImmediate = typeof window !== 'undefined'
-    && window.setImmediate;
-    var canMutationObserver = typeof window !== 'undefined'
-    && window.MutationObserver;
-    var canPost = typeof window !== 'undefined'
-    && window.postMessage && window.addEventListener
-    ;
-
-    if (canSetImmediate) {
-        return function (f) { return window.setImmediate(f) };
+function drainQueue() {
+    if (draining) {
+        return;
     }
-
-    var queue = [];
-
-    if (canMutationObserver) {
-        var hiddenDiv = document.createElement("div");
-        var observer = new MutationObserver(function () {
-            var queueList = queue.slice();
-            queue.length = 0;
-            queueList.forEach(function (fn) {
-                fn();
-            });
-        });
-
-        observer.observe(hiddenDiv, { attributes: true });
-
-        return function nextTick(fn) {
-            if (!queue.length) {
-                hiddenDiv.setAttribute('yes', 'no');
-            }
-            queue.push(fn);
-        };
+    draining = true;
+    var currentQueue;
+    var len = queue.length;
+    while(len) {
+        currentQueue = queue;
+        queue = [];
+        var i = -1;
+        while (++i < len) {
+            currentQueue[i]();
+        }
+        len = queue.length;
     }
-
-    if (canPost) {
-        window.addEventListener('message', function (ev) {
-            var source = ev.source;
-            if ((source === window || source === null) && ev.data === 'process-tick') {
-                ev.stopPropagation();
-                if (queue.length > 0) {
-                    var fn = queue.shift();
-                    fn();
-                }
-            }
-        }, true);
-
-        return function nextTick(fn) {
-            queue.push(fn);
-            window.postMessage('process-tick', '*');
-        };
+    draining = false;
+}
+process.nextTick = function (fun) {
+    queue.push(fun);
+    if (!draining) {
+        setTimeout(drainQueue, 0);
     }
-
-    return function nextTick(fn) {
-        setTimeout(fn, 0);
-    };
-})();
+};
 
 process.title = 'browser';
 process.browser = true;
 process.env = {};
 process.argv = [];
+process.version = ''; // empty string to avoid regexp issues
 
 function noop() {}
 
@@ -24395,11 +27920,12 @@ process.cwd = function () { return '/' };
 process.chdir = function (dir) {
     throw new Error('process.chdir is not supported');
 };
+process.umask = function() { return 0; };
 
-},{}],91:[function(require,module,exports){
+},{}],92:[function(require,module,exports){
 module.exports = require("./lib/_stream_duplex.js")
 
-},{"./lib/_stream_duplex.js":92}],92:[function(require,module,exports){
+},{"./lib/_stream_duplex.js":93}],93:[function(require,module,exports){
 (function (process){
 // Copyright Joyent, Inc. and other Node contributors.
 //
@@ -24492,7 +28018,7 @@ function forEach (xs, f) {
 }
 
 }).call(this,require('_process'))
-},{"./_stream_readable":94,"./_stream_writable":96,"_process":90,"core-util-is":97,"inherits":87}],93:[function(require,module,exports){
+},{"./_stream_readable":95,"./_stream_writable":97,"_process":91,"core-util-is":98,"inherits":88}],94:[function(require,module,exports){
 // Copyright Joyent, Inc. and other Node contributors.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
@@ -24540,7 +28066,7 @@ PassThrough.prototype._transform = function(chunk, encoding, cb) {
   cb(null, chunk);
 };
 
-},{"./_stream_transform":95,"core-util-is":97,"inherits":87}],94:[function(require,module,exports){
+},{"./_stream_transform":96,"core-util-is":98,"inherits":88}],95:[function(require,module,exports){
 (function (process){
 // Copyright Joyent, Inc. and other Node contributors.
 //
@@ -25526,7 +29052,7 @@ function indexOf (xs, x) {
 }
 
 }).call(this,require('_process'))
-},{"_process":90,"buffer":82,"core-util-is":97,"events":86,"inherits":87,"isarray":88,"stream":102,"string_decoder/":103}],95:[function(require,module,exports){
+},{"_process":91,"buffer":83,"core-util-is":98,"events":87,"inherits":88,"isarray":89,"stream":103,"string_decoder/":104}],96:[function(require,module,exports){
 // Copyright Joyent, Inc. and other Node contributors.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
@@ -25738,7 +29264,7 @@ function done(stream, er) {
   return stream.push(null);
 }
 
-},{"./_stream_duplex":92,"core-util-is":97,"inherits":87}],96:[function(require,module,exports){
+},{"./_stream_duplex":93,"core-util-is":98,"inherits":88}],97:[function(require,module,exports){
 (function (process){
 // Copyright Joyent, Inc. and other Node contributors.
 //
@@ -26128,7 +29654,7 @@ function endWritable(stream, state, cb) {
 }
 
 }).call(this,require('_process'))
-},{"./_stream_duplex":92,"_process":90,"buffer":82,"core-util-is":97,"inherits":87,"stream":102}],97:[function(require,module,exports){
+},{"./_stream_duplex":93,"_process":91,"buffer":83,"core-util-is":98,"inherits":88,"stream":103}],98:[function(require,module,exports){
 (function (Buffer){
 // Copyright Joyent, Inc. and other Node contributors.
 //
@@ -26238,10 +29764,10 @@ function objectToString(o) {
   return Object.prototype.toString.call(o);
 }
 }).call(this,require("buffer").Buffer)
-},{"buffer":82}],98:[function(require,module,exports){
+},{"buffer":83}],99:[function(require,module,exports){
 module.exports = require("./lib/_stream_passthrough.js")
 
-},{"./lib/_stream_passthrough.js":93}],99:[function(require,module,exports){
+},{"./lib/_stream_passthrough.js":94}],100:[function(require,module,exports){
 var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify
 exports = module.exports = require('./lib/_stream_readable.js');
 exports.Stream = Stream;
@@ -26251,13 +29777,13 @@ exports.Duplex = require('./lib/_stream_duplex.js');
 exports.Transform = require('./lib/_stream_transform.js');
 exports.PassThrough = require('./lib/_stream_passthrough.js');
 
-},{"./lib/_stream_duplex.js":92,"./lib/_stream_passthrough.js":93,"./lib/_stream_readable.js":94,"./lib/_stream_transform.js":95,"./lib/_stream_writable.js":96,"stream":102}],100:[function(require,module,exports){
+},{"./lib/_stream_duplex.js":93,"./lib/_stream_passthrough.js":94,"./lib/_stream_readable.js":95,"./lib/_stream_transform.js":96,"./lib/_stream_writable.js":97,"stream":103}],101:[function(require,module,exports){
 module.exports = require("./lib/_stream_transform.js")
 
-},{"./lib/_stream_transform.js":95}],101:[function(require,module,exports){
+},{"./lib/_stream_transform.js":96}],102:[function(require,module,exports){
 module.exports = require("./lib/_stream_writable.js")
 
-},{"./lib/_stream_writable.js":96}],102:[function(require,module,exports){
+},{"./lib/_stream_writable.js":97}],103:[function(require,module,exports){
 // Copyright Joyent, Inc. and other Node contributors.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
@@ -26386,7 +29912,7 @@ Stream.prototype.pipe = function(dest, options) {
   return dest;
 };
 
-},{"events":86,"inherits":87,"readable-stream/duplex.js":91,"readable-stream/passthrough.js":98,"readable-stream/readable.js":99,"readable-stream/transform.js":100,"readable-stream/writable.js":101}],103:[function(require,module,exports){
+},{"events":87,"inherits":88,"readable-stream/duplex.js":92,"readable-stream/passthrough.js":99,"readable-stream/readable.js":100,"readable-stream/transform.js":101,"readable-stream/writable.js":102}],104:[function(require,module,exports){
 // Copyright Joyent, Inc. and other Node contributors.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
@@ -26609,14 +30135,14 @@ function base64DetectIncompleteChar(buffer) {
   this.charLength = this.charReceived ? 3 : 0;
 }
 
-},{"buffer":82}],104:[function(require,module,exports){
+},{"buffer":83}],105:[function(require,module,exports){
 module.exports = function isBuffer(arg) {
   return arg && typeof arg === 'object'
     && typeof arg.copy === 'function'
     && typeof arg.fill === 'function'
     && typeof arg.readUInt8 === 'function';
 }
-},{}],105:[function(require,module,exports){
+},{}],106:[function(require,module,exports){
 (function (process,global){
 // Copyright Joyent, Inc. and other Node contributors.
 //
@@ -27206,9 +30732,11253 @@ function hasOwnProperty(obj, prop) {
 }
 
 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"./support/isBuffer":104,"_process":90,"inherits":87}],106:[function(require,module,exports){
-module.exports=require(61)
-},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/lodash/dist/lodash.js":61}],107:[function(require,module,exports){
+},{"./support/isBuffer":105,"_process":91,"inherits":88}],107:[function(require,module,exports){
+(function (global){
+/**
+ * @license
+ * lodash 3.2.0 (Custom Build) <https://lodash.com/>
+ * Build: `lodash modern -d -o ./index.js`
+ * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+ * Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
+ * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license <https://lodash.com/license>
+ */
+;(function() {
+
+  /** Used as a safe reference for `undefined` in pre-ES5 environments. */
+  var undefined;
+
+  /** Used as the semantic version number. */
+  var VERSION = '3.2.0';
+
+  /** Used to compose bitmasks for wrapper metadata. */
+  var BIND_FLAG = 1,
+      BIND_KEY_FLAG = 2,
+      CURRY_BOUND_FLAG = 4,
+      CURRY_FLAG = 8,
+      CURRY_RIGHT_FLAG = 16,
+      PARTIAL_FLAG = 32,
+      PARTIAL_RIGHT_FLAG = 64,
+      REARG_FLAG = 128,
+      ARY_FLAG = 256;
+
+  /** Used as default options for `_.trunc`. */
+  var DEFAULT_TRUNC_LENGTH = 30,
+      DEFAULT_TRUNC_OMISSION = '...';
+
+  /** Used to detect when a function becomes hot. */
+  var HOT_COUNT = 150,
+      HOT_SPAN = 16;
+
+  /** Used to indicate the type of lazy iteratees. */
+  var LAZY_FILTER_FLAG = 0,
+      LAZY_MAP_FLAG = 1,
+      LAZY_WHILE_FLAG = 2;
+
+  /** Used as the `TypeError` message for "Functions" methods. */
+  var FUNC_ERROR_TEXT = 'Expected a function';
+
+  /** Used as the internal argument placeholder. */
+  var PLACEHOLDER = '__lodash_placeholder__';
+
+  /** `Object#toString` result references. */
+  var argsTag = '[object Arguments]',
+      arrayTag = '[object Array]',
+      boolTag = '[object Boolean]',
+      dateTag = '[object Date]',
+      errorTag = '[object Error]',
+      funcTag = '[object Function]',
+      mapTag = '[object Map]',
+      numberTag = '[object Number]',
+      objectTag = '[object Object]',
+      regexpTag = '[object RegExp]',
+      setTag = '[object Set]',
+      stringTag = '[object String]',
+      weakMapTag = '[object WeakMap]';
+
+  var arrayBufferTag = '[object ArrayBuffer]',
+      float32Tag = '[object Float32Array]',
+      float64Tag = '[object Float64Array]',
+      int8Tag = '[object Int8Array]',
+      int16Tag = '[object Int16Array]',
+      int32Tag = '[object Int32Array]',
+      uint8Tag = '[object Uint8Array]',
+      uint8ClampedTag = '[object Uint8ClampedArray]',
+      uint16Tag = '[object Uint16Array]',
+      uint32Tag = '[object Uint32Array]';
+
+  /** Used to match empty string literals in compiled template source. */
+  var reEmptyStringLeading = /\b__p \+= '';/g,
+      reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
+      reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
+
+  /** Used to match HTML entities and HTML characters. */
+  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g,
+      reUnescapedHtml = /[&<>"'`]/g,
+      reHasEscapedHtml = RegExp(reEscapedHtml.source),
+      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
+
+  /** Used to match template delimiters. */
+  var reEscape = /<%-([\s\S]+?)%>/g,
+      reEvaluate = /<%([\s\S]+?)%>/g,
+      reInterpolate = /<%=([\s\S]+?)%>/g;
+
+  /**
+   * Used to match ES template delimiters.
+   * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components)
+   * for more details.
+   */
+  var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
+
+  /** Used to match `RegExp` flags from their coerced string values. */
+  var reFlags = /\w*$/;
+
+  /** Used to detect named functions. */
+  var reFuncName = /^\s*function[ \n\r\t]+\w/;
+
+  /** Used to detect hexadecimal string values. */
+  var reHexPrefix = /^0[xX]/;
+
+  /** Used to detect host constructors (Safari > 5). */
+  var reHostCtor = /^\[object .+?Constructor\]$/;
+
+  /** Used to match latin-1 supplementary letters (excluding mathematical operators). */
+  var reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g;
+
+  /** Used to ensure capturing order of template delimiters. */
+  var reNoMatch = /($^)/;
+
+  /**
+   * Used to match `RegExp` special characters.
+   * See this [article on `RegExp` characters](http://www.regular-expressions.info/characters.html#special)
+   * for more details.
+   */
+  var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
+      reHasRegExpChars = RegExp(reRegExpChars.source);
+
+  /** Used to detect functions containing a `this` reference. */
+  var reThis = /\bthis\b/;
+
+  /** Used to match unescaped characters in compiled string literals. */
+  var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
+
+  /** Used to match words to create compound words. */
+  var reWords = (function() {
+    var upper = '[A-Z\\xc0-\\xd6\\xd8-\\xde]',
+        lower = '[a-z\\xdf-\\xf6\\xf8-\\xff]+';
+
+    return RegExp(upper + '{2,}(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g');
+  }());
+
+  /** Used to detect and test for whitespace. */
+  var whitespace = (
+    // Basic whitespace characters.
+    ' \t\x0b\f\xa0\ufeff' +
+
+    // Line terminators.
+    '\n\r\u2028\u2029' +
+
+    // Unicode category "Zs" space separators.
+    '\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000'
+  );
+
+  /** Used to assign default `context` object properties. */
+  var contextProps = [
+    'Array', 'ArrayBuffer', 'Date', 'Error', 'Float32Array', 'Float64Array',
+    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Math', 'Number',
+    'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'document',
+    'isFinite', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array',
+    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
+    'window', 'WinRTError'
+  ];
+
+  /** Used to make template sourceURLs easier to identify. */
+  var templateCounter = -1;
+
+  /** Used to identify `toStringTag` values of typed arrays. */
+  var typedArrayTags = {};
+  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
+  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
+  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
+  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
+  typedArrayTags[uint32Tag] = true;
+  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
+  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
+  typedArrayTags[dateTag] = typedArrayTags[errorTag] =
+  typedArrayTags[funcTag] = typedArrayTags[mapTag] =
+  typedArrayTags[numberTag] = typedArrayTags[objectTag] =
+  typedArrayTags[regexpTag] = typedArrayTags[setTag] =
+  typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
+
+  /** Used to identify `toStringTag` values supported by `_.clone`. */
+  var cloneableTags = {};
+  cloneableTags[argsTag] = cloneableTags[arrayTag] =
+  cloneableTags[arrayBufferTag] = cloneableTags[boolTag] =
+  cloneableTags[dateTag] = cloneableTags[float32Tag] =
+  cloneableTags[float64Tag] = cloneableTags[int8Tag] =
+  cloneableTags[int16Tag] = cloneableTags[int32Tag] =
+  cloneableTags[numberTag] = cloneableTags[objectTag] =
+  cloneableTags[regexpTag] = cloneableTags[stringTag] =
+  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
+  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
+  cloneableTags[errorTag] = cloneableTags[funcTag] =
+  cloneableTags[mapTag] = cloneableTags[setTag] =
+  cloneableTags[weakMapTag] = false;
+
+  /** Used as an internal `_.debounce` options object by `_.throttle`. */
+  var debounceOptions = {
+    'leading': false,
+    'maxWait': 0,
+    'trailing': false
+  };
+
+  /** Used to map latin-1 supplementary letters to basic latin letters. */
+  var deburredLetters = {
+    '\xc0': 'A',  '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
+    '\xe0': 'a',  '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
+    '\xc7': 'C',  '\xe7': 'c',
+    '\xd0': 'D',  '\xf0': 'd',
+    '\xc8': 'E',  '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
+    '\xe8': 'e',  '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
+    '\xcC': 'I',  '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
+    '\xeC': 'i',  '\xed': 'i', '\xee': 'i', '\xef': 'i',
+    '\xd1': 'N',  '\xf1': 'n',
+    '\xd2': 'O',  '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
+    '\xf2': 'o',  '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
+    '\xd9': 'U',  '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
+    '\xf9': 'u',  '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
+    '\xdd': 'Y',  '\xfd': 'y', '\xff': 'y',
+    '\xc6': 'Ae', '\xe6': 'ae',
+    '\xde': 'Th', '\xfe': 'th',
+    '\xdf': 'ss'
+  };
+
+  /** Used to map characters to HTML entities. */
+  var htmlEscapes = {
+    '&': '&amp;',
+    '<': '&lt;',
+    '>': '&gt;',
+    '"': '&quot;',
+    "'": '&#39;',
+    '`': '&#96;'
+  };
+
+  /** Used to map HTML entities to characters. */
+  var htmlUnescapes = {
+    '&amp;': '&',
+    '&lt;': '<',
+    '&gt;': '>',
+    '&quot;': '"',
+    '&#39;': "'",
+    '&#96;': '`'
+  };
+
+  /** Used to determine if values are of the language type `Object`. */
+  var objectTypes = {
+    'function': true,
+    'object': true
+  };
+
+  /** Used to escape characters for inclusion in compiled string literals. */
+  var stringEscapes = {
+    '\\': '\\',
+    "'": "'",
+    '\n': 'n',
+    '\r': 'r',
+    '\u2028': 'u2028',
+    '\u2029': 'u2029'
+  };
+
+  /**
+   * Used as a reference to the global object.
+   *
+   * The `this` value is used if it is the global object to avoid Greasemonkey's
+   * restricted `window` object, otherwise the `window` object is used.
+   */
+  var root = (objectTypes[typeof window] && window !== (this && this.window)) ? window : this;
+
+  /** Detect free variable `exports`. */
+  var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
+
+  /** Detect free variable `module`. */
+  var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;
+
+  /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */
+  var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;
+  if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {
+    root = freeGlobal;
+  }
+
+  /** Detect the popular CommonJS extension `module.exports`. */
+  var moduleExports = freeModule && freeModule.exports === freeExports && freeExports;
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * The base implementation of `compareAscending` which compares values and
+   * sorts them in ascending order without guaranteeing a stable sort.
+   *
+   * @private
+   * @param {*} value The value to compare to `other`.
+   * @param {*} other The value to compare to `value`.
+   * @returns {number} Returns the sort order indicator for `value`.
+   */
+  function baseCompareAscending(value, other) {
+    if (value !== other) {
+      var valIsReflexive = value === value,
+          othIsReflexive = other === other;
+
+      if (value > other || !valIsReflexive || (typeof value == 'undefined' && othIsReflexive)) {
+        return 1;
+      }
+      if (value < other || !othIsReflexive || (typeof other == 'undefined' && valIsReflexive)) {
+        return -1;
+      }
+    }
+    return 0;
+  }
+
+  /**
+   * The base implementation of `_.indexOf` without support for binary searches.
+   *
+   * @private
+   * @param {Array} array The array to search.
+   * @param {*} value The value to search for.
+   * @param {number} [fromIndex=0] The index to search from.
+   * @returns {number} Returns the index of the matched value, else `-1`.
+   */
+  function baseIndexOf(array, value, fromIndex) {
+    if (value !== value) {
+      return indexOfNaN(array, fromIndex);
+    }
+    var index = (fromIndex || 0) - 1,
+        length = array.length;
+
+    while (++index < length) {
+      if (array[index] === value) {
+        return index;
+      }
+    }
+    return -1;
+  }
+
+  /**
+   * The base implementation of `_.sortBy` and `_.sortByAll` which uses `comparer`
+   * to define the sort order of `array` and replaces criteria objects with their
+   * corresponding values.
+   *
+   * @private
+   * @param {Array} array The array to sort.
+   * @param {Function} comparer The function to define sort order.
+   * @returns {Array} Returns `array`.
+   */
+  function baseSortBy(array, comparer) {
+    var length = array.length;
+
+    array.sort(comparer);
+    while (length--) {
+      array[length] = array[length].value;
+    }
+    return array;
+  }
+
+  /**
+   * Converts `value` to a string if it is not one. An empty string is returned
+   * for `null` or `undefined` values.
+   *
+   * @private
+   * @param {*} value The value to process.
+   * @returns {string} Returns the string.
+   */
+  function baseToString(value) {
+    if (typeof value == 'string') {
+      return value;
+    }
+    return value == null ? '' : (value + '');
+  }
+
+  /**
+   * Used by `_.max` and `_.min` as the default callback for string values.
+   *
+   * @private
+   * @param {string} string The string to inspect.
+   * @returns {number} Returns the code unit of the first character of the string.
+   */
+  function charAtCallback(string) {
+    return string.charCodeAt(0);
+  }
+
+  /**
+   * Used by `_.trim` and `_.trimLeft` to get the index of the first character
+   * of `string` that is not found in `chars`.
+   *
+   * @private
+   * @param {string} string The string to inspect.
+   * @param {string} chars The characters to find.
+   * @returns {number} Returns the index of the first character not found in `chars`.
+   */
+  function charsLeftIndex(string, chars) {
+    var index = -1,
+        length = string.length;
+
+    while (++index < length && chars.indexOf(string.charAt(index)) > -1) {}
+    return index;
+  }
+
+  /**
+   * Used by `_.trim` and `_.trimRight` to get the index of the last character
+   * of `string` that is not found in `chars`.
+   *
+   * @private
+   * @param {string} string The string to inspect.
+   * @param {string} chars The characters to find.
+   * @returns {number} Returns the index of the last character not found in `chars`.
+   */
+  function charsRightIndex(string, chars) {
+    var index = string.length;
+
+    while (index-- && chars.indexOf(string.charAt(index)) > -1) {}
+    return index;
+  }
+
+  /**
+   * Used by `_.sortBy` to compare transformed elements of a collection and stable
+   * sort them in ascending order.
+   *
+   * @private
+   * @param {Object} object The object to compare to `other`.
+   * @param {Object} other The object to compare to `object`.
+   * @returns {number} Returns the sort order indicator for `object`.
+   */
+  function compareAscending(object, other) {
+    return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index);
+  }
+
+  /**
+   * Used by `_.sortByAll` to compare multiple properties of each element
+   * in a collection and stable sort them in ascending order.
+   *
+   * @private
+   * @param {Object} object The object to compare to `other`.
+   * @param {Object} other The object to compare to `object`.
+   * @returns {number} Returns the sort order indicator for `object`.
+   */
+  function compareMultipleAscending(object, other) {
+    var index = -1,
+        objCriteria = object.criteria,
+        othCriteria = other.criteria,
+        length = objCriteria.length;
+
+    while (++index < length) {
+      var result = baseCompareAscending(objCriteria[index], othCriteria[index]);
+      if (result) {
+        return result;
+      }
+    }
+    // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
+    // that causes it, under certain circumstances, to provide the same value for
+    // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
+    // for more details.
+    //
+    // This also ensures a stable sort in V8 and other engines.
+    // See https://code.google.com/p/v8/issues/detail?id=90 for more details.
+    return object.index - other.index;
+  }
+
+  /**
+   * Used by `_.deburr` to convert latin-1 supplementary letters to basic latin letters.
+   *
+   * @private
+   * @param {string} letter The matched letter to deburr.
+   * @returns {string} Returns the deburred letter.
+   */
+  function deburrLetter(letter) {
+    return deburredLetters[letter];
+  }
+
+  /**
+   * Used by `_.escape` to convert characters to HTML entities.
+   *
+   * @private
+   * @param {string} chr The matched character to escape.
+   * @returns {string} Returns the escaped character.
+   */
+  function escapeHtmlChar(chr) {
+    return htmlEscapes[chr];
+  }
+
+  /**
+   * Used by `_.template` to escape characters for inclusion in compiled
+   * string literals.
+   *
+   * @private
+   * @param {string} chr The matched character to escape.
+   * @returns {string} Returns the escaped character.
+   */
+  function escapeStringChar(chr) {
+    return '\\' + stringEscapes[chr];
+  }
+
+  /**
+   * Gets the index at which the first occurrence of `NaN` is found in `array`.
+   * If `fromRight` is provided elements of `array` are iterated from right to left.
+   *
+   * @private
+   * @param {Array} array The array to search.
+   * @param {number} [fromIndex] The index to search from.
+   * @param {boolean} [fromRight] Specify iterating from right to left.
+   * @returns {number} Returns the index of the matched `NaN`, else `-1`.
+   */
+  function indexOfNaN(array, fromIndex, fromRight) {
+    var length = array.length,
+        index = fromRight ? (fromIndex || length) : ((fromIndex || 0) - 1);
+
+    while ((fromRight ? index-- : ++index < length)) {
+      var other = array[index];
+      if (other !== other) {
+        return index;
+      }
+    }
+    return -1;
+  }
+
+  /**
+   * Checks if `value` is object-like.
+   *
+   * @private
+   * @param {*} value The value to check.
+   * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+   */
+  function isObjectLike(value) {
+    return (value && typeof value == 'object') || false;
+  }
+
+  /**
+   * Used by `trimmedLeftIndex` and `trimmedRightIndex` to determine if a
+   * character code is whitespace.
+   *
+   * @private
+   * @param {number} charCode The character code to inspect.
+   * @returns {boolean} Returns `true` if `charCode` is whitespace, else `false`.
+   */
+  function isSpace(charCode) {
+    return ((charCode <= 160 && (charCode >= 9 && charCode <= 13) || charCode == 32 || charCode == 160) || charCode == 5760 || charCode == 6158 ||
+      (charCode >= 8192 && (charCode <= 8202 || charCode == 8232 || charCode == 8233 || charCode == 8239 || charCode == 8287 || charCode == 12288 || charCode == 65279)));
+  }
+
+  /**
+   * Replaces all `placeholder` elements in `array` with an internal placeholder
+   * and returns an array of their indexes.
+   *
+   * @private
+   * @param {Array} array The array to modify.
+   * @param {*} placeholder The placeholder to replace.
+   * @returns {Array} Returns the new array of placeholder indexes.
+   */
+  function replaceHolders(array, placeholder) {
+    var index = -1,
+        length = array.length,
+        resIndex = -1,
+        result = [];
+
+    while (++index < length) {
+      if (array[index] === placeholder) {
+        array[index] = PLACEHOLDER;
+        result[++resIndex] = index;
+      }
+    }
+    return result;
+  }
+
+  /**
+   * An implementation of `_.uniq` optimized for sorted arrays without support
+   * for callback shorthands and `this` binding.
+   *
+   * @private
+   * @param {Array} array The array to inspect.
+   * @param {Function} [iteratee] The function invoked per iteration.
+   * @returns {Array} Returns the new duplicate-value-free array.
+   */
+  function sortedUniq(array, iteratee) {
+    var seen,
+        index = -1,
+        length = array.length,
+        resIndex = -1,
+        result = [];
+
+    while (++index < length) {
+      var value = array[index],
+          computed = iteratee ? iteratee(value, index, array) : value;
+
+      if (!index || seen !== computed) {
+        seen = computed;
+        result[++resIndex] = value;
+      }
+    }
+    return result;
+  }
+
+  /**
+   * Used by `_.trim` and `_.trimLeft` to get the index of the first non-whitespace
+   * character of `string`.
+   *
+   * @private
+   * @param {string} string The string to inspect.
+   * @returns {number} Returns the index of the first non-whitespace character.
+   */
+  function trimmedLeftIndex(string) {
+    var index = -1,
+        length = string.length;
+
+    while (++index < length && isSpace(string.charCodeAt(index))) {}
+    return index;
+  }
+
+  /**
+   * Used by `_.trim` and `_.trimRight` to get the index of the last non-whitespace
+   * character of `string`.
+   *
+   * @private
+   * @param {string} string The string to inspect.
+   * @returns {number} Returns the index of the last non-whitespace character.
+   */
+  function trimmedRightIndex(string) {
+    var index = string.length;
+
+    while (index-- && isSpace(string.charCodeAt(index))) {}
+    return index;
+  }
+
+  /**
+   * Used by `_.unescape` to convert HTML entities to characters.
+   *
+   * @private
+   * @param {string} chr The matched character to unescape.
+   * @returns {string} Returns the unescaped character.
+   */
+  function unescapeHtmlChar(chr) {
+    return htmlUnescapes[chr];
+  }
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * Create a new pristine `lodash` function using the given `context` object.
+   *
+   * @static
+   * @memberOf _
+   * @category Utility
+   * @param {Object} [context=root] The context object.
+   * @returns {Function} Returns a new `lodash` function.
+   * @example
+   *
+   * _.mixin({ 'add': function(a, b) { return a + b; } });
+   *
+   * var lodash = _.runInContext();
+   * lodash.mixin({ 'sub': function(a, b) { return a - b; } });
+   *
+   * _.isFunction(_.add);
+   * // => true
+   * _.isFunction(_.sub);
+   * // => false
+   *
+   * lodash.isFunction(lodash.add);
+   * // => false
+   * lodash.isFunction(lodash.sub);
+   * // => true
+   *
+   * // using `context` to mock `Date#getTime` use in `_.now`
+   * var mock = _.runInContext({
+   *   'Date': function() {
+   *     return { 'getTime': getTimeMock };
+   *   }
+   * });
+   *
+   * // or creating a suped-up `defer` in Node.js
+   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
+   */
+  function runInContext(context) {
+    // Avoid issues with some ES3 environments that attempt to use values, named
+    // after built-in constructors like `Object`, for the creation of literals.
+    // ES5 clears this up by stating that literals must use built-in constructors.
+    // See https://es5.github.io/#x11.1.5 for more details.
+    context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root;
+
+    /** Native constructor references. */
+    var Array = context.Array,
+        Date = context.Date,
+        Error = context.Error,
+        Function = context.Function,
+        Math = context.Math,
+        Number = context.Number,
+        Object = context.Object,
+        RegExp = context.RegExp,
+        String = context.String,
+        TypeError = context.TypeError;
+
+    /** Used for native method references. */
+    var arrayProto = Array.prototype,
+        objectProto = Object.prototype;
+
+    /** Used to detect DOM support. */
+    var document = (document = context.window) && document.document;
+
+    /** Used to resolve the decompiled source of functions. */
+    var fnToString = Function.prototype.toString;
+
+    /** Used to the length of n-tuples for `_.unzip`. */
+    var getLength = baseProperty('length');
+
+    /** Used to check objects for own properties. */
+    var hasOwnProperty = objectProto.hasOwnProperty;
+
+    /** Used to generate unique IDs. */
+    var idCounter = 0;
+
+    /**
+     * Used to resolve the `toStringTag` of values.
+     * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
+     * for more details.
+     */
+    var objToString = objectProto.toString;
+
+    /** Used to restore the original `_` reference in `_.noConflict`. */
+    var oldDash = context._;
+
+    /** Used to detect if a method is native. */
+    var reNative = RegExp('^' +
+      escapeRegExp(objToString)
+      .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
+    );
+
+    /** Native method references. */
+    var ArrayBuffer = isNative(ArrayBuffer = context.ArrayBuffer) && ArrayBuffer,
+        bufferSlice = isNative(bufferSlice = ArrayBuffer && new ArrayBuffer(0).slice) && bufferSlice,
+        ceil = Math.ceil,
+        clearTimeout = context.clearTimeout,
+        floor = Math.floor,
+        getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf,
+        push = arrayProto.push,
+        propertyIsEnumerable = objectProto.propertyIsEnumerable,
+        Set = isNative(Set = context.Set) && Set,
+        setTimeout = context.setTimeout,
+        splice = arrayProto.splice,
+        Uint8Array = isNative(Uint8Array = context.Uint8Array) && Uint8Array,
+        WeakMap = isNative(WeakMap = context.WeakMap) && WeakMap;
+
+    /** Used to clone array buffers. */
+    var Float64Array = (function() {
+      // Safari 5 errors when using an array buffer to initialize a typed array
+      // where the array buffer's `byteLength` is not a multiple of the typed
+      // array's `BYTES_PER_ELEMENT`.
+      try {
+        var func = isNative(func = context.Float64Array) && func,
+            result = new func(new ArrayBuffer(10), 0, 1) && func;
+      } catch(e) {}
+      return result;
+    }());
+
+    /* Native method references for those with the same name as other `lodash` methods. */
+    var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray,
+        nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate,
+        nativeIsFinite = context.isFinite,
+        nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys,
+        nativeMax = Math.max,
+        nativeMin = Math.min,
+        nativeNow = isNative(nativeNow = Date.now) && nativeNow,
+        nativeNumIsFinite = isNative(nativeNumIsFinite = Number.isFinite) && nativeNumIsFinite,
+        nativeParseInt = context.parseInt,
+        nativeRandom = Math.random;
+
+    /** Used as references for `-Infinity` and `Infinity`. */
+    var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY,
+        POSITIVE_INFINITY = Number.POSITIVE_INFINITY;
+
+    /** Used as references for the maximum length and index of an array. */
+    var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1,
+        MAX_ARRAY_INDEX =  MAX_ARRAY_LENGTH - 1,
+        HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
+
+    /** Used as the size, in bytes, of each `Float64Array` element. */
+    var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0;
+
+    /**
+     * Used as the maximum length of an array-like value.
+     * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
+     * for more details.
+     */
+    var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
+
+    /** Used to store function metadata. */
+    var metaMap = WeakMap && new WeakMap;
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates a `lodash` object which wraps `value` to enable implicit chaining.
+     * Methods that operate on and return arrays, collections, and functions can
+     * be chained together. Methods that return a boolean or single value will
+     * automatically end the chain returning the unwrapped value. Explicit chaining
+     * may be enabled using `_.chain`. The execution of chained methods is lazy,
+     * that is, execution is deferred until `_#value` is implicitly or explicitly
+     * called.
+     *
+     * Lazy evaluation allows several methods to support shortcut fusion. Shortcut
+     * fusion is an optimization that merges iteratees to avoid creating intermediate
+     * arrays and reduce the number of iteratee executions.
+     *
+     * Chaining is supported in custom builds as long as the `_#value` method is
+     * directly or indirectly included in the build.
+     *
+     * In addition to lodash methods, wrappers also have the following `Array` methods:
+     * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, `splice`,
+     * and `unshift`
+     *
+     * The wrapper methods that support shortcut fusion are:
+     * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,
+     * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,
+     * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`,
+     * and `where`
+     *
+     * The chainable wrapper methods are:
+     * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,
+     * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,
+     * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`,
+     * `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`,
+     * `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`,
+     * `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`,
+     * `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`,
+     * `keysIn`, `map`, `mapValues`, `matches`, `memoize`, `merge`, `mixin`,
+     * `negate`, `noop`, `omit`, `once`, `pairs`, `partial`, `partialRight`,
+     * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`,
+     * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `reverse`,
+     * `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, `splice`, `spread`,
+     * `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`,
+     * `thru`, `times`, `toArray`, `toPlainObject`, `transform`, `union`, `uniq`,
+     * `unshift`, `unzip`, `values`, `valuesIn`, `where`, `without`, `wrap`, `xor`,
+     * `zip`, and `zipObject`
+     *
+     * The wrapper methods that are **not** chainable by default are:
+     * `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`,
+     * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`,
+     * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`,
+     * `identity`, `includes`, `indexOf`, `isArguments`, `isArray`, `isBoolean`,
+     * `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`, `isFinite`,
+     * `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`,
+     * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`,
+     * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`,
+     * `noConflict`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`,
+     * `random`, `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`,
+     * `shift`, `size`, `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`,
+     * `startCase`, `startsWith`, `template`, `trim`, `trimLeft`, `trimRight`,
+     * `trunc`, `unescape`, `uniqueId`, `value`, and `words`
+     *
+     * The wrapper method `sample` will return a wrapped value when `n` is provided,
+     * otherwise an unwrapped value is returned.
+     *
+     * @name _
+     * @constructor
+     * @category Chain
+     * @param {*} value The value to wrap in a `lodash` instance.
+     * @returns {Object} Returns the new `lodash` wrapper instance.
+     * @example
+     *
+     * var wrapped = _([1, 2, 3]);
+     *
+     * // returns an unwrapped value
+     * wrapped.reduce(function(sum, n) { return sum + n; });
+     * // => 6
+     *
+     * // returns a wrapped value
+     * var squares = wrapped.map(function(n) { return n * n; });
+     *
+     * _.isArray(squares);
+     * // => false
+     *
+     * _.isArray(squares.value());
+     * // => true
+     */
+    function lodash(value) {
+      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
+        if (value instanceof LodashWrapper) {
+          return value;
+        }
+        if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) {
+          return wrapperClone(value);
+        }
+      }
+      return new LodashWrapper(value);
+    }
+
+    /**
+     * The base constructor for creating `lodash` wrapper objects.
+     *
+     * @private
+     * @param {*} value The value to wrap.
+     * @param {boolean} [chainAll] Enable chaining for all wrapper methods.
+     * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value.
+     */
+    function LodashWrapper(value, chainAll, actions) {
+      this.__wrapped__ = value;
+      this.__actions__ = actions || [];
+      this.__chain__ = !!chainAll;
+    }
+
+    /**
+     * An object environment feature flags.
+     *
+     * @static
+     * @memberOf _
+     * @type Object
+     */
+    var support = lodash.support = {};
+
+    (function(x) {
+
+      /**
+       * Detect if functions can be decompiled by `Function#toString`
+       * (all but Firefox OS certified apps, older Opera mobile browsers, and
+       * the PlayStation 3; forced `false` for Windows 8 apps).
+       *
+       * @memberOf _.support
+       * @type boolean
+       */
+      support.funcDecomp = !isNative(context.WinRTError) && reThis.test(runInContext);
+
+      /**
+       * Detect if `Function#name` is supported (all but IE).
+       *
+       * @memberOf _.support
+       * @type boolean
+       */
+      support.funcNames = typeof Function.name == 'string';
+
+      /**
+       * Detect if the DOM is supported.
+       *
+       * @memberOf _.support
+       * @type boolean
+       */
+      try {
+        support.dom = document.createDocumentFragment().nodeType === 11;
+      } catch(e) {
+        support.dom = false;
+      }
+
+      /**
+       * Detect if `arguments` object indexes are non-enumerable.
+       *
+       * In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object
+       * indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat
+       * `arguments` object indexes as non-enumerable and fail `hasOwnProperty`
+       * checks for indexes that exceed their function's formal parameters with
+       * associated values of `0`.
+       *
+       * @memberOf _.support
+       * @type boolean
+       */
+      try {
+        support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1);
+      } catch(e) {
+        support.nonEnumArgs = true;
+      }
+    }(0, 0));
+
+    /**
+     * By default, the template delimiters used by lodash are like those in
+     * embedded Ruby (ERB). Change the following template settings to use
+     * alternative delimiters.
+     *
+     * @static
+     * @memberOf _
+     * @type Object
+     */
+    lodash.templateSettings = {
+
+      /**
+       * Used to detect `data` property values to be HTML-escaped.
+       *
+       * @memberOf _.templateSettings
+       * @type RegExp
+       */
+      'escape': reEscape,
+
+      /**
+       * Used to detect code to be evaluated.
+       *
+       * @memberOf _.templateSettings
+       * @type RegExp
+       */
+      'evaluate': reEvaluate,
+
+      /**
+       * Used to detect `data` property values to inject.
+       *
+       * @memberOf _.templateSettings
+       * @type RegExp
+       */
+      'interpolate': reInterpolate,
+
+      /**
+       * Used to reference the data object in the template text.
+       *
+       * @memberOf _.templateSettings
+       * @type string
+       */
+      'variable': '',
+
+      /**
+       * Used to import variables into the compiled template.
+       *
+       * @memberOf _.templateSettings
+       * @type Object
+       */
+      'imports': {
+
+        /**
+         * A reference to the `lodash` function.
+         *
+         * @memberOf _.templateSettings.imports
+         * @type Function
+         */
+        '_': lodash
+      }
+    };
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
+     *
+     * @private
+     * @param {*} value The value to wrap.
+     */
+    function LazyWrapper(value) {
+      this.__wrapped__ = value;
+      this.__actions__ = null;
+      this.__dir__ = 1;
+      this.__dropCount__ = 0;
+      this.__filtered__ = false;
+      this.__iteratees__ = null;
+      this.__takeCount__ = POSITIVE_INFINITY;
+      this.__views__ = null;
+    }
+
+    /**
+     * Creates a clone of the lazy wrapper object.
+     *
+     * @private
+     * @name clone
+     * @memberOf LazyWrapper
+     * @returns {Object} Returns the cloned `LazyWrapper` object.
+     */
+    function lazyClone() {
+      var actions = this.__actions__,
+          iteratees = this.__iteratees__,
+          views = this.__views__,
+          result = new LazyWrapper(this.__wrapped__);
+
+      result.__actions__ = actions ? arrayCopy(actions) : null;
+      result.__dir__ = this.__dir__;
+      result.__dropCount__ = this.__dropCount__;
+      result.__filtered__ = this.__filtered__;
+      result.__iteratees__ = iteratees ? arrayCopy(iteratees) : null;
+      result.__takeCount__ = this.__takeCount__;
+      result.__views__ = views ? arrayCopy(views) : null;
+      return result;
+    }
+
+    /**
+     * Reverses the direction of lazy iteration.
+     *
+     * @private
+     * @name reverse
+     * @memberOf LazyWrapper
+     * @returns {Object} Returns the new reversed `LazyWrapper` object.
+     */
+    function lazyReverse() {
+      if (this.__filtered__) {
+        var result = new LazyWrapper(this);
+        result.__dir__ = -1;
+        result.__filtered__ = true;
+      } else {
+        result = this.clone();
+        result.__dir__ *= -1;
+      }
+      return result;
+    }
+
+    /**
+     * Extracts the unwrapped value from its lazy wrapper.
+     *
+     * @private
+     * @name value
+     * @memberOf LazyWrapper
+     * @returns {*} Returns the unwrapped value.
+     */
+    function lazyValue() {
+      var array = this.__wrapped__.value();
+      if (!isArray(array)) {
+        return baseWrapperValue(array, this.__actions__);
+      }
+      var dir = this.__dir__,
+          isRight = dir < 0,
+          view = getView(0, array.length, this.__views__),
+          start = view.start,
+          end = view.end,
+          length = end - start,
+          dropCount = this.__dropCount__,
+          takeCount = nativeMin(length, this.__takeCount__),
+          index = isRight ? end : start - 1,
+          iteratees = this.__iteratees__,
+          iterLength = iteratees ? iteratees.length : 0,
+          resIndex = 0,
+          result = [];
+
+      outer:
+      while (length-- && resIndex < takeCount) {
+        index += dir;
+
+        var iterIndex = -1,
+            value = array[index];
+
+        while (++iterIndex < iterLength) {
+          var data = iteratees[iterIndex],
+              iteratee = data.iteratee,
+              computed = iteratee(value, index, array),
+              type = data.type;
+
+          if (type == LAZY_MAP_FLAG) {
+            value = computed;
+          } else if (!computed) {
+            if (type == LAZY_FILTER_FLAG) {
+              continue outer;
+            } else {
+              break outer;
+            }
+          }
+        }
+        if (dropCount) {
+          dropCount--;
+        } else {
+          result[resIndex++] = value;
+        }
+      }
+      return result;
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates a cache object to store key/value pairs.
+     *
+     * @private
+     * @static
+     * @name Cache
+     * @memberOf _.memoize
+     */
+    function MapCache() {
+      this.__data__ = {};
+    }
+
+    /**
+     * Removes `key` and its value from the cache.
+     *
+     * @private
+     * @name delete
+     * @memberOf _.memoize.Cache
+     * @param {string} key The key of the value to remove.
+     * @returns {boolean} Returns `true` if the entry was removed successfully, else `false`.
+     */
+    function mapDelete(key) {
+      return this.has(key) && delete this.__data__[key];
+    }
+
+    /**
+     * Gets the cached value for `key`.
+     *
+     * @private
+     * @name get
+     * @memberOf _.memoize.Cache
+     * @param {string} key The key of the value to get.
+     * @returns {*} Returns the cached value.
+     */
+    function mapGet(key) {
+      return key == '__proto__' ? undefined : this.__data__[key];
+    }
+
+    /**
+     * Checks if a cached value for `key` exists.
+     *
+     * @private
+     * @name has
+     * @memberOf _.memoize.Cache
+     * @param {string} key The key of the entry to check.
+     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+     */
+    function mapHas(key) {
+      return key != '__proto__' && hasOwnProperty.call(this.__data__, key);
+    }
+
+    /**
+     * Adds `value` to `key` of the cache.
+     *
+     * @private
+     * @name set
+     * @memberOf _.memoize.Cache
+     * @param {string} key The key of the value to cache.
+     * @param {*} value The value to cache.
+     * @returns {Object} Returns the cache object.
+     */
+    function mapSet(key, value) {
+      if (key != '__proto__') {
+        this.__data__[key] = value;
+      }
+      return this;
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     *
+     * Creates a cache object to store unique values.
+     *
+     * @private
+     * @param {Array} [values] The values to cache.
+     */
+    function SetCache(values) {
+      var length = values ? values.length : 0;
+
+      this.data = { 'hash': nativeCreate(null), 'set': new Set };
+      while (length--) {
+        this.push(values[length]);
+      }
+    }
+
+    /**
+     * Checks if `value` is in `cache` mimicking the return signature of
+     * `_.indexOf` by returning `0` if the value is found, else `-1`.
+     *
+     * @private
+     * @param {Object} cache The cache to search.
+     * @param {*} value The value to search for.
+     * @returns {number} Returns `0` if `value` is found, else `-1`.
+     */
+    function cacheIndexOf(cache, value) {
+      var data = cache.data,
+          result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];
+
+      return result ? 0 : -1;
+    }
+
+    /**
+     * Adds `value` to the cache.
+     *
+     * @private
+     * @name push
+     * @memberOf SetCache
+     * @param {*} value The value to cache.
+     */
+    function cachePush(value) {
+      var data = this.data;
+      if (typeof value == 'string' || isObject(value)) {
+        data.set.add(value);
+      } else {
+        data.hash[value] = true;
+      }
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Copies the values of `source` to `array`.
+     *
+     * @private
+     * @param {Array} source The array to copy values from.
+     * @param {Array} [array=[]] The array to copy values to.
+     * @returns {Array} Returns `array`.
+     */
+    function arrayCopy(source, array) {
+      var index = -1,
+          length = source.length;
+
+      array || (array = Array(length));
+      while (++index < length) {
+        array[index] = source[index];
+      }
+      return array;
+    }
+
+    /**
+     * A specialized version of `_.forEach` for arrays without support for callback
+     * shorthands or `this` binding.
+     *
+     * @private
+     * @param {Array} array The array to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Array} Returns `array`.
+     */
+    function arrayEach(array, iteratee) {
+      var index = -1,
+          length = array.length;
+
+      while (++index < length) {
+        if (iteratee(array[index], index, array) === false) {
+          break;
+        }
+      }
+      return array;
+    }
+
+    /**
+     * A specialized version of `_.forEachRight` for arrays without support for
+     * callback shorthands or `this` binding.
+     *
+     * @private
+     * @param {Array} array The array to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Array} Returns `array`.
+     */
+    function arrayEachRight(array, iteratee) {
+      var length = array.length;
+
+      while (length--) {
+        if (iteratee(array[length], length, array) === false) {
+          break;
+        }
+      }
+      return array;
+    }
+
+    /**
+     * A specialized version of `_.every` for arrays without support for callback
+     * shorthands or `this` binding.
+     *
+     * @private
+     * @param {Array} array The array to iterate over.
+     * @param {Function} predicate The function invoked per iteration.
+     * @returns {boolean} Returns `true` if all elements pass the predicate check,
+     *  else `false`.
+     */
+    function arrayEvery(array, predicate) {
+      var index = -1,
+          length = array.length;
+
+      while (++index < length) {
+        if (!predicate(array[index], index, array)) {
+          return false;
+        }
+      }
+      return true;
+    }
+
+    /**
+     * A specialized version of `_.filter` for arrays without support for callback
+     * shorthands or `this` binding.
+     *
+     * @private
+     * @param {Array} array The array to iterate over.
+     * @param {Function} predicate The function invoked per iteration.
+     * @returns {Array} Returns the new filtered array.
+     */
+    function arrayFilter(array, predicate) {
+      var index = -1,
+          length = array.length,
+          resIndex = -1,
+          result = [];
+
+      while (++index < length) {
+        var value = array[index];
+        if (predicate(value, index, array)) {
+          result[++resIndex] = value;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * A specialized version of `_.map` for arrays without support for callback
+     * shorthands or `this` binding.
+     *
+     * @private
+     * @param {Array} array The array to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Array} Returns the new mapped array.
+     */
+    function arrayMap(array, iteratee) {
+      var index = -1,
+          length = array.length,
+          result = Array(length);
+
+      while (++index < length) {
+        result[index] = iteratee(array[index], index, array);
+      }
+      return result;
+    }
+
+    /**
+     * A specialized version of `_.max` for arrays without support for iteratees.
+     *
+     * @private
+     * @param {Array} array The array to iterate over.
+     * @returns {*} Returns the maximum value.
+     */
+    function arrayMax(array) {
+      var index = -1,
+          length = array.length,
+          result = NEGATIVE_INFINITY;
+
+      while (++index < length) {
+        var value = array[index];
+        if (value > result) {
+          result = value;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * A specialized version of `_.min` for arrays without support for iteratees.
+     *
+     * @private
+     * @param {Array} array The array to iterate over.
+     * @returns {*} Returns the minimum value.
+     */
+    function arrayMin(array) {
+      var index = -1,
+          length = array.length,
+          result = POSITIVE_INFINITY;
+
+      while (++index < length) {
+        var value = array[index];
+        if (value < result) {
+          result = value;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * A specialized version of `_.reduce` for arrays without support for callback
+     * shorthands or `this` binding.
+     *
+     * @private
+     * @param {Array} array The array to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @param {*} [accumulator] The initial value.
+     * @param {boolean} [initFromArray] Specify using the first element of `array`
+     *  as the initial value.
+     * @returns {*} Returns the accumulated value.
+     */
+    function arrayReduce(array, iteratee, accumulator, initFromArray) {
+      var index = -1,
+          length = array.length;
+
+      if (initFromArray && length) {
+        accumulator = array[++index];
+      }
+      while (++index < length) {
+        accumulator = iteratee(accumulator, array[index], index, array);
+      }
+      return accumulator;
+    }
+
+    /**
+     * A specialized version of `_.reduceRight` for arrays without support for
+     * callback shorthands or `this` binding.
+     *
+     * @private
+     * @param {Array} array The array to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @param {*} [accumulator] The initial value.
+     * @param {boolean} [initFromArray] Specify using the last element of `array`
+     *  as the initial value.
+     * @returns {*} Returns the accumulated value.
+     */
+    function arrayReduceRight(array, iteratee, accumulator, initFromArray) {
+      var length = array.length;
+      if (initFromArray && length) {
+        accumulator = array[--length];
+      }
+      while (length--) {
+        accumulator = iteratee(accumulator, array[length], length, array);
+      }
+      return accumulator;
+    }
+
+    /**
+     * A specialized version of `_.some` for arrays without support for callback
+     * shorthands or `this` binding.
+     *
+     * @private
+     * @param {Array} array The array to iterate over.
+     * @param {Function} predicate The function invoked per iteration.
+     * @returns {boolean} Returns `true` if any element passes the predicate check,
+     *  else `false`.
+     */
+    function arraySome(array, predicate) {
+      var index = -1,
+          length = array.length;
+
+      while (++index < length) {
+        if (predicate(array[index], index, array)) {
+          return true;
+        }
+      }
+      return false;
+    }
+
+    /**
+     * Used by `_.defaults` to customize its `_.assign` use.
+     *
+     * @private
+     * @param {*} objectValue The destination object property value.
+     * @param {*} sourceValue The source object property value.
+     * @returns {*} Returns the value to assign to the destination object.
+     */
+    function assignDefaults(objectValue, sourceValue) {
+      return typeof objectValue == 'undefined' ? sourceValue : objectValue;
+    }
+
+    /**
+     * Used by `_.template` to customize its `_.assign` use.
+     *
+     * **Note:** This method is like `assignDefaults` except that it ignores
+     * inherited property values when checking if a property is `undefined`.
+     *
+     * @private
+     * @param {*} objectValue The destination object property value.
+     * @param {*} sourceValue The source object property value.
+     * @param {string} key The key associated with the object and source values.
+     * @param {Object} object The destination object.
+     * @returns {*} Returns the value to assign to the destination object.
+     */
+    function assignOwnDefaults(objectValue, sourceValue, key, object) {
+      return (typeof objectValue == 'undefined' || !hasOwnProperty.call(object, key))
+        ? sourceValue
+        : objectValue;
+    }
+
+    /**
+     * The base implementation of `_.assign` without support for argument juggling,
+     * multiple sources, and `this` binding `customizer` functions.
+     *
+     * @private
+     * @param {Object} object The destination object.
+     * @param {Object} source The source object.
+     * @param {Function} [customizer] The function to customize assigning values.
+     * @returns {Object} Returns the destination object.
+     */
+    function baseAssign(object, source, customizer) {
+      var props = keys(source);
+      if (!customizer) {
+        return baseCopy(source, object, props);
+      }
+      var index = -1,
+          length = props.length;
+
+      while (++index < length) {
+        var key = props[index],
+            value = object[key],
+            result = customizer(value, source[key], key, object, source);
+
+        if ((result === result ? result !== value : value === value) ||
+            (typeof value == 'undefined' && !(key in object))) {
+          object[key] = result;
+        }
+      }
+      return object;
+    }
+
+    /**
+     * The base implementation of `_.at` without support for strings and individual
+     * key arguments.
+     *
+     * @private
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {number[]|string[]} [props] The property names or indexes of elements to pick.
+     * @returns {Array} Returns the new array of picked elements.
+     */
+    function baseAt(collection, props) {
+      var index = -1,
+          length = collection.length,
+          isArr = isLength(length),
+          propsLength = props.length,
+          result = Array(propsLength);
+
+      while(++index < propsLength) {
+        var key = props[index];
+        if (isArr) {
+          key = parseFloat(key);
+          result[index] = isIndex(key, length) ? collection[key] : undefined;
+        } else {
+          result[index] = collection[key];
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Copies the properties of `source` to `object`.
+     *
+     * @private
+     * @param {Object} source The object to copy properties from.
+     * @param {Object} [object={}] The object to copy properties to.
+     * @param {Array} props The property names to copy.
+     * @returns {Object} Returns `object`.
+     */
+    function baseCopy(source, object, props) {
+      if (!props) {
+        props = object;
+        object = {};
+      }
+      var index = -1,
+          length = props.length;
+
+      while (++index < length) {
+        var key = props[index];
+        object[key] = source[key];
+      }
+      return object;
+    }
+
+    /**
+     * The base implementation of `_.bindAll` without support for individual
+     * method name arguments.
+     *
+     * @private
+     * @param {Object} object The object to bind and assign the bound methods to.
+     * @param {string[]} methodNames The object method names to bind.
+     * @returns {Object} Returns `object`.
+     */
+    function baseBindAll(object, methodNames) {
+      var index = -1,
+          length = methodNames.length;
+
+      while (++index < length) {
+        var key = methodNames[index];
+        object[key] = createWrapper(object[key], BIND_FLAG, object);
+      }
+      return object;
+    }
+
+    /**
+     * The base implementation of `_.callback` which supports specifying the
+     * number of arguments to provide to `func`.
+     *
+     * @private
+     * @param {*} [func=_.identity] The value to convert to a callback.
+     * @param {*} [thisArg] The `this` binding of `func`.
+     * @param {number} [argCount] The number of arguments to provide to `func`.
+     * @returns {Function} Returns the callback.
+     */
+    function baseCallback(func, thisArg, argCount) {
+      var type = typeof func;
+      if (type == 'function') {
+        return (typeof thisArg != 'undefined' && isBindable(func))
+          ? bindCallback(func, thisArg, argCount)
+          : func;
+      }
+      if (func == null) {
+        return identity;
+      }
+      if (type == 'object') {
+        return baseMatches(func);
+      }
+      return typeof thisArg == 'undefined'
+        ? baseProperty(func + '')
+        : baseMatchesProperty(func + '', thisArg);
+    }
+
+    /**
+     * The base implementation of `_.clone` without support for argument juggling
+     * and `this` binding `customizer` functions.
+     *
+     * @private
+     * @param {*} value The value to clone.
+     * @param {boolean} [isDeep] Specify a deep clone.
+     * @param {Function} [customizer] The function to customize cloning values.
+     * @param {string} [key] The key of `value`.
+     * @param {Object} [object] The object `value` belongs to.
+     * @param {Array} [stackA=[]] Tracks traversed source objects.
+     * @param {Array} [stackB=[]] Associates clones with source counterparts.
+     * @returns {*} Returns the cloned value.
+     */
+    function baseClone(value, isDeep, customizer, key, object, stackA, stackB) {
+      var result;
+      if (customizer) {
+        result = object ? customizer(value, key, object) : customizer(value);
+      }
+      if (typeof result != 'undefined') {
+        return result;
+      }
+      if (!isObject(value)) {
+        return value;
+      }
+      var isArr = isArray(value);
+      if (isArr) {
+        result = initCloneArray(value);
+        if (!isDeep) {
+          return arrayCopy(value, result);
+        }
+      } else {
+        var tag = objToString.call(value),
+            isFunc = tag == funcTag;
+
+        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
+          result = initCloneObject(isFunc ? {} : value);
+          if (!isDeep) {
+            return baseCopy(value, result, keys(value));
+          }
+        } else {
+          return cloneableTags[tag]
+            ? initCloneByTag(value, tag, isDeep)
+            : (object ? value : {});
+        }
+      }
+      // Check for circular references and return corresponding clone.
+      stackA || (stackA = []);
+      stackB || (stackB = []);
+
+      var length = stackA.length;
+      while (length--) {
+        if (stackA[length] == value) {
+          return stackB[length];
+        }
+      }
+      // Add the source value to the stack of traversed objects and associate it with its clone.
+      stackA.push(value);
+      stackB.push(result);
+
+      // Recursively populate clone (susceptible to call stack limits).
+      (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {
+        result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB);
+      });
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.create` without support for assigning
+     * properties to the created object.
+     *
+     * @private
+     * @param {Object} prototype The object to inherit from.
+     * @returns {Object} Returns the new object.
+     */
+    var baseCreate = (function() {
+      function Object() {}
+      return function(prototype) {
+        if (isObject(prototype)) {
+          Object.prototype = prototype;
+          var result = new Object;
+          Object.prototype = null;
+        }
+        return result || context.Object();
+      };
+    }());
+
+    /**
+     * The base implementation of `_.delay` and `_.defer` which accepts an index
+     * of where to slice the arguments to provide to `func`.
+     *
+     * @private
+     * @param {Function} func The function to delay.
+     * @param {number} wait The number of milliseconds to delay invocation.
+     * @param {Object} args The `arguments` object to slice and provide to `func`.
+     * @returns {number} Returns the timer id.
+     */
+    function baseDelay(func, wait, args, fromIndex) {
+      if (typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      return setTimeout(function() { func.apply(undefined, baseSlice(args, fromIndex)); }, wait);
+    }
+
+    /**
+     * The base implementation of `_.difference` which accepts a single array
+     * of values to exclude.
+     *
+     * @private
+     * @param {Array} array The array to inspect.
+     * @param {Array} values The values to exclude.
+     * @returns {Array} Returns the new array of filtered values.
+     */
+    function baseDifference(array, values) {
+      var length = array ? array.length : 0,
+          result = [];
+
+      if (!length) {
+        return result;
+      }
+      var index = -1,
+          indexOf = getIndexOf(),
+          isCommon = indexOf == baseIndexOf,
+          cache = isCommon && values.length >= 200 && createCache(values),
+          valuesLength = values.length;
+
+      if (cache) {
+        indexOf = cacheIndexOf;
+        isCommon = false;
+        values = cache;
+      }
+      outer:
+      while (++index < length) {
+        var value = array[index];
+
+        if (isCommon && value === value) {
+          var valuesIndex = valuesLength;
+          while (valuesIndex--) {
+            if (values[valuesIndex] === value) {
+              continue outer;
+            }
+          }
+          result.push(value);
+        }
+        else if (indexOf(values, value) < 0) {
+          result.push(value);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.forEach` without support for callback
+     * shorthands and `this` binding.
+     *
+     * @private
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Array|Object|string} Returns `collection`.
+     */
+    function baseEach(collection, iteratee) {
+      var length = collection ? collection.length : 0;
+      if (!isLength(length)) {
+        return baseForOwn(collection, iteratee);
+      }
+      var index = -1,
+          iterable = toObject(collection);
+
+      while (++index < length) {
+        if (iteratee(iterable[index], index, iterable) === false) {
+          break;
+        }
+      }
+      return collection;
+    }
+
+    /**
+     * The base implementation of `_.forEachRight` without support for callback
+     * shorthands and `this` binding.
+     *
+     * @private
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Array|Object|string} Returns `collection`.
+     */
+    function baseEachRight(collection, iteratee) {
+      var length = collection ? collection.length : 0;
+      if (!isLength(length)) {
+        return baseForOwnRight(collection, iteratee);
+      }
+      var iterable = toObject(collection);
+      while (length--) {
+        if (iteratee(iterable[length], length, iterable) === false) {
+          break;
+        }
+      }
+      return collection;
+    }
+
+    /**
+     * The base implementation of `_.every` without support for callback
+     * shorthands or `this` binding.
+     *
+     * @private
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function} predicate The function invoked per iteration.
+     * @returns {boolean} Returns `true` if all elements pass the predicate check,
+     *  else `false`
+     */
+    function baseEvery(collection, predicate) {
+      var result = true;
+      baseEach(collection, function(value, index, collection) {
+        result = !!predicate(value, index, collection);
+        return result;
+      });
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.fill` without an iteratee call guard.
+     *
+     * @private
+     * @param {Array} array The array to fill.
+     * @param {*} value The value to fill `array` with.
+     * @param {number} [start=0] The start position.
+     * @param {number} [end=array.length] The end position.
+     * @returns {Array} Returns `array`.
+     */
+    function baseFill(array, value, start, end) {
+      var length = array.length;
+
+      start = start == null ? 0 : (+start || 0);
+      if (start < 0) {
+        start = -start > length ? 0 : (length + start);
+      }
+      end = (typeof end == 'undefined' || end > length) ? length : (+end || 0);
+      if (end < 0) {
+        end += length;
+      }
+      length = start > end ? 0 : end >>> 0;
+      start >>>= 0;
+
+      while (start < length) {
+        array[start++] = value;
+      }
+      return array;
+    }
+
+    /**
+     * The base implementation of `_.filter` without support for callback
+     * shorthands or `this` binding.
+     *
+     * @private
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function} predicate The function invoked per iteration.
+     * @returns {Array} Returns the new filtered array.
+     */
+    function baseFilter(collection, predicate) {
+      var result = [];
+      baseEach(collection, function(value, index, collection) {
+        if (predicate(value, index, collection)) {
+          result.push(value);
+        }
+      });
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
+     * without support for callback shorthands and `this` binding, which iterates
+     * over `collection` using the provided `eachFunc`.
+     *
+     * @private
+     * @param {Array|Object|string} collection The collection to search.
+     * @param {Function} predicate The function invoked per iteration.
+     * @param {Function} eachFunc The function to iterate over `collection`.
+     * @param {boolean} [retKey] Specify returning the key of the found element
+     *  instead of the element itself.
+     * @returns {*} Returns the found element or its key, else `undefined`.
+     */
+    function baseFind(collection, predicate, eachFunc, retKey) {
+      var result;
+      eachFunc(collection, function(value, key, collection) {
+        if (predicate(value, key, collection)) {
+          result = retKey ? key : value;
+          return false;
+        }
+      });
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.flatten` with added support for restricting
+     * flattening and specifying the start index.
+     *
+     * @private
+     * @param {Array} array The array to flatten.
+     * @param {boolean} [isDeep] Specify a deep flatten.
+     * @param {boolean} [isStrict] Restrict flattening to arrays and `arguments` objects.
+     * @param {number} [fromIndex=0] The index to start from.
+     * @returns {Array} Returns the new flattened array.
+     */
+    function baseFlatten(array, isDeep, isStrict, fromIndex) {
+      var index = (fromIndex || 0) - 1,
+          length = array.length,
+          resIndex = -1,
+          result = [];
+
+      while (++index < length) {
+        var value = array[index];
+
+        if (isObjectLike(value) && isLength(value.length) && (isArray(value) || isArguments(value))) {
+          if (isDeep) {
+            // Recursively flatten arrays (susceptible to call stack limits).
+            value = baseFlatten(value, isDeep, isStrict);
+          }
+          var valIndex = -1,
+              valLength = value.length;
+
+          result.length += valLength;
+          while (++valIndex < valLength) {
+            result[++resIndex] = value[valIndex];
+          }
+        } else if (!isStrict) {
+          result[++resIndex] = value;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `baseForIn` and `baseForOwn` which iterates
+     * over `object` properties returned by `keysFunc` invoking `iteratee` for
+     * each property. Iterator functions may exit iteration early by explicitly
+     * returning `false`.
+     *
+     * @private
+     * @param {Object} object The object to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @param {Function} keysFunc The function to get the keys of `object`.
+     * @returns {Object} Returns `object`.
+     */
+    function baseFor(object, iteratee, keysFunc) {
+      var index = -1,
+          iterable = toObject(object),
+          props = keysFunc(object),
+          length = props.length;
+
+      while (++index < length) {
+        var key = props[index];
+        if (iteratee(iterable[key], key, iterable) === false) {
+          break;
+        }
+      }
+      return object;
+    }
+
+    /**
+     * This function is like `baseFor` except that it iterates over properties
+     * in the opposite order.
+     *
+     * @private
+     * @param {Object} object The object to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @param {Function} keysFunc The function to get the keys of `object`.
+     * @returns {Object} Returns `object`.
+     */
+    function baseForRight(object, iteratee, keysFunc) {
+      var iterable = toObject(object),
+          props = keysFunc(object),
+          length = props.length;
+
+      while (length--) {
+        var key = props[length];
+        if (iteratee(iterable[key], key, iterable) === false) {
+          break;
+        }
+      }
+      return object;
+    }
+
+    /**
+     * The base implementation of `_.forIn` without support for callback
+     * shorthands and `this` binding.
+     *
+     * @private
+     * @param {Object} object The object to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Object} Returns `object`.
+     */
+    function baseForIn(object, iteratee) {
+      return baseFor(object, iteratee, keysIn);
+    }
+
+    /**
+     * The base implementation of `_.forOwn` without support for callback
+     * shorthands and `this` binding.
+     *
+     * @private
+     * @param {Object} object The object to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Object} Returns `object`.
+     */
+    function baseForOwn(object, iteratee) {
+      return baseFor(object, iteratee, keys);
+    }
+
+    /**
+     * The base implementation of `_.forOwnRight` without support for callback
+     * shorthands and `this` binding.
+     *
+     * @private
+     * @param {Object} object The object to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Object} Returns `object`.
+     */
+    function baseForOwnRight(object, iteratee) {
+      return baseForRight(object, iteratee, keys);
+    }
+
+    /**
+     * The base implementation of `_.functions` which creates an array of
+     * `object` function property names filtered from those provided.
+     *
+     * @private
+     * @param {Object} object The object to inspect.
+     * @param {Array} props The property names to filter.
+     * @returns {Array} Returns the new array of filtered property names.
+     */
+    function baseFunctions(object, props) {
+      var index = -1,
+          length = props.length,
+          resIndex = -1,
+          result = [];
+
+      while (++index < length) {
+        var key = props[index];
+        if (isFunction(object[key])) {
+          result[++resIndex] = key;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.invoke` which requires additional arguments
+     * to be provided as an array of arguments rather than individually.
+     *
+     * @private
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|string} methodName The name of the method to invoke or
+     *  the function invoked per iteration.
+     * @param {Array} [args] The arguments to invoke the method with.
+     * @returns {Array} Returns the array of results.
+     */
+    function baseInvoke(collection, methodName, args) {
+      var index = -1,
+          isFunc = typeof methodName == 'function',
+          length = collection ? collection.length : 0,
+          result = isLength(length) ? Array(length) : [];
+
+      baseEach(collection, function(value) {
+        var func = isFunc ? methodName : (value != null && value[methodName]);
+        result[++index] = func ? func.apply(value, args) : undefined;
+      });
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.isEqual` without support for `this` binding
+     * `customizer` functions.
+     *
+     * @private
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @param {Function} [customizer] The function to customize comparing values.
+     * @param {boolean} [isWhere] Specify performing partial comparisons.
+     * @param {Array} [stackA] Tracks traversed `value` objects.
+     * @param {Array} [stackB] Tracks traversed `other` objects.
+     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+     */
+    function baseIsEqual(value, other, customizer, isWhere, stackA, stackB) {
+      // Exit early for identical values.
+      if (value === other) {
+        // Treat `+0` vs. `-0` as not equal.
+        return value !== 0 || (1 / value == 1 / other);
+      }
+      var valType = typeof value,
+          othType = typeof other;
+
+      // Exit early for unlike primitive values.
+      if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') ||
+          value == null || other == null) {
+        // Return `false` unless both values are `NaN`.
+        return value !== value && other !== other;
+      }
+      return baseIsEqualDeep(value, other, baseIsEqual, customizer, isWhere, stackA, stackB);
+    }
+
+    /**
+     * A specialized version of `baseIsEqual` for arrays and objects which performs
+     * deep comparisons and tracks traversed objects enabling objects with circular
+     * references to be compared.
+     *
+     * @private
+     * @param {Object} object The object to compare.
+     * @param {Object} other The other object to compare.
+     * @param {Function} equalFunc The function to determine equivalents of values.
+     * @param {Function} [customizer] The function to customize comparing objects.
+     * @param {boolean} [isWhere] Specify performing partial comparisons.
+     * @param {Array} [stackA=[]] Tracks traversed `value` objects.
+     * @param {Array} [stackB=[]] Tracks traversed `other` objects.
+     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+     */
+    function baseIsEqualDeep(object, other, equalFunc, customizer, isWhere, stackA, stackB) {
+      var objIsArr = isArray(object),
+          othIsArr = isArray(other),
+          objTag = arrayTag,
+          othTag = arrayTag;
+
+      if (!objIsArr) {
+        objTag = objToString.call(object);
+        if (objTag == argsTag) {
+          objTag = objectTag;
+        } else if (objTag != objectTag) {
+          objIsArr = isTypedArray(object);
+        }
+      }
+      if (!othIsArr) {
+        othTag = objToString.call(other);
+        if (othTag == argsTag) {
+          othTag = objectTag;
+        } else if (othTag != objectTag) {
+          othIsArr = isTypedArray(other);
+        }
+      }
+      var objIsObj = objTag == objectTag,
+          othIsObj = othTag == objectTag,
+          isSameTag = objTag == othTag;
+
+      if (isSameTag && !(objIsArr || objIsObj)) {
+        return equalByTag(object, other, objTag);
+      }
+      var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
+          othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
+
+      if (valWrapped || othWrapped) {
+        return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isWhere, stackA, stackB);
+      }
+      if (!isSameTag) {
+        return false;
+      }
+      // Assume cyclic values are equal.
+      // For more information on detecting circular references see https://es5.github.io/#JO.
+      stackA || (stackA = []);
+      stackB || (stackB = []);
+
+      var length = stackA.length;
+      while (length--) {
+        if (stackA[length] == object) {
+          return stackB[length] == other;
+        }
+      }
+      // Add `object` and `other` to the stack of traversed objects.
+      stackA.push(object);
+      stackB.push(other);
+
+      var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isWhere, stackA, stackB);
+
+      stackA.pop();
+      stackB.pop();
+
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.isMatch` without support for callback
+     * shorthands or `this` binding.
+     *
+     * @private
+     * @param {Object} object The object to inspect.
+     * @param {Array} props The source property names to match.
+     * @param {Array} values The source values to match.
+     * @param {Array} strictCompareFlags Strict comparison flags for source values.
+     * @param {Function} [customizer] The function to customize comparing objects.
+     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
+     */
+    function baseIsMatch(object, props, values, strictCompareFlags, customizer) {
+      var length = props.length;
+      if (object == null) {
+        return !length;
+      }
+      var index = -1,
+          noCustomizer = !customizer;
+
+      while (++index < length) {
+        if ((noCustomizer && strictCompareFlags[index])
+              ? values[index] !== object[props[index]]
+              : !hasOwnProperty.call(object, props[index])
+            ) {
+          return false;
+        }
+      }
+      index = -1;
+      while (++index < length) {
+        var key = props[index];
+        if (noCustomizer && strictCompareFlags[index]) {
+          var result = hasOwnProperty.call(object, key);
+        } else {
+          var objValue = object[key],
+              srcValue = values[index];
+
+          result = customizer ? customizer(objValue, srcValue, key) : undefined;
+          if (typeof result == 'undefined') {
+            result = baseIsEqual(srcValue, objValue, customizer, true);
+          }
+        }
+        if (!result) {
+          return false;
+        }
+      }
+      return true;
+    }
+
+    /**
+     * The base implementation of `_.map` without support for callback shorthands
+     * or `this` binding.
+     *
+     * @private
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Array} Returns the new mapped array.
+     */
+    function baseMap(collection, iteratee) {
+      var result = [];
+      baseEach(collection, function(value, key, collection) {
+        result.push(iteratee(value, key, collection));
+      });
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.matches` which does not clone `source`.
+     *
+     * @private
+     * @param {Object} source The object of property values to match.
+     * @returns {Function} Returns the new function.
+     */
+    function baseMatches(source) {
+      var props = keys(source),
+          length = props.length;
+
+      if (length == 1) {
+        var key = props[0],
+            value = source[key];
+
+        if (isStrictComparable(value)) {
+          return function(object) {
+            return object != null && value === object[key] && hasOwnProperty.call(object, key);
+          };
+        }
+      }
+      var values = Array(length),
+          strictCompareFlags = Array(length);
+
+      while (length--) {
+        value = source[props[length]];
+        values[length] = value;
+        strictCompareFlags[length] = isStrictComparable(value);
+      }
+      return function(object) {
+        return baseIsMatch(object, props, values, strictCompareFlags);
+      };
+    }
+
+    /**
+     * The base implementation of `_.matchesProperty` which does not coerce `key`
+     * to a string.
+     *
+     * @private
+     * @param {string} key The key of the property to get.
+     * @param {*} value The value to compare.
+     * @returns {Function} Returns the new function.
+     */
+    function baseMatchesProperty(key, value) {
+      if (isStrictComparable(value)) {
+        return function(object) {
+          return object != null && object[key] === value;
+        };
+      }
+      return function(object) {
+        return object != null && baseIsEqual(value, object[key], null, true);
+      };
+    }
+
+    /**
+     * The base implementation of `_.merge` without support for argument juggling,
+     * multiple sources, and `this` binding `customizer` functions.
+     *
+     * @private
+     * @param {Object} object The destination object.
+     * @param {Object} source The source object.
+     * @param {Function} [customizer] The function to customize merging properties.
+     * @param {Array} [stackA=[]] Tracks traversed source objects.
+     * @param {Array} [stackB=[]] Associates values with source counterparts.
+     * @returns {Object} Returns the destination object.
+     */
+    function baseMerge(object, source, customizer, stackA, stackB) {
+      var isSrcArr = isLength(source.length) && (isArray(source) || isTypedArray(source));
+
+      (isSrcArr ? arrayEach : baseForOwn)(source, function(srcValue, key, source) {
+        if (isObjectLike(srcValue)) {
+          stackA || (stackA = []);
+          stackB || (stackB = []);
+          return baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);
+        }
+        var value = object[key],
+            result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
+            isCommon = typeof result == 'undefined';
+
+        if (isCommon) {
+          result = srcValue;
+        }
+        if ((isSrcArr || typeof result != 'undefined') &&
+            (isCommon || (result === result ? result !== value : value === value))) {
+          object[key] = result;
+        }
+      });
+      return object;
+    }
+
+    /**
+     * A specialized version of `baseMerge` for arrays and objects which performs
+     * deep merges and tracks traversed objects enabling objects with circular
+     * references to be merged.
+     *
+     * @private
+     * @param {Object} object The destination object.
+     * @param {Object} source The source object.
+     * @param {string} key The key of the value to merge.
+     * @param {Function} mergeFunc The function to merge values.
+     * @param {Function} [customizer] The function to customize merging properties.
+     * @param {Array} [stackA=[]] Tracks traversed source objects.
+     * @param {Array} [stackB=[]] Associates values with source counterparts.
+     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+     */
+    function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {
+      var length = stackA.length,
+          srcValue = source[key];
+
+      while (length--) {
+        if (stackA[length] == srcValue) {
+          object[key] = stackB[length];
+          return;
+        }
+      }
+      var value = object[key],
+          result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
+          isCommon = typeof result == 'undefined';
+
+      if (isCommon) {
+        result = srcValue;
+        if (isLength(srcValue.length) && (isArray(srcValue) || isTypedArray(srcValue))) {
+          result = isArray(value)
+            ? value
+            : (value ? arrayCopy(value) : []);
+        }
+        else if (isPlainObject(srcValue) || isArguments(srcValue)) {
+          result = isArguments(value)
+            ? toPlainObject(value)
+            : (isPlainObject(value) ? value : {});
+        }
+        else {
+          isCommon = false;
+        }
+      }
+      // Add the source value to the stack of traversed objects and associate
+      // it with its merged value.
+      stackA.push(srcValue);
+      stackB.push(result);
+
+      if (isCommon) {
+        // Recursively merge objects and arrays (susceptible to call stack limits).
+        object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);
+      } else if (result === result ? result !== value : value === value) {
+        object[key] = result;
+      }
+    }
+
+    /**
+     * The base implementation of `_.property` which does not coerce `key` to a string.
+     *
+     * @private
+     * @param {string} key The key of the property to get.
+     * @returns {Function} Returns the new function.
+     */
+    function baseProperty(key) {
+      return function(object) {
+        return object == null ? undefined : object[key];
+      };
+    }
+
+    /**
+     * The base implementation of `_.pullAt` without support for individual
+     * index arguments.
+     *
+     * @private
+     * @param {Array} array The array to modify.
+     * @param {number[]} indexes The indexes of elements to remove.
+     * @returns {Array} Returns the new array of removed elements.
+     */
+    function basePullAt(array, indexes) {
+      var length = indexes.length,
+          result = baseAt(array, indexes);
+
+      indexes.sort(baseCompareAscending);
+      while (length--) {
+        var index = parseFloat(indexes[length]);
+        if (index != previous && isIndex(index)) {
+          var previous = index;
+          splice.call(array, index, 1);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.random` without support for argument juggling
+     * and returning floating-point numbers.
+     *
+     * @private
+     * @param {number} min The minimum possible value.
+     * @param {number} max The maximum possible value.
+     * @returns {number} Returns the random number.
+     */
+    function baseRandom(min, max) {
+      return min + floor(nativeRandom() * (max - min + 1));
+    }
+
+    /**
+     * The base implementation of `_.reduce` and `_.reduceRight` without support
+     * for callback shorthands or `this` binding, which iterates over `collection`
+     * using the provided `eachFunc`.
+     *
+     * @private
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @param {*} accumulator The initial value.
+     * @param {boolean} initFromCollection Specify using the first or last element
+     *  of `collection` as the initial value.
+     * @param {Function} eachFunc The function to iterate over `collection`.
+     * @returns {*} Returns the accumulated value.
+     */
+    function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
+      eachFunc(collection, function(value, index, collection) {
+        accumulator = initFromCollection
+          ? (initFromCollection = false, value)
+          : iteratee(accumulator, value, index, collection);
+      });
+      return accumulator;
+    }
+
+    /**
+     * The base implementation of `setData` without support for hot loop detection.
+     *
+     * @private
+     * @param {Function} func The function to associate metadata with.
+     * @param {*} data The metadata.
+     * @returns {Function} Returns `func`.
+     */
+    var baseSetData = !metaMap ? identity : function(func, data) {
+      metaMap.set(func, data);
+      return func;
+    };
+
+    /**
+     * The base implementation of `_.slice` without an iteratee call guard.
+     *
+     * @private
+     * @param {Array} array The array to slice.
+     * @param {number} [start=0] The start position.
+     * @param {number} [end=array.length] The end position.
+     * @returns {Array} Returns the slice of `array`.
+     */
+    function baseSlice(array, start, end) {
+      var index = -1,
+          length = array.length;
+
+      start = start == null ? 0 : (+start || 0);
+      if (start < 0) {
+        start = -start > length ? 0 : (length + start);
+      }
+      end = (typeof end == 'undefined' || end > length) ? length : (+end || 0);
+      if (end < 0) {
+        end += length;
+      }
+      length = start > end ? 0 : (end - start) >>> 0;
+      start >>>= 0;
+
+      var result = Array(length);
+      while (++index < length) {
+        result[index] = array[index + start];
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.some` without support for callback shorthands
+     * or `this` binding.
+     *
+     * @private
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function} predicate The function invoked per iteration.
+     * @returns {boolean} Returns `true` if any element passes the predicate check,
+     *  else `false`.
+     */
+    function baseSome(collection, predicate) {
+      var result;
+
+      baseEach(collection, function(value, index, collection) {
+        result = predicate(value, index, collection);
+        return !result;
+      });
+      return !!result;
+    }
+
+    /**
+     * The base implementation of `_.uniq` without support for callback shorthands
+     * and `this` binding.
+     *
+     * @private
+     * @param {Array} array The array to inspect.
+     * @param {Function} [iteratee] The function invoked per iteration.
+     * @returns {Array} Returns the new duplicate-value-free array.
+     */
+    function baseUniq(array, iteratee) {
+      var index = -1,
+          indexOf = getIndexOf(),
+          length = array.length,
+          isCommon = indexOf == baseIndexOf,
+          isLarge = isCommon && length >= 200,
+          seen = isLarge && createCache(),
+          result = [];
+
+      if (seen) {
+        indexOf = cacheIndexOf;
+        isCommon = false;
+      } else {
+        isLarge = false;
+        seen = iteratee ? [] : result;
+      }
+      outer:
+      while (++index < length) {
+        var value = array[index],
+            computed = iteratee ? iteratee(value, index, array) : value;
+
+        if (isCommon && value === value) {
+          var seenIndex = seen.length;
+          while (seenIndex--) {
+            if (seen[seenIndex] === computed) {
+              continue outer;
+            }
+          }
+          if (iteratee) {
+            seen.push(computed);
+          }
+          result.push(value);
+        }
+        else if (indexOf(seen, computed) < 0) {
+          if (iteratee || isLarge) {
+            seen.push(computed);
+          }
+          result.push(value);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.values` and `_.valuesIn` which creates an
+     * array of `object` property values corresponding to the property names
+     * returned by `keysFunc`.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @param {Array} props The property names to get values for.
+     * @returns {Object} Returns the array of property values.
+     */
+    function baseValues(object, props) {
+      var index = -1,
+          length = props.length,
+          result = Array(length);
+
+      while (++index < length) {
+        result[index] = object[props[index]];
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `wrapperValue` which returns the result of
+     * performing a sequence of actions on the unwrapped `value`, where each
+     * successive action is supplied the return value of the previous.
+     *
+     * @private
+     * @param {*} value The unwrapped value.
+     * @param {Array} actions Actions to peform to resolve the unwrapped value.
+     * @returns {*} Returns the resolved unwrapped value.
+     */
+    function baseWrapperValue(value, actions) {
+      var result = value;
+      if (result instanceof LazyWrapper) {
+        result = result.value();
+      }
+      var index = -1,
+          length = actions.length;
+
+      while (++index < length) {
+        var args = [result],
+            action = actions[index];
+
+        push.apply(args, action.args);
+        result = action.func.apply(action.thisArg, args);
+      }
+      return result;
+    }
+
+    /**
+     * Performs a binary search of `array` to determine the index at which `value`
+     * should be inserted into `array` in order to maintain its sort order.
+     *
+     * @private
+     * @param {Array} array The sorted array to inspect.
+     * @param {*} value The value to evaluate.
+     * @param {boolean} [retHighest] Specify returning the highest, instead
+     *  of the lowest, index at which a value should be inserted into `array`.
+     * @returns {number} Returns the index at which `value` should be inserted
+     *  into `array`.
+     */
+    function binaryIndex(array, value, retHighest) {
+      var low = 0,
+          high = array ? array.length : low;
+
+      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
+        while (low < high) {
+          var mid = (low + high) >>> 1,
+              computed = array[mid];
+
+          if (retHighest ? (computed <= value) : (computed < value)) {
+            low = mid + 1;
+          } else {
+            high = mid;
+          }
+        }
+        return high;
+      }
+      return binaryIndexBy(array, value, identity, retHighest);
+    }
+
+    /**
+     * This function is like `binaryIndex` except that it invokes `iteratee` for
+     * `value` and each element of `array` to compute their sort ranking. The
+     * iteratee is invoked with one argument; (value).
+     *
+     * @private
+     * @param {Array} array The sorted array to inspect.
+     * @param {*} value The value to evaluate.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @param {boolean} [retHighest] Specify returning the highest, instead
+     *  of the lowest, index at which a value should be inserted into `array`.
+     * @returns {number} Returns the index at which `value` should be inserted
+     *  into `array`.
+     */
+    function binaryIndexBy(array, value, iteratee, retHighest) {
+      value = iteratee(value);
+
+      var low = 0,
+          high = array ? array.length : 0,
+          valIsNaN = value !== value,
+          valIsUndef = typeof value == 'undefined';
+
+      while (low < high) {
+        var mid = floor((low + high) / 2),
+            computed = iteratee(array[mid]),
+            isReflexive = computed === computed;
+
+        if (valIsNaN) {
+          var setLow = isReflexive || retHighest;
+        } else if (valIsUndef) {
+          setLow = isReflexive && (retHighest || typeof computed != 'undefined');
+        } else {
+          setLow = retHighest ? (computed <= value) : (computed < value);
+        }
+        if (setLow) {
+          low = mid + 1;
+        } else {
+          high = mid;
+        }
+      }
+      return nativeMin(high, MAX_ARRAY_INDEX);
+    }
+
+    /**
+     * A specialized version of `baseCallback` which only supports `this` binding
+     * and specifying the number of arguments to provide to `func`.
+     *
+     * @private
+     * @param {Function} func The function to bind.
+     * @param {*} thisArg The `this` binding of `func`.
+     * @param {number} [argCount] The number of arguments to provide to `func`.
+     * @returns {Function} Returns the callback.
+     */
+    function bindCallback(func, thisArg, argCount) {
+      if (typeof func != 'function') {
+        return identity;
+      }
+      if (typeof thisArg == 'undefined') {
+        return func;
+      }
+      switch (argCount) {
+        case 1: return function(value) {
+          return func.call(thisArg, value);
+        };
+        case 3: return function(value, index, collection) {
+          return func.call(thisArg, value, index, collection);
+        };
+        case 4: return function(accumulator, value, index, collection) {
+          return func.call(thisArg, accumulator, value, index, collection);
+        };
+        case 5: return function(value, other, key, object, source) {
+          return func.call(thisArg, value, other, key, object, source);
+        };
+      }
+      return function() {
+        return func.apply(thisArg, arguments);
+      };
+    }
+
+    /**
+     * Creates a clone of the given array buffer.
+     *
+     * @private
+     * @param {ArrayBuffer} buffer The array buffer to clone.
+     * @returns {ArrayBuffer} Returns the cloned array buffer.
+     */
+    function bufferClone(buffer) {
+      return bufferSlice.call(buffer, 0);
+    }
+    if (!bufferSlice) {
+      // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`.
+      bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) {
+        var byteLength = buffer.byteLength,
+            floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0,
+            offset = floatLength * FLOAT64_BYTES_PER_ELEMENT,
+            result = new ArrayBuffer(byteLength);
+
+        if (floatLength) {
+          var view = new Float64Array(result, 0, floatLength);
+          view.set(new Float64Array(buffer, 0, floatLength));
+        }
+        if (byteLength != offset) {
+          view = new Uint8Array(result, offset);
+          view.set(new Uint8Array(buffer, offset));
+        }
+        return result;
+      };
+    }
+
+    /**
+     * Creates an array that is the composition of partially applied arguments,
+     * placeholders, and provided arguments into a single array of arguments.
+     *
+     * @private
+     * @param {Array|Object} args The provided arguments.
+     * @param {Array} partials The arguments to prepend to those provided.
+     * @param {Array} holders The `partials` placeholder indexes.
+     * @returns {Array} Returns the new array of composed arguments.
+     */
+    function composeArgs(args, partials, holders) {
+      var holdersLength = holders.length,
+          argsIndex = -1,
+          argsLength = nativeMax(args.length - holdersLength, 0),
+          leftIndex = -1,
+          leftLength = partials.length,
+          result = Array(argsLength + leftLength);
+
+      while (++leftIndex < leftLength) {
+        result[leftIndex] = partials[leftIndex];
+      }
+      while (++argsIndex < holdersLength) {
+        result[holders[argsIndex]] = args[argsIndex];
+      }
+      while (argsLength--) {
+        result[leftIndex++] = args[argsIndex++];
+      }
+      return result;
+    }
+
+    /**
+     * This function is like `composeArgs` except that the arguments composition
+     * is tailored for `_.partialRight`.
+     *
+     * @private
+     * @param {Array|Object} args The provided arguments.
+     * @param {Array} partials The arguments to append to those provided.
+     * @param {Array} holders The `partials` placeholder indexes.
+     * @returns {Array} Returns the new array of composed arguments.
+     */
+    function composeArgsRight(args, partials, holders) {
+      var holdersIndex = -1,
+          holdersLength = holders.length,
+          argsIndex = -1,
+          argsLength = nativeMax(args.length - holdersLength, 0),
+          rightIndex = -1,
+          rightLength = partials.length,
+          result = Array(argsLength + rightLength);
+
+      while (++argsIndex < argsLength) {
+        result[argsIndex] = args[argsIndex];
+      }
+      var pad = argsIndex;
+      while (++rightIndex < rightLength) {
+        result[pad + rightIndex] = partials[rightIndex];
+      }
+      while (++holdersIndex < holdersLength) {
+        result[pad + holders[holdersIndex]] = args[argsIndex++];
+      }
+      return result;
+    }
+
+    /**
+     * Creates a function that aggregates a collection, creating an accumulator
+     * object composed from the results of running each element in the collection
+     * through an iteratee.
+     *
+     * @private
+     * @param {Function} setter The function to set keys and values of the accumulator object.
+     * @param {Function} [initializer] The function to initialize the accumulator object.
+     * @returns {Function} Returns the new aggregator function.
+     */
+    function createAggregator(setter, initializer) {
+      return function(collection, iteratee, thisArg) {
+        var result = initializer ? initializer() : {};
+        iteratee = getCallback(iteratee, thisArg, 3);
+
+        if (isArray(collection)) {
+          var index = -1,
+              length = collection.length;
+
+          while (++index < length) {
+            var value = collection[index];
+            setter(result, value, iteratee(value, index, collection), collection);
+          }
+        } else {
+          baseEach(collection, function(value, key, collection) {
+            setter(result, value, iteratee(value, key, collection), collection);
+          });
+        }
+        return result;
+      };
+    }
+
+    /**
+     * Creates a function that assigns properties of source object(s) to a given
+     * destination object.
+     *
+     * @private
+     * @param {Function} assigner The function to assign values.
+     * @returns {Function} Returns the new assigner function.
+     */
+    function createAssigner(assigner) {
+      return function() {
+        var length = arguments.length,
+            object = arguments[0];
+
+        if (length < 2 || object == null) {
+          return object;
+        }
+        if (length > 3 && isIterateeCall(arguments[1], arguments[2], arguments[3])) {
+          length = 2;
+        }
+        // Juggle arguments.
+        if (length > 3 && typeof arguments[length - 2] == 'function') {
+          var customizer = bindCallback(arguments[--length - 1], arguments[length--], 5);
+        } else if (length > 2 && typeof arguments[length - 1] == 'function') {
+          customizer = arguments[--length];
+        }
+        var index = 0;
+        while (++index < length) {
+          var source = arguments[index];
+          if (source) {
+            assigner(object, source, customizer);
+          }
+        }
+        return object;
+      };
+    }
+
+    /**
+     * Creates a function that wraps `func` and invokes it with the `this`
+     * binding of `thisArg`.
+     *
+     * @private
+     * @param {Function} func The function to bind.
+     * @param {*} [thisArg] The `this` binding of `func`.
+     * @returns {Function} Returns the new bound function.
+     */
+    function createBindWrapper(func, thisArg) {
+      var Ctor = createCtorWrapper(func);
+
+      function wrapper() {
+        return (this instanceof wrapper ? Ctor : func).apply(thisArg, arguments);
+      }
+      return wrapper;
+    }
+
+    /**
+     * Creates a `Set` cache object to optimize linear searches of large arrays.
+     *
+     * @private
+     * @param {Array} [values] The values to cache.
+     * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
+     */
+    var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {
+      return new SetCache(values);
+    };
+
+    /**
+     * Creates a function that produces compound words out of the words in a
+     * given string.
+     *
+     * @private
+     * @param {Function} callback The function to combine each word.
+     * @returns {Function} Returns the new compounder function.
+     */
+    function createCompounder(callback) {
+      return function(string) {
+        var index = -1,
+            array = words(deburr(string)),
+            length = array.length,
+            result = '';
+
+        while (++index < length) {
+          result = callback(result, array[index], index);
+        }
+        return result;
+      };
+    }
+
+    /**
+     * Creates a function that produces an instance of `Ctor` regardless of
+     * whether it was invoked as part of a `new` expression or by `call` or `apply`.
+     *
+     * @private
+     * @param {Function} Ctor The constructor to wrap.
+     * @returns {Function} Returns the new wrapped function.
+     */
+    function createCtorWrapper(Ctor) {
+      return function() {
+        var thisBinding = baseCreate(Ctor.prototype),
+            result = Ctor.apply(thisBinding, arguments);
+
+        // Mimic the constructor's `return` behavior.
+        // See https://es5.github.io/#x13.2.2 for more details.
+        return isObject(result) ? result : thisBinding;
+      };
+    }
+
+    /**
+     * Creates a function that gets the extremum value of a collection.
+     *
+     * @private
+     * @param {Function} arrayFunc The function to get the extremum value from an array.
+     * @param {boolean} [isMin] Specify returning the minimum, instead of the maximum,
+     *  extremum value.
+     * @returns {Function} Returns the new extremum function.
+     */
+    function createExtremum(arrayFunc, isMin) {
+      return function(collection, iteratee, thisArg) {
+        if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {
+          iteratee = null;
+        }
+        var func = getCallback(),
+            noIteratee = iteratee == null;
+
+        if (!(func === baseCallback && noIteratee)) {
+          noIteratee = false;
+          iteratee = func(iteratee, thisArg, 3);
+        }
+        if (noIteratee) {
+          var isArr = isArray(collection);
+          if (!isArr && isString(collection)) {
+            iteratee = charAtCallback;
+          } else {
+            return arrayFunc(isArr ? collection : toIterable(collection));
+          }
+        }
+        return extremumBy(collection, iteratee, isMin);
+      };
+    }
+
+    /**
+     * Creates a function that wraps `func` and invokes it with optional `this`
+     * binding of, partial application, and currying.
+     *
+     * @private
+     * @param {Function|string} func The function or method name to reference.
+     * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.
+     * @param {*} [thisArg] The `this` binding of `func`.
+     * @param {Array} [partials] The arguments to prepend to those provided to the new function.
+     * @param {Array} [holders] The `partials` placeholder indexes.
+     * @param {Array} [partialsRight] The arguments to append to those provided to the new function.
+     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
+     * @param {Array} [argPos] The argument positions of the new function.
+     * @param {number} [ary] The arity cap of `func`.
+     * @param {number} [arity] The arity of `func`.
+     * @returns {Function} Returns the new wrapped function.
+     */
+    function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
+      var isAry = bitmask & ARY_FLAG,
+          isBind = bitmask & BIND_FLAG,
+          isBindKey = bitmask & BIND_KEY_FLAG,
+          isCurry = bitmask & CURRY_FLAG,
+          isCurryBound = bitmask & CURRY_BOUND_FLAG,
+          isCurryRight = bitmask & CURRY_RIGHT_FLAG;
+
+      var Ctor = !isBindKey && createCtorWrapper(func),
+          key = func;
+
+      function wrapper() {
+        // Avoid `arguments` object use disqualifying optimizations by
+        // converting it to an array before providing it to other functions.
+        var length = arguments.length,
+            index = length,
+            args = Array(length);
+
+        while (index--) {
+          args[index] = arguments[index];
+        }
+        if (partials) {
+          args = composeArgs(args, partials, holders);
+        }
+        if (partialsRight) {
+          args = composeArgsRight(args, partialsRight, holdersRight);
+        }
+        if (isCurry || isCurryRight) {
+          var placeholder = wrapper.placeholder,
+              argsHolders = replaceHolders(args, placeholder);
+
+          length -= argsHolders.length;
+          if (length < arity) {
+            var newArgPos = argPos ? arrayCopy(argPos) : null,
+                newArity = nativeMax(arity - length, 0),
+                newsHolders = isCurry ? argsHolders : null,
+                newHoldersRight = isCurry ? null : argsHolders,
+                newPartials = isCurry ? args : null,
+                newPartialsRight = isCurry ? null : args;
+
+            bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);
+            bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);
+
+            if (!isCurryBound) {
+              bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);
+            }
+            var result = createHybridWrapper(func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity);
+            result.placeholder = placeholder;
+            return result;
+          }
+        }
+        var thisBinding = isBind ? thisArg : this;
+        if (isBindKey) {
+          func = thisBinding[key];
+        }
+        if (argPos) {
+          args = reorder(args, argPos);
+        }
+        if (isAry && ary < args.length) {
+          args.length = ary;
+        }
+        return (this instanceof wrapper ? (Ctor || createCtorWrapper(func)) : func).apply(thisBinding, args);
+      }
+      return wrapper;
+    }
+
+    /**
+     * Creates the pad required for `string` based on the given padding length.
+     * The `chars` string may be truncated if the number of padding characters
+     * exceeds the padding length.
+     *
+     * @private
+     * @param {string} string The string to create padding for.
+     * @param {number} [length=0] The padding length.
+     * @param {string} [chars=' '] The string used as padding.
+     * @returns {string} Returns the pad for `string`.
+     */
+    function createPad(string, length, chars) {
+      var strLength = string.length;
+      length = +length;
+
+      if (strLength >= length || !nativeIsFinite(length)) {
+        return '';
+      }
+      var padLength = length - strLength;
+      chars = chars == null ? ' ' : (chars + '');
+      return repeat(chars, ceil(padLength / chars.length)).slice(0, padLength);
+    }
+
+    /**
+     * Creates a function that wraps `func` and invokes it with the optional `this`
+     * binding of `thisArg` and the `partials` prepended to those provided to
+     * the wrapper.
+     *
+     * @private
+     * @param {Function} func The function to partially apply arguments to.
+     * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.
+     * @param {*} thisArg The `this` binding of `func`.
+     * @param {Array} partials The arguments to prepend to those provided to the new function.
+     * @returns {Function} Returns the new bound function.
+     */
+    function createPartialWrapper(func, bitmask, thisArg, partials) {
+      var isBind = bitmask & BIND_FLAG,
+          Ctor = createCtorWrapper(func);
+
+      function wrapper() {
+        // Avoid `arguments` object use disqualifying optimizations by
+        // converting it to an array before providing it `func`.
+        var argsIndex = -1,
+            argsLength = arguments.length,
+            leftIndex = -1,
+            leftLength = partials.length,
+            args = Array(argsLength + leftLength);
+
+        while (++leftIndex < leftLength) {
+          args[leftIndex] = partials[leftIndex];
+        }
+        while (argsLength--) {
+          args[leftIndex++] = arguments[++argsIndex];
+        }
+        return (this instanceof wrapper ? Ctor : func).apply(isBind ? thisArg : this, args);
+      }
+      return wrapper;
+    }
+
+    /**
+     * Creates a function that either curries or invokes `func` with optional
+     * `this` binding and partially applied arguments.
+     *
+     * @private
+     * @param {Function|string} func The function or method name to reference.
+     * @param {number} bitmask The bitmask of flags.
+     *  The bitmask may be composed of the following flags:
+     *     1 - `_.bind`
+     *     2 - `_.bindKey`
+     *     4 - `_.curry` or `_.curryRight` of a bound function
+     *     8 - `_.curry`
+     *    16 - `_.curryRight`
+     *    32 - `_.partial`
+     *    64 - `_.partialRight`
+     *   128 - `_.rearg`
+     *   256 - `_.ary`
+     * @param {*} [thisArg] The `this` binding of `func`.
+     * @param {Array} [partials] The arguments to be partially applied.
+     * @param {Array} [holders] The `partials` placeholder indexes.
+     * @param {Array} [argPos] The argument positions of the new function.
+     * @param {number} [ary] The arity cap of `func`.
+     * @param {number} [arity] The arity of `func`.
+     * @returns {Function} Returns the new wrapped function.
+     */
+    function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
+      var isBindKey = bitmask & BIND_KEY_FLAG;
+      if (!isBindKey && typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      var length = partials ? partials.length : 0;
+      if (!length) {
+        bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);
+        partials = holders = null;
+      }
+      length -= (holders ? holders.length : 0);
+      if (bitmask & PARTIAL_RIGHT_FLAG) {
+        var partialsRight = partials,
+            holdersRight = holders;
+
+        partials = holders = null;
+      }
+      var data = !isBindKey && getData(func),
+          newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];
+
+      if (data && data !== true) {
+        mergeData(newData, data);
+        bitmask = newData[1];
+        arity = newData[9];
+      }
+      newData[9] = arity == null
+        ? (isBindKey ? 0 : func.length)
+        : (nativeMax(arity - length, 0) || 0);
+
+      if (bitmask == BIND_FLAG) {
+        var result = createBindWrapper(newData[0], newData[2]);
+      } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) {
+        result = createPartialWrapper.apply(undefined, newData);
+      } else {
+        result = createHybridWrapper.apply(undefined, newData);
+      }
+      var setter = data ? baseSetData : setData;
+      return setter(result, newData);
+    }
+
+    /**
+     * A specialized version of `baseIsEqualDeep` for arrays with support for
+     * partial deep comparisons.
+     *
+     * @private
+     * @param {Array} array The array to compare.
+     * @param {Array} other The other array to compare.
+     * @param {Function} equalFunc The function to determine equivalents of values.
+     * @param {Function} [customizer] The function to customize comparing arrays.
+     * @param {boolean} [isWhere] Specify performing partial comparisons.
+     * @param {Array} [stackA] Tracks traversed `value` objects.
+     * @param {Array} [stackB] Tracks traversed `other` objects.
+     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
+     */
+    function equalArrays(array, other, equalFunc, customizer, isWhere, stackA, stackB) {
+      var index = -1,
+          arrLength = array.length,
+          othLength = other.length,
+          result = true;
+
+      if (arrLength != othLength && !(isWhere && othLength > arrLength)) {
+        return false;
+      }
+      // Deep compare the contents, ignoring non-numeric properties.
+      while (result && ++index < arrLength) {
+        var arrValue = array[index],
+            othValue = other[index];
+
+        result = undefined;
+        if (customizer) {
+          result = isWhere
+            ? customizer(othValue, arrValue, index)
+            : customizer(arrValue, othValue, index);
+        }
+        if (typeof result == 'undefined') {
+          // Recursively compare arrays (susceptible to call stack limits).
+          if (isWhere) {
+            var othIndex = othLength;
+            while (othIndex--) {
+              othValue = other[othIndex];
+              result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB);
+              if (result) {
+                break;
+              }
+            }
+          } else {
+            result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB);
+          }
+        }
+      }
+      return !!result;
+    }
+
+    /**
+     * A specialized version of `baseIsEqualDeep` for comparing objects of
+     * the same `toStringTag`.
+     *
+     * **Note:** This function only supports comparing values with tags of
+     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
+     *
+     * @private
+     * @param {Object} value The object to compare.
+     * @param {Object} other The other object to compare.
+     * @param {string} tag The `toStringTag` of the objects to compare.
+     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+     */
+    function equalByTag(object, other, tag) {
+      switch (tag) {
+        case boolTag:
+        case dateTag:
+          // Coerce dates and booleans to numbers, dates to milliseconds and booleans
+          // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.
+          return +object == +other;
+
+        case errorTag:
+          return object.name == other.name && object.message == other.message;
+
+        case numberTag:
+          // Treat `NaN` vs. `NaN` as equal.
+          return (object != +object)
+            ? other != +other
+            // But, treat `-0` vs. `+0` as not equal.
+            : (object == 0 ? ((1 / object) == (1 / other)) : object == +other);
+
+        case regexpTag:
+        case stringTag:
+          // Coerce regexes to strings and treat strings primitives and string
+          // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.
+          return object == (other + '');
+      }
+      return false;
+    }
+
+    /**
+     * A specialized version of `baseIsEqualDeep` for objects with support for
+     * partial deep comparisons.
+     *
+     * @private
+     * @param {Object} object The object to compare.
+     * @param {Object} other The other object to compare.
+     * @param {Function} equalFunc The function to determine equivalents of values.
+     * @param {Function} [customizer] The function to customize comparing values.
+     * @param {boolean} [isWhere] Specify performing partial comparisons.
+     * @param {Array} [stackA] Tracks traversed `value` objects.
+     * @param {Array} [stackB] Tracks traversed `other` objects.
+     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+     */
+    function equalObjects(object, other, equalFunc, customizer, isWhere, stackA, stackB) {
+      var objProps = keys(object),
+          objLength = objProps.length,
+          othProps = keys(other),
+          othLength = othProps.length;
+
+      if (objLength != othLength && !isWhere) {
+        return false;
+      }
+      var hasCtor,
+          index = -1;
+
+      while (++index < objLength) {
+        var key = objProps[index],
+            result = hasOwnProperty.call(other, key);
+
+        if (result) {
+          var objValue = object[key],
+              othValue = other[key];
+
+          result = undefined;
+          if (customizer) {
+            result = isWhere
+              ? customizer(othValue, objValue, key)
+              : customizer(objValue, othValue, key);
+          }
+          if (typeof result == 'undefined') {
+            // Recursively compare objects (susceptible to call stack limits).
+            result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isWhere, stackA, stackB);
+          }
+        }
+        if (!result) {
+          return false;
+        }
+        hasCtor || (hasCtor = key == 'constructor');
+      }
+      if (!hasCtor) {
+        var objCtor = object.constructor,
+            othCtor = other.constructor;
+
+        // Non `Object` object instances with different constructors are not equal.
+        if (objCtor != othCtor && ('constructor' in object && 'constructor' in other) &&
+            !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {
+          return false;
+        }
+      }
+      return true;
+    }
+
+    /**
+     * Gets the extremum value of `collection` invoking `iteratee` for each value
+     * in `collection` to generate the criterion by which the value is ranked.
+     * The `iteratee` is invoked with three arguments; (value, index, collection).
+     *
+     * @private
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @param {boolean} [isMin] Specify returning the minimum, instead of the
+     *  maximum, extremum value.
+     * @returns {*} Returns the extremum value.
+     */
+    function extremumBy(collection, iteratee, isMin) {
+      var exValue = isMin ? POSITIVE_INFINITY : NEGATIVE_INFINITY,
+          computed = exValue,
+          result = computed;
+
+      baseEach(collection, function(value, index, collection) {
+        var current = iteratee(value, index, collection);
+        if ((isMin ? current < computed : current > computed) || (current === exValue && current === result)) {
+          computed = current;
+          result = value;
+        }
+      });
+      return result;
+    }
+
+    /**
+     * Gets the appropriate "callback" function. If the `_.callback` method is
+     * customized this function returns the custom method, otherwise it returns
+     * the `baseCallback` function. If arguments are provided the chosen function
+     * is invoked with them and its result is returned.
+     *
+     * @private
+     * @returns {Function} Returns the chosen function or its result.
+     */
+    function getCallback(func, thisArg, argCount) {
+      var result = lodash.callback || callback;
+      result = result === callback ? baseCallback : result;
+      return argCount ? result(func, thisArg, argCount) : result;
+    }
+
+    /**
+     * Gets metadata for `func`.
+     *
+     * @private
+     * @param {Function} func The function to query.
+     * @returns {*} Returns the metadata for `func`.
+     */
+    var getData = !metaMap ? noop : function(func) {
+      return metaMap.get(func);
+    };
+
+    /**
+     * Gets the appropriate "indexOf" function. If the `_.indexOf` method is
+     * customized this function returns the custom method, otherwise it returns
+     * the `baseIndexOf` function. If arguments are provided the chosen function
+     * is invoked with them and its result is returned.
+     *
+     * @private
+     * @returns {Function|number} Returns the chosen function or its result.
+     */
+    function getIndexOf(collection, target, fromIndex) {
+      var result = lodash.indexOf || indexOf;
+      result = result === indexOf ? baseIndexOf : result;
+      return collection ? result(collection, target, fromIndex) : result;
+    }
+
+    /**
+     * Gets the view, applying any `transforms` to the `start` and `end` positions.
+     *
+     * @private
+     * @param {number} start The start of the view.
+     * @param {number} end The end of the view.
+     * @param {Array} [transforms] The transformations to apply to the view.
+     * @returns {Object} Returns an object containing the `start` and `end`
+     *  positions of the view.
+     */
+    function getView(start, end, transforms) {
+      var index = -1,
+          length = transforms ? transforms.length : 0;
+
+      while (++index < length) {
+        var data = transforms[index],
+            size = data.size;
+
+        switch (data.type) {
+          case 'drop':      start += size; break;
+          case 'dropRight': end -= size; break;
+          case 'take':      end = nativeMin(end, start + size); break;
+          case 'takeRight': start = nativeMax(start, end - size); break;
+        }
+      }
+      return { 'start': start, 'end': end };
+    }
+
+    /**
+     * Initializes an array clone.
+     *
+     * @private
+     * @param {Array} array The array to clone.
+     * @returns {Array} Returns the initialized clone.
+     */
+    function initCloneArray(array) {
+      var length = array.length,
+          result = new array.constructor(length);
+
+      // Add array properties assigned by `RegExp#exec`.
+      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
+        result.index = array.index;
+        result.input = array.input;
+      }
+      return result;
+    }
+
+    /**
+     * Initializes an object clone.
+     *
+     * @private
+     * @param {Object} object The object to clone.
+     * @returns {Object} Returns the initialized clone.
+     */
+    function initCloneObject(object) {
+      var Ctor = object.constructor;
+      if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
+        Ctor = Object;
+      }
+      return new Ctor;
+    }
+
+    /**
+     * Initializes an object clone based on its `toStringTag`.
+     *
+     * **Note:** This function only supports cloning values with tags of
+     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
+     *
+     *
+     * @private
+     * @param {Object} object The object to clone.
+     * @param {string} tag The `toStringTag` of the object to clone.
+     * @param {boolean} [isDeep] Specify a deep clone.
+     * @returns {Object} Returns the initialized clone.
+     */
+    function initCloneByTag(object, tag, isDeep) {
+      var Ctor = object.constructor;
+      switch (tag) {
+        case arrayBufferTag:
+          return bufferClone(object);
+
+        case boolTag:
+        case dateTag:
+          return new Ctor(+object);
+
+        case float32Tag: case float64Tag:
+        case int8Tag: case int16Tag: case int32Tag:
+        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
+          var buffer = object.buffer;
+          return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
+
+        case numberTag:
+        case stringTag:
+          return new Ctor(object);
+
+        case regexpTag:
+          var result = new Ctor(object.source, reFlags.exec(object));
+          result.lastIndex = object.lastIndex;
+      }
+      return result;
+    }
+
+    /**
+     * Checks if `func` is eligible for `this` binding.
+     *
+     * @private
+     * @param {Function} func The function to check.
+     * @returns {boolean} Returns `true` if `func` is eligible, else `false`.
+     */
+    function isBindable(func) {
+      var support = lodash.support,
+          result = !(support.funcNames ? func.name : support.funcDecomp);
+
+      if (!result) {
+        var source = fnToString.call(func);
+        if (!support.funcNames) {
+          result = !reFuncName.test(source);
+        }
+        if (!result) {
+          // Check if `func` references the `this` keyword and store the result.
+          result = reThis.test(source) || isNative(func);
+          baseSetData(func, result);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Checks if `value` is a valid array-like index.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
+     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
+     */
+    function isIndex(value, length) {
+      value = +value;
+      length = length == null ? MAX_SAFE_INTEGER : length;
+      return value > -1 && value % 1 == 0 && value < length;
+    }
+
+    /**
+     * Checks if the provided arguments are from an iteratee call.
+     *
+     * @private
+     * @param {*} value The potential iteratee value argument.
+     * @param {*} index The potential iteratee index or key argument.
+     * @param {*} object The potential iteratee object argument.
+     * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.
+     */
+    function isIterateeCall(value, index, object) {
+      if (!isObject(object)) {
+        return false;
+      }
+      var type = typeof index;
+      if (type == 'number') {
+        var length = object.length,
+            prereq = isLength(length) && isIndex(index, length);
+      } else {
+        prereq = type == 'string' && index in object;
+      }
+      return prereq && object[index] === value;
+    }
+
+    /**
+     * Checks if `value` is a valid array-like length.
+     *
+     * **Note:** This function is based on ES `ToLength`. See the
+     * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)
+     * for more details.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+     */
+    function isLength(value) {
+      return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+    }
+
+    /**
+     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` if suitable for strict
+     *  equality comparisons, else `false`.
+     */
+    function isStrictComparable(value) {
+      return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value));
+    }
+
+    /**
+     * Merges the function metadata of `source` into `data`.
+     *
+     * Merging metadata reduces the number of wrappers required to invoke a function.
+     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
+     * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg`
+     * augment function arguments, making the order in which they are executed important,
+     * preventing the merging of metadata. However, we make an exception for a safe
+     * common case where curried functions have `_.ary` and or `_.rearg` applied.
+     *
+     * @private
+     * @param {Array} data The destination metadata.
+     * @param {Array} source The source metadata.
+     * @returns {Array} Returns `data`.
+     */
+    function mergeData(data, source) {
+      var bitmask = data[1],
+          srcBitmask = source[1],
+          newBitmask = bitmask | srcBitmask;
+
+      var arityFlags = ARY_FLAG | REARG_FLAG,
+          bindFlags = BIND_FLAG | BIND_KEY_FLAG,
+          comboFlags = arityFlags | bindFlags | CURRY_BOUND_FLAG | CURRY_RIGHT_FLAG;
+
+      var isAry = bitmask & ARY_FLAG && !(srcBitmask & ARY_FLAG),
+          isRearg = bitmask & REARG_FLAG && !(srcBitmask & REARG_FLAG),
+          argPos = (isRearg ? data : source)[7],
+          ary = (isAry ? data : source)[8];
+
+      var isCommon = !(bitmask >= REARG_FLAG && srcBitmask > bindFlags) &&
+        !(bitmask > bindFlags && srcBitmask >= REARG_FLAG);
+
+      var isCombo = (newBitmask >= arityFlags && newBitmask <= comboFlags) &&
+        (bitmask < REARG_FLAG || ((isRearg || isAry) && argPos.length <= ary));
+
+      // Exit early if metadata can't be merged.
+      if (!(isCommon || isCombo)) {
+        return data;
+      }
+      // Use source `thisArg` if available.
+      if (srcBitmask & BIND_FLAG) {
+        data[2] = source[2];
+        // Set when currying a bound function.
+        newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG;
+      }
+      // Compose partial arguments.
+      var value = source[3];
+      if (value) {
+        var partials = data[3];
+        data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value);
+        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]);
+      }
+      // Compose partial right arguments.
+      value = source[5];
+      if (value) {
+        partials = data[5];
+        data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value);
+        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]);
+      }
+      // Use source `argPos` if available.
+      value = source[7];
+      if (value) {
+        data[7] = arrayCopy(value);
+      }
+      // Use source `ary` if it's smaller.
+      if (srcBitmask & ARY_FLAG) {
+        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
+      }
+      // Use source `arity` if one is not provided.
+      if (data[9] == null) {
+        data[9] = source[9];
+      }
+      // Use source `func` and merge bitmasks.
+      data[0] = source[0];
+      data[1] = newBitmask;
+
+      return data;
+    }
+
+    /**
+     * A specialized version of `_.pick` that picks `object` properties specified
+     * by the `props` array.
+     *
+     * @private
+     * @param {Object} object The source object.
+     * @param {string[]} props The property names to pick.
+     * @returns {Object} Returns the new object.
+     */
+    function pickByArray(object, props) {
+      object = toObject(object);
+
+      var index = -1,
+          length = props.length,
+          result = {};
+
+      while (++index < length) {
+        var key = props[index];
+        if (key in object) {
+          result[key] = object[key];
+        }
+      }
+      return result;
+    }
+
+    /**
+     * A specialized version of `_.pick` that picks `object` properties `predicate`
+     * returns truthy for.
+     *
+     * @private
+     * @param {Object} object The source object.
+     * @param {Function} predicate The function invoked per iteration.
+     * @returns {Object} Returns the new object.
+     */
+    function pickByCallback(object, predicate) {
+      var result = {};
+      baseForIn(object, function(value, key, object) {
+        if (predicate(value, key, object)) {
+          result[key] = value;
+        }
+      });
+      return result;
+    }
+
+    /**
+     * Reorder `array` according to the specified indexes where the element at
+     * the first index is assigned as the first element, the element at
+     * the second index is assigned as the second element, and so on.
+     *
+     * @private
+     * @param {Array} array The array to reorder.
+     * @param {Array} indexes The arranged array indexes.
+     * @returns {Array} Returns `array`.
+     */
+    function reorder(array, indexes) {
+      var arrLength = array.length,
+          length = nativeMin(indexes.length, arrLength),
+          oldArray = arrayCopy(array);
+
+      while (length--) {
+        var index = indexes[length];
+        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
+      }
+      return array;
+    }
+
+    /**
+     * Sets metadata for `func`.
+     *
+     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
+     * period of time, it will trip its breaker and transition to an identity function
+     * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070)
+     * for more details.
+     *
+     * @private
+     * @param {Function} func The function to associate metadata with.
+     * @param {*} data The metadata.
+     * @returns {Function} Returns `func`.
+     */
+    var setData = (function() {
+      var count = 0,
+          lastCalled = 0;
+
+      return function(key, value) {
+        var stamp = now(),
+            remaining = HOT_SPAN - (stamp - lastCalled);
+
+        lastCalled = stamp;
+        if (remaining > 0) {
+          if (++count >= HOT_COUNT) {
+            return key;
+          }
+        } else {
+          count = 0;
+        }
+        return baseSetData(key, value);
+      };
+    }());
+
+    /**
+     * A fallback implementation of `_.isPlainObject` which checks if `value`
+     * is an object created by the `Object` constructor or has a `[[Prototype]]`
+     * of `null`.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
+     */
+    function shimIsPlainObject(value) {
+      var Ctor,
+          support = lodash.support;
+
+      // Exit early for non `Object` objects.
+      if (!(isObjectLike(value) && objToString.call(value) == objectTag) ||
+          (!hasOwnProperty.call(value, 'constructor') &&
+            (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {
+        return false;
+      }
+      // IE < 9 iterates inherited properties before own properties. If the first
+      // iterated property is an object's own property then there are no inherited
+      // enumerable properties.
+      var result;
+      // In most environments an object's own properties are iterated before
+      // its inherited properties. If the last iterated property is an object's
+      // own property then there are no inherited enumerable properties.
+      baseForIn(value, function(subValue, key) {
+        result = key;
+      });
+      return typeof result == 'undefined' || hasOwnProperty.call(value, result);
+    }
+
+    /**
+     * A fallback implementation of `Object.keys` which creates an array of the
+     * own enumerable property names of `object`.
+     *
+     * @private
+     * @param {Object} object The object to inspect.
+     * @returns {Array} Returns the array of property names.
+     */
+    function shimKeys(object) {
+      var props = keysIn(object),
+          propsLength = props.length,
+          length = propsLength && object.length,
+          support = lodash.support;
+
+      var allowIndexes = length && isLength(length) &&
+        (isArray(object) || (support.nonEnumArgs && isArguments(object)));
+
+      var index = -1,
+          result = [];
+
+      while (++index < propsLength) {
+        var key = props[index];
+        if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
+          result.push(key);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Converts `value` to an array-like object if it is not one.
+     *
+     * @private
+     * @param {*} value The value to process.
+     * @returns {Array|Object} Returns the array-like object.
+     */
+    function toIterable(value) {
+      if (value == null) {
+        return [];
+      }
+      if (!isLength(value.length)) {
+        return values(value);
+      }
+      return isObject(value) ? value : Object(value);
+    }
+
+    /**
+     * Converts `value` to an object if it is not one.
+     *
+     * @private
+     * @param {*} value The value to process.
+     * @returns {Object} Returns the object.
+     */
+    function toObject(value) {
+      return isObject(value) ? value : Object(value);
+    }
+
+    /**
+     * Creates a clone of `wrapper`.
+     *
+     * @private
+     * @param {Object} wrapper The wrapper to clone.
+     * @returns {Object} Returns the cloned wrapper.
+     */
+    function wrapperClone(wrapper) {
+      return wrapper instanceof LazyWrapper
+        ? wrapper.clone()
+        : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__));
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates an array of elements split into groups the length of `size`.
+     * If `collection` can't be split evenly, the final chunk will be the remaining
+     * elements.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to process.
+     * @param {number} [size=1] The length of each chunk.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Array} Returns the new array containing chunks.
+     * @example
+     *
+     * _.chunk(['a', 'b', 'c', 'd'], 2);
+     * // => [['a', 'b'], ['c', 'd']]
+     *
+     * _.chunk(['a', 'b', 'c', 'd'], 3);
+     * // => [['a', 'b', 'c'], ['d']]
+     */
+    function chunk(array, size, guard) {
+      if (guard ? isIterateeCall(array, size, guard) : size == null) {
+        size = 1;
+      } else {
+        size = nativeMax(+size || 1, 1);
+      }
+      var index = 0,
+          length = array ? array.length : 0,
+          resIndex = -1,
+          result = Array(ceil(length / size));
+
+      while (index < length) {
+        result[++resIndex] = baseSlice(array, index, (index += size));
+      }
+      return result;
+    }
+
+    /**
+     * Creates an array with all falsey values removed. The values `false`, `null`,
+     * `0`, `""`, `undefined`, and `NaN` are falsey.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to compact.
+     * @returns {Array} Returns the new array of filtered values.
+     * @example
+     *
+     * _.compact([0, 1, false, 2, '', 3]);
+     * // => [1, 2, 3]
+     */
+    function compact(array) {
+      var index = -1,
+          length = array ? array.length : 0,
+          resIndex = -1,
+          result = [];
+
+      while (++index < length) {
+        var value = array[index];
+        if (value) {
+          result[++resIndex] = value;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Creates an array excluding all values of the provided arrays using
+     * `SameValueZero` for equality comparisons.
+     *
+     * **Note:** `SameValueZero` comparisons are like strict equality comparisons,
+     * e.g. `===`, except that `NaN` matches `NaN`. See the
+     * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {...Array} [values] The arrays of values to exclude.
+     * @returns {Array} Returns the new array of filtered values.
+     * @example
+     *
+     * _.difference([1, 2, 3], [5, 2, 10]);
+     * // => [1, 3]
+     */
+    function difference() {
+      var index = -1,
+          length = arguments.length;
+
+      while (++index < length) {
+        var value = arguments[index];
+        if (isArray(value) || isArguments(value)) {
+          break;
+        }
+      }
+      return baseDifference(value, baseFlatten(arguments, false, true, ++index));
+    }
+
+    /**
+     * Creates a slice of `array` with `n` elements dropped from the beginning.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {number} [n=1] The number of elements to drop.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.drop([1, 2, 3]);
+     * // => [2, 3]
+     *
+     * _.drop([1, 2, 3], 2);
+     * // => [3]
+     *
+     * _.drop([1, 2, 3], 5);
+     * // => []
+     *
+     * _.drop([1, 2, 3], 0);
+     * // => [1, 2, 3]
+     */
+    function drop(array, n, guard) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return [];
+      }
+      if (guard ? isIterateeCall(array, n, guard) : n == null) {
+        n = 1;
+      }
+      return baseSlice(array, n < 0 ? 0 : n);
+    }
+
+    /**
+     * Creates a slice of `array` with `n` elements dropped from the end.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {number} [n=1] The number of elements to drop.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.dropRight([1, 2, 3]);
+     * // => [1, 2]
+     *
+     * _.dropRight([1, 2, 3], 2);
+     * // => [1]
+     *
+     * _.dropRight([1, 2, 3], 5);
+     * // => []
+     *
+     * _.dropRight([1, 2, 3], 0);
+     * // => [1, 2, 3]
+     */
+    function dropRight(array, n, guard) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return [];
+      }
+      if (guard ? isIterateeCall(array, n, guard) : n == null) {
+        n = 1;
+      }
+      n = length - (+n || 0);
+      return baseSlice(array, 0, n < 0 ? 0 : n);
+    }
+
+    /**
+     * Creates a slice of `array` excluding elements dropped from the end.
+     * Elements are dropped until `predicate` returns falsey. The predicate is
+     * bound to `thisArg` and invoked with three arguments; (value, index, array).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that match the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per element.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.dropRightWhile([1, 2, 3], function(n) { return n > 1; });
+     * // => [1]
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36, 'active': true },
+     *   { 'user': 'fred',    'age': 40, 'active': false },
+     *   { 'user': 'pebbles', 'age': 1,  'active': false }
+     * ];
+     *
+     * // using the "_.matches" callback shorthand
+     * _.pluck(_.dropRightWhile(users, { 'age': 1, 'active': false }), 'user');
+     * // => ['barney', 'fred']
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.pluck(_.dropRightWhile(users, 'active', false), 'user');
+     * // => ['barney']
+     *
+     * // using the "_.property" callback shorthand
+     * _.pluck(_.dropRightWhile(users, 'active'), 'user');
+     * // => ['barney', 'fred', 'pebbles']
+     */
+    function dropRightWhile(array, predicate, thisArg) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return [];
+      }
+      predicate = getCallback(predicate, thisArg, 3);
+      while (length-- && predicate(array[length], length, array)) {}
+      return baseSlice(array, 0, length + 1);
+    }
+
+    /**
+     * Creates a slice of `array` excluding elements dropped from the beginning.
+     * Elements are dropped until `predicate` returns falsey. The predicate is
+     * bound to `thisArg` and invoked with three arguments; (value, index, array).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per element.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.dropWhile([1, 2, 3], function(n) { return n < 3; });
+     * // => [3]
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36, 'active': false },
+     *   { 'user': 'fred',    'age': 40, 'active': false },
+     *   { 'user': 'pebbles', 'age': 1,  'active': true }
+     * ];
+     *
+     * // using the "_.matches" callback shorthand
+     * _.pluck(_.dropWhile(users, { 'age': 36, 'active': false }), 'user');
+     * // => ['fred', 'pebbles']
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.pluck(_.dropWhile(users, 'active', false), 'user');
+     * // => ['pebbles']
+     *
+     * // using the "_.property" callback shorthand
+     * _.pluck(_.dropWhile(users, 'active'), 'user');
+     * // => ['barney', 'fred', 'pebbles']
+     */
+    function dropWhile(array, predicate, thisArg) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return [];
+      }
+      var index = -1;
+      predicate = getCallback(predicate, thisArg, 3);
+      while (++index < length && predicate(array[index], index, array)) {}
+      return baseSlice(array, index);
+    }
+
+    /**
+     * Fills elements of `array` with `value` from `start` up to, but not
+     * including, `end`.
+     *
+     * **Note:** This method mutates `array`.
+     *
+     * @private
+     * @param {Array} array The array to fill.
+     * @param {*} value The value to fill `array` with.
+     * @param {number} [start=0] The start position.
+     * @param {number} [end=array.length] The end position.
+     * @returns {Array} Returns `array`.
+     */
+    function fill(array, value, start, end) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return [];
+      }
+      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
+        start = 0;
+        end = length;
+      }
+      return baseFill(array, value, start, end);
+    }
+
+    /**
+     * This method is like `_.find` except that it returns the index of the first
+     * element `predicate` returns truthy for, instead of the element itself.
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to search.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {number} Returns the index of the found element, else `-1`.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36, 'active': false },
+     *   { 'user': 'fred',    'age': 40, 'active': true },
+     *   { 'user': 'pebbles', 'age': 1,  'active': false }
+     * ];
+     *
+     * _.findIndex(users, function(chr) { return chr.age < 40; });
+     * // => 0
+     *
+     * // using the "_.matches" callback shorthand
+     * _.findIndex(users, { 'age': 40, 'active': true });
+     * // => 1
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.findIndex(users, 'age', 1);
+     * // => 2
+     *
+     * // using the "_.property" callback shorthand
+     * _.findIndex(users, 'active');
+     * // => 1
+     */
+    function findIndex(array, predicate, thisArg) {
+      var index = -1,
+          length = array ? array.length : 0;
+
+      predicate = getCallback(predicate, thisArg, 3);
+      while (++index < length) {
+        if (predicate(array[index], index, array)) {
+          return index;
+        }
+      }
+      return -1;
+    }
+
+    /**
+     * This method is like `_.findIndex` except that it iterates over elements
+     * of `collection` from right to left.
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to search.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {number} Returns the index of the found element, else `-1`.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36, 'active': true },
+     *   { 'user': 'fred',    'age': 40, 'active': false },
+     *   { 'user': 'pebbles', 'age': 1,  'active': false }
+     * ];
+     *
+     * _.findLastIndex(users, function(chr) { return chr.age < 40; });
+     * // => 2
+     *
+     * // using the "_.matches" callback shorthand
+     * _.findLastIndex(users, { 'age': 36, 'active': true });
+     * // => 0
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.findLastIndex(users, 'age', 40);
+     * // => 1
+     *
+     * // using the "_.property" callback shorthand
+     * _.findLastIndex(users, 'active');
+     * // => 0
+     */
+    function findLastIndex(array, predicate, thisArg) {
+      var length = array ? array.length : 0;
+      predicate = getCallback(predicate, thisArg, 3);
+      while (length--) {
+        if (predicate(array[length], length, array)) {
+          return length;
+        }
+      }
+      return -1;
+    }
+
+    /**
+     * Gets the first element of `array`.
+     *
+     * @static
+     * @memberOf _
+     * @alias head
+     * @category Array
+     * @param {Array} array The array to query.
+     * @returns {*} Returns the first element of `array`.
+     * @example
+     *
+     * _.first([1, 2, 3]);
+     * // => 1
+     *
+     * _.first([]);
+     * // => undefined
+     */
+    function first(array) {
+      return array ? array[0] : undefined;
+    }
+
+    /**
+     * Flattens a nested array. If `isDeep` is `true` the array is recursively
+     * flattened, otherwise it is only flattened a single level.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to flatten.
+     * @param {boolean} [isDeep] Specify a deep flatten.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Array} Returns the new flattened array.
+     * @example
+     *
+     * _.flatten([1, [2], [3, [[4]]]]);
+     * // => [1, 2, 3, [[4]]];
+     *
+     * // using `isDeep`
+     * _.flatten([1, [2], [3, [[4]]]], true);
+     * // => [1, 2, 3, 4];
+     */
+    function flatten(array, isDeep, guard) {
+      var length = array ? array.length : 0;
+      if (guard && isIterateeCall(array, isDeep, guard)) {
+        isDeep = false;
+      }
+      return length ? baseFlatten(array, isDeep) : [];
+    }
+
+    /**
+     * Recursively flattens a nested array.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to recursively flatten.
+     * @returns {Array} Returns the new flattened array.
+     * @example
+     *
+     * _.flattenDeep([1, [2], [3, [[4]]]]);
+     * // => [1, 2, 3, 4];
+     */
+    function flattenDeep(array) {
+      var length = array ? array.length : 0;
+      return length ? baseFlatten(array, true) : [];
+    }
+
+    /**
+     * Gets the index at which the first occurrence of `value` is found in `array`
+     * using `SameValueZero` for equality comparisons. If `fromIndex` is negative,
+     * it is used as the offset from the end of `array`. If `array` is sorted
+     * providing `true` for `fromIndex` performs a faster binary search.
+     *
+     * **Note:** `SameValueZero` comparisons are like strict equality comparisons,
+     * e.g. `===`, except that `NaN` matches `NaN`. See the
+     * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to search.
+     * @param {*} value The value to search for.
+     * @param {boolean|number} [fromIndex=0] The index to search from or `true`
+     *  to perform a binary search on a sorted array.
+     * @returns {number} Returns the index of the matched value, else `-1`.
+     * @example
+     *
+     * _.indexOf([1, 2, 3, 1, 2, 3], 2);
+     * // => 1
+     *
+     * // using `fromIndex`
+     * _.indexOf([1, 2, 3, 1, 2, 3], 2, 3);
+     * // => 4
+     *
+     * // performing a binary search
+     * _.indexOf([4, 4, 5, 5, 6, 6], 5, true);
+     * // => 2
+     */
+    function indexOf(array, value, fromIndex) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return -1;
+      }
+      if (typeof fromIndex == 'number') {
+        fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);
+      } else if (fromIndex) {
+        var index = binaryIndex(array, value),
+            other = array[index];
+
+        return (value === value ? value === other : other !== other) ? index : -1;
+      }
+      return baseIndexOf(array, value, fromIndex);
+    }
+
+    /**
+     * Gets all but the last element of `array`.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to query.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.initial([1, 2, 3]);
+     * // => [1, 2]
+     */
+    function initial(array) {
+      return dropRight(array, 1);
+    }
+
+    /**
+     * Creates an array of unique values in all provided arrays using `SameValueZero`
+     * for equality comparisons.
+     *
+     * **Note:** `SameValueZero` comparisons are like strict equality comparisons,
+     * e.g. `===`, except that `NaN` matches `NaN`. See the
+     * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {...Array} [arrays] The arrays to inspect.
+     * @returns {Array} Returns the new array of shared values.
+     * @example
+     *
+     * _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]);
+     * // => [1, 2]
+     */
+    function intersection() {
+      var args = [],
+          argsIndex = -1,
+          argsLength = arguments.length,
+          caches = [],
+          indexOf = getIndexOf(),
+          isCommon = indexOf == baseIndexOf;
+
+      while (++argsIndex < argsLength) {
+        var value = arguments[argsIndex];
+        if (isArray(value) || isArguments(value)) {
+          args.push(value);
+          caches.push(isCommon && value.length >= 120 && createCache(argsIndex && value));
+        }
+      }
+      argsLength = args.length;
+      var array = args[0],
+          index = -1,
+          length = array ? array.length : 0,
+          result = [],
+          seen = caches[0];
+
+      outer:
+      while (++index < length) {
+        value = array[index];
+        if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value)) < 0) {
+          argsIndex = argsLength;
+          while (--argsIndex) {
+            var cache = caches[argsIndex];
+            if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value)) < 0) {
+              continue outer;
+            }
+          }
+          if (seen) {
+            seen.push(value);
+          }
+          result.push(value);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Gets the last element of `array`.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to query.
+     * @returns {*} Returns the last element of `array`.
+     * @example
+     *
+     * _.last([1, 2, 3]);
+     * // => 3
+     */
+    function last(array) {
+      var length = array ? array.length : 0;
+      return length ? array[length - 1] : undefined;
+    }
+
+    /**
+     * This method is like `_.indexOf` except that it iterates over elements of
+     * `array` from right to left.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to search.
+     * @param {*} value The value to search for.
+     * @param {boolean|number} [fromIndex=array.length-1] The index to search from
+     *  or `true` to perform a binary search on a sorted array.
+     * @returns {number} Returns the index of the matched value, else `-1`.
+     * @example
+     *
+     * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2);
+     * // => 4
+     *
+     * // using `fromIndex`
+     * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2, 3);
+     * // => 1
+     *
+     * // performing a binary search
+     * _.lastIndexOf([4, 4, 5, 5, 6, 6], 5, true);
+     * // => 3
+     */
+    function lastIndexOf(array, value, fromIndex) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return -1;
+      }
+      var index = length;
+      if (typeof fromIndex == 'number') {
+        index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1;
+      } else if (fromIndex) {
+        index = binaryIndex(array, value, true) - 1;
+        var other = array[index];
+        return (value === value ? value === other : other !== other) ? index : -1;
+      }
+      if (value !== value) {
+        return indexOfNaN(array, index, true);
+      }
+      while (index--) {
+        if (array[index] === value) {
+          return index;
+        }
+      }
+      return -1;
+    }
+
+    /**
+     * Removes all provided values from `array` using `SameValueZero` for equality
+     * comparisons.
+     *
+     * **Notes:**
+     *  - Unlike `_.without`, this method mutates `array`.
+     *  - `SameValueZero` comparisons are like strict equality comparisons, e.g. `===`,
+     *    except that `NaN` matches `NaN`. See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+     *    for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to modify.
+     * @param {...*} [values] The values to remove.
+     * @returns {Array} Returns `array`.
+     * @example
+     *
+     * var array = [1, 2, 3, 1, 2, 3];
+     * _.pull(array, 2, 3);
+     * console.log(array);
+     * // => [1, 1]
+     */
+    function pull() {
+      var array = arguments[0];
+      if (!(array && array.length)) {
+        return array;
+      }
+      var index = 0,
+          indexOf = getIndexOf(),
+          length = arguments.length;
+
+      while (++index < length) {
+        var fromIndex = 0,
+            value = arguments[index];
+
+        while ((fromIndex = indexOf(array, value, fromIndex)) > -1) {
+          splice.call(array, fromIndex, 1);
+        }
+      }
+      return array;
+    }
+
+    /**
+     * Removes elements from `array` corresponding to the given indexes and returns
+     * an array of the removed elements. Indexes may be specified as an array of
+     * indexes or as individual arguments.
+     *
+     * **Note:** Unlike `_.at`, this method mutates `array`.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to modify.
+     * @param {...(number|number[])} [indexes] The indexes of elements to remove,
+     *  specified as individual indexes or arrays of indexes.
+     * @returns {Array} Returns the new array of removed elements.
+     * @example
+     *
+     * var array = [5, 10, 15, 20];
+     * var evens = _.pullAt(array, [1, 3]);
+     *
+     * console.log(array);
+     * // => [5, 15]
+     *
+     * console.log(evens);
+     * // => [10, 20]
+     */
+    function pullAt(array) {
+      return basePullAt(array || [], baseFlatten(arguments, false, false, 1));
+    }
+
+    /**
+     * Removes all elements from `array` that `predicate` returns truthy for
+     * and returns an array of the removed elements. The predicate is bound to
+     * `thisArg` and invoked with three arguments; (value, index, array).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * **Note:** Unlike `_.filter`, this method mutates `array`.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to modify.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {Array} Returns the new array of removed elements.
+     * @example
+     *
+     * var array = [1, 2, 3, 4];
+     * var evens = _.remove(array, function(n) { return n % 2 == 0; });
+     *
+     * console.log(array);
+     * // => [1, 3]
+     *
+     * console.log(evens);
+     * // => [2, 4]
+     */
+    function remove(array, predicate, thisArg) {
+      var index = -1,
+          length = array ? array.length : 0,
+          result = [];
+
+      predicate = getCallback(predicate, thisArg, 3);
+      while (++index < length) {
+        var value = array[index];
+        if (predicate(value, index, array)) {
+          result.push(value);
+          splice.call(array, index--, 1);
+          length--;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Gets all but the first element of `array`.
+     *
+     * @static
+     * @memberOf _
+     * @alias tail
+     * @category Array
+     * @param {Array} array The array to query.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.rest([1, 2, 3]);
+     * // => [2, 3]
+     */
+    function rest(array) {
+      return drop(array, 1);
+    }
+
+    /**
+     * Creates a slice of `array` from `start` up to, but not including, `end`.
+     *
+     * **Note:** This function is used instead of `Array#slice` to support node
+     * lists in IE < 9 and to ensure dense arrays are returned.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to slice.
+     * @param {number} [start=0] The start position.
+     * @param {number} [end=array.length] The end position.
+     * @returns {Array} Returns the slice of `array`.
+     */
+    function slice(array, start, end) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return [];
+      }
+      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
+        start = 0;
+        end = length;
+      }
+      return baseSlice(array, start, end);
+    }
+
+    /**
+     * Uses a binary search to determine the lowest index at which `value` should
+     * be inserted into `array` in order to maintain its sort order. If an iteratee
+     * function is provided it is invoked for `value` and each element of `array`
+     * to compute their sort ranking. The iteratee is bound to `thisArg` and
+     * invoked with one argument; (value).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The sorted array to inspect.
+     * @param {*} value The value to evaluate.
+     * @param {Function|Object|string} [iteratee=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {number} Returns the index at which `value` should be inserted
+     *  into `array`.
+     * @example
+     *
+     * _.sortedIndex([30, 50], 40);
+     * // => 1
+     *
+     * _.sortedIndex([4, 4, 5, 5, 6, 6], 5);
+     * // => 2
+     *
+     * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } };
+     *
+     * // using an iteratee function
+     * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) {
+     *   return this.data[word];
+     * }, dict);
+     * // => 1
+     *
+     * // using the "_.property" callback shorthand
+     * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');
+     * // => 1
+     */
+    function sortedIndex(array, value, iteratee, thisArg) {
+      var func = getCallback(iteratee);
+      return (func === baseCallback && iteratee == null)
+        ? binaryIndex(array, value)
+        : binaryIndexBy(array, value, func(iteratee, thisArg, 1));
+    }
+
+    /**
+     * This method is like `_.sortedIndex` except that it returns the highest
+     * index at which `value` should be inserted into `array` in order to
+     * maintain its sort order.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The sorted array to inspect.
+     * @param {*} value The value to evaluate.
+     * @param {Function|Object|string} [iteratee=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {number} Returns the index at which `value` should be inserted
+     *  into `array`.
+     * @example
+     *
+     * _.sortedLastIndex([4, 4, 5, 5, 6, 6], 5);
+     * // => 4
+     */
+    function sortedLastIndex(array, value, iteratee, thisArg) {
+      var func = getCallback(iteratee);
+      return (func === baseCallback && iteratee == null)
+        ? binaryIndex(array, value, true)
+        : binaryIndexBy(array, value, func(iteratee, thisArg, 1), true);
+    }
+
+    /**
+     * Creates a slice of `array` with `n` elements taken from the beginning.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {number} [n=1] The number of elements to take.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.take([1, 2, 3]);
+     * // => [1]
+     *
+     * _.take([1, 2, 3], 2);
+     * // => [1, 2]
+     *
+     * _.take([1, 2, 3], 5);
+     * // => [1, 2, 3]
+     *
+     * _.take([1, 2, 3], 0);
+     * // => []
+     */
+    function take(array, n, guard) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return [];
+      }
+      if (guard ? isIterateeCall(array, n, guard) : n == null) {
+        n = 1;
+      }
+      return baseSlice(array, 0, n < 0 ? 0 : n);
+    }
+
+    /**
+     * Creates a slice of `array` with `n` elements taken from the end.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {number} [n=1] The number of elements to take.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.takeRight([1, 2, 3]);
+     * // => [3]
+     *
+     * _.takeRight([1, 2, 3], 2);
+     * // => [2, 3]
+     *
+     * _.takeRight([1, 2, 3], 5);
+     * // => [1, 2, 3]
+     *
+     * _.takeRight([1, 2, 3], 0);
+     * // => []
+     */
+    function takeRight(array, n, guard) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return [];
+      }
+      if (guard ? isIterateeCall(array, n, guard) : n == null) {
+        n = 1;
+      }
+      n = length - (+n || 0);
+      return baseSlice(array, n < 0 ? 0 : n);
+    }
+
+    /**
+     * Creates a slice of `array` with elements taken from the end. Elements are
+     * taken until `predicate` returns falsey. The predicate is bound to `thisArg`
+     * and invoked with three arguments; (value, index, array).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per element.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.takeRightWhile([1, 2, 3], function(n) { return n > 1; });
+     * // => [2, 3]
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36, 'active': true },
+     *   { 'user': 'fred',    'age': 40, 'active': false },
+     *   { 'user': 'pebbles', 'age': 1,  'active': false }
+     * ];
+     *
+     * // using the "_.matches" callback shorthand
+     * _.pluck(_.takeRightWhile(users, { 'age': 1, 'active': true }), 'user');
+     * // => ['pebbles']
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.pluck(_.takeRightWhile(users, 'active', false), 'user');
+     * // => ['fred', 'pebbles']
+     *
+     * // using the "_.property" callback shorthand
+     * _.pluck(_.takeRightWhile(users, 'active'), 'user');
+     * // => []
+     */
+    function takeRightWhile(array, predicate, thisArg) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return [];
+      }
+      predicate = getCallback(predicate, thisArg, 3);
+      while (length-- && predicate(array[length], length, array)) {}
+      return baseSlice(array, length + 1);
+    }
+
+    /**
+     * Creates a slice of `array` with elements taken from the beginning. Elements
+     * are taken until `predicate` returns falsey. The predicate is bound to
+     * `thisArg` and invoked with three arguments; (value, index, array).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per element.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.takeWhile([1, 2, 3], function(n) { return n < 3; });
+     * // => [1, 2]
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36, 'active': false },
+     *   { 'user': 'fred',    'age': 40, 'active': false },
+     *   { 'user': 'pebbles', 'age': 1,  'active': true }
+     * ];
+     *
+     * // using the "_.matches" callback shorthand
+     * _.pluck(_.takeWhile(users, { 'age': 36, 'active': true }), 'user');
+     * // => ['barney']
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.pluck(_.takeWhile(users, 'active', false), 'user');
+     * // => ['barney', 'fred']
+     *
+     * // using the "_.property" callback shorthand
+     * _.pluck(_.takeWhile(users, 'active'), 'user');
+     * // => []
+     */
+    function takeWhile(array, predicate, thisArg) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return [];
+      }
+      var index = -1;
+      predicate = getCallback(predicate, thisArg, 3);
+      while (++index < length && predicate(array[index], index, array)) {}
+      return baseSlice(array, 0, index);
+    }
+
+    /**
+     * Creates an array of unique values, in order, of the provided arrays using
+     * `SameValueZero` for equality comparisons.
+     *
+     * **Note:** `SameValueZero` comparisons are like strict equality comparisons,
+     * e.g. `===`, except that `NaN` matches `NaN`. See the
+     * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {...Array} [arrays] The arrays to inspect.
+     * @returns {Array} Returns the new array of combined values.
+     * @example
+     *
+     * _.union([1, 2, 3], [5, 2, 1, 4], [2, 1]);
+     * // => [1, 2, 3, 5, 4]
+     */
+    function union() {
+      return baseUniq(baseFlatten(arguments, false, true));
+    }
+
+    /**
+     * Creates a duplicate-value-free version of an array using `SameValueZero`
+     * for equality comparisons. Providing `true` for `isSorted` performs a faster
+     * search algorithm for sorted arrays. If an iteratee function is provided it
+     * is invoked for each value in the array to generate the criterion by which
+     * uniqueness is computed. The `iteratee` is bound to `thisArg` and invoked
+     * with three arguments; (value, index, array).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * **Note:** `SameValueZero` comparisons are like strict equality comparisons,
+     * e.g. `===`, except that `NaN` matches `NaN`. See the
+     * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @alias unique
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {boolean} [isSorted] Specify the array is sorted.
+     * @param {Function|Object|string} [iteratee] The function invoked per iteration.
+     *  If a property name or object is provided it is used to create a "_.property"
+     *  or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Array} Returns the new duplicate-value-free array.
+     * @example
+     *
+     * _.uniq([1, 2, 1]);
+     * // => [1, 2]
+     *
+     * // using `isSorted`
+     * _.uniq([1, 1, 2], true);
+     * // => [1, 2]
+     *
+     * // using an iteratee function
+     * _.uniq([1, 2.5, 1.5, 2], function(n) { return this.floor(n); }, Math);
+     * // => [1, 2.5]
+     *
+     * // using the "_.property" callback shorthand
+     * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
+     * // => [{ 'x': 1 }, { 'x': 2 }]
+     */
+    function uniq(array, isSorted, iteratee, thisArg) {
+      var length = array ? array.length : 0;
+      if (!length) {
+        return [];
+      }
+      // Juggle arguments.
+      if (typeof isSorted != 'boolean' && isSorted != null) {
+        thisArg = iteratee;
+        iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted;
+        isSorted = false;
+      }
+      var func = getCallback();
+      if (!(func === baseCallback && iteratee == null)) {
+        iteratee = func(iteratee, thisArg, 3);
+      }
+      return (isSorted && getIndexOf() == baseIndexOf)
+        ? sortedUniq(array, iteratee)
+        : baseUniq(array, iteratee);
+    }
+
+    /**
+     * This method is like `_.zip` except that it accepts an array of grouped
+     * elements and creates an array regrouping the elements to their pre-`_.zip`
+     * configuration.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array of grouped elements to process.
+     * @returns {Array} Returns the new array of regrouped elements.
+     * @example
+     *
+     * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]);
+     * // => [['fred', 30, true], ['barney', 40, false]]
+     *
+     * _.unzip(zipped);
+     * // => [['fred', 'barney'], [30, 40], [true, false]]
+     */
+    function unzip(array) {
+      var index = -1,
+          length = (array && array.length && arrayMax(arrayMap(array, getLength))) >>> 0,
+          result = Array(length);
+
+      while (++index < length) {
+        result[index] = arrayMap(array, baseProperty(index));
+      }
+      return result;
+    }
+
+    /**
+     * Creates an array excluding all provided values using `SameValueZero` for
+     * equality comparisons.
+     *
+     * **Note:** `SameValueZero` comparisons are like strict equality comparisons,
+     * e.g. `===`, except that `NaN` matches `NaN`. See the
+     * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {Array} array The array to filter.
+     * @param {...*} [values] The values to exclude.
+     * @returns {Array} Returns the new array of filtered values.
+     * @example
+     *
+     * _.without([1, 2, 1, 0, 3, 1, 4], 0, 1);
+     * // => [2, 3, 4]
+     */
+    function without(array) {
+      return baseDifference(array, baseSlice(arguments, 1));
+    }
+
+    /**
+     * Creates an array that is the symmetric difference of the provided arrays.
+     * See [Wikipedia](https://en.wikipedia.org/wiki/Symmetric_difference) for
+     * more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {...Array} [arrays] The arrays to inspect.
+     * @returns {Array} Returns the new array of values.
+     * @example
+     *
+     * _.xor([1, 2, 3], [5, 2, 1, 4]);
+     * // => [3, 5, 4]
+     *
+     * _.xor([1, 2, 5], [2, 3, 5], [3, 4, 5]);
+     * // => [1, 4, 5]
+     */
+    function xor() {
+      var index = -1,
+          length = arguments.length;
+
+      while (++index < length) {
+        var array = arguments[index];
+        if (isArray(array) || isArguments(array)) {
+          var result = result
+            ? baseDifference(result, array).concat(baseDifference(array, result))
+            : array;
+        }
+      }
+      return result ? baseUniq(result) : [];
+    }
+
+    /**
+     * Creates an array of grouped elements, the first of which contains the first
+     * elements of the given arrays, the second of which contains the second elements
+     * of the given arrays, and so on.
+     *
+     * @static
+     * @memberOf _
+     * @category Array
+     * @param {...Array} [arrays] The arrays to process.
+     * @returns {Array} Returns the new array of grouped elements.
+     * @example
+     *
+     * _.zip(['fred', 'barney'], [30, 40], [true, false]);
+     * // => [['fred', 30, true], ['barney', 40, false]]
+     */
+    function zip() {
+      var length = arguments.length,
+          array = Array(length);
+
+      while (length--) {
+        array[length] = arguments[length];
+      }
+      return unzip(array);
+    }
+
+    /**
+     * Creates an object composed from arrays of property names and values. Provide
+     * either a single two dimensional array, e.g. `[[key1, value1], [key2, value2]]`
+     * or two arrays, one of property names and one of corresponding values.
+     *
+     * @static
+     * @memberOf _
+     * @alias object
+     * @category Array
+     * @param {Array} props The property names.
+     * @param {Array} [values=[]] The property values.
+     * @returns {Object} Returns the new object.
+     * @example
+     *
+     * _.zipObject(['fred', 'barney'], [30, 40]);
+     * // => { 'fred': 30, 'barney': 40 }
+     */
+    function zipObject(props, values) {
+      var index = -1,
+          length = props ? props.length : 0,
+          result = {};
+
+      if (length && !values && !isArray(props[0])) {
+        values = [];
+      }
+      while (++index < length) {
+        var key = props[index];
+        if (values) {
+          result[key] = values[index];
+        } else if (key) {
+          result[key[0]] = key[1];
+        }
+      }
+      return result;
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates a `lodash` object that wraps `value` with explicit method
+     * chaining enabled.
+     *
+     * @static
+     * @memberOf _
+     * @category Chain
+     * @param {*} value The value to wrap.
+     * @returns {Object} Returns the new `lodash` wrapper instance.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36 },
+     *   { 'user': 'fred',    'age': 40 },
+     *   { 'user': 'pebbles', 'age': 1 }
+     * ];
+     *
+     * var youngest = _.chain(users)
+     *   .sortBy('age')
+     *   .map(function(chr) { return chr.user + ' is ' + chr.age; })
+     *   .first()
+     *   .value();
+     * // => 'pebbles is 1'
+     */
+    function chain(value) {
+      var result = lodash(value);
+      result.__chain__ = true;
+      return result;
+    }
+
+    /**
+     * This method invokes `interceptor` and returns `value`. The interceptor is
+     * bound to `thisArg` and invoked with one argument; (value). The purpose of
+     * this method is to "tap into" a method chain in order to perform operations
+     * on intermediate results within the chain.
+     *
+     * @static
+     * @memberOf _
+     * @category Chain
+     * @param {*} value The value to provide to `interceptor`.
+     * @param {Function} interceptor The function to invoke.
+     * @param {*} [thisArg] The `this` binding of `interceptor`.
+     * @returns {*} Returns `value`.
+     * @example
+     *
+     * _([1, 2, 3])
+     *  .tap(function(array) { array.pop(); })
+     *  .reverse()
+     *  .value();
+     * // => [2, 1]
+     */
+    function tap(value, interceptor, thisArg) {
+      interceptor.call(thisArg, value);
+      return value;
+    }
+
+    /**
+     * This method is like `_.tap` except that it returns the result of `interceptor`.
+     *
+     * @static
+     * @memberOf _
+     * @category Chain
+     * @param {*} value The value to provide to `interceptor`.
+     * @param {Function} interceptor The function to invoke.
+     * @param {*} [thisArg] The `this` binding of `interceptor`.
+     * @returns {*} Returns the result of `interceptor`.
+     * @example
+     *
+     * _([1, 2, 3])
+     *  .last()
+     *  .thru(function(value) { return [value]; })
+     *  .value();
+     * // => [3]
+     */
+    function thru(value, interceptor, thisArg) {
+      return interceptor.call(thisArg, value);
+    }
+
+    /**
+     * Enables explicit method chaining on the wrapper object.
+     *
+     * @name chain
+     * @memberOf _
+     * @category Chain
+     * @returns {Object} Returns the new `lodash` wrapper instance.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36 },
+     *   { 'user': 'fred',   'age': 40 }
+     * ];
+     *
+     * // without explicit chaining
+     * _(users).first();
+     * // => { 'user': 'barney', 'age': 36 }
+     *
+     * // with explicit chaining
+     * _(users).chain()
+     *   .first()
+     *   .pick('user')
+     *   .value();
+     * // => { 'user': 'barney' }
+     */
+    function wrapperChain() {
+      return chain(this);
+    }
+
+    /**
+     * Executes the chained sequence and returns the wrapped result.
+     *
+     * @name commit
+     * @memberOf _
+     * @category Chain
+     * @returns {Object} Returns the new `lodash` wrapper instance.
+     * @example
+     *
+     * var array = [1, 2];
+     * var wrapper = _(array).push(3);
+     *
+     * console.log(array);
+     * // => [1, 2]
+     *
+     * wrapper = wrapper.commit();
+     * console.log(array);
+     * // => [1, 2, 3]
+     *
+     * wrapper.last();
+     * // => 3
+     *
+     * console.log(array);
+     * // => [1, 2, 3]
+     */
+    function wrapperCommit() {
+      return new LodashWrapper(this.value(), this.__chain__);
+    }
+
+    /**
+     * Creates a clone of the chained sequence planting `value` as the wrapped value.
+     *
+     * @name plant
+     * @memberOf _
+     * @category Chain
+     * @returns {Object} Returns the new `lodash` wrapper instance.
+     * @example
+     *
+     * var array = [1, 2];
+     * var wrapper = _(array).map(_.partial(Math.pow, _, 2));
+     *
+     * var other = [3, 4];
+     * var otherWrapper = wrapper.plant(other);
+     *
+     * otherWrapper.value();
+     * // => [9, 16]
+     *
+     * wrapper.value();
+     * // => [1, 4]
+     */
+    function wrapperPlant(value) {
+      var result,
+          parent = this;
+
+      while (parent instanceof LodashWrapper) {
+        var clone = wrapperClone(parent);
+        if (result) {
+          previous.__wrapped__ = clone;
+        } else {
+          result = clone;
+        }
+        var previous = clone;
+        parent = parent.__wrapped__;
+      }
+      previous.__wrapped__ = value;
+      return result;
+    }
+
+    /**
+     * Reverses the wrapped array so the first element becomes the last, the
+     * second element becomes the second to last, and so on.
+     *
+     * **Note:** This method mutates the wrapped array.
+     *
+     * @name reverse
+     * @memberOf _
+     * @category Chain
+     * @returns {Object} Returns the new reversed `lodash` wrapper instance.
+     * @example
+     *
+     * var array = [1, 2, 3];
+     *
+     * _(array).reverse().value()
+     * // => [3, 2, 1]
+     *
+     * console.log(array);
+     * // => [3, 2, 1]
+     */
+    function wrapperReverse() {
+      var value = this.__wrapped__;
+      if (value instanceof LazyWrapper) {
+        if (this.__actions__.length) {
+          value = new LazyWrapper(this);
+        }
+        return new LodashWrapper(value.reverse(), this.__chain__);
+      }
+      return this.thru(function(value) {
+        return value.reverse();
+      });
+    }
+
+    /**
+     * Produces the result of coercing the unwrapped value to a string.
+     *
+     * @name toString
+     * @memberOf _
+     * @category Chain
+     * @returns {string} Returns the coerced string value.
+     * @example
+     *
+     * _([1, 2, 3]).toString();
+     * // => '1,2,3'
+     */
+    function wrapperToString() {
+      return (this.value() + '');
+    }
+
+    /**
+     * Executes the chained sequence to extract the unwrapped value.
+     *
+     * @name value
+     * @memberOf _
+     * @alias run, toJSON, valueOf
+     * @category Chain
+     * @returns {*} Returns the resolved unwrapped value.
+     * @example
+     *
+     * _([1, 2, 3]).value();
+     * // => [1, 2, 3]
+     */
+    function wrapperValue() {
+      return baseWrapperValue(this.__wrapped__, this.__actions__);
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates an array of elements corresponding to the given keys, or indexes,
+     * of `collection`. Keys may be specified as individual arguments or as arrays
+     * of keys.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {...(number|number[]|string|string[])} [props] The property names
+     *  or indexes of elements to pick, specified individually or in arrays.
+     * @returns {Array} Returns the new array of picked elements.
+     * @example
+     *
+     * _.at(['a', 'b', 'c', 'd', 'e'], [0, 2, 4]);
+     * // => ['a', 'c', 'e']
+     *
+     * _.at(['fred', 'barney', 'pebbles'], 0, 2);
+     * // => ['fred', 'pebbles']
+     */
+    function at(collection) {
+      var length = collection ? collection.length : 0;
+      if (isLength(length)) {
+        collection = toIterable(collection);
+      }
+      return baseAt(collection, baseFlatten(arguments, false, false, 1));
+    }
+
+    /**
+     * Checks if `value` is in `collection` using `SameValueZero` for equality
+     * comparisons. If `fromIndex` is negative, it is used as the offset from
+     * the end of `collection`.
+     *
+     * **Note:** `SameValueZero` comparisons are like strict equality comparisons,
+     * e.g. `===`, except that `NaN` matches `NaN`. See the
+     * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @alias contains, include
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to search.
+     * @param {*} target The value to search for.
+     * @param {number} [fromIndex=0] The index to search from.
+     * @returns {boolean} Returns `true` if a matching element is found, else `false`.
+     * @example
+     *
+     * _.includes([1, 2, 3], 1);
+     * // => true
+     *
+     * _.includes([1, 2, 3], 1, 2);
+     * // => false
+     *
+     * _.includes({ 'user': 'fred', 'age': 40 }, 'fred');
+     * // => true
+     *
+     * _.includes('pebbles', 'eb');
+     * // => true
+     */
+    function includes(collection, target, fromIndex) {
+      var length = collection ? collection.length : 0;
+      if (!isLength(length)) {
+        collection = values(collection);
+        length = collection.length;
+      }
+      if (!length) {
+        return false;
+      }
+      if (typeof fromIndex == 'number') {
+        fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);
+      } else {
+        fromIndex = 0;
+      }
+      return (typeof collection == 'string' || !isArray(collection) && isString(collection))
+        ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1)
+        : (getIndexOf(collection, target, fromIndex) > -1);
+    }
+
+    /**
+     * Creates an object composed of keys generated from the results of running
+     * each element of `collection` through `iteratee`. The corresponding value
+     * of each key is the number of times the key was returned by `iteratee`.
+     * The `iteratee` is bound to `thisArg` and invoked with three arguments;
+     * (value, index|key, collection).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|Object|string} [iteratee=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Object} Returns the composed aggregate object.
+     * @example
+     *
+     * _.countBy([4.3, 6.1, 6.4], function(n) { return Math.floor(n); });
+     * // => { '4': 1, '6': 2 }
+     *
+     * _.countBy([4.3, 6.1, 6.4], function(n) { return this.floor(n); }, Math);
+     * // => { '4': 1, '6': 2 }
+     *
+     * _.countBy(['one', 'two', 'three'], 'length');
+     * // => { '3': 2, '5': 1 }
+     */
+    var countBy = createAggregator(function(result, value, key) {
+      hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1);
+    });
+
+    /**
+     * Checks if `predicate` returns truthy for **all** elements of `collection`.
+     * The predicate is bound to `thisArg` and invoked with three arguments;
+     * (value, index|key, collection).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @alias all
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {boolean} Returns `true` if all elements pass the predicate check,
+     *  else `false`.
+     * @example
+     *
+     * _.every([true, 1, null, 'yes']);
+     * // => false
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36, 'active': false },
+     *   { 'user': 'fred',   'age': 40, 'active': false }
+     * ];
+     *
+     * // using the "_.matches" callback shorthand
+     * _.every(users, { 'age': 36, 'active': false });
+     * // => false
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.every(users, 'active', false);
+     * // => true
+     *
+     * // using the "_.property" callback shorthand
+     * _.every(users, 'active');
+     * // => false
+     */
+    function every(collection, predicate, thisArg) {
+      var func = isArray(collection) ? arrayEvery : baseEvery;
+      if (typeof predicate != 'function' || typeof thisArg != 'undefined') {
+        predicate = getCallback(predicate, thisArg, 3);
+      }
+      return func(collection, predicate);
+    }
+
+    /**
+     * Iterates over elements of `collection`, returning an array of all elements
+     * `predicate` returns truthy for. The predicate is bound to `thisArg` and
+     * invoked with three arguments; (value, index|key, collection).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @alias select
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {Array} Returns the new filtered array.
+     * @example
+     *
+     * var evens = _.filter([1, 2, 3, 4], function(n) { return n % 2 == 0; });
+     * // => [2, 4]
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36, 'active': true },
+     *   { 'user': 'fred',   'age': 40, 'active': false }
+     * ];
+     *
+     * // using the "_.matches" callback shorthand
+     * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');
+     * // => ['barney']
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.pluck(_.filter(users, 'active', false), 'user');
+     * // => ['fred']
+     *
+     * // using the "_.property" callback shorthand
+     * _.pluck(_.filter(users, 'active'), 'user');
+     * // => ['barney']
+     */
+    function filter(collection, predicate, thisArg) {
+      var func = isArray(collection) ? arrayFilter : baseFilter;
+      predicate = getCallback(predicate, thisArg, 3);
+      return func(collection, predicate);
+    }
+
+    /**
+     * Iterates over elements of `collection`, returning the first element
+     * `predicate` returns truthy for. The predicate is bound to `thisArg` and
+     * invoked with three arguments; (value, index|key, collection).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @alias detect
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to search.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {*} Returns the matched element, else `undefined`.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36, 'active': true },
+     *   { 'user': 'fred',    'age': 40, 'active': false },
+     *   { 'user': 'pebbles', 'age': 1,  'active': true }
+     * ];
+     *
+     * _.result(_.find(users, function(chr) { return chr.age < 40; }), 'user');
+     * // => 'barney'
+     *
+     * // using the "_.matches" callback shorthand
+     * _.result(_.find(users, { 'age': 1, 'active': true }), 'user');
+     * // => 'pebbles'
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.result(_.find(users, 'active', false), 'user');
+     * // => 'fred'
+     *
+     * // using the "_.property" callback shorthand
+     * _.result(_.find(users, 'active'), 'user');
+     * // => 'barney'
+     */
+    function find(collection, predicate, thisArg) {
+      if (isArray(collection)) {
+        var index = findIndex(collection, predicate, thisArg);
+        return index > -1 ? collection[index] : undefined;
+      }
+      predicate = getCallback(predicate, thisArg, 3);
+      return baseFind(collection, predicate, baseEach);
+    }
+
+    /**
+     * This method is like `_.find` except that it iterates over elements of
+     * `collection` from right to left.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to search.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {*} Returns the matched element, else `undefined`.
+     * @example
+     *
+     * _.findLast([1, 2, 3, 4], function(n) { return n % 2 == 1; });
+     * // => 3
+     */
+    function findLast(collection, predicate, thisArg) {
+      predicate = getCallback(predicate, thisArg, 3);
+      return baseFind(collection, predicate, baseEachRight);
+    }
+
+    /**
+     * Performs a deep comparison between each element in `collection` and the
+     * source object, returning the first element that has equivalent property
+     * values.
+     *
+     * **Note:** This method supports comparing arrays, booleans, `Date` objects,
+     * numbers, `Object` objects, regexes, and strings. Objects are compared by
+     * their own, not inherited, enumerable properties. For comparing a single
+     * own or inherited property value see `_.matchesProperty`.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to search.
+     * @param {Object} source The object of property values to match.
+     * @returns {*} Returns the matched element, else `undefined`.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36, 'active': true },
+     *   { 'user': 'fred',   'age': 40, 'active': false }
+     * ];
+     *
+     * _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user');
+     * // => 'barney'
+     *
+     * _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user');
+     * // => 'fred'
+     */
+    function findWhere(collection, source) {
+      return find(collection, baseMatches(source));
+    }
+
+    /**
+     * Iterates over elements of `collection` invoking `iteratee` for each element.
+     * The `iteratee` is bound to `thisArg` and invoked with three arguments;
+     * (value, index|key, collection). Iterator functions may exit iteration early
+     * by explicitly returning `false`.
+     *
+     * **Note:** As with other "Collections" methods, objects with a `length` property
+     * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
+     * may be used for object iteration.
+     *
+     * @static
+     * @memberOf _
+     * @alias each
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Array|Object|string} Returns `collection`.
+     * @example
+     *
+     * _([1, 2, 3]).forEach(function(n) { console.log(n); }).value();
+     * // => logs each value from left to right and returns the array
+     *
+     * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(n, key) { console.log(n, key); });
+     * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
+     */
+    function forEach(collection, iteratee, thisArg) {
+      return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection))
+        ? arrayEach(collection, iteratee)
+        : baseEach(collection, bindCallback(iteratee, thisArg, 3));
+    }
+
+    /**
+     * This method is like `_.forEach` except that it iterates over elements of
+     * `collection` from right to left.
+     *
+     * @static
+     * @memberOf _
+     * @alias eachRight
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Array|Object|string} Returns `collection`.
+     * @example
+     *
+     * _([1, 2, 3]).forEachRight(function(n) { console.log(n); }).join(',');
+     * // => logs each value from right to left and returns the array
+     */
+    function forEachRight(collection, iteratee, thisArg) {
+      return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection))
+        ? arrayEachRight(collection, iteratee)
+        : baseEachRight(collection, bindCallback(iteratee, thisArg, 3));
+    }
+
+    /**
+     * Creates an object composed of keys generated from the results of running
+     * each element of `collection` through `iteratee`. The corresponding value
+     * of each key is an array of the elements responsible for generating the key.
+     * The `iteratee` is bound to `thisArg` and invoked with three arguments;
+     * (value, index|key, collection).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|Object|string} [iteratee=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Object} Returns the composed aggregate object.
+     * @example
+     *
+     * _.groupBy([4.2, 6.1, 6.4], function(n) { return Math.floor(n); });
+     * // => { '4': [4.2], '6': [6.1, 6.4] }
+     *
+     * _.groupBy([4.2, 6.1, 6.4], function(n) { return this.floor(n); }, Math);
+     * // => { '4': [4.2], '6': [6.1, 6.4] }
+     *
+     * // using the "_.property" callback shorthand
+     * _.groupBy(['one', 'two', 'three'], 'length');
+     * // => { '3': ['one', 'two'], '5': ['three'] }
+     */
+    var groupBy = createAggregator(function(result, value, key) {
+      if (hasOwnProperty.call(result, key)) {
+        result[key].push(value);
+      } else {
+        result[key] = [value];
+      }
+    });
+
+    /**
+     * Creates an object composed of keys generated from the results of running
+     * each element of `collection` through `iteratee`. The corresponding value
+     * of each key is the last element responsible for generating the key. The
+     * iteratee function is bound to `thisArg` and invoked with three arguments;
+     * (value, index|key, collection).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|Object|string} [iteratee=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Object} Returns the composed aggregate object.
+     * @example
+     *
+     * var keyData = [
+     *   { 'dir': 'left', 'code': 97 },
+     *   { 'dir': 'right', 'code': 100 }
+     * ];
+     *
+     * _.indexBy(keyData, 'dir');
+     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
+     *
+     * _.indexBy(keyData, function(object) { return String.fromCharCode(object.code); });
+     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
+     *
+     * _.indexBy(keyData, function(object) { return this.fromCharCode(object.code); }, String);
+     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
+     */
+    var indexBy = createAggregator(function(result, value, key) {
+      result[key] = value;
+    });
+
+    /**
+     * Invokes the method named by `methodName` on each element in `collection`,
+     * returning an array of the results of each invoked method. Any additional
+     * arguments are provided to each invoked method. If `methodName` is a function
+     * it is invoked for, and `this` bound to, each element in `collection`.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|string} methodName The name of the method to invoke or
+     *  the function invoked per iteration.
+     * @param {...*} [args] The arguments to invoke the method with.
+     * @returns {Array} Returns the array of results.
+     * @example
+     *
+     * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort');
+     * // => [[1, 5, 7], [1, 2, 3]]
+     *
+     * _.invoke([123, 456], String.prototype.split, '');
+     * // => [['1', '2', '3'], ['4', '5', '6']]
+     */
+    function invoke(collection, methodName) {
+      return baseInvoke(collection, methodName, baseSlice(arguments, 2));
+    }
+
+    /**
+     * Creates an array of values by running each element in `collection` through
+     * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
+     * arguments; (value, index|key, collection).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * Many lodash methods are guarded to work as interatees for methods like
+     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
+     *
+     * The guarded methods are:
+     * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`, `drop`,
+     * `dropRight`, `fill`, `flatten`, `invert`, `max`, `min`, `parseInt`, `slice`,
+     * `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimLeft`, `trimRight`,
+     * `trunc`, `random`, `range`, `sample`, `uniq`, and `words`
+     *
+     * @static
+     * @memberOf _
+     * @alias collect
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|Object|string} [iteratee=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Array} Returns the new mapped array.
+     * @example
+     *
+     * _.map([1, 2, 3], function(n) { return n * 3; });
+     * // => [3, 6, 9]
+     *
+     * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(n) { return n * 3; });
+     * // => [3, 6, 9] (iteration order is not guaranteed)
+     *
+     * var users = [
+     *   { 'user': 'barney' },
+     *   { 'user': 'fred' }
+     * ];
+     *
+     * // using the "_.property" callback shorthand
+     * _.map(users, 'user');
+     * // => ['barney', 'fred']
+     */
+    function map(collection, iteratee, thisArg) {
+      var func = isArray(collection) ? arrayMap : baseMap;
+      iteratee = getCallback(iteratee, thisArg, 3);
+      return func(collection, iteratee);
+    }
+
+    /**
+     * Gets the maximum value of `collection`. If `collection` is empty or falsey
+     * `-Infinity` is returned. If an iteratee function is provided it is invoked
+     * for each value in `collection` to generate the criterion by which the value
+     * is ranked. The `iteratee` is bound to `thisArg` and invoked with three
+     * arguments; (value, index, collection).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|Object|string} [iteratee] The function invoked per iteration.
+     *  If a property name or object is provided it is used to create a "_.property"
+     *  or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {*} Returns the maximum value.
+     * @example
+     *
+     * _.max([4, 2, 8, 6]);
+     * // => 8
+     *
+     * _.max([]);
+     * // => -Infinity
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36 },
+     *   { 'user': 'fred',   'age': 40 }
+     * ];
+     *
+     * _.max(users, function(chr) { return chr.age; });
+     * // => { 'user': 'fred', 'age': 40 };
+     *
+     * // using the "_.property" callback shorthand
+     * _.max(users, 'age');
+     * // => { 'user': 'fred', 'age': 40 };
+     */
+    var max = createExtremum(arrayMax);
+
+    /**
+     * Gets the minimum value of `collection`. If `collection` is empty or falsey
+     * `Infinity` is returned. If an iteratee function is provided it is invoked
+     * for each value in `collection` to generate the criterion by which the value
+     * is ranked. The `iteratee` is bound to `thisArg` and invoked with three
+     * arguments; (value, index, collection).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|Object|string} [iteratee] The function invoked per iteration.
+     *  If a property name or object is provided it is used to create a "_.property"
+     *  or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {*} Returns the minimum value.
+     * @example
+     *
+     * _.min([4, 2, 8, 6]);
+     * // => 2
+     *
+     * _.min([]);
+     * // => Infinity
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36 },
+     *   { 'user': 'fred',   'age': 40 }
+     * ];
+     *
+     * _.min(users, function(chr) { return chr.age; });
+     * // => { 'user': 'barney', 'age': 36 };
+     *
+     * // using the "_.property" callback shorthand
+     * _.min(users, 'age');
+     * // => { 'user': 'barney', 'age': 36 };
+     */
+    var min = createExtremum(arrayMin, true);
+
+    /**
+     * Creates an array of elements split into two groups, the first of which
+     * contains elements `predicate` returns truthy for, while the second of which
+     * contains elements `predicate` returns falsey for. The predicate is bound
+     * to `thisArg` and invoked with three arguments; (value, index|key, collection).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {Array} Returns the array of grouped elements.
+     * @example
+     *
+     * _.partition([1, 2, 3], function(n) { return n % 2; });
+     * // => [[1, 3], [2]]
+     *
+     * _.partition([1.2, 2.3, 3.4], function(n) { return this.floor(n) % 2; }, Math);
+     * // => [[1, 3], [2]]
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36, 'active': false },
+     *   { 'user': 'fred',    'age': 40, 'active': true },
+     *   { 'user': 'pebbles', 'age': 1,  'active': false }
+     * ];
+     *
+     * var mapper = function(array) { return _.pluck(array, 'user'); };
+     *
+     * // using the "_.matches" callback shorthand
+     * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper);
+     * // => [['pebbles'], ['barney', 'fred']]
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.map(_.partition(users, 'active', false), mapper);
+     * // => [['barney', 'pebbles'], ['fred']]
+     *
+     * // using the "_.property" callback shorthand
+     * _.map(_.partition(users, 'active'), mapper);
+     * // => [['fred'], ['barney', 'pebbles']]
+     */
+    var partition = createAggregator(function(result, value, key) {
+      result[key ? 0 : 1].push(value);
+    }, function() { return [[], []]; });
+
+    /**
+     * Gets the value of `key` from all elements in `collection`.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {string} key The key of the property to pluck.
+     * @returns {Array} Returns the property values.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36 },
+     *   { 'user': 'fred',   'age': 40 }
+     * ];
+     *
+     * _.pluck(users, 'user');
+     * // => ['barney', 'fred']
+     *
+     * var userIndex = _.indexBy(users, 'user');
+     * _.pluck(userIndex, 'age');
+     * // => [36, 40] (iteration order is not guaranteed)
+     */
+    function pluck(collection, key) {
+      return map(collection, baseProperty(key));
+    }
+
+    /**
+     * Reduces `collection` to a value which is the accumulated result of running
+     * each element in `collection` through `iteratee`, where each successive
+     * invocation is supplied the return value of the previous. If `accumulator`
+     * is not provided the first element of `collection` is used as the initial
+     * value. The `iteratee` is bound to `thisArg`and invoked with four arguments;
+     * (accumulator, value, index|key, collection).
+     *
+     * Many lodash methods are guarded to work as interatees for methods like
+     * `_.reduce`, `_.reduceRight`, and `_.transform`.
+     *
+     * The guarded methods are:
+     * `assign`, `defaults`, `merge`, and `sortAllBy`
+     *
+     * @static
+     * @memberOf _
+     * @alias foldl, inject
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [accumulator] The initial value.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {*} Returns the accumulated value.
+     * @example
+     *
+     * var sum = _.reduce([1, 2, 3], function(sum, n) { return sum + n; });
+     * // => 6
+     *
+     * var mapped = _.reduce({ 'a': 1, 'b': 2, 'c': 3 }, function(result, n, key) {
+     *   result[key] = n * 3;
+     *   return result;
+     * }, {});
+     * // => { 'a': 3, 'b': 6, 'c': 9 } (iteration order is not guaranteed)
+     */
+    function reduce(collection, iteratee, accumulator, thisArg) {
+      var func = isArray(collection) ? arrayReduce : baseReduce;
+      return func(collection, getCallback(iteratee, thisArg, 4), accumulator, arguments.length < 3, baseEach);
+    }
+
+    /**
+     * This method is like `_.reduce` except that it iterates over elements of
+     * `collection` from right to left.
+     *
+     * @static
+     * @memberOf _
+     * @alias foldr
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [accumulator] The initial value.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {*} Returns the accumulated value.
+     * @example
+     *
+     * var array = [[0, 1], [2, 3], [4, 5]];
+     * _.reduceRight(array, function(flattened, other) { return flattened.concat(other); }, []);
+     * // => [4, 5, 2, 3, 0, 1]
+     */
+    function reduceRight(collection, iteratee, accumulator, thisArg) {
+      var func = isArray(collection) ? arrayReduceRight : baseReduce;
+      return func(collection, getCallback(iteratee, thisArg, 4), accumulator, arguments.length < 3, baseEachRight);
+    }
+
+    /**
+     * The opposite of `_.filter`; this method returns the elements of `collection`
+     * that `predicate` does **not** return truthy for.
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {Array} Returns the new filtered array.
+     * @example
+     *
+     * var odds = _.reject([1, 2, 3, 4], function(n) { return n % 2 == 0; });
+     * // => [1, 3]
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36, 'active': false },
+     *   { 'user': 'fred',   'age': 40, 'active': true }
+     * ];
+     *
+     * // using the "_.matches" callback shorthand
+     * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');
+     * // => ['barney']
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.pluck(_.reject(users, 'active', false), 'user');
+     * // => ['fred']
+     *
+     * // using the "_.property" callback shorthand
+     * _.pluck(_.reject(users, 'active'), 'user');
+     * // => ['barney']
+     */
+    function reject(collection, predicate, thisArg) {
+      var func = isArray(collection) ? arrayFilter : baseFilter;
+      predicate = getCallback(predicate, thisArg, 3);
+      return func(collection, function(value, index, collection) {
+        return !predicate(value, index, collection);
+      });
+    }
+
+    /**
+     * Gets a random element or `n` random elements from a collection.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to sample.
+     * @param {number} [n] The number of elements to sample.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {*} Returns the random sample(s).
+     * @example
+     *
+     * _.sample([1, 2, 3, 4]);
+     * // => 2
+     *
+     * _.sample([1, 2, 3, 4], 2);
+     * // => [3, 1]
+     */
+    function sample(collection, n, guard) {
+      if (guard ? isIterateeCall(collection, n, guard) : n == null) {
+        collection = toIterable(collection);
+        var length = collection.length;
+        return length > 0 ? collection[baseRandom(0, length - 1)] : undefined;
+      }
+      var result = shuffle(collection);
+      result.length = nativeMin(n < 0 ? 0 : (+n || 0), result.length);
+      return result;
+    }
+
+    /**
+     * Creates an array of shuffled values, using a version of the Fisher-Yates
+     * shuffle. See [Wikipedia](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to shuffle.
+     * @returns {Array} Returns the new shuffled array.
+     * @example
+     *
+     * _.shuffle([1, 2, 3, 4]);
+     * // => [4, 1, 3, 2]
+     */
+    function shuffle(collection) {
+      collection = toIterable(collection);
+
+      var index = -1,
+          length = collection.length,
+          result = Array(length);
+
+      while (++index < length) {
+        var rand = baseRandom(0, index);
+        if (index != rand) {
+          result[index] = result[rand];
+        }
+        result[rand] = collection[index];
+      }
+      return result;
+    }
+
+    /**
+     * Gets the size of `collection` by returning `collection.length` for
+     * array-like values or the number of own enumerable properties for objects.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to inspect.
+     * @returns {number} Returns the size of `collection`.
+     * @example
+     *
+     * _.size([1, 2]);
+     * // => 2
+     *
+     * _.size({ 'one': 1, 'two': 2, 'three': 3 });
+     * // => 3
+     *
+     * _.size('pebbles');
+     * // => 7
+     */
+    function size(collection) {
+      var length = collection ? collection.length : 0;
+      return isLength(length) ? length : keys(collection).length;
+    }
+
+    /**
+     * Checks if `predicate` returns truthy for **any** element of `collection`.
+     * The function returns as soon as it finds a passing value and does not iterate
+     * over the entire collection. The predicate is bound to `thisArg` and invoked
+     * with three arguments; (value, index|key, collection).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @alias any
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {boolean} Returns `true` if any element passes the predicate check,
+     *  else `false`.
+     * @example
+     *
+     * _.some([null, 0, 'yes', false], Boolean);
+     * // => true
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36, 'active': false },
+     *   { 'user': 'fred',   'age': 40, 'active': true }
+     * ];
+     *
+     * // using the "_.matches" callback shorthand
+     * _.some(users, { 'age': 1, 'active': true });
+     * // => false
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.some(users, 'active', false);
+     * // => true
+     *
+     * // using the "_.property" callback shorthand
+     * _.some(users, 'active');
+     * // => true
+     */
+    function some(collection, predicate, thisArg) {
+      var func = isArray(collection) ? arraySome : baseSome;
+      if (typeof predicate != 'function' || typeof thisArg != 'undefined') {
+        predicate = getCallback(predicate, thisArg, 3);
+      }
+      return func(collection, predicate);
+    }
+
+    /**
+     * Creates an array of elements, sorted in ascending order by the results of
+     * running each element in a collection through `iteratee`. This method performs
+     * a stable sort, that is, it preserves the original sort order of equal elements.
+     * The `iteratee` is bound to `thisArg` and invoked with three arguments;
+     * (value, index|key, collection).
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {Array|Function|Object|string} [iteratee=_.identity] The function
+     *  invoked per iteration. If a property name or an object is provided it is
+     *  used to create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Array} Returns the new sorted array.
+     * @example
+     *
+     * _.sortBy([1, 2, 3], function(n) { return Math.sin(n); });
+     * // => [3, 1, 2]
+     *
+     * _.sortBy([1, 2, 3], function(n) { return this.sin(n); }, Math);
+     * // => [3, 1, 2]
+     *
+     * var users = [
+     *   { 'user': 'fred' },
+     *   { 'user': 'pebbles' },
+     *   { 'user': 'barney' }
+     * ];
+     *
+     * // using the "_.property" callback shorthand
+     * _.pluck(_.sortBy(users, 'user'), 'user');
+     * // => ['barney', 'fred', 'pebbles']
+     */
+    function sortBy(collection, iteratee, thisArg) {
+      var index = -1,
+          length = collection ? collection.length : 0,
+          result = isLength(length) ? Array(length) : [];
+
+      if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {
+        iteratee = null;
+      }
+      iteratee = getCallback(iteratee, thisArg, 3);
+      baseEach(collection, function(value, key, collection) {
+        result[++index] = { 'criteria': iteratee(value, key, collection), 'index': index, 'value': value };
+      });
+      return baseSortBy(result, compareAscending);
+    }
+
+    /**
+     * This method is like `_.sortBy` except that it sorts by property names
+     * instead of an iteratee function.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to iterate over.
+     * @param {...(string|string[])} props The property names to sort by,
+     *  specified as individual property names or arrays of property names.
+     * @returns {Array} Returns the new sorted array.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36 },
+     *   { 'user': 'fred',   'age': 40 },
+     *   { 'user': 'barney', 'age': 26 },
+     *   { 'user': 'fred',   'age': 30 }
+     * ];
+     *
+     * _.map(_.sortByAll(users, ['user', 'age']), _.values);
+     * // => [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]]
+     */
+    function sortByAll(collection) {
+      var args = arguments;
+      if (args.length > 3 && isIterateeCall(args[1], args[2], args[3])) {
+        args = [collection, args[1]];
+      }
+      var index = -1,
+          length = collection ? collection.length : 0,
+          props = baseFlatten(args, false, false, 1),
+          result = isLength(length) ? Array(length) : [];
+
+      baseEach(collection, function(value) {
+        var length = props.length,
+            criteria = Array(length);
+
+        while (length--) {
+          criteria[length] = value == null ? undefined : value[props[length]];
+        }
+        result[++index] = { 'criteria': criteria, 'index': index, 'value': value };
+      });
+      return baseSortBy(result, compareMultipleAscending);
+    }
+
+    /**
+     * Performs a deep comparison between each element in `collection` and the
+     * source object, returning an array of all elements that have equivalent
+     * property values.
+     *
+     * **Note:** This method supports comparing arrays, booleans, `Date` objects,
+     * numbers, `Object` objects, regexes, and strings. Objects are compared by
+     * their own, not inherited, enumerable properties. For comparing a single
+     * own or inherited property value see `_.matchesProperty`.
+     *
+     * @static
+     * @memberOf _
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to search.
+     * @param {Object} source The object of property values to match.
+     * @returns {Array} Returns the new filtered array.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] },
+     *   { 'user': 'fred',   'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] }
+     * ];
+     *
+     * _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user');
+     * // => ['barney']
+     *
+     * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user');
+     * // => ['fred']
+     */
+    function where(collection, source) {
+      return filter(collection, baseMatches(source));
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Gets the number of milliseconds that have elapsed since the Unix epoch
+     * (1 January 1970 00:00:00 UTC).
+     *
+     * @static
+     * @memberOf _
+     * @category Date
+     * @example
+     *
+     * _.defer(function(stamp) { console.log(_.now() - stamp); }, _.now());
+     * // => logs the number of milliseconds it took for the deferred function to be invoked
+     */
+    var now = nativeNow || function() {
+      return new Date().getTime();
+    };
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * The opposite of `_.before`; this method creates a function that invokes
+     * `func` once it is called `n` or more times.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {number} n The number of calls before `func` is invoked.
+     * @param {Function} func The function to restrict.
+     * @returns {Function} Returns the new restricted function.
+     * @example
+     *
+     * var saves = ['profile', 'settings'];
+     *
+     * var done = _.after(saves.length, function() {
+     *   console.log('done saving!');
+     * });
+     *
+     * _.forEach(saves, function(type) {
+     *   asyncSave({ 'type': type, 'complete': done });
+     * });
+     * // => logs 'done saving!' after the two async saves have completed
+     */
+    function after(n, func) {
+      if (typeof func != 'function') {
+        if (typeof n == 'function') {
+          var temp = n;
+          n = func;
+          func = temp;
+        } else {
+          throw new TypeError(FUNC_ERROR_TEXT);
+        }
+      }
+      n = nativeIsFinite(n = +n) ? n : 0;
+      return function() {
+        if (--n < 1) {
+          return func.apply(this, arguments);
+        }
+      };
+    }
+
+    /**
+     * Creates a function that accepts up to `n` arguments ignoring any
+     * additional arguments.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to cap arguments for.
+     * @param {number} [n=func.length] The arity cap.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * _.map(['6', '8', '10'], _.ary(parseInt, 1));
+     * // => [6, 8, 10]
+     */
+    function ary(func, n, guard) {
+      if (guard && isIterateeCall(func, n, guard)) {
+        n = null;
+      }
+      n = (func && n == null) ? func.length : nativeMax(+n || 0, 0);
+      return createWrapper(func, ARY_FLAG, null, null, null, null, n);
+    }
+
+    /**
+     * Creates a function that invokes `func`, with the `this` binding and arguments
+     * of the created function, while it is called less than `n` times. Subsequent
+     * calls to the created function return the result of the last `func` invocation.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {number} n The number of calls at which `func` is no longer invoked.
+     * @param {Function} func The function to restrict.
+     * @returns {Function} Returns the new restricted function.
+     * @example
+     *
+     * jQuery('#add').on('click', _.before(5, addContactToList));
+     * // => allows adding up to 4 contacts to the list
+     */
+    function before(n, func) {
+      var result;
+      if (typeof func != 'function') {
+        if (typeof n == 'function') {
+          var temp = n;
+          n = func;
+          func = temp;
+        } else {
+          throw new TypeError(FUNC_ERROR_TEXT);
+        }
+      }
+      return function() {
+        if (--n > 0) {
+          result = func.apply(this, arguments);
+        } else {
+          func = null;
+        }
+        return result;
+      };
+    }
+
+    /**
+     * Creates a function that invokes `func` with the `this` binding of `thisArg`
+     * and prepends any additional `_.bind` arguments to those provided to the
+     * bound function.
+     *
+     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
+     * may be used as a placeholder for partially applied arguments.
+     *
+     * **Note:** Unlike native `Function#bind` this method does not set the `length`
+     * property of bound functions.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to bind.
+     * @param {*} thisArg The `this` binding of `func`.
+     * @param {...*} [args] The arguments to be partially applied.
+     * @returns {Function} Returns the new bound function.
+     * @example
+     *
+     * var greet = function(greeting, punctuation) {
+     *   return greeting + ' ' + this.user + punctuation;
+     * };
+     *
+     * var object = { 'user': 'fred' };
+     *
+     * var bound = _.bind(greet, object, 'hi');
+     * bound('!');
+     * // => 'hi fred!'
+     *
+     * // using placeholders
+     * var bound = _.bind(greet, object, _, '!');
+     * bound('hi');
+     * // => 'hi fred!'
+     */
+    function bind(func, thisArg) {
+      var bitmask = BIND_FLAG;
+      if (arguments.length > 2) {
+        var partials = baseSlice(arguments, 2),
+            holders = replaceHolders(partials, bind.placeholder);
+
+        bitmask |= PARTIAL_FLAG;
+      }
+      return createWrapper(func, bitmask, thisArg, partials, holders);
+    }
+
+    /**
+     * Binds methods of an object to the object itself, overwriting the existing
+     * method. Method names may be specified as individual arguments or as arrays
+     * of method names. If no method names are provided all enumerable function
+     * properties, own and inherited, of `object` are bound.
+     *
+     * **Note:** This method does not set the `length` property of bound functions.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Object} object The object to bind and assign the bound methods to.
+     * @param {...(string|string[])} [methodNames] The object method names to bind,
+     *  specified as individual method names or arrays of method names.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * var view = {
+     *   'label': 'docs',
+     *   'onClick': function() { console.log('clicked ' + this.label); }
+     * };
+     *
+     * _.bindAll(view);
+     * jQuery('#docs').on('click', view.onClick);
+     * // => logs 'clicked docs' when the element is clicked
+     */
+    function bindAll(object) {
+      return baseBindAll(object,
+        arguments.length > 1
+          ? baseFlatten(arguments, false, false, 1)
+          : functions(object)
+      );
+    }
+
+    /**
+     * Creates a function that invokes the method at `object[key]` and prepends
+     * any additional `_.bindKey` arguments to those provided to the bound function.
+     *
+     * This method differs from `_.bind` by allowing bound functions to reference
+     * methods that may be redefined or don't yet exist.
+     * See [Peter Michaux's article](http://michaux.ca/articles/lazy-function-definition-pattern)
+     * for more details.
+     *
+     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
+     * builds, may be used as a placeholder for partially applied arguments.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Object} object The object the method belongs to.
+     * @param {string} key The key of the method.
+     * @param {...*} [args] The arguments to be partially applied.
+     * @returns {Function} Returns the new bound function.
+     * @example
+     *
+     * var object = {
+     *   'user': 'fred',
+     *   'greet': function(greeting, punctuation) {
+     *     return greeting + ' ' + this.user + punctuation;
+     *   }
+     * };
+     *
+     * var bound = _.bindKey(object, 'greet', 'hi');
+     * bound('!');
+     * // => 'hi fred!'
+     *
+     * object.greet = function(greeting, punctuation) {
+     *   return greeting + 'ya ' + this.user + punctuation;
+     * };
+     *
+     * bound('!');
+     * // => 'hiya fred!'
+     *
+     * // using placeholders
+     * var bound = _.bindKey(object, 'greet', _, '!');
+     * bound('hi');
+     * // => 'hiya fred!'
+     */
+    function bindKey(object, key) {
+      var bitmask = BIND_FLAG | BIND_KEY_FLAG;
+      if (arguments.length > 2) {
+        var partials = baseSlice(arguments, 2),
+            holders = replaceHolders(partials, bindKey.placeholder);
+
+        bitmask |= PARTIAL_FLAG;
+      }
+      return createWrapper(key, bitmask, object, partials, holders);
+    }
+
+    /**
+     * Creates a function that accepts one or more arguments of `func` that when
+     * called either invokes `func` returning its result, if all `func` arguments
+     * have been provided, or returns a function that accepts one or more of the
+     * remaining `func` arguments, and so on. The arity of `func` may be specified
+     * if `func.length` is not sufficient.
+     *
+     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
+     * may be used as a placeholder for provided arguments.
+     *
+     * **Note:** This method does not set the `length` property of curried functions.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to curry.
+     * @param {number} [arity=func.length] The arity of `func`.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Function} Returns the new curried function.
+     * @example
+     *
+     * var abc = function(a, b, c) {
+     *   return [a, b, c];
+     * };
+     *
+     * var curried = _.curry(abc);
+     *
+     * curried(1)(2)(3);
+     * // => [1, 2, 3]
+     *
+     * curried(1, 2)(3);
+     * // => [1, 2, 3]
+     *
+     * curried(1, 2, 3);
+     * // => [1, 2, 3]
+     *
+     * // using placeholders
+     * curried(1)(_, 3)(2);
+     * // => [1, 2, 3]
+     */
+    function curry(func, arity, guard) {
+      if (guard && isIterateeCall(func, arity, guard)) {
+        arity = null;
+      }
+      var result = createWrapper(func, CURRY_FLAG, null, null, null, null, null, arity);
+      result.placeholder = curry.placeholder;
+      return result;
+    }
+
+    /**
+     * This method is like `_.curry` except that arguments are applied to `func`
+     * in the manner of `_.partialRight` instead of `_.partial`.
+     *
+     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
+     * builds, may be used as a placeholder for provided arguments.
+     *
+     * **Note:** This method does not set the `length` property of curried functions.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to curry.
+     * @param {number} [arity=func.length] The arity of `func`.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Function} Returns the new curried function.
+     * @example
+     *
+     * var abc = function(a, b, c) {
+     *   return [a, b, c];
+     * };
+     *
+     * var curried = _.curryRight(abc);
+     *
+     * curried(3)(2)(1);
+     * // => [1, 2, 3]
+     *
+     * curried(2, 3)(1);
+     * // => [1, 2, 3]
+     *
+     * curried(1, 2, 3);
+     * // => [1, 2, 3]
+     *
+     * // using placeholders
+     * curried(3)(1, _)(2);
+     * // => [1, 2, 3]
+     */
+    function curryRight(func, arity, guard) {
+      if (guard && isIterateeCall(func, arity, guard)) {
+        arity = null;
+      }
+      var result = createWrapper(func, CURRY_RIGHT_FLAG, null, null, null, null, null, arity);
+      result.placeholder = curryRight.placeholder;
+      return result;
+    }
+
+    /**
+     * Creates a function that delays invoking `func` until after `wait` milliseconds
+     * have elapsed since the last time it was invoked. The created function comes
+     * with a `cancel` method to cancel delayed invocations. Provide an options
+     * object to indicate that `func` should be invoked on the leading and/or
+     * trailing edge of the `wait` timeout. Subsequent calls to the debounced
+     * function return the result of the last `func` invocation.
+     *
+     * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
+     * on the trailing edge of the timeout only if the the debounced function is
+     * invoked more than once during the `wait` timeout.
+     *
+     * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
+     * for details over the differences between `_.debounce` and `_.throttle`.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to debounce.
+     * @param {number} wait The number of milliseconds to delay.
+     * @param {Object} [options] The options object.
+     * @param {boolean} [options.leading=false] Specify invoking on the leading
+     *  edge of the timeout.
+     * @param {number} [options.maxWait] The maximum time `func` is allowed to be
+     *  delayed before it is invoked.
+     * @param {boolean} [options.trailing=true] Specify invoking on the trailing
+     *  edge of the timeout.
+     * @returns {Function} Returns the new debounced function.
+     * @example
+     *
+     * // avoid costly calculations while the window size is in flux
+     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
+     *
+     * // invoke `sendMail` when the click event is fired, debouncing subsequent calls
+     * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {
+     *   'leading': true,
+     *   'trailing': false
+     * }));
+     *
+     * // ensure `batchLog` is invoked once after 1 second of debounced calls
+     * var source = new EventSource('/stream');
+     * jQuery(source).on('message', _.debounce(batchLog, 250, {
+     *   'maxWait': 1000
+     * }));
+     *
+     * // cancel a debounced call
+     * var todoChanges = _.debounce(batchLog, 1000);
+     * Object.observe(models.todo, todoChanges);
+     *
+     * Object.observe(models, function(changes) {
+     *   if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {
+     *     todoChanges.cancel();
+     *   }
+     * }, ['delete']);
+     *
+     * // ...at some point `models.todo` is changed
+     * models.todo.completed = true;
+     *
+     * // ...before 1 second has passed `models.todo` is deleted
+     * // which cancels the debounced `todoChanges` call
+     * delete models.todo;
+     */
+    function debounce(func, wait, options) {
+      var args,
+          maxTimeoutId,
+          result,
+          stamp,
+          thisArg,
+          timeoutId,
+          trailingCall,
+          lastCalled = 0,
+          maxWait = false,
+          trailing = true;
+
+      if (typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      wait = wait < 0 ? 0 : wait;
+      if (options === true) {
+        var leading = true;
+        trailing = false;
+      } else if (isObject(options)) {
+        leading = options.leading;
+        maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);
+        trailing = 'trailing' in options ? options.trailing : trailing;
+      }
+
+      function cancel() {
+        if (timeoutId) {
+          clearTimeout(timeoutId);
+        }
+        if (maxTimeoutId) {
+          clearTimeout(maxTimeoutId);
+        }
+        maxTimeoutId = timeoutId = trailingCall = undefined;
+      }
+
+      function delayed() {
+        var remaining = wait - (now() - stamp);
+        if (remaining <= 0 || remaining > wait) {
+          if (maxTimeoutId) {
+            clearTimeout(maxTimeoutId);
+          }
+          var isCalled = trailingCall;
+          maxTimeoutId = timeoutId = trailingCall = undefined;
+          if (isCalled) {
+            lastCalled = now();
+            result = func.apply(thisArg, args);
+            if (!timeoutId && !maxTimeoutId) {
+              args = thisArg = null;
+            }
+          }
+        } else {
+          timeoutId = setTimeout(delayed, remaining);
+        }
+      }
+
+      function maxDelayed() {
+        if (timeoutId) {
+          clearTimeout(timeoutId);
+        }
+        maxTimeoutId = timeoutId = trailingCall = undefined;
+        if (trailing || (maxWait !== wait)) {
+          lastCalled = now();
+          result = func.apply(thisArg, args);
+          if (!timeoutId && !maxTimeoutId) {
+            args = thisArg = null;
+          }
+        }
+      }
+
+      function debounced() {
+        args = arguments;
+        stamp = now();
+        thisArg = this;
+        trailingCall = trailing && (timeoutId || !leading);
+
+        if (maxWait === false) {
+          var leadingCall = leading && !timeoutId;
+        } else {
+          if (!maxTimeoutId && !leading) {
+            lastCalled = stamp;
+          }
+          var remaining = maxWait - (stamp - lastCalled),
+              isCalled = remaining <= 0 || remaining > maxWait;
+
+          if (isCalled) {
+            if (maxTimeoutId) {
+              maxTimeoutId = clearTimeout(maxTimeoutId);
+            }
+            lastCalled = stamp;
+            result = func.apply(thisArg, args);
+          }
+          else if (!maxTimeoutId) {
+            maxTimeoutId = setTimeout(maxDelayed, remaining);
+          }
+        }
+        if (isCalled && timeoutId) {
+          timeoutId = clearTimeout(timeoutId);
+        }
+        else if (!timeoutId && wait !== maxWait) {
+          timeoutId = setTimeout(delayed, wait);
+        }
+        if (leadingCall) {
+          isCalled = true;
+          result = func.apply(thisArg, args);
+        }
+        if (isCalled && !timeoutId && !maxTimeoutId) {
+          args = thisArg = null;
+        }
+        return result;
+      }
+      debounced.cancel = cancel;
+      return debounced;
+    }
+
+    /**
+     * Defers invoking the `func` until the current call stack has cleared. Any
+     * additional arguments are provided to `func` when it is invoked.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to defer.
+     * @param {...*} [args] The arguments to invoke the function with.
+     * @returns {number} Returns the timer id.
+     * @example
+     *
+     * _.defer(function(text) { console.log(text); }, 'deferred');
+     * // logs 'deferred' after one or more milliseconds
+     */
+    function defer(func) {
+      return baseDelay(func, 1, arguments, 1);
+    }
+
+    /**
+     * Invokes `func` after `wait` milliseconds. Any additional arguments are
+     * provided to `func` when it is invoked.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to delay.
+     * @param {number} wait The number of milliseconds to delay invocation.
+     * @param {...*} [args] The arguments to invoke the function with.
+     * @returns {number} Returns the timer id.
+     * @example
+     *
+     * _.delay(function(text) { console.log(text); }, 1000, 'later');
+     * // => logs 'later' after one second
+     */
+    function delay(func, wait) {
+      return baseDelay(func, wait, arguments, 2);
+    }
+
+    /**
+     * Creates a function that returns the result of invoking the provided
+     * functions with the `this` binding of the created function, where each
+     * successive invocation is supplied the return value of the previous.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {...Function} [funcs] Functions to invoke.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * function add(x, y) {
+     *   return x + y;
+     * }
+     *
+     * function square(n) {
+     *   return n * n;
+     * }
+     *
+     * var addSquare = _.flow(add, square);
+     * addSquare(1, 2);
+     * // => 9
+     */
+    function flow() {
+      var funcs = arguments,
+          length = funcs.length;
+
+      if (!length) {
+        return function() { return arguments[0]; };
+      }
+      if (!arrayEvery(funcs, isFunction)) {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      return function() {
+        var index = 0,
+            result = funcs[index].apply(this, arguments);
+
+        while (++index < length) {
+          result = funcs[index].call(this, result);
+        }
+        return result;
+      };
+    }
+
+    /**
+     * This method is like `_.flow` except that it creates a function that
+     * invokes the provided functions from right to left.
+     *
+     * @static
+     * @memberOf _
+     * @alias backflow, compose
+     * @category Function
+     * @param {...Function} [funcs] Functions to invoke.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * function add(x, y) {
+     *   return x + y;
+     * }
+     *
+     * function square(n) {
+     *   return n * n;
+     * }
+     *
+     * var addSquare = _.flowRight(square, add);
+     * addSquare(1, 2);
+     * // => 9
+     */
+    function flowRight() {
+      var funcs = arguments,
+          fromIndex = funcs.length - 1;
+
+      if (fromIndex < 0) {
+        return function() { return arguments[0]; };
+      }
+      if (!arrayEvery(funcs, isFunction)) {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      return function() {
+        var index = fromIndex,
+            result = funcs[index].apply(this, arguments);
+
+        while (index--) {
+          result = funcs[index].call(this, result);
+        }
+        return result;
+      };
+    }
+
+    /**
+     * Creates a function that memoizes the result of `func`. If `resolver` is
+     * provided it determines the cache key for storing the result based on the
+     * arguments provided to the memoized function. By default, the first argument
+     * provided to the memoized function is coerced to a string and used as the
+     * cache key. The `func` is invoked with the `this` binding of the memoized
+     * function.
+     *
+     * **Note:** The cache is exposed as the `cache` property on the memoized
+     * function. Its creation may be customized by replacing the `_.memoize.Cache`
+     * constructor with one whose instances implement the ES `Map` method interface
+     * of `get`, `has`, and `set`. See the
+     * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-properties-of-the-map-prototype-object)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to have its output memoized.
+     * @param {Function} [resolver] The function to resolve the cache key.
+     * @returns {Function} Returns the new memoizing function.
+     * @example
+     *
+     * var upperCase = _.memoize(function(string) {
+     *   return string.toUpperCase();
+     * });
+     *
+     * upperCase('fred');
+     * // => 'FRED'
+     *
+     * // modifying the result cache
+     * upperCase.cache.set('fred', 'BARNEY');
+     * upperCase('fred');
+     * // => 'BARNEY'
+     *
+     * // replacing `_.memoize.Cache`
+     * var object = { 'user': 'fred' };
+     * var other = { 'user': 'barney' };
+     * var identity = _.memoize(_.identity);
+     *
+     * identity(object);
+     * // => { 'user': 'fred' }
+     * identity(other);
+     * // => { 'user': 'fred' }
+     *
+     * _.memoize.Cache = WeakMap;
+     * var identity = _.memoize(_.identity);
+     *
+     * identity(object);
+     * // => { 'user': 'fred' }
+     * identity(other);
+     * // => { 'user': 'barney' }
+     */
+    function memoize(func, resolver) {
+      if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      var memoized = function() {
+        var cache = memoized.cache,
+            key = resolver ? resolver.apply(this, arguments) : arguments[0];
+
+        if (cache.has(key)) {
+          return cache.get(key);
+        }
+        var result = func.apply(this, arguments);
+        cache.set(key, result);
+        return result;
+      };
+      memoized.cache = new memoize.Cache;
+      return memoized;
+    }
+
+    /**
+     * Creates a function that negates the result of the predicate `func`. The
+     * `func` predicate is invoked with the `this` binding and arguments of the
+     * created function.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} predicate The predicate to negate.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * function isEven(n) {
+     *   return n % 2 == 0;
+     * }
+     *
+     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
+     * // => [1, 3, 5]
+     */
+    function negate(predicate) {
+      if (typeof predicate != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      return function() {
+        return !predicate.apply(this, arguments);
+      };
+    }
+
+    /**
+     * Creates a function that is restricted to invoking `func` once. Repeat calls
+     * to the function return the value of the first call. The `func` is invoked
+     * with the `this` binding of the created function.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to restrict.
+     * @returns {Function} Returns the new restricted function.
+     * @example
+     *
+     * var initialize = _.once(createApplication);
+     * initialize();
+     * initialize();
+     * // `initialize` invokes `createApplication` once
+     */
+    function once(func) {
+      return before(func, 2);
+    }
+
+    /**
+     * Creates a function that invokes `func` with `partial` arguments prepended
+     * to those provided to the new function. This method is like `_.bind` except
+     * it does **not** alter the `this` binding.
+     *
+     * The `_.partial.placeholder` value, which defaults to `_` in monolithic
+     * builds, may be used as a placeholder for partially applied arguments.
+     *
+     * **Note:** This method does not set the `length` property of partially
+     * applied functions.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to partially apply arguments to.
+     * @param {...*} [args] The arguments to be partially applied.
+     * @returns {Function} Returns the new partially applied function.
+     * @example
+     *
+     * var greet = function(greeting, name) {
+     *   return greeting + ' ' + name;
+     * };
+     *
+     * var sayHelloTo = _.partial(greet, 'hello');
+     * sayHelloTo('fred');
+     * // => 'hello fred'
+     *
+     * // using placeholders
+     * var greetFred = _.partial(greet, _, 'fred');
+     * greetFred('hi');
+     * // => 'hi fred'
+     */
+    function partial(func) {
+      var partials = baseSlice(arguments, 1),
+          holders = replaceHolders(partials, partial.placeholder);
+
+      return createWrapper(func, PARTIAL_FLAG, null, partials, holders);
+    }
+
+    /**
+     * This method is like `_.partial` except that partially applied arguments
+     * are appended to those provided to the new function.
+     *
+     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
+     * builds, may be used as a placeholder for partially applied arguments.
+     *
+     * **Note:** This method does not set the `length` property of partially
+     * applied functions.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to partially apply arguments to.
+     * @param {...*} [args] The arguments to be partially applied.
+     * @returns {Function} Returns the new partially applied function.
+     * @example
+     *
+     * var greet = function(greeting, name) {
+     *   return greeting + ' ' + name;
+     * };
+     *
+     * var greetFred = _.partialRight(greet, 'fred');
+     * greetFred('hi');
+     * // => 'hi fred'
+     *
+     * // using placeholders
+     * var sayHelloTo = _.partialRight(greet, 'hello', _);
+     * sayHelloTo('fred');
+     * // => 'hello fred'
+     */
+    function partialRight(func) {
+      var partials = baseSlice(arguments, 1),
+          holders = replaceHolders(partials, partialRight.placeholder);
+
+      return createWrapper(func, PARTIAL_RIGHT_FLAG, null, partials, holders);
+    }
+
+    /**
+     * Creates a function that invokes `func` with arguments arranged according
+     * to the specified indexes where the argument value at the first index is
+     * provided as the first argument, the argument value at the second index is
+     * provided as the second argument, and so on.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to rearrange arguments for.
+     * @param {...(number|number[])} indexes The arranged argument indexes,
+     *  specified as individual indexes or arrays of indexes.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var rearged = _.rearg(function(a, b, c) {
+     *   return [a, b, c];
+     * }, 2, 0, 1);
+     *
+     * rearged('b', 'c', 'a')
+     * // => ['a', 'b', 'c']
+     *
+     * var map = _.rearg(_.map, [1, 0]);
+     * map(function(n) { return n * 3; }, [1, 2, 3]);
+     * // => [3, 6, 9]
+     */
+    function rearg(func) {
+      var indexes = baseFlatten(arguments, false, false, 1);
+      return createWrapper(func, REARG_FLAG, null, null, null, indexes);
+    }
+
+    /**
+     * Creates a function that invokes `func` with the `this` binding of the
+     * created function and the array of arguments provided to the created
+     * function much like [Function#apply](http://es5.github.io/#x15.3.4.3).
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to spread arguments over.
+     * @returns {*} Returns the new function.
+     * @example
+     *
+     * var spread = _.spread(function(who, what) {
+     *   return who + ' says ' + what;
+     * });
+     *
+     * spread(['Fred', 'hello']);
+     * // => 'Fred says hello'
+     *
+     * // with a Promise
+     * var numbers = Promise.all([
+     *   Promise.resolve(40),
+     *   Promise.resolve(36)
+     * ]);
+     *
+     * var add = function(x, y) {
+     *   return x + y;
+     * };
+     *
+     * numbers.then(_.spread(add));
+     * // => a Promise of 76
+     */
+    function spread(func) {
+      if (typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      return function(array) {
+        return func.apply(this, array);
+      };
+    }
+
+    /**
+     * Creates a function that only invokes `func` at most once per every `wait`
+     * milliseconds. The created function comes with a `cancel` method to cancel
+     * delayed invocations. Provide an options object to indicate that `func`
+     * should be invoked on the leading and/or trailing edge of the `wait` timeout.
+     * Subsequent calls to the throttled function return the result of the last
+     * `func` call.
+     *
+     * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
+     * on the trailing edge of the timeout only if the the throttled function is
+     * invoked more than once during the `wait` timeout.
+     *
+     * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
+     * for details over the differences between `_.throttle` and `_.debounce`.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to throttle.
+     * @param {number} wait The number of milliseconds to throttle invocations to.
+     * @param {Object} [options] The options object.
+     * @param {boolean} [options.leading=true] Specify invoking on the leading
+     *  edge of the timeout.
+     * @param {boolean} [options.trailing=true] Specify invoking on the trailing
+     *  edge of the timeout.
+     * @returns {Function} Returns the new throttled function.
+     * @example
+     *
+     * // avoid excessively updating the position while scrolling
+     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
+     *
+     * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes
+     * var throttled =  _.throttle(renewToken, 300000, { 'trailing': false })
+     * jQuery('.interactive').on('click', throttled);
+     *
+     * // cancel a trailing throttled call
+     * jQuery(window).on('popstate', throttled.cancel);
+     */
+    function throttle(func, wait, options) {
+      var leading = true,
+          trailing = true;
+
+      if (typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      if (options === false) {
+        leading = false;
+      } else if (isObject(options)) {
+        leading = 'leading' in options ? !!options.leading : leading;
+        trailing = 'trailing' in options ? !!options.trailing : trailing;
+      }
+      debounceOptions.leading = leading;
+      debounceOptions.maxWait = +wait;
+      debounceOptions.trailing = trailing;
+      return debounce(func, wait, debounceOptions);
+    }
+
+    /**
+     * Creates a function that provides `value` to the wrapper function as its
+     * first argument. Any additional arguments provided to the function are
+     * appended to those provided to the wrapper function. The wrapper is invoked
+     * with the `this` binding of the created function.
+     *
+     * @static
+     * @memberOf _
+     * @category Function
+     * @param {*} value The value to wrap.
+     * @param {Function} wrapper The wrapper function.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var p = _.wrap(_.escape, function(func, text) {
+     *   return '<p>' + func(text) + '</p>';
+     * });
+     *
+     * p('fred, barney, & pebbles');
+     * // => '<p>fred, barney, &amp; pebbles</p>'
+     */
+    function wrap(value, wrapper) {
+      wrapper = wrapper == null ? identity : wrapper;
+      return createWrapper(wrapper, PARTIAL_FLAG, null, [value], []);
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
+     * otherwise they are assigned by reference. If `customizer` is provided it is
+     * invoked to produce the cloned values. If `customizer` returns `undefined`
+     * cloning is handled by the method instead. The `customizer` is bound to
+     * `thisArg` and invoked with two argument; (value [, index|key, object]).
+     *
+     * **Note:** This method is loosely based on the structured clone algorithm.
+     * The enumerable properties of `arguments` objects and objects created by
+     * constructors other than `Object` are cloned to plain `Object` objects. An
+     * empty object is returned for uncloneable values such as functions, DOM nodes,
+     * Maps, Sets, and WeakMaps. See the [HTML5 specification](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to clone.
+     * @param {boolean} [isDeep] Specify a deep clone.
+     * @param {Function} [customizer] The function to customize cloning values.
+     * @param {*} [thisArg] The `this` binding of `customizer`.
+     * @returns {*} Returns the cloned value.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney' },
+     *   { 'user': 'fred' }
+     * ];
+     *
+     * var shallow = _.clone(users);
+     * shallow[0] === users[0];
+     * // => true
+     *
+     * var deep = _.clone(users, true);
+     * deep[0] === users[0];
+     * // => false
+     *
+     * // using a customizer callback
+     * var body = _.clone(document.body, function(value) {
+     *   return _.isElement(value) ? value.cloneNode(false) : undefined;
+     * });
+     *
+     * body === document.body
+     * // => false
+     * body.nodeName
+     * // => BODY
+     * body.childNodes.length;
+     * // => 0
+     */
+    function clone(value, isDeep, customizer, thisArg) {
+      // Juggle arguments.
+      if (typeof isDeep != 'boolean' && isDeep != null) {
+        thisArg = customizer;
+        customizer = isIterateeCall(value, isDeep, thisArg) ? null : isDeep;
+        isDeep = false;
+      }
+      customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1);
+      return baseClone(value, isDeep, customizer);
+    }
+
+    /**
+     * Creates a deep clone of `value`. If `customizer` is provided it is invoked
+     * to produce the cloned values. If `customizer` returns `undefined` cloning
+     * is handled by the method instead. The `customizer` is bound to `thisArg`
+     * and invoked with two argument; (value [, index|key, object]).
+     *
+     * **Note:** This method is loosely based on the structured clone algorithm.
+     * The enumerable properties of `arguments` objects and objects created by
+     * constructors other than `Object` are cloned to plain `Object` objects. An
+     * empty object is returned for uncloneable values such as functions, DOM nodes,
+     * Maps, Sets, and WeakMaps. See the [HTML5 specification](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to deep clone.
+     * @param {Function} [customizer] The function to customize cloning values.
+     * @param {*} [thisArg] The `this` binding of `customizer`.
+     * @returns {*} Returns the deep cloned value.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney' },
+     *   { 'user': 'fred' }
+     * ];
+     *
+     * var deep = _.cloneDeep(users);
+     * deep[0] === users[0];
+     * // => false
+     *
+     * // using a customizer callback
+     * var el = _.cloneDeep(document.body, function(value) {
+     *   return _.isElement(value) ? value.cloneNode(true) : undefined;
+     * });
+     *
+     * body === document.body
+     * // => false
+     * body.nodeName
+     * // => BODY
+     * body.childNodes.length;
+     * // => 20
+     */
+    function cloneDeep(value, customizer, thisArg) {
+      customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1);
+      return baseClone(value, true, customizer);
+    }
+
+    /**
+     * Checks if `value` is classified as an `arguments` object.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+     * @example
+     *
+     * (function() { return _.isArguments(arguments); })();
+     * // => true
+     *
+     * _.isArguments([1, 2, 3]);
+     * // => false
+     */
+    function isArguments(value) {
+      var length = isObjectLike(value) ? value.length : undefined;
+      return (isLength(length) && objToString.call(value) == argsTag) || false;
+    }
+
+    /**
+     * Checks if `value` is classified as an `Array` object.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+     * @example
+     *
+     * _.isArray([1, 2, 3]);
+     * // => true
+     *
+     * (function() { return _.isArray(arguments); })();
+     * // => false
+     */
+    var isArray = nativeIsArray || function(value) {
+      return (isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag) || false;
+    };
+
+    /**
+     * Checks if `value` is classified as a boolean primitive or object.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+     * @example
+     *
+     * _.isBoolean(false);
+     * // => true
+     *
+     * _.isBoolean(null);
+     * // => false
+     */
+    function isBoolean(value) {
+      return (value === true || value === false || isObjectLike(value) && objToString.call(value) == boolTag) || false;
+    }
+
+    /**
+     * Checks if `value` is classified as a `Date` object.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+     * @example
+     *
+     * _.isDate(new Date);
+     * // => true
+     *
+     * _.isDate('Mon April 23 2012');
+     * // => false
+     */
+    function isDate(value) {
+      return (isObjectLike(value) && objToString.call(value) == dateTag) || false;
+    }
+
+    /**
+     * Checks if `value` is a DOM element.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
+     * @example
+     *
+     * _.isElement(document.body);
+     * // => true
+     *
+     * _.isElement('<body>');
+     * // => false
+     */
+    function isElement(value) {
+      return (value && value.nodeType === 1 && isObjectLike(value) &&
+        objToString.call(value).indexOf('Element') > -1) || false;
+    }
+    // Fallback for environments without DOM support.
+    if (!support.dom) {
+      isElement = function(value) {
+        return (value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value)) || false;
+      };
+    }
+
+    /**
+     * Checks if a value is empty. A value is considered empty unless it is an
+     * `arguments` object, array, string, or jQuery-like collection with a length
+     * greater than `0` or an object with own enumerable properties.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {Array|Object|string} value The value to inspect.
+     * @returns {boolean} Returns `true` if `value` is empty, else `false`.
+     * @example
+     *
+     * _.isEmpty(null);
+     * // => true
+     *
+     * _.isEmpty(true);
+     * // => true
+     *
+     * _.isEmpty(1);
+     * // => true
+     *
+     * _.isEmpty([1, 2, 3]);
+     * // => false
+     *
+     * _.isEmpty({ 'a': 1 });
+     * // => false
+     */
+    function isEmpty(value) {
+      if (value == null) {
+        return true;
+      }
+      var length = value.length;
+      if (isLength(length) && (isArray(value) || isString(value) || isArguments(value) ||
+          (isObjectLike(value) && isFunction(value.splice)))) {
+        return !length;
+      }
+      return !keys(value).length;
+    }
+
+    /**
+     * Performs a deep comparison between two values to determine if they are
+     * equivalent. If `customizer` is provided it is invoked to compare values.
+     * If `customizer` returns `undefined` comparisons are handled by the method
+     * instead. The `customizer` is bound to `thisArg` and invoked with three
+     * arguments; (value, other [, index|key]).
+     *
+     * **Note:** This method supports comparing arrays, booleans, `Date` objects,
+     * numbers, `Object` objects, regexes, and strings. Objects are compared by
+     * their own, not inherited, enumerable properties. Functions and DOM nodes
+     * are **not** supported. Provide a customizer function to extend support
+     * for comparing other values.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @param {Function} [customizer] The function to customize comparing values.
+     * @param {*} [thisArg] The `this` binding of `customizer`.
+     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+     * @example
+     *
+     * var object = { 'user': 'fred' };
+     * var other = { 'user': 'fred' };
+     *
+     * object == other;
+     * // => false
+     *
+     * _.isEqual(object, other);
+     * // => true
+     *
+     * // using a customizer callback
+     * var array = ['hello', 'goodbye'];
+     * var other = ['hi', 'goodbye'];
+     *
+     * _.isEqual(array, other, function(value, other) {
+     *   return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined;
+     * });
+     * // => true
+     */
+    function isEqual(value, other, customizer, thisArg) {
+      customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 3);
+      if (!customizer && isStrictComparable(value) && isStrictComparable(other)) {
+        return value === other;
+      }
+      var result = customizer ? customizer(value, other) : undefined;
+      return typeof result == 'undefined' ? baseIsEqual(value, other, customizer) : !!result;
+    }
+
+    /**
+     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
+     * `SyntaxError`, `TypeError`, or `URIError` object.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
+     * @example
+     *
+     * _.isError(new Error);
+     * // => true
+     *
+     * _.isError(Error);
+     * // => false
+     */
+    function isError(value) {
+      return (isObjectLike(value) && typeof value.message == 'string' && objToString.call(value) == errorTag) || false;
+    }
+
+    /**
+     * Checks if `value` is a finite primitive number.
+     *
+     * **Note:** This method is based on ES `Number.isFinite`. See the
+     * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
+     * @example
+     *
+     * _.isFinite(10);
+     * // => true
+     *
+     * _.isFinite('10');
+     * // => false
+     *
+     * _.isFinite(true);
+     * // => false
+     *
+     * _.isFinite(Object(10));
+     * // => false
+     *
+     * _.isFinite(Infinity);
+     * // => false
+     */
+    var isFinite = nativeNumIsFinite || function(value) {
+      return typeof value == 'number' && nativeIsFinite(value);
+    };
+
+    /**
+     * Checks if `value` is classified as a `Function` object.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+     * @example
+     *
+     * _.isFunction(_);
+     * // => true
+     *
+     * _.isFunction(/abc/);
+     * // => false
+     */
+    function isFunction(value) {
+      // Avoid a Chakra JIT bug in compatibility modes of IE 11.
+      // See https://github.com/jashkenas/underscore/issues/1621 for more details.
+      return typeof value == 'function' || false;
+    }
+    // Fallback for environments that return incorrect `typeof` operator results.
+    if (isFunction(/x/) || (Uint8Array && !isFunction(Uint8Array))) {
+      isFunction = function(value) {
+        // The use of `Object#toString` avoids issues with the `typeof` operator
+        // in older versions of Chrome and Safari which return 'function' for regexes
+        // and Safari 8 equivalents which return 'object' for typed array constructors.
+        return objToString.call(value) == funcTag;
+      };
+    }
+
+    /**
+     * Checks if `value` is the language type of `Object`.
+     * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+     *
+     * **Note:** See the [ES5 spec](https://es5.github.io/#x8) for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+     * @example
+     *
+     * _.isObject({});
+     * // => true
+     *
+     * _.isObject([1, 2, 3]);
+     * // => true
+     *
+     * _.isObject(1);
+     * // => false
+     */
+    function isObject(value) {
+      // Avoid a V8 JIT bug in Chrome 19-20.
+      // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
+      var type = typeof value;
+      return type == 'function' || (value && type == 'object') || false;
+    }
+
+    /**
+     * Performs a deep comparison between `object` and `source` to determine if
+     * `object` contains equivalent property values. If `customizer` is provided
+     * it is invoked to compare values. If `customizer` returns `undefined`
+     * comparisons are handled by the method instead. The `customizer` is bound
+     * to `thisArg` and invoked with three arguments; (value, other, index|key).
+     *
+     * **Note:** This method supports comparing properties of arrays, booleans,
+     * `Date` objects, numbers, `Object` objects, regexes, and strings. Functions
+     * and DOM nodes are **not** supported. Provide a customizer function to extend
+     * support for comparing other values.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {Object} object The object to inspect.
+     * @param {Object} source The object of property values to match.
+     * @param {Function} [customizer] The function to customize comparing values.
+     * @param {*} [thisArg] The `this` binding of `customizer`.
+     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
+     * @example
+     *
+     * var object = { 'user': 'fred', 'age': 40 };
+     *
+     * _.isMatch(object, { 'age': 40 });
+     * // => true
+     *
+     * _.isMatch(object, { 'age': 36 });
+     * // => false
+     *
+     * // using a customizer callback
+     * var object = { 'greeting': 'hello' };
+     * var source = { 'greeting': 'hi' };
+     *
+     * _.isMatch(object, source, function(value, other) {
+     *   return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined;
+     * });
+     * // => true
+     */
+    function isMatch(object, source, customizer, thisArg) {
+      var props = keys(source),
+          length = props.length;
+
+      customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 3);
+      if (!customizer && length == 1) {
+        var key = props[0],
+            value = source[key];
+
+        if (isStrictComparable(value)) {
+          return object != null && value === object[key] && hasOwnProperty.call(object, key);
+        }
+      }
+      var values = Array(length),
+          strictCompareFlags = Array(length);
+
+      while (length--) {
+        value = values[length] = source[props[length]];
+        strictCompareFlags[length] = isStrictComparable(value);
+      }
+      return baseIsMatch(object, props, values, strictCompareFlags, customizer);
+    }
+
+    /**
+     * Checks if `value` is `NaN`.
+     *
+     * **Note:** This method is not the same as native `isNaN` which returns `true`
+     * for `undefined` and other non-numeric values. See the [ES5 spec](https://es5.github.io/#x15.1.2.4)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
+     * @example
+     *
+     * _.isNaN(NaN);
+     * // => true
+     *
+     * _.isNaN(new Number(NaN));
+     * // => true
+     *
+     * isNaN(undefined);
+     * // => true
+     *
+     * _.isNaN(undefined);
+     * // => false
+     */
+    function isNaN(value) {
+      // An `NaN` primitive is the only value that is not equal to itself.
+      // Perform the `toStringTag` check first to avoid errors with some host objects in IE.
+      return isNumber(value) && value != +value;
+    }
+
+    /**
+     * Checks if `value` is a native function.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
+     * @example
+     *
+     * _.isNative(Array.prototype.push);
+     * // => true
+     *
+     * _.isNative(_);
+     * // => false
+     */
+    function isNative(value) {
+      if (value == null) {
+        return false;
+      }
+      if (objToString.call(value) == funcTag) {
+        return reNative.test(fnToString.call(value));
+      }
+      return (isObjectLike(value) && reHostCtor.test(value)) || false;
+    }
+
+    /**
+     * Checks if `value` is `null`.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
+     * @example
+     *
+     * _.isNull(null);
+     * // => true
+     *
+     * _.isNull(void 0);
+     * // => false
+     */
+    function isNull(value) {
+      return value === null;
+    }
+
+    /**
+     * Checks if `value` is classified as a `Number` primitive or object.
+     *
+     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified
+     * as numbers, use the `_.isFinite` method.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+     * @example
+     *
+     * _.isNumber(8.4);
+     * // => true
+     *
+     * _.isNumber(NaN);
+     * // => true
+     *
+     * _.isNumber('8.4');
+     * // => false
+     */
+    function isNumber(value) {
+      return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag) || false;
+    }
+
+    /**
+     * Checks if `value` is a plain object, that is, an object created by the
+     * `Object` constructor or one with a `[[Prototype]]` of `null`.
+     *
+     * **Note:** This method assumes objects created by the `Object` constructor
+     * have no inherited enumerable properties.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     * }
+     *
+     * _.isPlainObject(new Foo);
+     * // => false
+     *
+     * _.isPlainObject([1, 2, 3]);
+     * // => false
+     *
+     * _.isPlainObject({ 'x': 0, 'y': 0 });
+     * // => true
+     *
+     * _.isPlainObject(Object.create(null));
+     * // => true
+     */
+    var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {
+      if (!(value && objToString.call(value) == objectTag)) {
+        return false;
+      }
+      var valueOf = value.valueOf,
+          objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);
+
+      return objProto
+        ? (value == objProto || getPrototypeOf(value) == objProto)
+        : shimIsPlainObject(value);
+    };
+
+    /**
+     * Checks if `value` is classified as a `RegExp` object.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+     * @example
+     *
+     * _.isRegExp(/abc/);
+     * // => true
+     *
+     * _.isRegExp('/abc/');
+     * // => false
+     */
+    function isRegExp(value) {
+      return (isObjectLike(value) && objToString.call(value) == regexpTag) || false;
+    }
+
+    /**
+     * Checks if `value` is classified as a `String` primitive or object.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+     * @example
+     *
+     * _.isString('abc');
+     * // => true
+     *
+     * _.isString(1);
+     * // => false
+     */
+    function isString(value) {
+      return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag) || false;
+    }
+
+    /**
+     * Checks if `value` is classified as a typed array.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+     * @example
+     *
+     * _.isTypedArray(new Uint8Array);
+     * // => true
+     *
+     * _.isTypedArray([]);
+     * // => false
+     */
+    function isTypedArray(value) {
+      return (isObjectLike(value) && isLength(value.length) && typedArrayTags[objToString.call(value)]) || false;
+    }
+
+    /**
+     * Checks if `value` is `undefined`.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
+     * @example
+     *
+     * _.isUndefined(void 0);
+     * // => true
+     *
+     * _.isUndefined(null);
+     * // => false
+     */
+    function isUndefined(value) {
+      return typeof value == 'undefined';
+    }
+
+    /**
+     * Converts `value` to an array.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to convert.
+     * @returns {Array} Returns the converted array.
+     * @example
+     *
+     * (function() { return _.toArray(arguments).slice(1); })(1, 2, 3);
+     * // => [2, 3]
+     */
+    function toArray(value) {
+      var length = value ? value.length : 0;
+      if (!isLength(length)) {
+        return values(value);
+      }
+      if (!length) {
+        return [];
+      }
+      return arrayCopy(value);
+    }
+
+    /**
+     * Converts `value` to a plain object flattening inherited enumerable
+     * properties of `value` to own properties of the plain object.
+     *
+     * @static
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to convert.
+     * @returns {Object} Returns the converted plain object.
+     * @example
+     *
+     * function Foo() {
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.assign({ 'a': 1 }, new Foo);
+     * // => { 'a': 1, 'b': 2 }
+     *
+     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
+     * // => { 'a': 1, 'b': 2, 'c': 3 }
+     */
+    function toPlainObject(value) {
+      return baseCopy(value, keysIn(value));
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Assigns own enumerable properties of source object(s) to the destination
+     * object. Subsequent sources overwrite property assignments of previous sources.
+     * If `customizer` is provided it is invoked to produce the assigned values.
+     * The `customizer` is bound to `thisArg` and invoked with five arguments;
+     * (objectValue, sourceValue, key, object, source).
+     *
+     * @static
+     * @memberOf _
+     * @alias extend
+     * @category Object
+     * @param {Object} object The destination object.
+     * @param {...Object} [sources] The source objects.
+     * @param {Function} [customizer] The function to customize assigning values.
+     * @param {*} [thisArg] The `this` binding of `customizer`.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });
+     * // => { 'user': 'fred', 'age': 40 }
+     *
+     * // using a customizer callback
+     * var defaults = _.partialRight(_.assign, function(value, other) {
+     *   return typeof value == 'undefined' ? other : value;
+     * });
+     *
+     * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });
+     * // => { 'user': 'barney', 'age': 36 }
+     */
+    var assign = createAssigner(baseAssign);
+
+    /**
+     * Creates an object that inherits from the given `prototype` object. If a
+     * `properties` object is provided its own enumerable properties are assigned
+     * to the created object.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} prototype The object to inherit from.
+     * @param {Object} [properties] The properties to assign to the object.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Object} Returns the new object.
+     * @example
+     *
+     * function Shape() {
+     *   this.x = 0;
+     *   this.y = 0;
+     * }
+     *
+     * function Circle() {
+     *   Shape.call(this);
+     * }
+     *
+     * Circle.prototype = _.create(Shape.prototype, { 'constructor': Circle });
+     *
+     * var circle = new Circle;
+     * circle instanceof Circle;
+     * // => true
+     *
+     * circle instanceof Shape;
+     * // => true
+     */
+    function create(prototype, properties, guard) {
+      var result = baseCreate(prototype);
+      if (guard && isIterateeCall(prototype, properties, guard)) {
+        properties = null;
+      }
+      return properties ? baseCopy(properties, result, keys(properties)) : result;
+    }
+
+    /**
+     * Assigns own enumerable properties of source object(s) to the destination
+     * object for all destination properties that resolve to `undefined`. Once a
+     * property is set, additional defaults of the same property are ignored.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The destination object.
+     * @param {...Object} [sources] The source objects.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });
+     * // => { 'user': 'barney', 'age': 36 }
+     */
+    function defaults(object) {
+      if (object == null) {
+        return object;
+      }
+      var args = arrayCopy(arguments);
+      args.push(assignDefaults);
+      return assign.apply(undefined, args);
+    }
+
+    /**
+     * This method is like `_.findIndex` except that it returns the key of the
+     * first element `predicate` returns truthy for, instead of the element itself.
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to search.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {string|undefined} Returns the key of the matched element, else `undefined`.
+     * @example
+     *
+     * var users = {
+     *   'barney':  { 'age': 36, 'active': true },
+     *   'fred':    { 'age': 40, 'active': false },
+     *   'pebbles': { 'age': 1,  'active': true }
+     * };
+     *
+     * _.findKey(users, function(chr) { return chr.age < 40; });
+     * // => 'barney' (iteration order is not guaranteed)
+     *
+     * // using the "_.matches" callback shorthand
+     * _.findKey(users, { 'age': 1, 'active': true });
+     * // => 'pebbles'
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.findKey(users, 'active', false);
+     * // => 'fred'
+     *
+     * // using the "_.property" callback shorthand
+     * _.findKey(users, 'active');
+     * // => 'barney'
+     */
+    function findKey(object, predicate, thisArg) {
+      predicate = getCallback(predicate, thisArg, 3);
+      return baseFind(object, predicate, baseForOwn, true);
+    }
+
+    /**
+     * This method is like `_.findKey` except that it iterates over elements of
+     * a collection in the opposite order.
+     *
+     * If a property name is provided for `predicate` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `predicate` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to search.
+     * @param {Function|Object|string} [predicate=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {string|undefined} Returns the key of the matched element, else `undefined`.
+     * @example
+     *
+     * var users = {
+     *   'barney':  { 'age': 36, 'active': true },
+     *   'fred':    { 'age': 40, 'active': false },
+     *   'pebbles': { 'age': 1,  'active': true }
+     * };
+     *
+     * _.findLastKey(users, function(chr) { return chr.age < 40; });
+     * // => returns `pebbles` assuming `_.findKey` returns `barney`
+     *
+     * // using the "_.matches" callback shorthand
+     * _.findLastKey(users, { 'age': 36, 'active': true });
+     * // => 'barney'
+     *
+     * // using the "_.matchesProperty" callback shorthand
+     * _.findLastKey(users, 'active', false);
+     * // => 'fred'
+     *
+     * // using the "_.property" callback shorthand
+     * _.findLastKey(users, 'active');
+     * // => 'pebbles'
+     */
+    function findLastKey(object, predicate, thisArg) {
+      predicate = getCallback(predicate, thisArg, 3);
+      return baseFind(object, predicate, baseForOwnRight, true);
+    }
+
+    /**
+     * Iterates over own and inherited enumerable properties of an object invoking
+     * `iteratee` for each property. The `iteratee` is bound to `thisArg` and invoked
+     * with three arguments; (value, key, object). Iterator functions may exit
+     * iteration early by explicitly returning `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.forIn(new Foo, function(value, key) {
+     *   console.log(key);
+     * });
+     * // => logs 'a', 'b', and 'c' (iteration order is not guaranteed)
+     */
+    function forIn(object, iteratee, thisArg) {
+      if (typeof iteratee != 'function' || typeof thisArg != 'undefined') {
+        iteratee = bindCallback(iteratee, thisArg, 3);
+      }
+      return baseFor(object, iteratee, keysIn);
+    }
+
+    /**
+     * This method is like `_.forIn` except that it iterates over properties of
+     * `object` in the opposite order.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.forInRight(new Foo, function(value, key) {
+     *   console.log(key);
+     * });
+     * // => logs 'c', 'b', and 'a' assuming `_.forIn ` logs 'a', 'b', and 'c'
+     */
+    function forInRight(object, iteratee, thisArg) {
+      iteratee = bindCallback(iteratee, thisArg, 3);
+      return baseForRight(object, iteratee, keysIn);
+    }
+
+    /**
+     * Iterates over own enumerable properties of an object invoking `iteratee`
+     * for each property. The `iteratee` is bound to `thisArg` and invoked with
+     * three arguments; (value, key, object). Iterator functions may exit iteration
+     * early by explicitly returning `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(n, key) {
+     *   console.log(key);
+     * });
+     * // => logs '0', '1', and 'length' (iteration order is not guaranteed)
+     */
+    function forOwn(object, iteratee, thisArg) {
+      if (typeof iteratee != 'function' || typeof thisArg != 'undefined') {
+        iteratee = bindCallback(iteratee, thisArg, 3);
+      }
+      return baseForOwn(object, iteratee);
+    }
+
+    /**
+     * This method is like `_.forOwn` except that it iterates over properties of
+     * `object` in the opposite order.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * _.forOwnRight({ '0': 'zero', '1': 'one', 'length': 2 }, function(n, key) {
+     *   console.log(key);
+     * });
+     * // => logs 'length', '1', and '0' assuming `_.forOwn` logs '0', '1', and 'length'
+     */
+    function forOwnRight(object, iteratee, thisArg) {
+      iteratee = bindCallback(iteratee, thisArg, 3);
+      return baseForRight(object, iteratee, keys);
+    }
+
+    /**
+     * Creates an array of function property names from all enumerable properties,
+     * own and inherited, of `object`.
+     *
+     * @static
+     * @memberOf _
+     * @alias methods
+     * @category Object
+     * @param {Object} object The object to inspect.
+     * @returns {Array} Returns the new array of property names.
+     * @example
+     *
+     * _.functions(_);
+     * // => ['all', 'any', 'bind', ...]
+     */
+    function functions(object) {
+      return baseFunctions(object, keysIn(object));
+    }
+
+    /**
+     * Checks if `key` exists as a direct property of `object` instead of an
+     * inherited property.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to inspect.
+     * @param {string} key The key to check.
+     * @returns {boolean} Returns `true` if `key` is a direct property, else `false`.
+     * @example
+     *
+     * _.has({ 'a': 1, 'b': 2, 'c': 3 }, 'b');
+     * // => true
+     */
+    function has(object, key) {
+      return object ? hasOwnProperty.call(object, key) : false;
+    }
+
+    /**
+     * Creates an object composed of the inverted keys and values of `object`.
+     * If `object` contains duplicate values, subsequent values overwrite property
+     * assignments of previous values unless `multiValue` is `true`.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to invert.
+     * @param {boolean} [multiValue] Allow multiple values per key.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Object} Returns the new inverted object.
+     * @example
+     *
+     * _.invert({ 'first': 'fred', 'second': 'barney' });
+     * // => { 'fred': 'first', 'barney': 'second' }
+     *
+     * // without `multiValue`
+     * _.invert({ 'first': 'fred', 'second': 'barney', 'third': 'fred' });
+     * // => { 'fred': 'third', 'barney': 'second' }
+     *
+     * // with `multiValue`
+     * _.invert({ 'first': 'fred', 'second': 'barney', 'third': 'fred' }, true);
+     * // => { 'fred': ['first', 'third'], 'barney': ['second'] }
+     */
+    function invert(object, multiValue, guard) {
+      if (guard && isIterateeCall(object, multiValue, guard)) {
+        multiValue = null;
+      }
+      var index = -1,
+          props = keys(object),
+          length = props.length,
+          result = {};
+
+      while (++index < length) {
+        var key = props[index],
+            value = object[key];
+
+        if (multiValue) {
+          if (hasOwnProperty.call(result, value)) {
+            result[value].push(key);
+          } else {
+            result[value] = [key];
+          }
+        }
+        else {
+          result[value] = key;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Creates an array of the own enumerable property names of `object`.
+     *
+     * **Note:** Non-object values are coerced to objects. See the
+     * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to inspect.
+     * @returns {Array} Returns the array of property names.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.keys(new Foo);
+     * // => ['a', 'b'] (iteration order is not guaranteed)
+     *
+     * _.keys('hi');
+     * // => ['0', '1']
+     */
+    var keys = !nativeKeys ? shimKeys : function(object) {
+      if (object) {
+        var Ctor = object.constructor,
+            length = object.length;
+      }
+      if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
+         (typeof object != 'function' && (length && isLength(length)))) {
+        return shimKeys(object);
+      }
+      return isObject(object) ? nativeKeys(object) : [];
+    };
+
+    /**
+     * Creates an array of the own and inherited enumerable property names of `object`.
+     *
+     * **Note:** Non-object values are coerced to objects.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to inspect.
+     * @returns {Array} Returns the array of property names.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.keysIn(new Foo);
+     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
+     */
+    function keysIn(object) {
+      if (object == null) {
+        return [];
+      }
+      if (!isObject(object)) {
+        object = Object(object);
+      }
+      var length = object.length;
+      length = (length && isLength(length) &&
+        (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0;
+
+      var Ctor = object.constructor,
+          index = -1,
+          isProto = typeof Ctor == 'function' && Ctor.prototype === object,
+          result = Array(length),
+          skipIndexes = length > 0;
+
+      while (++index < length) {
+        result[index] = (index + '');
+      }
+      for (var key in object) {
+        if (!(skipIndexes && isIndex(key, length)) &&
+            !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
+          result.push(key);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Creates an object with the same keys as `object` and values generated by
+     * running each own enumerable property of `object` through `iteratee`. The
+     * iteratee function is bound to `thisArg` and invoked with three arguments;
+     * (value, key, object).
+     *
+     * If a property name is provided for `iteratee` the created "_.property"
+     * style callback returns the property value of the given element.
+     *
+     * If value is also provided for `thisArg` the created "_.matchesProperty"
+     * style callback returns `true` for elements that have a matching property
+     * value, else `false`.
+     *
+     * If an object is provided for `iteratee` the created "_.matches" style
+     * callback returns `true` for elements that have the properties of the given
+     * object, else `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {Function|Object|string} [iteratee=_.identity] The function invoked
+     *  per iteration. If a property name or object is provided it is used to
+     *  create a "_.property" or "_.matches" style callback respectively.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Object} Returns the new mapped object.
+     * @example
+     *
+     * _.mapValues({ 'a': 1, 'b': 2, 'c': 3} , function(n) { return n * 3; });
+     * // => { 'a': 3, 'b': 6, 'c': 9 }
+     *
+     * var users = {
+     *   'fred':    { 'user': 'fred',    'age': 40 },
+     *   'pebbles': { 'user': 'pebbles', 'age': 1 }
+     * };
+     *
+     * // using the "_.property" callback shorthand
+     * _.mapValues(users, 'age');
+     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
+     */
+    function mapValues(object, iteratee, thisArg) {
+      var result = {};
+      iteratee = getCallback(iteratee, thisArg, 3);
+
+      baseForOwn(object, function(value, key, object) {
+        result[key] = iteratee(value, key, object);
+      });
+      return result;
+    }
+
+    /**
+     * Recursively merges own enumerable properties of the source object(s), that
+     * don't resolve to `undefined` into the destination object. Subsequent sources
+     * overwrite property assignments of previous sources. If `customizer` is
+     * provided it is invoked to produce the merged values of the destination and
+     * source properties. If `customizer` returns `undefined` merging is handled
+     * by the method instead. The `customizer` is bound to `thisArg` and invoked
+     * with five arguments; (objectValue, sourceValue, key, object, source).
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The destination object.
+     * @param {...Object} [sources] The source objects.
+     * @param {Function} [customizer] The function to customize merging properties.
+     * @param {*} [thisArg] The `this` binding of `customizer`.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * var users = {
+     *   'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
+     * };
+     *
+     * var ages = {
+     *   'data': [{ 'age': 36 }, { 'age': 40 }]
+     * };
+     *
+     * _.merge(users, ages);
+     * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
+     *
+     * // using a customizer callback
+     * var object = {
+     *   'fruits': ['apple'],
+     *   'vegetables': ['beet']
+     * };
+     *
+     * var other = {
+     *   'fruits': ['banana'],
+     *   'vegetables': ['carrot']
+     * };
+     *
+     * _.merge(object, other, function(a, b) {
+     *   return _.isArray(a) ? a.concat(b) : undefined;
+     * });
+     * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
+     */
+    var merge = createAssigner(baseMerge);
+
+    /**
+     * The opposite of `_.pick`; this method creates an object composed of the
+     * own and inherited enumerable properties of `object` that are not omitted.
+     * Property names may be specified as individual arguments or as arrays of
+     * property names. If `predicate` is provided it is invoked for each property
+     * of `object` omitting the properties `predicate` returns truthy for. The
+     * predicate is bound to `thisArg` and invoked with three arguments;
+     * (value, key, object).
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The source object.
+     * @param {Function|...(string|string[])} [predicate] The function invoked per
+     *  iteration or property names to omit, specified as individual property
+     *  names or arrays of property names.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {Object} Returns the new object.
+     * @example
+     *
+     * var object = { 'user': 'fred', 'age': 40 };
+     *
+     * _.omit(object, 'age');
+     * // => { 'user': 'fred' }
+     *
+     * _.omit(object, _.isNumber);
+     * // => { 'user': 'fred' }
+     */
+    function omit(object, predicate, thisArg) {
+      if (object == null) {
+        return {};
+      }
+      if (typeof predicate != 'function') {
+        var props = arrayMap(baseFlatten(arguments, false, false, 1), String);
+        return pickByArray(object, baseDifference(keysIn(object), props));
+      }
+      predicate = bindCallback(predicate, thisArg, 3);
+      return pickByCallback(object, function(value, key, object) {
+        return !predicate(value, key, object);
+      });
+    }
+
+    /**
+     * Creates a two dimensional array of the key-value pairs for `object`,
+     * e.g. `[[key1, value1], [key2, value2]]`.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to inspect.
+     * @returns {Array} Returns the new array of key-value pairs.
+     * @example
+     *
+     * _.pairs({ 'barney': 36, 'fred': 40 });
+     * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)
+     */
+    function pairs(object) {
+      var index = -1,
+          props = keys(object),
+          length = props.length,
+          result = Array(length);
+
+      while (++index < length) {
+        var key = props[index];
+        result[index] = [key, object[key]];
+      }
+      return result;
+    }
+
+    /**
+     * Creates an object composed of the picked `object` properties. Property
+     * names may be specified as individual arguments or as arrays of property
+     * names. If `predicate` is provided it is invoked for each property of `object`
+     * picking the properties `predicate` returns truthy for. The predicate is
+     * bound to `thisArg` and invoked with three arguments; (value, key, object).
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The source object.
+     * @param {Function|...(string|string[])} [predicate] The function invoked per
+     *  iteration or property names to pick, specified as individual property
+     *  names or arrays of property names.
+     * @param {*} [thisArg] The `this` binding of `predicate`.
+     * @returns {Object} Returns the new object.
+     * @example
+     *
+     * var object = { 'user': 'fred', 'age': 40 };
+     *
+     * _.pick(object, 'user');
+     * // => { 'user': 'fred' }
+     *
+     * _.pick(object, _.isString);
+     * // => { 'user': 'fred' }
+     */
+    function pick(object, predicate, thisArg) {
+      if (object == null) {
+        return {};
+      }
+      return typeof predicate == 'function'
+        ? pickByCallback(object, bindCallback(predicate, thisArg, 3))
+        : pickByArray(object, baseFlatten(arguments, false, false, 1));
+    }
+
+    /**
+     * Resolves the value of property `key` on `object`. If the value of `key` is
+     * a function it is invoked with the `this` binding of `object` and its result
+     * is returned, else the property value is returned. If the property value is
+     * `undefined` the `defaultValue` is used in its place.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to query.
+     * @param {string} key The key of the property to resolve.
+     * @param {*} [defaultValue] The value returned if the property value
+     *  resolves to `undefined`.
+     * @returns {*} Returns the resolved value.
+     * @example
+     *
+     * var object = { 'user': 'fred', 'age': _.constant(40) };
+     *
+     * _.result(object, 'user');
+     * // => 'fred'
+     *
+     * _.result(object, 'age');
+     * // => 40
+     *
+     * _.result(object, 'status', 'busy');
+     * // => 'busy'
+     *
+     * _.result(object, 'status', _.constant('busy'));
+     * // => 'busy'
+     */
+    function result(object, key, defaultValue) {
+      var value = object == null ? undefined : object[key];
+      if (typeof value == 'undefined') {
+        value = defaultValue;
+      }
+      return isFunction(value) ? value.call(object) : value;
+    }
+
+    /**
+     * An alternative to `_.reduce`; this method transforms `object` to a new
+     * `accumulator` object which is the result of running each of its own enumerable
+     * properties through `iteratee`, with each invocation potentially mutating
+     * the `accumulator` object. The `iteratee` is bound to `thisArg` and invoked
+     * with four arguments; (accumulator, value, key, object). Iterator functions
+     * may exit iteration early by explicitly returning `false`.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Array|Object} object The object to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [accumulator] The custom accumulator value.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {*} Returns the accumulated value.
+     * @example
+     *
+     * var squares = _.transform([1, 2, 3, 4, 5, 6], function(result, n) {
+     *   n *= n;
+     *   if (n % 2) {
+     *     return result.push(n) < 3;
+     *   }
+     * });
+     * // => [1, 9, 25]
+     *
+     * var mapped = _.transform({ 'a': 1, 'b': 2, 'c': 3 }, function(result, n, key) {
+     *   result[key] = n * 3;
+     * });
+     * // => { 'a': 3, 'b': 6, 'c': 9 }
+     */
+    function transform(object, iteratee, accumulator, thisArg) {
+      var isArr = isArray(object) || isTypedArray(object);
+      iteratee = getCallback(iteratee, thisArg, 4);
+
+      if (accumulator == null) {
+        if (isArr || isObject(object)) {
+          var Ctor = object.constructor;
+          if (isArr) {
+            accumulator = isArray(object) ? new Ctor : [];
+          } else {
+            accumulator = baseCreate(isFunction(Ctor) && Ctor.prototype);
+          }
+        } else {
+          accumulator = {};
+        }
+      }
+      (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) {
+        return iteratee(accumulator, value, index, object);
+      });
+      return accumulator;
+    }
+
+    /**
+     * Creates an array of the own enumerable property values of `object`.
+     *
+     * **Note:** Non-object values are coerced to objects.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of property values.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.values(new Foo);
+     * // => [1, 2] (iteration order is not guaranteed)
+     *
+     * _.values('hi');
+     * // => ['h', 'i']
+     */
+    function values(object) {
+      return baseValues(object, keys(object));
+    }
+
+    /**
+     * Creates an array of the own and inherited enumerable property values
+     * of `object`.
+     *
+     * **Note:** Non-object values are coerced to objects.
+     *
+     * @static
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of property values.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.valuesIn(new Foo);
+     * // => [1, 2, 3] (iteration order is not guaranteed)
+     */
+    function valuesIn(object) {
+      return baseValues(object, keysIn(object));
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Produces a random number between `min` and `max` (inclusive). If only one
+     * argument is provided a number between `0` and the given number is returned.
+     * If `floating` is `true`, or either `min` or `max` are floats, a floating-point
+     * number is returned instead of an integer.
+     *
+     * @static
+     * @memberOf _
+     * @category Number
+     * @param {number} [min=0] The minimum possible value.
+     * @param {number} [max=1] The maximum possible value.
+     * @param {boolean} [floating] Specify returning a floating-point number.
+     * @returns {number} Returns the random number.
+     * @example
+     *
+     * _.random(0, 5);
+     * // => an integer between 0 and 5
+     *
+     * _.random(5);
+     * // => also an integer between 0 and 5
+     *
+     * _.random(5, true);
+     * // => a floating-point number between 0 and 5
+     *
+     * _.random(1.2, 5.2);
+     * // => a floating-point number between 1.2 and 5.2
+     */
+    function random(min, max, floating) {
+      if (floating && isIterateeCall(min, max, floating)) {
+        max = floating = null;
+      }
+      var noMin = min == null,
+          noMax = max == null;
+
+      if (floating == null) {
+        if (noMax && typeof min == 'boolean') {
+          floating = min;
+          min = 1;
+        }
+        else if (typeof max == 'boolean') {
+          floating = max;
+          noMax = true;
+        }
+      }
+      if (noMin && noMax) {
+        max = 1;
+        noMax = false;
+      }
+      min = +min || 0;
+      if (noMax) {
+        max = min;
+        min = 0;
+      } else {
+        max = +max || 0;
+      }
+      if (floating || min % 1 || max % 1) {
+        var rand = nativeRandom();
+        return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand + '').length - 1)))), max);
+      }
+      return baseRandom(min, max);
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Converts `string` to camel case.
+     * See [Wikipedia](https://en.wikipedia.org/wiki/CamelCase) for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the camel cased string.
+     * @example
+     *
+     * _.camelCase('Foo Bar');
+     * // => 'fooBar'
+     *
+     * _.camelCase('--foo-bar');
+     * // => 'fooBar'
+     *
+     * _.camelCase('__foo_bar__');
+     * // => 'fooBar'
+     */
+    var camelCase = createCompounder(function(result, word, index) {
+      word = word.toLowerCase();
+      return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word);
+    });
+
+    /**
+     * Capitalizes the first character of `string`.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to capitalize.
+     * @returns {string} Returns the capitalized string.
+     * @example
+     *
+     * _.capitalize('fred');
+     * // => 'Fred'
+     */
+    function capitalize(string) {
+      string = baseToString(string);
+      return string && (string.charAt(0).toUpperCase() + string.slice(1));
+    }
+
+    /**
+     * Deburrs `string` by converting latin-1 supplementary letters to basic latin letters.
+     * See [Wikipedia](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to deburr.
+     * @returns {string} Returns the deburred string.
+     * @example
+     *
+     * _.deburr('déjà vu');
+     * // => 'deja vu'
+     */
+    function deburr(string) {
+      string = baseToString(string);
+      return string && string.replace(reLatin1, deburrLetter);
+    }
+
+    /**
+     * Checks if `string` ends with the given target string.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to search.
+     * @param {string} [target] The string to search for.
+     * @param {number} [position=string.length] The position to search from.
+     * @returns {boolean} Returns `true` if `string` ends with `target`, else `false`.
+     * @example
+     *
+     * _.endsWith('abc', 'c');
+     * // => true
+     *
+     * _.endsWith('abc', 'b');
+     * // => false
+     *
+     * _.endsWith('abc', 'b', 2);
+     * // => true
+     */
+    function endsWith(string, target, position) {
+      string = baseToString(string);
+      target = (target + '');
+
+      var length = string.length;
+      position = (typeof position == 'undefined' ? length : nativeMin(position < 0 ? 0 : (+position || 0), length)) - target.length;
+      return position >= 0 && string.indexOf(target, position) == position;
+    }
+
+    /**
+     * Converts the characters "&", "<", ">", '"', "'", and '`', in `string` to
+     * their corresponding HTML entities.
+     *
+     * **Note:** No other characters are escaped. To escape additional characters
+     * use a third-party library like [_he_](https://mths.be/he).
+     *
+     * Though the ">" character is escaped for symmetry, characters like
+     * ">" and "/" don't require escaping in HTML and have no special meaning
+     * unless they're part of a tag or unquoted attribute value.
+     * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
+     * (under "semi-related fun fact") for more details.
+     *
+     * Backticks are escaped because in Internet Explorer < 9, they can break out
+     * of attribute values or HTML comments. See [#102](https://html5sec.org/#102),
+     * [#108](https://html5sec.org/#108), and [#133](https://html5sec.org/#133) of
+     * the [HTML5 Security Cheatsheet](https://html5sec.org/) for more details.
+     *
+     * When working with HTML you should always quote attribute values to reduce
+     * XSS vectors. See [Ryan Grove's article](http://wonko.com/post/html-escaping)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to escape.
+     * @returns {string} Returns the escaped string.
+     * @example
+     *
+     * _.escape('fred, barney, & pebbles');
+     * // => 'fred, barney, &amp; pebbles'
+     */
+    function escape(string) {
+      // Reset `lastIndex` because in IE < 9 `String#replace` does not.
+      string = baseToString(string);
+      return (string && reHasUnescapedHtml.test(string))
+        ? string.replace(reUnescapedHtml, escapeHtmlChar)
+        : string;
+    }
+
+    /**
+     * Escapes the `RegExp` special characters "\", "^", "$", ".", "|", "?", "*",
+     * "+", "(", ")", "[", "]", "{" and "}" in `string`.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to escape.
+     * @returns {string} Returns the escaped string.
+     * @example
+     *
+     * _.escapeRegExp('[lodash](https://lodash.com/)');
+     * // => '\[lodash\]\(https://lodash\.com/\)'
+     */
+    function escapeRegExp(string) {
+      string = baseToString(string);
+      return (string && reHasRegExpChars.test(string))
+        ? string.replace(reRegExpChars, '\\$&')
+        : string;
+    }
+
+    /**
+     * Converts `string` to kebab case (a.k.a. spinal case).
+     * See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles) for
+     * more details.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the kebab cased string.
+     * @example
+     *
+     * _.kebabCase('Foo Bar');
+     * // => 'foo-bar'
+     *
+     * _.kebabCase('fooBar');
+     * // => 'foo-bar'
+     *
+     * _.kebabCase('__foo_bar__');
+     * // => 'foo-bar'
+     */
+    var kebabCase = createCompounder(function(result, word, index) {
+      return result + (index ? '-' : '') + word.toLowerCase();
+    });
+
+    /**
+     * Pads `string` on the left and right sides if it is shorter then the given
+     * padding length. The `chars` string may be truncated if the number of padding
+     * characters can't be evenly divided by the padding length.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to pad.
+     * @param {number} [length=0] The padding length.
+     * @param {string} [chars=' '] The string used as padding.
+     * @returns {string} Returns the padded string.
+     * @example
+     *
+     * _.pad('abc', 8);
+     * // => '  abc   '
+     *
+     * _.pad('abc', 8, '_-');
+     * // => '_-abc_-_'
+     *
+     * _.pad('abc', 3);
+     * // => 'abc'
+     */
+    function pad(string, length, chars) {
+      string = baseToString(string);
+      length = +length;
+
+      var strLength = string.length;
+      if (strLength >= length || !nativeIsFinite(length)) {
+        return string;
+      }
+      var mid = (length - strLength) / 2,
+          leftLength = floor(mid),
+          rightLength = ceil(mid);
+
+      chars = createPad('', rightLength, chars);
+      return chars.slice(0, leftLength) + string + chars;
+    }
+
+    /**
+     * Pads `string` on the left side if it is shorter then the given padding
+     * length. The `chars` string may be truncated if the number of padding
+     * characters exceeds the padding length.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to pad.
+     * @param {number} [length=0] The padding length.
+     * @param {string} [chars=' '] The string used as padding.
+     * @returns {string} Returns the padded string.
+     * @example
+     *
+     * _.padLeft('abc', 6);
+     * // => '   abc'
+     *
+     * _.padLeft('abc', 6, '_-');
+     * // => '_-_abc'
+     *
+     * _.padLeft('abc', 3);
+     * // => 'abc'
+     */
+    function padLeft(string, length, chars) {
+      string = baseToString(string);
+      return string && (createPad(string, length, chars) + string);
+    }
+
+    /**
+     * Pads `string` on the right side if it is shorter then the given padding
+     * length. The `chars` string may be truncated if the number of padding
+     * characters exceeds the padding length.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to pad.
+     * @param {number} [length=0] The padding length.
+     * @param {string} [chars=' '] The string used as padding.
+     * @returns {string} Returns the padded string.
+     * @example
+     *
+     * _.padRight('abc', 6);
+     * // => 'abc   '
+     *
+     * _.padRight('abc', 6, '_-');
+     * // => 'abc_-_'
+     *
+     * _.padRight('abc', 3);
+     * // => 'abc'
+     */
+    function padRight(string, length, chars) {
+      string = baseToString(string);
+      return string && (string + createPad(string, length, chars));
+    }
+
+    /**
+     * Converts `string` to an integer of the specified radix. If `radix` is
+     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a hexadecimal,
+     * in which case a `radix` of `16` is used.
+     *
+     * **Note:** This method aligns with the ES5 implementation of `parseInt`.
+     * See the [ES5 spec](https://es5.github.io/#E) for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} string The string to convert.
+     * @param {number} [radix] The radix to interpret `value` by.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {number} Returns the converted integer.
+     * @example
+     *
+     * _.parseInt('08');
+     * // => 8
+     *
+     * _.map(['6', '08', '10'], _.parseInt);
+     * // => [6, 8, 10]
+     */
+    function parseInt(string, radix, guard) {
+      if (guard && isIterateeCall(string, radix, guard)) {
+        radix = 0;
+      }
+      return nativeParseInt(string, radix);
+    }
+    // Fallback for environments with pre-ES5 implementations.
+    if (nativeParseInt(whitespace + '08') != 8) {
+      parseInt = function(string, radix, guard) {
+        // Firefox < 21 and Opera < 15 follow ES3 for `parseInt`.
+        // Chrome fails to trim leading <BOM> whitespace characters.
+        // See https://code.google.com/p/v8/issues/detail?id=3109 for more details.
+        if (guard ? isIterateeCall(string, radix, guard) : radix == null) {
+          radix = 0;
+        } else if (radix) {
+          radix = +radix;
+        }
+        string = trim(string);
+        return nativeParseInt(string, radix || (reHexPrefix.test(string) ? 16 : 10));
+      };
+    }
+
+    /**
+     * Repeats the given string `n` times.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to repeat.
+     * @param {number} [n=0] The number of times to repeat the string.
+     * @returns {string} Returns the repeated string.
+     * @example
+     *
+     * _.repeat('*', 3);
+     * // => '***'
+     *
+     * _.repeat('abc', 2);
+     * // => 'abcabc'
+     *
+     * _.repeat('abc', 0);
+     * // => ''
+     */
+    function repeat(string, n) {
+      var result = '';
+      string = baseToString(string);
+      n = +n;
+      if (n < 1 || !string || !nativeIsFinite(n)) {
+        return result;
+      }
+      // Leverage the exponentiation by squaring algorithm for a faster repeat.
+      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
+      do {
+        if (n % 2) {
+          result += string;
+        }
+        n = floor(n / 2);
+        string += string;
+      } while (n);
+
+      return result;
+    }
+
+    /**
+     * Converts `string` to snake case.
+     * See [Wikipedia](https://en.wikipedia.org/wiki/Snake_case) for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the snake cased string.
+     * @example
+     *
+     * _.snakeCase('Foo Bar');
+     * // => 'foo_bar'
+     *
+     * _.snakeCase('fooBar');
+     * // => 'foo_bar'
+     *
+     * _.snakeCase('--foo-bar');
+     * // => 'foo_bar'
+     */
+    var snakeCase = createCompounder(function(result, word, index) {
+      return result + (index ? '_' : '') + word.toLowerCase();
+    });
+
+    /**
+     * Converts `string` to start case.
+     * See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage)
+     * for more details.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the start cased string.
+     * @example
+     *
+     * _.startCase('--foo-bar');
+     * // => 'Foo Bar'
+     *
+     * _.startCase('fooBar');
+     * // => 'Foo Bar'
+     *
+     * _.startCase('__foo_bar__');
+     * // => 'Foo Bar'
+     */
+    var startCase = createCompounder(function(result, word, index) {
+      return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1));
+    });
+
+    /**
+     * Checks if `string` starts with the given target string.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to search.
+     * @param {string} [target] The string to search for.
+     * @param {number} [position=0] The position to search from.
+     * @returns {boolean} Returns `true` if `string` starts with `target`, else `false`.
+     * @example
+     *
+     * _.startsWith('abc', 'a');
+     * // => true
+     *
+     * _.startsWith('abc', 'b');
+     * // => false
+     *
+     * _.startsWith('abc', 'b', 1);
+     * // => true
+     */
+    function startsWith(string, target, position) {
+      string = baseToString(string);
+      position = position == null ? 0 : nativeMin(position < 0 ? 0 : (+position || 0), string.length);
+      return string.lastIndexOf(target, position) == position;
+    }
+
+    /**
+     * Creates a compiled template function that can interpolate data properties
+     * in "interpolate" delimiters, HTML-escape interpolated data properties in
+     * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
+     * properties may be accessed as free variables in the template. If a setting
+     * object is provided it takes precedence over `_.templateSettings` values.
+     *
+     * **Note:** In the development build `_.template` utilizes sourceURLs for easier debugging.
+     * See the [HTML5 Rocks article on sourcemaps](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
+     * for more details.
+     *
+     * For more information on precompiling templates see
+     * [lodash's custom builds documentation](https://lodash.com/custom-builds).
+     *
+     * For more information on Chrome extension sandboxes see
+     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The template string.
+     * @param {Object} [options] The options object.
+     * @param {RegExp} [options.escape] The HTML "escape" delimiter.
+     * @param {RegExp} [options.evaluate] The "evaluate" delimiter.
+     * @param {Object} [options.imports] An object to import into the template as free variables.
+     * @param {RegExp} [options.interpolate] The "interpolate" delimiter.
+     * @param {string} [options.sourceURL] The sourceURL of the template's compiled source.
+     * @param {string} [options.variable] The data object variable name.
+     * @param- {Object} [otherOptions] Enables the legacy `options` param signature.
+     * @returns {Function} Returns the compiled template function.
+     * @example
+     *
+     * // using the "interpolate" delimiter to create a compiled template
+     * var compiled = _.template('hello <%= user %>!');
+     * compiled({ 'user': 'fred' });
+     * // => 'hello fred!'
+     *
+     * // using the HTML "escape" delimiter to escape data property values
+     * var compiled = _.template('<b><%- value %></b>');
+     * compiled({ 'value': '<script>' });
+     * // => '<b>&lt;script&gt;</b>'
+     *
+     * // using the "evaluate" delimiter to execute JavaScript and generate HTML
+     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
+     * compiled({ 'users': ['fred', 'barney'] });
+     * // => '<li>fred</li><li>barney</li>'
+     *
+     * // using the internal `print` function in "evaluate" delimiters
+     * var compiled = _.template('<% print("hello " + user); %>!');
+     * compiled({ 'user': 'barney' });
+     * // => 'hello barney!'
+     *
+     * // using the ES delimiter as an alternative to the default "interpolate" delimiter
+     * var compiled = _.template('hello ${ user }!');
+     * compiled({ 'user': 'pebbles' });
+     * // => 'hello pebbles!'
+     *
+     * // using custom template delimiters
+     * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
+     * var compiled = _.template('hello {{ user }}!');
+     * compiled({ 'user': 'mustache' });
+     * // => 'hello mustache!'
+     *
+     * // using backslashes to treat delimiters as plain text
+     * var compiled = _.template('<%= "\\<%- value %\\>" %>');
+     * compiled({ 'value': 'ignored' });
+     * // => '<%- value %>'
+     *
+     * // using the `imports` option to import `jQuery` as `jq`
+     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
+     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
+     * compiled({ 'users': ['fred', 'barney'] });
+     * // => '<li>fred</li><li>barney</li>'
+     *
+     * // using the `sourceURL` option to specify a custom sourceURL for the template
+     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
+     * compiled(data);
+     * // => find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector
+     *
+     * // using the `variable` option to ensure a with-statement isn't used in the compiled template
+     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
+     * compiled.source;
+     * // => function(data) {
+     *   var __t, __p = '';
+     *   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
+     *   return __p;
+     * }
+     *
+     * // using the `source` property to inline compiled templates for meaningful
+     * // line numbers in error messages and a stack trace
+     * fs.writeFileSync(path.join(cwd, 'jst.js'), '\
+     *   var JST = {\
+     *     "main": ' + _.template(mainText).source + '\
+     *   };\
+     * ');
+     */
+    function template(string, options, otherOptions) {
+      // Based on John Resig's `tmpl` implementation (http://ejohn.org/blog/javascript-micro-templating/)
+      // and Laura Doktorova's doT.js (https://github.com/olado/doT).
+      var settings = lodash.templateSettings;
+
+      if (otherOptions && isIterateeCall(string, options, otherOptions)) {
+        options = otherOptions = null;
+      }
+      string = baseToString(string);
+      options = baseAssign(baseAssign({}, otherOptions || options), settings, assignOwnDefaults);
+
+      var imports = baseAssign(baseAssign({}, options.imports), settings.imports, assignOwnDefaults),
+          importsKeys = keys(imports),
+          importsValues = baseValues(imports, importsKeys);
+
+      var isEscaping,
+          isEvaluating,
+          index = 0,
+          interpolate = options.interpolate || reNoMatch,
+          source = "__p += '";
+
+      // Compile the regexp to match each delimiter.
+      var reDelimiters = RegExp(
+        (options.escape || reNoMatch).source + '|' +
+        interpolate.source + '|' +
+        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
+        (options.evaluate || reNoMatch).source + '|$'
+      , 'g');
+
+      // Use a sourceURL for easier debugging.
+      var sourceURL = '//# sourceURL=' +
+        ('sourceURL' in options
+          ? options.sourceURL
+          : ('lodash.templateSources[' + (++templateCounter) + ']')
+        ) + '\n';
+
+      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
+        interpolateValue || (interpolateValue = esTemplateValue);
+
+        // Escape characters that can't be included in string literals.
+        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
+
+        // Replace delimiters with snippets.
+        if (escapeValue) {
+          isEscaping = true;
+          source += "' +\n__e(" + escapeValue + ") +\n'";
+        }
+        if (evaluateValue) {
+          isEvaluating = true;
+          source += "';\n" + evaluateValue + ";\n__p += '";
+        }
+        if (interpolateValue) {
+          source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
+        }
+        index = offset + match.length;
+
+        // The JS engine embedded in Adobe products requires returning the `match`
+        // string in order to produce the correct `offset` value.
+        return match;
+      });
+
+      source += "';\n";
+
+      // If `variable` is not specified wrap a with-statement around the generated
+      // code to add the data object to the top of the scope chain.
+      var variable = options.variable;
+      if (!variable) {
+        source = 'with (obj) {\n' + source + '\n}\n';
+      }
+      // Cleanup code by stripping empty strings.
+      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
+        .replace(reEmptyStringMiddle, '$1')
+        .replace(reEmptyStringTrailing, '$1;');
+
+      // Frame code as the function body.
+      source = 'function(' + (variable || 'obj') + ') {\n' +
+        (variable
+          ? ''
+          : 'obj || (obj = {});\n'
+        ) +
+        "var __t, __p = ''" +
+        (isEscaping
+           ? ', __e = _.escape'
+           : ''
+        ) +
+        (isEvaluating
+          ? ', __j = Array.prototype.join;\n' +
+            "function print() { __p += __j.call(arguments, '') }\n"
+          : ';\n'
+        ) +
+        source +
+        'return __p\n}';
+
+      var result = attempt(function() {
+        return Function(importsKeys, sourceURL + 'return ' + source).apply(undefined, importsValues);
+      });
+
+      // Provide the compiled function's source by its `toString` method or
+      // the `source` property as a convenience for inlining compiled templates.
+      result.source = source;
+      if (isError(result)) {
+        throw result;
+      }
+      return result;
+    }
+
+    /**
+     * Removes leading and trailing whitespace or specified characters from `string`.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to trim.
+     * @param {string} [chars=whitespace] The characters to trim.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {string} Returns the trimmed string.
+     * @example
+     *
+     * _.trim('  abc  ');
+     * // => 'abc'
+     *
+     * _.trim('-_-abc-_-', '_-');
+     * // => 'abc'
+     *
+     * _.map(['  foo  ', '  bar  '], _.trim);
+     * // => ['foo', 'bar]
+     */
+    function trim(string, chars, guard) {
+      var value = string;
+      string = baseToString(string);
+      if (!string) {
+        return string;
+      }
+      if (guard ? isIterateeCall(value, chars, guard) : chars == null) {
+        return string.slice(trimmedLeftIndex(string), trimmedRightIndex(string) + 1);
+      }
+      chars = (chars + '');
+      return string.slice(charsLeftIndex(string, chars), charsRightIndex(string, chars) + 1);
+    }
+
+    /**
+     * Removes leading whitespace or specified characters from `string`.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to trim.
+     * @param {string} [chars=whitespace] The characters to trim.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {string} Returns the trimmed string.
+     * @example
+     *
+     * _.trimLeft('  abc  ');
+     * // => 'abc  '
+     *
+     * _.trimLeft('-_-abc-_-', '_-');
+     * // => 'abc-_-'
+     */
+    function trimLeft(string, chars, guard) {
+      var value = string;
+      string = baseToString(string);
+      if (!string) {
+        return string;
+      }
+      if (guard ? isIterateeCall(value, chars, guard) : chars == null) {
+        return string.slice(trimmedLeftIndex(string));
+      }
+      return string.slice(charsLeftIndex(string, (chars + '')));
+    }
+
+    /**
+     * Removes trailing whitespace or specified characters from `string`.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to trim.
+     * @param {string} [chars=whitespace] The characters to trim.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {string} Returns the trimmed string.
+     * @example
+     *
+     * _.trimRight('  abc  ');
+     * // => '  abc'
+     *
+     * _.trimRight('-_-abc-_-', '_-');
+     * // => '-_-abc'
+     */
+    function trimRight(string, chars, guard) {
+      var value = string;
+      string = baseToString(string);
+      if (!string) {
+        return string;
+      }
+      if (guard ? isIterateeCall(value, chars, guard) : chars == null) {
+        return string.slice(0, trimmedRightIndex(string) + 1);
+      }
+      return string.slice(0, charsRightIndex(string, (chars + '')) + 1);
+    }
+
+    /**
+     * Truncates `string` if it is longer than the given maximum string length.
+     * The last characters of the truncated string are replaced with the omission
+     * string which defaults to "...".
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to truncate.
+     * @param {Object|number} [options] The options object or maximum string length.
+     * @param {number} [options.length=30] The maximum string length.
+     * @param {string} [options.omission='...'] The string to indicate text is omitted.
+     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {string} Returns the truncated string.
+     * @example
+     *
+     * _.trunc('hi-diddly-ho there, neighborino');
+     * // => 'hi-diddly-ho there, neighbo...'
+     *
+     * _.trunc('hi-diddly-ho there, neighborino', 24);
+     * // => 'hi-diddly-ho there, n...'
+     *
+     * _.trunc('hi-diddly-ho there, neighborino', { 'length': 24, 'separator': ' ' });
+     * // => 'hi-diddly-ho there,...'
+     *
+     * _.trunc('hi-diddly-ho there, neighborino', { 'length': 24, 'separator': /,? +/ });
+     * //=> 'hi-diddly-ho there...'
+     *
+     * _.trunc('hi-diddly-ho there, neighborino', { 'omission': ' [...]' });
+     * // => 'hi-diddly-ho there, neig [...]'
+     */
+    function trunc(string, options, guard) {
+      if (guard && isIterateeCall(string, options, guard)) {
+        options = null;
+      }
+      var length = DEFAULT_TRUNC_LENGTH,
+          omission = DEFAULT_TRUNC_OMISSION;
+
+      if (options != null) {
+        if (isObject(options)) {
+          var separator = 'separator' in options ? options.separator : separator;
+          length = 'length' in options ? +options.length || 0 : length;
+          omission = 'omission' in options ? baseToString(options.omission) : omission;
+        } else {
+          length = +options || 0;
+        }
+      }
+      string = baseToString(string);
+      if (length >= string.length) {
+        return string;
+      }
+      var end = length - omission.length;
+      if (end < 1) {
+        return omission;
+      }
+      var result = string.slice(0, end);
+      if (separator == null) {
+        return result + omission;
+      }
+      if (isRegExp(separator)) {
+        if (string.slice(end).search(separator)) {
+          var match,
+              newEnd,
+              substring = string.slice(0, end);
+
+          if (!separator.global) {
+            separator = RegExp(separator.source, (reFlags.exec(separator) || '') + 'g');
+          }
+          separator.lastIndex = 0;
+          while ((match = separator.exec(substring))) {
+            newEnd = match.index;
+          }
+          result = result.slice(0, newEnd == null ? end : newEnd);
+        }
+      } else if (string.indexOf(separator, end) != end) {
+        var index = result.lastIndexOf(separator);
+        if (index > -1) {
+          result = result.slice(0, index);
+        }
+      }
+      return result + omission;
+    }
+
+    /**
+     * The inverse of `_.escape`; this method converts the HTML entities
+     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, `&#39;`, and `&#96;` in `string` to their
+     * corresponding characters.
+     *
+     * **Note:** No other HTML entities are unescaped. To unescape additional HTML
+     * entities use a third-party library like [_he_](https://mths.be/he).
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to unescape.
+     * @returns {string} Returns the unescaped string.
+     * @example
+     *
+     * _.unescape('fred, barney, &amp; pebbles');
+     * // => 'fred, barney, & pebbles'
+     */
+    function unescape(string) {
+      string = baseToString(string);
+      return (string && reHasEscapedHtml.test(string))
+        ? string.replace(reEscapedHtml, unescapeHtmlChar)
+        : string;
+    }
+
+    /**
+     * Splits `string` into an array of its words.
+     *
+     * @static
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to inspect.
+     * @param {RegExp|string} [pattern] The pattern to match words.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Array} Returns the words of `string`.
+     * @example
+     *
+     * _.words('fred, barney, & pebbles');
+     * // => ['fred', 'barney', 'pebbles']
+     *
+     * _.words('fred, barney, & pebbles', /[^, ]+/g);
+     * // => ['fred', 'barney', '&', 'pebbles']
+     */
+    function words(string, pattern, guard) {
+      if (guard && isIterateeCall(string, pattern, guard)) {
+        pattern = null;
+      }
+      string = baseToString(string);
+      return string.match(pattern || reWords) || [];
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Attempts to invoke `func`, returning either the result or the caught error
+     * object. Any additional arguments are provided to `func` when it is invoked.
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @param {*} func The function to attempt.
+     * @returns {*} Returns the `func` result or error object.
+     * @example
+     *
+     * // avoid throwing errors for invalid selectors
+     * var elements = _.attempt(function(selector) {
+     *   return document.querySelectorAll(selector);
+     * }, '>_>');
+     *
+     * if (_.isError(elements)) {
+     *   elements = [];
+     * }
+     */
+    function attempt(func) {
+      try {
+        return func.apply(undefined, baseSlice(arguments, 1));
+      } catch(e) {
+        return isError(e) ? e : new Error(e);
+      }
+    }
+
+    /**
+     * Creates a function that invokes `func` with the `this` binding of `thisArg`
+     * and arguments of the created function. If `func` is a property name the
+     * created callback returns the property value for a given element. If `func`
+     * is an object the created callback returns `true` for elements that contain
+     * the equivalent object properties, otherwise it returns `false`.
+     *
+     * @static
+     * @memberOf _
+     * @alias iteratee
+     * @category Utility
+     * @param {*} [func=_.identity] The value to convert to a callback.
+     * @param {*} [thisArg] The `this` binding of `func`.
+     * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+     * @returns {Function} Returns the callback.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36 },
+     *   { 'user': 'fred',   'age': 40 }
+     * ];
+     *
+     * // wrap to create custom callback shorthands
+     * _.callback = _.wrap(_.callback, function(callback, func, thisArg) {
+     *   var match = /^(.+?)__([gl]t)(.+)$/.exec(func);
+     *   if (!match) {
+     *     return callback(func, thisArg);
+     *   }
+     *   return function(object) {
+     *     return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3];
+     *   };
+     * });
+     *
+     * _.filter(users, 'age__gt36');
+     * // => [{ 'user': 'fred', 'age': 40 }]
+     */
+    function callback(func, thisArg, guard) {
+      if (guard && isIterateeCall(func, thisArg, guard)) {
+        thisArg = null;
+      }
+      return isObjectLike(func)
+        ? matches(func)
+        : baseCallback(func, thisArg);
+    }
+
+    /**
+     * Creates a function that returns `value`.
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @param {*} value The value to return from the new function.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var object = { 'user': 'fred' };
+     * var getter = _.constant(object);
+     * getter() === object;
+     * // => true
+     */
+    function constant(value) {
+      return function() {
+        return value;
+      };
+    }
+
+    /**
+     * This method returns the first argument provided to it.
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @param {*} value Any value.
+     * @returns {*} Returns `value`.
+     * @example
+     *
+     * var object = { 'user': 'fred' };
+     * _.identity(object) === object;
+     * // => true
+     */
+    function identity(value) {
+      return value;
+    }
+
+    /**
+     * Creates a function which performs a deep comparison between a given object
+     * and `source`, returning `true` if the given object has equivalent property
+     * values, else `false`.
+     *
+     * **Note:** This method supports comparing arrays, booleans, `Date` objects,
+     * numbers, `Object` objects, regexes, and strings. Objects are compared by
+     * their own, not inherited, enumerable properties. For comparing a single
+     * own or inherited property value see `_.matchesProperty`.
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @param {Object} source The object of property values to match.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36, 'active': true },
+     *   { 'user': 'fred',   'age': 40, 'active': false }
+     * ];
+     *
+     * _.filter(users, _.matches({ 'age': 40, 'active': false }));
+     * // => [{ 'user': 'fred', 'age': 40, 'active': false }]
+     */
+    function matches(source) {
+      return baseMatches(baseClone(source, true));
+    }
+
+    /**
+     * Creates a function which compares the property value of `key` on a given
+     * object to `value`.
+     *
+     * **Note:** This method supports comparing arrays, booleans, `Date` objects,
+     * numbers, `Object` objects, regexes, and strings. Objects are compared by
+     * their own, not inherited, enumerable properties.
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @param {string} key The key of the property to get.
+     * @param {*} value The value to compare.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36 },
+     *   { 'user': 'fred',    'age': 40 },
+     *   { 'user': 'pebbles', 'age': 1 }
+     * ];
+     *
+     * var matchFred = _.matchesProperty('user', 'fred');
+     *
+     * _.find(users, matchFred);
+     * // => { 'user': 'fred', 'age': 40 }
+     */
+    function matchesProperty(key, value) {
+      return baseMatchesProperty(key + '', baseClone(value, true));
+    }
+
+    /**
+     * Adds all own enumerable function properties of a source object to the
+     * destination object. If `object` is a function then methods are added to
+     * its prototype as well.
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @param {Function|Object} [object=this] object The destination object.
+     * @param {Object} source The object of functions to add.
+     * @param {Object} [options] The options object.
+     * @param {boolean} [options.chain=true] Specify whether the functions added
+     *  are chainable.
+     * @returns {Function|Object} Returns `object`.
+     * @example
+     *
+     * function vowels(string) {
+     *   return _.filter(string, function(v) {
+     *     return /[aeiou]/i.test(v);
+     *   });
+     * }
+     *
+     * // use `_.runInContext` to avoid potential conflicts (esp. in Node.js)
+     * var _ = require('lodash').runInContext();
+     *
+     * _.mixin({ 'vowels': vowels });
+     * _.vowels('fred');
+     * // => ['e']
+     *
+     * _('fred').vowels().value();
+     * // => ['e']
+     *
+     * _.mixin({ 'vowels': vowels }, { 'chain': false });
+     * _('fred').vowels();
+     * // => ['e']
+     */
+    function mixin(object, source, options) {
+      if (options == null) {
+        var isObj = isObject(source),
+            props = isObj && keys(source),
+            methodNames = props && props.length && baseFunctions(source, props);
+
+        if (!(methodNames ? methodNames.length : isObj)) {
+          methodNames = false;
+          options = source;
+          source = object;
+          object = this;
+        }
+      }
+      if (!methodNames) {
+        methodNames = baseFunctions(source, keys(source));
+      }
+      var chain = true,
+          index = -1,
+          isFunc = isFunction(object),
+          length = methodNames.length;
+
+      if (options === false) {
+        chain = false;
+      } else if (isObject(options) && 'chain' in options) {
+        chain = options.chain;
+      }
+      while (++index < length) {
+        var methodName = methodNames[index],
+            func = source[methodName];
+
+        object[methodName] = func;
+        if (isFunc) {
+          object.prototype[methodName] = (function(func) {
+            return function() {
+              var chainAll = this.__chain__;
+              if (chain || chainAll) {
+                var result = object(this.__wrapped__);
+                (result.__actions__ = arrayCopy(this.__actions__)).push({ 'func': func, 'args': arguments, 'thisArg': object });
+                result.__chain__ = chainAll;
+                return result;
+              }
+              var args = [this.value()];
+              push.apply(args, arguments);
+              return func.apply(object, args);
+            };
+          }(func));
+        }
+      }
+      return object;
+    }
+
+    /**
+     * Reverts the `_` variable to its previous value and returns a reference to
+     * the `lodash` function.
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @returns {Function} Returns the `lodash` function.
+     * @example
+     *
+     * var lodash = _.noConflict();
+     */
+    function noConflict() {
+      context._ = oldDash;
+      return this;
+    }
+
+    /**
+     * A no-operation function.
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @example
+     *
+     * var object = { 'user': 'fred' };
+     * _.noop(object) === undefined;
+     * // => true
+     */
+    function noop() {
+      // No operation performed.
+    }
+
+    /**
+     * Creates a function which returns the property value of `key` on a given object.
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @param {string} key The key of the property to get.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'fred' },
+     *   { 'user': 'barney' }
+     * ];
+     *
+     * var getName = _.property('user');
+     *
+     * _.map(users, getName);
+     * // => ['fred', barney']
+     *
+     * _.pluck(_.sortBy(users, getName), 'user');
+     * // => ['barney', 'fred']
+     */
+    function property(key) {
+      return baseProperty(key + '');
+    }
+
+    /**
+     * The inverse of `_.property`; this method creates a function which returns
+     * the property value of a given key on `object`.
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @param {Object} object The object to inspect.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var object = { 'user': 'fred', 'age': 40, 'active': true };
+     * _.map(['active', 'user'], _.propertyOf(object));
+     * // => [true, 'fred']
+     *
+     * var object = { 'a': 3, 'b': 1, 'c': 2 };
+     * _.sortBy(['a', 'b', 'c'], _.propertyOf(object));
+     * // => ['b', 'c', 'a']
+     */
+    function propertyOf(object) {
+      return function(key) {
+        return object == null ? undefined : object[key];
+      };
+    }
+
+    /**
+     * Creates an array of numbers (positive and/or negative) progressing from
+     * `start` up to, but not including, `end`. If `start` is less than `end` a
+     * zero-length range is created unless a negative `step` is specified.
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @param {number} [start=0] The start of the range.
+     * @param {number} end The end of the range.
+     * @param {number} [step=1] The value to increment or decrement by.
+     * @returns {Array} Returns the new array of numbers.
+     * @example
+     *
+     * _.range(4);
+     * // => [0, 1, 2, 3]
+     *
+     * _.range(1, 5);
+     * // => [1, 2, 3, 4]
+     *
+     * _.range(0, 20, 5);
+     * // => [0, 5, 10, 15]
+     *
+     * _.range(0, -4, -1);
+     * // => [0, -1, -2, -3]
+     *
+     * _.range(1, 4, 0);
+     * // => [1, 1, 1]
+     *
+     * _.range(0);
+     * // => []
+     */
+    function range(start, end, step) {
+      if (step && isIterateeCall(start, end, step)) {
+        end = step = null;
+      }
+      start = +start || 0;
+      step = step == null ? 1 : (+step || 0);
+
+      if (end == null) {
+        end = start;
+        start = 0;
+      } else {
+        end = +end || 0;
+      }
+      // Use `Array(length)` so engines like Chakra and V8 avoid slower modes.
+      // See https://youtu.be/XAqIpGU8ZZk#t=17m25s for more details.
+      var index = -1,
+          length = nativeMax(ceil((end - start) / (step || 1)), 0),
+          result = Array(length);
+
+      while (++index < length) {
+        result[index] = start;
+        start += step;
+      }
+      return result;
+    }
+
+    /**
+     * Invokes the iteratee function `n` times, returning an array of the results
+     * of each invocation. The `iteratee` is bound to `thisArg` and invoked with
+     * one argument; (index).
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @param {number} n The number of times to invoke `iteratee`.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [thisArg] The `this` binding of `iteratee`.
+     * @returns {Array} Returns the array of results.
+     * @example
+     *
+     * var diceRolls = _.times(3, _.partial(_.random, 1, 6, false));
+     * // => [3, 6, 4]
+     *
+     * _.times(3, function(n) { mage.castSpell(n); });
+     * // => invokes `mage.castSpell(n)` three times with `n` of `0`, `1`, and `2` respectively
+     *
+     * _.times(3, function(n) { this.cast(n); }, mage);
+     * // => also invokes `mage.castSpell(n)` three times
+     */
+    function times(n, iteratee, thisArg) {
+      n = +n;
+
+      // Exit early to avoid a JSC JIT bug in Safari 8
+      // where `Array(0)` is treated as `Array(1)`.
+      if (n < 1 || !nativeIsFinite(n)) {
+        return [];
+      }
+      var index = -1,
+          result = Array(nativeMin(n, MAX_ARRAY_LENGTH));
+
+      iteratee = bindCallback(iteratee, thisArg, 1);
+      while (++index < n) {
+        if (index < MAX_ARRAY_LENGTH) {
+          result[index] = iteratee(index);
+        } else {
+          iteratee(index);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Generates a unique ID. If `prefix` is provided the ID is appended to it.
+     *
+     * @static
+     * @memberOf _
+     * @category Utility
+     * @param {string} [prefix] The value to prefix the ID with.
+     * @returns {string} Returns the unique ID.
+     * @example
+     *
+     * _.uniqueId('contact_');
+     * // => 'contact_104'
+     *
+     * _.uniqueId();
+     * // => '105'
+     */
+    function uniqueId(prefix) {
+      var id = ++idCounter;
+      return baseToString(prefix) + id;
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    // Ensure `new LodashWrapper` is an instance of `lodash`.
+    LodashWrapper.prototype = baseCreate(lodash.prototype);
+
+    // Ensure `new LazyWraper` is an instance of `LodashWrapper`
+    LazyWrapper.prototype = baseCreate(LodashWrapper.prototype);
+    LazyWrapper.prototype.constructor = LazyWrapper;
+
+    // Add functions to the `Map` cache.
+    MapCache.prototype['delete'] = mapDelete;
+    MapCache.prototype.get = mapGet;
+    MapCache.prototype.has = mapHas;
+    MapCache.prototype.set = mapSet;
+
+    // Add functions to the `Set` cache.
+    SetCache.prototype.push = cachePush;
+
+    // Assign cache to `_.memoize`.
+    memoize.Cache = MapCache;
+
+    // Add functions that return wrapped values when chaining.
+    lodash.after = after;
+    lodash.ary = ary;
+    lodash.assign = assign;
+    lodash.at = at;
+    lodash.before = before;
+    lodash.bind = bind;
+    lodash.bindAll = bindAll;
+    lodash.bindKey = bindKey;
+    lodash.callback = callback;
+    lodash.chain = chain;
+    lodash.chunk = chunk;
+    lodash.compact = compact;
+    lodash.constant = constant;
+    lodash.countBy = countBy;
+    lodash.create = create;
+    lodash.curry = curry;
+    lodash.curryRight = curryRight;
+    lodash.debounce = debounce;
+    lodash.defaults = defaults;
+    lodash.defer = defer;
+    lodash.delay = delay;
+    lodash.difference = difference;
+    lodash.drop = drop;
+    lodash.dropRight = dropRight;
+    lodash.dropRightWhile = dropRightWhile;
+    lodash.dropWhile = dropWhile;
+    lodash.fill = fill;
+    lodash.filter = filter;
+    lodash.flatten = flatten;
+    lodash.flattenDeep = flattenDeep;
+    lodash.flow = flow;
+    lodash.flowRight = flowRight;
+    lodash.forEach = forEach;
+    lodash.forEachRight = forEachRight;
+    lodash.forIn = forIn;
+    lodash.forInRight = forInRight;
+    lodash.forOwn = forOwn;
+    lodash.forOwnRight = forOwnRight;
+    lodash.functions = functions;
+    lodash.groupBy = groupBy;
+    lodash.indexBy = indexBy;
+    lodash.initial = initial;
+    lodash.intersection = intersection;
+    lodash.invert = invert;
+    lodash.invoke = invoke;
+    lodash.keys = keys;
+    lodash.keysIn = keysIn;
+    lodash.map = map;
+    lodash.mapValues = mapValues;
+    lodash.matches = matches;
+    lodash.matchesProperty = matchesProperty;
+    lodash.memoize = memoize;
+    lodash.merge = merge;
+    lodash.mixin = mixin;
+    lodash.negate = negate;
+    lodash.omit = omit;
+    lodash.once = once;
+    lodash.pairs = pairs;
+    lodash.partial = partial;
+    lodash.partialRight = partialRight;
+    lodash.partition = partition;
+    lodash.pick = pick;
+    lodash.pluck = pluck;
+    lodash.property = property;
+    lodash.propertyOf = propertyOf;
+    lodash.pull = pull;
+    lodash.pullAt = pullAt;
+    lodash.range = range;
+    lodash.rearg = rearg;
+    lodash.reject = reject;
+    lodash.remove = remove;
+    lodash.rest = rest;
+    lodash.shuffle = shuffle;
+    lodash.slice = slice;
+    lodash.sortBy = sortBy;
+    lodash.sortByAll = sortByAll;
+    lodash.spread = spread;
+    lodash.take = take;
+    lodash.takeRight = takeRight;
+    lodash.takeRightWhile = takeRightWhile;
+    lodash.takeWhile = takeWhile;
+    lodash.tap = tap;
+    lodash.throttle = throttle;
+    lodash.thru = thru;
+    lodash.times = times;
+    lodash.toArray = toArray;
+    lodash.toPlainObject = toPlainObject;
+    lodash.transform = transform;
+    lodash.union = union;
+    lodash.uniq = uniq;
+    lodash.unzip = unzip;
+    lodash.values = values;
+    lodash.valuesIn = valuesIn;
+    lodash.where = where;
+    lodash.without = without;
+    lodash.wrap = wrap;
+    lodash.xor = xor;
+    lodash.zip = zip;
+    lodash.zipObject = zipObject;
+
+    // Add aliases.
+    lodash.backflow = flowRight;
+    lodash.collect = map;
+    lodash.compose = flowRight;
+    lodash.each = forEach;
+    lodash.eachRight = forEachRight;
+    lodash.extend = assign;
+    lodash.iteratee = callback;
+    lodash.methods = functions;
+    lodash.object = zipObject;
+    lodash.select = filter;
+    lodash.tail = rest;
+    lodash.unique = uniq;
+
+    // Add functions to `lodash.prototype`.
+    mixin(lodash, lodash);
+
+    /*------------------------------------------------------------------------*/
+
+    // Add functions that return unwrapped values when chaining.
+    lodash.attempt = attempt;
+    lodash.camelCase = camelCase;
+    lodash.capitalize = capitalize;
+    lodash.clone = clone;
+    lodash.cloneDeep = cloneDeep;
+    lodash.deburr = deburr;
+    lodash.endsWith = endsWith;
+    lodash.escape = escape;
+    lodash.escapeRegExp = escapeRegExp;
+    lodash.every = every;
+    lodash.find = find;
+    lodash.findIndex = findIndex;
+    lodash.findKey = findKey;
+    lodash.findLast = findLast;
+    lodash.findLastIndex = findLastIndex;
+    lodash.findLastKey = findLastKey;
+    lodash.findWhere = findWhere;
+    lodash.first = first;
+    lodash.has = has;
+    lodash.identity = identity;
+    lodash.includes = includes;
+    lodash.indexOf = indexOf;
+    lodash.isArguments = isArguments;
+    lodash.isArray = isArray;
+    lodash.isBoolean = isBoolean;
+    lodash.isDate = isDate;
+    lodash.isElement = isElement;
+    lodash.isEmpty = isEmpty;
+    lodash.isEqual = isEqual;
+    lodash.isError = isError;
+    lodash.isFinite = isFinite;
+    lodash.isFunction = isFunction;
+    lodash.isMatch = isMatch;
+    lodash.isNaN = isNaN;
+    lodash.isNative = isNative;
+    lodash.isNull = isNull;
+    lodash.isNumber = isNumber;
+    lodash.isObject = isObject;
+    lodash.isPlainObject = isPlainObject;
+    lodash.isRegExp = isRegExp;
+    lodash.isString = isString;
+    lodash.isTypedArray = isTypedArray;
+    lodash.isUndefined = isUndefined;
+    lodash.kebabCase = kebabCase;
+    lodash.last = last;
+    lodash.lastIndexOf = lastIndexOf;
+    lodash.max = max;
+    lodash.min = min;
+    lodash.noConflict = noConflict;
+    lodash.noop = noop;
+    lodash.now = now;
+    lodash.pad = pad;
+    lodash.padLeft = padLeft;
+    lodash.padRight = padRight;
+    lodash.parseInt = parseInt;
+    lodash.random = random;
+    lodash.reduce = reduce;
+    lodash.reduceRight = reduceRight;
+    lodash.repeat = repeat;
+    lodash.result = result;
+    lodash.runInContext = runInContext;
+    lodash.size = size;
+    lodash.snakeCase = snakeCase;
+    lodash.some = some;
+    lodash.sortedIndex = sortedIndex;
+    lodash.sortedLastIndex = sortedLastIndex;
+    lodash.startCase = startCase;
+    lodash.startsWith = startsWith;
+    lodash.template = template;
+    lodash.trim = trim;
+    lodash.trimLeft = trimLeft;
+    lodash.trimRight = trimRight;
+    lodash.trunc = trunc;
+    lodash.unescape = unescape;
+    lodash.uniqueId = uniqueId;
+    lodash.words = words;
+
+    // Add aliases.
+    lodash.all = every;
+    lodash.any = some;
+    lodash.contains = includes;
+    lodash.detect = find;
+    lodash.foldl = reduce;
+    lodash.foldr = reduceRight;
+    lodash.head = first;
+    lodash.include = includes;
+    lodash.inject = reduce;
+
+    mixin(lodash, (function() {
+      var source = {};
+      baseForOwn(lodash, function(func, methodName) {
+        if (!lodash.prototype[methodName]) {
+          source[methodName] = func;
+        }
+      });
+      return source;
+    }()), false);
+
+    /*------------------------------------------------------------------------*/
+
+    // Add functions capable of returning wrapped and unwrapped values when chaining.
+    lodash.sample = sample;
+
+    lodash.prototype.sample = function(n) {
+      if (!this.__chain__ && n == null) {
+        return sample(this.value());
+      }
+      return this.thru(function(value) {
+        return sample(value, n);
+      });
+    };
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * The semantic version number.
+     *
+     * @static
+     * @memberOf _
+     * @type string
+     */
+    lodash.VERSION = VERSION;
+
+    // Assign default placeholders.
+    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {
+      lodash[methodName].placeholder = lodash;
+    });
+
+    // Add `LazyWrapper` methods that accept an `iteratee` value.
+    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
+      var isFilter = index == LAZY_FILTER_FLAG,
+          isWhile = index == LAZY_WHILE_FLAG;
+
+      LazyWrapper.prototype[methodName] = function(iteratee, thisArg) {
+        var result = this.clone(),
+            filtered = result.__filtered__,
+            iteratees = result.__iteratees__ || (result.__iteratees__ = []);
+
+        result.__filtered__ = filtered || isFilter || (isWhile && result.__dir__ < 0);
+        iteratees.push({ 'iteratee': getCallback(iteratee, thisArg, 3), 'type': index });
+        return result;
+      };
+    });
+
+    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
+    arrayEach(['drop', 'take'], function(methodName, index) {
+      var countName = '__' + methodName + 'Count__',
+          whileName = methodName + 'While';
+
+      LazyWrapper.prototype[methodName] = function(n) {
+        n = n == null ? 1 : nativeMax(floor(n) || 0, 0);
+
+        var result = this.clone();
+        if (result.__filtered__) {
+          var value = result[countName];
+          result[countName] = index ? nativeMin(value, n) : (value + n);
+        } else {
+          var views = result.__views__ || (result.__views__ = []);
+          views.push({ 'size': n, 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') });
+        }
+        return result;
+      };
+
+      LazyWrapper.prototype[methodName + 'Right'] = function(n) {
+        return this.reverse()[methodName](n).reverse();
+      };
+
+      LazyWrapper.prototype[methodName + 'RightWhile'] = function(predicate, thisArg) {
+        return this.reverse()[whileName](predicate, thisArg).reverse();
+      };
+    });
+
+    // Add `LazyWrapper` methods for `_.first` and `_.last`.
+    arrayEach(['first', 'last'], function(methodName, index) {
+      var takeName = 'take' + (index ? 'Right' : '');
+
+      LazyWrapper.prototype[methodName] = function() {
+        return this[takeName](1).value()[0];
+      };
+    });
+
+    // Add `LazyWrapper` methods for `_.initial` and `_.rest`.
+    arrayEach(['initial', 'rest'], function(methodName, index) {
+      var dropName = 'drop' + (index ? '' : 'Right');
+
+      LazyWrapper.prototype[methodName] = function() {
+        return this[dropName](1);
+      };
+    });
+
+    // Add `LazyWrapper` methods for `_.pluck` and `_.where`.
+    arrayEach(['pluck', 'where'], function(methodName, index) {
+      var operationName = index ? 'filter' : 'map',
+          createCallback = index ? baseMatches : baseProperty;
+
+      LazyWrapper.prototype[methodName] = function(value) {
+        return this[operationName](createCallback(value));
+      };
+    });
+
+    LazyWrapper.prototype.compact = function() {
+      return this.filter(identity);
+    };
+
+    LazyWrapper.prototype.dropWhile = function(iteratee, thisArg) {
+      var done;
+      iteratee = getCallback(iteratee, thisArg, 3);
+      return this.filter(function(value, index, array) {
+        return done || (done = !iteratee(value, index, array));
+      });
+    };
+
+    LazyWrapper.prototype.reject = function(iteratee, thisArg) {
+      iteratee = getCallback(iteratee, thisArg, 3);
+      return this.filter(function(value, index, array) {
+        return !iteratee(value, index, array);
+      });
+    };
+
+    LazyWrapper.prototype.slice = function(start, end) {
+      start = start == null ? 0 : (+start || 0);
+      var result = start < 0 ? this.takeRight(-start) : this.drop(start);
+
+      if (typeof end != 'undefined') {
+        end = (+end || 0);
+        result = end < 0 ? result.dropRight(-end) : result.take(end - start);
+      }
+      return result;
+    };
+
+    LazyWrapper.prototype.toArray = function() {
+      return this.drop(0);
+    };
+
+    // Add `LazyWrapper` methods to `lodash.prototype`.
+    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
+      var lodashFunc = lodash[methodName],
+          retUnwrapped = /^(?:first|last)$/.test(methodName);
+
+      lodash.prototype[methodName] = function() {
+        var value = this.__wrapped__,
+            args = arguments,
+            chainAll = this.__chain__,
+            isHybrid = !!this.__actions__.length,
+            isLazy = value instanceof LazyWrapper,
+            onlyLazy = isLazy && !isHybrid;
+
+        if (retUnwrapped && !chainAll) {
+          return onlyLazy
+            ? func.call(value)
+            : lodashFunc.call(lodash, this.value());
+        }
+        var interceptor = function(value) {
+          var otherArgs = [value];
+          push.apply(otherArgs, args);
+          return lodashFunc.apply(lodash, otherArgs);
+        };
+        if (isLazy || isArray(value)) {
+          var wrapper = onlyLazy ? value : new LazyWrapper(this),
+              result = func.apply(wrapper, args);
+
+          if (!retUnwrapped && (isHybrid || result.__actions__)) {
+            var actions = result.__actions__ || (result.__actions__ = []);
+            actions.push({ 'func': thru, 'args': [interceptor], 'thisArg': lodash });
+          }
+          return new LodashWrapper(result, chainAll);
+        }
+        return this.thru(interceptor);
+      };
+    });
+
+    // Add `Array.prototype` functions to `lodash.prototype`.
+    arrayEach(['concat', 'join', 'pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
+      var func = arrayProto[methodName],
+          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
+          retUnwrapped = /^(?:join|pop|shift)$/.test(methodName);
+
+      lodash.prototype[methodName] = function() {
+        var args = arguments;
+        if (retUnwrapped && !this.__chain__) {
+          return func.apply(this.value(), args);
+        }
+        return this[chainName](function(value) {
+          return func.apply(value, args);
+        });
+      };
+    });
+
+    // Add functions to the lazy wrapper.
+    LazyWrapper.prototype.clone = lazyClone;
+    LazyWrapper.prototype.reverse = lazyReverse;
+    LazyWrapper.prototype.value = lazyValue;
+
+    // Add chaining functions to the lodash wrapper.
+    lodash.prototype.chain = wrapperChain;
+    lodash.prototype.commit = wrapperCommit;
+    lodash.prototype.plant = wrapperPlant;
+    lodash.prototype.reverse = wrapperReverse;
+    lodash.prototype.toString = wrapperToString;
+    lodash.prototype.run = lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
+
+    // Add function aliases to the lodash wrapper.
+    lodash.prototype.collect = lodash.prototype.map;
+    lodash.prototype.head = lodash.prototype.first;
+    lodash.prototype.select = lodash.prototype.filter;
+    lodash.prototype.tail = lodash.prototype.rest;
+
+    return lodash;
+  }
+
+  /*--------------------------------------------------------------------------*/
+
+  // Export lodash.
+  var _ = runInContext();
+
+  // Some AMD build optimizers like r.js check for condition patterns like the following:
+  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
+    // Expose lodash to the global object when an AMD loader is present to avoid
+    // errors in cases where lodash is loaded by a script tag and not intended
+    // as an AMD module. See http://requirejs.org/docs/errors.html#mismatch for
+    // more details.
+    root._ = _;
+
+    // Define as an anonymous module so, through path mapping, it can be
+    // referenced as the "underscore" module.
+    define(function() {
+      return _;
+    });
+  }
+  // Check for `exports` after `define` in case a build optimizer adds an `exports` object.
+  else if (freeExports && freeModule) {
+    // Export for Node.js or RingoJS.
+    if (moduleExports) {
+      (freeModule.exports = _)._ = _;
+    }
+    // Export for Narwhal or Rhino -require.
+    else {
+      freeExports._ = _;
+    }
+  }
+  else {
+    // Export for a browser or Rhino.
+    root._ = _;
+  }
+}.call(this));
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],108:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -27235,7 +42005,7 @@ var AutoFocusMixin = {
 
 module.exports = AutoFocusMixin;
 
-},{"./focusNode":231}],108:[function(require,module,exports){
+},{"./focusNode":232}],109:[function(require,module,exports){
 /**
  * Copyright 2013 Facebook, Inc.
  * All rights reserved.
@@ -27457,7 +42227,7 @@ var BeforeInputEventPlugin = {
 
 module.exports = BeforeInputEventPlugin;
 
-},{"./EventConstants":122,"./EventPropagators":127,"./ExecutionEnvironment":128,"./SyntheticInputEvent":207,"./keyOf":253}],109:[function(require,module,exports){
+},{"./EventConstants":123,"./EventPropagators":128,"./ExecutionEnvironment":129,"./SyntheticInputEvent":208,"./keyOf":254}],110:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -27569,7 +42339,7 @@ var CSSCore = {
 module.exports = CSSCore;
 
 }).call(this,require('_process'))
-},{"./invariant":246,"_process":90}],110:[function(require,module,exports){
+},{"./invariant":247,"_process":91}],111:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -27688,7 +42458,7 @@ var CSSProperty = {
 
 module.exports = CSSProperty;
 
-},{}],111:[function(require,module,exports){
+},{}],112:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -27823,7 +42593,7 @@ var CSSPropertyOperations = {
 module.exports = CSSPropertyOperations;
 
 }).call(this,require('_process'))
-},{"./CSSProperty":110,"./ExecutionEnvironment":128,"./camelizeStyleName":218,"./dangerousStyleValue":225,"./hyphenateStyleName":244,"./memoizeStringOnly":255,"./warning":266,"_process":90}],112:[function(require,module,exports){
+},{"./CSSProperty":111,"./ExecutionEnvironment":129,"./camelizeStyleName":219,"./dangerousStyleValue":226,"./hyphenateStyleName":245,"./memoizeStringOnly":256,"./warning":267,"_process":91}],113:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -27923,7 +42693,7 @@ PooledClass.addPoolingTo(CallbackQueue);
 module.exports = CallbackQueue;
 
 }).call(this,require('_process'))
-},{"./Object.assign":134,"./PooledClass":135,"./invariant":246,"_process":90}],113:[function(require,module,exports){
+},{"./Object.assign":135,"./PooledClass":136,"./invariant":247,"_process":91}],114:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -28305,7 +43075,7 @@ var ChangeEventPlugin = {
 
 module.exports = ChangeEventPlugin;
 
-},{"./EventConstants":122,"./EventPluginHub":124,"./EventPropagators":127,"./ExecutionEnvironment":128,"./ReactUpdates":196,"./SyntheticEvent":205,"./isEventSupported":247,"./isTextInputElement":249,"./keyOf":253}],114:[function(require,module,exports){
+},{"./EventConstants":123,"./EventPluginHub":125,"./EventPropagators":128,"./ExecutionEnvironment":129,"./ReactUpdates":197,"./SyntheticEvent":206,"./isEventSupported":248,"./isTextInputElement":250,"./keyOf":254}],115:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -28330,7 +43100,7 @@ var ClientReactRootIndex = {
 
 module.exports = ClientReactRootIndex;
 
-},{}],115:[function(require,module,exports){
+},{}],116:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -28589,7 +43359,7 @@ var CompositionEventPlugin = {
 
 module.exports = CompositionEventPlugin;
 
-},{"./EventConstants":122,"./EventPropagators":127,"./ExecutionEnvironment":128,"./ReactInputSelection":170,"./SyntheticCompositionEvent":203,"./getTextContentAccessor":241,"./keyOf":253}],116:[function(require,module,exports){
+},{"./EventConstants":123,"./EventPropagators":128,"./ExecutionEnvironment":129,"./ReactInputSelection":171,"./SyntheticCompositionEvent":204,"./getTextContentAccessor":242,"./keyOf":254}],117:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -28764,7 +43534,7 @@ var DOMChildrenOperations = {
 module.exports = DOMChildrenOperations;
 
 }).call(this,require('_process'))
-},{"./Danger":119,"./ReactMultiChildUpdateTypes":177,"./getTextContentAccessor":241,"./invariant":246,"_process":90}],117:[function(require,module,exports){
+},{"./Danger":120,"./ReactMultiChildUpdateTypes":178,"./getTextContentAccessor":242,"./invariant":247,"_process":91}],118:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -29063,7 +43833,7 @@ var DOMProperty = {
 module.exports = DOMProperty;
 
 }).call(this,require('_process'))
-},{"./invariant":246,"_process":90}],118:[function(require,module,exports){
+},{"./invariant":247,"_process":91}],119:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -29260,7 +44030,7 @@ var DOMPropertyOperations = {
 module.exports = DOMPropertyOperations;
 
 }).call(this,require('_process'))
-},{"./DOMProperty":117,"./escapeTextForBrowser":229,"./memoizeStringOnly":255,"./warning":266,"_process":90}],119:[function(require,module,exports){
+},{"./DOMProperty":118,"./escapeTextForBrowser":230,"./memoizeStringOnly":256,"./warning":267,"_process":91}],120:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -29446,7 +44216,7 @@ var Danger = {
 module.exports = Danger;
 
 }).call(this,require('_process'))
-},{"./ExecutionEnvironment":128,"./createNodesFromMarkup":223,"./emptyFunction":227,"./getMarkupWrap":238,"./invariant":246,"_process":90}],120:[function(require,module,exports){
+},{"./ExecutionEnvironment":129,"./createNodesFromMarkup":224,"./emptyFunction":228,"./getMarkupWrap":239,"./invariant":247,"_process":91}],121:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -29486,7 +44256,7 @@ var DefaultEventPluginOrder = [
 
 module.exports = DefaultEventPluginOrder;
 
-},{"./keyOf":253}],121:[function(require,module,exports){
+},{"./keyOf":254}],122:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -29626,7 +44396,7 @@ var EnterLeaveEventPlugin = {
 
 module.exports = EnterLeaveEventPlugin;
 
-},{"./EventConstants":122,"./EventPropagators":127,"./ReactMount":175,"./SyntheticMouseEvent":209,"./keyOf":253}],122:[function(require,module,exports){
+},{"./EventConstants":123,"./EventPropagators":128,"./ReactMount":176,"./SyntheticMouseEvent":210,"./keyOf":254}],123:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -29698,7 +44468,7 @@ var EventConstants = {
 
 module.exports = EventConstants;
 
-},{"./keyMirror":252}],123:[function(require,module,exports){
+},{"./keyMirror":253}],124:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014 Facebook, Inc.
@@ -29788,7 +44558,7 @@ var EventListener = {
 module.exports = EventListener;
 
 }).call(this,require('_process'))
-},{"./emptyFunction":227,"_process":90}],124:[function(require,module,exports){
+},{"./emptyFunction":228,"_process":91}],125:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -30064,7 +44834,7 @@ var EventPluginHub = {
 module.exports = EventPluginHub;
 
 }).call(this,require('_process'))
-},{"./EventPluginRegistry":125,"./EventPluginUtils":126,"./accumulateInto":215,"./forEachAccumulated":232,"./invariant":246,"_process":90}],125:[function(require,module,exports){
+},{"./EventPluginRegistry":126,"./EventPluginUtils":127,"./accumulateInto":216,"./forEachAccumulated":233,"./invariant":247,"_process":91}],126:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -30344,7 +45114,7 @@ var EventPluginRegistry = {
 module.exports = EventPluginRegistry;
 
 }).call(this,require('_process'))
-},{"./invariant":246,"_process":90}],126:[function(require,module,exports){
+},{"./invariant":247,"_process":91}],127:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -30565,7 +45335,7 @@ var EventPluginUtils = {
 module.exports = EventPluginUtils;
 
 }).call(this,require('_process'))
-},{"./EventConstants":122,"./invariant":246,"_process":90}],127:[function(require,module,exports){
+},{"./EventConstants":123,"./invariant":247,"_process":91}],128:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -30707,7 +45477,7 @@ var EventPropagators = {
 module.exports = EventPropagators;
 
 }).call(this,require('_process'))
-},{"./EventConstants":122,"./EventPluginHub":124,"./accumulateInto":215,"./forEachAccumulated":232,"_process":90}],128:[function(require,module,exports){
+},{"./EventConstants":123,"./EventPluginHub":125,"./accumulateInto":216,"./forEachAccumulated":233,"_process":91}],129:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -30752,7 +45522,7 @@ var ExecutionEnvironment = {
 
 module.exports = ExecutionEnvironment;
 
-},{}],129:[function(require,module,exports){
+},{}],130:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -30944,7 +45714,7 @@ var HTMLDOMPropertyConfig = {
 
 module.exports = HTMLDOMPropertyConfig;
 
-},{"./DOMProperty":117,"./ExecutionEnvironment":128}],130:[function(require,module,exports){
+},{"./DOMProperty":118,"./ExecutionEnvironment":129}],131:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -30985,7 +45755,7 @@ var LinkedStateMixin = {
 
 module.exports = LinkedStateMixin;
 
-},{"./ReactLink":173,"./ReactStateSetters":190}],131:[function(require,module,exports){
+},{"./ReactLink":174,"./ReactStateSetters":191}],132:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -31141,7 +45911,7 @@ var LinkedValueUtils = {
 module.exports = LinkedValueUtils;
 
 }).call(this,require('_process'))
-},{"./ReactPropTypes":184,"./invariant":246,"_process":90}],132:[function(require,module,exports){
+},{"./ReactPropTypes":185,"./invariant":247,"_process":91}],133:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2014, Facebook, Inc.
@@ -31191,7 +45961,7 @@ var LocalEventTrapMixin = {
 module.exports = LocalEventTrapMixin;
 
 }).call(this,require('_process'))
-},{"./ReactBrowserEventEmitter":138,"./accumulateInto":215,"./forEachAccumulated":232,"./invariant":246,"_process":90}],133:[function(require,module,exports){
+},{"./ReactBrowserEventEmitter":139,"./accumulateInto":216,"./forEachAccumulated":233,"./invariant":247,"_process":91}],134:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -31249,7 +46019,7 @@ var MobileSafariClickEventPlugin = {
 
 module.exports = MobileSafariClickEventPlugin;
 
-},{"./EventConstants":122,"./emptyFunction":227}],134:[function(require,module,exports){
+},{"./EventConstants":123,"./emptyFunction":228}],135:[function(require,module,exports){
 /**
  * Copyright 2014, Facebook, Inc.
  * All rights reserved.
@@ -31296,7 +46066,7 @@ function assign(target, sources) {
 
 module.exports = assign;
 
-},{}],135:[function(require,module,exports){
+},{}],136:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -31412,7 +46182,7 @@ var PooledClass = {
 module.exports = PooledClass;
 
 }).call(this,require('_process'))
-},{"./invariant":246,"_process":90}],136:[function(require,module,exports){
+},{"./invariant":247,"_process":91}],137:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -31600,7 +46370,7 @@ React.version = '0.12.2';
 module.exports = React;
 
 }).call(this,require('_process'))
-},{"./DOMPropertyOperations":118,"./EventPluginUtils":126,"./ExecutionEnvironment":128,"./Object.assign":134,"./ReactChildren":141,"./ReactComponent":142,"./ReactCompositeComponent":145,"./ReactContext":146,"./ReactCurrentOwner":147,"./ReactDOM":148,"./ReactDOMComponent":150,"./ReactDefaultInjection":160,"./ReactElement":163,"./ReactElementValidator":164,"./ReactInstanceHandles":171,"./ReactLegacyElement":172,"./ReactMount":175,"./ReactMultiChild":176,"./ReactPerf":180,"./ReactPropTypes":184,"./ReactServerRendering":188,"./ReactTextComponent":192,"./deprecated":226,"./onlyChild":257,"_process":90}],137:[function(require,module,exports){
+},{"./DOMPropertyOperations":119,"./EventPluginUtils":127,"./ExecutionEnvironment":129,"./Object.assign":135,"./ReactChildren":142,"./ReactComponent":143,"./ReactCompositeComponent":146,"./ReactContext":147,"./ReactCurrentOwner":148,"./ReactDOM":149,"./ReactDOMComponent":151,"./ReactDefaultInjection":161,"./ReactElement":164,"./ReactElementValidator":165,"./ReactInstanceHandles":172,"./ReactLegacyElement":173,"./ReactMount":176,"./ReactMultiChild":177,"./ReactPerf":181,"./ReactPropTypes":185,"./ReactServerRendering":189,"./ReactTextComponent":193,"./deprecated":227,"./onlyChild":258,"_process":91}],138:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -31643,7 +46413,7 @@ var ReactBrowserComponentMixin = {
 module.exports = ReactBrowserComponentMixin;
 
 }).call(this,require('_process'))
-},{"./ReactEmptyComponent":165,"./ReactMount":175,"./invariant":246,"_process":90}],138:[function(require,module,exports){
+},{"./ReactEmptyComponent":166,"./ReactMount":176,"./invariant":247,"_process":91}],139:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -31998,7 +46768,7 @@ var ReactBrowserEventEmitter = assign({}, ReactEventEmitterMixin, {
 
 module.exports = ReactBrowserEventEmitter;
 
-},{"./EventConstants":122,"./EventPluginHub":124,"./EventPluginRegistry":125,"./Object.assign":134,"./ReactEventEmitterMixin":167,"./ViewportMetrics":214,"./isEventSupported":247}],139:[function(require,module,exports){
+},{"./EventConstants":123,"./EventPluginHub":125,"./EventPluginRegistry":126,"./Object.assign":135,"./ReactEventEmitterMixin":168,"./ViewportMetrics":215,"./isEventSupported":248}],140:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -32065,7 +46835,7 @@ var ReactCSSTransitionGroup = React.createClass({
 
 module.exports = ReactCSSTransitionGroup;
 
-},{"./Object.assign":134,"./React":136,"./ReactCSSTransitionGroupChild":140,"./ReactTransitionGroup":195}],140:[function(require,module,exports){
+},{"./Object.assign":135,"./React":137,"./ReactCSSTransitionGroupChild":141,"./ReactTransitionGroup":196}],141:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -32200,7 +46970,7 @@ var ReactCSSTransitionGroupChild = React.createClass({
 module.exports = ReactCSSTransitionGroupChild;
 
 }).call(this,require('_process'))
-},{"./CSSCore":109,"./React":136,"./ReactTransitionEvents":194,"./onlyChild":257,"_process":90}],141:[function(require,module,exports){
+},{"./CSSCore":110,"./React":137,"./ReactTransitionEvents":195,"./onlyChild":258,"_process":91}],142:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -32350,7 +47120,7 @@ var ReactChildren = {
 module.exports = ReactChildren;
 
 }).call(this,require('_process'))
-},{"./PooledClass":135,"./traverseAllChildren":264,"./warning":266,"_process":90}],142:[function(require,module,exports){
+},{"./PooledClass":136,"./traverseAllChildren":265,"./warning":267,"_process":91}],143:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -32793,7 +47563,7 @@ var ReactComponent = {
 module.exports = ReactComponent;
 
 }).call(this,require('_process'))
-},{"./Object.assign":134,"./ReactElement":163,"./ReactOwner":179,"./ReactUpdates":196,"./invariant":246,"./keyMirror":252,"_process":90}],143:[function(require,module,exports){
+},{"./Object.assign":135,"./ReactElement":164,"./ReactOwner":180,"./ReactUpdates":197,"./invariant":247,"./keyMirror":253,"_process":91}],144:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -32915,7 +47685,7 @@ var ReactComponentBrowserEnvironment = {
 module.exports = ReactComponentBrowserEnvironment;
 
 }).call(this,require('_process'))
-},{"./ReactDOMIDOperations":152,"./ReactMarkupChecksum":174,"./ReactMount":175,"./ReactPerf":180,"./ReactReconcileTransaction":186,"./getReactRootElementInContainer":240,"./invariant":246,"./setInnerHTML":260,"_process":90}],144:[function(require,module,exports){
+},{"./ReactDOMIDOperations":153,"./ReactMarkupChecksum":175,"./ReactMount":176,"./ReactPerf":181,"./ReactReconcileTransaction":187,"./getReactRootElementInContainer":241,"./invariant":247,"./setInnerHTML":261,"_process":91}],145:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -32964,7 +47734,7 @@ var ReactComponentWithPureRenderMixin = {
 
 module.exports = ReactComponentWithPureRenderMixin;
 
-},{"./shallowEqual":261}],145:[function(require,module,exports){
+},{"./shallowEqual":262}],146:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -34404,7 +49174,7 @@ var ReactCompositeComponent = {
 module.exports = ReactCompositeComponent;
 
 }).call(this,require('_process'))
-},{"./Object.assign":134,"./ReactComponent":142,"./ReactContext":146,"./ReactCurrentOwner":147,"./ReactElement":163,"./ReactElementValidator":164,"./ReactEmptyComponent":165,"./ReactErrorUtils":166,"./ReactLegacyElement":172,"./ReactOwner":179,"./ReactPerf":180,"./ReactPropTransferer":181,"./ReactPropTypeLocationNames":182,"./ReactPropTypeLocations":183,"./ReactUpdates":196,"./instantiateReactComponent":245,"./invariant":246,"./keyMirror":252,"./keyOf":253,"./mapObject":254,"./monitorCodeUse":256,"./shouldUpdateReactComponent":262,"./warning":266,"_process":90}],146:[function(require,module,exports){
+},{"./Object.assign":135,"./ReactComponent":143,"./ReactContext":147,"./ReactCurrentOwner":148,"./ReactElement":164,"./ReactElementValidator":165,"./ReactEmptyComponent":166,"./ReactErrorUtils":167,"./ReactLegacyElement":173,"./ReactOwner":180,"./ReactPerf":181,"./ReactPropTransferer":182,"./ReactPropTypeLocationNames":183,"./ReactPropTypeLocations":184,"./ReactUpdates":197,"./instantiateReactComponent":246,"./invariant":247,"./keyMirror":253,"./keyOf":254,"./mapObject":255,"./monitorCodeUse":257,"./shouldUpdateReactComponent":263,"./warning":267,"_process":91}],147:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -34466,7 +49236,7 @@ var ReactContext = {
 
 module.exports = ReactContext;
 
-},{"./Object.assign":134}],147:[function(require,module,exports){
+},{"./Object.assign":135}],148:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -34500,7 +49270,7 @@ var ReactCurrentOwner = {
 
 module.exports = ReactCurrentOwner;
 
-},{}],148:[function(require,module,exports){
+},{}],149:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -34683,7 +49453,7 @@ var ReactDOM = mapObject({
 module.exports = ReactDOM;
 
 }).call(this,require('_process'))
-},{"./ReactElement":163,"./ReactElementValidator":164,"./ReactLegacyElement":172,"./mapObject":254,"_process":90}],149:[function(require,module,exports){
+},{"./ReactElement":164,"./ReactElementValidator":165,"./ReactLegacyElement":173,"./mapObject":255,"_process":91}],150:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -34748,7 +49518,7 @@ var ReactDOMButton = ReactCompositeComponent.createClass({
 
 module.exports = ReactDOMButton;
 
-},{"./AutoFocusMixin":107,"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163,"./keyMirror":252}],150:[function(require,module,exports){
+},{"./AutoFocusMixin":108,"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164,"./keyMirror":253}],151:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -35235,7 +50005,7 @@ assign(
 module.exports = ReactDOMComponent;
 
 }).call(this,require('_process'))
-},{"./CSSPropertyOperations":111,"./DOMProperty":117,"./DOMPropertyOperations":118,"./Object.assign":134,"./ReactBrowserComponentMixin":137,"./ReactBrowserEventEmitter":138,"./ReactComponent":142,"./ReactMount":175,"./ReactMultiChild":176,"./ReactPerf":180,"./escapeTextForBrowser":229,"./invariant":246,"./isEventSupported":247,"./keyOf":253,"./monitorCodeUse":256,"_process":90}],151:[function(require,module,exports){
+},{"./CSSPropertyOperations":112,"./DOMProperty":118,"./DOMPropertyOperations":119,"./Object.assign":135,"./ReactBrowserComponentMixin":138,"./ReactBrowserEventEmitter":139,"./ReactComponent":143,"./ReactMount":176,"./ReactMultiChild":177,"./ReactPerf":181,"./escapeTextForBrowser":230,"./invariant":247,"./isEventSupported":248,"./keyOf":254,"./monitorCodeUse":257,"_process":91}],152:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -35285,7 +50055,7 @@ var ReactDOMForm = ReactCompositeComponent.createClass({
 
 module.exports = ReactDOMForm;
 
-},{"./EventConstants":122,"./LocalEventTrapMixin":132,"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163}],152:[function(require,module,exports){
+},{"./EventConstants":123,"./LocalEventTrapMixin":133,"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164}],153:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -35471,7 +50241,7 @@ var ReactDOMIDOperations = {
 module.exports = ReactDOMIDOperations;
 
 }).call(this,require('_process'))
-},{"./CSSPropertyOperations":111,"./DOMChildrenOperations":116,"./DOMPropertyOperations":118,"./ReactMount":175,"./ReactPerf":180,"./invariant":246,"./setInnerHTML":260,"_process":90}],153:[function(require,module,exports){
+},{"./CSSPropertyOperations":112,"./DOMChildrenOperations":117,"./DOMPropertyOperations":119,"./ReactMount":176,"./ReactPerf":181,"./invariant":247,"./setInnerHTML":261,"_process":91}],154:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -35519,7 +50289,7 @@ var ReactDOMImg = ReactCompositeComponent.createClass({
 
 module.exports = ReactDOMImg;
 
-},{"./EventConstants":122,"./LocalEventTrapMixin":132,"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163}],154:[function(require,module,exports){
+},{"./EventConstants":123,"./LocalEventTrapMixin":133,"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164}],155:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -35697,7 +50467,7 @@ var ReactDOMInput = ReactCompositeComponent.createClass({
 module.exports = ReactDOMInput;
 
 }).call(this,require('_process'))
-},{"./AutoFocusMixin":107,"./DOMPropertyOperations":118,"./LinkedValueUtils":131,"./Object.assign":134,"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163,"./ReactMount":175,"./ReactUpdates":196,"./invariant":246,"_process":90}],155:[function(require,module,exports){
+},{"./AutoFocusMixin":108,"./DOMPropertyOperations":119,"./LinkedValueUtils":132,"./Object.assign":135,"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164,"./ReactMount":176,"./ReactUpdates":197,"./invariant":247,"_process":91}],156:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -35750,7 +50520,7 @@ var ReactDOMOption = ReactCompositeComponent.createClass({
 module.exports = ReactDOMOption;
 
 }).call(this,require('_process'))
-},{"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163,"./warning":266,"_process":90}],156:[function(require,module,exports){
+},{"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164,"./warning":267,"_process":91}],157:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -35934,7 +50704,7 @@ var ReactDOMSelect = ReactCompositeComponent.createClass({
 
 module.exports = ReactDOMSelect;
 
-},{"./AutoFocusMixin":107,"./LinkedValueUtils":131,"./Object.assign":134,"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163,"./ReactUpdates":196}],157:[function(require,module,exports){
+},{"./AutoFocusMixin":108,"./LinkedValueUtils":132,"./Object.assign":135,"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164,"./ReactUpdates":197}],158:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -36143,7 +50913,7 @@ var ReactDOMSelection = {
 
 module.exports = ReactDOMSelection;
 
-},{"./ExecutionEnvironment":128,"./getNodeForCharacterOffset":239,"./getTextContentAccessor":241}],158:[function(require,module,exports){
+},{"./ExecutionEnvironment":129,"./getNodeForCharacterOffset":240,"./getTextContentAccessor":242}],159:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -36284,7 +51054,7 @@ var ReactDOMTextarea = ReactCompositeComponent.createClass({
 module.exports = ReactDOMTextarea;
 
 }).call(this,require('_process'))
-},{"./AutoFocusMixin":107,"./DOMPropertyOperations":118,"./LinkedValueUtils":131,"./Object.assign":134,"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163,"./ReactUpdates":196,"./invariant":246,"./warning":266,"_process":90}],159:[function(require,module,exports){
+},{"./AutoFocusMixin":108,"./DOMPropertyOperations":119,"./LinkedValueUtils":132,"./Object.assign":135,"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164,"./ReactUpdates":197,"./invariant":247,"./warning":267,"_process":91}],160:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -36357,7 +51127,7 @@ var ReactDefaultBatchingStrategy = {
 
 module.exports = ReactDefaultBatchingStrategy;
 
-},{"./Object.assign":134,"./ReactUpdates":196,"./Transaction":213,"./emptyFunction":227}],160:[function(require,module,exports){
+},{"./Object.assign":135,"./ReactUpdates":197,"./Transaction":214,"./emptyFunction":228}],161:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -36486,7 +51256,7 @@ module.exports = {
 };
 
 }).call(this,require('_process'))
-},{"./BeforeInputEventPlugin":108,"./ChangeEventPlugin":113,"./ClientReactRootIndex":114,"./CompositionEventPlugin":115,"./DefaultEventPluginOrder":120,"./EnterLeaveEventPlugin":121,"./ExecutionEnvironment":128,"./HTMLDOMPropertyConfig":129,"./MobileSafariClickEventPlugin":133,"./ReactBrowserComponentMixin":137,"./ReactComponentBrowserEnvironment":143,"./ReactDOMButton":149,"./ReactDOMComponent":150,"./ReactDOMForm":151,"./ReactDOMImg":153,"./ReactDOMInput":154,"./ReactDOMOption":155,"./ReactDOMSelect":156,"./ReactDOMTextarea":158,"./ReactDefaultBatchingStrategy":159,"./ReactDefaultPerf":161,"./ReactEventListener":168,"./ReactInjection":169,"./ReactInstanceHandles":171,"./ReactMount":175,"./SVGDOMPropertyConfig":198,"./SelectEventPlugin":199,"./ServerReactRootIndex":200,"./SimpleEventPlugin":201,"./createFullPageComponent":222,"_process":90}],161:[function(require,module,exports){
+},{"./BeforeInputEventPlugin":109,"./ChangeEventPlugin":114,"./ClientReactRootIndex":115,"./CompositionEventPlugin":116,"./DefaultEventPluginOrder":121,"./EnterLeaveEventPlugin":122,"./ExecutionEnvironment":129,"./HTMLDOMPropertyConfig":130,"./MobileSafariClickEventPlugin":134,"./ReactBrowserComponentMixin":138,"./ReactComponentBrowserEnvironment":144,"./ReactDOMButton":150,"./ReactDOMComponent":151,"./ReactDOMForm":152,"./ReactDOMImg":154,"./ReactDOMInput":155,"./ReactDOMOption":156,"./ReactDOMSelect":157,"./ReactDOMTextarea":159,"./ReactDefaultBatchingStrategy":160,"./ReactDefaultPerf":162,"./ReactEventListener":169,"./ReactInjection":170,"./ReactInstanceHandles":172,"./ReactMount":176,"./SVGDOMPropertyConfig":199,"./SelectEventPlugin":200,"./ServerReactRootIndex":201,"./SimpleEventPlugin":202,"./createFullPageComponent":223,"_process":91}],162:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -36746,7 +51516,7 @@ var ReactDefaultPerf = {
 
 module.exports = ReactDefaultPerf;
 
-},{"./DOMProperty":117,"./ReactDefaultPerfAnalysis":162,"./ReactMount":175,"./ReactPerf":180,"./performanceNow":259}],162:[function(require,module,exports){
+},{"./DOMProperty":118,"./ReactDefaultPerfAnalysis":163,"./ReactMount":176,"./ReactPerf":181,"./performanceNow":260}],163:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -36952,7 +51722,7 @@ var ReactDefaultPerfAnalysis = {
 
 module.exports = ReactDefaultPerfAnalysis;
 
-},{"./Object.assign":134}],163:[function(require,module,exports){
+},{"./Object.assign":135}],164:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2014, Facebook, Inc.
@@ -37198,7 +51968,7 @@ ReactElement.isValidElement = function(object) {
 module.exports = ReactElement;
 
 }).call(this,require('_process'))
-},{"./ReactContext":146,"./ReactCurrentOwner":147,"./warning":266,"_process":90}],164:[function(require,module,exports){
+},{"./ReactContext":147,"./ReactCurrentOwner":148,"./warning":267,"_process":91}],165:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2014, Facebook, Inc.
@@ -37480,7 +52250,7 @@ var ReactElementValidator = {
 module.exports = ReactElementValidator;
 
 }).call(this,require('_process'))
-},{"./ReactCurrentOwner":147,"./ReactElement":163,"./ReactPropTypeLocations":183,"./monitorCodeUse":256,"./warning":266,"_process":90}],165:[function(require,module,exports){
+},{"./ReactCurrentOwner":148,"./ReactElement":164,"./ReactPropTypeLocations":184,"./monitorCodeUse":257,"./warning":267,"_process":91}],166:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2014, Facebook, Inc.
@@ -37557,7 +52327,7 @@ var ReactEmptyComponent = {
 module.exports = ReactEmptyComponent;
 
 }).call(this,require('_process'))
-},{"./ReactElement":163,"./invariant":246,"_process":90}],166:[function(require,module,exports){
+},{"./ReactElement":164,"./invariant":247,"_process":91}],167:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -37589,7 +52359,7 @@ var ReactErrorUtils = {
 
 module.exports = ReactErrorUtils;
 
-},{}],167:[function(require,module,exports){
+},{}],168:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -37639,7 +52409,7 @@ var ReactEventEmitterMixin = {
 
 module.exports = ReactEventEmitterMixin;
 
-},{"./EventPluginHub":124}],168:[function(require,module,exports){
+},{"./EventPluginHub":125}],169:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -37823,7 +52593,7 @@ var ReactEventListener = {
 
 module.exports = ReactEventListener;
 
-},{"./EventListener":123,"./ExecutionEnvironment":128,"./Object.assign":134,"./PooledClass":135,"./ReactInstanceHandles":171,"./ReactMount":175,"./ReactUpdates":196,"./getEventTarget":237,"./getUnboundedScrollPosition":242}],169:[function(require,module,exports){
+},{"./EventListener":124,"./ExecutionEnvironment":129,"./Object.assign":135,"./PooledClass":136,"./ReactInstanceHandles":172,"./ReactMount":176,"./ReactUpdates":197,"./getEventTarget":238,"./getUnboundedScrollPosition":243}],170:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -37863,7 +52633,7 @@ var ReactInjection = {
 
 module.exports = ReactInjection;
 
-},{"./DOMProperty":117,"./EventPluginHub":124,"./ReactBrowserEventEmitter":138,"./ReactComponent":142,"./ReactCompositeComponent":145,"./ReactEmptyComponent":165,"./ReactNativeComponent":178,"./ReactPerf":180,"./ReactRootIndex":187,"./ReactUpdates":196}],170:[function(require,module,exports){
+},{"./DOMProperty":118,"./EventPluginHub":125,"./ReactBrowserEventEmitter":139,"./ReactComponent":143,"./ReactCompositeComponent":146,"./ReactEmptyComponent":166,"./ReactNativeComponent":179,"./ReactPerf":181,"./ReactRootIndex":188,"./ReactUpdates":197}],171:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -37999,7 +52769,7 @@ var ReactInputSelection = {
 
 module.exports = ReactInputSelection;
 
-},{"./ReactDOMSelection":157,"./containsNode":220,"./focusNode":231,"./getActiveElement":233}],171:[function(require,module,exports){
+},{"./ReactDOMSelection":158,"./containsNode":221,"./focusNode":232,"./getActiveElement":234}],172:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -38334,7 +53104,7 @@ var ReactInstanceHandles = {
 module.exports = ReactInstanceHandles;
 
 }).call(this,require('_process'))
-},{"./ReactRootIndex":187,"./invariant":246,"_process":90}],172:[function(require,module,exports){
+},{"./ReactRootIndex":188,"./invariant":247,"_process":91}],173:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2014, Facebook, Inc.
@@ -38581,7 +53351,7 @@ ReactLegacyElementFactory._isLegacyCallWarningEnabled = true;
 module.exports = ReactLegacyElementFactory;
 
 }).call(this,require('_process'))
-},{"./ReactCurrentOwner":147,"./invariant":246,"./monitorCodeUse":256,"./warning":266,"_process":90}],173:[function(require,module,exports){
+},{"./ReactCurrentOwner":148,"./invariant":247,"./monitorCodeUse":257,"./warning":267,"_process":91}],174:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -38654,7 +53424,7 @@ ReactLink.PropTypes = {
 
 module.exports = ReactLink;
 
-},{"./React":136}],174:[function(require,module,exports){
+},{"./React":137}],175:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -38702,7 +53472,7 @@ var ReactMarkupChecksum = {
 
 module.exports = ReactMarkupChecksum;
 
-},{"./adler32":216}],175:[function(require,module,exports){
+},{"./adler32":217}],176:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -39400,7 +54170,7 @@ ReactMount.renderComponent = deprecated(
 module.exports = ReactMount;
 
 }).call(this,require('_process'))
-},{"./DOMProperty":117,"./ReactBrowserEventEmitter":138,"./ReactCurrentOwner":147,"./ReactElement":163,"./ReactInstanceHandles":171,"./ReactLegacyElement":172,"./ReactPerf":180,"./containsNode":220,"./deprecated":226,"./getReactRootElementInContainer":240,"./instantiateReactComponent":245,"./invariant":246,"./shouldUpdateReactComponent":262,"./warning":266,"_process":90}],176:[function(require,module,exports){
+},{"./DOMProperty":118,"./ReactBrowserEventEmitter":139,"./ReactCurrentOwner":148,"./ReactElement":164,"./ReactInstanceHandles":172,"./ReactLegacyElement":173,"./ReactPerf":181,"./containsNode":221,"./deprecated":227,"./getReactRootElementInContainer":241,"./instantiateReactComponent":246,"./invariant":247,"./shouldUpdateReactComponent":263,"./warning":267,"_process":91}],177:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -39828,7 +54598,7 @@ var ReactMultiChild = {
 
 module.exports = ReactMultiChild;
 
-},{"./ReactComponent":142,"./ReactMultiChildUpdateTypes":177,"./flattenChildren":230,"./instantiateReactComponent":245,"./shouldUpdateReactComponent":262}],177:[function(require,module,exports){
+},{"./ReactComponent":143,"./ReactMultiChildUpdateTypes":178,"./flattenChildren":231,"./instantiateReactComponent":246,"./shouldUpdateReactComponent":263}],178:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -39861,7 +54631,7 @@ var ReactMultiChildUpdateTypes = keyMirror({
 
 module.exports = ReactMultiChildUpdateTypes;
 
-},{"./keyMirror":252}],178:[function(require,module,exports){
+},{"./keyMirror":253}],179:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2014, Facebook, Inc.
@@ -39934,7 +54704,7 @@ var ReactNativeComponent = {
 module.exports = ReactNativeComponent;
 
 }).call(this,require('_process'))
-},{"./Object.assign":134,"./invariant":246,"_process":90}],179:[function(require,module,exports){
+},{"./Object.assign":135,"./invariant":247,"_process":91}],180:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -40090,7 +54860,7 @@ var ReactOwner = {
 module.exports = ReactOwner;
 
 }).call(this,require('_process'))
-},{"./emptyObject":228,"./invariant":246,"_process":90}],180:[function(require,module,exports){
+},{"./emptyObject":229,"./invariant":247,"_process":91}],181:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -40174,7 +54944,7 @@ function _noMeasure(objName, fnName, func) {
 module.exports = ReactPerf;
 
 }).call(this,require('_process'))
-},{"_process":90}],181:[function(require,module,exports){
+},{"_process":91}],182:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -40341,7 +55111,7 @@ var ReactPropTransferer = {
 module.exports = ReactPropTransferer;
 
 }).call(this,require('_process'))
-},{"./Object.assign":134,"./emptyFunction":227,"./invariant":246,"./joinClasses":251,"./warning":266,"_process":90}],182:[function(require,module,exports){
+},{"./Object.assign":135,"./emptyFunction":228,"./invariant":247,"./joinClasses":252,"./warning":267,"_process":91}],183:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -40369,7 +55139,7 @@ if ("production" !== process.env.NODE_ENV) {
 module.exports = ReactPropTypeLocationNames;
 
 }).call(this,require('_process'))
-},{"_process":90}],183:[function(require,module,exports){
+},{"_process":91}],184:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -40393,7 +55163,7 @@ var ReactPropTypeLocations = keyMirror({
 
 module.exports = ReactPropTypeLocations;
 
-},{"./keyMirror":252}],184:[function(require,module,exports){
+},{"./keyMirror":253}],185:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -40747,7 +55517,7 @@ function getPreciseType(propValue) {
 
 module.exports = ReactPropTypes;
 
-},{"./ReactElement":163,"./ReactPropTypeLocationNames":182,"./deprecated":226,"./emptyFunction":227}],185:[function(require,module,exports){
+},{"./ReactElement":164,"./ReactPropTypeLocationNames":183,"./deprecated":227,"./emptyFunction":228}],186:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -40803,7 +55573,7 @@ PooledClass.addPoolingTo(ReactPutListenerQueue);
 
 module.exports = ReactPutListenerQueue;
 
-},{"./Object.assign":134,"./PooledClass":135,"./ReactBrowserEventEmitter":138}],186:[function(require,module,exports){
+},{"./Object.assign":135,"./PooledClass":136,"./ReactBrowserEventEmitter":139}],187:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -40979,7 +55749,7 @@ PooledClass.addPoolingTo(ReactReconcileTransaction);
 
 module.exports = ReactReconcileTransaction;
 
-},{"./CallbackQueue":112,"./Object.assign":134,"./PooledClass":135,"./ReactBrowserEventEmitter":138,"./ReactInputSelection":170,"./ReactPutListenerQueue":185,"./Transaction":213}],187:[function(require,module,exports){
+},{"./CallbackQueue":113,"./Object.assign":135,"./PooledClass":136,"./ReactBrowserEventEmitter":139,"./ReactInputSelection":171,"./ReactPutListenerQueue":186,"./Transaction":214}],188:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -41010,7 +55780,7 @@ var ReactRootIndex = {
 
 module.exports = ReactRootIndex;
 
-},{}],188:[function(require,module,exports){
+},{}],189:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -41090,7 +55860,7 @@ module.exports = {
 };
 
 }).call(this,require('_process'))
-},{"./ReactElement":163,"./ReactInstanceHandles":171,"./ReactMarkupChecksum":174,"./ReactServerRenderingTransaction":189,"./instantiateReactComponent":245,"./invariant":246,"_process":90}],189:[function(require,module,exports){
+},{"./ReactElement":164,"./ReactInstanceHandles":172,"./ReactMarkupChecksum":175,"./ReactServerRenderingTransaction":190,"./instantiateReactComponent":246,"./invariant":247,"_process":91}],190:[function(require,module,exports){
 /**
  * Copyright 2014, Facebook, Inc.
  * All rights reserved.
@@ -41203,7 +55973,7 @@ PooledClass.addPoolingTo(ReactServerRenderingTransaction);
 
 module.exports = ReactServerRenderingTransaction;
 
-},{"./CallbackQueue":112,"./Object.assign":134,"./PooledClass":135,"./ReactPutListenerQueue":185,"./Transaction":213,"./emptyFunction":227}],190:[function(require,module,exports){
+},{"./CallbackQueue":113,"./Object.assign":135,"./PooledClass":136,"./ReactPutListenerQueue":186,"./Transaction":214,"./emptyFunction":228}],191:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -41309,7 +56079,7 @@ ReactStateSetters.Mixin = {
 
 module.exports = ReactStateSetters;
 
-},{}],191:[function(require,module,exports){
+},{}],192:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -41721,7 +56491,7 @@ for (eventType in topLevelTypes) {
 
 module.exports = ReactTestUtils;
 
-},{"./EventConstants":122,"./EventPluginHub":124,"./EventPropagators":127,"./Object.assign":134,"./React":136,"./ReactBrowserEventEmitter":138,"./ReactElement":163,"./ReactMount":175,"./ReactTextComponent":192,"./ReactUpdates":196,"./SyntheticEvent":205}],192:[function(require,module,exports){
+},{"./EventConstants":123,"./EventPluginHub":125,"./EventPropagators":128,"./Object.assign":135,"./React":137,"./ReactBrowserEventEmitter":139,"./ReactElement":164,"./ReactMount":176,"./ReactTextComponent":193,"./ReactUpdates":197,"./SyntheticEvent":206}],193:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -41827,7 +56597,7 @@ ReactTextComponentFactory.type = ReactTextComponent;
 
 module.exports = ReactTextComponentFactory;
 
-},{"./DOMPropertyOperations":118,"./Object.assign":134,"./ReactComponent":142,"./ReactElement":163,"./escapeTextForBrowser":229}],193:[function(require,module,exports){
+},{"./DOMPropertyOperations":119,"./Object.assign":135,"./ReactComponent":143,"./ReactElement":164,"./escapeTextForBrowser":230}],194:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -41928,7 +56698,7 @@ var ReactTransitionChildMapping = {
 
 module.exports = ReactTransitionChildMapping;
 
-},{"./ReactChildren":141}],194:[function(require,module,exports){
+},{"./ReactChildren":142}],195:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -42039,7 +56809,7 @@ var ReactTransitionEvents = {
 
 module.exports = ReactTransitionEvents;
 
-},{"./ExecutionEnvironment":128}],195:[function(require,module,exports){
+},{"./ExecutionEnvironment":129}],196:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -42228,7 +56998,7 @@ var ReactTransitionGroup = React.createClass({
 
 module.exports = ReactTransitionGroup;
 
-},{"./Object.assign":134,"./React":136,"./ReactTransitionChildMapping":193,"./cloneWithProps":219,"./emptyFunction":227}],196:[function(require,module,exports){
+},{"./Object.assign":135,"./React":137,"./ReactTransitionChildMapping":194,"./cloneWithProps":220,"./emptyFunction":228}],197:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -42518,7 +57288,7 @@ var ReactUpdates = {
 module.exports = ReactUpdates;
 
 }).call(this,require('_process'))
-},{"./CallbackQueue":112,"./Object.assign":134,"./PooledClass":135,"./ReactCurrentOwner":147,"./ReactPerf":180,"./Transaction":213,"./invariant":246,"./warning":266,"_process":90}],197:[function(require,module,exports){
+},{"./CallbackQueue":113,"./Object.assign":135,"./PooledClass":136,"./ReactCurrentOwner":148,"./ReactPerf":181,"./Transaction":214,"./invariant":247,"./warning":267,"_process":91}],198:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -42572,7 +57342,7 @@ if ("production" !== process.env.NODE_ENV) {
 module.exports = React;
 
 }).call(this,require('_process'))
-},{"./LinkedStateMixin":130,"./React":136,"./ReactCSSTransitionGroup":139,"./ReactComponentWithPureRenderMixin":144,"./ReactDefaultPerf":161,"./ReactTestUtils":191,"./ReactTransitionGroup":195,"./ReactUpdates":196,"./cloneWithProps":219,"./cx":224,"./update":265,"_process":90}],198:[function(require,module,exports){
+},{"./LinkedStateMixin":131,"./React":137,"./ReactCSSTransitionGroup":140,"./ReactComponentWithPureRenderMixin":145,"./ReactDefaultPerf":162,"./ReactTestUtils":192,"./ReactTransitionGroup":196,"./ReactUpdates":197,"./cloneWithProps":220,"./cx":225,"./update":266,"_process":91}],199:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -42664,7 +57434,7 @@ var SVGDOMPropertyConfig = {
 
 module.exports = SVGDOMPropertyConfig;
 
-},{"./DOMProperty":117}],199:[function(require,module,exports){
+},{"./DOMProperty":118}],200:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -42859,7 +57629,7 @@ var SelectEventPlugin = {
 
 module.exports = SelectEventPlugin;
 
-},{"./EventConstants":122,"./EventPropagators":127,"./ReactInputSelection":170,"./SyntheticEvent":205,"./getActiveElement":233,"./isTextInputElement":249,"./keyOf":253,"./shallowEqual":261}],200:[function(require,module,exports){
+},{"./EventConstants":123,"./EventPropagators":128,"./ReactInputSelection":171,"./SyntheticEvent":206,"./getActiveElement":234,"./isTextInputElement":250,"./keyOf":254,"./shallowEqual":262}],201:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -42890,7 +57660,7 @@ var ServerReactRootIndex = {
 
 module.exports = ServerReactRootIndex;
 
-},{}],201:[function(require,module,exports){
+},{}],202:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -43318,7 +58088,7 @@ var SimpleEventPlugin = {
 module.exports = SimpleEventPlugin;
 
 }).call(this,require('_process'))
-},{"./EventConstants":122,"./EventPluginUtils":126,"./EventPropagators":127,"./SyntheticClipboardEvent":202,"./SyntheticDragEvent":204,"./SyntheticEvent":205,"./SyntheticFocusEvent":206,"./SyntheticKeyboardEvent":208,"./SyntheticMouseEvent":209,"./SyntheticTouchEvent":210,"./SyntheticUIEvent":211,"./SyntheticWheelEvent":212,"./getEventCharCode":234,"./invariant":246,"./keyOf":253,"./warning":266,"_process":90}],202:[function(require,module,exports){
+},{"./EventConstants":123,"./EventPluginUtils":127,"./EventPropagators":128,"./SyntheticClipboardEvent":203,"./SyntheticDragEvent":205,"./SyntheticEvent":206,"./SyntheticFocusEvent":207,"./SyntheticKeyboardEvent":209,"./SyntheticMouseEvent":210,"./SyntheticTouchEvent":211,"./SyntheticUIEvent":212,"./SyntheticWheelEvent":213,"./getEventCharCode":235,"./invariant":247,"./keyOf":254,"./warning":267,"_process":91}],203:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -43364,7 +58134,7 @@ SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);
 module.exports = SyntheticClipboardEvent;
 
 
-},{"./SyntheticEvent":205}],203:[function(require,module,exports){
+},{"./SyntheticEvent":206}],204:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -43410,7 +58180,7 @@ SyntheticEvent.augmentClass(
 module.exports = SyntheticCompositionEvent;
 
 
-},{"./SyntheticEvent":205}],204:[function(require,module,exports){
+},{"./SyntheticEvent":206}],205:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -43449,7 +58219,7 @@ SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);
 
 module.exports = SyntheticDragEvent;
 
-},{"./SyntheticMouseEvent":209}],205:[function(require,module,exports){
+},{"./SyntheticMouseEvent":210}],206:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -43607,7 +58377,7 @@ PooledClass.addPoolingTo(SyntheticEvent, PooledClass.threeArgumentPooler);
 
 module.exports = SyntheticEvent;
 
-},{"./Object.assign":134,"./PooledClass":135,"./emptyFunction":227,"./getEventTarget":237}],206:[function(require,module,exports){
+},{"./Object.assign":135,"./PooledClass":136,"./emptyFunction":228,"./getEventTarget":238}],207:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -43646,7 +58416,7 @@ SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);
 
 module.exports = SyntheticFocusEvent;
 
-},{"./SyntheticUIEvent":211}],207:[function(require,module,exports){
+},{"./SyntheticUIEvent":212}],208:[function(require,module,exports){
 /**
  * Copyright 2013 Facebook, Inc.
  * All rights reserved.
@@ -43693,7 +58463,7 @@ SyntheticEvent.augmentClass(
 module.exports = SyntheticInputEvent;
 
 
-},{"./SyntheticEvent":205}],208:[function(require,module,exports){
+},{"./SyntheticEvent":206}],209:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -43780,7 +58550,7 @@ SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);
 
 module.exports = SyntheticKeyboardEvent;
 
-},{"./SyntheticUIEvent":211,"./getEventCharCode":234,"./getEventKey":235,"./getEventModifierState":236}],209:[function(require,module,exports){
+},{"./SyntheticUIEvent":212,"./getEventCharCode":235,"./getEventKey":236,"./getEventModifierState":237}],210:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -43863,7 +58633,7 @@ SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);
 
 module.exports = SyntheticMouseEvent;
 
-},{"./SyntheticUIEvent":211,"./ViewportMetrics":214,"./getEventModifierState":236}],210:[function(require,module,exports){
+},{"./SyntheticUIEvent":212,"./ViewportMetrics":215,"./getEventModifierState":237}],211:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -43911,7 +58681,7 @@ SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);
 
 module.exports = SyntheticTouchEvent;
 
-},{"./SyntheticUIEvent":211,"./getEventModifierState":236}],211:[function(require,module,exports){
+},{"./SyntheticUIEvent":212,"./getEventModifierState":237}],212:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -43973,7 +58743,7 @@ SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);
 
 module.exports = SyntheticUIEvent;
 
-},{"./SyntheticEvent":205,"./getEventTarget":237}],212:[function(require,module,exports){
+},{"./SyntheticEvent":206,"./getEventTarget":238}],213:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -44034,7 +58804,7 @@ SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);
 
 module.exports = SyntheticWheelEvent;
 
-},{"./SyntheticMouseEvent":209}],213:[function(require,module,exports){
+},{"./SyntheticMouseEvent":210}],214:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -44275,7 +59045,7 @@ var Transaction = {
 module.exports = Transaction;
 
 }).call(this,require('_process'))
-},{"./invariant":246,"_process":90}],214:[function(require,module,exports){
+},{"./invariant":247,"_process":91}],215:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -44307,7 +59077,7 @@ var ViewportMetrics = {
 
 module.exports = ViewportMetrics;
 
-},{"./getUnboundedScrollPosition":242}],215:[function(require,module,exports){
+},{"./getUnboundedScrollPosition":243}],216:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2014, Facebook, Inc.
@@ -44373,7 +59143,7 @@ function accumulateInto(current, next) {
 module.exports = accumulateInto;
 
 }).call(this,require('_process'))
-},{"./invariant":246,"_process":90}],216:[function(require,module,exports){
+},{"./invariant":247,"_process":91}],217:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -44407,7 +59177,7 @@ function adler32(data) {
 
 module.exports = adler32;
 
-},{}],217:[function(require,module,exports){
+},{}],218:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -44439,7 +59209,7 @@ function camelize(string) {
 
 module.exports = camelize;
 
-},{}],218:[function(require,module,exports){
+},{}],219:[function(require,module,exports){
 /**
  * Copyright 2014, Facebook, Inc.
  * All rights reserved.
@@ -44481,7 +59251,7 @@ function camelizeStyleName(string) {
 
 module.exports = camelizeStyleName;
 
-},{"./camelize":217}],219:[function(require,module,exports){
+},{"./camelize":218}],220:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -44540,7 +59310,7 @@ function cloneWithProps(child, props) {
 module.exports = cloneWithProps;
 
 }).call(this,require('_process'))
-},{"./ReactElement":163,"./ReactPropTransferer":181,"./keyOf":253,"./warning":266,"_process":90}],220:[function(require,module,exports){
+},{"./ReactElement":164,"./ReactPropTransferer":182,"./keyOf":254,"./warning":267,"_process":91}],221:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -44584,7 +59354,7 @@ function containsNode(outerNode, innerNode) {
 
 module.exports = containsNode;
 
-},{"./isTextNode":250}],221:[function(require,module,exports){
+},{"./isTextNode":251}],222:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -44670,7 +59440,7 @@ function createArrayFrom(obj) {
 
 module.exports = createArrayFrom;
 
-},{"./toArray":263}],222:[function(require,module,exports){
+},{"./toArray":264}],223:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -44731,7 +59501,7 @@ function createFullPageComponent(tag) {
 module.exports = createFullPageComponent;
 
 }).call(this,require('_process'))
-},{"./ReactCompositeComponent":145,"./ReactElement":163,"./invariant":246,"_process":90}],223:[function(require,module,exports){
+},{"./ReactCompositeComponent":146,"./ReactElement":164,"./invariant":247,"_process":91}],224:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -44821,7 +59591,7 @@ function createNodesFromMarkup(markup, handleScript) {
 module.exports = createNodesFromMarkup;
 
 }).call(this,require('_process'))
-},{"./ExecutionEnvironment":128,"./createArrayFrom":221,"./getMarkupWrap":238,"./invariant":246,"_process":90}],224:[function(require,module,exports){
+},{"./ExecutionEnvironment":129,"./createArrayFrom":222,"./getMarkupWrap":239,"./invariant":247,"_process":91}],225:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -44860,7 +59630,7 @@ function cx(classNames) {
 
 module.exports = cx;
 
-},{}],225:[function(require,module,exports){
+},{}],226:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -44918,7 +59688,7 @@ function dangerousStyleValue(name, value) {
 
 module.exports = dangerousStyleValue;
 
-},{"./CSSProperty":110}],226:[function(require,module,exports){
+},{"./CSSProperty":111}],227:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -44969,7 +59739,7 @@ function deprecated(namespace, oldName, newName, ctx, fn) {
 module.exports = deprecated;
 
 }).call(this,require('_process'))
-},{"./Object.assign":134,"./warning":266,"_process":90}],227:[function(require,module,exports){
+},{"./Object.assign":135,"./warning":267,"_process":91}],228:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45003,7 +59773,7 @@ emptyFunction.thatReturnsArgument = function(arg) { return arg; };
 
 module.exports = emptyFunction;
 
-},{}],228:[function(require,module,exports){
+},{}],229:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -45027,7 +59797,7 @@ if ("production" !== process.env.NODE_ENV) {
 module.exports = emptyObject;
 
 }).call(this,require('_process'))
-},{"_process":90}],229:[function(require,module,exports){
+},{"_process":91}],230:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45068,7 +59838,7 @@ function escapeTextForBrowser(text) {
 
 module.exports = escapeTextForBrowser;
 
-},{}],230:[function(require,module,exports){
+},{}],231:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -45137,7 +59907,7 @@ function flattenChildren(children) {
 module.exports = flattenChildren;
 
 }).call(this,require('_process'))
-},{"./ReactTextComponent":192,"./traverseAllChildren":264,"./warning":266,"_process":90}],231:[function(require,module,exports){
+},{"./ReactTextComponent":193,"./traverseAllChildren":265,"./warning":267,"_process":91}],232:[function(require,module,exports){
 /**
  * Copyright 2014, Facebook, Inc.
  * All rights reserved.
@@ -45166,7 +59936,7 @@ function focusNode(node) {
 
 module.exports = focusNode;
 
-},{}],232:[function(require,module,exports){
+},{}],233:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45197,7 +59967,7 @@ var forEachAccumulated = function(arr, cb, scope) {
 
 module.exports = forEachAccumulated;
 
-},{}],233:[function(require,module,exports){
+},{}],234:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45226,7 +59996,7 @@ function getActiveElement() /*?DOMElement*/ {
 
 module.exports = getActiveElement;
 
-},{}],234:[function(require,module,exports){
+},{}],235:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45278,7 +60048,7 @@ function getEventCharCode(nativeEvent) {
 
 module.exports = getEventCharCode;
 
-},{}],235:[function(require,module,exports){
+},{}],236:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45383,7 +60153,7 @@ function getEventKey(nativeEvent) {
 
 module.exports = getEventKey;
 
-},{"./getEventCharCode":234}],236:[function(require,module,exports){
+},{"./getEventCharCode":235}],237:[function(require,module,exports){
 /**
  * Copyright 2013 Facebook, Inc.
  * All rights reserved.
@@ -45430,7 +60200,7 @@ function getEventModifierState(nativeEvent) {
 
 module.exports = getEventModifierState;
 
-},{}],237:[function(require,module,exports){
+},{}],238:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45461,7 +60231,7 @@ function getEventTarget(nativeEvent) {
 
 module.exports = getEventTarget;
 
-},{}],238:[function(require,module,exports){
+},{}],239:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -45578,7 +60348,7 @@ function getMarkupWrap(nodeName) {
 module.exports = getMarkupWrap;
 
 }).call(this,require('_process'))
-},{"./ExecutionEnvironment":128,"./invariant":246,"_process":90}],239:[function(require,module,exports){
+},{"./ExecutionEnvironment":129,"./invariant":247,"_process":91}],240:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45653,7 +60423,7 @@ function getNodeForCharacterOffset(root, offset) {
 
 module.exports = getNodeForCharacterOffset;
 
-},{}],240:[function(require,module,exports){
+},{}],241:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45688,7 +60458,7 @@ function getReactRootElementInContainer(container) {
 
 module.exports = getReactRootElementInContainer;
 
-},{}],241:[function(require,module,exports){
+},{}],242:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45725,7 +60495,7 @@ function getTextContentAccessor() {
 
 module.exports = getTextContentAccessor;
 
-},{"./ExecutionEnvironment":128}],242:[function(require,module,exports){
+},{"./ExecutionEnvironment":129}],243:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45765,7 +60535,7 @@ function getUnboundedScrollPosition(scrollable) {
 
 module.exports = getUnboundedScrollPosition;
 
-},{}],243:[function(require,module,exports){
+},{}],244:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45798,7 +60568,7 @@ function hyphenate(string) {
 
 module.exports = hyphenate;
 
-},{}],244:[function(require,module,exports){
+},{}],245:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -45839,7 +60609,7 @@ function hyphenateStyleName(string) {
 
 module.exports = hyphenateStyleName;
 
-},{"./hyphenate":243}],245:[function(require,module,exports){
+},{"./hyphenate":244}],246:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -45953,7 +60723,7 @@ function instantiateReactComponent(element, parentCompositeType) {
 module.exports = instantiateReactComponent;
 
 }).call(this,require('_process'))
-},{"./ReactElement":163,"./ReactEmptyComponent":165,"./ReactLegacyElement":172,"./ReactNativeComponent":178,"./warning":266,"_process":90}],246:[function(require,module,exports){
+},{"./ReactElement":164,"./ReactEmptyComponent":166,"./ReactLegacyElement":173,"./ReactNativeComponent":179,"./warning":267,"_process":91}],247:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -46010,7 +60780,7 @@ var invariant = function(condition, format, a, b, c, d, e, f) {
 module.exports = invariant;
 
 }).call(this,require('_process'))
-},{"_process":90}],247:[function(require,module,exports){
+},{"_process":91}],248:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46075,7 +60845,7 @@ function isEventSupported(eventNameSuffix, capture) {
 
 module.exports = isEventSupported;
 
-},{"./ExecutionEnvironment":128}],248:[function(require,module,exports){
+},{"./ExecutionEnvironment":129}],249:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46103,7 +60873,7 @@ function isNode(object) {
 
 module.exports = isNode;
 
-},{}],249:[function(require,module,exports){
+},{}],250:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46147,7 +60917,7 @@ function isTextInputElement(elem) {
 
 module.exports = isTextInputElement;
 
-},{}],250:[function(require,module,exports){
+},{}],251:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46172,7 +60942,7 @@ function isTextNode(object) {
 
 module.exports = isTextNode;
 
-},{"./isNode":248}],251:[function(require,module,exports){
+},{"./isNode":249}],252:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46213,7 +60983,7 @@ function joinClasses(className/*, ... */) {
 
 module.exports = joinClasses;
 
-},{}],252:[function(require,module,exports){
+},{}],253:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -46268,7 +61038,7 @@ var keyMirror = function(obj) {
 module.exports = keyMirror;
 
 }).call(this,require('_process'))
-},{"./invariant":246,"_process":90}],253:[function(require,module,exports){
+},{"./invariant":247,"_process":91}],254:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46304,7 +61074,7 @@ var keyOf = function(oneKeyObj) {
 
 module.exports = keyOf;
 
-},{}],254:[function(require,module,exports){
+},{}],255:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46357,7 +61127,7 @@ function mapObject(object, callback, context) {
 
 module.exports = mapObject;
 
-},{}],255:[function(require,module,exports){
+},{}],256:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46391,7 +61161,7 @@ function memoizeStringOnly(callback) {
 
 module.exports = memoizeStringOnly;
 
-},{}],256:[function(require,module,exports){
+},{}],257:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2014, Facebook, Inc.
@@ -46425,7 +61195,7 @@ function monitorCodeUse(eventName, data) {
 module.exports = monitorCodeUse;
 
 }).call(this,require('_process'))
-},{"./invariant":246,"_process":90}],257:[function(require,module,exports){
+},{"./invariant":247,"_process":91}],258:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -46465,7 +61235,7 @@ function onlyChild(children) {
 module.exports = onlyChild;
 
 }).call(this,require('_process'))
-},{"./ReactElement":163,"./invariant":246,"_process":90}],258:[function(require,module,exports){
+},{"./ReactElement":164,"./invariant":247,"_process":91}],259:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46493,7 +61263,7 @@ if (ExecutionEnvironment.canUseDOM) {
 
 module.exports = performance || {};
 
-},{"./ExecutionEnvironment":128}],259:[function(require,module,exports){
+},{"./ExecutionEnvironment":129}],260:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46521,7 +61291,7 @@ var performanceNow = performance.now.bind(performance);
 
 module.exports = performanceNow;
 
-},{"./performance":258}],260:[function(require,module,exports){
+},{"./performance":259}],261:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46599,7 +61369,7 @@ if (ExecutionEnvironment.canUseDOM) {
 
 module.exports = setInnerHTML;
 
-},{"./ExecutionEnvironment":128}],261:[function(require,module,exports){
+},{"./ExecutionEnvironment":129}],262:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46643,7 +61413,7 @@ function shallowEqual(objA, objB) {
 
 module.exports = shallowEqual;
 
-},{}],262:[function(require,module,exports){
+},{}],263:[function(require,module,exports){
 /**
  * Copyright 2013-2014, Facebook, Inc.
  * All rights reserved.
@@ -46681,7 +61451,7 @@ function shouldUpdateReactComponent(prevElement, nextElement) {
 
 module.exports = shouldUpdateReactComponent;
 
-},{}],263:[function(require,module,exports){
+},{}],264:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2014, Facebook, Inc.
@@ -46753,7 +61523,7 @@ function toArray(obj) {
 module.exports = toArray;
 
 }).call(this,require('_process'))
-},{"./invariant":246,"_process":90}],264:[function(require,module,exports){
+},{"./invariant":247,"_process":91}],265:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -46936,7 +61706,7 @@ function traverseAllChildren(children, callback, traverseContext) {
 module.exports = traverseAllChildren;
 
 }).call(this,require('_process'))
-},{"./ReactElement":163,"./ReactInstanceHandles":171,"./invariant":246,"_process":90}],265:[function(require,module,exports){
+},{"./ReactElement":164,"./ReactInstanceHandles":172,"./invariant":247,"_process":91}],266:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2013-2014, Facebook, Inc.
@@ -47104,7 +61874,7 @@ function update(value, spec) {
 module.exports = update;
 
 }).call(this,require('_process'))
-},{"./Object.assign":134,"./invariant":246,"./keyOf":253,"_process":90}],266:[function(require,module,exports){
+},{"./Object.assign":135,"./invariant":247,"./keyOf":254,"_process":91}],267:[function(require,module,exports){
 (function (process){
 /**
  * Copyright 2014, Facebook, Inc.
@@ -47149,7 +61919,7 @@ if ("production" !== process.env.NODE_ENV) {
 module.exports = warning;
 
 }).call(this,require('_process'))
-},{"./emptyFunction":227,"_process":90}],267:[function(require,module,exports){
+},{"./emptyFunction":228,"_process":91}],268:[function(require,module,exports){
 'use strict';
 /*eslint-env browser*/
 /*var _ = */require('lodash');
@@ -47160,159 +61930,20 @@ window.reactTemplates = reactTemplates;
 
 
 
-},{"../src/reactTemplates":269,"lodash":106}],268:[function(require,module,exports){
-/**
- * Created by avim on 12/4/2014.
- */
+},{"../src/reactTemplates":271,"lodash":107}],269:[function(require,module,exports){
 'use strict';
-var ver0_12_0 = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'defs', 'ellipse', 'g', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];
-var ver0_11_2 = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'defs', 'ellipse', 'g', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan', 'injection'];
-var ver0_11_0 = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'defs', 'ellipse', 'g', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan', 'injection'];
-var ver0_10_0 = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'defs', 'g', 'line', 'linearGradient', 'path', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'injection'];
-
-
-var versions = {
-    '0.12.2': ver0_12_0,
-    '0.12.1': ver0_12_0,
-    '0.12.0': ver0_12_0,
-    '0.11.2': ver0_11_2,
-    '0.11.1': ver0_11_0,
-    '0.11.0': ver0_11_0,
-    '0.10.0': ver0_10_0
-};
-
-module.exports = versions;
-},{}],269:[function(require,module,exports){
-/**
- * Created by avim on 11/9/2014.
- */
-'use strict';
-var cheerio = require('cheerio');
-var _ = require('lodash');
-var esprima = require('esprima');
-var escodegen = require('escodegen');
-var reactDOMSupport = require('./reactDOMSupport');
-var stringUtils = require('./stringUtils');
-
-var repeatTemplate = _.template('_.map(<%= collection %>,<%= repeatFunction %>.bind(<%= repeatBinds %>))');
-var ifTemplate = _.template('((<%= condition %>)?(<%= body %>):null)');
-var propsTemplate = _.template('_.merge({}, <%= generatedProps %>, <%= rtProps %>)');
-var classSetTemplate = _.template('React.addons.classSet(<%= classSet %>)');
-var simpleTagTemplate = _.template('<%= name %>(<%= props %><%= children %>)');
-var tagTemplate = _.template('<%= name %>.apply(this,_.flatten([<%= props %><%= children %>]))');
-var simpleTagTemplateCreateElement = _.template('React.createElement(<%= name %>,<%= props %><%= children %>)');
-var tagTemplateCreateElement = _.template('React.createElement.apply(this,_.flatten([<%= name %>,<%= props %><%= children %>]))');
-var commentTemplate = _.template(' /* <%= data %> */ ');
-var templateAMDTemplate = _.template("define([<%= requirePaths %>], function (<%= requireNames %>) {\n'use strict';\n <%= injectedFunctions %>\nreturn function(){ return <%= body %>};\n});");
-var templateCommonJSTemplate = _.template("<%= vars %>\n\n'use strict';\n <%= injectedFunctions %>\nmodule.exports = function(){ return <%= body %>};\n");
-var templatePJSTemplate = _.template('var <%= name %> = function () {\n' +
-                                '<%= injectedFunctions %>\n' +
-                                'return <%= body %>\n' +
-                                '};\n');
-
-var templateProp = 'rt-repeat';
-var ifProp = 'rt-if';
-var classSetProp = 'rt-class';
-var scopeProp = 'rt-scope';
-var propsProp = 'rt-props';
-
-var defaultOptions = {modules: 'amd', version: false, force: false, format: 'stylish', targetVersion: '0.12.2'};
-
-function shouldUseCreateElement(context) {
-    switch (context.options.targetVersion) {
-        case '0.11.2':
-        case '0.11.1':
-        case '0.11.0':
-        case '0.10.0':
-            return false;
-        default:
-            return true;
-    }
-}
-
-var reactSupportedAttributes = ['accept', 'acceptCharset', 'accessKey', 'action', 'allowFullScreen', 'allowTransparency', 'alt', 'async', 'autoComplete', 'autoPlay', 'cellPadding', 'cellSpacing', 'charSet', 'checked', 'classID', 'className', 'cols', 'colSpan', 'content', 'contentEditable', 'contextMenu', 'controls', 'coords', 'crossOrigin', 'data', 'dateTime', 'defer', 'dir', 'disabled', 'download', 'draggable', 'encType', 'form', 'formNoValidate', 'frameBorder', 'height', 'hidden', 'href', 'hrefLang', 'htmlFor', 'httpEquiv', 'icon', 'id', 'label', 'lang', 'list', 'loop', 'manifest', 'max', 'maxLength', 'media', 'mediaGroup', 'method', 'min', 'multiple', 'muted', 'name', 'noValidate', 'open', 'pattern', 'placeholder', 'poster', 'preload', 'radioGroup', 'readOnly', 'rel', 'required', 'role', 'rows', 'rowSpan', 'sandbox', 'scope', 'scrolling', 'seamless', 'selected', 'shape', 'size', 'sizes', 'span', 'spellCheck', 'src', 'srcDoc', 'srcSet', 'start', 'step', 'style', 'tabIndex', 'target', 'title', 'type', 'useMap', 'value', 'width', 'wmode'];
-var attributesMapping = {'class': 'className', 'rt-class': 'className'};
-_.forEach(reactSupportedAttributes, function (attributeReactName) {
-    if (attributeReactName !== attributeReactName.toLowerCase()) {
-        attributesMapping[attributeReactName.toLowerCase()] = attributeReactName;
-    }
-});
-
-function concatChildren(children) {
-    var res = '';
-    _.forEach(children, function (child) {
-        if (child.indexOf(' /*') !== 0 && child) {
-            res += ',' + child;
-        } else {
-            res += child;
-        }
-    }, this);
-    return res;
-}
-
-var curlyMap = {'{': 1, '}': -1};
-
-function convertText(node, context, txt) {
-    var res = '';
-    var first = true;
-    while (txt.indexOf('{') !== -1) {
-        var start = txt.indexOf('{');
-        var pre = txt.substr(0, start);
-        if (pre) {
-            res += (first ? '' : '+') + JSON.stringify(pre);
-            first = false;
-        }
-        var curlyCounter = 1;
-        for (var end = start + 1; end < txt.length && curlyCounter > 0; end++) {
-            curlyCounter += curlyMap[txt.charAt(end)] || 0;
-        }
-        if (curlyCounter !== 0) {
-            throw buildError("Failed to parse text '" + txt + "'", context, node);
-        } else {
-            var needsParens = start !== 0 || end !== txt.length - 1;
-            res += (first ? '' : '+') + (needsParens ? '(' : '') + txt.substr(start + 1, end - start - 2) + (needsParens ? ')' : '');
-            first = false;
-            txt = txt.substr(end);
-        }
-    }
-    if (txt) {
-        res += (first ? '' : '+') + JSON.stringify(txt);
-    }
-    if (res === '') {
-        res = 'true';
-    }
-
-    return res;
-}
-
-/**
- * @param {string} txt
- * @return {boolean}
- */
-function isStringOnlyCode(txt) {
-    txt = txt.trim();
-    return txt.length && txt.charAt(0) === '{' && txt.charAt(txt.length - 1) === '}';
-}
-
-function generateInjectedFunc(context, namePrefix, body, params) {
-    params = params || context.boundParams;
-    var generatedFuncName = namePrefix.replace(',', '') + (context.injectedFunctions.length + 1);
-    var funcText = 'function ' + generatedFuncName + '(' + params.join(',');
-    funcText += ') {\n' + body + '\n}\n';
-    context.injectedFunctions.push(funcText);
-    return generatedFuncName;
-}
 
 /**
  * @param {string} html
  * @param node
- * @return {number}
+ * @return {{line: number, col: number}}}
  */
 function getLine(html, node) {
     if (!node) {
-        return 0;
+        return {col: 1, line: 1};
     }
-    return html.substring(0, node.startIndex).split('\n').length - 1;
+    var linesUntil = html.substring(0, node.startIndex).split('\n');
+    return {line: linesUntil.length, col: linesUntil[linesUntil.length - 1].length + 1};
 }
 
 //function getLine(node) {
@@ -47340,20 +61971,41 @@ function getLine(html, node) {
 
 // Redefine properties on Error to be enumerable
 /*eslint no-extend-native:0*/
-Object.defineProperty(Error.prototype, 'message', { configurable: true, enumerable: true });
-Object.defineProperty(Error.prototype, 'stack', { configurable: true, enumerable: true });
+Object.defineProperty(Error.prototype, 'message', {configurable: true, enumerable: true});
+Object.defineProperty(Error.prototype, 'stack', {configurable: true, enumerable: true});
 //Object.defineProperty(Error.prototype, 'line', { configurable: true, enumerable: true });
 
-function RTCodeError(message, index, line) {
+/**
+ * @param {string} message
+ * @param {number=} startOffset
+ * @param {number=} endOffset
+ * @param {number=} line
+ * @param {number=} column
+ * @constructor
+ */
+function RTCodeError(message, startOffset, endOffset, line, column) {
     Error.captureStackTrace(this, RTCodeError);
     this.name = 'RTCodeError';
     this.message = message || '';
-    this.index = index || -1;
-    this.line = line || -1;
+    this.index = norm(startOffset);
+    this.startOffset = norm(startOffset);
+    this.endOffset = norm(endOffset);
+    this.line = norm(line);
+    this.column = norm(column);
+}
+
+function norm(n) {
+    return n === undefined ? -1 : n;
 }
 
 RTCodeError.prototype = Object.create(Error.prototype);
 
+RTCodeError.build = buildError;
+RTCodeError.norm = norm;
+
+RTCodeError.prototype.toIssue = function () {
+};
+
 /**
  * @param {string} msg
  * @param {*} context
@@ -47361,10 +62013,199 @@ RTCodeError.prototype = Object.create(Error.prototype);
  * @return {RTCodeError}
  */
 function buildError(msg, context, node) {
-    var line = getLine(context.html, node);
-    return new RTCodeError(msg, node.startIndex, line);
+    var pos = getLine(context.html, node);
+    var end;
+    if (node.data) {
+        end = node.startIndex + node.data.length;
+    } else if (node.next) {
+        end = node.next.startIndex;
+    } else {
+        end = context.html.length;
+    }
+    return new RTCodeError(msg, node.startIndex, end, pos.line, pos.col);
 }
 
+module.exports = {
+    RTCodeError: RTCodeError
+};
+
+},{}],270:[function(require,module,exports){
+/**
+ * Created by avim on 12/4/2014.
+ */
+'use strict';
+var ver0_12_0 = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'defs', 'ellipse', 'g', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];
+var ver0_11_2 = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'defs', 'ellipse', 'g', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan', 'injection'];
+var ver0_11_0 = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'defs', 'ellipse', 'g', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan', 'injection'];
+var ver0_10_0 = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'defs', 'g', 'line', 'linearGradient', 'path', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'injection'];
+
+
+var versions = {
+    '0.12.2': ver0_12_0,
+    '0.12.1': ver0_12_0,
+    '0.12.0': ver0_12_0,
+    '0.11.2': ver0_11_2,
+    '0.11.1': ver0_11_0,
+    '0.11.0': ver0_11_0,
+    '0.10.0': ver0_10_0
+};
+
+module.exports = versions;
+},{}],271:[function(require,module,exports){
+/**
+ * Created by avim on 11/9/2014.
+ */
+'use strict';
+var cheerio = require('cheerio');
+var _ = require('lodash');
+var esprima = require('esprima-harmony');
+var escodegen = require('escodegen');
+var reactDOMSupport = require('./reactDOMSupport');
+var stringUtils = require('./stringUtils');
+var rtError = require('./RTCodeError');
+var RTCodeError = rtError.RTCodeError;
+
+var repeatTemplate = _.template('_.map(<%= collection %>,<%= repeatFunction %>.bind(<%= repeatBinds %>))');
+var ifTemplate = _.template('((<%= condition %>)?(<%= body %>):null)');
+var propsTemplate = _.template('_.merge({}, <%= generatedProps %>, <%= rtProps %>)');
+var classSetTemplate = _.template('React.addons.classSet(<%= classSet %>)');
+var simpleTagTemplate = _.template('<%= name %>(<%= props %><%= children %>)');
+var tagTemplate = _.template('<%= name %>.apply(this,_.flatten([<%= props %><%= children %>]))');
+var simpleTagTemplateCreateElement = _.template('React.createElement(<%= name %>,<%= props %><%= children %>)');
+var tagTemplateCreateElement = _.template('React.createElement.apply(this,_.flatten([<%= name %>,<%= props %><%= children %>]))');
+var commentTemplate = _.template(' /* <%= data %> */ ');
+
+var templateAMDTemplate = _.template("define(<%= name ? '\"'+name + '\", ' : '' %>[<%= requirePaths %>], function (<%= requireNames %>) {\n'use strict';\n <%= injectedFunctions %>\nreturn function(){ return <%= body %>};\n});");
+var templateCommonJSTemplate = _.template("'use strict';\n<%= vars %>\n\n<%= injectedFunctions %>\nmodule.exports = function(){ return <%= body %>};\n");
+var templateES6Template = _.template('<%= vars %>\n\n<%= injectedFunctions %>\nexport default function(){ return <%= body %>}\n');
+var templatePJSTemplate = _.template('var <%= name %> = function () {\n' +
+                                '<%= injectedFunctions %>\n' +
+                                'return <%= body %>\n' +
+                                '};\n');
+var templateTypescriptTemplate = _.template('<%= vars %>\n\n<%= injectedFunctions %>\nvar fn = function() { return <%= body %> };\nexport = fn\n');
+
+var templates = {
+    amd: templateAMDTemplate,
+    commonjs: templateCommonJSTemplate,
+    typescript: templateTypescriptTemplate,
+    es6: templateES6Template,
+    none: templatePJSTemplate
+};
+
+var htmlSelfClosingTags = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'];
+
+var templateProp = 'rt-repeat';
+var ifProp = 'rt-if';
+var classSetProp = 'rt-class';
+var scopeProp = 'rt-scope';
+var propsProp = 'rt-props';
+
+var defaultOptions = {modules: 'amd', version: false, force: false, format: 'stylish', targetVersion: '0.12.2'};
+
+/**
+ * @param context
+ * @return {boolean}
+ */
+function shouldUseCreateElement(context) {
+    switch (context.options.targetVersion) {
+        case '0.11.2':
+        case '0.11.1':
+        case '0.11.0':
+        case '0.10.0':
+            return false;
+        default:
+            return true;
+    }
+}
+
+var reactSupportedAttributes = ['accept', 'acceptCharset', 'accessKey', 'action', 'allowFullScreen', 'allowTransparency', 'alt', 'async', 'autoComplete', 'autoPlay', 'cellPadding', 'cellSpacing', 'charSet', 'checked', 'classID', 'className', 'cols', 'colSpan', 'content', 'contentEditable', 'contextMenu', 'controls', 'coords', 'crossOrigin', 'data', 'dateTime', 'defer', 'dir', 'disabled', 'download', 'draggable', 'encType', 'form', 'formNoValidate', 'frameBorder', 'height', 'hidden', 'href', 'hrefLang', 'htmlFor', 'httpEquiv', 'icon', 'id', 'label', 'lang', 'list', 'loop', 'manifest', 'max', 'maxLength', 'media', 'mediaGroup', 'method', 'min', 'multiple', 'muted', 'name', 'noValidate', 'open', 'pattern', 'placeholder', 'poster', 'preload', 'radioGroup', 'readOnly', 'rel', 'required', 'role', 'rows', 'rowSpan', 'sandbox', 'scope', 'scrolling', 'seamless', 'selected', 'shape', 'size', 'sizes', 'span', 'spellCheck', 'src', 'srcDoc', 'srcSet', 'start', 'step', 'style', 'tabIndex', 'target', 'title', 'type', 'useMap', 'value', 'width', 'wmode'];
+var attributesMapping = {'class': 'className', 'rt-class': 'className'};
+_.forEach(reactSupportedAttributes, function (attributeReactName) {
+    if (attributeReactName !== attributeReactName.toLowerCase()) {
+        attributesMapping[attributeReactName.toLowerCase()] = attributeReactName;
+    }
+});
+
+/**
+ * @param children
+ * @return {string}
+ */
+function concatChildren(children) {
+    var res = '';
+    _.forEach(children, function (child) {
+        if (child && child.indexOf(' /*') !== 0 ) {
+            res += ',' + child;
+        } else {
+            res += child;
+        }
+    }, this);
+    return res;
+}
+
+/**
+ * @const
+ */
+var curlyMap = {'{': 1, '}': -1};
+
+/**
+ * @param node
+ * @param context
+ * @param {string} txt
+ * @return {string}
+ */
+function convertText(node, context, txt) {
+    var res = '';
+    var first = true;
+    var concatChar = node.type === 'text' ? ',' : '+';
+    while (txt.indexOf('{') !== -1) {
+        var start = txt.indexOf('{');
+        var pre = txt.substr(0, start);
+        if (pre) {
+            res += (first ? '' : concatChar) + JSON.stringify(pre);
+            first = false;
+        }
+        var curlyCounter = 1;
+        var end;
+        for (end = start + 1; end < txt.length && curlyCounter > 0; end++) {
+            curlyCounter += curlyMap[txt.charAt(end)] || 0;
+        }
+        if (curlyCounter !== 0) {
+            throw RTCodeError.build("Failed to parse text '" + txt + "'", context, node);
+        } else {
+            var needsParens = start !== 0 || end !== txt.length - 1;
+            res += (first ? '' : concatChar) + (needsParens ? '(' : '') + txt.substr(start + 1, end - start - 2) + (needsParens ? ')' : '');
+            first = false;
+            txt = txt.substr(end);
+        }
+    }
+    if (txt) {
+        res += (first ? '' : concatChar) + JSON.stringify(txt);
+    }
+    if (res === '') {
+        res = 'true';
+    }
+
+    //validateJS(res, node, context);
+    return res;
+}
+
+/**
+ * @param {string} txt
+ * @return {boolean}
+ */
+function isStringOnlyCode(txt) {
+    txt = txt.trim();
+    return txt.length && txt.charAt(0) === '{' && txt.charAt(txt.length - 1) === '}';
+}
+
+function generateInjectedFunc(context, namePrefix, body, params) {
+    params = params || context.boundParams;
+    var generatedFuncName = namePrefix.replace(',', '') + (context.injectedFunctions.length + 1);
+    var funcText = 'function ' + generatedFuncName + '(' + params.join(',');
+    funcText += ') {\n' + body + '\n}\n';
+    context.injectedFunctions.push(funcText);
+    return generatedFuncName;
+}
 
 function generateProps(node, context) {
 //    console.log(node);
@@ -47372,12 +62213,12 @@ function generateProps(node, context) {
     _.forOwn(node.attribs, function (val, key) {
         var propKey = attributesMapping[key.toLowerCase()] || key;
         if (props.hasOwnProperty(propKey)) {
-            throw buildError('duplicate definition of ' + propKey + ' ' + JSON.stringify(node.attribs), context, node);
+            throw RTCodeError.build('duplicate definition of ' + propKey + ' ' + JSON.stringify(node.attribs), context, node);
         }
         if (key.indexOf('on') === 0 && !isStringOnlyCode(val)) {
             var funcParts = val.split('=>');
             if (funcParts.length !== 2) {
-                throw buildError("when using 'on' events, use lambda '(p1,p2)=>body' notation or use {} to return a callback function. error: [" + key + "='" + val + "']", context, node);
+                throw RTCodeError.build("when using 'on' events, use lambda '(p1,p2)=>body' notation or use {} to return a callback function. error: [" + key + "='" + val + "']", context, node);
             }
             var evtParams = funcParts[0].replace('(', '').replace(')', '').trim();
             var funcBody = funcParts[1].trim();
@@ -47419,6 +62260,7 @@ function generateProps(node, context) {
 function convertTagNameToConstructor(tagName, context) {
     var isHtmlTag = _.contains(reactDOMSupport[context.options.targetVersion], tagName);
     if (shouldUseCreateElement(context)) {
+        isHtmlTag = isHtmlTag || tagName.match(/^\w+(-\w+)$/);
         return isHtmlTag ? "'" + tagName + "'" : tagName;
     }
     return isHtmlTag ? 'React.DOM.' + tagName : tagName;
@@ -47440,7 +62282,7 @@ function hasNonSimpleChildren(node) {
 }
 
 function convertHtmlToReact(node, context) {
-    if (node.type === 'tag') {
+    if (node.type === 'tag' || node.type === 'style') {
         context = {
             boundParams: _.clone(context.boundParams),
             injectedFunctions: context.injectedFunctions,
@@ -47458,22 +62300,26 @@ function convertHtmlToReact(node, context) {
             _.each(node.attribs[scopeProp].split(';'), function (scopePart) {
                 var scopeSubParts = scopePart.split(' as ');
                 if (scopeSubParts.length < 2) {
-                    throw buildError("invalid scope part '" + scopePart + "'", context, node);
+                    throw RTCodeError.build("invalid scope part '" + scopePart + "'", context, node);
                 }
                 var scopeName = scopeSubParts[1].trim();
+                validateJS(scopeName, node, context);
                 stringUtils.addIfNotThere(context.boundParams, scopeName);
                 data.scopeName += stringUtils.capitalize(scopeName);
                 data.scopeMapping[scopeName] = scopeSubParts[0].trim();
+                validateJS(data.scopeMapping[scopeName], node, context);
             });
         }
 
         if (node.attribs[templateProp]) {
             var arr = node.attribs[templateProp].split(' in ');
             if (arr.length !== 2) {
-                throw buildError("rt-repeat invalid 'in' expression '" + node.attribs[templateProp] + "'", context, node);
+                throw RTCodeError.build("rt-repeat invalid 'in' expression '" + node.attribs[templateProp] + "'", context, node);
             }
             data.item = arr[0].trim();
             data.collection = arr[1].trim();
+            validateJS(data.item, node, context);
+            validateJS(data.collection, node, context);
             stringUtils.addIfNotThere(context.boundParams, data.item);
             stringUtils.addIfNotThere(context.boundParams, data.item + 'Index');
         }
@@ -47484,9 +62330,11 @@ function convertHtmlToReact(node, context) {
         if (node.attribs[ifProp]) {
             data.condition = node.attribs[ifProp].trim();
         }
-        data.children = concatChildren(_.map(node.children, function (child) {
-            return convertHtmlToReact(child, context);
-        }));
+        data.children = node.children ? concatChildren(_.map(node.children, function (child) {
+            var code = convertHtmlToReact(child, context);
+            validateJS(code, child, context);
+            return code;
+        })) : '';
 
         if (hasNonSimpleChildren(node)) {
             data.body = shouldUseCreateElement(context) ? tagTemplateCreateElement(data) : tagTemplate(data);
@@ -47525,7 +62373,27 @@ function convertHtmlToReact(node, context) {
 //  });
 //  return html;
 //}
+function isTag(node) {
+    return node.type === 'tag';
+}
 
+function handleSelfClosingHtmlTags(nodes) {
+    return _(nodes)
+        .map(function (node) {
+            var externalNodes = [];
+            node.children = handleSelfClosingHtmlTags(node.children);
+            if (node.type === 'tag' && _.contains(htmlSelfClosingTags, node.name)) {
+                externalNodes = _.filter(node.children, isTag);
+                _.forEach(externalNodes, function (child) {
+                    child.parent = node;
+                });
+                node.children = _.reject(node.children, isTag);
+            }
+            return [node].concat(externalNodes);
+        })
+        .flatten()
+        .value();
+}
 
 /**
  * @param {string} html
@@ -47535,57 +62403,77 @@ function convertHtmlToReact(node, context) {
 function convertTemplateToReact(html, options) {
     var rootNode = cheerio.load(html, {lowerCaseTags: false, lowerCaseAttributeNames: false, xmlMode: true, withStartIndices: true});
     options = _.defaults({}, options, defaultOptions);
-    var defines = {'react/addons': 'React', lodash: '_'};
+    var defines = options.defines ? options.defines : {'react/addons': 'React', lodash: '_'};
     var context = defaultContext(html, options);
-    var rootTags = _.filter(rootNode.root()[0].children, function (i) { return i.type === 'tag'; });
+    var rootTags = _.filter(rootNode.root()[0].children, {type: 'tag'});
+    rootTags = handleSelfClosingHtmlTags(rootTags);
     if (!rootTags || rootTags.length === 0) {
         throw new RTCodeError('Document should have a root element');
     }
     var firstTag = null;
-    _.forEach(rootTags, function(tag) {
+    _.forEach(rootTags, function (tag) {
         if (tag.name === 'rt-require') {
-          if (!tag.attribs.dependency || !tag.attribs.as) {
-            throw buildError("rt-require needs 'dependency' and 'as' attributes", context, tag);
-          } else if (tag.children.length) {
-            throw buildError('rt-require may have no children', context, tag);
-          } else {
+            if (!tag.attribs.dependency || !tag.attribs.as) {
+                throw RTCodeError.build("rt-require needs 'dependency' and 'as' attributes", context, tag);
+            } else if (tag.children.length) {
+                throw RTCodeError.build('rt-require may have no children', context, tag);
+            }
+            //if (options.modules === 'typescript') {
+            //    defines['./' + tag.attribs.dependency] = tag.attribs.as;
+            //} else {
             defines[tag.attribs.dependency] = tag.attribs.as;
-          }
+            //}
         } else if (firstTag === null) {
-          firstTag = tag;
+            firstTag = tag;
         } else {
-          throw buildError('Document should have no more than a single root element', context, tag);
+            throw RTCodeError.build('Document should have no more than a single root element', context, tag);
         }
     });
     if (firstTag === null) {
-      throw buildError('Document should have a single root element', context, rootNode.root()[0]);
+        throw RTCodeError.build('Document should have a single root element', context, rootNode.root()[0]);
     }
     var body = convertHtmlToReact(firstTag, context);
     var requirePaths = _(defines).keys().map(function (reqName) { return '"' + reqName + '"'; }).value().join(',');
     var requireVars = _(defines).values().value().join(',');
-    var vars = _(defines).map(function (reqVar, reqPath) { return 'var ' + reqVar + " = require('" + reqPath + "');"; }).join('\n');
+    var vars;
+    if (options.modules === 'typescript') {
+        vars = _(defines).map(function (reqVar, reqPath) { return 'import ' + reqVar + " = require('" + reqPath + "');"; }).join('\n');
+    } else if (options.modules === 'es6') {
+        vars = _(defines).map(function (reqVar, reqPath) { return 'import {' + reqVar + "} from '" + reqPath + "';"; }).join('\n');
+    } else {
+        vars = _(defines).map(function (reqVar, reqPath) { return 'var ' + reqVar + " = require('" + reqPath + "');"; }).join('\n');
+    }
     var data = {body: body, injectedFunctions: '', requireNames: requireVars, requirePaths: requirePaths, vars: vars, name: options.name};
     data.injectedFunctions = context.injectedFunctions.join('\n');
     var code = generate(data, options);
-    try {
-        var tree = esprima.parse(code, {range: true, tokens: true, comment: true});
-        tree = escodegen.attachComments(tree, tree.comments, tree.tokens);
-        code = escodegen.generate(tree, {comment: true});
-    } catch (e) {
-        // TODO error handling
-        console.log(e);
+    if (options.modules !== 'typescript') {
+        try {
+            var tree = esprima.parse(code, {range: true, tokens: true, comment: true});
+            tree = escodegen.attachComments(tree, tree.comments, tree.tokens);
+            code = escodegen.generate(tree, {comment: true});
+        } catch (e) {
+            throw new RTCodeError(e.message, e.index, -1);
+        }
     }
     return code;
 }
 
 function generate(data, options) {
-    if (options.modules === 'amd') {
-        return templateAMDTemplate(data);
+    var template = templates[options.modules];
+    return template(data);
+}
+
+/**
+ * @param {string} code
+ * @param node
+ * @param context
+ */
+function validateJS(code, node, context) {
+    try {
+        esprima.parse(code);
+    } catch (e) {
+        throw RTCodeError.build(e.description, context, node);
     }
-    if (options.modules === 'commonjs') {
-        return templateCommonJSTemplate(data);
-    }
-    return templatePJSTemplate(data);
 }
 
 /**
@@ -47600,10 +62488,12 @@ module.exports = {
     convertTemplateToReact: convertTemplateToReact,
     RTCodeError: RTCodeError,
     normalizeName: normalizeName,
-    _test: {}
+    _test: {
+        convertText: convertText
+    }
 };
 
-},{"./reactDOMSupport":268,"./stringUtils":270,"cheerio":1,"escodegen":63,"esprima":80,"lodash":106}],270:[function(require,module,exports){
+},{"./RTCodeError":269,"./reactDOMSupport":270,"./stringUtils":272,"cheerio":1,"escodegen":63,"esprima-harmony":81,"lodash":107}],272:[function(require,module,exports){
 'use strict';
 var _ = require('lodash');
 
@@ -47638,7 +62528,7 @@ module.exports = {
     capitalize: capitalize,
     addIfNotThere: addIfNotThere
 };
-},{"lodash":106}],"react/addons":[function(require,module,exports){
+},{"lodash":107}],"react/addons":[function(require,module,exports){
 module.exports = require('./lib/ReactWithAddons');
 
-},{"./lib/ReactWithAddons":197}]},{},[267]);
+},{"./lib/ReactWithAddons":198}]},{},[268]);
diff --git a/playground/dist/rt-main.browser.min.js b/playground/dist/rt-main.browser.min.js
index 43076f2..cf49ce8 100644
--- a/playground/dist/rt-main.browser.min.js
+++ b/playground/dist/rt-main.browser.min.js
@@ -1,15 +1,18 @@
-require=function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){c=b.exports=a("./lib/cheerio"),c.version=a("./package").version},{"./lib/cheerio":6,"./package":62}],2:[function(a,b,c){var d=a("lodash"),e=a("../utils"),f=e.isTag,g=e.domEach,h=Object.prototype.hasOwnProperty,i=e.camelCase,j=e.cssCase,k=/\s+/,l="data-",m={"null":null,"true":!0,"false":!1},n=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,o=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,p=function(a,b){return a&&f(a)?(a.attribs||(a.attribs={}),b?h.call(a.attribs,b)?n.test(b)?b:a.attribs[b]:void 0:a.attribs):void 0},q=function(a,b,c){null===c?t(a,b):a.attribs[b]=c+""};c.attr=function(a,b){return"object"==typeof a||void 0!==b?"function"==typeof b?g(this,function(c,d){q(d,a,b.call(d,c,d.attribs[a]))}):g(this,function(c,e){f(e)&&("object"==typeof a?d.each(a,function(a,b){e.attribs[b]=a+""}):q(e,a,b))}):p(this[0],a)};var r=function(a,b,c){return"object"==typeof b?d.extend(a.data,b):void("string"==typeof b&&void 0!==c?a.data[b]=c:"object"==typeof b&&d.exend(a.data,b))},s=function(a,b){var c,d,e,f,g,k,n,p=1===arguments.length;for(p?(c=Object.keys(a.attribs).filter(function(a){return a.slice(0,l.length)===l}),e=c.map(function(a){return i(a.slice(l.length))})):(c=[l+j(b)],e=[b]),k=0,n=c.length;n>k;++k)d=c[k],f=e[k],h.call(a.attribs,d)&&(g=a.attribs[d],h.call(m,g)?g=m[g]:g===String(Number(g))?g=Number(g):o.test(g)&&(g=JSON.parse(g)),a.data[f]=g);return p?a.data:g};c.data=function(a,b){var c=this[0];if(c&&f(c))return c.data||(c.data={}),a?"object"==typeof a||void 0!==b?(g(this,function(c,d){r(d,a,b)}),this):h.call(c.data,a)?c.data[a]:s(c,a):s(c)},c.val=function(a){var b=0===arguments.length,c=this[0];if(c)switch(c.name){case"textarea":return this.text(a);case"input":switch(this.attr("type")){case"radio":var d,e,f='input[type=radio][name="'+this.attr("name")+'"]:checked';return d=this.closest("form"),0===d.length&&(e=(this.parents().last()[0]||this[0]).root,d=this._make(e)),b?d.find(f).attr("value"):(d.find(":checked").removeAttr("checked"),d.find('input[type=radio][value="'+a+'"]').attr("checked",""),this);default:return this.attr("value",a)}return;case"select":var h,i=this.find("option:selected");if(void 0===i)return void 0;if(!b){if(!this.attr().hasOwnProperty("multiple")&&"object"==typeof a)return this;"object"!=typeof a&&(a=[a]),this.find("option").removeAttr("selected");for(var j=0;j<a.length;j++)this.find('option[value="'+a[j]+'"]').attr("selected","");return this}return h=i.attr("value"),this.attr().hasOwnProperty("multiple")&&(h=[],g(i,function(a,b){h.push(b.attribs.value)})),h;case"option":return b?this.attr("value"):(this.attr("value",a),this)}};var t=function(a,b){a.attribs&&h.call(a.attribs,b)&&delete a.attribs[b]};c.removeAttr=function(a){return g(this,function(b,c){t(c,a)}),this},c.hasClass=function(a){return d.any(this,function(b){var c,d=b.attribs,e=d&&d["class"],f=-1;if(e)for(;(f=e.indexOf(a,f+1))>-1;)if(c=f+a.length,(0===f||k.test(e[f-1]))&&(c===e.length||k.test(e[c])))return!0})},c.addClass=function(a){if("function"==typeof a)return g(this,function(b,d){var e=d.attribs["class"]||"";c.addClass.call([d],a.call(d,b,e))});if(!a||"string"!=typeof a)return this;for(var b=a.split(k),d=this.length,e=0;d>e;e++)if(f(this[e])){var h,i,j=p(this[e],"class");if(j){i=" "+j+" ",h=b.length;for(var l=0;h>l;l++){var m=b[l]+" ";~i.indexOf(" "+m)||(i+=m)}q(this[e],"class",i.trim())}else q(this[e],"class",b.join(" ").trim())}return this};var u=function(a){return a?a.trim().split(k):[]};c.removeClass=function(a){var b,d,e;return"function"==typeof a?g(this,function(b,d){c.removeClass.call([d],a.call(d,b,d.attribs["class"]||""))}):(b=u(a),d=b.length,e=0===arguments.length,g(this,function(a,c){if(f(c))if(e)c.attribs["class"]="";else{for(var g,h,i=u(c.attribs["class"]),j=0;d>j;j++)g=i.indexOf(b[j]),g>=0&&(i.splice(g,1),h=!0,j--);h&&(c.attribs["class"]=i.join(" "))}}))},c.toggleClass=function(a,b){if("function"==typeof a)return g(this,function(d,e){c.toggleClass.call([e],a.call(e,d,e.attribs["class"]||"",b),b)});if(!a||"string"!=typeof a)return this;for(var d,e,h=a.split(k),i=h.length,j="boolean"==typeof b?b?1:-1:0,l=this.length,m=0;l>m;m++)if(f(this[m])){d=u(this[m].attribs["class"]);for(var n=0;i>n;n++)e=d.indexOf(h[n]),j>=0&&0>e?d.push(h[n]):0>=j&&e>=0&&d.splice(e,1);this[m].attribs["class"]=d.join(" ")}return this},c.is=function(a){return a?this.filter(a).length>0:!1}},{"../utils":9,lodash:61}],3:[function(a,b,c){function d(a,b,c,g){if("string"==typeof b){var h=e(a);"function"==typeof c&&(c=c.call(a,g,a)),""===c?delete h[b]:null!=c&&(h[b]=c),a.attribs.style=f(h)}else"object"==typeof b&&Object.keys(b).forEach(function(c){d(a,c,b[c])})}function e(a,b){var c=g(a.attribs.style);return"string"==typeof b?c[b]:Array.isArray(b)?h.pick(c,b):c}function f(a){return Object.keys(a||{}).reduce(function(b,c){return b+=""+(b?" ":"")+c+": "+a[c]+";"},"")}function g(a){return a=(a||"").trim(),a?a.split(";").reduce(function(a,b){var c=b.indexOf(":");return 1>c||c===b.length-1?a:(a[b.slice(0,c).trim()]=b.slice(c+1).trim(),a)},{}):{}}var h=a("lodash"),i=a("../utils").domEach,j=Object.prototype.toString;c.css=function(a,b){return 2===arguments.length||"[object Object]"===j.call(a)?i(this,function(c,e){d(e,a,b,c)}):e(this[0],a)}},{"../utils":9,lodash:61}],4:[function(a,b,c){var d=a("lodash"),e=a("../parse"),f=a("../static"),g=e.update,h=e.evaluate,i=a("../utils"),j=i.domEach,k=Array.prototype.slice;c._makeDomArray=function n(a){return null==a?[]:a.cheerio?a.get():Array.isArray(a)?d.flatten(a.map(n,this)):"string"==typeof a?h(a,this.options):[a]};var l=function(a){return function(){var b=this,c=k.call(arguments),d=this._makeDomArray(c);return"function"==typeof c[0]?j(this,function(e,g){d=b._makeDomArray(c[0].call(g,e,f.html(g.children))),a(d,g.children,g)}):j(this,function(b,c){a(d,c.children,c)})}},m=function(a,b,c,d,e){var f,g,h,i,j,k=[b,c].concat(d),l=a[b-1]||null,m=a[b]||null;for(f=0,g=d.length;g>f;++f)i=d[f],j=i.parent||i.root,h=j&&j.children.indexOf(d[f]),j&&h>-1&&(j.children.splice(h,1),e===j&&b>h&&k[0]--),i.root=null,i.parent=e,i.prev&&(i.prev.next=i.next||null),i.next&&(i.next.prev=i.prev||null),i.prev=d[f-1]||l,i.next=d[f+1]||m;return l&&(l.next=d[0]),m&&(m.prev=d[d.length-1]),a.splice.apply(a,k)};c.append=l(function(a,b,c){m(b,b.length,0,a,c)}),c.prepend=l(function(a,b,c){m(b,0,0,a,c)}),c.after=function(){var a=k.call(arguments),b=this._makeDomArray(a),c=this;return j(this,function(d,e){var g=e.parent||e.root;if(g){var h=g.children,i=h.indexOf(e);~i&&("function"==typeof a[0]&&(b=c._makeDomArray(a[0].call(e,d,f.html(e.children)))),m(h,++i,0,b,g))}}),this},c.before=function(){var a=k.call(arguments),b=this._makeDomArray(a),c=this;return j(this,function(d,e){var g=e.parent||e.root;if(g){var h=g.children,i=h.indexOf(e);~i&&("function"==typeof a[0]&&(b=c._makeDomArray(a[0].call(e,d,f.html(e.children)))),m(h,i,0,b,g))}}),this},c.remove=function(a){var b=this;return a&&(b=b.filter(a)),j(b,function(a,b){var c=b.parent||b.root;if(c){var d=c.children,e=d.indexOf(b);~e&&(d.splice(e,1),b.prev&&(b.prev.next=b.next),b.next&&(b.next.prev=b.prev),b.prev=b.next=b.parent=b.root=null)}}),this},c.replaceWith=function(a){var b=this;return j(this,function(c,d){var e=d.parent||d.root;if(e){var f,h=e.children,i=b._makeDomArray("function"==typeof a?a.call(d,c,d):a);g(i,null),f=h.indexOf(d),m(h,f,1,i,e),d.parent=d.prev=d.next=d.root=null}}),this},c.empty=function(){return j(this,function(a,b){d.each(b.children,function(a){a.next=a.prev=a.parent=null}),b.children.length=0}),this},c.html=function(a){if(void 0===a)return this[0]&&this[0].children?f.html(this[0].children,this.options):null;var b=this.options;return j(this,function(c,e){d.each(e.children,function(a){a.next=a.prev=a.parent=null});var f=a.cheerio?a.clone().get():h(a,b);g(f,e)}),this},c.toString=function(){return f.html(this)},c.text=function(a){return void 0===a?f.text(this):"function"==typeof a?j(this,function(b,d){var e=[d];return c.text.call(e,a.call(d,b,f.text(e)))}):(j(this,function(b,c){d.each(c.children,function(a){a.next=a.prev=a.parent=null});var e={data:a,type:"text",parent:c,prev:null,next:null,children:[]};g(e,c)}),this)},c.clone=function(){return this._make(f.html(this,this.options))}},{"../parse":7,"../static":8,"../utils":9,lodash:61}],5:[function(a,b,c){function d(a,b,d,e){for(var f=[];b&&f.length<e;)(!d||c.filter.call([b],d,a).length)&&f.push(b),b=b.parent;return f}var e=a("lodash"),f=a("CSSselect"),g=a("../utils"),h=g.domEach,i=a("htmlparser2").DomUtils.uniqueSort,j=g.isTag;c.find=function(a){var b,c=e.reduce(this,function(a,b){return a.concat(e.filter(b.children,j))},[]),d=this.constructor.contains;return a&&"string"!=typeof a?(b=a.cheerio?a.get():[a],this._make(b.filter(function(a){var b,c;for(b=0,c=this.length;c>b;++b)if(d(this[b],a))return!0},this))):this._make(f(a,c,this.options))},c.parent=function(a){var b=[];return h(this,function(a,c){var d=c.parent;d&&b.indexOf(d)<0&&b.push(d)}),arguments.length&&(b=c.filter.call(b,a,this)),this._make(b)},c.parents=function(a){var b=[];return this.get().reverse().forEach(function(c){d(this,c.parent,a,1/0).forEach(function(a){-1===b.indexOf(a)&&b.push(a)})},this),this._make(b)},c.parentsUntil=function(a,b){var c,d,e=[];return"string"==typeof a?c=f(a,this.parents().toArray(),this.options)[0]:a&&a.cheerio?d=a.toArray():a&&(c=a),this.toArray().reverse().forEach(function(a){for(;(a=a.parent)&&(c&&a!==c||d&&-1===d.indexOf(a)||!c&&!d);)j(a)&&-1===e.indexOf(a)&&e.push(a)},this),this._make(b?f(b,e,this.options):e)},c.closest=function(a){var b=[];return a?(h(this,function(c,e){var f=d(this,e,a,1)[0];f&&b.indexOf(f)<0&&b.push(f)}.bind(this)),this._make(b)):this._make(b)},c.next=function(a){if(!this[0])return this;var b=[];return e.forEach(this,function(a){for(;a=a.next;)if(j(a))return void b.push(a)}),a?c.filter.call(b,a,this):this._make(b)},c.nextAll=function(a){if(!this[0])return this;var b=[];return e.forEach(this,function(a){for(;a=a.next;)j(a)&&-1===b.indexOf(a)&&b.push(a)}),a?c.filter.call(b,a,this):this._make(b)},c.nextUntil=function(a,b){if(!this[0])return this;var d,g,h=[];return"string"==typeof a?d=f(a,this.nextAll().get(),this.options)[0]:a&&a.cheerio?g=a.get():a&&(d=a),e.forEach(this,function(a){for(;(a=a.next)&&(d&&a!==d||g&&-1===g.indexOf(a)||!d&&!g);)j(a)&&-1===h.indexOf(a)&&h.push(a)}),b?c.filter.call(h,b,this):this._make(h)},c.prev=function(a){if(!this[0])return this;var b=[];return e.forEach(this,function(a){for(;a=a.prev;)if(j(a))return void b.push(a)}),a?c.filter.call(b,a,this):this._make(b)},c.prevAll=function(a){if(!this[0])return this;var b=[];return e.forEach(this,function(a){for(;a=a.prev;)j(a)&&-1===b.indexOf(a)&&b.push(a)}),a?c.filter.call(b,a,this):this._make(b)},c.prevUntil=function(a,b){if(!this[0])return this;var d,g,h=[];return"string"==typeof a?d=f(a,this.prevAll().get(),this.options)[0]:a&&a.cheerio?g=a.get():a&&(d=a),e.forEach(this,function(a){for(;(a=a.prev)&&(d&&a!==d||g&&-1===g.indexOf(a)||!d&&!g);)j(a)&&-1===h.indexOf(a)&&h.push(a)}),b?c.filter.call(h,b,this):this._make(h)},c.siblings=function(a){var b=this.parent(),d=e.filter(b?b.children():this.siblingsAndMe(),function(a){return j(a)&&!this.is(a)},this);return void 0!==a?c.filter.call(d,a,this):this._make(d)},c.children=function(a){var b=e.reduce(this,function(a,b){return a.concat(e.filter(b.children,j))},[]);return void 0===a?this._make(b):"number"==typeof a?this._make(b[a]):c.filter.call(b,a,this)},c.contents=function(){return this._make(e.reduce(this,function(a,b){return a.push.apply(a,b.children),a},[]))},c.each=function(a){for(var b=0,c=this.length;c>b&&a.call(this[b],b,this[b])!==!1;)++b;return this},c.map=function(a){return this._make(e.reduce(this,function(b,c,d){var e=a.call(c,d,c);return null==e?b:b.concat(e)},[]))};var k=function(a){return function(b,c){var d;return c=c||this,d="string"==typeof b?f.compile(b,c.options):"function"==typeof b?function(a,c){return b.call(a,c,a)}:b.cheerio?b.is.bind(b):function(a){return b===a},c._make(a(this,d))}};c.filter=k(e.filter),c.not=k(e.reject),c.has=function(a){var b=this;return c.filter.call(this,function(){return b._make(this).find(a).length>0})},c.first=function(){return this.length>1?this._make(this[0]):this},c.last=function(){return this.length>1?this._make(this[this.length-1]):this},c.eq=function(a){return a=+a,0===a&&this.length<=1?this:(0>a&&(a=this.length+a),this._make(this[a]?this[a]:[]))},c.get=function(a){return null==a?Array.prototype.slice.call(this):this[0>a?this.length+a:a]},c.index=function(a){var b,c;return 0===arguments.length?(b=this.parent().children(),c=this[0]):"string"==typeof a?(b=this._make(a),c=this[0]):(b=this,c=a.cheerio?a[0]:a),b.get().indexOf(c)},c.slice=function(){return this._make([].slice.apply(this,arguments))},c.end=function(){return this.prevObject||this._make([])},c.add=function(a,b){for(var c=this._make(a,b),d=i(c.get().concat(this.get())),e=0;e<d.length;++e)c[e]=d[e];return c.length=d.length,c},c.addBack=function(a){return this.add(arguments.length?this.prevObject.filter(a):this.prevObject)}},{"../utils":9,CSSselect:10,htmlparser2:44,lodash:61}],6:[function(a,b){var c=a("./parse"),d=a("lodash"),e=[a("./api/attributes"),a("./api/traversing"),a("./api/manipulation"),a("./api/css")],f=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,g=b.exports=function(a,b,e,f){return this instanceof g?(this.options=d.defaults(f||{},this.options),a?(e&&("string"==typeof e&&(e=c(e,this.options)),this._root=g.call(this,e)),a.cheerio?a:(i(a)&&(a=[a]),Array.isArray(a)?(d.forEach(a,function(a,b){this[b]=a},this),this.length=a.length,this):"string"==typeof a&&h(a)?g.call(this,c(a,this.options).children):(b?"string"==typeof b?h(b)?(b=c(b,this.options),b=g.call(this,b)):(a=[b,a].join(" "),b=this._root):b.cheerio||(b=g.call(this,b)):b=this._root,b?b.find(a):this))):this):new g(a,b,e,f)};d.extend(g,a("./static")),g.prototype.cheerio="[cheerio object]",g.prototype.options={withDomLvl1:!0,normalizeWhitespace:!1,xmlMode:!1,decodeEntities:!0},g.prototype.length=0,g.prototype.splice=Array.prototype.splice;var h=function(a){if("<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3)return!0;var b=f.exec(a);return!(!b||!b[1])};g.prototype._make=function(a,b){var c=new g(a,b,this._root,this.options);return c.prevObject=this,c},g.prototype.toArray=function(){return this.get()},e.forEach(function(a){d.extend(g.prototype,a)});var i=function(a){return a.name||"text"===a.type||"comment"===a.type}},{"./api/attributes":2,"./api/css":3,"./api/manipulation":4,"./api/traversing":5,"./parse":7,"./static":8,lodash:61}],7:[function(a,b,c){(function(d){var e=a("htmlparser2");c=b.exports=function(a,b){var d=c.evaluate(a,b),e=c.evaluate("<root></root>",b)[0];return e.type="root",c.update(d,e),e},c.evaluate=function(a,b){var c;return c="string"==typeof a||d.isBuffer(a)?e.parseDOM(a,b):a},c.update=function(a,b){Array.isArray(a)||(a=[a]),b?b.children=a:b=null;for(var c=0;c<a.length;c++){var d=a[c],e=d.parent||d.root,f=e&&e.children;f&&f!==a&&(f.splice(f.indexOf(d),1),d.prev&&(d.prev.next=d.next),d.next&&(d.next.prev=d.prev)),b?(d.prev=a[c-1]||null,d.next=a[c+1]||null):d.prev=d.next=null,b&&"root"===b.type?(d.root=b,d.parent=null):(d.root=null,d.parent=b)}return b}}).call(this,a("buffer").Buffer)},{buffer:82,htmlparser2:44}],8:[function(a,b,c){var d=a("CSSselect"),e=a("./parse"),f=a("dom-serializer"),g=a("lodash");c.load=function(b,d){var f=a("./cheerio");d=g.defaults(d||{},f.prototype.options);var h=e(b,d),i=function(a,b,c,e){return e=g.defaults(e||{},d),f.call(this,a,b,c||h,e)};return i.prototype=f.prototype,g.merge(i,c),i._root=h,i._options=d,i},c.html=function(b,c){var e=a("./cheerio");return"[object Object]"!==Object.prototype.toString.call(b)||c||"length"in b||"type"in b||(c=b,b=void 0),c=g.defaults(c||{},this._options,e.prototype.options),b?(b="string"==typeof b?d(b,this._root,c):b,f(b,c)):this._root&&this._root.children?f(this._root.children,c):""},c.xml=function(a){return a?(a="string"==typeof a?d(a,this._root,this.options):a,f(a,{xmlMode:!0})):this._root&&this._root.children?f(this._root.children,{xmlMode:!0}):""},c.text=function(a){if(!a)return"";for(var b,d="",e=a.length,f=0;e>f;f++)b=a[f],"text"===b.type?d+=b.data:b.children&&"comment"!==b.type&&(d+=c.text(b.children));return d},c.parseHTML=function(a,b,c){var d;return a&&"string"==typeof a?("boolean"==typeof b&&(c=b),d=this.load(a),c||d("script").remove(),d.root()[0].children):null},c.root=function(){return this(this._root)},c.contains=function(a,b){if(b===a)return!1;for(;b&&b!==b.parent;)if(b=b.parent,b===a)return!0;return!1}},{"./cheerio":6,"./parse":7,CSSselect:10,"dom-serializer":27,lodash:61}],9:[function(a,b,c){var d={tag:!0,script:!0,style:!0};c.isTag=function(a){return a.type&&(a=a.type),d[a]||!1},c.camelCase=function(a){return a.replace(/[_.-](\w|$)/g,function(a,b){return b.toUpperCase()})},c.cssCase=function(a){return a.replace(/[A-Z]/g,"-$&").toLowerCase()},c.domEach=function(a,b){for(var c=0,d=a.length;d>c&&b(c,a[c])!==!1;)++c;return a}},{}],10:[function(a,b){"use strict";function c(a){return function(b,c,d){return"function"!=typeof b&&(b=n(b,d)),c=Array.isArray(c)?k(c):j(c),a(b,c)}}function d(a,b,c){return("function"==typeof b?b:m(b,c))(a)}function e(a,b,c){return o(a,b,c)}b.exports=e;var f=a("./lib/pseudos.js"),g=a("domutils"),h=g.findOne,i=g.findAll,j=g.getChildren,k=g.removeSubsets,l=a("./lib/basefunctions.js").falseFunc,m=a("./lib/compile.js"),n=m.compileUnsafe,o=c(function(a,b){return a!==l&&b&&0!==b.length?i(a,b):[]}),p=c(function(a,b){return a!==l&&b&&0!==b.length?h(a,b):null});e.compile=m,e.filters=f.filters,e.pseudos=f.pseudos,e.selectAll=o,e.selectOne=p,e.is=d,e.parse=m,e.iterate=o},{"./lib/basefunctions.js":12,"./lib/compile.js":13,"./lib/pseudos.js":16,domutils:19}],11:[function(a,b){var c=a("domutils"),d=c.hasAttrib,e=c.getAttributeValue,f=a("./basefunctions.js").falseFunc,g=/[-[\]{}()*+?.,\\^$|#\s]/g,h={__proto__:null,equals:function(a,b){var c=b.name,d=b.value;return b.ignoreCase?(d=d.toLowerCase(),function(b){var f=e(b,c);return null!=f&&f.toLowerCase()===d&&a(b)}):function(b){return e(b,c)===d&&a(b)}},hyphen:function(a,b){var c=b.name,d=b.value,f=d.length;return b.ignoreCase?(d=d.toLowerCase(),function(b){var g=e(b,c);return null!=g&&(g.length===f||"-"===g.charAt(f))&&g.substr(0,f).toLowerCase()===d&&a(b)}):function(b){var g=e(b,c);return null!=g&&g.substr(0,f)===d&&(g.length===f||"-"===g.charAt(f))&&a(b)}},element:function(a,b){var c=b.name,d=b.value;if(/\s/.test(d))return f;d=d.replace(g,"\\$&");var h="(?:^|\\s)"+d+"(?:$|\\s)",i=b.ignoreCase?"i":"",j=new RegExp(h,i);return function(b){var d=e(b,c);return null!=d&&j.test(d)&&a(b)}},exists:function(a,b){var c=b.name;return function(b){return d(b,c)&&a(b)}},start:function(a,b){var c=b.name,d=b.value,g=d.length;return 0===g?f:b.ignoreCase?(d=d.toLowerCase(),function(b){var f=e(b,c);return null!=f&&f.substr(0,g).toLowerCase()===d&&a(b)}):function(b){var f=e(b,c);return null!=f&&f.substr(0,g)===d&&a(b)}},end:function(a,b){var c=b.name,d=b.value,g=-d.length;return 0===g?f:b.ignoreCase?(d=d.toLowerCase(),function(b){var f=e(b,c);return null!=f&&f.substr(g).toLowerCase()===d&&a(b)}):function(b){var f=e(b,c);return null!=f&&f.substr(g)===d&&a(b)}},any:function(a,b){var c=b.name,d=b.value;if(""===d)return f;if(b.ignoreCase){var h=new RegExp(d.replace(g,"\\$&"),"i");return function(b){var d=e(b,c);return null!=d&&h.test(d)&&a(b)}}return function(b){var f=e(b,c);return null!=f&&f.indexOf(d)>=0&&a(b)}},not:function(a,b){var c=b.name,d=b.value;return""===d?function(b){return!!e(b,c)&&a(b)}:b.ignoreCase?(d=d.toLowerCase(),function(b){var f=e(b,c);return null!=f&&f.toLowerCase()!==d&&a(b)}):function(b){return e(b,c)!==d&&a(b)}}};b.exports={compile:function(a,b){return h[b.action](a,b)},rules:h}},{"./basefunctions.js":12,domutils:19}],12:[function(a,b){b.exports={trueFunc:function(){return!0},falseFunc:function(){return!1}}},{}],13:[function(a,b){function c(a,b){var c=d(a,b);return function(a){return i(a)&&c(a)}}function d(a,b){return g(a,b).map(e).reduce(f,n)}function e(a){return 0===a.length?n:k(a).reduce(function(a,b){return a===n?a:j[b.type](a,b)},m)}function f(a,b){return b===n||a===m?a:a===n||b===m?b:function(c){return a(c)||b(c)}}b.exports=c,b.exports.compileUnsafe=d;var g=a("CSSwhat"),h=a("domutils"),i=h.isTag,j=a("./general.js"),k=a("./sort.js"),l=a("./basefunctions.js"),m=l.trueFunc,n=l.falseFunc,o=a("./pseudos.js"),p=o.filters,q=o.pseudos.parent,r=h.existsOne,s=h.getChildren;p.not=function(a,b){var c=d(b);return c===n?a:c===m?n:function(b){return!c(b)&&a(b)}},p.has=function(a,b){var d=c(b);return d===n?n:d===m?function(b){return q(b)&&a(b)}:function(b){return a(b)&&r(d,s(b))}}},{"./basefunctions.js":12,"./general.js":14,"./pseudos.js":16,"./sort.js":17,CSSwhat:18,domutils:19}],14:[function(a,b){var c=a("domutils"),d=c.isTag,e=c.getParent,f=c.getChildren,g=c.getSiblings,h=c.getName;b.exports={__proto__:null,attribute:a("./attributes.js").compile,pseudo:a("./pseudos.js").compile,tag:function(a,b){var c=b.name;return function(b){return h(b)===c&&a(b)}},descendant:function(a){return function(b){for(var c=!1;!c&&(b=e(b));)c=a(b);return c}},parent:function(a){return function(b){return f(b).some(a)}},child:function(a){return function(b){var c=e(b);return!!c&&a(c)}},sibling:function(a){return function(b){for(var c=g(b),e=0;e<c.length;e++)if(d(c[e])){if(c[e]===b)break;if(a(c[e]))return!0}return!1}},adjacent:function(a){return function(b){for(var c,e=g(b),f=0;f<e.length;f++)if(d(e[f])){if(e[f]===b)break;c=e[f]}return!!c&&a(c)}},universal:function(a){return a}}},{"./attributes.js":11,"./pseudos.js":16,domutils:19}],15:[function(a,b){function c(a){if(a=a.trim().toLowerCase(),"even"===a)return[2,0];if("odd"===a)return[2,1];var b=a.match(h);if(!b)throw new SyntaxError("n-th rule couldn't be parsed ('"+a+"')");var c;return b[1]?(c=parseInt(b[1],10),c||(c="-"===b[1].charAt(0)?-1:1)):c=0,[c,b[3]?parseInt((b[2]||"")+b[3],10):0]}function d(a){var b=a[0],c=a[1]-1;if(0>c&&0>=b)return g;if(-1===b)return function(a){return c>=a};if(0===b)return function(a){return a===c};if(1===b)return 0>c?f:function(a){return a>=c};var d=c%b;return 0>d&&(d+=b),b>1?function(a){return a>=c&&a%b===d}:(b*=-1,function(a){return c>=a&&a%b===d})}var e=a("./basefunctions.js"),f=e.trueFunc,g=e.falseFunc;b.exports=function(a){return d(c(a))},b.exports.parse=c,b.exports.compile=d;var h=/^([+\-]?\d*n)?\s*(?:([+\-]?)\s*(\d+))?$/},{"./basefunctions.js":12}],16:[function(a,b){function c(a){for(var b=0;a&&b<a.length;b++)if(h(a[b]))return a[b]}function d(a,b){var c={name:a,value:b};return function(a){return q(a,c)}}function e(a){return function(b){return!!j(b)&&a(b)}}function f(a,b,c){if(null===c){if(a.length>1)throw new SyntaxError("pseudo-selector :"+b+" requires an argument")}else if(1===a.length)throw new SyntaxError("pseudo-selector :"+b+" doesn't have any arguments")}var g=a("domutils"),h=g.isTag,i=g.getText,j=g.getParent,k=g.getChildren,l=g.getSiblings,m=g.hasAttrib,n=g.getName,o=g.getAttributeValue,p=a("./nth-check.js"),q=a("./attributes.js").rules.equals,r=a("./basefunctions.js"),s=r.trueFunc,t=r.falseFunc,u={contains:function(a,b){return'"'!==b.charAt(0)&&"'"!==b.charAt(0)||b.charAt(0)!==b.substr(-1)||(b=b.slice(1,-1)),function(c){return i(c).indexOf(b)>=0&&a(c)}},"first-child":function(a){return function(b){return c(l(b))===b&&a(b)}},"last-child":function(a){return function(b){for(var c=l(b),d=c.length-1;d>=0;d--){if(c[d]===b)return a(b);if(h(c[d]))break}return!1}},"first-of-type":function(a){return function(b){for(var c=l(b),d=0;d<c.length;d++)if(h(c[d])){if(c[d]===b)return a(b);if(n(c[d])===n(b))break}return!1}},"last-of-type":function(a){return function(b){for(var c=l(b),d=c.length-1;d>=0;d--)if(h(c[d])){if(c[d]===b)return a(b);if(n(c[d])===n(b))break}return!1}},"only-of-type":function(a){return function(b){for(var c=l(b),d=0,e=c.length;e>d;d++)if(h(c[d])){if(c[d]===b)continue;if(n(c[d])===n(b))return!1}return a(b)}},"only-child":function(a){return function(b){for(var c=l(b),d=0;d<c.length;d++)if(h(c[d])&&c[d]!==b)return!1;return a(b)}},"nth-child":function(a,b){var c=p(b);return c===t?c:c===s?e(a):function(b){for(var d=l(b),e=0,f=0;e<d.length;e++)if(h(d[e])){if(d[e]===b)break;f++}return c(f)&&a(b)}},"nth-last-child":function(a,b){var c=p(b);return c===t?c:c===s?e(a):function(b){for(var d=l(b),e=0,f=d.length-1;f>=0;f--)if(h(d[f])){if(d[f]===b)break;e++}return c(e)&&a(b)}},"nth-of-type":function(a,b){var c=p(b);return c===t?c:c===s?e(a):function(b){for(var d=l(b),e=0,f=0;f<d.length;f++)if(h(d[f])){if(d[f]===b)break;n(d[f])===n(b)&&e++}return c(e)&&a(b)}},"nth-last-of-type":function(a,b){var c=p(b);return c===t?c:c===s?e(a):function(b){for(var d=l(b),e=0,f=d.length-1;f>=0&&d[f]!==b;f--)n(d[f])===n(b)&&e++;return c(e)&&a(b)}},checkbox:d("type","checkbox"),file:d("type","file"),password:d("type","password"),radio:d("type","radio"),reset:d("type","reset"),image:d("type","image"),submit:d("type","submit")},v={root:function(a){return!j(a)},empty:function(a){return!k(a).some(function(a){return h(a)||"text"===a.type})},selected:function(a){if(m(a,"selected"))return!0;if("option"!==n(a))return!1;var b=j(a);if(!b||"select"!==n(b))return!1;for(var c=k(b),d=!1,e=0;e<c.length;e++)if(h(c[e]))if(c[e]===a)d=!0;else{if(!d)return!1;if(m(c[e],"selected"))return!1}return d},disabled:function(a){return m(a,"disabled")},enabled:function(a){return!m(a,"disabled")},checked:function(a){return m(a,"checked")||v.selected(a)},parent:function(a){return!v.empty(a)},header:function(a){var b=n(a);return"h1"===b||"h2"===b||"h3"===b||"h4"===b||"h5"===b||"h6"===b},button:function(a){var b=n(a);return"button"===b||"input"===b&&"button"===o(a,"type")},input:function(a){var b=n(a);return"input"===b||"textarea"===b||"select"===b||"button"===b},text:function(a){var b;return"input"===n(a)&&(!(b=o(a,"type"))||"text"===b.toLowerCase())}};b.exports={compile:function(a,b){var c=b.name,d=b.data;if("function"==typeof u[c])return f(u[c],c,d),u[c](a,d);if("function"==typeof v[c]){var e=v[c];return f(e,c,d),function(b){return e(b,d)&&a(b)}}throw new SyntaxError("unmatched pseudo-class :"+c)},filters:u,pseudos:v}},{"./attributes.js":11,"./basefunctions.js":12,"./nth-check.js":15,domutils:19}],17:[function(a,b){function c(a){for(var b=1;b<a.length;b++){var c=e[a[b].type];if(!(0>c))for(var g=b-1;g>=0&&(!(c>e[a[g].type])&&(c===d&&e[a[g].type]===d&&f[a[b].action]<=f[a[g].action]));g--){var h=a[g+1];a[g+1]=a[g],a[g]=h}}return a}b.exports=c;var d=1,e={__proto__:null,universal:5,tag:3,attribute:d,pseudo:0,descendant:-1,child:-1,parent:-1,sibling:-1,adjacent:-1},f={__proto__:null,exists:8,equals:7,not:6,start:5,end:4,any:3,hyphen:2,element:1}},{}],18:[function(a,b){"use strict";function c(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)}function d(a){return a.replace(i,c)}function e(a){for(var b=1,c=1,d=a.length;c>0&&d>b;b++)"("===a.charAt(b)?c++:")"===a.charAt(b)&&c--;return b}function f(a,b){function c(){var b=a.match(h)[0];return a=a.substr(b.length),d(b)}a=(a+"").trimLeft();for(var f,i,n,o=[],p=[],q=!1;""!==a;)if(h.test(a))q&&(p.push({type:"descendant"}),q=!1),n=c(),b&&("lowerCaseTags"in b?!b.lowerCaseTags:b.xmlMode)||(n=n.toLowerCase()),p.push({type:"tag",name:n});else if(g.test(a))q=!0,a=a.trimLeft();else{if(i=a.charAt(0),a=a.substr(1),i in l){p.push({type:l[i]}),a=a.trimLeft(),q=!1;continue}if(","===i){if(0===p.length)throw new SyntaxError("empty sub-selector");o.push(p),p=[],a=a.trimLeft(),q=!1;continue}if(q&&(p.push({type:"descendant"}),q=!1),"*"===i)p.push({type:"universal"});else if(i in m)p.push({type:"attribute",name:m[i][0],action:m[i][1],value:c(),ignoreCase:!1});else if("["===i){if(f=a.match(j),!f)throw new SyntaxError("Malformed attribute selector: "+a);a=a.substr(f[0].length),n=d(f[1]),b&&("lowerCaseAttributeNames"in b?!b.lowerCaseAttributeNames:b.xmlMode)||(n=n.toLowerCase()),p.push({type:"attribute",name:n,action:k[f[2]],value:d(f[4]||f[5]||""),ignoreCase:!!f[6]})}else{if(":"!==i)throw new SyntaxError("Unmatched selector: "+i+a);if(n=c().toLowerCase(),f=null,"("===a.charAt(0)){var r=e(a);f=a.substr(1,r-2),a=a.substr(r)}p.push({type:"pseudo",name:n,data:f})}}if(o.length>0&&0===p.length)throw new SyntaxError("empty sub-selector");return o.push(p),o}b.exports=f;var g=/^\s/,h=/^(?:\\.|[\w\-\u00c0-\uFFFF])+/,i=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,j=/^\s*((?:\\.|[\w\u00c0-\uFFFF\-])+)\s*(?:(\S?)=\s*(?:(['"])(.*?)\3|(#?(?:\\.|[\w\u00c0-\uFFFF\-])*)|)|)\s*(i)?\]/,k={__proto__:null,undefined:"exists","":"equals","~":"element","^":"start",$:"end","*":"any","!":"not","|":"hyphen"},l={__proto__:null,">":"child","<":"parent","~":"sibling","+":"adjacent"},m={__proto__:null,"#":["id","equals"],".":["class","element"]}},{}],19:[function(a,b){var c=b.exports;[a("./lib/stringify"),a("./lib/traversal"),a("./lib/manipulation"),a("./lib/querying"),a("./lib/legacy"),a("./lib/helpers")].forEach(function(a){Object.keys(a).forEach(function(b){c[b]=a[b].bind(c)})})},{"./lib/helpers":20,"./lib/legacy":21,"./lib/manipulation":22,"./lib/querying":23,"./lib/stringify":24,"./lib/traversal":25}],20:[function(a,b,c){c.removeSubsets=function(a){for(var b,c,d,e=a.length;--e>-1;){for(b=c=a[e],a[e]=null,d=!0;c;){if(a.indexOf(c)>-1){d=!1,a.splice(e,1);break}c=c.parent}d&&(a[e]=b)}return a}},{}],21:[function(a,b,c){function d(a,b){return"function"==typeof b?function(c){return c.attribs&&b(c.attribs[a])}:function(c){return c.attribs&&c.attribs[a]===b}}function e(a,b){return function(c){return a(c)||b(c)}}var f=a("domelementtype"),g=c.isTag=f.isTag;c.testElement=function(a,b){for(var c in a)if(a.hasOwnProperty(c)){if("tag_name"===c){if(!g(b)||!a.tag_name(b.name))return!1}else if("tag_type"===c){if(!a.tag_type(b.type))return!1}else if("tag_contains"===c){if(g(b)||!a.tag_contains(b.data))return!1}else if(!b.attribs||!a[c](b.attribs[c]))return!1}else;return!0};var h={tag_name:function(a){return"function"==typeof a?function(b){return g(b)&&a(b.name)}:"*"===a?g:function(b){return g(b)&&b.name===a}},tag_type:function(a){return"function"==typeof a?function(b){return a(b.type)}:function(b){return b.type===a}},tag_contains:function(a){return"function"==typeof a?function(b){return!g(b)&&a(b.data)}:function(b){return!g(b)&&b.data===a}}};c.getElements=function(a,b,c,f){var g=Object.keys(a).map(function(b){var c=a[b];return b in h?h[b](c):d(b,c)});return 0===g.length?[]:this.filter(g.reduce(e),b,c,f)},c.getElementById=function(a,b,c){return Array.isArray(b)||(b=[b]),this.findOne(d("id",a),b,c!==!1)},c.getElementsByTagName=function(a,b,c,d){return this.filter(h.tag_name(a),b,c,d)},c.getElementsByTagType=function(a,b,c,d){return this.filter(h.tag_type(a),b,c,d)}},{domelementtype:26}],22:[function(a,b,c){c.removeElement=function(a){if(a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.parent){var b=a.parent.children;b.splice(b.lastIndexOf(a),1)}},c.replaceElement=function(a,b){var c=b.prev=a.prev;c&&(c.next=b);var d=b.next=a.next;d&&(d.prev=b);var e=b.parent=a.parent;if(e){var f=e.children;f[f.lastIndexOf(a)]=b}},c.appendChild=function(a,b){if(b.parent=a,1!==a.children.push(b)){var c=a.children[a.children.length-2];c.next=b,b.prev=c,b.next=null}},c.append=function(a,b){var c=a.parent,d=a.next;if(b.next=d,b.prev=a,a.next=b,b.parent=c,d){if(d.prev=b,c){var e=c.children;e.splice(e.lastIndexOf(d),0,b)}}else c&&c.children.push(b)},c.prepend=function(a,b){var c=a.parent;if(c){var d=c.children;d.splice(d.lastIndexOf(a),0,b)}a.prev&&(a.prev.next=b),b.parent=c,b.prev=a.prev,b.next=a,a.prev=b}},{}],23:[function(a,b){function c(a,b,c,e){return Array.isArray(b)||(b=[b]),"number"==typeof e&&isFinite(e)||(e=1/0),d(a,b,c!==!1,e)
-}function d(a,b,c,e){for(var f,g=[],h=0,i=b.length;i>h&&!(a(b[h])&&(g.push(b[h]),--e<=0))&&(f=b[h].children,!(c&&f&&f.length>0&&(f=d(a,f,c,e),g=g.concat(f),e-=f.length,0>=e)));h++);return g}function e(a,b){for(var c=0,d=b.length;d>c;c++)if(a(b[c]))return b[c];return null}function f(a,b){for(var c=null,d=0,e=b.length;e>d&&!c;d++)i(b[d])&&(a(b[d])?c=b[d]:b[d].children.length>0&&(c=f(a,b[d].children)));return c}function g(a,b){for(var c=0,d=b.length;d>c;c++)if(i(b[c])&&(a(b[c])||b[c].children.length>0&&g(a,b[c].children)))return!0;return!1}function h(a,b){for(var c=[],d=0,e=b.length;e>d;d++)i(b[d])&&(a(b[d])&&c.push(b[d]),b[d].children.length>0&&(c=c.concat(h(a,b[d].children))));return c}var i=a("domelementtype").isTag;b.exports={filter:c,find:d,findOneChild:e,findOne:f,existsOne:g,findAll:h}},{domelementtype:26}],24:[function(a,b){function c(a){return a.children?a.children.map(d).join(""):""}function d(a){switch(a.type){case f.Text:return a.data;case f.Comment:return"<!--"+a.data+"-->";case f.Directive:return"<"+a.data+">";case f.CDATA:return"<!CDATA "+c(a)+"]]>"}var b="<"+a.name;if("attribs"in a)for(var d in a.attribs)if(a.attribs.hasOwnProperty(d)){b+=" "+d;var e=a.attribs[d];null==e?d in h||(b+='=""'):b+='="'+e+'"'}return a.name in i&&0===a.children.length?b+" />":b+">"+c(a)+"</"+a.name+">"}function e(a){return Array.isArray(a)?a.map(e).join(""):g(a)||a.type===f.CDATA?e(a.children):a.type===f.Text?a.data:""}var f=a("domelementtype"),g=f.isTag;b.exports={getInnerHTML:c,getOuterHTML:d,getText:e};var h={__proto__:null,async:!0,autofocus:!0,autoplay:!0,checked:!0,controls:!0,defer:!0,disabled:!0,hidden:!0,loop:!0,multiple:!0,open:!0,readonly:!0,required:!0,scoped:!0,selected:!0},i={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,link:!0,meta:!0,param:!0,embed:!0}},{domelementtype:26}],25:[function(a,b,c){var d=c.getChildren=function(a){return a.children},e=c.getParent=function(a){return a.parent};c.getSiblings=function(a){var b=e(a);return b?d(b):[a]},c.getAttributeValue=function(a,b){return a.attribs&&a.attribs[b]},c.hasAttrib=function(a,b){return hasOwnProperty.call(a.attribs,b)},c.getName=function(a){return a.name}},{}],26:[function(a,b){b.exports={Text:"text",Directive:"directive",Comment:"comment",Script:"script",Style:"style",Tag:"tag",CDATA:"cdata",isTag:function(a){return"tag"===a.type||"script"===a.type||"style"===a.type}}},{}],27:[function(a,b){function c(a,b){if(a){var c,d="";for(var e in a)c=a[e],d&&(d+=" "),d+=!c&&k[e]?e:e+'="'+(b.decodeEntities?j.encodeXML(c):c)+'"';return d}}function d(a,b){var d="<"+a.name,e=c(a.attribs,b);return e&&(d+=" "+e),!b.xmlMode||a.children&&0!==a.children.length?(d+=">",d+=n(a.children,b),(!m[a.name]||b.xmlMode)&&(d+="</"+a.name+">")):d+="/>",d}function e(a){return"<"+a.data+">"}function f(a,b){var c=a.data||"";return!b.decodeEntities||a.parent&&a.parent.name in l||(c=j.encodeXML(c)),c}function g(a){return"<![CDATA["+a.children[0].data+"]]>"}function h(a){return"<!--"+a.data+"-->"}var i=a("domelementtype"),j=a("entities"),k={__proto__:null,allowfullscreen:!0,async:!0,autofocus:!0,autoplay:!0,checked:!0,controls:!0,"default":!0,defer:!0,disabled:!0,hidden:!0,ismap:!0,loop:!0,multiple:!0,muted:!0,open:!0,readonly:!0,required:!0,reversed:!0,scoped:!0,seamless:!0,selected:!0,typemustmatch:!0},l={__proto__:null,style:!0,script:!0,xmp:!0,iframe:!0,noembed:!0,noframes:!0,plaintext:!0,noscript:!0},m={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,path:!0,circle:!0,ellipse:!0,line:!0,rect:!0,use:!0},n=b.exports=function(a,b){Array.isArray(a)||a.cheerio||(a=[a]),b=b||{};for(var c="",j=0;j<a.length;j++){var k=a[j];c+="root"===k.type?n(k.children,b):i.isTag(k)?d(k,b):k.type===i.Directive?e(k):k.type===i.Comment?h(k):k.type===i.CDATA?g(k):f(k,b)}return c}},{domelementtype:28,entities:29}],28:[function(a,b){b.exports=a(26)},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/node_modules/domelementtype/index.js":26}],29:[function(a,b,c){var d=a("./lib/encode.js"),e=a("./lib/decode.js");c.decode=function(a,b){return(!b||0>=b?e.XML:e.HTML)(a)},c.decodeStrict=function(a,b){return(!b||0>=b?e.XML:e.HTMLStrict)(a)},c.encode=function(a,b){return(!b||0>=b?d.XML:d.HTML)(a)},c.encodeXML=d.XML,c.encodeHTML4=c.encodeHTML5=c.encodeHTML=d.HTML,c.decodeXML=c.decodeXMLStrict=e.XML,c.decodeHTML4=c.decodeHTML5=c.decodeHTML=e.HTML,c.decodeHTML4Strict=c.decodeHTML5Strict=c.decodeHTMLStrict=e.HTMLStrict,c.escape=d.escape},{"./lib/decode.js":30,"./lib/encode.js":32}],30:[function(a,b){function c(a){var b=Object.keys(a).join("|"),c=e(a);b+="|#[xX][\\da-fA-F]+|#\\d+";var d=new RegExp("&(?:"+b+");","g");return function(a){return String(a).replace(d,c)}}function d(a,b){return b>a?1:-1}function e(a){return function(b){return"#"===b.charAt(1)?i("X"===b.charAt(2)||"x"===b.charAt(2)?parseInt(b.substr(3),16):parseInt(b.substr(2),10)):a[b.slice(1,-1)]}}var f=a("../maps/entities.json"),g=a("../maps/legacy.json"),h=a("../maps/xml.json"),i=a("./decode_codepoint.js"),j=c(h),k=c(f),l=function(){function a(a){return";"!==a.substr(-1)&&(a+=";"),k(a)}for(var b=Object.keys(g).sort(d),c=Object.keys(f).sort(d),h=0,i=0;h<c.length;h++)b[i]===c[h]?(c[h]+=";?",i++):c[h]+=";";var j=new RegExp("&(?:"+c.join("|")+"|#[xX][\\da-fA-F]+;?|#\\d+;?)","g"),k=e(f);return function(b){return String(b).replace(j,a)}}();b.exports={XML:j,HTML:l,HTMLStrict:k}},{"../maps/entities.json":34,"../maps/legacy.json":35,"../maps/xml.json":36,"./decode_codepoint.js":31}],31:[function(a,b){function c(a){if(a>=55296&&57343>=a||a>1114111)return"�";a in d&&(a=d[a]);var b="";return a>65535&&(a-=65536,b+=String.fromCharCode(a>>>10&1023|55296),a=56320|1023&a),b+=String.fromCharCode(a)}var d=a("../maps/decode.json");b.exports=c},{"../maps/decode.json":33}],32:[function(a,b,c){function d(a){return Object.keys(a).sort().reduce(function(b,c){return b[a[c]]="&"+c+";",b},{})}function e(a){var b=[],c=[];return Object.keys(a).forEach(function(a){1===a.length?b.push("\\"+a):c.push(a)}),c.unshift("["+b.join("")+"]"),new RegExp(c.join("|"),"g")}function f(a){return"&#x"+a.charCodeAt(0).toString(16).toUpperCase()+";"}function g(a){var b=a.charCodeAt(0),c=a.charCodeAt(1),d=1024*(b-55296)+c-56320+65536;return"&#x"+d.toString(16).toUpperCase()+";"}function h(a,b){function c(b){return a[b]}return function(a){return a.replace(b,c).replace(o,g).replace(n,f)}}function i(a){return a.replace(p,f).replace(o,g).replace(n,f)}var j=d(a("../maps/xml.json")),k=e(j);c.XML=h(j,k);var l=d(a("../maps/entities.json")),m=e(l);c.HTML=h(l,m);var n=/[^\0-\x7F]/g,o=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,p=e(j);c.escape=i},{"../maps/entities.json":34,"../maps/xml.json":36}],33:[function(a,b){b.exports={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376}},{}],34:[function(a,b){b.exports={Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",amp:"&",AMP:"&",andand:"⩕",And:"⩓",and:"∧",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angmsd:"∡",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",apacir:"⩯",ap:"≈",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxHd:"╤",boxhD:"╥",boxHD:"╦",boxhu:"┴",boxHu:"╧",boxhU:"╨",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsolb:"⧅",bsol:"\\",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",capand:"⩄",capbrcup:"⩉",capcap:"⩋",cap:"∩",Cap:"⋒",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cir:"○",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cup:"∪",Cup:"⋓",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",Darr:"↡",dArr:"⇓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",ddagger:"‡",ddarr:"⇊",DD:"ⅅ",dd:"ⅆ",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrowBar:"⤓",downarrow:"↓",DownArrow:"↓",Downarrow:"⇓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVectorBar:"⥖",DownLeftVector:"↽",DownRightTeeVector:"⥟",DownRightVectorBar:"⥗",DownRightVector:"⇁",DownTeeArrow:"↧",DownTee:"⊤",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",Ecirc:"Ê",ecirc:"ê",ecir:"≖",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",edot:"ė",eDot:"≑",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp13:" ",emsp14:" ",emsp:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",ge:"≥",gE:"≧",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",gescc:"⪩",ges:"⩾",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gla:"⪥",gl:"≷",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",gtcc:"⪧",gtcir:"⩺",gt:">",GT:">",Gt:"≫",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",harrcir:"⥈",harr:"↔",hArr:"⇔",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",Im:"ℑ",imof:"⊷",imped:"Ƶ",Implies:"⇒",incare:"℅","in":"∈",infin:"∞",infintie:"⧝",inodot:"ı",intcal:"⊺","int":"∫",Int:"∬",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larrb:"⇤",larrbfs:"⤟",larr:"←",Larr:"↞",lArr:"⇐",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",latail:"⤙",lAtail:"⤛",lat:"⪫",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",LeftArrowBar:"⇤",leftarrow:"←",LeftArrow:"←",Leftarrow:"⇐",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVectorBar:"⥙",LeftDownVector:"⇃",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTeeArrow:"↤",LeftTee:"⊣",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangleBar:"⧏",LeftTriangle:"⊲",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVectorBar:"⥘",LeftUpVector:"↿",LeftVectorBar:"⥒",LeftVector:"↼",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",lescc:"⪨",les:"⩽",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",llarr:"⇇",ll:"≪",Ll:"⋘",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoustache:"⎰",lmoust:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftrightarrow:"⟷",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longmapsto:"⟼",longrightarrow:"⟶",LongRightArrow:"⟶",Longrightarrow:"⟹",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",ltcc:"⪦",ltcir:"⩹",lt:"<",LT:"<",Lt:"≪",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",midast:"*",midcir:"⫰",mid:"∣",middot:"·",minusb:"⊟",minus:"−",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natural:"♮",naturals:"ℕ",natur:"♮",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",ne:"≠",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nlE:"≦̸",nle:"≰",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangleBar:"⧏̸",NotLeftTriangle:"⋪",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangleBar:"⧐̸",NotRightTriangle:"⋫",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",nparallel:"∦",npar:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",nprec:"⊀",npreceq:"⪯̸",npre:"⪯̸",nrarrc:"⤳̸",nrarr:"↛",nrArr:"⇏",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",Ocirc:"Ô",ocirc:"ô",ocir:"⊚",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",orarr:"↻",Or:"⩔",or:"∨",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",otimesas:"⨶",Otimes:"⨷",otimes:"⊗",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",para:"¶",parallel:"∥",par:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plus:"+",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",prap:"⪷",Pr:"⪻",pr:"≺",prcue:"≼",precapprox:"⪷",prec:"≺",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",pre:"⪯",prE:"⪳",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportional:"∝",Proportion:"∷",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarr:"→",Rarr:"↠",rArr:"⇒",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",Re:"ℜ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrowBar:"⇥",rightarrow:"→",RightArrow:"→",Rightarrow:"⇒",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVectorBar:"⥕",RightDownVector:"⇂",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTeeArrow:"↦",RightTee:"⊢",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangleBar:"⧐",RightTriangle:"⊳",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVectorBar:"⥔",RightUpVector:"↾",RightVectorBar:"⥓",RightVector:"⇀",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoustache:"⎱",rmoust:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",scap:"⪸",Scaron:"Š",scaron:"š",Sc:"⪼",sc:"≻",sccue:"≽",sce:"⪰",scE:"⪴",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdotb:"⊡",sdot:"⋅",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",solbar:"⌿",solb:"⧄",sol:"/",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squ:"□",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succapprox:"⪸",succ:"≻",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup1:"¹",sup2:"²",sup3:"³",sup:"⊃",Sup:"⋑",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"	",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",therefore:"∴",Therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",ThinSpace:" ",thinsp:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",timesbar:"⨱",timesb:"⊠",times:"×",timesd:"⨰",tint:"∭",toea:"⤨",topbot:"⌶",topcir:"⫱",top:"⊤",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",uarr:"↑",Uarr:"↟",uArr:"⇑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrowBar:"⤒",uparrow:"↑",UpArrow:"↑",Uparrow:"⇑",UpArrowDownArrow:"⇅",updownarrow:"↕",UpDownArrow:"↕",Updownarrow:"⇕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTeeArrow:"↥",UpTee:"⊥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",Vcy:"В",vcy:"в",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",veebar:"⊻",vee:"∨",Vee:"⋁",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xharr:"⟷",xhArr:"⟺",Xi:"Ξ",xi:"ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",yuml:"ÿ",Yuml:"Ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",zfr:"𝔷",Zfr:"ℨ",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"}
-},{}],35:[function(a,b){b.exports={Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",amp:"&",AMP:"&",Aring:"Å",aring:"å",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",brvbar:"¦",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",iquest:"¿",Iuml:"Ï",iuml:"ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",Ntilde:"Ñ",ntilde:"ñ",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",Ograve:"Ò",ograve:"ò",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",Ouml:"Ö",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",THORN:"Þ",thorn:"þ",times:"×",Uacute:"Ú",uacute:"ú",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",Uuml:"Ü",uuml:"ü",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ"}},{}],36:[function(a,b){b.exports={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'}},{}],37:[function(a,b){function c(a){this._cbs=a||{},this.events=[]}b.exports=c;var d=a("./").EVENTS;Object.keys(d).forEach(function(a){if(0===d[a])a="on"+a,c.prototype[a]=function(){this.events.push([a]),this._cbs[a]&&this._cbs[a]()};else if(1===d[a])a="on"+a,c.prototype[a]=function(b){this.events.push([a,b]),this._cbs[a]&&this._cbs[a](b)};else{if(2!==d[a])throw Error("wrong number of arguments");a="on"+a,c.prototype[a]=function(b,c){this.events.push([a,b,c]),this._cbs[a]&&this._cbs[a](b,c)}}}),c.prototype.onreset=function(){this.events=[],this._cbs.onreset&&this._cbs.onreset()},c.prototype.restart=function(){this._cbs.onreset&&this._cbs.onreset();for(var a=0,b=this.events.length;b>a;a++)if(this._cbs[this.events[a][0]]){var c=this.events[a].length;1===c?this._cbs[this.events[a][0]]():2===c?this._cbs[this.events[a][0]](this.events[a][1]):this._cbs[this.events[a][0]](this.events[a][1],this.events[a][2])}}},{"./":44}],38:[function(a,b){function c(a,b){this.init(a,b)}function d(a,b){return j.getElementsByTagName(a,b,!0)}function e(a,b){return j.getElementsByTagName(a,b,!0,1)[0]}function f(a,b,c){return j.getText(j.getElementsByTagName(a,b,c,1)).trim()}function g(a,b,c,d,e){var g=f(c,d,e);g&&(a[b]=g)}var h=a("./index.js"),i=h.DomHandler,j=h.DomUtils;a("util").inherits(c,i),c.prototype.init=i;var k=function(a){return"rss"===a||"feed"===a||"rdf:RDF"===a};c.prototype.onend=function(){var a,b,c={},h=e(k,this.dom);h&&("feed"===h.name?(b=h.children,c.type="atom",g(c,"id","id",b),g(c,"title","title",b),(a=e("link",b))&&(a=a.attribs)&&(a=a.href)&&(c.link=a),g(c,"description","subtitle",b),(a=f("updated",b))&&(c.updated=new Date(a)),g(c,"author","email",b,!0),c.items=d("entry",b).map(function(a){var b,c={};return a=a.children,g(c,"id","id",a),g(c,"title","title",a),(b=e("link",a))&&(b=b.attribs)&&(b=b.href)&&(c.link=b),(b=f("summary",a)||f("content",a))&&(c.description=b),(b=f("updated",a))&&(c.pubDate=new Date(b)),c})):(b=e("channel",h.children).children,c.type=h.name.substr(0,3),c.id="",g(c,"title","title",b),g(c,"link","link",b),g(c,"description","description",b),(a=f("lastBuildDate",b))&&(c.updated=new Date(a)),g(c,"author","managingEditor",b,!0),c.items=d("item",h.children).map(function(a){var b,c={};return a=a.children,g(c,"id","guid",a),g(c,"title","title",a),g(c,"link","link",a),g(c,"description","description",a),(b=f("pubDate",a))&&(c.pubDate=new Date(b)),c}))),this.dom=c,i.prototype._handleCallback.call(this,h?null:Error("couldn't find root of feed"))},b.exports=c},{"./index.js":44,util:105}],39:[function(a,b){function c(a,b){this._options=b||{},this._cbs=a||{},this._tagname="",this._attribname="",this._attribvalue="",this._attribs=null,this._stack=[],this.startIndex=0,this.endIndex=null,this._lowerCaseTagNames="lowerCaseTags"in this._options?!!this._options.lowerCaseTags:!this._options.xmlMode,this._lowerCaseAttributeNames="lowerCaseAttributeNames"in this._options?!!this._options.lowerCaseAttributeNames:!this._options.xmlMode,this._tokenizer=new d(this._options,this),this._cbs.onparserinit&&this._cbs.onparserinit(this)}var d=a("./Tokenizer.js"),e={input:!0,option:!0,optgroup:!0,select:!0,button:!0,datalist:!0,textarea:!0},f={tr:{tr:!0,th:!0,td:!0},th:{th:!0},td:{thead:!0,td:!0},body:{head:!0,link:!0,script:!0},li:{li:!0},p:{p:!0},h1:{p:!0},h2:{p:!0},h3:{p:!0},h4:{p:!0},h5:{p:!0},h6:{p:!0},select:e,input:e,output:e,button:e,datalist:e,textarea:e,option:{option:!0},optgroup:{optgroup:!0}},g={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,path:!0,circle:!0,ellipse:!0,line:!0,rect:!0,use:!0,stop:!0,polyline:!0,polygone:!0},h=/\s|\//;a("util").inherits(c,a("events").EventEmitter),c.prototype._updatePosition=function(a){this.startIndex=null===this.endIndex?this._tokenizer._sectionStart<=a?0:this._tokenizer._sectionStart-a:this.endIndex+1,this.endIndex=this._tokenizer.getAbsoluteIndex()},c.prototype.ontext=function(a){this._updatePosition(1),this.endIndex--,this._cbs.ontext&&this._cbs.ontext(a)},c.prototype.onopentagname=function(a){if(this._lowerCaseTagNames&&(a=a.toLowerCase()),this._tagname=a,!this._options.xmlMode&&a in f)for(var b;(b=this._stack[this._stack.length-1])in f[a];this.onclosetag(b));!this._options.xmlMode&&a in g||this._stack.push(a),this._cbs.onopentagname&&this._cbs.onopentagname(a),this._cbs.onopentag&&(this._attribs={})},c.prototype.onopentagend=function(){this._updatePosition(1),this._attribs&&(this._cbs.onopentag&&this._cbs.onopentag(this._tagname,this._attribs),this._attribs=null),!this._options.xmlMode&&this._cbs.onclosetag&&this._tagname in g&&this._cbs.onclosetag(this._tagname),this._tagname=""},c.prototype.onclosetag=function(a){if(this._updatePosition(1),this._lowerCaseTagNames&&(a=a.toLowerCase()),!this._stack.length||a in g&&!this._options.xmlMode)this._options.xmlMode||"br"!==a&&"p"!==a||(this.onopentagname(a),this._closeCurrentTag());else{var b=this._stack.lastIndexOf(a);if(-1!==b)if(this._cbs.onclosetag)for(b=this._stack.length-b;b--;)this._cbs.onclosetag(this._stack.pop());else this._stack.length=b;else"p"!==a||this._options.xmlMode||(this.onopentagname(a),this._closeCurrentTag())}},c.prototype.onselfclosingtag=function(){this._options.xmlMode||this._options.recognizeSelfClosing?this._closeCurrentTag():this.onopentagend()},c.prototype._closeCurrentTag=function(){var a=this._tagname;this.onopentagend(),this._stack[this._stack.length-1]===a&&(this._cbs.onclosetag&&this._cbs.onclosetag(a),this._stack.pop())},c.prototype.onattribname=function(a){this._lowerCaseAttributeNames&&(a=a.toLowerCase()),this._attribname=a},c.prototype.onattribdata=function(a){this._attribvalue+=a},c.prototype.onattribend=function(){this._cbs.onattribute&&this._cbs.onattribute(this._attribname,this._attribvalue),this._attribs&&!Object.prototype.hasOwnProperty.call(this._attribs,this._attribname)&&(this._attribs[this._attribname]=this._attribvalue),this._attribname="",this._attribvalue=""},c.prototype._getInstructionName=function(a){var b=a.search(h),c=0>b?a:a.substr(0,b);return this._lowerCaseTagNames&&(c=c.toLowerCase()),c},c.prototype.ondeclaration=function(a){if(this._cbs.onprocessinginstruction){var b=this._getInstructionName(a);this._cbs.onprocessinginstruction("!"+b,"!"+a)}},c.prototype.onprocessinginstruction=function(a){if(this._cbs.onprocessinginstruction){var b=this._getInstructionName(a);this._cbs.onprocessinginstruction("?"+b,"?"+a)}},c.prototype.oncomment=function(a){this._updatePosition(4),this._cbs.oncomment&&this._cbs.oncomment(a),this._cbs.oncommentend&&this._cbs.oncommentend()},c.prototype.oncdata=function(a){this._updatePosition(1),this._options.xmlMode||this._options.recognizeCDATA?(this._cbs.oncdatastart&&this._cbs.oncdatastart(),this._cbs.ontext&&this._cbs.ontext(a),this._cbs.oncdataend&&this._cbs.oncdataend()):this.oncomment("[CDATA["+a+"]]")},c.prototype.onerror=function(a){this._cbs.onerror&&this._cbs.onerror(a)},c.prototype.onend=function(){if(this._cbs.onclosetag)for(var a=this._stack.length;a>0;this._cbs.onclosetag(this._stack[--a]));this._cbs.onend&&this._cbs.onend()},c.prototype.reset=function(){this._cbs.onreset&&this._cbs.onreset(),this._tokenizer.reset(),this._tagname="",this._attribname="",this._attribs=null,this._stack=[],this._cbs.onparserinit&&this._cbs.onparserinit(this)},c.prototype.parseComplete=function(a){this.reset(),this.end(a)},c.prototype.write=function(a){this._tokenizer.write(a)},c.prototype.end=function(a){this._tokenizer.end(a)},c.prototype.pause=function(){this._tokenizer.pause()},c.prototype.resume=function(){this._tokenizer.resume()},c.prototype.parseChunk=c.prototype.write,c.prototype.done=c.prototype.end,b.exports=c},{"./Tokenizer.js":42,events:86,util:105}],40:[function(a,b){function c(a){this._cbs=a||{}}b.exports=c;var d=a("./").EVENTS;Object.keys(d).forEach(function(a){if(0===d[a])a="on"+a,c.prototype[a]=function(){this._cbs[a]&&this._cbs[a]()};else if(1===d[a])a="on"+a,c.prototype[a]=function(b){this._cbs[a]&&this._cbs[a](b)};else{if(2!==d[a])throw Error("wrong number of arguments");a="on"+a,c.prototype[a]=function(b,c){this._cbs[a]&&this._cbs[a](b,c)}}})},{"./":44}],41:[function(a,b){function c(a){e.call(this,new d(this),a)}function d(a){this.scope=a}b.exports=c;var e=a("./WritableStream.js");a("util").inherits(c,e),c.prototype.readable=!0;var f=a("../").EVENTS;Object.keys(f).forEach(function(a){if(0===f[a])d.prototype["on"+a]=function(){this.scope.emit(a)};else if(1===f[a])d.prototype["on"+a]=function(b){this.scope.emit(a,b)};else{if(2!==f[a])throw Error("wrong number of arguments!");d.prototype["on"+a]=function(b,c){this.scope.emit(a,b,c)}}})},{"../":44,"./WritableStream.js":43,util:105}],42:[function(a,b){function c(a){return" "===a||"\n"===a||"	"===a||"\f"===a||"\r"===a}function d(a,b){return function(c){c===a&&(this._state=b)}}function e(a,b,c){var d=a.toLowerCase();return a===d?function(a){a===d?this._state=b:(this._state=c,this._index--)}:function(e){e===d||e===a?this._state=b:(this._state=c,this._index--)}}function f(a,b){var c=a.toLowerCase();return function(d){d===c||d===a?this._state=b:(this._state=o,this._index--)}}function g(a,b){this._state=m,this._buffer="",this._sectionStart=0,this._index=0,this._bufferOffset=0,this._baseState=m,this._special=ob,this._cbs=b,this._running=!0,this._ended=!1,this._xmlMode=!(!a||!a.xmlMode),this._decodeEntities=!(!a||!a.decodeEntities)}b.exports=g;var h=a("entities/lib/decode_codepoint.js"),i=a("entities/maps/entities.json"),j=a("entities/maps/legacy.json"),k=a("entities/maps/xml.json"),l=0,m=l++,n=l++,o=l++,p=l++,q=l++,r=l++,s=l++,t=l++,u=l++,v=l++,w=l++,x=l++,y=l++,z=l++,A=l++,B=l++,C=l++,D=l++,E=l++,F=l++,G=l++,H=l++,I=l++,J=l++,K=l++,L=l++,M=l++,N=l++,O=l++,P=l++,Q=l++,R=l++,S=l++,T=l++,U=l++,V=l++,W=l++,X=l++,Y=l++,Z=l++,$=l++,_=l++,ab=l++,bb=l++,cb=l++,db=l++,eb=l++,fb=l++,gb=l++,hb=l++,ib=l++,jb=l++,kb=l++,lb=l++,mb=l++,nb=0,ob=nb++,pb=nb++,qb=nb++;g.prototype._stateText=function(a){"<"===a?(this._index>this._sectionStart&&this._cbs.ontext(this._getSection()),this._state=n,this._sectionStart=this._index):this._decodeEntities&&this._special===ob&&"&"===a&&(this._index>this._sectionStart&&this._cbs.ontext(this._getSection()),this._baseState=m,this._state=ib,this._sectionStart=this._index)},g.prototype._stateBeforeTagName=function(a){"/"===a?this._state=q:">"===a||this._special!==ob||c(a)?this._state=m:"!"===a?(this._state=A,this._sectionStart=this._index+1):"?"===a?(this._state=C,this._sectionStart=this._index+1):"<"===a?(this._cbs.ontext(this._getSection()),this._sectionStart=this._index):(this._state=this._xmlMode||"s"!==a&&"S"!==a?o:Q,this._sectionStart=this._index)},g.prototype._stateInTagName=function(a){("/"===a||">"===a||c(a))&&(this._emitToken("onopentagname"),this._state=t,this._index--)},g.prototype._stateBeforeCloseingTagName=function(a){c(a)||(">"===a?this._state=m:this._special!==ob?"s"===a||"S"===a?this._state=R:(this._state=m,this._index--):(this._state=r,this._sectionStart=this._index))},g.prototype._stateInCloseingTagName=function(a){(">"===a||c(a))&&(this._emitToken("onclosetag"),this._state=s,this._index--)},g.prototype._stateAfterCloseingTagName=function(a){">"===a&&(this._state=m,this._sectionStart=this._index+1)},g.prototype._stateBeforeAttributeName=function(a){">"===a?(this._cbs.onopentagend(),this._state=m,this._sectionStart=this._index+1):"/"===a?this._state=p:c(a)||(this._state=u,this._sectionStart=this._index)},g.prototype._stateInSelfClosingTag=function(a){">"===a?(this._cbs.onselfclosingtag(),this._state=m,this._sectionStart=this._index+1):c(a)||(this._state=t,this._index--)},g.prototype._stateInAttributeName=function(a){("="===a||"/"===a||">"===a||c(a))&&(this._cbs.onattribname(this._getSection()),this._sectionStart=-1,this._state=v,this._index--)},g.prototype._stateAfterAttributeName=function(a){"="===a?this._state=w:"/"===a||">"===a?(this._cbs.onattribend(),this._state=t,this._index--):c(a)||(this._cbs.onattribend(),this._state=u,this._sectionStart=this._index)},g.prototype._stateBeforeAttributeValue=function(a){'"'===a?(this._state=x,this._sectionStart=this._index+1):"'"===a?(this._state=y,this._sectionStart=this._index+1):c(a)||(this._state=z,this._sectionStart=this._index,this._index--)},g.prototype._stateInAttributeValueDoubleQuotes=function(a){'"'===a?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=t):this._decodeEntities&&"&"===a&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=ib,this._sectionStart=this._index)},g.prototype._stateInAttributeValueSingleQuotes=function(a){"'"===a?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=t):this._decodeEntities&&"&"===a&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=ib,this._sectionStart=this._index)},g.prototype._stateInAttributeValueNoQuotes=function(a){c(a)||">"===a?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=t,this._index--):this._decodeEntities&&"&"===a&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=ib,this._sectionStart=this._index)},g.prototype._stateBeforeDeclaration=function(a){this._state="["===a?H:"-"===a?D:B},g.prototype._stateInDeclaration=function(a){">"===a&&(this._cbs.ondeclaration(this._getSection()),this._state=m,this._sectionStart=this._index+1)},g.prototype._stateInProcessingInstruction=function(a){">"===a&&(this._cbs.onprocessinginstruction(this._getSection()),this._state=m,this._sectionStart=this._index+1)},g.prototype._stateBeforeComment=function(a){"-"===a?(this._state=E,this._sectionStart=this._index+1):this._state=B},g.prototype._stateInComment=function(a){"-"===a&&(this._state=F)},g.prototype._stateAfterComment1=function(a){this._state="-"===a?G:E},g.prototype._stateAfterComment2=function(a){">"===a?(this._cbs.oncomment(this._buffer.substring(this._sectionStart,this._index-2)),this._state=m,this._sectionStart=this._index+1):"-"!==a&&(this._state=E)},g.prototype._stateBeforeCdata1=e("C",I,B),g.prototype._stateBeforeCdata2=e("D",J,B),g.prototype._stateBeforeCdata3=e("A",K,B),g.prototype._stateBeforeCdata4=e("T",L,B),g.prototype._stateBeforeCdata5=e("A",M,B),g.prototype._stateBeforeCdata6=function(a){"["===a?(this._state=N,this._sectionStart=this._index+1):(this._state=B,this._index--)},g.prototype._stateInCdata=function(a){"]"===a&&(this._state=O)},g.prototype._stateAfterCdata1=d("]",P),g.prototype._stateAfterCdata2=function(a){">"===a?(this._cbs.oncdata(this._buffer.substring(this._sectionStart,this._index-2)),this._state=m,this._sectionStart=this._index+1):"]"!==a&&(this._state=N)},g.prototype._stateBeforeSpecial=function(a){"c"===a||"C"===a?this._state=S:"t"===a||"T"===a?this._state=ab:(this._state=o,this._index--)},g.prototype._stateBeforeSpecialEnd=function(a){this._state=this._special!==pb||"c"!==a&&"C"!==a?this._special!==qb||"t"!==a&&"T"!==a?m:eb:X},g.prototype._stateBeforeScript1=f("R",T),g.prototype._stateBeforeScript2=f("I",U),g.prototype._stateBeforeScript3=f("P",V),g.prototype._stateBeforeScript4=f("T",W),g.prototype._stateBeforeScript5=function(a){("/"===a||">"===a||c(a))&&(this._special=pb),this._state=o,this._index--},g.prototype._stateAfterScript1=e("R",Y,m),g.prototype._stateAfterScript2=e("I",Z,m),g.prototype._stateAfterScript3=e("P",$,m),g.prototype._stateAfterScript4=e("T",_,m),g.prototype._stateAfterScript5=function(a){">"===a||c(a)?(this._special=ob,this._state=r,this._sectionStart=this._index-6,this._index--):this._state=m},g.prototype._stateBeforeStyle1=f("Y",bb),g.prototype._stateBeforeStyle2=f("L",cb),g.prototype._stateBeforeStyle3=f("E",db),g.prototype._stateBeforeStyle4=function(a){("/"===a||">"===a||c(a))&&(this._special=qb),this._state=o,this._index--},g.prototype._stateAfterStyle1=e("Y",fb,m),g.prototype._stateAfterStyle2=e("L",gb,m),g.prototype._stateAfterStyle3=e("E",hb,m),g.prototype._stateAfterStyle4=function(a){">"===a||c(a)?(this._special=ob,this._state=r,this._sectionStart=this._index-5,this._index--):this._state=m},g.prototype._stateBeforeEntity=e("#",jb,kb),g.prototype._stateBeforeNumericEntity=e("X",mb,lb),g.prototype._parseNamedEntityStrict=function(){if(this._sectionStart+1<this._index){var a=this._buffer.substring(this._sectionStart+1,this._index),b=this._xmlMode?k:i;b.hasOwnProperty(a)&&(this._emitPartial(b[a]),this._sectionStart=this._index+1)}},g.prototype._parseLegacyEntity=function(){var a=this._sectionStart+1,b=this._index-a;for(b>6&&(b=6);b>=2;){var c=this._buffer.substr(a,b);if(j.hasOwnProperty(c))return this._emitPartial(j[c]),void(this._sectionStart+=b+1);b--}},g.prototype._stateInNamedEntity=function(a){";"===a?(this._parseNamedEntityStrict(),this._sectionStart+1<this._index&&!this._xmlMode&&this._parseLegacyEntity(),this._state=this._baseState):("a">a||a>"z")&&("A">a||a>"Z")&&("0">a||a>"9")&&(this._xmlMode||this._sectionStart+1===this._index||(this._baseState!==m?"="!==a&&this._parseNamedEntityStrict():this._parseLegacyEntity()),this._state=this._baseState,this._index--)},g.prototype._decodeNumericEntity=function(a,b){var c=this._sectionStart+a;if(c!==this._index){var d=this._buffer.substring(c,this._index),e=parseInt(d,b);this._emitPartial(h(e)),this._sectionStart=this._index}else this._sectionStart--;this._state=this._baseState},g.prototype._stateInNumericEntity=function(a){";"===a?(this._decodeNumericEntity(2,10),this._sectionStart++):("0">a||a>"9")&&(this._xmlMode?this._state=this._baseState:this._decodeNumericEntity(2,10),this._index--)},g.prototype._stateInHexEntity=function(a){";"===a?(this._decodeNumericEntity(3,16),this._sectionStart++):("a">a||a>"f")&&("A">a||a>"F")&&("0">a||a>"9")&&(this._xmlMode?this._state=this._baseState:this._decodeNumericEntity(3,16),this._index--)},g.prototype._cleanup=function(){this._sectionStart<0?(this._buffer="",this._index=0,this._bufferOffset+=this._index):this._running&&(this._state===m?(this._sectionStart!==this._index&&this._cbs.ontext(this._buffer.substr(this._sectionStart)),this._buffer="",this._index=0,this._bufferOffset+=this._index):this._sectionStart===this._index?(this._buffer="",this._index=0,this._bufferOffset+=this._index):(this._buffer=this._buffer.substr(this._sectionStart),this._index-=this._sectionStart,this._bufferOffset+=this._sectionStart),this._sectionStart=0)},g.prototype.write=function(a){this._ended&&this._cbs.onerror(Error(".write() after done!")),this._buffer+=a,this._parse()},g.prototype._parse=function(){for(;this._index<this._buffer.length&&this._running;){var a=this._buffer.charAt(this._index);this._state===m?this._stateText(a):this._state===n?this._stateBeforeTagName(a):this._state===o?this._stateInTagName(a):this._state===q?this._stateBeforeCloseingTagName(a):this._state===r?this._stateInCloseingTagName(a):this._state===s?this._stateAfterCloseingTagName(a):this._state===p?this._stateInSelfClosingTag(a):this._state===t?this._stateBeforeAttributeName(a):this._state===u?this._stateInAttributeName(a):this._state===v?this._stateAfterAttributeName(a):this._state===w?this._stateBeforeAttributeValue(a):this._state===x?this._stateInAttributeValueDoubleQuotes(a):this._state===y?this._stateInAttributeValueSingleQuotes(a):this._state===z?this._stateInAttributeValueNoQuotes(a):this._state===A?this._stateBeforeDeclaration(a):this._state===B?this._stateInDeclaration(a):this._state===C?this._stateInProcessingInstruction(a):this._state===D?this._stateBeforeComment(a):this._state===E?this._stateInComment(a):this._state===F?this._stateAfterComment1(a):this._state===G?this._stateAfterComment2(a):this._state===H?this._stateBeforeCdata1(a):this._state===I?this._stateBeforeCdata2(a):this._state===J?this._stateBeforeCdata3(a):this._state===K?this._stateBeforeCdata4(a):this._state===L?this._stateBeforeCdata5(a):this._state===M?this._stateBeforeCdata6(a):this._state===N?this._stateInCdata(a):this._state===O?this._stateAfterCdata1(a):this._state===P?this._stateAfterCdata2(a):this._state===Q?this._stateBeforeSpecial(a):this._state===R?this._stateBeforeSpecialEnd(a):this._state===S?this._stateBeforeScript1(a):this._state===T?this._stateBeforeScript2(a):this._state===U?this._stateBeforeScript3(a):this._state===V?this._stateBeforeScript4(a):this._state===W?this._stateBeforeScript5(a):this._state===X?this._stateAfterScript1(a):this._state===Y?this._stateAfterScript2(a):this._state===Z?this._stateAfterScript3(a):this._state===$?this._stateAfterScript4(a):this._state===_?this._stateAfterScript5(a):this._state===ab?this._stateBeforeStyle1(a):this._state===bb?this._stateBeforeStyle2(a):this._state===cb?this._stateBeforeStyle3(a):this._state===db?this._stateBeforeStyle4(a):this._state===eb?this._stateAfterStyle1(a):this._state===fb?this._stateAfterStyle2(a):this._state===gb?this._stateAfterStyle3(a):this._state===hb?this._stateAfterStyle4(a):this._state===ib?this._stateBeforeEntity(a):this._state===jb?this._stateBeforeNumericEntity(a):this._state===kb?this._stateInNamedEntity(a):this._state===lb?this._stateInNumericEntity(a):this._state===mb?this._stateInHexEntity(a):this._cbs.onerror(Error("unknown _state"),this._state),this._index++}this._cleanup()},g.prototype.pause=function(){this._running=!1},g.prototype.resume=function(){this._running=!0,this._index<this._buffer.length&&this._parse(),this._ended&&this._finish()},g.prototype.end=function(a){this._ended&&this._cbs.onerror(Error(".end() after done!")),a&&this.write(a),this._ended=!0,this._running&&this._finish()},g.prototype._finish=function(){this._sectionStart<this._index&&this._handleTrailingData(),this._cbs.onend()},g.prototype._handleTrailingData=function(){var a=this._buffer.substr(this._sectionStart);this._state===N||this._state===O||this._state===P?this._cbs.oncdata(a):this._state===E||this._state===F||this._state===G?this._cbs.oncomment(a):this._state!==kb||this._xmlMode?this._state!==lb||this._xmlMode?this._state!==mb||this._xmlMode?this._state!==o&&this._state!==t&&this._state!==w&&this._state!==v&&this._state!==u&&this._state!==y&&this._state!==x&&this._state!==z&&this._state!==r&&this._cbs.ontext(a):(this._decodeNumericEntity(3,16),this._sectionStart<this._index&&(this._state=this._baseState,this._handleTrailingData())):(this._decodeNumericEntity(2,10),this._sectionStart<this._index&&(this._state=this._baseState,this._handleTrailingData())):(this._parseLegacyEntity(),this._sectionStart<this._index&&(this._state=this._baseState,this._handleTrailingData()))},g.prototype.reset=function(){g.call(this,{xmlMode:this._xmlMode,decodeEntities:this._decodeEntities},this._cbs)},g.prototype.getAbsoluteIndex=function(){return this._bufferOffset+this._index},g.prototype._getSection=function(){return this._buffer.substring(this._sectionStart,this._index)},g.prototype._emitToken=function(a){this._cbs[a](this._getSection()),this._sectionStart=-1},g.prototype._emitPartial=function(a){this._baseState!==m?this._cbs.onattribdata(a):this._cbs.ontext(a)}},{"entities/lib/decode_codepoint.js":56,"entities/maps/entities.json":58,"entities/maps/legacy.json":59,"entities/maps/xml.json":60}],43:[function(a,b){function c(a,b){var c=this._parser=new d(a,b);e.call(this,{decodeStrings:!1}),this.once("finish",function(){c.end()})}b.exports=c;var d=a("./Parser.js"),e=a("stream").Writable||a("readable-stream").Writable;a("util").inherits(c,e),e.prototype._write=function(a,b,c){this._parser.write(a),c()}},{"./Parser.js":39,"readable-stream":81,stream:102,util:105}],44:[function(a,b){function c(a,c){return delete b.exports[a],b.exports[a]=c,c}var d=a("./Parser.js"),e=a("domhandler");b.exports={Parser:d,Tokenizer:a("./Tokenizer.js"),ElementType:a("domelementtype"),DomHandler:e,get FeedHandler(){return c("FeedHandler",a("./FeedHandler.js"))},get Stream(){return c("Stream",a("./Stream.js"))},get WritableStream(){return c("WritableStream",a("./WritableStream.js"))},get ProxyHandler(){return c("ProxyHandler",a("./ProxyHandler.js"))},get DomUtils(){return c("DomUtils",a("domutils"))},get CollectingHandler(){return c("CollectingHandler",a("./CollectingHandler.js"))},DefaultHandler:e,get RssHandler(){return c("RssHandler",this.FeedHandler)},parseDOM:function(a,b){var c=new e(b);return new d(c,b).end(a),c.dom},parseFeed:function(a,c){var e=new b.exports.FeedHandler(c);return new d(e,c).end(a),e.dom},createDomStream:function(a,b,c){var f=new e(a,b,c);return new d(f,b)},EVENTS:{attribute:2,cdatastart:0,cdataend:0,text:1,processinginstruction:2,comment:1,commentend:0,closetag:1,opentag:2,opentagname:1,error:1,end:0}}},{"./CollectingHandler.js":37,"./FeedHandler.js":38,"./Parser.js":39,"./ProxyHandler.js":40,"./Stream.js":41,"./Tokenizer.js":42,"./WritableStream.js":43,domelementtype:45,domhandler:46,domutils:49}],45:[function(a,b){b.exports=a(26)},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/node_modules/domelementtype/index.js":26}],46:[function(a,b){function c(a,b,c){"object"==typeof a?(c=b,b=a,a=null):"function"==typeof b&&(c=b,b=h),this._callback=a,this._options=b||h,this._elementCB=c,this.dom=[],this._done=!1,this._tagStack=[],this._parser=this._parser||null}var d=a("domelementtype"),e=/\s+/g,f=a("./lib/node"),g=a("./lib/element"),h={normalizeWhitespace:!1,withStartIndices:!1};c.prototype.onparserinit=function(a){this._parser=a},c.prototype.onreset=function(){c.call(this,this._callback,this._options,this._elementCB)},c.prototype.onend=function(){this._done||(this._done=!0,this._parser=null,this._handleCallback(null))},c.prototype._handleCallback=c.prototype.onerror=function(a){if("function"==typeof this._callback)this._callback(a,this.dom);else if(a)throw a},c.prototype.onclosetag=function(){var a=this._tagStack.pop();this._elementCB&&this._elementCB(a)},c.prototype._addDomElement=function(a){var b=this._tagStack[this._tagStack.length-1],c=b?b.children:this.dom,d=c[c.length-1];a.next=null,this._options.withStartIndices&&(a.startIndex=this._parser.startIndex),this._options.withDomLvl1&&(a.__proto__="tag"===a.type?g:f),d?(a.prev=d,d.next=a):a.prev=null,c.push(a),a.parent=b||null},c.prototype.onopentag=function(a,b){var c={type:"script"===a?d.Script:"style"===a?d.Style:d.Tag,name:a,attribs:b,children:[]};this._addDomElement(c),this._tagStack.push(c)},c.prototype.ontext=function(a){var b,c=this._options.normalizeWhitespace||this._options.ignoreWhitespace;!this._tagStack.length&&this.dom.length&&(b=this.dom[this.dom.length-1]).type===d.Text?c?b.data=(b.data+a).replace(e," "):b.data+=a:this._tagStack.length&&(b=this._tagStack[this._tagStack.length-1])&&(b=b.children[b.children.length-1])&&b.type===d.Text?c?b.data=(b.data+a).replace(e," "):b.data+=a:(c&&(a=a.replace(e," ")),this._addDomElement({data:a,type:d.Text}))},c.prototype.oncomment=function(a){var b=this._tagStack[this._tagStack.length-1];if(b&&b.type===d.Comment)return void(b.data+=a);var c={data:a,type:d.Comment};this._addDomElement(c),this._tagStack.push(c)},c.prototype.oncdatastart=function(){var a={children:[{data:"",type:d.Text}],type:d.CDATA};this._addDomElement(a),this._tagStack.push(a)},c.prototype.oncommentend=c.prototype.oncdataend=function(){this._tagStack.pop()},c.prototype.onprocessinginstruction=function(a,b){this._addDomElement({name:a,data:b,type:d.Directive})},b.exports=c},{"./lib/element":47,"./lib/node":48,domelementtype:45}],47:[function(a,b){var c=a("./node"),d=b.exports=Object.create(c),e={tagName:"name"};Object.keys(e).forEach(function(a){var b=e[a];Object.defineProperty(d,a,{get:function(){return this[b]||null},set:function(a){return this[b]=a,a}})})},{"./node":48}],48:[function(a,b){var c=b.exports={get firstChild(){var a=this.children;return a&&a[0]||null},get lastChild(){var a=this.children;return a&&a[a.length-1]||null},get nodeType(){return e[this.type]||e.element}},d={tagName:"name",childNodes:"children",parentNode:"parent",previousSibling:"prev",nextSibling:"next",nodeValue:"data"},e={element:1,text:3,cdata:4,comment:8};Object.keys(d).forEach(function(a){var b=d[a];Object.defineProperty(c,a,{get:function(){return this[b]||null},set:function(a){return this[b]=a,a}})})},{}],49:[function(a,b,c){arguments[4][19][0].apply(c,arguments)},{"./lib/helpers":50,"./lib/legacy":51,"./lib/manipulation":52,"./lib/querying":53,"./lib/stringify":54,"./lib/traversal":55,"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/index.js":19}],50:[function(a,b,c){c.removeSubsets=function(a){for(var b,c,d,e=a.length;--e>-1;){for(b=c=a[e],a[e]=null,d=!0;c;){if(a.indexOf(c)>-1){d=!1,a.splice(e,1);break}c=c.parent}d&&(a[e]=b)}return a};var d={DISCONNECTED:1,PRECEDING:2,FOLLOWING:4,CONTAINS:8,CONTAINED_BY:16},e=c.compareDocumentPosition=function(a,b){var c,e,f,g,h,i,j=[],k=[];if(a===b)return 0;for(c=a;c;)j.unshift(c),c=c.parent;for(c=b;c;)k.unshift(c),c=c.parent;for(i=0;j[i]===k[i];)i++;return 0===i?d.DISCONNECTED:(e=j[i-1],f=e.children,g=j[i],h=k[i],f.indexOf(g)>f.indexOf(h)?e===b?d.FOLLOWING|d.CONTAINED_BY:d.FOLLOWING:e===a?d.PRECEDING|d.CONTAINS:d.PRECEDING)};c.uniqueSort=function(a){var b,c,f=a.length;for(a=a.slice();--f>-1;)b=a[f],c=a.indexOf(b),c>-1&&f>c&&a.splice(f,1);return a.sort(function(a,b){var c=e(a,b);return c&d.PRECEDING?-1:c&d.FOLLOWING?1:0}),a}},{}],51:[function(a,b){b.exports=a(21)},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/lib/legacy.js":21,domelementtype:45}],52:[function(a,b){b.exports=a(22)},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/lib/manipulation.js":22}],53:[function(a,b){b.exports=a(23)},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/lib/querying.js":23,domelementtype:45}],54:[function(a,b){b.exports=a(24)},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/lib/stringify.js":24,domelementtype:45}],55:[function(a,b){b.exports=a(25)},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/CSSselect/node_modules/domutils/lib/traversal.js":25}],56:[function(a,b){b.exports=a(31)},{"../maps/decode.json":57,"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/entities/lib/decode_codepoint.js":31}],57:[function(a,b){b.exports=a(33)},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/entities/maps/decode.json":33}],58:[function(a,b){b.exports=a(34)},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/entities/maps/entities.json":34}],59:[function(a,b){b.exports=a(35)},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/entities/maps/legacy.json":35}],60:[function(a,b){b.exports=a(36)},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/entities/maps/xml.json":36}],61:[function(a,b,c){(function(a){(function(){function d(a,b,c){for(var d=(c||0)-1,e=a?a.length:0;++d<e;)if(a[d]===b)return d;
-return-1}function e(a,b){var c=typeof b;if(a=a.cache,"boolean"==c||null==b)return a[b]?0:-1;"number"!=c&&"string"!=c&&(c="object");var e="number"==c?b:u+b;return a=(a=a[c])&&a[e],"object"==c?a&&d(a,b)>-1?0:-1:a?0:-1}function f(a){var b=this.cache,c=typeof a;if("boolean"==c||null==a)b[a]=!0;else{"number"!=c&&"string"!=c&&(c="object");var d="number"==c?a:u+a,e=b[c]||(b[c]={});"object"==c?(e[d]||(e[d]=[])).push(a):e[d]=!0}}function g(a){return a.charCodeAt(0)}function h(a,b){for(var c=a.criteria,d=b.criteria,e=-1,f=c.length;++e<f;){var g=c[e],h=d[e];if(g!==h){if(g>h||"undefined"==typeof g)return 1;if(h>g||"undefined"==typeof h)return-1}}return a.index-b.index}function i(a){var b=-1,c=a.length,d=a[0],e=a[c/2|0],g=a[c-1];if(d&&"object"==typeof d&&e&&"object"==typeof e&&g&&"object"==typeof g)return!1;var h=l();h["false"]=h["null"]=h["true"]=h.undefined=!1;var i=l();for(i.array=a,i.cache=h,i.push=f;++b<c;)i.push(a[b]);return i}function j(a){return"\\"+Y[a]}function k(){return r.pop()||[]}function l(){return s.pop()||{array:null,cache:null,criteria:null,"false":!1,index:0,"null":!1,number:null,object:null,push:null,string:null,"true":!1,undefined:!1,value:null}}function m(a){a.length=0,r.length<w&&r.push(a)}function n(a){var b=a.cache;b&&n(b),a.array=a.cache=a.criteria=a.object=a.number=a.string=a.value=null,s.length<w&&s.push(a)}function o(a,b,c){b||(b=0),"undefined"==typeof c&&(c=a?a.length:0);for(var d=-1,e=c-b||0,f=Array(0>e?0:e);++d<e;)f[d]=a[b+d];return f}function p(a){function b(a){return a&&"object"==typeof a&&!Zd(a)&&Hd.call(a,"__wrapped__")?a:new c(a)}function c(a,b){this.__chain__=!!b,this.__wrapped__=a}function f(a){function b(){if(d){var a=o(d);Id.apply(a,arguments)}if(this instanceof b){var f=s(c.prototype),g=c.apply(f,a||arguments);return Eb(g)?g:f}return c.apply(e,a||arguments)}var c=a[0],d=a[2],e=a[4];return Yd(b,a),b}function r(a,b,c,d,e){if(c){var f=c(a);if("undefined"!=typeof f)return f}var g=Eb(a);if(!g)return a;var h=Ad.call(a);if(!U[h])return a;var i=Wd[h];switch(h){case N:case O:return new i(+a);case Q:case T:return new i(a);case S:return f=i(a.source,C.exec(a)),f.lastIndex=a.lastIndex,f}var j=Zd(a);if(b){var l=!d;d||(d=k()),e||(e=k());for(var n=d.length;n--;)if(d[n]==a)return e[n];f=j?i(a.length):{}}else f=j?o(a):ee({},a);return j&&(Hd.call(a,"index")&&(f.index=a.index),Hd.call(a,"input")&&(f.input=a.input)),b?(d.push(a),e.push(f),(j?Yb:he)(a,function(a,g){f[g]=r(a,b,c,d,e)}),l&&(m(d),m(e)),f):f}function s(a){return Eb(a)?Nd(a):{}}function w(a,b,c){if("function"!=typeof a)return Zc;if("undefined"==typeof b||!("prototype"in a))return a;var d=a.__bindData__;if("undefined"==typeof d&&(Xd.funcNames&&(d=!a.name),d=d||!Xd.funcDecomp,!d)){var e=Fd.call(a);Xd.funcNames||(d=!D.test(e)),d||(d=H.test(e),Yd(a,d))}if(d===!1||d!==!0&&1&d[1])return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)};case 4:return function(c,d,e,f){return a.call(b,c,d,e,f)}}return Ic(a,b)}function Y(a){function b(){var a=i?g:this;if(e){var n=o(e);Id.apply(n,arguments)}if((f||k)&&(n||(n=o(arguments)),f&&Id.apply(n,f),k&&n.length<h))return d|=16,Y([c,l?d:-4&d,n,null,g,h]);if(n||(n=arguments),j&&(c=a[m]),this instanceof b){a=s(c.prototype);var p=c.apply(a,n);return Eb(p)?p:a}return c.apply(a,n)}var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],i=1&d,j=2&d,k=4&d,l=8&d,m=c;return Yd(b,a),b}function $(a,b){var c=-1,f=ib(),g=a?a.length:0,h=g>=v&&f===d,j=[];if(h){var k=i(b);k?(f=e,b=k):h=!1}for(;++c<g;){var l=a[c];f(b,l)<0&&j.push(l)}return h&&n(b),j}function _(a,b,c,d){for(var e=(d||0)-1,f=a?a.length:0,g=[];++e<f;){var h=a[e];if(h&&"object"==typeof h&&"number"==typeof h.length&&(Zd(h)||mb(h))){b||(h=_(h,b,c));var i=-1,j=h.length,k=g.length;for(g.length+=j;++i<j;)g[k++]=h[i]}else c||g.push(h)}return g}function ab(a,b,c,d,e,f){if(c){var g=c(a,b);if("undefined"!=typeof g)return!!g}if(a===b)return 0!==a||1/a==1/b;var h=typeof a,i=typeof b;if(!(a!==a||a&&X[h]||b&&X[i]))return!1;if(null==a||null==b)return a===b;var j=Ad.call(a),l=Ad.call(b);if(j==L&&(j=R),l==L&&(l=R),j!=l)return!1;switch(j){case N:case O:return+a==+b;case Q:return a!=+a?b!=+b:0==a?1/a==1/b:a==+b;case S:case T:return a==vd(b)}var n=j==M;if(!n){var o=Hd.call(a,"__wrapped__"),p=Hd.call(b,"__wrapped__");if(o||p)return ab(o?a.__wrapped__:a,p?b.__wrapped__:b,c,d,e,f);if(j!=R)return!1;var q=a.constructor,r=b.constructor;if(q!=r&&!(Db(q)&&q instanceof q&&Db(r)&&r instanceof r)&&"constructor"in a&&"constructor"in b)return!1}var s=!e;e||(e=k()),f||(f=k());for(var t=e.length;t--;)if(e[t]==a)return f[t]==b;var u=0;if(g=!0,e.push(a),f.push(b),n){if(t=a.length,u=b.length,g=u==t,g||d)for(;u--;){var v=t,w=b[u];if(d)for(;v--&&!(g=ab(a[v],w,c,d,e,f)););else if(!(g=ab(a[u],w,c,d,e,f)))break}}else ge(b,function(b,h,i){return Hd.call(i,h)?(u++,g=Hd.call(a,h)&&ab(a[h],b,c,d,e,f)):void 0}),g&&!d&&ge(a,function(a,b,c){return Hd.call(c,b)?g=--u>-1:void 0});return e.pop(),f.pop(),s&&(m(e),m(f)),g}function bb(a,b,c,d,e){(Zd(b)?Yb:he)(b,function(b,f){var g,h,i=b,j=a[f];if(b&&((h=Zd(b))||ie(b))){for(var k=d.length;k--;)if(g=d[k]==b){j=e[k];break}if(!g){var l;c&&(i=c(j,b),(l="undefined"!=typeof i)&&(j=i)),l||(j=h?Zd(j)?j:[]:ie(j)?j:{}),d.push(b),e.push(j),l||bb(j,b,c,d,e)}}else c&&(i=c(j,b),"undefined"==typeof i&&(i=b)),"undefined"!=typeof i&&(j=i);a[f]=j})}function db(a,b){return a+Ed(Vd()*(b-a+1))}function eb(a,b,c){var f=-1,g=ib(),h=a?a.length:0,j=[],l=!b&&h>=v&&g===d,o=c||l?k():j;if(l){var p=i(o);g=e,o=p}for(;++f<h;){var q=a[f],r=c?c(q,f,a):q;(b?!f||o[o.length-1]!==r:g(o,r)<0)&&((c||l)&&o.push(r),j.push(q))}return l?(m(o.array),n(o)):c&&m(o),j}function fb(a){return function(c,d,e){var f={};d=b.createCallback(d,e,3);var g=-1,h=c?c.length:0;if("number"==typeof h)for(;++g<h;){var i=c[g];a(f,i,d(i,g,c),c)}else he(c,function(b,c,e){a(f,b,d(b,c,e),e)});return f}}function gb(a,b,c,d,e,g){var h=1&b,i=2&b,j=4&b,k=16&b,l=32&b;if(!i&&!Db(a))throw new wd;k&&!c.length&&(b&=-17,k=c=!1),l&&!d.length&&(b&=-33,l=d=!1);var m=a&&a.__bindData__;if(m&&m!==!0)return m=o(m),m[2]&&(m[2]=o(m[2])),m[3]&&(m[3]=o(m[3])),!h||1&m[1]||(m[4]=e),!h&&1&m[1]&&(b|=8),!j||4&m[1]||(m[5]=g),k&&Id.apply(m[2]||(m[2]=[]),c),l&&Ld.apply(m[3]||(m[3]=[]),d),m[1]|=b,gb.apply(null,m);var n=1==b||17===b?f:Y;return n([a,b,c,d,e,g])}function hb(a){return ae[a]}function ib(){var a=(a=b.indexOf)===rc?d:a;return a}function jb(a){return"function"==typeof a&&Bd.test(a)}function kb(a){var b,c;return a&&Ad.call(a)==R&&(b=a.constructor,!Db(b)||b instanceof b)?(ge(a,function(a,b){c=b}),"undefined"==typeof c||Hd.call(a,c)):!1}function lb(a){return be[a]}function mb(a){return a&&"object"==typeof a&&"number"==typeof a.length&&Ad.call(a)==L||!1}function nb(a,b,c,d){return"boolean"!=typeof b&&null!=b&&(d=c,c=b,b=!1),r(a,b,"function"==typeof c&&w(c,d,1))}function ob(a,b,c){return r(a,!0,"function"==typeof b&&w(b,c,1))}function pb(a,b){var c=s(a);return b?ee(c,b):c}function qb(a,c,d){var e;return c=b.createCallback(c,d,3),he(a,function(a,b,d){return c(a,b,d)?(e=b,!1):void 0}),e}function rb(a,c,d){var e;return c=b.createCallback(c,d,3),tb(a,function(a,b,d){return c(a,b,d)?(e=b,!1):void 0}),e}function sb(a,b,c){var d=[];ge(a,function(a,b){d.push(b,a)});var e=d.length;for(b=w(b,c,3);e--&&b(d[e--],d[e],a)!==!1;);return a}function tb(a,b,c){var d=_d(a),e=d.length;for(b=w(b,c,3);e--;){var f=d[e];if(b(a[f],f,a)===!1)break}return a}function ub(a){var b=[];return ge(a,function(a,c){Db(a)&&b.push(c)}),b.sort()}function vb(a,b){return a?Hd.call(a,b):!1}function wb(a){for(var b=-1,c=_d(a),d=c.length,e={};++b<d;){var f=c[b];e[a[f]]=f}return e}function xb(a){return a===!0||a===!1||a&&"object"==typeof a&&Ad.call(a)==N||!1}function yb(a){return a&&"object"==typeof a&&Ad.call(a)==O||!1}function zb(a){return a&&1===a.nodeType||!1}function Ab(a){var b=!0;if(!a)return b;var c=Ad.call(a),d=a.length;return c==M||c==T||c==L||c==R&&"number"==typeof d&&Db(a.splice)?!d:(he(a,function(){return b=!1}),b)}function Bb(a,b,c,d){return ab(a,b,"function"==typeof c&&w(c,d,2))}function Cb(a){return Pd(a)&&!Qd(parseFloat(a))}function Db(a){return"function"==typeof a}function Eb(a){return!(!a||!X[typeof a])}function Fb(a){return Hb(a)&&a!=+a}function Gb(a){return null===a}function Hb(a){return"number"==typeof a||a&&"object"==typeof a&&Ad.call(a)==Q||!1}function Ib(a){return a&&"object"==typeof a&&Ad.call(a)==S||!1}function Jb(a){return"string"==typeof a||a&&"object"==typeof a&&Ad.call(a)==T||!1}function Kb(a){return"undefined"==typeof a}function Lb(a,c,d){var e={};return c=b.createCallback(c,d,3),he(a,function(a,b,d){e[b]=c(a,b,d)}),e}function Mb(a){var b=arguments,c=2;if(!Eb(a))return a;if("number"!=typeof b[2]&&(c=b.length),c>3&&"function"==typeof b[c-2])var d=w(b[--c-1],b[c--],2);else c>2&&"function"==typeof b[c-1]&&(d=b[--c]);for(var e=o(arguments,1,c),f=-1,g=k(),h=k();++f<c;)bb(a,e[f],d,g,h);return m(g),m(h),a}function Nb(a,c,d){var e={};if("function"!=typeof c){var f=[];ge(a,function(a,b){f.push(b)}),f=$(f,_(arguments,!0,!1,1));for(var g=-1,h=f.length;++g<h;){var i=f[g];e[i]=a[i]}}else c=b.createCallback(c,d,3),ge(a,function(a,b,d){c(a,b,d)||(e[b]=a)});return e}function Ob(a){for(var b=-1,c=_d(a),d=c.length,e=nd(d);++b<d;){var f=c[b];e[b]=[f,a[f]]}return e}function Pb(a,c,d){var e={};if("function"!=typeof c)for(var f=-1,g=_(arguments,!0,!1,1),h=Eb(a)?g.length:0;++f<h;){var i=g[f];i in a&&(e[i]=a[i])}else c=b.createCallback(c,d,3),ge(a,function(a,b,d){c(a,b,d)&&(e[b]=a)});return e}function Qb(a,c,d,e){var f=Zd(a);if(null==d)if(f)d=[];else{var g=a&&a.constructor,h=g&&g.prototype;d=s(h)}return c&&(c=b.createCallback(c,e,4),(f?Yb:he)(a,function(a,b,e){return c(d,a,b,e)})),d}function Rb(a){for(var b=-1,c=_d(a),d=c.length,e=nd(d);++b<d;)e[b]=a[c[b]];return e}function Sb(a){for(var b=arguments,c=-1,d=_(b,!0,!1,1),e=b[2]&&b[2][b[1]]===a?1:d.length,f=nd(e);++c<e;)f[c]=a[d[c]];return f}function Tb(a,b,c){var d=-1,e=ib(),f=a?a.length:0,g=!1;return c=(0>c?Sd(0,f+c):c)||0,Zd(a)?g=e(a,b,c)>-1:"number"==typeof f?g=(Jb(a)?a.indexOf(b,c):e(a,b,c))>-1:he(a,function(a){return++d>=c?!(g=a===b):void 0}),g}function Ub(a,c,d){var e=!0;c=b.createCallback(c,d,3);var f=-1,g=a?a.length:0;if("number"==typeof g)for(;++f<g&&(e=!!c(a[f],f,a)););else he(a,function(a,b,d){return e=!!c(a,b,d)});return e}function Vb(a,c,d){var e=[];c=b.createCallback(c,d,3);var f=-1,g=a?a.length:0;if("number"==typeof g)for(;++f<g;){var h=a[f];c(h,f,a)&&e.push(h)}else he(a,function(a,b,d){c(a,b,d)&&e.push(a)});return e}function Wb(a,c,d){c=b.createCallback(c,d,3);var e=-1,f=a?a.length:0;if("number"!=typeof f){var g;return he(a,function(a,b,d){return c(a,b,d)?(g=a,!1):void 0}),g}for(;++e<f;){var h=a[e];if(c(h,e,a))return h}}function Xb(a,c,d){var e;return c=b.createCallback(c,d,3),Zb(a,function(a,b,d){return c(a,b,d)?(e=a,!1):void 0}),e}function Yb(a,b,c){var d=-1,e=a?a.length:0;if(b=b&&"undefined"==typeof c?b:w(b,c,3),"number"==typeof e)for(;++d<e&&b(a[d],d,a)!==!1;);else he(a,b);return a}function Zb(a,b,c){var d=a?a.length:0;if(b=b&&"undefined"==typeof c?b:w(b,c,3),"number"==typeof d)for(;d--&&b(a[d],d,a)!==!1;);else{var e=_d(a);d=e.length,he(a,function(a,c,f){return c=e?e[--d]:--d,b(f[c],c,f)})}return a}function $b(a,b){var c=o(arguments,2),d=-1,e="function"==typeof b,f=a?a.length:0,g=nd("number"==typeof f?f:0);return Yb(a,function(a){g[++d]=(e?b:a[b]).apply(a,c)}),g}function _b(a,c,d){var e=-1,f=a?a.length:0;if(c=b.createCallback(c,d,3),"number"==typeof f)for(var g=nd(f);++e<f;)g[e]=c(a[e],e,a);else g=[],he(a,function(a,b,d){g[++e]=c(a,b,d)});return g}function ac(a,c,d){var e=-1/0,f=e;if("function"!=typeof c&&d&&d[c]===a&&(c=null),null==c&&Zd(a))for(var h=-1,i=a.length;++h<i;){var j=a[h];j>f&&(f=j)}else c=null==c&&Jb(a)?g:b.createCallback(c,d,3),Yb(a,function(a,b,d){var g=c(a,b,d);g>e&&(e=g,f=a)});return f}function bc(a,c,d){var e=1/0,f=e;if("function"!=typeof c&&d&&d[c]===a&&(c=null),null==c&&Zd(a))for(var h=-1,i=a.length;++h<i;){var j=a[h];f>j&&(f=j)}else c=null==c&&Jb(a)?g:b.createCallback(c,d,3),Yb(a,function(a,b,d){var g=c(a,b,d);e>g&&(e=g,f=a)});return f}function cc(a,c,d,e){if(!a)return d;var f=arguments.length<3;c=b.createCallback(c,e,4);var g=-1,h=a.length;if("number"==typeof h)for(f&&(d=a[++g]);++g<h;)d=c(d,a[g],g,a);else he(a,function(a,b,e){d=f?(f=!1,a):c(d,a,b,e)});return d}function dc(a,c,d,e){var f=arguments.length<3;return c=b.createCallback(c,e,4),Zb(a,function(a,b,e){d=f?(f=!1,a):c(d,a,b,e)}),d}function ec(a,c,d){return c=b.createCallback(c,d,3),Vb(a,function(a,b,d){return!c(a,b,d)})}function fc(a,b,c){if(a&&"number"!=typeof a.length&&(a=Rb(a)),null==b||c)return a?a[db(0,a.length-1)]:q;var d=gc(a);return d.length=Td(Sd(0,b),d.length),d}function gc(a){var b=-1,c=a?a.length:0,d=nd("number"==typeof c?c:0);return Yb(a,function(a){var c=db(0,++b);d[b]=d[c],d[c]=a}),d}function hc(a){var b=a?a.length:0;return"number"==typeof b?b:_d(a).length}function ic(a,c,d){var e;c=b.createCallback(c,d,3);var f=-1,g=a?a.length:0;if("number"==typeof g)for(;++f<g&&!(e=c(a[f],f,a)););else he(a,function(a,b,d){return!(e=c(a,b,d))});return!!e}function jc(a,c,d){var e=-1,f=Zd(c),g=a?a.length:0,i=nd("number"==typeof g?g:0);for(f||(c=b.createCallback(c,d,3)),Yb(a,function(a,b,d){var g=i[++e]=l();f?g.criteria=_b(c,function(b){return a[b]}):(g.criteria=k())[0]=c(a,b,d),g.index=e,g.value=a}),g=i.length,i.sort(h);g--;){var j=i[g];i[g]=j.value,f||m(j.criteria),n(j)}return i}function kc(a){return a&&"number"==typeof a.length?o(a):Rb(a)}function lc(a){for(var b=-1,c=a?a.length:0,d=[];++b<c;){var e=a[b];e&&d.push(e)}return d}function mc(a){return $(a,_(arguments,!0,!0,1))}function nc(a,c,d){var e=-1,f=a?a.length:0;for(c=b.createCallback(c,d,3);++e<f;)if(c(a[e],e,a))return e;return-1}function oc(a,c,d){var e=a?a.length:0;for(c=b.createCallback(c,d,3);e--;)if(c(a[e],e,a))return e;return-1}function pc(a,c,d){var e=0,f=a?a.length:0;if("number"!=typeof c&&null!=c){var g=-1;for(c=b.createCallback(c,d,3);++g<f&&c(a[g],g,a);)e++}else if(e=c,null==e||d)return a?a[0]:q;return o(a,0,Td(Sd(0,e),f))}function qc(a,b,c,d){return"boolean"!=typeof b&&null!=b&&(d=c,c="function"!=typeof b&&d&&d[b]===a?null:b,b=!1),null!=c&&(a=_b(a,c,d)),_(a,b)}function rc(a,b,c){if("number"==typeof c){var e=a?a.length:0;c=0>c?Sd(0,e+c):c||0}else if(c){var f=Ac(a,b);return a[f]===b?f:-1}return d(a,b,c)}function sc(a,c,d){var e=0,f=a?a.length:0;if("number"!=typeof c&&null!=c){var g=f;for(c=b.createCallback(c,d,3);g--&&c(a[g],g,a);)e++}else e=null==c||d?1:c||e;return o(a,0,Td(Sd(0,f-e),f))}function tc(){for(var a=[],b=-1,c=arguments.length,f=k(),g=ib(),h=g===d,j=k();++b<c;){var l=arguments[b];(Zd(l)||mb(l))&&(a.push(l),f.push(h&&l.length>=v&&i(b?a[b]:j)))}var o=a[0],p=-1,q=o?o.length:0,r=[];a:for(;++p<q;){var s=f[0];if(l=o[p],(s?e(s,l):g(j,l))<0){for(b=c,(s||j).push(l);--b;)if(s=f[b],(s?e(s,l):g(a[b],l))<0)continue a;r.push(l)}}for(;c--;)s=f[c],s&&n(s);return m(f),m(j),r}function uc(a,c,d){var e=0,f=a?a.length:0;if("number"!=typeof c&&null!=c){var g=f;for(c=b.createCallback(c,d,3);g--&&c(a[g],g,a);)e++}else if(e=c,null==e||d)return a?a[f-1]:q;return o(a,Sd(0,f-e))}function vc(a,b,c){var d=a?a.length:0;for("number"==typeof c&&(d=(0>c?Sd(0,d+c):Td(c,d-1))+1);d--;)if(a[d]===b)return d;return-1}function wc(a){for(var b=arguments,c=0,d=b.length,e=a?a.length:0;++c<d;)for(var f=-1,g=b[c];++f<e;)a[f]===g&&(Kd.call(a,f--,1),e--);return a}function xc(a,b,c){a=+a||0,c="number"==typeof c?c:+c||1,null==b&&(b=a,a=0);for(var d=-1,e=Sd(0,Cd((b-a)/(c||1))),f=nd(e);++d<e;)f[d]=a,a+=c;return f}function yc(a,c,d){var e=-1,f=a?a.length:0,g=[];for(c=b.createCallback(c,d,3);++e<f;){var h=a[e];c(h,e,a)&&(g.push(h),Kd.call(a,e--,1),f--)}return g}function zc(a,c,d){if("number"!=typeof c&&null!=c){var e=0,f=-1,g=a?a.length:0;for(c=b.createCallback(c,d,3);++f<g&&c(a[f],f,a);)e++}else e=null==c||d?1:Sd(0,c);return o(a,e)}function Ac(a,c,d,e){var f=0,g=a?a.length:f;for(d=d?b.createCallback(d,e,1):Zc,c=d(c);g>f;){var h=f+g>>>1;d(a[h])<c?f=h+1:g=h}return f}function Bc(){return eb(_(arguments,!0,!0))}function Cc(a,c,d,e){return"boolean"!=typeof c&&null!=c&&(e=d,d="function"!=typeof c&&e&&e[c]===a?null:c,c=!1),null!=d&&(d=b.createCallback(d,e,3)),eb(a,c,d)}function Dc(a){return $(a,o(arguments,1))}function Ec(){for(var a=-1,b=arguments.length;++a<b;){var c=arguments[a];if(Zd(c)||mb(c))var d=d?eb($(d,c).concat($(c,d))):c}return d||[]}function Fc(){for(var a=arguments.length>1?arguments:arguments[0],b=-1,c=a?ac(me(a,"length")):0,d=nd(0>c?0:c);++b<c;)d[b]=me(a,b);return d}function Gc(a,b){var c=-1,d=a?a.length:0,e={};for(b||!d||Zd(a[0])||(b=[]);++c<d;){var f=a[c];b?e[f]=b[c]:f&&(e[f[0]]=f[1])}return e}function Hc(a,b){if(!Db(b))throw new wd;return function(){return--a<1?b.apply(this,arguments):void 0}}function Ic(a,b){return arguments.length>2?gb(a,17,o(arguments,2),null,b):gb(a,1,null,null,b)}function Jc(a){for(var b=arguments.length>1?_(arguments,!0,!1,1):ub(a),c=-1,d=b.length;++c<d;){var e=b[c];a[e]=gb(a[e],1,null,null,a)}return a}function Kc(a,b){return arguments.length>2?gb(b,19,o(arguments,2),null,a):gb(b,3,null,null,a)}function Lc(){for(var a=arguments,b=a.length;b--;)if(!Db(a[b]))throw new wd;return function(){for(var b=arguments,c=a.length;c--;)b=[a[c].apply(this,b)];return b[0]}}function Mc(a,b){return b="number"==typeof b?b:+b||a.length,gb(a,4,null,null,null,b)}function Nc(a,b,c){var d,e,f,g,h,i,j,k=0,l=!1,m=!0;if(!Db(a))throw new wd;if(b=Sd(0,b)||0,c===!0){var n=!0;m=!1}else Eb(c)&&(n=c.leading,l="maxWait"in c&&(Sd(b,c.maxWait)||0),m="trailing"in c?c.trailing:m);var o=function(){var c=b-(oe()-g);if(0>=c){e&&Dd(e);var l=j;e=i=j=q,l&&(k=oe(),f=a.apply(h,d),i||e||(d=h=null))}else i=Jd(o,c)},p=function(){i&&Dd(i),e=i=j=q,(m||l!==b)&&(k=oe(),f=a.apply(h,d),i||e||(d=h=null))};return function(){if(d=arguments,g=oe(),h=this,j=m&&(i||!n),l===!1)var c=n&&!i;else{e||n||(k=g);var q=l-(g-k),r=0>=q;r?(e&&(e=Dd(e)),k=g,f=a.apply(h,d)):e||(e=Jd(p,q))}return r&&i?i=Dd(i):i||b===l||(i=Jd(o,b)),c&&(r=!0,f=a.apply(h,d)),!r||i||e||(d=h=null),f}}function Oc(a){if(!Db(a))throw new wd;var b=o(arguments,1);return Jd(function(){a.apply(q,b)},1)}function Pc(a,b){if(!Db(a))throw new wd;var c=o(arguments,2);return Jd(function(){a.apply(q,c)},b)}function Qc(a,b){if(!Db(a))throw new wd;var c=function(){var d=c.cache,e=b?b.apply(this,arguments):u+arguments[0];return Hd.call(d,e)?d[e]:d[e]=a.apply(this,arguments)};return c.cache={},c}function Rc(a){var b,c;if(!Db(a))throw new wd;return function(){return b?c:(b=!0,c=a.apply(this,arguments),a=null,c)}}function Sc(a){return gb(a,16,o(arguments,1))}function Tc(a){return gb(a,32,null,o(arguments,1))}function Uc(a,b,c){var d=!0,e=!0;if(!Db(a))throw new wd;return c===!1?d=!1:Eb(c)&&(d="leading"in c?c.leading:d,e="trailing"in c?c.trailing:e),V.leading=d,V.maxWait=b,V.trailing=e,Nc(a,b,V)}function Vc(a,b){return gb(b,16,[a])}function Wc(a){return function(){return a}}function Xc(a,b,c){var d=typeof a;if(null==a||"function"==d)return w(a,b,c);if("object"!=d)return bd(a);var e=_d(a),f=e[0],g=a[f];return 1!=e.length||g!==g||Eb(g)?function(b){for(var c=e.length,d=!1;c--&&(d=ab(b[e[c]],a[e[c]],null,!0)););return d}:function(a){var b=a[f];return g===b&&(0!==g||1/g==1/b)}}function Yc(a){return null==a?"":vd(a).replace(de,hb)}function Zc(a){return a}function $c(a,d,e){var f=!0,g=d&&ub(d);d&&(e||g.length)||(null==e&&(e=d),h=c,d=a,a=b,g=ub(d)),e===!1?f=!1:Eb(e)&&"chain"in e&&(f=e.chain);var h=a,i=Db(h);Yb(g,function(b){var c=a[b]=d[b];i&&(h.prototype[b]=function(){var b=this.__chain__,d=this.__wrapped__,e=[d];Id.apply(e,arguments);var g=c.apply(a,e);if(f||b){if(d===g&&Eb(g))return this;g=new h(g),g.__chain__=b}return g})})}function _c(){return a._=zd,this}function ad(){}function bd(a){return function(b){return b[a]}}function cd(a,b,c){var d=null==a,e=null==b;if(null==c&&("boolean"==typeof a&&e?(c=a,a=1):e||"boolean"!=typeof b||(c=b,e=!0)),d&&e&&(b=1),a=+a||0,e?(b=a,a=0):b=+b||0,c||a%1||b%1){var f=Vd();return Td(a+f*(b-a+parseFloat("1e-"+((f+"").length-1))),b)}return db(a,b)}function dd(a,b){if(a){var c=a[b];return Db(c)?a[b]():c}}function ed(a,c,d){var e=b.templateSettings;a=vd(a||""),d=fe({},d,e);var f,g=fe({},d.imports,e.imports),h=_d(g),i=Rb(g),k=0,l=d.interpolate||G,m="__p += '",n=ud((d.escape||G).source+"|"+l.source+"|"+(l===E?B:G).source+"|"+(d.evaluate||G).source+"|$","g");a.replace(n,function(b,c,d,e,g,h){return d||(d=e),m+=a.slice(k,h).replace(I,j),c&&(m+="' +\n__e("+c+") +\n'"),g&&(f=!0,m+="';\n"+g+";\n__p += '"),d&&(m+="' +\n((__t = ("+d+")) == null ? '' : __t) +\n'"),k=h+b.length,b}),m+="';\n";var o=d.variable,p=o;p||(o="obj",m="with ("+o+") {\n"+m+"\n}\n"),m=(f?m.replace(y,""):m).replace(z,"$1").replace(A,"$1;"),m="function("+o+") {\n"+(p?"":o+" || ("+o+" = {});\n")+"var __t, __p = '', __e = _.escape"+(f?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+m+"return __p\n}";var r="\n/*\n//# sourceURL="+(d.sourceURL||"/lodash/template/source["+K++ +"]")+"\n*/";try{var s=qd(h,"return "+m+r).apply(q,i)}catch(t){throw t.source=m,t}return c?s(c):(s.source=m,s)}function fd(a,b,c){a=(a=+a)>-1?a:0;var d=-1,e=nd(a);for(b=w(b,c,1);++d<a;)e[d]=b(d);return e}function gd(a){return null==a?"":vd(a).replace(ce,lb)}function hd(a){var b=++t;return vd(null==a?"":a)+b}function id(a){return a=new c(a),a.__chain__=!0,a}function jd(a,b){return b(a),a}function kd(){return this.__chain__=!0,this}function ld(){return vd(this.__wrapped__)}function md(){return this.__wrapped__}a=a?cb.defaults(Z.Object(),a,cb.pick(Z,J)):Z;var nd=a.Array,od=a.Boolean,pd=a.Date,qd=a.Function,rd=a.Math,sd=a.Number,td=a.Object,ud=a.RegExp,vd=a.String,wd=a.TypeError,xd=[],yd=td.prototype,zd=a._,Ad=yd.toString,Bd=ud("^"+vd(Ad).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$"),Cd=rd.ceil,Dd=a.clearTimeout,Ed=rd.floor,Fd=qd.prototype.toString,Gd=jb(Gd=td.getPrototypeOf)&&Gd,Hd=yd.hasOwnProperty,Id=xd.push,Jd=a.setTimeout,Kd=xd.splice,Ld=xd.unshift,Md=function(){try{var a={},b=jb(b=td.defineProperty)&&b,c=b(a,a,a)&&b}catch(d){}return c}(),Nd=jb(Nd=td.create)&&Nd,Od=jb(Od=nd.isArray)&&Od,Pd=a.isFinite,Qd=a.isNaN,Rd=jb(Rd=td.keys)&&Rd,Sd=rd.max,Td=rd.min,Ud=a.parseInt,Vd=rd.random,Wd={};Wd[M]=nd,Wd[N]=od,Wd[O]=pd,Wd[P]=qd,Wd[R]=td,Wd[Q]=sd,Wd[S]=ud,Wd[T]=vd,c.prototype=b.prototype;var Xd=b.support={};Xd.funcDecomp=!jb(a.WinRTError)&&H.test(p),Xd.funcNames="string"==typeof qd.name,b.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:E,variable:"",imports:{_:b}},Nd||(s=function(){function b(){}return function(c){if(Eb(c)){b.prototype=c;var d=new b;b.prototype=null}return d||a.Object()}}());var Yd=Md?function(a,b){W.value=b,Md(a,"__bindData__",W)}:ad,Zd=Od||function(a){return a&&"object"==typeof a&&"number"==typeof a.length&&Ad.call(a)==M||!1},$d=function(a){var b,c=a,d=[];if(!c)return d;if(!X[typeof a])return d;for(b in c)Hd.call(c,b)&&d.push(b);return d},_d=Rd?function(a){return Eb(a)?Rd(a):[]}:$d,ae={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},be=wb(ae),ce=ud("("+_d(be).join("|")+")","g"),de=ud("["+_d(ae).join("")+"]","g"),ee=function(a,b,c){var d,e=a,f=e;if(!e)return f;var g=arguments,h=0,i="number"==typeof c?2:g.length;if(i>3&&"function"==typeof g[i-2])var j=w(g[--i-1],g[i--],2);else i>2&&"function"==typeof g[i-1]&&(j=g[--i]);for(;++h<i;)if(e=g[h],e&&X[typeof e])for(var k=-1,l=X[typeof e]&&_d(e),m=l?l.length:0;++k<m;)d=l[k],f[d]=j?j(f[d],e[d]):e[d];return f},fe=function(a,b,c){var d,e=a,f=e;if(!e)return f;for(var g=arguments,h=0,i="number"==typeof c?2:g.length;++h<i;)if(e=g[h],e&&X[typeof e])for(var j=-1,k=X[typeof e]&&_d(e),l=k?k.length:0;++j<l;)d=k[j],"undefined"==typeof f[d]&&(f[d]=e[d]);return f},ge=function(a,b,c){var d,e=a,f=e;if(!e)return f;if(!X[typeof e])return f;b=b&&"undefined"==typeof c?b:w(b,c,3);for(d in e)if(b(e[d],d,a)===!1)return f;return f},he=function(a,b,c){var d,e=a,f=e;if(!e)return f;if(!X[typeof e])return f;b=b&&"undefined"==typeof c?b:w(b,c,3);for(var g=-1,h=X[typeof e]&&_d(e),i=h?h.length:0;++g<i;)if(d=h[g],b(e[d],d,a)===!1)return f;return f},ie=Gd?function(a){if(!a||Ad.call(a)!=R)return!1;var b=a.valueOf,c=jb(b)&&(c=Gd(b))&&Gd(c);return c?a==c||Gd(a)==c:kb(a)}:kb,je=fb(function(a,b,c){Hd.call(a,c)?a[c]++:a[c]=1}),ke=fb(function(a,b,c){(Hd.call(a,c)?a[c]:a[c]=[]).push(b)}),le=fb(function(a,b,c){a[c]=b}),me=_b,ne=Vb,oe=jb(oe=pd.now)&&oe||function(){return(new pd).getTime()},pe=8==Ud(x+"08")?Ud:function(a,b){return Ud(Jb(a)?a.replace(F,""):a,b||0)};return b.after=Hc,b.assign=ee,b.at=Sb,b.bind=Ic,b.bindAll=Jc,b.bindKey=Kc,b.chain=id,b.compact=lc,b.compose=Lc,b.constant=Wc,b.countBy=je,b.create=pb,b.createCallback=Xc,b.curry=Mc,b.debounce=Nc,b.defaults=fe,b.defer=Oc,b.delay=Pc,b.difference=mc,b.filter=Vb,b.flatten=qc,b.forEach=Yb,b.forEachRight=Zb,b.forIn=ge,b.forInRight=sb,b.forOwn=he,b.forOwnRight=tb,b.functions=ub,b.groupBy=ke,b.indexBy=le,b.initial=sc,b.intersection=tc,b.invert=wb,b.invoke=$b,b.keys=_d,b.map=_b,b.mapValues=Lb,b.max=ac,b.memoize=Qc,b.merge=Mb,b.min=bc,b.omit=Nb,b.once=Rc,b.pairs=Ob,b.partial=Sc,b.partialRight=Tc,b.pick=Pb,b.pluck=me,b.property=bd,b.pull=wc,b.range=xc,b.reject=ec,b.remove=yc,b.rest=zc,b.shuffle=gc,b.sortBy=jc,b.tap=jd,b.throttle=Uc,b.times=fd,b.toArray=kc,b.transform=Qb,b.union=Bc,b.uniq=Cc,b.values=Rb,b.where=ne,b.without=Dc,b.wrap=Vc,b.xor=Ec,b.zip=Fc,b.zipObject=Gc,b.collect=_b,b.drop=zc,b.each=Yb,b.eachRight=Zb,b.extend=ee,b.methods=ub,b.object=Gc,b.select=Vb,b.tail=zc,b.unique=Cc,b.unzip=Fc,$c(b),b.clone=nb,b.cloneDeep=ob,b.contains=Tb,b.escape=Yc,b.every=Ub,b.find=Wb,b.findIndex=nc,b.findKey=qb,b.findLast=Xb,b.findLastIndex=oc,b.findLastKey=rb,b.has=vb,b.identity=Zc,b.indexOf=rc,b.isArguments=mb,b.isArray=Zd,b.isBoolean=xb,b.isDate=yb,b.isElement=zb,b.isEmpty=Ab,b.isEqual=Bb,b.isFinite=Cb,b.isFunction=Db,b.isNaN=Fb,b.isNull=Gb,b.isNumber=Hb,b.isObject=Eb,b.isPlainObject=ie,b.isRegExp=Ib,b.isString=Jb,b.isUndefined=Kb,b.lastIndexOf=vc,b.mixin=$c,b.noConflict=_c,b.noop=ad,b.now=oe,b.parseInt=pe,b.random=cd,b.reduce=cc,b.reduceRight=dc,b.result=dd,b.runInContext=p,b.size=hc,b.some=ic,b.sortedIndex=Ac,b.template=ed,b.unescape=gd,b.uniqueId=hd,b.all=Ub,b.any=ic,b.detect=Wb,b.findWhere=Wb,b.foldl=cc,b.foldr=dc,b.include=Tb,b.inject=cc,$c(function(){var a={};return he(b,function(c,d){b.prototype[d]||(a[d]=c)}),a}(),!1),b.first=pc,b.last=uc,b.sample=fc,b.take=pc,b.head=pc,he(b,function(a,d){var e="sample"!==d;b.prototype[d]||(b.prototype[d]=function(b,d){var f=this.__chain__,g=a(this.__wrapped__,b,d);return f||null!=b&&(!d||e&&"function"==typeof b)?new c(g,f):g})}),b.VERSION="2.4.1",b.prototype.chain=kd,b.prototype.toString=ld,b.prototype.value=md,b.prototype.valueOf=md,Yb(["join","pop","shift"],function(a){var d=xd[a];b.prototype[a]=function(){var a=this.__chain__,b=d.apply(this.__wrapped__,arguments);return a?new c(b,a):b}}),Yb(["push","reverse","sort","unshift"],function(a){var c=xd[a];b.prototype[a]=function(){return c.apply(this.__wrapped__,arguments),this}}),Yb(["concat","slice","splice"],function(a){var d=xd[a];b.prototype[a]=function(){return new c(d.apply(this.__wrapped__,arguments),this.__chain__)}}),b}var q,r=[],s=[],t=0,u=+new Date+"",v=75,w=40,x=" 	\f \n\r\u2028\u2029 ᠎              ",y=/\b__p \+= '';/g,z=/\b(__p \+=) '' \+/g,A=/(__e\(.*?\)|\b__t\)) \+\n'';/g,B=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,C=/\w*$/,D=/^\s*function[ \n\r\t]+\w/,E=/<%=([\s\S]+?)%>/g,F=RegExp("^["+x+"]*0+(?=.$)"),G=/($^)/,H=/\bthis\b/,I=/['\n\r\t\u2028\u2029\\]/g,J=["Array","Boolean","Date","Function","Math","Number","Object","RegExp","String","_","attachEvent","clearTimeout","isFinite","isNaN","parseInt","setTimeout"],K=0,L="[object Arguments]",M="[object Array]",N="[object Boolean]",O="[object Date]",P="[object Function]",Q="[object Number]",R="[object Object]",S="[object RegExp]",T="[object String]",U={};U[P]=!1,U[L]=U[M]=U[N]=U[O]=U[Q]=U[R]=U[S]=U[T]=!0;var V={leading:!1,maxWait:0,trailing:!1},W={configurable:!1,enumerable:!1,value:null,writable:!1},X={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},Y={"\\":"\\","'":"'","\n":"n","\r":"r","	":"t","\u2028":"u2028","\u2029":"u2029"},Z=X[typeof window]&&window||this,$=X[typeof c]&&c&&!c.nodeType&&c,_=X[typeof b]&&b&&!b.nodeType&&b,ab=_&&_.exports===$&&$,bb=X[typeof a]&&a;!bb||bb.global!==bb&&bb.window!==bb||(Z=bb);var cb=p();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(Z._=cb,define(function(){return cb})):$&&_?ab?(_.exports=cb)._=cb:$._=cb:Z._=cb}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],62:[function(a,b){b.exports={name:"cheerio",version:"0.18.0",description:"Tiny, fast, and elegant implementation of core jQuery designed specifically for the server",author:{name:"Matt Mueller",email:"mattmuelle@gmail.com",url:"mat.io"},keywords:["htmlparser","jquery","selector","scraper","parser","html"],repository:{type:"git",url:"git://github.com/cheeriojs/cheerio.git"},main:"./index.js",engines:{node:">= 0.6"},dependencies:{CSSselect:"~0.4.0",entities:"~1.1.1",htmlparser2:"~3.8.1","dom-serializer":"~0.0.0",lodash:"~2.4.1"},devDependencies:{benchmark:"~1.0.0",coveralls:"~2.10","expect.js":"~0.3.1",istanbul:"~0.2",jsdom:"~0.8.9",jshint:"~2.5.1",mocha:"*",xyz:"~0.4.0"},scripts:{test:"make test"},gitHead:"c4f52db9d0e2011a968ba097c85f434f3a05b7f0",bugs:{url:"https://github.com/cheeriojs/cheerio/issues"},homepage:"https://github.com/cheeriojs/cheerio",_id:"cheerio@0.18.0",_shasum:"4e1c06377e725b740e996e0dfec353863de677fa",_from:"cheerio@^0.18.0",_npmVersion:"2.1.3",_nodeVersion:"0.10.31",_npmUser:{name:"jugglinmike",email:"mike@mikepennisi.com"},maintainers:[{name:"mattmueller",email:"mattmuelle@gmail.com"},{name:"davidchambers",email:"dc@davidchambers.me"},{name:"jugglinmike",email:"mike@mikepennisi.com"}],dist:{shasum:"4e1c06377e725b740e996e0dfec353863de677fa",tarball:"http://registry.npmjs.org/cheerio/-/cheerio-0.18.0.tgz"},directories:{},_resolved:"https://registry.npmjs.org/cheerio/-/cheerio-0.18.0.tgz",readme:"ERROR: No README data found!"}},{}],63:[function(a,b,c){(function(b){!function(){"use strict";function d(a){return F.Expression.hasOwnProperty(a.type)}function e(a){return F.Statement.hasOwnProperty(a.type)}function f(){return{indent:null,base:null,parse:null,comment:!1,format:{indent:{style:"    ",base:0,adjustMultilineComment:!1},newline:"\n",space:" ",json:!1,renumber:!1,hexadecimal:!1,quotes:"single",escapeless:!1,compact:!1,parentheses:!0,semicolons:!0,safeConcatenation:!1},moz:{comprehensionExpressionStartsWithAssignment:!1,starlessGenerator:!1},sourceMap:null,sourceMapRoot:null,sourceMapWithCode:!1,directive:!1,raw:!0,verbatim:null}}function g(a,b){var c="";for(b|=0;b>0;b>>>=1,a+=a)1&b&&(c+=a);return c}function h(a){return/[\r\n]/g.test(a)}function i(a){var b=a.length;return b&&O.code.isLineTerminator(a.charCodeAt(b-1))}function j(a,b){var c;for(c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}function k(a,b){function c(a){return"object"==typeof a&&a instanceof Object&&!(a instanceof RegExp)}var d,e;for(d in b)b.hasOwnProperty(d)&&(e=b[d],c(e)?c(a[d])?k(a[d],e):a[d]=k({},e):a[d]=e);return a}function l(a){var b,c,d,e,f;if(a!==a)throw new Error("Numeric literal whose value is NaN");if(0>a||0===a&&0>1/a)throw new Error("Numeric literal whose value is negative");if(a===1/0)return S?"null":T?"1e400":"1e+400";if(b=""+a,!T||b.length<3)return b;for(c=b.indexOf("."),S||48!==b.charCodeAt(0)||1!==c||(c=0,b=b.slice(1)),d=b,b=b.replace("e+","e"),e=0,(f=d.indexOf("e"))>0&&(e=+d.slice(f+1),d=d.slice(0,f)),c>=0&&(e-=d.length-c-1,d=+(d.slice(0,c)+d.slice(c+1))+""),f=0;48===d.charCodeAt(d.length+f-1);)--f;return 0!==f&&(e-=f,d=d.slice(0,f)),0!==e&&(d+="e"+e),(d.length<b.length||U&&a>1e12&&Math.floor(a)===a&&(d="0x"+a.toString(16)).length<b.length)&&+d===a&&(b=d),b}function m(a,b){return 8232===(-2&a)?(b?"u":"\\u")+(8232===a?"2028":"2029"):10===a||13===a?(b?"":"\\")+(10===a?"n":"r"):String.fromCharCode(a)}function n(a){var b,c,d,e,f,g,h,i;if(c=a.toString(),a.source){if(b=c.match(/\/([^/]*)$/),!b)return c;for(d=b[1],c="",h=!1,i=!1,e=0,f=a.source.length;f>e;++e)g=a.source.charCodeAt(e),i?(c+=m(g,i),i=!1):(h?93===g&&(h=!1):47===g?c+="\\":91===g&&(h=!0),c+=m(g,i),i=92===g);
-return"/"+c+"/"+d}return c}function o(a,b){var c;return 8===a?"\\b":12===a?"\\f":9===a?"\\t":(c=a.toString(16).toUpperCase(),S||a>255?"\\u"+"0000".slice(c.length)+c:0!==a||O.code.isDecimalDigit(b)?11===a?"\\x0B":"\\x"+"00".slice(c.length)+c:"\\0")}function p(a){if(92===a)return"\\\\";if(10===a)return"\\n";if(13===a)return"\\r";if(8232===a)return"\\u2028";if(8233===a)return"\\u2029";throw new Error("Incorrectly classified character")}function q(a){var b,c,d,e;for(e="double"===V?'"':"'",b=0,c=a.length;c>b;++b){if(d=a.charCodeAt(b),39===d){e='"';break}if(34===d){e="'";break}92===d&&++b}return e+a+e}function r(a){var b,c,d,e,f,g="",h=0,i=0;for(b=0,c=a.length;c>b;++b){if(d=a.charCodeAt(b),39===d)++h;else if(34===d)++i;else if(47===d&&S)g+="\\";else{if(O.code.isLineTerminator(d)||92===d){g+=p(d);continue}if(S&&32>d||!(S||W||d>=32&&126>=d)){g+=o(d,a.charCodeAt(b+1));continue}}g+=String.fromCharCode(d)}if(e=!("double"===V||"auto"===V&&h>i),f=e?"'":'"',!(e?h:i))return f+g+f;for(a=g,g=f,b=0,c=a.length;c>b;++b)d=a.charCodeAt(b),(39===d&&e||34===d&&!e)&&(g+="\\"),g+=String.fromCharCode(d);return g+f}function s(a){var b,c,d,e="";for(b=0,c=a.length;c>b;++b)d=a[b],e+=P(d)?s(d):d;return e}function t(a,b){if(!db)return P(a)?s(a):a;if(null==b){if(a instanceof M)return a;b={}}return null==b.loc?new M(null,null,db,a,b.name||null):new M(b.loc.start.line,b.loc.start.column,db===!0?b.loc.source||null:db,a,b.name||null)}function u(){return Y?Y:" "}function v(a,b){var c,d,e,f;return c=t(a).toString(),0===c.length?[b]:(d=t(b).toString(),0===d.length?[a]:(e=c.charCodeAt(c.length-1),f=d.charCodeAt(0),(43===e||45===e)&&e===f||O.code.isIdentifierPart(e)&&O.code.isIdentifierPart(f)||47===e&&105===f?[a,u(),b]:O.code.isWhiteSpace(e)||O.code.isLineTerminator(e)||O.code.isWhiteSpace(f)||O.code.isLineTerminator(f)?[a,b]:[a,Y,b]))}function w(a){return[Q,a]}function x(a){var b;b=Q,Q+=R,a(Q),Q=b}function y(a){var b;for(b=a.length-1;b>=0&&!O.code.isLineTerminator(a.charCodeAt(b));--b);return a.length-1-b}function z(a,b){var c,d,e,f,g,h,i,j;for(c=a.split(/\r\n|[\r\n]/),h=Number.MAX_VALUE,d=1,e=c.length;e>d;++d){for(f=c[d],g=0;g<f.length&&O.code.isWhiteSpace(f.charCodeAt(g));)++g;h>g&&(h=g)}for("undefined"!=typeof b?(i=Q,"*"===c[1][h]&&(b+=" "),Q=b):(1&h&&--h,i=Q),d=1,e=c.length;e>d;++d)j=t(w(c[d].slice(h))),c[d]=db?j.join(""):j;return Q=i,c.join("\n")}function A(a,b){return"Line"===a.type?i(a.value)?"//"+a.value:"//"+a.value+"\n":bb.format.indent.adjustMultilineComment&&/[\n\r]/.test(a.value)?z("/*"+a.value+"*/",b):"/*"+a.value+"*/"}function B(a,b){var c,d,e,f,h,j,k;if(a.leadingComments&&a.leadingComments.length>0){for(f=b,e=a.leadingComments[0],b=[],_&&a.type===J.Program&&0===a.body.length&&b.push("\n"),b.push(A(e)),i(t(b).toString())||b.push("\n"),c=1,d=a.leadingComments.length;d>c;++c)e=a.leadingComments[c],k=[A(e)],i(t(k).toString())||k.push("\n"),b.push(w(k));b.push(w(f))}if(a.trailingComments)for(h=!i(t(b).toString()),j=g(" ",y(t([Q,b,R]).toString())),c=0,d=a.trailingComments.length;d>c;++c)e=a.trailingComments[c],h?(b=0===c?[b,R]:[b,j],b.push(A(e,j))):b=[b,w(A(e))],c===d-1||i(t(b).toString())||(b=[b,"\n"]);return b}function C(a,b,c){return c>b?["(",a,")"]:a}function D(a){var b,c,d;for(d=a.split(/\r\n|\n/),b=1,c=d.length;c>b;b++)d[b]=X+Q+d[b];return d}function E(a,b){var c,d,e;return c=a[bb.verbatim],"string"==typeof c?d=C(D(c),K.Sequence,b):(d=D(c.content),e=null!=c.precedence?c.precedence:K.Sequence,d=C(d,e,b)),t(d,a)}function F(){}function G(a){return t(a.name,a)}function H(a){var b;if(b=new F,e(a))return b.generateStatement(a,sb);if(d(a))return b.generateExpression(a,K.Sequence,ob);throw new Error("Unknown node type: "+a.type)}function I(d,e){var h,i,j=f();return null!=e?("string"==typeof e.indent&&(j.format.indent.style=e.indent),"number"==typeof e.base&&(j.format.indent.base=e.base),e=k(j,e),R=e.format.indent.style,Q="string"==typeof e.base?e.base:g(R,e.format.indent.base)):(e=j,R=e.format.indent.style,Q=g(R,e.format.indent.base)),S=e.format.json,T=e.format.renumber,U=S?!1:e.format.hexadecimal,V=S?"double":e.format.quotes,W=e.format.escapeless,X=e.format.newline,Y=e.format.space,e.format.compact&&(X=Y=R=Q=""),Z=e.format.parentheses,$=e.format.semicolons,_=e.format.safeConcatenation,ab=e.directive,cb=S?null:e.parse,db=e.sourceMap,bb=e,db&&(M=c.browser?b.sourceMap.SourceNode:a("source-map").SourceNode),h=H(d),db?(i=h.toStringWithSourceMap({file:e.file,sourceRoot:e.sourceMapRoot}),e.sourceContent&&i.map.setSourceContent(e.sourceMap,e.sourceContent),e.sourceMapWithCode?i:i.map.toString()):(i={code:h.toString(),map:null},e.sourceMapWithCode?i:i.code)}var J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,ab,bb,cb,db,eb,fb;N=a("estraverse"),O=a("esutils"),J={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExportBatchSpecifier:"ExportBatchSpecifier",ExportDeclaration:"ExportDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},K={Sequence:0,Yield:1,Assignment:1,Conditional:2,ArrowFunction:2,LogicalOR:3,LogicalAND:4,BitwiseOR:5,BitwiseXOR:6,BitwiseAND:7,Equality:8,Relational:9,BitwiseSHIFT:10,Additive:11,Multiplicative:12,Unary:13,Postfix:14,Call:15,New:16,TaggedTemplate:17,Member:18,Primary:19},L={"||":K.LogicalOR,"&&":K.LogicalAND,"|":K.BitwiseOR,"^":K.BitwiseXOR,"&":K.BitwiseAND,"==":K.Equality,"!=":K.Equality,"===":K.Equality,"!==":K.Equality,is:K.Equality,isnt:K.Equality,"<":K.Relational,">":K.Relational,"<=":K.Relational,">=":K.Relational,"in":K.Relational,"instanceof":K.Relational,"<<":K.BitwiseSHIFT,">>":K.BitwiseSHIFT,">>>":K.BitwiseSHIFT,"+":K.Additive,"-":K.Additive,"*":K.Multiplicative,"%":K.Multiplicative,"/":K.Multiplicative};var gb=1,hb=2,ib=4,jb=8,kb=16,lb=32,mb=hb|ib,nb=gb|hb,ob=gb|hb|ib,pb=gb,qb=ib,rb=gb|ib,sb=gb,tb=gb|lb,ub=0,vb=gb|kb,wb=gb|jb;P=Array.isArray,P||(P=function(a){return"[object Array]"===Object.prototype.toString.call(a)}),F.prototype.maybeBlock=function(a,b){var c,d,e=this;return d=!bb.comment||!a.leadingComments,a.type===J.BlockStatement&&d?[Y,this.generateStatement(a,b)]:a.type===J.EmptyStatement&&d?";":(x(function(){c=[X,w(e.generateStatement(a,b))]}),c)},F.prototype.maybeBlockSuffix=function(a,b){var c=i(t(b).toString());return a.type!==J.BlockStatement||bb.comment&&a.leadingComments||c?c?[b,Q]:[b,X,Q]:[b,Y]},F.prototype.generatePattern=function(a,b,c){return a.type===J.Identifier?G(a):this.generateExpression(a,b,c)},F.prototype.generateFunctionParams=function(a){var b,c,d,e;if(e=!1,a.type!==J.ArrowFunctionExpression||a.rest||a.defaults&&0!==a.defaults.length||1!==a.params.length||a.params[0].type!==J.Identifier){for(d=["("],a.defaults&&(e=!0),b=0,c=a.params.length;c>b;++b)d.push(e&&a.defaults[b]?this.generateAssignment(a.params[b],a.defaults[b],"=",K.Assignment,ob):this.generatePattern(a.params[b],K.Assignment,ob)),c>b+1&&d.push(","+Y);a.rest&&(a.params.length&&d.push(","+Y),d.push("..."),d.push(G(a.rest))),d.push(")")}else d=[G(a.params[0])];return d},F.prototype.generateFunctionBody=function(a){var b,c;return b=this.generateFunctionParams(a),a.type===J.ArrowFunctionExpression&&(b.push(Y),b.push("=>")),a.expression?(b.push(Y),c=this.generateExpression(a.body,K.Assignment,ob),"{"===c.toString().charAt(0)&&(c=["(",c,")"]),b.push(c)):b.push(this.maybeBlock(a.body,wb)),b},F.prototype.generateIterationForStatement=function(a,b,c){var d=["for"+Y+"("],e=this;return x(function(){b.left.type===J.VariableDeclaration?x(function(){d.push(b.left.kind+u()),d.push(e.generateStatement(b.left.declarations[0],ub))}):d.push(e.generateExpression(b.left,K.Call,ob)),d=v(d,a),d=[v(d,e.generateExpression(b.right,K.Sequence,ob)),")"]}),d.push(this.maybeBlock(b.body,c)),d},F.prototype.generatePropertyKey=function(a,b){var c=[];return b&&c.push("["),c.push(this.generateExpression(a,K.Sequence,ob)),b&&c.push("]"),c},F.prototype.generateAssignment=function(a,b,c,d,e){return K.Assignment<d&&(e|=gb),C([this.generateExpression(a,K.Call,e),Y+c+Y,this.generateExpression(b,K.Assignment,e)],K.Assignment,d)},F.prototype.semicolon=function(a){return!$&&a&lb?"":";"},F.Statement={BlockStatement:function(a,b){var c=["{",X],d=this;return x(function(){var e,f,g,h;for(h=sb,b&jb&&(h|=kb),e=0,f=a.body.length;f>e;++e)e===f-1&&(h|=lb),g=w(d.generateStatement(a.body[e],h)),c.push(g),i(t(g).toString())||c.push(X)}),c.push(w("}")),c},BreakStatement:function(a,b){return a.label?"break "+a.label.name+this.semicolon(b):"break"+this.semicolon(b)},ContinueStatement:function(a,b){return a.label?"continue "+a.label.name+this.semicolon(b):"continue"+this.semicolon(b)},ClassBody:function(a){var b=["{",X],c=this;return x(function(d){var e,f;for(e=0,f=a.body.length;f>e;++e)b.push(d),b.push(c.generateExpression(a.body[e],K.Sequence,ob)),f>e+1&&b.push(X)}),i(t(b).toString())||b.push(X),b.push(Q),b.push("}"),b},ClassDeclaration:function(a){var b,c;return b=["class "+a.id.name],a.superClass&&(c=v("extends",this.generateExpression(a.superClass,K.Assignment,ob)),b=v(b,c)),b.push(Y),b.push(this.generateStatement(a.body,tb)),b},DirectiveStatement:function(a,b){return bb.raw&&a.raw?a.raw+this.semicolon(b):q(a.directive)+this.semicolon(b)},DoWhileStatement:function(a,b){var c=v("do",this.maybeBlock(a.body,sb));return c=this.maybeBlockSuffix(a.body,c),v(c,["while"+Y+"(",this.generateExpression(a.test,K.Sequence,ob),")"+this.semicolon(b)])},CatchClause:function(a){var b,c=this;return x(function(){var d;b=["catch"+Y+"(",c.generateExpression(a.param,K.Sequence,ob),")"],a.guard&&(d=c.generateExpression(a.guard,K.Sequence,ob),b.splice(2,0," if ",d))}),b.push(this.maybeBlock(a.body,sb)),b},DebuggerStatement:function(a,b){return"debugger"+this.semicolon(b)},EmptyStatement:function(){return";"},ExportDeclaration:function(a,b){var c,d=["export"],f=this;return c=b&lb?tb:sb,a["default"]?(d=v(d,"default"),d=e(a.declaration)?v(d,this.generateStatement(a.declaration,c)):v(d,this.generateExpression(a.declaration,K.Assignment,ob)+this.semicolon(b))):a.declaration?v(d,this.generateStatement(a.declaration,c)):(a.specifiers&&(0===a.specifiers.length?d=v(d,"{"+Y+"}"):a.specifiers[0].type===J.ExportBatchSpecifier?d=v(d,this.generateExpression(a.specifiers[0],K.Sequence,ob)):(d=v(d,"{"),x(function(b){var c,e;for(d.push(X),c=0,e=a.specifiers.length;e>c;++c)d.push(b),d.push(f.generateExpression(a.specifiers[c],K.Sequence,ob)),e>c+1&&d.push(","+X)}),i(t(d).toString())||d.push(X),d.push(Q+"}")),a.source?d=v(d,["from"+Y,this.generateExpression(a.source,K.Sequence,ob),this.semicolon(b)]):d.push(this.semicolon(b))),d)},ExpressionStatement:function(a,b){var c,d;return c=[this.generateExpression(a.expression,K.Sequence,ob)],d=t(c).toString(),"{"===d.charAt(0)||"class"===d.slice(0,5)&&" {".indexOf(d.charAt(5))>=0||"function"===d.slice(0,8)&&"* (".indexOf(d.charAt(8))>=0||ab&&b&kb&&a.expression.type===J.Literal&&"string"==typeof a.expression.value?c=["(",c,")"+this.semicolon(b)]:c.push(this.semicolon(b)),c},ImportDeclaration:function(a,b){var c,d,e=this;return 0===a.specifiers.length?["import",Y,this.generateExpression(a.source,K.Sequence,ob),this.semicolon(b)]:(c=["import"],d=0,a.specifiers[d].type===J.ImportDefaultSpecifier&&(c=v(c,[this.generateExpression(a.specifiers[d],K.Sequence,ob)]),++d),a.specifiers[d]&&(0!==d&&c.push(","),a.specifiers[d].type===J.ImportNamespaceSpecifier?c=v(c,[Y,this.generateExpression(a.specifiers[d],K.Sequence,ob)]):(c.push(Y+"{"),a.specifiers.length-d===1?(c.push(Y),c.push(this.generateExpression(a.specifiers[d],K.Sequence,ob)),c.push(Y+"}"+Y)):(x(function(b){var f,g;for(c.push(X),f=d,g=a.specifiers.length;g>f;++f)c.push(b),c.push(e.generateExpression(a.specifiers[f],K.Sequence,ob)),g>f+1&&c.push(","+X)}),i(t(c).toString())||c.push(X),c.push(Q+"}"+Y)))),c=v(c,["from"+Y,this.generateExpression(a.source,K.Sequence,ob),this.semicolon(b)]))},VariableDeclarator:function(a,b){var c=b&gb?ob:mb;return a.init?[this.generateExpression(a.id,K.Assignment,c),Y,"=",Y,this.generateExpression(a.init,K.Assignment,c)]:this.generatePattern(a.id,K.Assignment,c)},VariableDeclaration:function(a,b){function c(){for(g=a.declarations[0],bb.comment&&g.leadingComments?(d.push("\n"),d.push(w(i.generateStatement(g,h)))):(d.push(u()),d.push(i.generateStatement(g,h))),e=1,f=a.declarations.length;f>e;++e)g=a.declarations[e],bb.comment&&g.leadingComments?(d.push(","+X),d.push(w(i.generateStatement(g,h)))):(d.push(","+Y),d.push(i.generateStatement(g,h)))}var d,e,f,g,h,i=this;return d=[a.kind],h=b&gb?sb:ub,a.declarations.length>1?x(c):c(),d.push(this.semicolon(b)),d},ThrowStatement:function(a,b){return[v("throw",this.generateExpression(a.argument,K.Sequence,ob)),this.semicolon(b)]},TryStatement:function(a){var b,c,d,e;if(b=["try",this.maybeBlock(a.block,sb)],b=this.maybeBlockSuffix(a.block,b),a.handlers)for(c=0,d=a.handlers.length;d>c;++c)b=v(b,this.generateStatement(a.handlers[c],sb)),(a.finalizer||c+1!==d)&&(b=this.maybeBlockSuffix(a.handlers[c].body,b));else{for(e=a.guardedHandlers||[],c=0,d=e.length;d>c;++c)b=v(b,this.generateStatement(e[c],sb)),(a.finalizer||c+1!==d)&&(b=this.maybeBlockSuffix(e[c].body,b));if(a.handler)if(P(a.handler))for(c=0,d=a.handler.length;d>c;++c)b=v(b,this.generateStatement(a.handler[c],sb)),(a.finalizer||c+1!==d)&&(b=this.maybeBlockSuffix(a.handler[c].body,b));else b=v(b,this.generateStatement(a.handler,sb)),a.finalizer&&(b=this.maybeBlockSuffix(a.handler.body,b))}return a.finalizer&&(b=v(b,["finally",this.maybeBlock(a.finalizer,sb)])),b},SwitchStatement:function(a){var b,c,d,e,f,g=this;if(x(function(){b=["switch"+Y+"(",g.generateExpression(a.discriminant,K.Sequence,ob),")"+Y+"{"+X]}),a.cases)for(f=sb,d=0,e=a.cases.length;e>d;++d)d===e-1&&(f|=lb),c=w(this.generateStatement(a.cases[d],f)),b.push(c),i(t(c).toString())||b.push(X);return b.push(w("}")),b},SwitchCase:function(a,b){var c,d,e,f,g,h=this;return x(function(){for(c=a.test?[v("case",h.generateExpression(a.test,K.Sequence,ob)),":"]:["default:"],e=0,f=a.consequent.length,f&&a.consequent[0].type===J.BlockStatement&&(d=h.maybeBlock(a.consequent[0],sb),c.push(d),e=1),e===f||i(t(c).toString())||c.push(X),g=sb;f>e;++e)e===f-1&&b&lb&&(g|=lb),d=w(h.generateStatement(a.consequent[e],g)),c.push(d),e+1===f||i(t(d).toString())||c.push(X)}),c},IfStatement:function(a,b){var c,d,e,f=this;return x(function(){c=["if"+Y+"(",f.generateExpression(a.test,K.Sequence,ob),")"]}),e=b&lb,d=sb,e&&(d|=lb),a.alternate?(c.push(this.maybeBlock(a.consequent,sb)),c=this.maybeBlockSuffix(a.consequent,c),c=a.alternate.type===J.IfStatement?v(c,["else ",this.generateStatement(a.alternate,d)]):v(c,v("else",this.maybeBlock(a.alternate,d)))):c.push(this.maybeBlock(a.consequent,d)),c},ForStatement:function(a,b){var c,d=this;return x(function(){c=["for"+Y+"("],a.init?a.init.type===J.VariableDeclaration?c.push(d.generateStatement(a.init,ub)):(c.push(d.generateExpression(a.init,K.Sequence,mb)),c.push(";")):c.push(";"),a.test?(c.push(Y),c.push(d.generateExpression(a.test,K.Sequence,ob)),c.push(";")):c.push(";"),a.update?(c.push(Y),c.push(d.generateExpression(a.update,K.Sequence,ob)),c.push(")")):c.push(")")}),c.push(this.maybeBlock(a.body,b&lb?tb:sb)),c},ForInStatement:function(a,b){return this.generateIterationForStatement("in",a,b&lb?tb:sb)},ForOfStatement:function(a,b){return this.generateIterationForStatement("of",a,b&lb?tb:sb)},LabeledStatement:function(a,b){return[a.label.name+":",this.maybeBlock(a.body,b&lb?tb:sb)]},Program:function(a){var b,c,d,e,f;for(e=a.body.length,b=[_&&e>0?"\n":""],f=vb,d=0;e>d;++d)_||d!==e-1||(f|=lb),c=w(this.generateStatement(a.body[d],f)),b.push(c),e>d+1&&!i(t(c).toString())&&b.push(X);return b},FunctionDeclaration:function(a){var b=a.generator&&!bb.moz.starlessGenerator;return[b?"function*":"function",b?Y:u(),G(a.id),this.generateFunctionBody(a)]},ReturnStatement:function(a,b){return a.argument?[v("return",this.generateExpression(a.argument,K.Sequence,ob)),this.semicolon(b)]:["return"+this.semicolon(b)]},WhileStatement:function(a,b){var c,d=this;return x(function(){c=["while"+Y+"(",d.generateExpression(a.test,K.Sequence,ob),")"]}),c.push(this.maybeBlock(a.body,b&lb?tb:sb)),c},WithStatement:function(a,b){var c,d=this;return x(function(){c=["with"+Y+"(",d.generateExpression(a.object,K.Sequence,ob),")"]}),c.push(this.maybeBlock(a.body,b&lb?tb:sb)),c}},j(F.prototype,F.Statement),F.Expression={SequenceExpression:function(a,b,c){var d,e,f;for(K.Sequence<b&&(c|=gb),d=[],e=0,f=a.expressions.length;f>e;++e)d.push(this.generateExpression(a.expressions[e],K.Assignment,c)),f>e+1&&d.push(","+Y);return C(d,K.Sequence,b)},AssignmentExpression:function(a,b,c){return this.generateAssignment(a.left,a.right,a.operator,b,c)},ArrowFunctionExpression:function(a,b){return C(this.generateFunctionBody(a),K.ArrowFunction,b)},ConditionalExpression:function(a,b,c){return K.Conditional<b&&(c|=gb),C([this.generateExpression(a.test,K.LogicalOR,c),Y+"?"+Y,this.generateExpression(a.consequent,K.Assignment,c),Y+":"+Y,this.generateExpression(a.alternate,K.Assignment,c)],K.Conditional,b)},LogicalExpression:function(a,b,c){return this.BinaryExpression(a,b,c)},BinaryExpression:function(a,b,c){var d,e,f,g;return e=L[a.operator],b>e&&(c|=gb),f=this.generateExpression(a.left,e,c),g=f.toString(),d=47===g.charCodeAt(g.length-1)&&O.code.isIdentifierPart(a.operator.charCodeAt(0))?[f,u(),a.operator]:v(f,a.operator),f=this.generateExpression(a.right,e+1,c),"/"===a.operator&&"/"===f.toString().charAt(0)||"<"===a.operator.slice(-1)&&"!--"===f.toString().slice(0,3)?(d.push(u()),d.push(f)):d=v(d,f),"in"!==a.operator||c&gb?C(d,e,b):["(",d,")"]},CallExpression:function(a,b,c){var d,e,f;for(d=[this.generateExpression(a.callee,K.Call,nb)],d.push("("),e=0,f=a.arguments.length;f>e;++e)d.push(this.generateExpression(a.arguments[e],K.Assignment,ob)),f>e+1&&d.push(","+Y);return d.push(")"),c&hb?C(d,K.Call,b):["(",d,")"]},NewExpression:function(a,b,c){var d,e,f,g,h;if(e=a.arguments.length,h=c&ib&&!Z&&0===e?rb:pb,d=v("new",this.generateExpression(a.callee,K.New,h)),!(c&ib)||Z||e>0){for(d.push("("),f=0,g=e;g>f;++f)d.push(this.generateExpression(a.arguments[f],K.Assignment,ob)),g>f+1&&d.push(","+Y);d.push(")")}return C(d,K.New,b)},MemberExpression:function(a,b,c){var d,e;return d=[this.generateExpression(a.object,K.Call,c&hb?nb:pb)],a.computed?(d.push("["),d.push(this.generateExpression(a.property,K.Sequence,c&hb?ob:rb)),d.push("]")):(a.object.type===J.Literal&&"number"==typeof a.object.value&&(e=t(d).toString(),e.indexOf(".")<0&&!/[eExX]/.test(e)&&O.code.isDecimalDigit(e.charCodeAt(e.length-1))&&!(e.length>=2&&48===e.charCodeAt(0))&&d.push(".")),d.push("."),d.push(G(a.property))),C(d,K.Member,b)},UnaryExpression:function(a,b){var c,d,e,f,g;return d=this.generateExpression(a.argument,K.Unary,ob),""===Y?c=v(a.operator,d):(c=[a.operator],a.operator.length>2?c=v(c,d):(f=t(c).toString(),g=f.charCodeAt(f.length-1),e=d.toString().charCodeAt(0),(43===g||45===g)&&g===e||O.code.isIdentifierPart(g)&&O.code.isIdentifierPart(e)?(c.push(u()),c.push(d)):c.push(d))),C(c,K.Unary,b)},YieldExpression:function(a,b){var c;return c=a.delegate?"yield*":"yield",a.argument&&(c=v(c,this.generateExpression(a.argument,K.Yield,ob))),C(c,K.Yield,b)},UpdateExpression:function(a,b){return a.prefix?C([a.operator,this.generateExpression(a.argument,K.Unary,ob)],K.Unary,b):C([this.generateExpression(a.argument,K.Postfix,ob),a.operator],K.Postfix,b)},FunctionExpression:function(a){var b,c;return c=a.generator&&!bb.moz.starlessGenerator,b=c?"function*":"function",a.id?[b,c?Y:u(),G(a.id),this.generateFunctionBody(a)]:[b+Y,this.generateFunctionBody(a)]},ExportBatchSpecifier:function(){return"*"},ArrayPattern:function(a,b,c){return this.ArrayExpression(a,b,c)},ArrayExpression:function(a){var b,c,d=this;return a.elements.length?(c=a.elements.length>1,b=["[",c?X:""],x(function(e){var f,g;for(f=0,g=a.elements.length;g>f;++f)a.elements[f]?(b.push(c?e:""),b.push(d.generateExpression(a.elements[f],K.Assignment,ob))):(c&&b.push(e),f+1===g&&b.push(",")),g>f+1&&b.push(","+(c?X:Y))}),c&&!i(t(b).toString())&&b.push(X),b.push(c?Q:""),b.push("]"),b):"[]"},ClassExpression:function(a){var b,c;return b=["class"],a.id&&(b=v(b,this.generateExpression(a.id,K.Sequence,ob))),a.superClass&&(c=v("extends",this.generateExpression(a.superClass,K.Assignment,ob)),b=v(b,c)),b.push(Y),b.push(this.generateStatement(a.body,tb)),b},MethodDefinition:function(a){var b,c;return b=a["static"]?["static"+Y]:[],"get"===a.kind||"set"===a.kind?b=v(b,[v(a.kind,this.generatePropertyKey(a.key,a.computed)),this.generateFunctionBody(a.value)]):(c=[this.generatePropertyKey(a.key,a.computed),this.generateFunctionBody(a.value)],a.value.generator?(b.push("*"),b.push(c)):b=v(b,c)),b},Property:function(a){var b;return"get"===a.kind||"set"===a.kind?[a.kind,u(),this.generatePropertyKey(a.key,a.computed),this.generateFunctionBody(a.value)]:a.shorthand?this.generatePropertyKey(a.key,a.computed):a.method?(b=[],a.value.generator&&b.push("*"),b.push(this.generatePropertyKey(a.key,a.computed)),b.push(this.generateFunctionBody(a.value)),b):[this.generatePropertyKey(a.key,a.computed),":"+Y,this.generateExpression(a.value,K.Assignment,ob)]},ObjectExpression:function(a){var b,c,d,e=this;return a.properties.length?(b=a.properties.length>1,x(function(){d=e.generateExpression(a.properties[0],K.Sequence,ob)}),b||h(t(d).toString())?(x(function(f){var g,h;if(c=["{",X,f,d],b)for(c.push(","+X),g=1,h=a.properties.length;h>g;++g)c.push(f),c.push(e.generateExpression(a.properties[g],K.Sequence,ob)),h>g+1&&c.push(","+X)}),i(t(c).toString())||c.push(X),c.push(Q),c.push("}"),c):["{",Y,d,Y,"}"]):"{}"},ObjectPattern:function(a){var b,c,d,e,f,g=this;if(!a.properties.length)return"{}";if(e=!1,1===a.properties.length)f=a.properties[0],f.value.type!==J.Identifier&&(e=!0);else for(c=0,d=a.properties.length;d>c;++c)if(f=a.properties[c],!f.shorthand){e=!0;break}return b=["{",e?X:""],x(function(c){var d,f;for(d=0,f=a.properties.length;f>d;++d)b.push(e?c:""),b.push(g.generateExpression(a.properties[d],K.Sequence,ob)),f>d+1&&b.push(","+(e?X:Y))}),e&&!i(t(b).toString())&&b.push(X),b.push(e?Q:""),b.push("}"),b},ThisExpression:function(){return"this"},Identifier:function(a){return G(a)},ImportDefaultSpecifier:function(a){return G(a.id)},ImportNamespaceSpecifier:function(a){var b=["*"];return a.id&&b.push(Y+"as"+u()+G(a.id)),b},ImportSpecifier:function(a,b,c){return this.ExportSpecifier(a,b,c)},ExportSpecifier:function(a){var b=[a.id.name];return a.name&&b.push(u()+"as"+u()+G(a.name)),b},Literal:function(a){var b;if(a.hasOwnProperty("raw")&&cb&&bb.raw)try{if(b=cb(a.raw).body[0].expression,b.type===J.Literal&&b.value===a.value)return a.raw}catch(c){}return null===a.value?"null":"string"==typeof a.value?r(a.value):"number"==typeof a.value?l(a.value):"boolean"==typeof a.value?a.value?"true":"false":n(a.value)},GeneratorExpression:function(a,b,c){return this.ComprehensionExpression(a,b,c)},ComprehensionExpression:function(a){var b,c,d,e,f=this;return b=a.type===J.GeneratorExpression?["("]:["["],bb.moz.comprehensionExpressionStartsWithAssignment&&(e=this.generateExpression(a.body,K.Assignment,ob),b.push(e)),a.blocks&&x(function(){for(c=0,d=a.blocks.length;d>c;++c)e=f.generateExpression(a.blocks[c],K.Sequence,ob),c>0||bb.moz.comprehensionExpressionStartsWithAssignment?b=v(b,e):b.push(e)}),a.filter&&(b=v(b,"if"+Y),e=this.generateExpression(a.filter,K.Sequence,ob),b=v(b,["(",e,")"])),bb.moz.comprehensionExpressionStartsWithAssignment||(e=this.generateExpression(a.body,K.Assignment,ob),b=v(b,e)),b.push(a.type===J.GeneratorExpression?")":"]"),b},ComprehensionBlock:function(a){var b;return b=a.left.type===J.VariableDeclaration?[a.left.kind,u(),this.generateStatement(a.left.declarations[0],ub)]:this.generateExpression(a.left,K.Call,ob),b=v(b,a.of?"of":"in"),b=v(b,this.generateExpression(a.right,K.Sequence,ob)),["for"+Y+"(",b,")"]},SpreadElement:function(a){return["...",this.generateExpression(a.argument,K.Assignment,ob)]},TaggedTemplateExpression:function(a,b,c){var d=nb;c&hb||(d=pb);var e=[this.generateExpression(a.tag,K.Call,d),this.generateExpression(a.quasi,K.Primary,qb)];return C(e,K.TaggedTemplate,b)},TemplateElement:function(a){return a.value.raw},TemplateLiteral:function(a){var b,c,d;for(b=["`"],c=0,d=a.quasis.length;d>c;++c)b.push(this.generateExpression(a.quasis[c],K.Primary,ob)),d>c+1&&(b.push("${"+Y),b.push(this.generateExpression(a.expressions[c],K.Sequence,ob)),b.push(Y+"}"));return b.push("`"),b},ModuleSpecifier:function(a,b,c){return this.Literal(a,b,c)}},j(F.prototype,F.Expression),F.prototype.generateExpression=function(a,b,c){var d,e;return e=a.type||J.Property,bb.verbatim&&a.hasOwnProperty(bb.verbatim)?E(a,b):(d=this[e](a,b,c),bb.comment&&(d=B(a,d)),t(d,a))},F.prototype.generateStatement=function(a,b){var c,d;return c=this[a.type](a,b),bb.comment&&(c=B(a,c)),d=t(c).toString(),a.type!==J.Program||_||""!==X||"\n"!==d.charAt(d.length-1)||(c=db?t(c).replaceRight(/\s+$/,""):d.replace(/\s+$/,"")),t(c,a)},eb={indent:{style:"",base:0},renumber:!0,hexadecimal:!0,quotes:"auto",escapeless:!0,compact:!0,parentheses:!1,semicolons:!1},fb=f().format,c.version=a("./package.json").version,c.generate=I,c.attachComments=N.attachComments,c.Precedence=k({},K),c.browser=!1,c.FORMAT_MINIFY=eb,c.FORMAT_DEFAULTS=fb}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./package.json":79,estraverse:64,esutils:68,"source-map":69}],64:[function(a,b,c){!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["exports"],b):b("undefined"!=typeof c?c:a.estraverse={})}(this,function d(a){"use strict";function b(){}function c(a){var b,d,e={};for(b in a)a.hasOwnProperty(b)&&(d=a[b],e[b]="object"==typeof d&&null!==d?c(d):d);return e}function e(a){var b,c={};for(b in a)a.hasOwnProperty(b)&&(c[b]=a[b]);return c}function f(a,b){var c,d,e,f;for(d=a.length,e=0;d;)c=d>>>1,f=e+c,b(a[f])?d=c:(e=f+1,d-=c+1);return e}function g(a,b){var c,d,e,f;for(d=a.length,e=0;d;)c=d>>>1,f=e+c,b(a[f])?(e=f+1,d-=c+1):d=c;return e}function h(a,b){return w(b).forEach(function(c){a[c]=b[c]}),a}function i(a,b){this.parent=a,this.key=b}function j(a,b,c,d){this.node=a,this.path=b,this.wrap=c,this.ref=d}function k(){}function l(a){return null==a?!1:"object"==typeof a&&"string"==typeof a.type}function m(a,b){return(a===r.ObjectExpression||a===r.ObjectPattern)&&"properties"===b}function n(a,b){var c=new k;return c.traverse(a,b)}function o(a,b){var c=new k;return c.replace(a,b)}function p(a,b){var c;return c=f(b,function(b){return b.range[0]>a.range[0]}),a.extendedRange=[a.range[0],a.range[1]],c!==b.length&&(a.extendedRange[1]=b[c].range[0]),c-=1,c>=0&&(a.extendedRange[0]=b[c].range[1]),a}function q(a,b,d){var e,f,g,h,i=[];if(!a.range)throw new Error("attachComments needs range information");if(!d.length){if(b.length){for(g=0,f=b.length;f>g;g+=1)e=c(b[g]),e.extendedRange=[0,a.range[0]],i.push(e);a.leadingComments=i}return a}for(g=0,f=b.length;f>g;g+=1)i.push(p(c(b[g]),d));return h=0,n(a,{enter:function(a){for(var b;h<i.length&&(b=i[h],!(b.extendedRange[1]>a.range[0]));)b.extendedRange[1]===a.range[0]?(a.leadingComments||(a.leadingComments=[]),a.leadingComments.push(b),i.splice(h,1)):h+=1;return h===i.length?t.Break:i[h].extendedRange[0]>a.range[1]?t.Skip:void 0}}),h=0,n(a,{leave:function(a){for(var b;h<i.length&&(b=i[h],!(a.range[1]<b.extendedRange[0]));)a.range[1]===b.extendedRange[0]?(a.trailingComments||(a.trailingComments=[]),a.trailingComments.push(b),i.splice(h,1)):h+=1;return h===i.length?t.Break:i[h].extendedRange[0]>a.range[1]?t.Skip:void 0}}),a}var r,s,t,u,v,w,x,y,z;return s=Array.isArray,s||(s=function(a){return"[object Array]"===Object.prototype.toString.call(a)}),b(e),b(g),v=Object.create||function(){function a(){}return function(b){return a.prototype=b,new a}}(),w=Object.keys||function(a){var b,c=[];for(b in a)c.push(b);return c},r={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportBatchSpecifier:"ExportBatchSpecifier",ExportDeclaration:"ExportDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},u={AssignmentExpression:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","defaults","rest","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ClassBody:["body"],ClassDeclaration:["id","body","superClass"],ClassExpression:["id","body","superClass"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportBatchSpecifier:[],ExportDeclaration:["declaration","specifiers","source"],ExportSpecifier:["id","name"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","defaults","rest","body"],FunctionExpression:["id","params","defaults","rest","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["id"],ImportNamespaceSpecifier:["id"],ImportSpecifier:["id","name"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],Program:["body"],Property:["key","value"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handlers","handler","guardedHandlers","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},x={},y={},z={},t={Break:x,Skip:y,Remove:z},i.prototype.replace=function(a){this.parent[this.key]=a
-},i.prototype.remove=function(){return s(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)},k.prototype.path=function(){function a(a,b){if(s(b))for(d=0,e=b.length;e>d;++d)a.push(b[d]);else a.push(b)}var b,c,d,e,f,g;if(!this.__current.path)return null;for(f=[],b=2,c=this.__leavelist.length;c>b;++b)g=this.__leavelist[b],a(f,g.path);return a(f,this.__current.path),f},k.prototype.type=function(){var a=this.current();return a.type||this.__current.wrap},k.prototype.parents=function(){var a,b,c;for(c=[],a=1,b=this.__leavelist.length;b>a;++a)c.push(this.__leavelist[a].node);return c},k.prototype.current=function(){return this.__current.node},k.prototype.__execute=function(a,b){var c,d;return d=void 0,c=this.__current,this.__current=b,this.__state=null,a&&(d=a.call(this,b.node,this.__leavelist[this.__leavelist.length-1].node)),this.__current=c,d},k.prototype.notify=function(a){this.__state=a},k.prototype.skip=function(){this.notify(y)},k.prototype["break"]=function(){this.notify(x)},k.prototype.remove=function(){this.notify(z)},k.prototype.__initialize=function(a,b){this.visitor=b,this.root=a,this.__worklist=[],this.__leavelist=[],this.__current=null,this.__state=null,this.__fallback="iteration"===b.fallback,this.__keys=u,b.keys&&(this.__keys=h(v(this.__keys),b.keys))},k.prototype.traverse=function(a,b){var c,d,e,f,g,h,i,k,n,o,p,q;for(this.__initialize(a,b),q={},c=this.__worklist,d=this.__leavelist,c.push(new j(a,null,null,null)),d.push(new j(null,null,null,null));c.length;)if(e=c.pop(),e!==q){if(e.node){if(h=this.__execute(b.enter,e),this.__state===x||h===x)return;if(c.push(q),d.push(e),this.__state===y||h===y)continue;if(f=e.node,g=e.wrap||f.type,o=this.__keys[g],!o){if(!this.__fallback)throw new Error("Unknown node type "+g+".");o=w(f)}for(k=o.length;(k-=1)>=0;)if(i=o[k],p=f[i])if(s(p)){for(n=p.length;(n-=1)>=0;)if(p[n]){if(m(g,o[k]))e=new j(p[n],[i,n],"Property",null);else{if(!l(p[n]))continue;e=new j(p[n],[i,n],null,null)}c.push(e)}}else l(p)&&c.push(new j(p,i,null,null))}}else if(e=d.pop(),h=this.__execute(b.leave,e),this.__state===x||h===x)return},k.prototype.replace=function(a,b){function c(a){var b,c,e,f;if(a.ref.remove())for(c=a.ref.key,f=a.ref.parent,b=d.length;b--;)if(e=d[b],e.ref&&e.ref.parent===f){if(e.ref.key<c)break;--e.ref.key}}var d,e,f,g,h,k,n,o,p,q,r,t,u;for(this.__initialize(a,b),r={},d=this.__worklist,e=this.__leavelist,t={root:a},k=new j(a,null,null,new i(t,"root")),d.push(k),e.push(k);d.length;)if(k=d.pop(),k!==r){if(h=this.__execute(b.enter,k),void 0!==h&&h!==x&&h!==y&&h!==z&&(k.ref.replace(h),k.node=h),(this.__state===z||h===z)&&(c(k),k.node=null),this.__state===x||h===x)return t.root;if(f=k.node,f&&(d.push(r),e.push(k),this.__state!==y&&h!==y)){if(g=k.wrap||f.type,p=this.__keys[g],!p){if(!this.__fallback)throw new Error("Unknown node type "+g+".");p=w(f)}for(n=p.length;(n-=1)>=0;)if(u=p[n],q=f[u])if(s(q)){for(o=q.length;(o-=1)>=0;)if(q[o]){if(m(g,p[n]))k=new j(q[o],[u,o],"Property",new i(q,o));else{if(!l(q[o]))continue;k=new j(q[o],[u,o],null,new i(q,o))}d.push(k)}}else l(q)&&d.push(new j(q,u,null,new i(f,u)))}}else if(k=e.pop(),h=this.__execute(b.leave,k),void 0!==h&&h!==x&&h!==y&&h!==z&&k.ref.replace(h),(this.__state===z||h===z)&&c(k),this.__state===x||h===x)return t.root;return t.root},a.version="1.8.1-dev",a.Syntax=r,a.traverse=n,a.replace=o,a.attachComments=q,a.VisitorKeys=u,a.VisitorOption=t,a.Controller=k,a.cloneEnvironment=function(){return d({})},a})},{}],65:[function(a,b){!function(){"use strict";function a(a){if(null==a)return!1;switch(a.type){case"ArrayExpression":case"AssignmentExpression":case"BinaryExpression":case"CallExpression":case"ConditionalExpression":case"FunctionExpression":case"Identifier":case"Literal":case"LogicalExpression":case"MemberExpression":case"NewExpression":case"ObjectExpression":case"SequenceExpression":case"ThisExpression":case"UnaryExpression":case"UpdateExpression":return!0}return!1}function c(a){if(null==a)return!1;switch(a.type){case"DoWhileStatement":case"ForInStatement":case"ForStatement":case"WhileStatement":return!0}return!1}function d(a){if(null==a)return!1;switch(a.type){case"BlockStatement":case"BreakStatement":case"ContinueStatement":case"DebuggerStatement":case"DoWhileStatement":case"EmptyStatement":case"ExpressionStatement":case"ForInStatement":case"ForStatement":case"IfStatement":case"LabeledStatement":case"ReturnStatement":case"SwitchStatement":case"ThrowStatement":case"TryStatement":case"VariableDeclaration":case"WhileStatement":case"WithStatement":return!0}return!1}function e(a){return d(a)||null!=a&&"FunctionDeclaration"===a.type}function f(a){switch(a.type){case"IfStatement":return null!=a.alternate?a.alternate:a.consequent;case"LabeledStatement":case"ForStatement":case"ForInStatement":case"WhileStatement":case"WithStatement":return a.body}return null}function g(a){var b;if("IfStatement"!==a.type)return!1;if(null==a.alternate)return!1;b=a.consequent;do{if("IfStatement"===b.type&&null==b.alternate)return!0;b=f(b)}while(b);return!1}b.exports={isExpression:a,isStatement:d,isIterationStatement:c,isSourceElement:e,isProblematicIfStatement:g,trailingStatement:f}}()},{}],66:[function(a,b){!function(){"use strict";function a(a){return a>=48&&57>=a}function c(b){return a(b)||b>=97&&102>=b||b>=65&&70>=b}function d(a){return a>=48&&55>=a}function e(a){return 32===a||9===a||11===a||12===a||160===a||a>=5760&&j.indexOf(a)>=0}function f(a){return 10===a||13===a||8232===a||8233===a}function g(a){return a>=97&&122>=a||a>=65&&90>=a||36===a||95===a||92===a||a>=128&&i.NonAsciiIdentifierStart.test(String.fromCharCode(a))}function h(a){return a>=97&&122>=a||a>=65&&90>=a||a>=48&&57>=a||36===a||95===a||92===a||a>=128&&i.NonAsciiIdentifierPart.test(String.fromCharCode(a))}var i,j;i={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},j=[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],b.exports={isDecimalDigit:a,isHexDigit:c,isOctalDigit:d,isWhiteSpace:e,isLineTerminator:f,isIdentifierStart:g,isIdentifierPart:h}}()},{}],67:[function(a,b){!function(){"use strict";function c(a){switch(a){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function d(a,b){return b||"yield"!==a?e(a,b):!1}function e(a,b){if(b&&c(a))return!0;switch(a.length){case 2:return"if"===a||"in"===a||"do"===a;case 3:return"var"===a||"for"===a||"new"===a||"try"===a;case 4:return"this"===a||"else"===a||"case"===a||"void"===a||"with"===a||"enum"===a;case 5:return"while"===a||"break"===a||"catch"===a||"throw"===a||"const"===a||"yield"===a||"class"===a||"super"===a;case 6:return"return"===a||"typeof"===a||"delete"===a||"switch"===a||"export"===a||"import"===a;case 7:return"default"===a||"finally"===a||"extends"===a;case 8:return"function"===a||"continue"===a||"debugger"===a;case 10:return"instanceof"===a;default:return!1}}function f(a,b){return"null"===a||"true"===a||"false"===a||d(a,b)}function g(a,b){return"null"===a||"true"===a||"false"===a||e(a,b)}function h(a){return"eval"===a||"arguments"===a}function i(a){var b,c,d;if(0===a.length)return!1;if(d=a.charCodeAt(0),!l.isIdentifierStart(d)||92===d)return!1;for(b=1,c=a.length;c>b;++b)if(d=a.charCodeAt(b),!l.isIdentifierPart(d)||92===d)return!1;return!0}function j(a,b){return i(a)&&!f(a,b)}function k(a,b){return i(a)&&!g(a,b)}var l=a("./code");b.exports={isKeywordES5:d,isKeywordES6:e,isReservedWordES5:f,isReservedWordES6:g,isRestrictedWord:h,isIdentifierName:i,isIdentifierES5:j,isIdentifierES6:k}}()},{"./code":66}],68:[function(a,b,c){!function(){"use strict";c.ast=a("./ast"),c.code=a("./code"),c.keyword=a("./keyword")}()},{"./ast":65,"./code":66,"./keyword":67}],69:[function(a,b,c){c.SourceMapGenerator=a("./source-map/source-map-generator").SourceMapGenerator,c.SourceMapConsumer=a("./source-map/source-map-consumer").SourceMapConsumer,c.SourceNode=a("./source-map/source-node").SourceNode},{"./source-map/source-map-consumer":74,"./source-map/source-map-generator":75,"./source-map/source-node":76}],70:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(){this._array=[],this._set={}}var d=a("./util");c.fromArray=function(a,b){for(var d=new c,e=0,f=a.length;f>e;e++)d.add(a[e],b);return d},c.prototype.add=function(a,b){var c=this.has(a),e=this._array.length;(!c||b)&&this._array.push(a),c||(this._set[d.toSetString(a)]=e)},c.prototype.has=function(a){return Object.prototype.hasOwnProperty.call(this._set,d.toSetString(a))},c.prototype.indexOf=function(a){if(this.has(a))return this._set[d.toSetString(a)];throw new Error('"'+a+'" is not in the set.')},c.prototype.at=function(a){if(a>=0&&a<this._array.length)return this._array[a];throw new Error("No element indexed by "+a)},c.prototype.toArray=function(){return this._array.slice()},b.ArraySet=c})},{"./util":77,amdefine:78}],71:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a){return 0>a?(-a<<1)+1:(a<<1)+0}function d(a){var b=1===(1&a),c=a>>1;return b?-c:c}var e=a("./base64"),f=5,g=1<<f,h=g-1,i=g;b.encode=function(a){var b,d="",g=c(a);do b=g&h,g>>>=f,g>0&&(b|=i),d+=e.encode(b);while(g>0);return d},b.decode=function(a,b){var c,g,j=0,k=a.length,l=0,m=0;do{if(j>=k)throw new Error("Expected more digits in base 64 VLQ value.");g=e.decode(a.charAt(j++)),c=!!(g&i),g&=h,l+=g<<m,m+=f}while(c);b.value=d(l),b.rest=a.slice(j)}})},{"./base64":72,amdefine:78}],72:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){var c={},d={};"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("").forEach(function(a,b){c[a]=b,d[b]=a}),b.encode=function(a){if(a in d)return d[a];throw new TypeError("Must be between 0 and 63: "+a)},b.decode=function(a){if(a in c)return c[a];throw new TypeError("Not a valid base 64 digit: "+a)}})},{amdefine:78}],73:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a,b,d,e,f){var g=Math.floor((b-a)/2)+a,h=f(d,e[g],!0);return 0===h?g:h>0?b-g>1?c(g,b,d,e,f):g:g-a>1?c(a,g,d,e,f):0>a?-1:a}b.search=function(a,b,d){return 0===b.length?-1:c(-1,b.length,a,b,d)}})},{amdefine:78}],74:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a){var b=a;"string"==typeof a&&(b=JSON.parse(a.replace(/^\)\]\}'/,"")));var c=d.getArg(b,"version"),e=d.getArg(b,"sources"),g=d.getArg(b,"names",[]),h=d.getArg(b,"sourceRoot",null),i=d.getArg(b,"sourcesContent",null),j=d.getArg(b,"mappings"),k=d.getArg(b,"file",null);if(c!=this._version)throw new Error("Unsupported version: "+c);e=e.map(d.normalize),this._names=f.fromArray(g,!0),this._sources=f.fromArray(e,!0),this.sourceRoot=h,this.sourcesContent=i,this._mappings=j,this.file=k}var d=a("./util"),e=a("./binary-search"),f=a("./array-set").ArraySet,g=a("./base64-vlq");c.fromSourceMap=function(a){var b=Object.create(c.prototype);return b._names=f.fromArray(a._names.toArray(),!0),b._sources=f.fromArray(a._sources.toArray(),!0),b.sourceRoot=a._sourceRoot,b.sourcesContent=a._generateSourcesContent(b._sources.toArray(),b.sourceRoot),b.file=a._file,b.__generatedMappings=a._mappings.slice().sort(d.compareByGeneratedPositions),b.__originalMappings=a._mappings.slice().sort(d.compareByOriginalPositions),b},c.prototype._version=3,Object.defineProperty(c.prototype,"sources",{get:function(){return this._sources.toArray().map(function(a){return null!=this.sourceRoot?d.join(this.sourceRoot,a):a},this)}}),c.prototype.__generatedMappings=null,Object.defineProperty(c.prototype,"_generatedMappings",{get:function(){return this.__generatedMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__generatedMappings}}),c.prototype.__originalMappings=null,Object.defineProperty(c.prototype,"_originalMappings",{get:function(){return this.__originalMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__originalMappings}}),c.prototype._nextCharIsMappingSeparator=function(a){var b=a.charAt(0);return";"===b||","===b},c.prototype._parseMappings=function(a){for(var b,c=1,e=0,f=0,h=0,i=0,j=0,k=a,l={};k.length>0;)if(";"===k.charAt(0))c++,k=k.slice(1),e=0;else if(","===k.charAt(0))k=k.slice(1);else{if(b={},b.generatedLine=c,g.decode(k,l),b.generatedColumn=e+l.value,e=b.generatedColumn,k=l.rest,k.length>0&&!this._nextCharIsMappingSeparator(k)){if(g.decode(k,l),b.source=this._sources.at(i+l.value),i+=l.value,k=l.rest,0===k.length||this._nextCharIsMappingSeparator(k))throw new Error("Found a source, but no line and column");if(g.decode(k,l),b.originalLine=f+l.value,f=b.originalLine,b.originalLine+=1,k=l.rest,0===k.length||this._nextCharIsMappingSeparator(k))throw new Error("Found a source and line, but no column");g.decode(k,l),b.originalColumn=h+l.value,h=b.originalColumn,k=l.rest,k.length>0&&!this._nextCharIsMappingSeparator(k)&&(g.decode(k,l),b.name=this._names.at(j+l.value),j+=l.value,k=l.rest)}this.__generatedMappings.push(b),"number"==typeof b.originalLine&&this.__originalMappings.push(b)}this.__generatedMappings.sort(d.compareByGeneratedPositions),this.__originalMappings.sort(d.compareByOriginalPositions)},c.prototype._findMapping=function(a,b,c,d,f){if(a[c]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+a[c]);if(a[d]<0)throw new TypeError("Column must be greater than or equal to 0, got "+a[d]);return e.search(a,b,f)},c.prototype.computeColumnSpans=function(){for(var a=0;a<this._generatedMappings.length;++a){var b=this._generatedMappings[a];if(a+1<this._generatedMappings.length){var c=this._generatedMappings[a+1];if(b.generatedLine===c.generatedLine){b.lastGeneratedColumn=c.generatedColumn-1;continue}}b.lastGeneratedColumn=1/0}},c.prototype.originalPositionFor=function(a){var b={generatedLine:d.getArg(a,"line"),generatedColumn:d.getArg(a,"column")},c=this._findMapping(b,this._generatedMappings,"generatedLine","generatedColumn",d.compareByGeneratedPositions);if(c>=0){var e=this._generatedMappings[c];if(e.generatedLine===b.generatedLine){var f=d.getArg(e,"source",null);return null!=f&&null!=this.sourceRoot&&(f=d.join(this.sourceRoot,f)),{source:f,line:d.getArg(e,"originalLine",null),column:d.getArg(e,"originalColumn",null),name:d.getArg(e,"name",null)}}}return{source:null,line:null,column:null,name:null}},c.prototype.sourceContentFor=function(a){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(a=d.relative(this.sourceRoot,a)),this._sources.has(a))return this.sourcesContent[this._sources.indexOf(a)];var b;if(null!=this.sourceRoot&&(b=d.urlParse(this.sourceRoot))){var c=a.replace(/^file:\/\//,"");if("file"==b.scheme&&this._sources.has(c))return this.sourcesContent[this._sources.indexOf(c)];if((!b.path||"/"==b.path)&&this._sources.has("/"+a))return this.sourcesContent[this._sources.indexOf("/"+a)]}throw new Error('"'+a+'" is not in the SourceMap.')},c.prototype.generatedPositionFor=function(a){var b={source:d.getArg(a,"source"),originalLine:d.getArg(a,"line"),originalColumn:d.getArg(a,"column")};null!=this.sourceRoot&&(b.source=d.relative(this.sourceRoot,b.source));var c=this._findMapping(b,this._originalMappings,"originalLine","originalColumn",d.compareByOriginalPositions);if(c>=0){var e=this._originalMappings[c];return{line:d.getArg(e,"generatedLine",null),column:d.getArg(e,"generatedColumn",null),lastColumn:d.getArg(e,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},c.prototype.allGeneratedPositionsFor=function(a){var b={source:d.getArg(a,"source"),originalLine:d.getArg(a,"line"),originalColumn:1/0};null!=this.sourceRoot&&(b.source=d.relative(this.sourceRoot,b.source));var c=[],e=this._findMapping(b,this._originalMappings,"originalLine","originalColumn",d.compareByOriginalPositions);if(e>=0)for(var f=this._originalMappings[e];f&&f.originalLine===b.originalLine;)c.push({line:d.getArg(f,"generatedLine",null),column:d.getArg(f,"generatedColumn",null),lastColumn:d.getArg(f,"lastGeneratedColumn",null)}),f=this._originalMappings[--e];return c.reverse()},c.GENERATED_ORDER=1,c.ORIGINAL_ORDER=2,c.prototype.eachMapping=function(a,b,e){var f,g=b||null,h=e||c.GENERATED_ORDER;switch(h){case c.GENERATED_ORDER:f=this._generatedMappings;break;case c.ORIGINAL_ORDER:f=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var i=this.sourceRoot;f.map(function(a){var b=a.source;return null!=b&&null!=i&&(b=d.join(i,b)),{source:b,generatedLine:a.generatedLine,generatedColumn:a.generatedColumn,originalLine:a.originalLine,originalColumn:a.originalColumn,name:a.name}}).forEach(a,g)},b.SourceMapConsumer=c})},{"./array-set":70,"./base64-vlq":71,"./binary-search":73,"./util":77,amdefine:78}],75:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a){a||(a={}),this._file=e.getArg(a,"file",null),this._sourceRoot=e.getArg(a,"sourceRoot",null),this._sources=new f,this._names=new f,this._mappings=[],this._sourcesContents=null}var d=a("./base64-vlq"),e=a("./util"),f=a("./array-set").ArraySet;c.prototype._version=3,c.fromSourceMap=function(a){var b=a.sourceRoot,d=new c({file:a.file,sourceRoot:b});return a.eachMapping(function(a){var c={generated:{line:a.generatedLine,column:a.generatedColumn}};null!=a.source&&(c.source=a.source,null!=b&&(c.source=e.relative(b,c.source)),c.original={line:a.originalLine,column:a.originalColumn},null!=a.name&&(c.name=a.name)),d.addMapping(c)}),a.sources.forEach(function(b){var c=a.sourceContentFor(b);null!=c&&d.setSourceContent(b,c)}),d},c.prototype.addMapping=function(a){var b=e.getArg(a,"generated"),c=e.getArg(a,"original",null),d=e.getArg(a,"source",null),f=e.getArg(a,"name",null);this._validateMapping(b,c,d,f),null==d||this._sources.has(d)||this._sources.add(d),null==f||this._names.has(f)||this._names.add(f),this._mappings.push({generatedLine:b.line,generatedColumn:b.column,originalLine:null!=c&&c.line,originalColumn:null!=c&&c.column,source:d,name:f})},c.prototype.setSourceContent=function(a,b){var c=a;null!=this._sourceRoot&&(c=e.relative(this._sourceRoot,c)),null!=b?(this._sourcesContents||(this._sourcesContents={}),this._sourcesContents[e.toSetString(c)]=b):this._sourcesContents&&(delete this._sourcesContents[e.toSetString(c)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},c.prototype.applySourceMap=function(a,b,c){var d=b;if(null==b){if(null==a.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');d=a.file}var g=this._sourceRoot;null!=g&&(d=e.relative(g,d));var h=new f,i=new f;this._mappings.forEach(function(b){if(b.source===d&&null!=b.originalLine){var f=a.originalPositionFor({line:b.originalLine,column:b.originalColumn});null!=f.source&&(b.source=f.source,null!=c&&(b.source=e.join(c,b.source)),null!=g&&(b.source=e.relative(g,b.source)),b.originalLine=f.line,b.originalColumn=f.column,null!=f.name&&(b.name=f.name))}var j=b.source;null==j||h.has(j)||h.add(j);var k=b.name;null==k||i.has(k)||i.add(k)},this),this._sources=h,this._names=i,a.sources.forEach(function(b){var d=a.sourceContentFor(b);null!=d&&(null!=c&&(b=e.join(c,b)),null!=g&&(b=e.relative(g,b)),this.setSourceContent(b,d))},this)},c.prototype._validateMapping=function(a,b,c,d){if(!(a&&"line"in a&&"column"in a&&a.line>0&&a.column>=0&&!b&&!c&&!d||a&&"line"in a&&"column"in a&&b&&"line"in b&&"column"in b&&a.line>0&&a.column>=0&&b.line>0&&b.column>=0&&c))throw new Error("Invalid mapping: "+JSON.stringify({generated:a,source:c,original:b,name:d}))},c.prototype._serializeMappings=function(){var a,b=0,c=1,f=0,g=0,h=0,i=0,j="";this._mappings.sort(e.compareByGeneratedPositions);for(var k=0,l=this._mappings.length;l>k;k++){if(a=this._mappings[k],a.generatedLine!==c)for(b=0;a.generatedLine!==c;)j+=";",c++;else if(k>0){if(!e.compareByGeneratedPositions(a,this._mappings[k-1]))continue;j+=","}j+=d.encode(a.generatedColumn-b),b=a.generatedColumn,null!=a.source&&(j+=d.encode(this._sources.indexOf(a.source)-i),i=this._sources.indexOf(a.source),j+=d.encode(a.originalLine-1-g),g=a.originalLine-1,j+=d.encode(a.originalColumn-f),f=a.originalColumn,null!=a.name&&(j+=d.encode(this._names.indexOf(a.name)-h),h=this._names.indexOf(a.name)))}return j},c.prototype._generateSourcesContent=function(a,b){return a.map(function(a){if(!this._sourcesContents)return null;null!=b&&(a=e.relative(b,a));var c=e.toSetString(a);return Object.prototype.hasOwnProperty.call(this._sourcesContents,c)?this._sourcesContents[c]:null},this)},c.prototype.toJSON=function(){var a={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(a.file=this._file),null!=this._sourceRoot&&(a.sourceRoot=this._sourceRoot),this._sourcesContents&&(a.sourcesContent=this._generateSourcesContent(a.sources,a.sourceRoot)),a},c.prototype.toString=function(){return JSON.stringify(this)},b.SourceMapGenerator=c})},{"./array-set":70,"./base64-vlq":71,"./util":77,amdefine:78}],76:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a,b,c,d,e){this.children=[],this.sourceContents={},this.line=null==a?null:a,this.column=null==b?null:b,this.source=null==c?null:c,this.name=null==e?null:e,this[h]=!0,null!=d&&this.add(d)}var d=a("./source-map-generator").SourceMapGenerator,e=a("./util"),f=/(\r?\n)/,g=/\r\n|[\s\S]/g,h="$$$isSourceNode$$$";c.fromStringWithSourceMap=function(a,b,d){function g(a,b){if(null===a||void 0===a.source)h.add(b);else{var f=d?e.join(d,a.source):a.source;h.add(new c(a.originalLine,a.originalColumn,f,b,a.name))}}var h=new c,i=a.split(f),j=function(){var a=i.shift(),b=i.shift()||"";return a+b},k=1,l=0,m=null;return b.eachMapping(function(a){if(null!==m){if(!(k<a.generatedLine)){var b=i[0],c=b.substr(0,a.generatedColumn-l);return i[0]=b.substr(a.generatedColumn-l),l=a.generatedColumn,g(m,c),void(m=a)}var c="";g(m,j()),k++,l=0}for(;k<a.generatedLine;)h.add(j()),k++;if(l<a.generatedColumn){var b=i[0];h.add(b.substr(0,a.generatedColumn)),i[0]=b.substr(a.generatedColumn),l=a.generatedColumn}m=a},this),i.length>0&&(m&&g(m,j()),h.add(i.join(""))),b.sources.forEach(function(a){var c=b.sourceContentFor(a);null!=c&&(null!=d&&(a=e.join(d,a)),h.setSourceContent(a,c))}),h},c.prototype.add=function(a){if(Array.isArray(a))a.forEach(function(a){this.add(a)},this);else{if(!a[h]&&"string"!=typeof a)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+a);a&&this.children.push(a)}return this},c.prototype.prepend=function(a){if(Array.isArray(a))for(var b=a.length-1;b>=0;b--)this.prepend(a[b]);else{if(!a[h]&&"string"!=typeof a)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+a);this.children.unshift(a)}return this},c.prototype.walk=function(a){for(var b,c=0,d=this.children.length;d>c;c++)b=this.children[c],b[h]?b.walk(a):""!==b&&a(b,{source:this.source,line:this.line,column:this.column,name:this.name})},c.prototype.join=function(a){var b,c,d=this.children.length;if(d>0){for(b=[],c=0;d-1>c;c++)b.push(this.children[c]),b.push(a);b.push(this.children[c]),this.children=b}return this},c.prototype.replaceRight=function(a,b){var c=this.children[this.children.length-1];return c[h]?c.replaceRight(a,b):"string"==typeof c?this.children[this.children.length-1]=c.replace(a,b):this.children.push("".replace(a,b)),this},c.prototype.setSourceContent=function(a,b){this.sourceContents[e.toSetString(a)]=b},c.prototype.walkSourceContents=function(a){for(var b=0,c=this.children.length;c>b;b++)this.children[b][h]&&this.children[b].walkSourceContents(a);for(var d=Object.keys(this.sourceContents),b=0,c=d.length;c>b;b++)a(e.fromSetString(d[b]),this.sourceContents[d[b]])},c.prototype.toString=function(){var a="";return this.walk(function(b){a+=b}),a},c.prototype.toStringWithSourceMap=function(a){var b={code:"",line:1,column:0},c=new d(a),e=!1,h=null,i=null,j=null,k=null;return this.walk(function(a,d){b.code+=a,null!==d.source&&null!==d.line&&null!==d.column?((h!==d.source||i!==d.line||j!==d.column||k!==d.name)&&c.addMapping({source:d.source,original:{line:d.line,column:d.column},generated:{line:b.line,column:b.column},name:d.name}),h=d.source,i=d.line,j=d.column,k=d.name,e=!0):e&&(c.addMapping({generated:{line:b.line,column:b.column}}),h=null,e=!1),a.match(g).forEach(function(a,g,i){f.test(a)?(b.line++,b.column=0,g+1===i.length?(h=null,e=!1):e&&c.addMapping({source:d.source,original:{line:d.line,column:d.column},generated:{line:b.line,column:b.column},name:d.name})):b.column+=a.length})}),this.walkSourceContents(function(a,b){c.setSourceContent(a,b)}),{code:b.code,map:c}},b.SourceNode=c})},{"./source-map-generator":75,"./util":77,amdefine:78}],77:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a,b,c){if(b in a)return a[b];if(3===arguments.length)return c;throw new Error('"'+b+'" is a required argument.')}function d(a){var b=a.match(n);return b?{scheme:b[1],auth:b[2],host:b[3],port:b[4],path:b[5]}:null}function e(a){var b="";return a.scheme&&(b+=a.scheme+":"),b+="//",a.auth&&(b+=a.auth+"@"),a.host&&(b+=a.host),a.port&&(b+=":"+a.port),a.path&&(b+=a.path),b}function f(a){var b=a,c=d(a);if(c){if(!c.path)return a;b=c.path}for(var f,g="/"===b.charAt(0),h=b.split(/\/+/),i=0,j=h.length-1;j>=0;j--)f=h[j],"."===f?h.splice(j,1):".."===f?i++:i>0&&(""===f?(h.splice(j+1,i),i=0):(h.splice(j,2),i--));return b=h.join("/"),""===b&&(b=g?"/":"."),c?(c.path=b,e(c)):b}function g(a,b){""===a&&(a="."),""===b&&(b=".");var c=d(b),g=d(a);if(g&&(a=g.path||"/"),c&&!c.scheme)return g&&(c.scheme=g.scheme),e(c);if(c||b.match(o))return b;if(g&&!g.host&&!g.path)return g.host=b,e(g);var h="/"===b.charAt(0)?b:f(a.replace(/\/+$/,"")+"/"+b);return g?(g.path=h,e(g)):h}function h(a,b){""===a&&(a="."),a=a.replace(/\/$/,"");var c=d(a);return"/"==b.charAt(0)&&c&&"/"==c.path?b.slice(1):0===b.indexOf(a+"/")?b.substr(a.length+1):b}function i(a){return"$"+a}function j(a){return a.substr(1)}function k(a,b){var c=a||"",d=b||"";return(c>d)-(d>c)}function l(a,b,c){var d;return(d=k(a.source,b.source))?d:(d=a.originalLine-b.originalLine)?d:(d=a.originalColumn-b.originalColumn,d||c?d:(d=k(a.name,b.name))?d:(d=a.generatedLine-b.generatedLine,d?d:a.generatedColumn-b.generatedColumn))}function m(a,b,c){var d;return(d=a.generatedLine-b.generatedLine)?d:(d=a.generatedColumn-b.generatedColumn,d||c?d:(d=k(a.source,b.source))?d:(d=a.originalLine-b.originalLine)?d:(d=a.originalColumn-b.originalColumn,d?d:k(a.name,b.name)))}b.getArg=c;var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,o=/^data:.+\,.+$/;b.urlParse=d,b.urlGenerate=e,b.normalize=f,b.join=g,b.relative=h,b.toSetString=i,b.fromSetString=j,b.compareByOriginalPositions=l,b.compareByGeneratedPositions=m})},{amdefine:78}],78:[function(a,b){(function(c,d){"use strict";function e(b,e){function f(a){var b,c;for(b=0;a[b];b+=1)if(c=a[b],"."===c)a.splice(b,1),b-=1;else if(".."===c){if(1===b&&(".."===a[2]||".."===a[0]))break;b>0&&(a.splice(b-1,2),b-=2)}}function g(a,b){var c;return a&&"."===a.charAt(0)&&b&&(c=b.split("/"),c=c.slice(0,c.length-1),c=c.concat(a.split("/")),f(c),a=c.join("/")),a}function h(a){return function(b){return g(b,a)}}function i(a){function b(b){o[a]=b}return b.fromText=function(){throw new Error("amdefine does not implement load.fromText")},b}function j(a,c,f){var g,h,i,j;if(a)h=o[a]={},i={id:a,uri:d,exports:h},g=l(e,h,i,a);else{if(p)throw new Error("amdefine with no module ID cannot be called more than once per file.");p=!0,h=b.exports,i=b,g=l(e,h,i,b.id)}c&&(c=c.map(function(a){return g(a)})),j="function"==typeof f?f.apply(i.exports,c):f,void 0!==j&&(i.exports=j,a&&(o[a]=i.exports))}function k(a,b,c){Array.isArray(a)?(c=b,b=a,a=void 0):"string"!=typeof a&&(c=a,a=b=void 0),b&&!Array.isArray(b)&&(c=b,b=void 0),b||(b=["require","exports","module"]),a?n[a]=[a,b,c]:j(a,b,c)}var l,m,n={},o={},p=!1,q=a("path");return l=function(a,b,d,e){function f(f,g){return"string"==typeof f?m(a,b,d,f,e):(f=f.map(function(c){return m(a,b,d,c,e)}),void c.nextTick(function(){g.apply(null,f)}))}return f.toUrl=function(a){return 0===a.indexOf(".")?g(a,q.dirname(d.filename)):a},f},e=e||function(){return b.require.apply(b,arguments)},m=function(a,b,c,d,e){var f,k,p=d.indexOf("!"),q=d;if(-1===p){if(d=g(d,e),"require"===d)return l(a,b,c,e);if("exports"===d)return b;if("module"===d)return c;if(o.hasOwnProperty(d))return o[d];if(n[d])return j.apply(null,n[d]),o[d];if(a)return a(q);throw new Error("No module with ID: "+d)}return f=d.substring(0,p),d=d.substring(p+1,d.length),k=m(a,b,c,f,e),d=k.normalize?k.normalize(d,h(e)):g(d,e),o[d]?o[d]:(k.load(d,l(a,b,c,e),i(d),{}),o[d])},k.require=function(a){return o[a]?o[a]:n[a]?(j.apply(null,n[a]),o[a]):void 0},k.amd={},k}b.exports=e}).call(this,a("_process"),"/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/amdefine.js")},{_process:90,path:89}],79:[function(a,b){b.exports={name:"escodegen",description:"ECMAScript code generator",homepage:"http://github.com/estools/escodegen",main:"escodegen.js",bin:{esgenerate:"./bin/esgenerate.js",escodegen:"./bin/escodegen.js"},files:["LICENSE.BSD","LICENSE.source-map","README.md","bin","escodegen.js","gulpfile.js","package.json"],version:"1.4.3",engines:{node:">=0.10.0"},maintainers:[{name:"constellation",email:"utatane.tea@gmail.com"}],repository:{type:"git",url:"http://github.com/estools/escodegen.git"},dependencies:{esprima:"^1.2.2",estraverse:"^1.9.0",esutils:"^1.1.6",optionator:"^0.4.0","source-map":"~0.1.40"},optionalDependencies:{"source-map":"~0.1.40"},devDependencies:{"esprima-moz":"*",semver:"^4.1.0",bluebird:"^2.3.11",chai:"^1.10.0","gulp-mocha":"^2.0.0","gulp-eslint":"^0.2.0",gulp:"^3.8.10","bower-registry-client":"^0.2.1","commonjs-everywhere":"^0.9.7"},licenses:[{type:"BSD",url:"http://github.com/estools/escodegen/raw/master/LICENSE.BSD"}],scripts:{test:"gulp travis","unit-test":"gulp test",lint:"gulp lint",release:"node tools/release.js","build-min":"cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",build:"cjsify -a path: tools/entry-point.js > escodegen.browser.js"},gitHead:"ee238d803cb10af46c7ce5a1aef9b57cf006c317",bugs:{url:"https://github.com/estools/escodegen/issues"},_id:"escodegen@1.4.3",_shasum:"2b2422bf18c95e2542effaabc0c998712d490291",_from:"escodegen@1.4.3",_npmVersion:"2.0.0-alpha-5",_npmUser:{name:"constellation",email:"utatane.tea@gmail.com"},dist:{shasum:"2b2422bf18c95e2542effaabc0c998712d490291",tarball:"http://registry.npmjs.org/escodegen/-/escodegen-1.4.3.tgz"},directories:{},_resolved:"https://registry.npmjs.org/escodegen/-/escodegen-1.4.3.tgz",readme:"ERROR: No README data found!"}
-},{}],80:[function(a,b,c){!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["exports"],b):b("undefined"!=typeof c?c:a.esprima={})}(this,function(a){"use strict";function b(a,b){if(!a)throw new Error("ASSERT: "+b)}function c(a){return a>=48&&57>=a}function d(a){return"0123456789abcdefABCDEF".indexOf(a)>=0}function e(a){return"01234567".indexOf(a)>=0}function f(a){return 32===a||9===a||11===a||12===a||160===a||a>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(a)>=0}function g(a){return 10===a||13===a||8232===a||8233===a}function h(a){return 36===a||95===a||a>=65&&90>=a||a>=97&&122>=a||92===a||a>=128&&ec.NonAsciiIdentifierStart.test(String.fromCharCode(a))}function i(a){return 36===a||95===a||a>=65&&90>=a||a>=97&&122>=a||a>=48&&57>=a||92===a||a>=128&&ec.NonAsciiIdentifierPart.test(String.fromCharCode(a))}function j(a){switch(a){case"class":case"enum":case"export":case"extends":case"import":case"super":return!0;default:return!1}}function k(a){switch(a){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}}function l(a){return"eval"===a||"arguments"===a}function m(a){if(hc&&k(a))return!0;switch(a.length){case 2:return"if"===a||"in"===a||"do"===a;case 3:return"var"===a||"for"===a||"new"===a||"try"===a||"let"===a;case 4:return"this"===a||"else"===a||"case"===a||"void"===a||"with"===a||"enum"===a;case 5:return"while"===a||"break"===a||"catch"===a||"throw"===a||"const"===a||"yield"===a||"class"===a||"super"===a;case 6:return"return"===a||"typeof"===a||"delete"===a||"switch"===a||"export"===a||"import"===a;case 7:return"default"===a||"finally"===a||"extends"===a;case 8:return"function"===a||"continue"===a||"debugger"===a;case 10:return"instanceof"===a;default:return!1}}function n(a,c,d,e,f){var g;b("number"==typeof d,"Comment must have valid position"),oc.lastCommentStart>=d||(oc.lastCommentStart=d,g={type:a,value:c},pc.range&&(g.range=[d,e]),pc.loc&&(g.loc=f),pc.comments.push(g),pc.attachComment&&(pc.leadingComments.push(g),pc.trailingComments.push(g)))}function o(a){var b,c,d,e;for(b=ic-a,c={start:{line:jc,column:ic-kc-a}};lc>ic;)if(d=gc.charCodeAt(ic),++ic,g(d))return pc.comments&&(e=gc.slice(b+a,ic-1),c.end={line:jc,column:ic-kc-1},n("Line",e,b,ic-1,c)),13===d&&10===gc.charCodeAt(ic)&&++ic,++jc,void(kc=ic);pc.comments&&(e=gc.slice(b+a,ic),c.end={line:jc,column:ic-kc},n("Line",e,b,ic,c))}function p(){var a,b,c,d;for(pc.comments&&(a=ic-2,b={start:{line:jc,column:ic-kc-2}});lc>ic;)if(c=gc.charCodeAt(ic),g(c))13===c&&10===gc.charCodeAt(ic+1)&&++ic,++jc,++ic,kc=ic,ic>=lc&&O({},dc.UnexpectedToken,"ILLEGAL");else if(42===c){if(47===gc.charCodeAt(ic+1))return++ic,++ic,void(pc.comments&&(d=gc.slice(a+2,ic-2),b.end={line:jc,column:ic-kc},n("Block",d,a,ic,b)));++ic}else++ic;O({},dc.UnexpectedToken,"ILLEGAL")}function q(){var a,b;for(b=0===ic;lc>ic;)if(a=gc.charCodeAt(ic),f(a))++ic;else if(g(a))++ic,13===a&&10===gc.charCodeAt(ic)&&++ic,++jc,kc=ic,b=!0;else if(47===a)if(a=gc.charCodeAt(ic+1),47===a)++ic,++ic,o(2),b=!0;else{if(42!==a)break;++ic,++ic,p()}else if(b&&45===a){if(45!==gc.charCodeAt(ic+1)||62!==gc.charCodeAt(ic+2))break;ic+=3,o(3)}else{if(60!==a)break;if("!--"!==gc.slice(ic+1,ic+4))break;++ic,++ic,++ic,++ic,o(4)}}function r(a){var b,c,e,f=0;for(c="u"===a?4:2,b=0;c>b;++b){if(!(lc>ic&&d(gc[ic])))return"";e=gc[ic++],f=16*f+"0123456789abcdef".indexOf(e.toLowerCase())}return String.fromCharCode(f)}function s(){var a,b;for(a=gc.charCodeAt(ic++),b=String.fromCharCode(a),92===a&&(117!==gc.charCodeAt(ic)&&O({},dc.UnexpectedToken,"ILLEGAL"),++ic,a=r("u"),a&&"\\"!==a&&h(a.charCodeAt(0))||O({},dc.UnexpectedToken,"ILLEGAL"),b=a);lc>ic&&(a=gc.charCodeAt(ic),i(a));)++ic,b+=String.fromCharCode(a),92===a&&(b=b.substr(0,b.length-1),117!==gc.charCodeAt(ic)&&O({},dc.UnexpectedToken,"ILLEGAL"),++ic,a=r("u"),a&&"\\"!==a&&i(a.charCodeAt(0))||O({},dc.UnexpectedToken,"ILLEGAL"),b+=a);return b}function t(){var a,b;for(a=ic++;lc>ic;){if(b=gc.charCodeAt(ic),92===b)return ic=a,s();if(!i(b))break;++ic}return gc.slice(a,ic)}function u(){var a,b,c;return a=ic,b=92===gc.charCodeAt(ic)?s():t(),c=1===b.length?$b.Identifier:m(b)?$b.Keyword:"null"===b?$b.NullLiteral:"true"===b||"false"===b?$b.BooleanLiteral:$b.Identifier,{type:c,value:b,lineNumber:jc,lineStart:kc,start:a,end:ic}}function v(){var a,b,c,d,e=ic,f=gc.charCodeAt(ic),g=gc[ic];switch(f){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++ic,pc.tokenize&&(40===f?pc.openParenToken=pc.tokens.length:123===f&&(pc.openCurlyToken=pc.tokens.length)),{type:$b.Punctuator,value:String.fromCharCode(f),lineNumber:jc,lineStart:kc,start:e,end:ic};default:if(a=gc.charCodeAt(ic+1),61===a)switch(f){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return ic+=2,{type:$b.Punctuator,value:String.fromCharCode(f)+String.fromCharCode(a),lineNumber:jc,lineStart:kc,start:e,end:ic};case 33:case 61:return ic+=2,61===gc.charCodeAt(ic)&&++ic,{type:$b.Punctuator,value:gc.slice(e,ic),lineNumber:jc,lineStart:kc,start:e,end:ic}}}return d=gc.substr(ic,4),">>>="===d?(ic+=4,{type:$b.Punctuator,value:d,lineNumber:jc,lineStart:kc,start:e,end:ic}):(c=d.substr(0,3),">>>"===c||"<<="===c||">>="===c?(ic+=3,{type:$b.Punctuator,value:c,lineNumber:jc,lineStart:kc,start:e,end:ic}):(b=c.substr(0,2),g===b[1]&&"+-<>&|".indexOf(g)>=0||"=>"===b?(ic+=2,{type:$b.Punctuator,value:b,lineNumber:jc,lineStart:kc,start:e,end:ic}):"<>=!+-*%&|^/".indexOf(g)>=0?(++ic,{type:$b.Punctuator,value:g,lineNumber:jc,lineStart:kc,start:e,end:ic}):void O({},dc.UnexpectedToken,"ILLEGAL")))}function w(a){for(var b="";lc>ic&&d(gc[ic]);)b+=gc[ic++];return 0===b.length&&O({},dc.UnexpectedToken,"ILLEGAL"),h(gc.charCodeAt(ic))&&O({},dc.UnexpectedToken,"ILLEGAL"),{type:$b.NumericLiteral,value:parseInt("0x"+b,16),lineNumber:jc,lineStart:kc,start:a,end:ic}}function x(a){for(var b="0"+gc[ic++];lc>ic&&e(gc[ic]);)b+=gc[ic++];return(h(gc.charCodeAt(ic))||c(gc.charCodeAt(ic)))&&O({},dc.UnexpectedToken,"ILLEGAL"),{type:$b.NumericLiteral,value:parseInt(b,8),octal:!0,lineNumber:jc,lineStart:kc,start:a,end:ic}}function y(){var a,d,f;if(f=gc[ic],b(c(f.charCodeAt(0))||"."===f,"Numeric literal must start with a decimal digit or a decimal point"),d=ic,a="","."!==f){if(a=gc[ic++],f=gc[ic],"0"===a){if("x"===f||"X"===f)return++ic,w(d);if(e(f))return x(d);f&&c(f.charCodeAt(0))&&O({},dc.UnexpectedToken,"ILLEGAL")}for(;c(gc.charCodeAt(ic));)a+=gc[ic++];f=gc[ic]}if("."===f){for(a+=gc[ic++];c(gc.charCodeAt(ic));)a+=gc[ic++];f=gc[ic]}if("e"===f||"E"===f)if(a+=gc[ic++],f=gc[ic],("+"===f||"-"===f)&&(a+=gc[ic++]),c(gc.charCodeAt(ic)))for(;c(gc.charCodeAt(ic));)a+=gc[ic++];else O({},dc.UnexpectedToken,"ILLEGAL");return h(gc.charCodeAt(ic))&&O({},dc.UnexpectedToken,"ILLEGAL"),{type:$b.NumericLiteral,value:parseFloat(a),lineNumber:jc,lineStart:kc,start:d,end:ic}}function z(){var a,c,d,f,h,i,j,k,l="",m=!1;for(j=jc,k=kc,a=gc[ic],b("'"===a||'"'===a,"String literal must starts with a quote"),c=ic,++ic;lc>ic;){if(d=gc[ic++],d===a){a="";break}if("\\"===d)if(d=gc[ic++],d&&g(d.charCodeAt(0)))++jc,"\r"===d&&"\n"===gc[ic]&&++ic,kc=ic;else switch(d){case"u":case"x":i=ic,h=r(d),h?l+=h:(ic=i,l+=d);break;case"n":l+="\n";break;case"r":l+="\r";break;case"t":l+="	";break;case"b":l+="\b";break;case"f":l+="\f";break;case"v":l+="";break;default:e(d)?(f="01234567".indexOf(d),0!==f&&(m=!0),lc>ic&&e(gc[ic])&&(m=!0,f=8*f+"01234567".indexOf(gc[ic++]),"0123".indexOf(d)>=0&&lc>ic&&e(gc[ic])&&(f=8*f+"01234567".indexOf(gc[ic++]))),l+=String.fromCharCode(f)):l+=d}else{if(g(d.charCodeAt(0)))break;l+=d}}return""!==a&&O({},dc.UnexpectedToken,"ILLEGAL"),{type:$b.StringLiteral,value:l,octal:m,startLineNumber:j,startLineStart:k,lineNumber:jc,lineStart:kc,start:c,end:ic}}function A(a,b){var c;try{c=new RegExp(a,b)}catch(d){O({},dc.InvalidRegExp)}return c}function B(){var a,c,d,e,f;for(a=gc[ic],b("/"===a,"Regular expression literal must start with a slash"),c=gc[ic++],d=!1,e=!1;lc>ic;)if(a=gc[ic++],c+=a,"\\"===a)a=gc[ic++],g(a.charCodeAt(0))&&O({},dc.UnterminatedRegExp),c+=a;else if(g(a.charCodeAt(0)))O({},dc.UnterminatedRegExp);else if(d)"]"===a&&(d=!1);else{if("/"===a){e=!0;break}"["===a&&(d=!0)}return e||O({},dc.UnterminatedRegExp),f=c.substr(1,c.length-2),{value:f,literal:c}}function C(){var a,b,c,d;for(b="",c="";lc>ic&&(a=gc[ic],i(a.charCodeAt(0)));)if(++ic,"\\"===a&&lc>ic)if(a=gc[ic],"u"===a){if(++ic,d=ic,a=r("u"))for(c+=a,b+="\\u";ic>d;++d)b+=gc[d];else ic=d,c+="u",b+="\\u";P({},dc.UnexpectedToken,"ILLEGAL")}else b+="\\",P({},dc.UnexpectedToken,"ILLEGAL");else c+=a,b+=a;return{value:c,literal:b}}function D(){var a,b,c,d;return nc=null,q(),a=ic,b=B(),c=C(),d=A(b.value,c.value),pc.tokenize?{type:$b.RegularExpression,value:d,lineNumber:jc,lineStart:kc,start:a,end:ic}:{literal:b.literal+c.literal,value:d,start:a,end:ic}}function E(){var a,b,c,d;return q(),a=ic,b={start:{line:jc,column:ic-kc}},c=D(),b.end={line:jc,column:ic-kc},pc.tokenize||(pc.tokens.length>0&&(d=pc.tokens[pc.tokens.length-1],d.range[0]===a&&"Punctuator"===d.type&&("/"===d.value||"/="===d.value)&&pc.tokens.pop()),pc.tokens.push({type:"RegularExpression",value:c.literal,range:[a,ic],loc:b})),c}function F(a){return a.type===$b.Identifier||a.type===$b.Keyword||a.type===$b.BooleanLiteral||a.type===$b.NullLiteral}function G(){var a,b;if(a=pc.tokens[pc.tokens.length-1],!a)return E();if("Punctuator"===a.type){if("]"===a.value)return v();if(")"===a.value)return b=pc.tokens[pc.openParenToken-1],!b||"Keyword"!==b.type||"if"!==b.value&&"while"!==b.value&&"for"!==b.value&&"with"!==b.value?v():E();if("}"===a.value){if(pc.tokens[pc.openCurlyToken-3]&&"Keyword"===pc.tokens[pc.openCurlyToken-3].type){if(b=pc.tokens[pc.openCurlyToken-4],!b)return v()}else{if(!pc.tokens[pc.openCurlyToken-4]||"Keyword"!==pc.tokens[pc.openCurlyToken-4].type)return v();if(b=pc.tokens[pc.openCurlyToken-5],!b)return E()}return ac.indexOf(b.value)>=0?v():E()}return E()}return"Keyword"===a.type?E():v()}function H(){var a;return q(),ic>=lc?{type:$b.EOF,lineNumber:jc,lineStart:kc,start:ic,end:ic}:(a=gc.charCodeAt(ic),h(a)?u():40===a||41===a||59===a?v():39===a||34===a?z():46===a?c(gc.charCodeAt(ic+1))?y():v():c(a)?y():pc.tokenize&&47===a?G():v())}function I(){var a,b,c;return q(),a={start:{line:jc,column:ic-kc}},b=H(),a.end={line:jc,column:ic-kc},b.type!==$b.EOF&&(c=gc.slice(b.start,b.end),pc.tokens.push({type:_b[b.type],value:c,range:[b.start,b.end],loc:a})),b}function J(){var a;return a=nc,ic=a.end,jc=a.lineNumber,kc=a.lineStart,nc="undefined"!=typeof pc.tokens?I():H(),ic=a.end,jc=a.lineNumber,kc=a.lineStart,a}function K(){var a,b,c;a=ic,b=jc,c=kc,nc="undefined"!=typeof pc.tokens?I():H(),ic=a,jc=b,kc=c}function L(a,b){this.line=a,this.column=b}function M(a,b,c,d){this.start=new L(a,b),this.end=new L(c,d)}function N(){var a,b,c,d;return a=ic,b=jc,c=kc,q(),d=jc!==b,ic=a,jc=b,kc=c,d}function O(a,c){var d,e=Array.prototype.slice.call(arguments,2),f=c.replace(/%(\d)/g,function(a,c){return b(c<e.length,"Message reference must be in range"),e[c]});throw"number"==typeof a.lineNumber?(d=new Error("Line "+a.lineNumber+": "+f),d.index=a.start,d.lineNumber=a.lineNumber,d.column=a.start-kc+1):(d=new Error("Line "+jc+": "+f),d.index=ic,d.lineNumber=jc,d.column=ic-kc+1),d.description=f,d}function P(){try{O.apply(null,arguments)}catch(a){if(!pc.errors)throw a;pc.errors.push(a)}}function Q(a){if(a.type===$b.EOF&&O(a,dc.UnexpectedEOS),a.type===$b.NumericLiteral&&O(a,dc.UnexpectedNumber),a.type===$b.StringLiteral&&O(a,dc.UnexpectedString),a.type===$b.Identifier&&O(a,dc.UnexpectedIdentifier),a.type===$b.Keyword){if(j(a.value))O(a,dc.UnexpectedReserved);else if(hc&&k(a.value))return void P(a,dc.StrictReservedWord);O(a,dc.UnexpectedToken,a.value)}O(a,dc.UnexpectedToken,a.value)}function R(a){var b=J();(b.type!==$b.Punctuator||b.value!==a)&&Q(b)}function S(a){var b=J();(b.type!==$b.Keyword||b.value!==a)&&Q(b)}function T(a){return nc.type===$b.Punctuator&&nc.value===a}function U(a){return nc.type===$b.Keyword&&nc.value===a}function V(){var a;return nc.type!==$b.Punctuator?!1:(a=nc.value,"="===a||"*="===a||"/="===a||"%="===a||"+="===a||"-="===a||"<<="===a||">>="===a||">>>="===a||"&="===a||"^="===a||"|="===a)}function W(){var a;return 59===gc.charCodeAt(ic)||T(";")?void J():(a=jc,q(),void(jc===a&&(nc.type===$b.EOF||T("}")||Q(nc))))}function X(a){return a.type===bc.Identifier||a.type===bc.MemberExpression}function Y(){var a,b=[];for(a=nc,R("[");!T("]");)T(",")?(J(),b.push(null)):(b.push(pb()),T("]")||R(","));return J(),mc.markEnd(mc.createArrayExpression(b),a)}function Z(a,b){var c,d,e;return c=hc,e=nc,d=Qb(),b&&hc&&l(a[0].name)&&P(b,dc.StrictParamName),hc=c,mc.markEnd(mc.createFunctionExpression(null,a,[],d),e)}function $(){var a,b;return b=nc,a=J(),a.type===$b.StringLiteral||a.type===$b.NumericLiteral?(hc&&a.octal&&P(a,dc.StrictOctalLiteral),mc.markEnd(mc.createLiteral(a),b)):mc.markEnd(mc.createIdentifier(a.value),b)}function _(){var a,b,c,d,e,f;return a=nc,f=nc,a.type===$b.Identifier?(c=$(),"get"!==a.value||T(":")?"set"!==a.value||T(":")?(R(":"),d=pb(),mc.markEnd(mc.createProperty("init",c,d),f)):(b=$(),R("("),a=nc,a.type!==$b.Identifier?(R(")"),P(a,dc.UnexpectedToken,a.value),d=Z([])):(e=[tb()],R(")"),d=Z(e,a)),mc.markEnd(mc.createProperty("set",b,d),f)):(b=$(),R("("),R(")"),d=Z([]),mc.markEnd(mc.createProperty("get",b,d),f))):a.type!==$b.EOF&&a.type!==$b.Punctuator?(b=$(),R(":"),d=pb(),mc.markEnd(mc.createProperty("init",b,d),f)):void Q(a)}function ab(){var a,b,c,d,e,f=[],g={},h=String;for(e=nc,R("{");!T("}");)a=_(),b=a.key.type===bc.Identifier?a.key.name:h(a.key.value),d="init"===a.kind?cc.Data:"get"===a.kind?cc.Get:cc.Set,c="$"+b,Object.prototype.hasOwnProperty.call(g,c)?(g[c]===cc.Data?hc&&d===cc.Data?P({},dc.StrictDuplicateProperty):d!==cc.Data&&P({},dc.AccessorDataProperty):d===cc.Data?P({},dc.AccessorDataProperty):g[c]&d&&P({},dc.AccessorGetSet),g[c]|=d):g[c]=d,f.push(a),T("}")||R(",");return R("}"),mc.markEnd(mc.createObjectExpression(f),e)}function bb(){var a;return R("("),a=qb(),R(")"),a}function cb(){var a,b,c,d;if(T("("))return bb();if(T("["))return Y();if(T("{"))return ab();if(a=nc.type,d=nc,a===$b.Identifier)c=mc.createIdentifier(J().value);else if(a===$b.StringLiteral||a===$b.NumericLiteral)hc&&nc.octal&&P(nc,dc.StrictOctalLiteral),c=mc.createLiteral(J());else if(a===$b.Keyword){if(U("function"))return Tb();U("this")?(J(),c=mc.createThisExpression()):Q(J())}else a===$b.BooleanLiteral?(b=J(),b.value="true"===b.value,c=mc.createLiteral(b)):a===$b.NullLiteral?(b=J(),b.value=null,c=mc.createLiteral(b)):T("/")||T("/=")?(c=mc.createLiteral("undefined"!=typeof pc.tokens?E():D()),K()):Q(J());return mc.markEnd(c,d)}function db(){var a=[];if(R("("),!T(")"))for(;lc>ic&&(a.push(pb()),!T(")"));)R(",");return R(")"),a}function eb(){var a,b;return b=nc,a=J(),F(a)||Q(a),mc.markEnd(mc.createIdentifier(a.value),b)}function fb(){return R("."),eb()}function gb(){var a;return R("["),a=qb(),R("]"),a}function hb(){var a,b,c;return c=nc,S("new"),a=jb(),b=T("(")?db():[],mc.markEnd(mc.createNewExpression(a,b),c)}function ib(){var a,b,c,d,e;for(e=nc,a=oc.allowIn,oc.allowIn=!0,b=U("new")?hb():cb(),oc.allowIn=a;;){if(T("."))d=fb(),b=mc.createMemberExpression(".",b,d);else if(T("("))c=db(),b=mc.createCallExpression(b,c);else{if(!T("["))break;d=gb(),b=mc.createMemberExpression("[",b,d)}mc.markEnd(b,e)}return b}function jb(){var a,b,c,d;for(d=nc,a=oc.allowIn,b=U("new")?hb():cb(),oc.allowIn=a;T(".")||T("[");)T("[")?(c=gb(),b=mc.createMemberExpression("[",b,c)):(c=fb(),b=mc.createMemberExpression(".",b,c)),mc.markEnd(b,d);return b}function kb(){var a,b,c=nc;return a=ib(),nc.type===$b.Punctuator&&(!T("++")&&!T("--")||N()||(hc&&a.type===bc.Identifier&&l(a.name)&&P({},dc.StrictLHSPostfix),X(a)||P({},dc.InvalidLHSInAssignment),b=J(),a=mc.markEnd(mc.createPostfixExpression(b.value,a),c))),a}function lb(){var a,b,c;return nc.type!==$b.Punctuator&&nc.type!==$b.Keyword?b=kb():T("++")||T("--")?(c=nc,a=J(),b=lb(),hc&&b.type===bc.Identifier&&l(b.name)&&P({},dc.StrictLHSPrefix),X(b)||P({},dc.InvalidLHSInAssignment),b=mc.createUnaryExpression(a.value,b),b=mc.markEnd(b,c)):T("+")||T("-")||T("~")||T("!")?(c=nc,a=J(),b=lb(),b=mc.createUnaryExpression(a.value,b),b=mc.markEnd(b,c)):U("delete")||U("void")||U("typeof")?(c=nc,a=J(),b=lb(),b=mc.createUnaryExpression(a.value,b),b=mc.markEnd(b,c),hc&&"delete"===b.operator&&b.argument.type===bc.Identifier&&P({},dc.StrictDelete)):b=kb(),b}function mb(a,b){var c=0;if(a.type!==$b.Punctuator&&a.type!==$b.Keyword)return 0;switch(a.value){case"||":c=1;break;case"&&":c=2;break;case"|":c=3;break;case"^":c=4;break;case"&":c=5;break;case"==":case"!=":case"===":case"!==":c=6;break;case"<":case">":case"<=":case">=":case"instanceof":c=7;break;case"in":c=b?7:0;break;case"<<":case">>":case">>>":c=8;break;case"+":case"-":c=9;break;case"*":case"/":case"%":c=11}return c}function nb(){var a,b,c,d,e,f,g,h,i,j;if(a=nc,i=lb(),d=nc,e=mb(d,oc.allowIn),0===e)return i;for(d.prec=e,J(),b=[a,nc],g=lb(),f=[i,d,g];(e=mb(nc,oc.allowIn))>0;){for(;f.length>2&&e<=f[f.length-2].prec;)g=f.pop(),h=f.pop().value,i=f.pop(),c=mc.createBinaryExpression(h,i,g),b.pop(),a=b[b.length-1],mc.markEnd(c,a),f.push(c);d=J(),d.prec=e,f.push(d),b.push(nc),c=lb(),f.push(c)}for(j=f.length-1,c=f[j],b.pop();j>1;)c=mc.createBinaryExpression(f[j-1].value,f[j-2],c),j-=2,a=b.pop(),mc.markEnd(c,a);return c}function ob(){var a,b,c,d,e;return e=nc,a=nb(),T("?")&&(J(),b=oc.allowIn,oc.allowIn=!0,c=pb(),oc.allowIn=b,R(":"),d=pb(),a=mc.createConditionalExpression(a,c,d),mc.markEnd(a,e)),a}function pb(){var a,b,c,d,e;return a=nc,e=nc,d=b=ob(),V()&&(X(b)||P({},dc.InvalidLHSInAssignment),hc&&b.type===bc.Identifier&&l(b.name)&&P(a,dc.StrictLHSAssignment),a=J(),c=pb(),d=mc.markEnd(mc.createAssignmentExpression(a.value,b,c),e)),d}function qb(){var a,b=nc;if(a=pb(),T(",")){for(a=mc.createSequenceExpression([a]);lc>ic&&T(",");)J(),a.expressions.push(pb());mc.markEnd(a,b)}return a}function rb(){for(var a,b=[];lc>ic&&!T("}")&&(a=Ub(),"undefined"!=typeof a);)b.push(a);return b}function sb(){var a,b;return b=nc,R("{"),a=rb(),R("}"),mc.markEnd(mc.createBlockStatement(a),b)}function tb(){var a,b;return b=nc,a=J(),a.type!==$b.Identifier&&Q(a),mc.markEnd(mc.createIdentifier(a.value),b)}function ub(a){var b,c,d=null;return c=nc,b=tb(),hc&&l(b.name)&&P({},dc.StrictVarName),"const"===a?(R("="),d=pb()):T("=")&&(J(),d=pb()),mc.markEnd(mc.createVariableDeclarator(b,d),c)}function vb(a){var b=[];do{if(b.push(ub(a)),!T(","))break;J()}while(lc>ic);return b}function wb(){var a;return S("var"),a=vb(),W(),mc.createVariableDeclaration(a,"var")}function xb(a){var b,c;return c=nc,S(a),b=vb(a),W(),mc.markEnd(mc.createVariableDeclaration(b,a),c)}function yb(){return R(";"),mc.createEmptyStatement()}function zb(){var a=qb();return W(),mc.createExpressionStatement(a)}function Ab(){var a,b,c;return S("if"),R("("),a=qb(),R(")"),b=Pb(),U("else")?(J(),c=Pb()):c=null,mc.createIfStatement(a,b,c)}function Bb(){var a,b,c;return S("do"),c=oc.inIteration,oc.inIteration=!0,a=Pb(),oc.inIteration=c,S("while"),R("("),b=qb(),R(")"),T(";")&&J(),mc.createDoWhileStatement(a,b)}function Cb(){var a,b,c;return S("while"),R("("),a=qb(),R(")"),c=oc.inIteration,oc.inIteration=!0,b=Pb(),oc.inIteration=c,mc.createWhileStatement(a,b)}function Db(){var a,b,c;return c=nc,a=J(),b=vb(),mc.markEnd(mc.createVariableDeclaration(b,a.value),c)}function Eb(){var a,b,c,d,e,f,g;return a=b=c=null,S("for"),R("("),T(";")?J():(U("var")||U("let")?(oc.allowIn=!1,a=Db(),oc.allowIn=!0,1===a.declarations.length&&U("in")&&(J(),d=a,e=qb(),a=null)):(oc.allowIn=!1,a=qb(),oc.allowIn=!0,U("in")&&(X(a)||P({},dc.InvalidLHSInForIn),J(),d=a,e=qb(),a=null)),"undefined"==typeof d&&R(";")),"undefined"==typeof d&&(T(";")||(b=qb()),R(";"),T(")")||(c=qb())),R(")"),g=oc.inIteration,oc.inIteration=!0,f=Pb(),oc.inIteration=g,"undefined"==typeof d?mc.createForStatement(a,b,c,f):mc.createForInStatement(d,e,f)}function Fb(){var a,b=null;return S("continue"),59===gc.charCodeAt(ic)?(J(),oc.inIteration||O({},dc.IllegalContinue),mc.createContinueStatement(null)):N()?(oc.inIteration||O({},dc.IllegalContinue),mc.createContinueStatement(null)):(nc.type===$b.Identifier&&(b=tb(),a="$"+b.name,Object.prototype.hasOwnProperty.call(oc.labelSet,a)||O({},dc.UnknownLabel,b.name)),W(),null!==b||oc.inIteration||O({},dc.IllegalContinue),mc.createContinueStatement(b))}function Gb(){var a,b=null;return S("break"),59===gc.charCodeAt(ic)?(J(),oc.inIteration||oc.inSwitch||O({},dc.IllegalBreak),mc.createBreakStatement(null)):N()?(oc.inIteration||oc.inSwitch||O({},dc.IllegalBreak),mc.createBreakStatement(null)):(nc.type===$b.Identifier&&(b=tb(),a="$"+b.name,Object.prototype.hasOwnProperty.call(oc.labelSet,a)||O({},dc.UnknownLabel,b.name)),W(),null!==b||oc.inIteration||oc.inSwitch||O({},dc.IllegalBreak),mc.createBreakStatement(b))}function Hb(){var a=null;return S("return"),oc.inFunctionBody||P({},dc.IllegalReturn),32===gc.charCodeAt(ic)&&h(gc.charCodeAt(ic+1))?(a=qb(),W(),mc.createReturnStatement(a)):N()?mc.createReturnStatement(null):(T(";")||T("}")||nc.type===$b.EOF||(a=qb()),W(),mc.createReturnStatement(a))}function Ib(){var a,b;return hc&&(q(),P({},dc.StrictModeWith)),S("with"),R("("),a=qb(),R(")"),b=Pb(),mc.createWithStatement(a,b)}function Jb(){var a,b,c,d=[];for(c=nc,U("default")?(J(),a=null):(S("case"),a=qb()),R(":");lc>ic&&!(T("}")||U("default")||U("case"));)b=Pb(),d.push(b);return mc.markEnd(mc.createSwitchCase(a,d),c)}function Kb(){var a,b,c,d,e;if(S("switch"),R("("),a=qb(),R(")"),R("{"),b=[],T("}"))return J(),mc.createSwitchStatement(a,b);for(d=oc.inSwitch,oc.inSwitch=!0,e=!1;lc>ic&&!T("}");)c=Jb(),null===c.test&&(e&&O({},dc.MultipleDefaultsInSwitch),e=!0),b.push(c);return oc.inSwitch=d,R("}"),mc.createSwitchStatement(a,b)}function Lb(){var a;return S("throw"),N()&&O({},dc.NewlineAfterThrow),a=qb(),W(),mc.createThrowStatement(a)}function Mb(){var a,b,c;return c=nc,S("catch"),R("("),T(")")&&Q(nc),a=tb(),hc&&l(a.name)&&P({},dc.StrictCatchVariable),R(")"),b=sb(),mc.markEnd(mc.createCatchClause(a,b),c)}function Nb(){var a,b=[],c=null;return S("try"),a=sb(),U("catch")&&b.push(Mb()),U("finally")&&(J(),c=sb()),0!==b.length||c||O({},dc.NoCatchOrFinally),mc.createTryStatement(a,[],b,c)}function Ob(){return S("debugger"),W(),mc.createDebuggerStatement()}function Pb(){var a,b,c,d,e=nc.type;if(e===$b.EOF&&Q(nc),e===$b.Punctuator&&"{"===nc.value)return sb();if(d=nc,e===$b.Punctuator)switch(nc.value){case";":return mc.markEnd(yb(),d);case"(":return mc.markEnd(zb(),d)}if(e===$b.Keyword)switch(nc.value){case"break":return mc.markEnd(Gb(),d);case"continue":return mc.markEnd(Fb(),d);case"debugger":return mc.markEnd(Ob(),d);case"do":return mc.markEnd(Bb(),d);case"for":return mc.markEnd(Eb(),d);case"function":return mc.markEnd(Sb(),d);case"if":return mc.markEnd(Ab(),d);case"return":return mc.markEnd(Hb(),d);case"switch":return mc.markEnd(Kb(),d);case"throw":return mc.markEnd(Lb(),d);case"try":return mc.markEnd(Nb(),d);case"var":return mc.markEnd(wb(),d);case"while":return mc.markEnd(Cb(),d);case"with":return mc.markEnd(Ib(),d)}return a=qb(),a.type===bc.Identifier&&T(":")?(J(),c="$"+a.name,Object.prototype.hasOwnProperty.call(oc.labelSet,c)&&O({},dc.Redeclaration,"Label",a.name),oc.labelSet[c]=!0,b=Pb(),delete oc.labelSet[c],mc.markEnd(mc.createLabeledStatement(a,b),d)):(W(),mc.markEnd(mc.createExpressionStatement(a),d))}function Qb(){var a,b,c,d,e,f,g,h,i,j=[];for(i=nc,R("{");lc>ic&&nc.type===$b.StringLiteral&&(b=nc,a=Ub(),j.push(a),a.expression.type===bc.Literal);)c=gc.slice(b.start+1,b.end-1),"use strict"===c?(hc=!0,d&&P(d,dc.StrictOctalLiteral)):!d&&b.octal&&(d=b);for(e=oc.labelSet,f=oc.inIteration,g=oc.inSwitch,h=oc.inFunctionBody,oc.labelSet={},oc.inIteration=!1,oc.inSwitch=!1,oc.inFunctionBody=!0;lc>ic&&!T("}")&&(a=Ub(),"undefined"!=typeof a);)j.push(a);return R("}"),oc.labelSet=e,oc.inIteration=f,oc.inSwitch=g,oc.inFunctionBody=h,mc.markEnd(mc.createBlockStatement(j),i)}function Rb(a){var b,c,d,e,f,g,h=[];if(R("("),!T(")"))for(e={};lc>ic&&(c=nc,b=tb(),f="$"+c.value,hc?(l(c.value)&&(d=c,g=dc.StrictParamName),Object.prototype.hasOwnProperty.call(e,f)&&(d=c,g=dc.StrictParamDupe)):a||(l(c.value)?(a=c,g=dc.StrictParamName):k(c.value)?(a=c,g=dc.StrictReservedWord):Object.prototype.hasOwnProperty.call(e,f)&&(a=c,g=dc.StrictParamDupe)),h.push(b),e[f]=!0,!T(")"));)R(",");return R(")"),{params:h,stricted:d,firstRestricted:a,message:g}}function Sb(){var a,b,c,d,e,f,g,h,i,j=[];return i=nc,S("function"),c=nc,a=tb(),hc?l(c.value)&&P(c,dc.StrictFunctionName):l(c.value)?(f=c,g=dc.StrictFunctionName):k(c.value)&&(f=c,g=dc.StrictReservedWord),e=Rb(f),j=e.params,d=e.stricted,f=e.firstRestricted,e.message&&(g=e.message),h=hc,b=Qb(),hc&&f&&O(f,g),hc&&d&&P(d,g),hc=h,mc.markEnd(mc.createFunctionDeclaration(a,j,[],b),i)}function Tb(){var a,b,c,d,e,f,g,h,i=null,j=[];return h=nc,S("function"),T("(")||(a=nc,i=tb(),hc?l(a.value)&&P(a,dc.StrictFunctionName):l(a.value)?(c=a,d=dc.StrictFunctionName):k(a.value)&&(c=a,d=dc.StrictReservedWord)),e=Rb(c),j=e.params,b=e.stricted,c=e.firstRestricted,e.message&&(d=e.message),g=hc,f=Qb(),hc&&c&&O(c,d),hc&&b&&P(b,d),hc=g,mc.markEnd(mc.createFunctionExpression(i,j,[],f),h)}function Ub(){if(nc.type===$b.Keyword)switch(nc.value){case"const":case"let":return xb(nc.value);case"function":return Sb();default:return Pb()}return nc.type!==$b.EOF?Pb():void 0}function Vb(){for(var a,b,c,d,e=[];lc>ic&&(b=nc,b.type===$b.StringLiteral)&&(a=Ub(),e.push(a),a.expression.type===bc.Literal);)c=gc.slice(b.start+1,b.end-1),"use strict"===c?(hc=!0,d&&P(d,dc.StrictOctalLiteral)):!d&&b.octal&&(d=b);for(;lc>ic&&(a=Ub(),"undefined"!=typeof a);)e.push(a);return e}function Wb(){var a,b;return q(),K(),b=nc,hc=!1,a=Vb(),mc.markEnd(mc.createProgram(a),b)}function Xb(){var a,b,c,d=[];for(a=0;a<pc.tokens.length;++a)b=pc.tokens[a],c={type:b.type,value:b.value},pc.range&&(c.range=b.range),pc.loc&&(c.loc=b.loc),d.push(c);pc.tokens=d}function Yb(a,b){var c,d,e;c=String,"string"==typeof a||a instanceof String||(a=c(a)),mc=fc,gc=a,ic=0,jc=gc.length>0?1:0,kc=0,lc=gc.length,nc=null,oc={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1},pc={},b=b||{},b.tokens=!0,pc.tokens=[],pc.tokenize=!0,pc.openParenToken=-1,pc.openCurlyToken=-1,pc.range="boolean"==typeof b.range&&b.range,pc.loc="boolean"==typeof b.loc&&b.loc,"boolean"==typeof b.comment&&b.comment&&(pc.comments=[]),"boolean"==typeof b.tolerant&&b.tolerant&&(pc.errors=[]);try{if(K(),nc.type===$b.EOF)return pc.tokens;for(d=J();nc.type!==$b.EOF;)try{d=J()}catch(f){if(d=nc,pc.errors){pc.errors.push(f);break}throw f}Xb(),e=pc.tokens,"undefined"!=typeof pc.comments&&(e.comments=pc.comments),"undefined"!=typeof pc.errors&&(e.errors=pc.errors)}catch(g){throw g}finally{pc={}}return e}function Zb(a,b){var c,d;d=String,"string"==typeof a||a instanceof String||(a=d(a)),mc=fc,gc=a,ic=0,jc=gc.length>0?1:0,kc=0,lc=gc.length,nc=null,oc={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1},pc={},"undefined"!=typeof b&&(pc.range="boolean"==typeof b.range&&b.range,pc.loc="boolean"==typeof b.loc&&b.loc,pc.attachComment="boolean"==typeof b.attachComment&&b.attachComment,pc.loc&&null!==b.source&&void 0!==b.source&&(pc.source=d(b.source)),"boolean"==typeof b.tokens&&b.tokens&&(pc.tokens=[]),"boolean"==typeof b.comment&&b.comment&&(pc.comments=[]),"boolean"==typeof b.tolerant&&b.tolerant&&(pc.errors=[]),pc.attachComment&&(pc.range=!0,pc.comments=[],pc.bottomRightStack=[],pc.trailingComments=[],pc.leadingComments=[]));try{c=Wb(),"undefined"!=typeof pc.comments&&(c.comments=pc.comments),"undefined"!=typeof pc.tokens&&(Xb(),c.tokens=pc.tokens),"undefined"!=typeof pc.errors&&(c.errors=pc.errors)}catch(e){throw e}finally{pc={}}return c}var $b,_b,ac,bc,cc,dc,ec,fc,gc,hc,ic,jc,kc,lc,mc,nc,oc,pc;$b={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8,RegularExpression:9},_b={},_b[$b.BooleanLiteral]="Boolean",_b[$b.EOF]="<end>",_b[$b.Identifier]="Identifier",_b[$b.Keyword]="Keyword",_b[$b.NullLiteral]="Null",_b[$b.NumericLiteral]="Numeric",_b[$b.Punctuator]="Punctuator",_b[$b.StringLiteral]="String",_b[$b.RegularExpression]="RegularExpression",ac=["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="],bc={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement"},cc={Data:1,Get:2,Set:4},dc={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalReturn:"Illegal return statement",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictDuplicateProperty:"Duplicate data property in object literal not allowed in strict mode",AccessorDataProperty:"Object literal may not have data and accessor property with the same name",AccessorGetSet:"Object literal may not have multiple get/set accessors with the same name",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode"},ec={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},fc={name:"SyntaxTree",processComment:function(a){var b,c;
-if(!(a.type===bc.Program&&a.body.length>0)){for(pc.trailingComments.length>0?pc.trailingComments[0].range[0]>=a.range[1]?(c=pc.trailingComments,pc.trailingComments=[]):pc.trailingComments.length=0:pc.bottomRightStack.length>0&&pc.bottomRightStack[pc.bottomRightStack.length-1].trailingComments&&pc.bottomRightStack[pc.bottomRightStack.length-1].trailingComments[0].range[0]>=a.range[1]&&(c=pc.bottomRightStack[pc.bottomRightStack.length-1].trailingComments,delete pc.bottomRightStack[pc.bottomRightStack.length-1].trailingComments);pc.bottomRightStack.length>0&&pc.bottomRightStack[pc.bottomRightStack.length-1].range[0]>=a.range[0];)b=pc.bottomRightStack.pop();b?b.leadingComments&&b.leadingComments[b.leadingComments.length-1].range[1]<=a.range[0]&&(a.leadingComments=b.leadingComments,delete b.leadingComments):pc.leadingComments.length>0&&pc.leadingComments[pc.leadingComments.length-1].range[1]<=a.range[0]&&(a.leadingComments=pc.leadingComments,pc.leadingComments=[]),c&&(a.trailingComments=c),pc.bottomRightStack.push(a)}},markEnd:function(a,b){return pc.range&&(a.range=[b.start,ic]),pc.loc&&(a.loc=new M(void 0===b.startLineNumber?b.lineNumber:b.startLineNumber,b.start-(void 0===b.startLineStart?b.lineStart:b.startLineStart),jc,ic-kc),this.postProcess(a)),pc.attachComment&&this.processComment(a),a},postProcess:function(a){return pc.source&&(a.loc.source=pc.source),a},createArrayExpression:function(a){return{type:bc.ArrayExpression,elements:a}},createAssignmentExpression:function(a,b,c){return{type:bc.AssignmentExpression,operator:a,left:b,right:c}},createBinaryExpression:function(a,b,c){var d="||"===a||"&&"===a?bc.LogicalExpression:bc.BinaryExpression;return{type:d,operator:a,left:b,right:c}},createBlockStatement:function(a){return{type:bc.BlockStatement,body:a}},createBreakStatement:function(a){return{type:bc.BreakStatement,label:a}},createCallExpression:function(a,b){return{type:bc.CallExpression,callee:a,arguments:b}},createCatchClause:function(a,b){return{type:bc.CatchClause,param:a,body:b}},createConditionalExpression:function(a,b,c){return{type:bc.ConditionalExpression,test:a,consequent:b,alternate:c}},createContinueStatement:function(a){return{type:bc.ContinueStatement,label:a}},createDebuggerStatement:function(){return{type:bc.DebuggerStatement}},createDoWhileStatement:function(a,b){return{type:bc.DoWhileStatement,body:a,test:b}},createEmptyStatement:function(){return{type:bc.EmptyStatement}},createExpressionStatement:function(a){return{type:bc.ExpressionStatement,expression:a}},createForStatement:function(a,b,c,d){return{type:bc.ForStatement,init:a,test:b,update:c,body:d}},createForInStatement:function(a,b,c){return{type:bc.ForInStatement,left:a,right:b,body:c,each:!1}},createFunctionDeclaration:function(a,b,c,d){return{type:bc.FunctionDeclaration,id:a,params:b,defaults:c,body:d,rest:null,generator:!1,expression:!1}},createFunctionExpression:function(a,b,c,d){return{type:bc.FunctionExpression,id:a,params:b,defaults:c,body:d,rest:null,generator:!1,expression:!1}},createIdentifier:function(a){return{type:bc.Identifier,name:a}},createIfStatement:function(a,b,c){return{type:bc.IfStatement,test:a,consequent:b,alternate:c}},createLabeledStatement:function(a,b){return{type:bc.LabeledStatement,label:a,body:b}},createLiteral:function(a){return{type:bc.Literal,value:a.value,raw:gc.slice(a.start,a.end)}},createMemberExpression:function(a,b,c){return{type:bc.MemberExpression,computed:"["===a,object:b,property:c}},createNewExpression:function(a,b){return{type:bc.NewExpression,callee:a,arguments:b}},createObjectExpression:function(a){return{type:bc.ObjectExpression,properties:a}},createPostfixExpression:function(a,b){return{type:bc.UpdateExpression,operator:a,argument:b,prefix:!1}},createProgram:function(a){return{type:bc.Program,body:a}},createProperty:function(a,b,c){return{type:bc.Property,key:b,value:c,kind:a}},createReturnStatement:function(a){return{type:bc.ReturnStatement,argument:a}},createSequenceExpression:function(a){return{type:bc.SequenceExpression,expressions:a}},createSwitchCase:function(a,b){return{type:bc.SwitchCase,test:a,consequent:b}},createSwitchStatement:function(a,b){return{type:bc.SwitchStatement,discriminant:a,cases:b}},createThisExpression:function(){return{type:bc.ThisExpression}},createThrowStatement:function(a){return{type:bc.ThrowStatement,argument:a}},createTryStatement:function(a,b,c,d){return{type:bc.TryStatement,block:a,guardedHandlers:b,handlers:c,finalizer:d}},createUnaryExpression:function(a,b){return"++"===a||"--"===a?{type:bc.UpdateExpression,operator:a,argument:b,prefix:!0}:{type:bc.UnaryExpression,operator:a,argument:b,prefix:!0}},createVariableDeclaration:function(a,b){return{type:bc.VariableDeclaration,declarations:a,kind:b}},createVariableDeclarator:function(a,b){return{type:bc.VariableDeclarator,id:a,init:b}},createWhileStatement:function(a,b){return{type:bc.WhileStatement,test:a,body:b}},createWithStatement:function(a,b){return{type:bc.WithStatement,object:a,body:b}}},a.version="1.2.2",a.tokenize=Yb,a.parse=Zb,a.Syntax=function(){var a,b={};"function"==typeof Object.create&&(b=Object.create(null));for(a in bc)bc.hasOwnProperty(a)&&(b[a]=bc[a]);return"function"==typeof Object.freeze&&Object.freeze(b),b}()})},{}],81:[function(){},{}],82:[function(a,b,c){function d(a,b,c){if(!(this instanceof d))return new d(a,b,c);var e,f=typeof a;if("number"===f)e=a>0?a>>>0:0;else if("string"===f)"base64"===b&&(a=x(a)),e=d.byteLength(a,b);else{if("object"!==f||null===a)throw new TypeError("must start with number, buffer, array or string");"Buffer"===a.type&&J(a.data)&&(a=a.data),e=+a.length>0?Math.floor(+a.length):0}if(this.length>K)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+K.toString(16)+" bytes");var g;d.TYPED_ARRAY_SUPPORT?g=d._augment(new Uint8Array(e)):(g=this,g.length=e,g._isBuffer=!0);var h;if(d.TYPED_ARRAY_SUPPORT&&"number"==typeof a.byteLength)g._set(a);else if(z(a))if(d.isBuffer(a))for(h=0;e>h;h++)g[h]=a.readUInt8(h);else for(h=0;e>h;h++)g[h]=(a[h]%256+256)%256;else if("string"===f)g.write(a,0,b);else if("number"===f&&!d.TYPED_ARRAY_SUPPORT&&!c)for(h=0;e>h;h++)g[h]=0;return g}function e(a,b,c,d){c=Number(c)||0;var e=a.length-c;d?(d=Number(d),d>e&&(d=e)):d=e;var f=b.length;if(f%2!==0)throw new Error("Invalid hex string");d>f/2&&(d=f/2);for(var g=0;d>g;g++){var h=parseInt(b.substr(2*g,2),16);if(isNaN(h))throw new Error("Invalid hex string");a[c+g]=h}return g}function f(a,b,c,d){var e=F(B(b),a,c,d);return e}function g(a,b,c,d){var e=F(C(b),a,c,d);return e}function h(a,b,c,d){return g(a,b,c,d)}function i(a,b,c,d){var e=F(E(b),a,c,d);return e}function j(a,b,c,d){var e=F(D(b),a,c,d,2);return e}function k(a,b,c){return H.fromByteArray(0===b&&c===a.length?a:a.slice(b,c))}function l(a,b,c){var d="",e="";c=Math.min(a.length,c);for(var f=b;c>f;f++)a[f]<=127?(d+=G(e)+String.fromCharCode(a[f]),e=""):e+="%"+a[f].toString(16);return d+G(e)}function m(a,b,c){var d="";c=Math.min(a.length,c);for(var e=b;c>e;e++)d+=String.fromCharCode(a[e]);return d}function n(a,b,c){return m(a,b,c)}function o(a,b,c){var d=a.length;(!b||0>b)&&(b=0),(!c||0>c||c>d)&&(c=d);for(var e="",f=b;c>f;f++)e+=A(a[f]);return e}function p(a,b,c){for(var d=a.slice(b,c),e="",f=0;f<d.length;f+=2)e+=String.fromCharCode(d[f]+256*d[f+1]);return e}function q(a,b,c){if(a%1!==0||0>a)throw new RangeError("offset is not uint");if(a+b>c)throw new RangeError("Trying to access beyond buffer length")}function r(a,b,c,e,f,g){if(!d.isBuffer(a))throw new TypeError("buffer must be a Buffer instance");if(b>f||g>b)throw new TypeError("value is out of bounds");if(c+e>a.length)throw new TypeError("index out of range")}function s(a,b,c,d){0>b&&(b=65535+b+1);for(var e=0,f=Math.min(a.length-c,2);f>e;e++)a[c+e]=(b&255<<8*(d?e:1-e))>>>8*(d?e:1-e)}function t(a,b,c,d){0>b&&(b=4294967295+b+1);for(var e=0,f=Math.min(a.length-c,4);f>e;e++)a[c+e]=b>>>8*(d?e:3-e)&255}function u(a,b,c,d,e,f){if(b>e||f>b)throw new TypeError("value is out of bounds");if(c+d>a.length)throw new TypeError("index out of range")}function v(a,b,c,d,e){return e||u(a,b,c,4,3.4028234663852886e38,-3.4028234663852886e38),I.write(a,b,c,d,23,4),c+4}function w(a,b,c,d,e){return e||u(a,b,c,8,1.7976931348623157e308,-1.7976931348623157e308),I.write(a,b,c,d,52,8),c+8}function x(a){for(a=y(a).replace(M,"");a.length%4!==0;)a+="=";return a}function y(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function z(a){return J(a)||d.isBuffer(a)||a&&"object"==typeof a&&"number"==typeof a.length}function A(a){return 16>a?"0"+a.toString(16):a.toString(16)}function B(a){for(var b=[],c=0;c<a.length;c++){var d=a.charCodeAt(c);if(127>=d)b.push(d);else{var e=c;d>=55296&&57343>=d&&c++;for(var f=encodeURIComponent(a.slice(e,c+1)).substr(1).split("%"),g=0;g<f.length;g++)b.push(parseInt(f[g],16))}}return b}function C(a){for(var b=[],c=0;c<a.length;c++)b.push(255&a.charCodeAt(c));return b}function D(a){for(var b,c,d,e=[],f=0;f<a.length;f++)b=a.charCodeAt(f),c=b>>8,d=b%256,e.push(d),e.push(c);return e}function E(a){return H.toByteArray(a)}function F(a,b,c,d,e){e&&(d-=d%e);for(var f=0;d>f&&!(f+c>=b.length||f>=a.length);f++)b[f+c]=a[f];return f}function G(a){try{return decodeURIComponent(a)}catch(b){return String.fromCharCode(65533)}}var H=a("base64-js"),I=a("ieee754"),J=a("is-array");c.Buffer=d,c.SlowBuffer=d,c.INSPECT_MAX_BYTES=50,d.poolSize=8192;var K=1073741823;d.TYPED_ARRAY_SUPPORT=function(){try{var a=new ArrayBuffer(0),b=new Uint8Array(a);return b.foo=function(){return 42},42===b.foo()&&"function"==typeof b.subarray&&0===new Uint8Array(1).subarray(1,1).byteLength}catch(c){return!1}}(),d.isBuffer=function(a){return!(null==a||!a._isBuffer)},d.compare=function(a,b){if(!d.isBuffer(a)||!d.isBuffer(b))throw new TypeError("Arguments must be Buffers");for(var c=a.length,e=b.length,f=0,g=Math.min(c,e);g>f&&a[f]===b[f];f++);return f!==g&&(c=a[f],e=b[f]),e>c?-1:c>e?1:0},d.isEncoding=function(a){switch(String(a).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},d.concat=function(a,b){if(!J(a))throw new TypeError("Usage: Buffer.concat(list[, length])");if(0===a.length)return new d(0);if(1===a.length)return a[0];var c;if(void 0===b)for(b=0,c=0;c<a.length;c++)b+=a[c].length;var e=new d(b),f=0;for(c=0;c<a.length;c++){var g=a[c];g.copy(e,f),f+=g.length}return e},d.byteLength=function(a,b){var c;switch(a+="",b||"utf8"){case"ascii":case"binary":case"raw":c=a.length;break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":c=2*a.length;break;case"hex":c=a.length>>>1;break;case"utf8":case"utf-8":c=B(a).length;break;case"base64":c=E(a).length;break;default:c=a.length}return c},d.prototype.length=void 0,d.prototype.parent=void 0,d.prototype.toString=function(a,b,c){var d=!1;if(b>>>=0,c=void 0===c||1/0===c?this.length:c>>>0,a||(a="utf8"),0>b&&(b=0),c>this.length&&(c=this.length),b>=c)return"";for(;;)switch(a){case"hex":return o(this,b,c);case"utf8":case"utf-8":return l(this,b,c);case"ascii":return m(this,b,c);case"binary":return n(this,b,c);case"base64":return k(this,b,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return p(this,b,c);default:if(d)throw new TypeError("Unknown encoding: "+a);a=(a+"").toLowerCase(),d=!0}},d.prototype.equals=function(a){if(!d.isBuffer(a))throw new TypeError("Argument must be a Buffer");return 0===d.compare(this,a)},d.prototype.inspect=function(){var a="",b=c.INSPECT_MAX_BYTES;return this.length>0&&(a=this.toString("hex",0,b).match(/.{2}/g).join(" "),this.length>b&&(a+=" ... ")),"<Buffer "+a+">"},d.prototype.compare=function(a){if(!d.isBuffer(a))throw new TypeError("Argument must be a Buffer");return d.compare(this,a)},d.prototype.get=function(a){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(a)},d.prototype.set=function(a,b){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(a,b)},d.prototype.write=function(a,b,c,d){if(isFinite(b))isFinite(c)||(d=c,c=void 0);else{var k=d;d=b,b=c,c=k}b=Number(b)||0;var l=this.length-b;c?(c=Number(c),c>l&&(c=l)):c=l,d=String(d||"utf8").toLowerCase();var m;switch(d){case"hex":m=e(this,a,b,c);break;case"utf8":case"utf-8":m=f(this,a,b,c);break;case"ascii":m=g(this,a,b,c);break;case"binary":m=h(this,a,b,c);break;case"base64":m=i(this,a,b,c);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":m=j(this,a,b,c);break;default:throw new TypeError("Unknown encoding: "+d)}return m},d.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},d.prototype.slice=function(a,b){var c=this.length;if(a=~~a,b=void 0===b?c:~~b,0>a?(a+=c,0>a&&(a=0)):a>c&&(a=c),0>b?(b+=c,0>b&&(b=0)):b>c&&(b=c),a>b&&(b=a),d.TYPED_ARRAY_SUPPORT)return d._augment(this.subarray(a,b));for(var e=b-a,f=new d(e,void 0,!0),g=0;e>g;g++)f[g]=this[g+a];return f},d.prototype.readUInt8=function(a,b){return b||q(a,1,this.length),this[a]},d.prototype.readUInt16LE=function(a,b){return b||q(a,2,this.length),this[a]|this[a+1]<<8},d.prototype.readUInt16BE=function(a,b){return b||q(a,2,this.length),this[a]<<8|this[a+1]},d.prototype.readUInt32LE=function(a,b){return b||q(a,4,this.length),(this[a]|this[a+1]<<8|this[a+2]<<16)+16777216*this[a+3]},d.prototype.readUInt32BE=function(a,b){return b||q(a,4,this.length),16777216*this[a]+(this[a+1]<<16|this[a+2]<<8|this[a+3])},d.prototype.readInt8=function(a,b){return b||q(a,1,this.length),128&this[a]?-1*(255-this[a]+1):this[a]},d.prototype.readInt16LE=function(a,b){b||q(a,2,this.length);var c=this[a]|this[a+1]<<8;return 32768&c?4294901760|c:c},d.prototype.readInt16BE=function(a,b){b||q(a,2,this.length);var c=this[a+1]|this[a]<<8;return 32768&c?4294901760|c:c},d.prototype.readInt32LE=function(a,b){return b||q(a,4,this.length),this[a]|this[a+1]<<8|this[a+2]<<16|this[a+3]<<24},d.prototype.readInt32BE=function(a,b){return b||q(a,4,this.length),this[a]<<24|this[a+1]<<16|this[a+2]<<8|this[a+3]},d.prototype.readFloatLE=function(a,b){return b||q(a,4,this.length),I.read(this,a,!0,23,4)},d.prototype.readFloatBE=function(a,b){return b||q(a,4,this.length),I.read(this,a,!1,23,4)},d.prototype.readDoubleLE=function(a,b){return b||q(a,8,this.length),I.read(this,a,!0,52,8)},d.prototype.readDoubleBE=function(a,b){return b||q(a,8,this.length),I.read(this,a,!1,52,8)},d.prototype.writeUInt8=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,1,255,0),d.TYPED_ARRAY_SUPPORT||(a=Math.floor(a)),this[b]=a,b+1},d.prototype.writeUInt16LE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,2,65535,0),d.TYPED_ARRAY_SUPPORT?(this[b]=a,this[b+1]=a>>>8):s(this,a,b,!0),b+2},d.prototype.writeUInt16BE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,2,65535,0),d.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=a):s(this,a,b,!1),b+2},d.prototype.writeUInt32LE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,4,4294967295,0),d.TYPED_ARRAY_SUPPORT?(this[b+3]=a>>>24,this[b+2]=a>>>16,this[b+1]=a>>>8,this[b]=a):t(this,a,b,!0),b+4},d.prototype.writeUInt32BE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,4,4294967295,0),d.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=a):t(this,a,b,!1),b+4},d.prototype.writeInt8=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,1,127,-128),d.TYPED_ARRAY_SUPPORT||(a=Math.floor(a)),0>a&&(a=255+a+1),this[b]=a,b+1},d.prototype.writeInt16LE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,2,32767,-32768),d.TYPED_ARRAY_SUPPORT?(this[b]=a,this[b+1]=a>>>8):s(this,a,b,!0),b+2},d.prototype.writeInt16BE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,2,32767,-32768),d.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=a):s(this,a,b,!1),b+2},d.prototype.writeInt32LE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,4,2147483647,-2147483648),d.TYPED_ARRAY_SUPPORT?(this[b]=a,this[b+1]=a>>>8,this[b+2]=a>>>16,this[b+3]=a>>>24):t(this,a,b,!0),b+4},d.prototype.writeInt32BE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,4,2147483647,-2147483648),0>a&&(a=4294967295+a+1),d.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=a):t(this,a,b,!1),b+4},d.prototype.writeFloatLE=function(a,b,c){return v(this,a,b,!0,c)},d.prototype.writeFloatBE=function(a,b,c){return v(this,a,b,!1,c)},d.prototype.writeDoubleLE=function(a,b,c){return w(this,a,b,!0,c)},d.prototype.writeDoubleBE=function(a,b,c){return w(this,a,b,!1,c)},d.prototype.copy=function(a,b,c,e){var f=this;if(c||(c=0),e||0===e||(e=this.length),b||(b=0),e!==c&&0!==a.length&&0!==f.length){if(c>e)throw new TypeError("sourceEnd < sourceStart");if(0>b||b>=a.length)throw new TypeError("targetStart out of bounds");if(0>c||c>=f.length)throw new TypeError("sourceStart out of bounds");if(0>e||e>f.length)throw new TypeError("sourceEnd out of bounds");e>this.length&&(e=this.length),a.length-b<e-c&&(e=a.length-b+c);var g=e-c;if(1e3>g||!d.TYPED_ARRAY_SUPPORT)for(var h=0;g>h;h++)a[h+b]=this[h+c];else a._set(this.subarray(c,c+g),b)}},d.prototype.fill=function(a,b,c){if(a||(a=0),b||(b=0),c||(c=this.length),b>c)throw new TypeError("end < start");if(c!==b&&0!==this.length){if(0>b||b>=this.length)throw new TypeError("start out of bounds");if(0>c||c>this.length)throw new TypeError("end out of bounds");var d;if("number"==typeof a)for(d=b;c>d;d++)this[d]=a;else{var e=B(a.toString()),f=e.length;for(d=b;c>d;d++)this[d]=e[d%f]}return this}},d.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(d.TYPED_ARRAY_SUPPORT)return new d(this).buffer;for(var a=new Uint8Array(this.length),b=0,c=a.length;c>b;b+=1)a[b]=this[b];return a.buffer}throw new TypeError("Buffer.toArrayBuffer not supported in this browser")};var L=d.prototype;d._augment=function(a){return a.constructor=d,a._isBuffer=!0,a._get=a.get,a._set=a.set,a.get=L.get,a.set=L.set,a.write=L.write,a.toString=L.toString,a.toLocaleString=L.toString,a.toJSON=L.toJSON,a.equals=L.equals,a.compare=L.compare,a.copy=L.copy,a.slice=L.slice,a.readUInt8=L.readUInt8,a.readUInt16LE=L.readUInt16LE,a.readUInt16BE=L.readUInt16BE,a.readUInt32LE=L.readUInt32LE,a.readUInt32BE=L.readUInt32BE,a.readInt8=L.readInt8,a.readInt16LE=L.readInt16LE,a.readInt16BE=L.readInt16BE,a.readInt32LE=L.readInt32LE,a.readInt32BE=L.readInt32BE,a.readFloatLE=L.readFloatLE,a.readFloatBE=L.readFloatBE,a.readDoubleLE=L.readDoubleLE,a.readDoubleBE=L.readDoubleBE,a.writeUInt8=L.writeUInt8,a.writeUInt16LE=L.writeUInt16LE,a.writeUInt16BE=L.writeUInt16BE,a.writeUInt32LE=L.writeUInt32LE,a.writeUInt32BE=L.writeUInt32BE,a.writeInt8=L.writeInt8,a.writeInt16LE=L.writeInt16LE,a.writeInt16BE=L.writeInt16BE,a.writeInt32LE=L.writeInt32LE,a.writeInt32BE=L.writeInt32BE,a.writeFloatLE=L.writeFloatLE,a.writeFloatBE=L.writeFloatBE,a.writeDoubleLE=L.writeDoubleLE,a.writeDoubleBE=L.writeDoubleBE,a.fill=L.fill,a.inspect=L.inspect,a.toArrayBuffer=L.toArrayBuffer,a};var M=/[^+\/0-9A-z]/g},{"base64-js":83,ieee754:84,"is-array":85}],83:[function(a,b,c){var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";!function(a){"use strict";function b(a){var b=a.charCodeAt(0);return b===g?62:b===h?63:i>b?-1:i+10>b?b-i+26+26:k+26>b?b-k:j+26>b?b-j+26:void 0}function c(a){function c(a){j[l++]=a}var d,e,g,h,i,j;if(a.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var k=a.length;i="="===a.charAt(k-2)?2:"="===a.charAt(k-1)?1:0,j=new f(3*a.length/4-i),g=i>0?a.length-4:a.length;var l=0;for(d=0,e=0;g>d;d+=4,e+=3)h=b(a.charAt(d))<<18|b(a.charAt(d+1))<<12|b(a.charAt(d+2))<<6|b(a.charAt(d+3)),c((16711680&h)>>16),c((65280&h)>>8),c(255&h);return 2===i?(h=b(a.charAt(d))<<2|b(a.charAt(d+1))>>4,c(255&h)):1===i&&(h=b(a.charAt(d))<<10|b(a.charAt(d+1))<<4|b(a.charAt(d+2))>>2,c(h>>8&255),c(255&h)),j}function e(a){function b(a){return d.charAt(a)}function c(a){return b(a>>18&63)+b(a>>12&63)+b(a>>6&63)+b(63&a)}var e,f,g,h=a.length%3,i="";for(e=0,g=a.length-h;g>e;e+=3)f=(a[e]<<16)+(a[e+1]<<8)+a[e+2],i+=c(f);switch(h){case 1:f=a[a.length-1],i+=b(f>>2),i+=b(f<<4&63),i+="==";break;case 2:f=(a[a.length-2]<<8)+a[a.length-1],i+=b(f>>10),i+=b(f>>4&63),i+=b(f<<2&63),i+="="}return i}var f="undefined"!=typeof Uint8Array?Uint8Array:Array,g="+".charCodeAt(0),h="/".charCodeAt(0),i="0".charCodeAt(0),j="a".charCodeAt(0),k="A".charCodeAt(0);a.toByteArray=c,a.fromByteArray=e}("undefined"==typeof c?this.base64js={}:c)},{}],84:[function(a,b,c){c.read=function(a,b,c,d,e){var f,g,h=8*e-d-1,i=(1<<h)-1,j=i>>1,k=-7,l=c?e-1:0,m=c?-1:1,n=a[b+l];for(l+=m,f=n&(1<<-k)-1,n>>=-k,k+=h;k>0;f=256*f+a[b+l],l+=m,k-=8);for(g=f&(1<<-k)-1,f>>=-k,k+=d;k>0;g=256*g+a[b+l],l+=m,k-=8);if(0===f)f=1-j;else{if(f===i)return g?0/0:1/0*(n?-1:1);g+=Math.pow(2,d),f-=j}return(n?-1:1)*g*Math.pow(2,f-d)},c.write=function(a,b,c,d,e,f){var g,h,i,j=8*f-e-1,k=(1<<j)-1,l=k>>1,m=23===e?Math.pow(2,-24)-Math.pow(2,-77):0,n=d?0:f-1,o=d?1:-1,p=0>b||0===b&&0>1/b?1:0;for(b=Math.abs(b),isNaN(b)||1/0===b?(h=isNaN(b)?1:0,g=k):(g=Math.floor(Math.log(b)/Math.LN2),b*(i=Math.pow(2,-g))<1&&(g--,i*=2),b+=g+l>=1?m/i:m*Math.pow(2,1-l),b*i>=2&&(g++,i/=2),g+l>=k?(h=0,g=k):g+l>=1?(h=(b*i-1)*Math.pow(2,e),g+=l):(h=b*Math.pow(2,l-1)*Math.pow(2,e),g=0));e>=8;a[c+n]=255&h,n+=o,h/=256,e-=8);for(g=g<<e|h,j+=e;j>0;a[c+n]=255&g,n+=o,g/=256,j-=8);a[c+n-o]|=128*p}},{}],85:[function(a,b){var c=Array.isArray,d=Object.prototype.toString;b.exports=c||function(a){return!!a&&"[object Array]"==d.call(a)}},{}],86:[function(a,b){function c(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function d(a){return"function"==typeof a}function e(a){return"number"==typeof a}function f(a){return"object"==typeof a&&null!==a}function g(a){return void 0===a}b.exports=c,c.EventEmitter=c,c.prototype._events=void 0,c.prototype._maxListeners=void 0,c.defaultMaxListeners=10,c.prototype.setMaxListeners=function(a){if(!e(a)||0>a||isNaN(a))throw TypeError("n must be a positive number");return this._maxListeners=a,this},c.prototype.emit=function(a){var b,c,e,h,i,j;if(this._events||(this._events={}),"error"===a&&(!this._events.error||f(this._events.error)&&!this._events.error.length)){if(b=arguments[1],b instanceof Error)throw b;throw TypeError('Uncaught, unspecified "error" event.')}if(c=this._events[a],g(c))return!1;if(d(c))switch(arguments.length){case 1:c.call(this);break;case 2:c.call(this,arguments[1]);break;case 3:c.call(this,arguments[1],arguments[2]);break;default:for(e=arguments.length,h=new Array(e-1),i=1;e>i;i++)h[i-1]=arguments[i];c.apply(this,h)}else if(f(c)){for(e=arguments.length,h=new Array(e-1),i=1;e>i;i++)h[i-1]=arguments[i];for(j=c.slice(),e=j.length,i=0;e>i;i++)j[i].apply(this,h)}return!0},c.prototype.addListener=function(a,b){var e;if(!d(b))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",a,d(b.listener)?b.listener:b),this._events[a]?f(this._events[a])?this._events[a].push(b):this._events[a]=[this._events[a],b]:this._events[a]=b,f(this._events[a])&&!this._events[a].warned){var e;e=g(this._maxListeners)?c.defaultMaxListeners:this._maxListeners,e&&e>0&&this._events[a].length>e&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),"function"==typeof console.trace&&console.trace())}return this},c.prototype.on=c.prototype.addListener,c.prototype.once=function(a,b){function c(){this.removeListener(a,c),e||(e=!0,b.apply(this,arguments))}if(!d(b))throw TypeError("listener must be a function");var e=!1;return c.listener=b,this.on(a,c),this},c.prototype.removeListener=function(a,b){var c,e,g,h;if(!d(b))throw TypeError("listener must be a function");if(!this._events||!this._events[a])return this;if(c=this._events[a],g=c.length,e=-1,c===b||d(c.listener)&&c.listener===b)delete this._events[a],this._events.removeListener&&this.emit("removeListener",a,b);else if(f(c)){for(h=g;h-->0;)if(c[h]===b||c[h].listener&&c[h].listener===b){e=h;break}if(0>e)return this;1===c.length?(c.length=0,delete this._events[a]):c.splice(e,1),this._events.removeListener&&this.emit("removeListener",a,b)}return this},c.prototype.removeAllListeners=function(a){var b,c;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[a]&&delete this._events[a],this;if(0===arguments.length){for(b in this._events)"removeListener"!==b&&this.removeAllListeners(b);return this.removeAllListeners("removeListener"),this._events={},this}if(c=this._events[a],d(c))this.removeListener(a,c);else for(;c.length;)this.removeListener(a,c[c.length-1]);return delete this._events[a],this},c.prototype.listeners=function(a){var b;return b=this._events&&this._events[a]?d(this._events[a])?[this._events[a]]:this._events[a].slice():[]},c.listenerCount=function(a,b){var c;return c=a._events&&a._events[b]?d(a._events[b])?1:a._events[b].length:0}},{}],87:[function(a,b){b.exports="function"==typeof Object.create?function(a,b){a.super_=b,a.prototype=Object.create(b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}})}:function(a,b){a.super_=b;var c=function(){};c.prototype=b.prototype,a.prototype=new c,a.prototype.constructor=a}},{}],88:[function(a,b){b.exports=Array.isArray||function(a){return"[object Array]"==Object.prototype.toString.call(a)}},{}],89:[function(a,b,c){(function(a){function b(a,b){for(var c=0,d=a.length-1;d>=0;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c--;c)a.unshift("..");return a}function d(a,b){if(a.filter)return a.filter(b);for(var c=[],d=0;d<a.length;d++)b(a[d],d,a)&&c.push(a[d]);return c}var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,f=function(a){return e.exec(a).slice(1)};c.resolve=function(){for(var c="",e=!1,f=arguments.length-1;f>=-1&&!e;f--){var g=f>=0?arguments[f]:a.cwd();if("string"!=typeof g)throw new TypeError("Arguments to path.resolve must be strings");g&&(c=g+"/"+c,e="/"===g.charAt(0))}return c=b(d(c.split("/"),function(a){return!!a}),!e).join("/"),(e?"/":"")+c||"."},c.normalize=function(a){var e=c.isAbsolute(a),f="/"===g(a,-1);return a=b(d(a.split("/"),function(a){return!!a}),!e).join("/"),a||e||(a="."),a&&f&&(a+="/"),(e?"/":"")+a},c.isAbsolute=function(a){return"/"===a.charAt(0)},c.join=function(){var a=Array.prototype.slice.call(arguments,0);return c.normalize(d(a,function(a){if("string"!=typeof a)throw new TypeError("Arguments to path.join must be strings");return a}).join("/"))},c.relative=function(a,b){function d(a){for(var b=0;b<a.length&&""===a[b];b++);for(var c=a.length-1;c>=0&&""===a[c];c--);return b>c?[]:a.slice(b,c-b+1)}a=c.resolve(a).substr(1),b=c.resolve(b).substr(1);for(var e=d(a.split("/")),f=d(b.split("/")),g=Math.min(e.length,f.length),h=g,i=0;g>i;i++)if(e[i]!==f[i]){h=i;break}for(var j=[],i=h;i<e.length;i++)j.push("..");return j=j.concat(f.slice(h)),j.join("/")},c.sep="/",c.delimiter=":",c.dirname=function(a){var b=f(a),c=b[0],d=b[1];return c||d?(d&&(d=d.substr(0,d.length-1)),c+d):"."},c.basename=function(a,b){var c=f(a)[2];return b&&c.substr(-1*b.length)===b&&(c=c.substr(0,c.length-b.length)),c},c.extname=function(a){return f(a)[3]};var g="b"==="ab".substr(-1)?function(a,b,c){return a.substr(b,c)}:function(a,b,c){return 0>b&&(b=a.length+b),a.substr(b,c)}}).call(this,a("_process"))},{_process:90}],90:[function(a,b){function c(){}var d=b.exports={};d.nextTick=function(){var a="undefined"!=typeof window&&window.setImmediate,b="undefined"!=typeof window&&window.MutationObserver,c="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(a)return function(a){return window.setImmediate(a)};var d=[];if(b){var e=document.createElement("div"),f=new MutationObserver(function(){var a=d.slice();d.length=0,a.forEach(function(a){a()})});return f.observe(e,{attributes:!0}),function(a){d.length||e.setAttribute("yes","no"),d.push(a)}}return c?(window.addEventListener("message",function(a){var b=a.source;if((b===window||null===b)&&"process-tick"===a.data&&(a.stopPropagation(),d.length>0)){var c=d.shift();c()}},!0),function(a){d.push(a),window.postMessage("process-tick","*")}):function(a){setTimeout(a,0)}}(),d.title="browser",d.browser=!0,d.env={},d.argv=[],d.on=c,d.addListener=c,d.once=c,d.off=c,d.removeListener=c,d.removeAllListeners=c,d.emit=c,d.binding=function(){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(){throw new Error("process.chdir is not supported")}},{}],91:[function(a,b){b.exports=a("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":92}],92:[function(a,b){(function(c){function d(a){return this instanceof d?(i.call(this,a),j.call(this,a),a&&a.readable===!1&&(this.readable=!1),a&&a.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,a&&a.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once("end",e)):new d(a)}function e(){this.allowHalfOpen||this._writableState.ended||c.nextTick(this.end.bind(this))}function f(a,b){for(var c=0,d=a.length;d>c;c++)b(a[c],c)}b.exports=d;var g=Object.keys||function(a){var b=[];for(var c in a)b.push(c);return b},h=a("core-util-is");h.inherits=a("inherits");var i=a("./_stream_readable"),j=a("./_stream_writable");h.inherits(d,i),f(g(j.prototype),function(a){d.prototype[a]||(d.prototype[a]=j.prototype[a])})}).call(this,a("_process"))},{"./_stream_readable":94,"./_stream_writable":96,_process:90,"core-util-is":97,inherits:87}],93:[function(a,b){function c(a){return this instanceof c?void d.call(this,a):new c(a)}b.exports=c;var d=a("./_stream_transform"),e=a("core-util-is");e.inherits=a("inherits"),e.inherits(c,d),c.prototype._transform=function(a,b,c){c(null,a)}},{"./_stream_transform":95,"core-util-is":97,inherits:87}],94:[function(a,b){(function(c){function d(b){b=b||{};var c=b.highWaterMark;this.highWaterMark=c||0===c?c:16384,this.highWaterMark=~~this.highWaterMark,this.buffer=[],this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=!1,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.calledRead=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.objectMode=!!b.objectMode,this.defaultEncoding=b.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=a("string_decoder/").StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function e(a){return this instanceof e?(this._readableState=new d(a,this),this.readable=!0,void A.call(this)):new e(a)}function f(a,b,c,d,e){var f=j(b,c);if(f)a.emit("error",f);else if(null===c||void 0===c)b.reading=!1,b.ended||k(a,b);else if(b.objectMode||c&&c.length>0)if(b.ended&&!e){var h=new Error("stream.push() after EOF");a.emit("error",h)}else if(b.endEmitted&&e){var h=new Error("stream.unshift() after end event");a.emit("error",h)}else!b.decoder||e||d||(c=b.decoder.write(c)),b.length+=b.objectMode?1:c.length,e?b.buffer.unshift(c):(b.reading=!1,b.buffer.push(c)),b.needReadable&&l(a),n(a,b);else e||(b.reading=!1);return g(b)}function g(a){return!a.ended&&(a.needReadable||a.length<a.highWaterMark||0===a.length)}function h(a){if(a>=D)a=D;else{a--;for(var b=1;32>b;b<<=1)a|=a>>b;a++}return a}function i(a,b){return 0===b.length&&b.ended?0:b.objectMode?0===a?0:1:null===a||isNaN(a)?b.flowing&&b.buffer.length?b.buffer[0].length:b.length:0>=a?0:(a>b.highWaterMark&&(b.highWaterMark=h(a)),a>b.length?b.ended?b.length:(b.needReadable=!0,0):a)}function j(a,b){var c=null;return y.isBuffer(b)||"string"==typeof b||null===b||void 0===b||a.objectMode||(c=new TypeError("Invalid non-string/buffer chunk")),c}function k(a,b){if(b.decoder&&!b.ended){var c=b.decoder.end();c&&c.length&&(b.buffer.push(c),b.length+=b.objectMode?1:c.length)}b.ended=!0,b.length>0?l(a):u(a)}function l(a){var b=a._readableState;b.needReadable=!1,b.emittedReadable||(b.emittedReadable=!0,b.sync?c.nextTick(function(){m(a)}):m(a))}function m(a){a.emit("readable")}function n(a,b){b.readingMore||(b.readingMore=!0,c.nextTick(function(){o(a,b)}))}function o(a,b){for(var c=b.length;!b.reading&&!b.flowing&&!b.ended&&b.length<b.highWaterMark&&(a.read(0),c!==b.length);)c=b.length;
-b.readingMore=!1}function p(a){return function(){var b=a._readableState;b.awaitDrain--,0===b.awaitDrain&&q(a)}}function q(a){function b(a){var b=a.write(c);!1===b&&d.awaitDrain++}var c,d=a._readableState;for(d.awaitDrain=0;d.pipesCount&&null!==(c=a.read());)if(1===d.pipesCount?b(d.pipes,0,null):v(d.pipes,b),a.emit("data",c),d.awaitDrain>0)return;return 0===d.pipesCount?(d.flowing=!1,void(z.listenerCount(a,"data")>0&&s(a))):void(d.ranOut=!0)}function r(){this._readableState.ranOut&&(this._readableState.ranOut=!1,q(this))}function s(a,b){var d=a._readableState;if(d.flowing)throw new Error("Cannot switch to old mode now.");var e=b||!1,f=!1;a.readable=!0,a.pipe=A.prototype.pipe,a.on=a.addListener=A.prototype.on,a.on("readable",function(){f=!0;for(var b;!e&&null!==(b=a.read());)a.emit("data",b);null===b&&(f=!1,a._readableState.needReadable=!0)}),a.pause=function(){e=!0,this.emit("pause")},a.resume=function(){e=!1,f?c.nextTick(function(){a.emit("readable")}):this.read(0),this.emit("resume")},a.emit("readable")}function t(a,b){var c,d=b.buffer,e=b.length,f=!!b.decoder,g=!!b.objectMode;if(0===d.length)return null;if(0===e)c=null;else if(g)c=d.shift();else if(!a||a>=e)c=f?d.join(""):y.concat(d,e),d.length=0;else if(a<d[0].length){var h=d[0];c=h.slice(0,a),d[0]=h.slice(a)}else if(a===d[0].length)c=d.shift();else{c=f?"":new y(a);for(var i=0,j=0,k=d.length;k>j&&a>i;j++){var h=d[0],l=Math.min(a-i,h.length);f?c+=h.slice(0,l):h.copy(c,i,0,l),l<h.length?d[0]=h.slice(l):d.shift(),i+=l}}return c}function u(a){var b=a._readableState;if(b.length>0)throw new Error("endReadable called on non-empty stream");!b.endEmitted&&b.calledRead&&(b.ended=!0,c.nextTick(function(){b.endEmitted||0!==b.length||(b.endEmitted=!0,a.readable=!1,a.emit("end"))}))}function v(a,b){for(var c=0,d=a.length;d>c;c++)b(a[c],c)}function w(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1}b.exports=e;var x=a("isarray"),y=a("buffer").Buffer;e.ReadableState=d;var z=a("events").EventEmitter;z.listenerCount||(z.listenerCount=function(a,b){return a.listeners(b).length});var A=a("stream"),B=a("core-util-is");B.inherits=a("inherits");var C;B.inherits(e,A),e.prototype.push=function(a,b){var c=this._readableState;return"string"!=typeof a||c.objectMode||(b=b||c.defaultEncoding,b!==c.encoding&&(a=new y(a,b),b="")),f(this,c,a,b,!1)},e.prototype.unshift=function(a){var b=this._readableState;return f(this,b,a,"",!0)},e.prototype.setEncoding=function(b){C||(C=a("string_decoder/").StringDecoder),this._readableState.decoder=new C(b),this._readableState.encoding=b};var D=8388608;e.prototype.read=function(a){var b=this._readableState;b.calledRead=!0;var c,d=a;if(("number"!=typeof a||a>0)&&(b.emittedReadable=!1),0===a&&b.needReadable&&(b.length>=b.highWaterMark||b.ended))return l(this),null;if(a=i(a,b),0===a&&b.ended)return c=null,b.length>0&&b.decoder&&(c=t(a,b),b.length-=c.length),0===b.length&&u(this),c;var e=b.needReadable;return b.length-a<=b.highWaterMark&&(e=!0),(b.ended||b.reading)&&(e=!1),e&&(b.reading=!0,b.sync=!0,0===b.length&&(b.needReadable=!0),this._read(b.highWaterMark),b.sync=!1),e&&!b.reading&&(a=i(d,b)),c=a>0?t(a,b):null,null===c&&(b.needReadable=!0,a=0),b.length-=a,0!==b.length||b.ended||(b.needReadable=!0),b.ended&&!b.endEmitted&&0===b.length&&u(this),c},e.prototype._read=function(){this.emit("error",new Error("not implemented"))},e.prototype.pipe=function(a,b){function d(a){a===k&&f()}function e(){a.end()}function f(){a.removeListener("close",h),a.removeListener("finish",i),a.removeListener("drain",o),a.removeListener("error",g),a.removeListener("unpipe",d),k.removeListener("end",e),k.removeListener("end",f),(!a._writableState||a._writableState.needDrain)&&o()}function g(b){j(),a.removeListener("error",g),0===z.listenerCount(a,"error")&&a.emit("error",b)}function h(){a.removeListener("finish",i),j()}function i(){a.removeListener("close",h),j()}function j(){k.unpipe(a)}var k=this,l=this._readableState;switch(l.pipesCount){case 0:l.pipes=a;break;case 1:l.pipes=[l.pipes,a];break;default:l.pipes.push(a)}l.pipesCount+=1;var m=(!b||b.end!==!1)&&a!==c.stdout&&a!==c.stderr,n=m?e:f;l.endEmitted?c.nextTick(n):k.once("end",n),a.on("unpipe",d);var o=p(k);return a.on("drain",o),a._events&&a._events.error?x(a._events.error)?a._events.error.unshift(g):a._events.error=[g,a._events.error]:a.on("error",g),a.once("close",h),a.once("finish",i),a.emit("pipe",k),l.flowing||(this.on("readable",r),l.flowing=!0,c.nextTick(function(){q(k)})),a},e.prototype.unpipe=function(a){var b=this._readableState;if(0===b.pipesCount)return this;if(1===b.pipesCount)return a&&a!==b.pipes?this:(a||(a=b.pipes),b.pipes=null,b.pipesCount=0,this.removeListener("readable",r),b.flowing=!1,a&&a.emit("unpipe",this),this);if(!a){var c=b.pipes,d=b.pipesCount;b.pipes=null,b.pipesCount=0,this.removeListener("readable",r),b.flowing=!1;for(var e=0;d>e;e++)c[e].emit("unpipe",this);return this}var e=w(b.pipes,a);return-1===e?this:(b.pipes.splice(e,1),b.pipesCount-=1,1===b.pipesCount&&(b.pipes=b.pipes[0]),a.emit("unpipe",this),this)},e.prototype.on=function(a,b){var c=A.prototype.on.call(this,a,b);if("data"!==a||this._readableState.flowing||s(this),"readable"===a&&this.readable){var d=this._readableState;d.readableListening||(d.readableListening=!0,d.emittedReadable=!1,d.needReadable=!0,d.reading?d.length&&l(this,d):this.read(0))}return c},e.prototype.addListener=e.prototype.on,e.prototype.resume=function(){s(this),this.read(0),this.emit("resume")},e.prototype.pause=function(){s(this,!0),this.emit("pause")},e.prototype.wrap=function(a){var b=this._readableState,c=!1,d=this;a.on("end",function(){if(b.decoder&&!b.ended){var a=b.decoder.end();a&&a.length&&d.push(a)}d.push(null)}),a.on("data",function(e){if(b.decoder&&(e=b.decoder.write(e)),(!b.objectMode||null!==e&&void 0!==e)&&(b.objectMode||e&&e.length)){var f=d.push(e);f||(c=!0,a.pause())}});for(var e in a)"function"==typeof a[e]&&"undefined"==typeof this[e]&&(this[e]=function(b){return function(){return a[b].apply(a,arguments)}}(e));var f=["error","close","destroy","pause","resume"];return v(f,function(b){a.on(b,d.emit.bind(d,b))}),d._read=function(){c&&(c=!1,a.resume())},d},e._fromList=t}).call(this,a("_process"))},{_process:90,buffer:82,"core-util-is":97,events:86,inherits:87,isarray:88,stream:102,"string_decoder/":103}],95:[function(a,b){function c(a,b){this.afterTransform=function(a,c){return d(b,a,c)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null}function d(a,b,c){var d=a._transformState;d.transforming=!1;var e=d.writecb;if(!e)return a.emit("error",new Error("no writecb in Transform class"));d.writechunk=null,d.writecb=null,null!==c&&void 0!==c&&a.push(c),e&&e(b);var f=a._readableState;f.reading=!1,(f.needReadable||f.length<f.highWaterMark)&&a._read(f.highWaterMark)}function e(a){if(!(this instanceof e))return new e(a);g.call(this,a);var b=(this._transformState=new c(a,this),this);this._readableState.needReadable=!0,this._readableState.sync=!1,this.once("finish",function(){"function"==typeof this._flush?this._flush(function(a){f(b,a)}):f(b)})}function f(a,b){if(b)return a.emit("error",b);var c=a._writableState,d=(a._readableState,a._transformState);if(c.length)throw new Error("calling transform done when ws.length != 0");if(d.transforming)throw new Error("calling transform done when still transforming");return a.push(null)}b.exports=e;var g=a("./_stream_duplex"),h=a("core-util-is");h.inherits=a("inherits"),h.inherits(e,g),e.prototype.push=function(a,b){return this._transformState.needTransform=!1,g.prototype.push.call(this,a,b)},e.prototype._transform=function(){throw new Error("not implemented")},e.prototype._write=function(a,b,c){var d=this._transformState;if(d.writecb=c,d.writechunk=a,d.writeencoding=b,!d.transforming){var e=this._readableState;(d.needTransform||e.needReadable||e.length<e.highWaterMark)&&this._read(e.highWaterMark)}},e.prototype._read=function(){var a=this._transformState;null!==a.writechunk&&a.writecb&&!a.transforming?(a.transforming=!0,this._transform(a.writechunk,a.writeencoding,a.afterTransform)):a.needTransform=!0}},{"./_stream_duplex":92,"core-util-is":97,inherits:87}],96:[function(a,b){(function(c){function d(a,b,c){this.chunk=a,this.encoding=b,this.callback=c}function e(a,b){a=a||{};var c=a.highWaterMark;this.highWaterMark=c||0===c?c:16384,this.objectMode=!!a.objectMode,this.highWaterMark=~~this.highWaterMark,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var d=a.decodeStrings===!1;this.decodeStrings=!d,this.defaultEncoding=a.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){n(b,a)},this.writecb=null,this.writelen=0,this.buffer=[],this.errorEmitted=!1}function f(b){var c=a("./_stream_duplex");return this instanceof f||this instanceof c?(this._writableState=new e(b,this),this.writable=!0,void w.call(this)):new f(b)}function g(a,b,d){var e=new Error("write after end");a.emit("error",e),c.nextTick(function(){d(e)})}function h(a,b,d,e){var f=!0;if(!u.isBuffer(d)&&"string"!=typeof d&&null!==d&&void 0!==d&&!b.objectMode){var g=new TypeError("Invalid non-string/buffer chunk");a.emit("error",g),c.nextTick(function(){e(g)}),f=!1}return f}function i(a,b,c){return a.objectMode||a.decodeStrings===!1||"string"!=typeof b||(b=new u(b,c)),b}function j(a,b,c,e,f){c=i(b,c,e),u.isBuffer(c)&&(e="buffer");var g=b.objectMode?1:c.length;b.length+=g;var h=b.length<b.highWaterMark;return h||(b.needDrain=!0),b.writing?b.buffer.push(new d(c,e,f)):k(a,b,g,c,e,f),h}function k(a,b,c,d,e,f){b.writelen=c,b.writecb=f,b.writing=!0,b.sync=!0,a._write(d,e,b.onwrite),b.sync=!1}function l(a,b,d,e,f){d?c.nextTick(function(){f(e)}):f(e),a._writableState.errorEmitted=!0,a.emit("error",e)}function m(a){a.writing=!1,a.writecb=null,a.length-=a.writelen,a.writelen=0}function n(a,b){var d=a._writableState,e=d.sync,f=d.writecb;if(m(d),b)l(a,d,e,b,f);else{var g=r(a,d);g||d.bufferProcessing||!d.buffer.length||q(a,d),e?c.nextTick(function(){o(a,d,g,f)}):o(a,d,g,f)}}function o(a,b,c,d){c||p(a,b),d(),c&&s(a,b)}function p(a,b){0===b.length&&b.needDrain&&(b.needDrain=!1,a.emit("drain"))}function q(a,b){b.bufferProcessing=!0;for(var c=0;c<b.buffer.length;c++){var d=b.buffer[c],e=d.chunk,f=d.encoding,g=d.callback,h=b.objectMode?1:e.length;if(k(a,b,h,e,f,g),b.writing){c++;break}}b.bufferProcessing=!1,c<b.buffer.length?b.buffer=b.buffer.slice(c):b.buffer.length=0}function r(a,b){return b.ending&&0===b.length&&!b.finished&&!b.writing}function s(a,b){var c=r(a,b);return c&&(b.finished=!0,a.emit("finish")),c}function t(a,b,d){b.ending=!0,s(a,b),d&&(b.finished?c.nextTick(d):a.once("finish",d)),b.ended=!0}b.exports=f;var u=a("buffer").Buffer;f.WritableState=e;var v=a("core-util-is");v.inherits=a("inherits");var w=a("stream");v.inherits(f,w),f.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe. Not readable."))},f.prototype.write=function(a,b,c){var d=this._writableState,e=!1;return"function"==typeof b&&(c=b,b=null),u.isBuffer(a)?b="buffer":b||(b=d.defaultEncoding),"function"!=typeof c&&(c=function(){}),d.ended?g(this,d,c):h(this,d,a,c)&&(e=j(this,d,a,b,c)),e},f.prototype._write=function(a,b,c){c(new Error("not implemented"))},f.prototype.end=function(a,b,c){var d=this._writableState;"function"==typeof a?(c=a,a=null,b=null):"function"==typeof b&&(c=b,b=null),"undefined"!=typeof a&&null!==a&&this.write(a,b),d.ending||d.finished||t(this,d,c)}}).call(this,a("_process"))},{"./_stream_duplex":92,_process:90,buffer:82,"core-util-is":97,inherits:87,stream:102}],97:[function(a,b,c){(function(a){function b(a){return Array.isArray(a)}function d(a){return"boolean"==typeof a}function e(a){return null===a}function f(a){return null==a}function g(a){return"number"==typeof a}function h(a){return"string"==typeof a}function i(a){return"symbol"==typeof a}function j(a){return void 0===a}function k(a){return l(a)&&"[object RegExp]"===r(a)}function l(a){return"object"==typeof a&&null!==a}function m(a){return l(a)&&"[object Date]"===r(a)}function n(a){return l(a)&&("[object Error]"===r(a)||a instanceof Error)}function o(a){return"function"==typeof a}function p(a){return null===a||"boolean"==typeof a||"number"==typeof a||"string"==typeof a||"symbol"==typeof a||"undefined"==typeof a}function q(b){return a.isBuffer(b)}function r(a){return Object.prototype.toString.call(a)}c.isArray=b,c.isBoolean=d,c.isNull=e,c.isNullOrUndefined=f,c.isNumber=g,c.isString=h,c.isSymbol=i,c.isUndefined=j,c.isRegExp=k,c.isObject=l,c.isDate=m,c.isError=n,c.isFunction=o,c.isPrimitive=p,c.isBuffer=q}).call(this,a("buffer").Buffer)},{buffer:82}],98:[function(a,b){b.exports=a("./lib/_stream_passthrough.js")},{"./lib/_stream_passthrough.js":93}],99:[function(a,b,c){var d=a("stream");c=b.exports=a("./lib/_stream_readable.js"),c.Stream=d,c.Readable=c,c.Writable=a("./lib/_stream_writable.js"),c.Duplex=a("./lib/_stream_duplex.js"),c.Transform=a("./lib/_stream_transform.js"),c.PassThrough=a("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":92,"./lib/_stream_passthrough.js":93,"./lib/_stream_readable.js":94,"./lib/_stream_transform.js":95,"./lib/_stream_writable.js":96,stream:102}],100:[function(a,b){b.exports=a("./lib/_stream_transform.js")},{"./lib/_stream_transform.js":95}],101:[function(a,b){b.exports=a("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":96}],102:[function(a,b){function c(){d.call(this)}b.exports=c;var d=a("events").EventEmitter,e=a("inherits");e(c,d),c.Readable=a("readable-stream/readable.js"),c.Writable=a("readable-stream/writable.js"),c.Duplex=a("readable-stream/duplex.js"),c.Transform=a("readable-stream/transform.js"),c.PassThrough=a("readable-stream/passthrough.js"),c.Stream=c,c.prototype.pipe=function(a,b){function c(b){a.writable&&!1===a.write(b)&&j.pause&&j.pause()}function e(){j.readable&&j.resume&&j.resume()}function f(){k||(k=!0,a.end())}function g(){k||(k=!0,"function"==typeof a.destroy&&a.destroy())}function h(a){if(i(),0===d.listenerCount(this,"error"))throw a}function i(){j.removeListener("data",c),a.removeListener("drain",e),j.removeListener("end",f),j.removeListener("close",g),j.removeListener("error",h),a.removeListener("error",h),j.removeListener("end",i),j.removeListener("close",i),a.removeListener("close",i)}var j=this;j.on("data",c),a.on("drain",e),a._isStdio||b&&b.end===!1||(j.on("end",f),j.on("close",g));var k=!1;return j.on("error",h),a.on("error",h),j.on("end",i),j.on("close",i),a.on("close",i),a.emit("pipe",j),a}},{events:86,inherits:87,"readable-stream/duplex.js":91,"readable-stream/passthrough.js":98,"readable-stream/readable.js":99,"readable-stream/transform.js":100,"readable-stream/writable.js":101}],103:[function(a,b,c){function d(a){if(a&&!i(a))throw new Error("Unknown encoding: "+a)}function e(a){return a.toString(this.encoding)}function f(a){this.charReceived=a.length%2,this.charLength=this.charReceived?2:0}function g(a){this.charReceived=a.length%3,this.charLength=this.charReceived?3:0}var h=a("buffer").Buffer,i=h.isEncoding||function(a){switch(a&&a.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},j=c.StringDecoder=function(a){switch(this.encoding=(a||"utf8").toLowerCase().replace(/[-_]/,""),d(a),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=f;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=g;break;default:return void(this.write=e)}this.charBuffer=new h(6),this.charReceived=0,this.charLength=0};j.prototype.write=function(a){for(var b="";this.charLength;){var c=a.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:a.length;if(a.copy(this.charBuffer,this.charReceived,0,c),this.charReceived+=c,this.charReceived<this.charLength)return"";a=a.slice(c,a.length),b=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var d=b.charCodeAt(b.length-1);if(!(d>=55296&&56319>=d)){if(this.charReceived=this.charLength=0,0===a.length)return b;break}this.charLength+=this.surrogateSize,b=""}this.detectIncompleteChar(a);var e=a.length;this.charLength&&(a.copy(this.charBuffer,0,a.length-this.charReceived,e),e-=this.charReceived),b+=a.toString(this.encoding,0,e);var e=b.length-1,d=b.charCodeAt(e);if(d>=55296&&56319>=d){var f=this.surrogateSize;return this.charLength+=f,this.charReceived+=f,this.charBuffer.copy(this.charBuffer,f,0,f),a.copy(this.charBuffer,0,0,f),b.substring(0,e)}return b},j.prototype.detectIncompleteChar=function(a){for(var b=a.length>=3?3:a.length;b>0;b--){var c=a[a.length-b];if(1==b&&c>>5==6){this.charLength=2;break}if(2>=b&&c>>4==14){this.charLength=3;break}if(3>=b&&c>>3==30){this.charLength=4;break}}this.charReceived=b},j.prototype.end=function(a){var b="";if(a&&a.length&&(b=this.write(a)),this.charReceived){var c=this.charReceived,d=this.charBuffer,e=this.encoding;b+=d.slice(0,c).toString(e)}return b}},{buffer:82}],104:[function(a,b){b.exports=function(a){return a&&"object"==typeof a&&"function"==typeof a.copy&&"function"==typeof a.fill&&"function"==typeof a.readUInt8}},{}],105:[function(a,b,c){(function(b,d){function e(a,b){var d={seen:[],stylize:g};return arguments.length>=3&&(d.depth=arguments[2]),arguments.length>=4&&(d.colors=arguments[3]),p(b)?d.showHidden=b:b&&c._extend(d,b),v(d.showHidden)&&(d.showHidden=!1),v(d.depth)&&(d.depth=2),v(d.colors)&&(d.colors=!1),v(d.customInspect)&&(d.customInspect=!0),d.colors&&(d.stylize=f),i(d,a,d.depth)}function f(a,b){var c=e.styles[b];return c?"["+e.colors[c][0]+"m"+a+"["+e.colors[c][1]+"m":a}function g(a){return a}function h(a){var b={};return a.forEach(function(a){b[a]=!0}),b}function i(a,b,d){if(a.customInspect&&b&&A(b.inspect)&&b.inspect!==c.inspect&&(!b.constructor||b.constructor.prototype!==b)){var e=b.inspect(d,a);return t(e)||(e=i(a,e,d)),e}var f=j(a,b);if(f)return f;var g=Object.keys(b),p=h(g);if(a.showHidden&&(g=Object.getOwnPropertyNames(b)),z(b)&&(g.indexOf("message")>=0||g.indexOf("description")>=0))return k(b);if(0===g.length){if(A(b)){var q=b.name?": "+b.name:"";return a.stylize("[Function"+q+"]","special")}if(w(b))return a.stylize(RegExp.prototype.toString.call(b),"regexp");if(y(b))return a.stylize(Date.prototype.toString.call(b),"date");if(z(b))return k(b)}var r="",s=!1,u=["{","}"];if(o(b)&&(s=!0,u=["[","]"]),A(b)){var v=b.name?": "+b.name:"";r=" [Function"+v+"]"}if(w(b)&&(r=" "+RegExp.prototype.toString.call(b)),y(b)&&(r=" "+Date.prototype.toUTCString.call(b)),z(b)&&(r=" "+k(b)),0===g.length&&(!s||0==b.length))return u[0]+r+u[1];if(0>d)return w(b)?a.stylize(RegExp.prototype.toString.call(b),"regexp"):a.stylize("[Object]","special");a.seen.push(b);var x;return x=s?l(a,b,d,p,g):g.map(function(c){return m(a,b,d,p,c,s)}),a.seen.pop(),n(x,r,u)}function j(a,b){if(v(b))return a.stylize("undefined","undefined");if(t(b)){var c="'"+JSON.stringify(b).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return a.stylize(c,"string")}return s(b)?a.stylize(""+b,"number"):p(b)?a.stylize(""+b,"boolean"):q(b)?a.stylize("null","null"):void 0}function k(a){return"["+Error.prototype.toString.call(a)+"]"}function l(a,b,c,d,e){for(var f=[],g=0,h=b.length;h>g;++g)f.push(F(b,String(g))?m(a,b,c,d,String(g),!0):"");return e.forEach(function(e){e.match(/^\d+$/)||f.push(m(a,b,c,d,e,!0))}),f}function m(a,b,c,d,e,f){var g,h,j;if(j=Object.getOwnPropertyDescriptor(b,e)||{value:b[e]},j.get?h=j.set?a.stylize("[Getter/Setter]","special"):a.stylize("[Getter]","special"):j.set&&(h=a.stylize("[Setter]","special")),F(d,e)||(g="["+e+"]"),h||(a.seen.indexOf(j.value)<0?(h=q(c)?i(a,j.value,null):i(a,j.value,c-1),h.indexOf("\n")>-1&&(h=f?h.split("\n").map(function(a){return"  "+a}).join("\n").substr(2):"\n"+h.split("\n").map(function(a){return"   "+a}).join("\n"))):h=a.stylize("[Circular]","special")),v(g)){if(f&&e.match(/^\d+$/))return h;g=JSON.stringify(""+e),g.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(g=g.substr(1,g.length-2),g=a.stylize(g,"name")):(g=g.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),g=a.stylize(g,"string"))}return g+": "+h}function n(a,b,c){var d=0,e=a.reduce(function(a,b){return d++,b.indexOf("\n")>=0&&d++,a+b.replace(/\u001b\[\d\d?m/g,"").length+1},0);return e>60?c[0]+(""===b?"":b+"\n ")+" "+a.join(",\n  ")+" "+c[1]:c[0]+b+" "+a.join(", ")+" "+c[1]}function o(a){return Array.isArray(a)}function p(a){return"boolean"==typeof a}function q(a){return null===a}function r(a){return null==a}function s(a){return"number"==typeof a}function t(a){return"string"==typeof a}function u(a){return"symbol"==typeof a}function v(a){return void 0===a}function w(a){return x(a)&&"[object RegExp]"===C(a)}function x(a){return"object"==typeof a&&null!==a}function y(a){return x(a)&&"[object Date]"===C(a)}function z(a){return x(a)&&("[object Error]"===C(a)||a instanceof Error)}function A(a){return"function"==typeof a}function B(a){return null===a||"boolean"==typeof a||"number"==typeof a||"string"==typeof a||"symbol"==typeof a||"undefined"==typeof a}function C(a){return Object.prototype.toString.call(a)}function D(a){return 10>a?"0"+a.toString(10):a.toString(10)}function E(){var a=new Date,b=[D(a.getHours()),D(a.getMinutes()),D(a.getSeconds())].join(":");return[a.getDate(),J[a.getMonth()],b].join(" ")}function F(a,b){return Object.prototype.hasOwnProperty.call(a,b)}var G=/%[sdj%]/g;c.format=function(a){if(!t(a)){for(var b=[],c=0;c<arguments.length;c++)b.push(e(arguments[c]));return b.join(" ")}for(var c=1,d=arguments,f=d.length,g=String(a).replace(G,function(a){if("%%"===a)return"%";if(c>=f)return a;switch(a){case"%s":return String(d[c++]);case"%d":return Number(d[c++]);case"%j":try{return JSON.stringify(d[c++])}catch(b){return"[Circular]"}default:return a}}),h=d[c];f>c;h=d[++c])g+=q(h)||!x(h)?" "+h:" "+e(h);return g},c.deprecate=function(a,e){function f(){if(!g){if(b.throwDeprecation)throw new Error(e);b.traceDeprecation?console.trace(e):console.error(e),g=!0}return a.apply(this,arguments)}if(v(d.process))return function(){return c.deprecate(a,e).apply(this,arguments)};if(b.noDeprecation===!0)return a;var g=!1;return f};var H,I={};c.debuglog=function(a){if(v(H)&&(H=b.env.NODE_DEBUG||""),a=a.toUpperCase(),!I[a])if(new RegExp("\\b"+a+"\\b","i").test(H)){var d=b.pid;I[a]=function(){var b=c.format.apply(c,arguments);console.error("%s %d: %s",a,d,b)}}else I[a]=function(){};return I[a]},c.inspect=e,e.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},e.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},c.isArray=o,c.isBoolean=p,c.isNull=q,c.isNullOrUndefined=r,c.isNumber=s,c.isString=t,c.isSymbol=u,c.isUndefined=v,c.isRegExp=w,c.isObject=x,c.isDate=y,c.isError=z,c.isFunction=A,c.isPrimitive=B,c.isBuffer=a("./support/isBuffer");var J=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];c.log=function(){console.log("%s - %s",E(),c.format.apply(c,arguments))},c.inherits=a("inherits"),c._extend=function(a,b){if(!b||!x(b))return a;for(var c=Object.keys(b),d=c.length;d--;)a[c[d]]=b[c[d]];return a}}).call(this,a("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":104,_process:90,inherits:87}],106:[function(a,b){b.exports=a(61)},{"/Users/idok/Projects/react-templates/node_modules/cheerio/node_modules/lodash/dist/lodash.js":61}],107:[function(a,b){"use strict";var c=a("./focusNode"),d={componentDidMount:function(){this.props.autoFocus&&c(this.getDOMNode())}};b.exports=d},{"./focusNode":231}],108:[function(a,b){"use strict";function c(){var a=window.opera;return"object"==typeof a&&"function"==typeof a.version&&parseInt(a.version(),10)<=12}function d(a){return(a.ctrlKey||a.altKey||a.metaKey)&&!(a.ctrlKey&&a.altKey)}var e=a("./EventConstants"),f=a("./EventPropagators"),g=a("./ExecutionEnvironment"),h=a("./SyntheticInputEvent"),i=a("./keyOf"),j=g.canUseDOM&&"TextEvent"in window&&!("documentMode"in document||c()),k=32,l=String.fromCharCode(k),m=e.topLevelTypes,n={beforeInput:{phasedRegistrationNames:{bubbled:i({onBeforeInput:null}),captured:i({onBeforeInputCapture:null})},dependencies:[m.topCompositionEnd,m.topKeyPress,m.topTextInput,m.topPaste]}},o=null,p=!1,q={eventTypes:n,extractEvents:function(a,b,c,e){var g;if(j)switch(a){case m.topKeyPress:var i=e.which;if(i!==k)return;p=!0,g=l;break;case m.topTextInput:if(g=e.data,g===l&&p)return;break;default:return}else{switch(a){case m.topPaste:o=null;break;case m.topKeyPress:e.which&&!d(e)&&(o=String.fromCharCode(e.which));break;case m.topCompositionEnd:o=e.data}if(null===o)return;g=o}if(g){var q=h.getPooled(n.beforeInput,c,e);return q.data=g,o=null,f.accumulateTwoPhaseDispatches(q),q}}};b.exports=q},{"./EventConstants":122,"./EventPropagators":127,"./ExecutionEnvironment":128,"./SyntheticInputEvent":207,"./keyOf":253}],109:[function(a,b){(function(c){var d=a("./invariant"),e={addClass:function(a,b){return"production"!==c.env.NODE_ENV?d(!/\s/.test(b),'CSSCore.addClass takes only a single class name. "%s" contains multiple classes.',b):d(!/\s/.test(b)),b&&(a.classList?a.classList.add(b):e.hasClass(a,b)||(a.className=a.className+" "+b)),a},removeClass:function(a,b){return"production"!==c.env.NODE_ENV?d(!/\s/.test(b),'CSSCore.removeClass takes only a single class name. "%s" contains multiple classes.',b):d(!/\s/.test(b)),b&&(a.classList?a.classList.remove(b):e.hasClass(a,b)&&(a.className=a.className.replace(new RegExp("(^|\\s)"+b+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,""))),a},conditionClass:function(a,b,c){return(c?e.addClass:e.removeClass)(a,b)},hasClass:function(a,b){return"production"!==c.env.NODE_ENV?d(!/\s/.test(b),"CSS.hasClass takes only a single class name."):d(!/\s/.test(b)),a.classList?!!b&&a.classList.contains(b):(" "+a.className+" ").indexOf(" "+b+" ")>-1}};b.exports=e}).call(this,a("_process"))},{"./invariant":246,_process:90}],110:[function(a,b){"use strict";function c(a,b){return a+b.charAt(0).toUpperCase()+b.substring(1)}var d={columnCount:!0,flex:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,strokeOpacity:!0},e=["Webkit","ms","Moz","O"];Object.keys(d).forEach(function(a){e.forEach(function(b){d[c(b,a)]=d[a]})});var f={background:{backgroundImage:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundColor:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0}},g={isUnitlessNumber:d,shorthandPropertyExpansions:f};b.exports=g},{}],111:[function(a,b){(function(c){"use strict";var d=a("./CSSProperty"),e=a("./ExecutionEnvironment"),f=a("./camelizeStyleName"),g=a("./dangerousStyleValue"),h=a("./hyphenateStyleName"),i=a("./memoizeStringOnly"),j=a("./warning"),k=i(function(a){return h(a)}),l="cssFloat";if(e.canUseDOM&&void 0===document.documentElement.style.cssFloat&&(l="styleFloat"),"production"!==c.env.NODE_ENV)var m={},n=function(a){m.hasOwnProperty(a)&&m[a]||(m[a]=!0,"production"!==c.env.NODE_ENV?j(!1,"Unsupported style property "+a+". Did you mean "+f(a)+"?"):null)};var o={createMarkupForStyles:function(a){var b="";for(var d in a)if(a.hasOwnProperty(d)){"production"!==c.env.NODE_ENV&&d.indexOf("-")>-1&&n(d);var e=a[d];null!=e&&(b+=k(d)+":",b+=g(d,e)+";")}return b||null},setValueForStyles:function(a,b){var e=a.style;for(var f in b)if(b.hasOwnProperty(f)){"production"!==c.env.NODE_ENV&&f.indexOf("-")>-1&&n(f);var h=g(f,b[f]);if("float"===f&&(f=l),h)e[f]=h;else{var i=d.shorthandPropertyExpansions[f];if(i)for(var j in i)e[j]="";else e[f]=""}}}};b.exports=o}).call(this,a("_process"))},{"./CSSProperty":110,"./ExecutionEnvironment":128,"./camelizeStyleName":218,"./dangerousStyleValue":225,"./hyphenateStyleName":244,"./memoizeStringOnly":255,"./warning":266,_process:90}],112:[function(a,b){(function(c){"use strict";function d(){this._callbacks=null,this._contexts=null}var e=a("./PooledClass"),f=a("./Object.assign"),g=a("./invariant");f(d.prototype,{enqueue:function(a,b){this._callbacks=this._callbacks||[],this._contexts=this._contexts||[],this._callbacks.push(a),this._contexts.push(b)},notifyAll:function(){var a=this._callbacks,b=this._contexts;if(a){"production"!==c.env.NODE_ENV?g(a.length===b.length,"Mismatched list of contexts in callback queue"):g(a.length===b.length),this._callbacks=null,this._contexts=null;for(var d=0,e=a.length;e>d;d++)a[d].call(b[d]);a.length=0,b.length=0}},reset:function(){this._callbacks=null,this._contexts=null},destructor:function(){this.reset()}}),e.addPoolingTo(d),b.exports=d}).call(this,a("_process"))},{"./Object.assign":134,"./PooledClass":135,"./invariant":246,_process:90}],113:[function(a,b){"use strict";function c(a){return"SELECT"===a.nodeName||"INPUT"===a.nodeName&&"file"===a.type}function d(a){var b=w.getPooled(B.change,D,a);t.accumulateTwoPhaseDispatches(b),v.batchedUpdates(e,b)}function e(a){s.enqueueEvents(a),s.processEventQueue()}function f(a,b){C=a,D=b,C.attachEvent("onchange",d)}function g(){C&&(C.detachEvent("onchange",d),C=null,D=null)}function h(a,b,c){return a===A.topChange?c:void 0}function i(a,b,c){a===A.topFocus?(g(),f(b,c)):a===A.topBlur&&g()}function j(a,b){C=a,D=b,E=a.value,F=Object.getOwnPropertyDescriptor(a.constructor.prototype,"value"),Object.defineProperty(C,"value",I),C.attachEvent("onpropertychange",l)}function k(){C&&(delete C.value,C.detachEvent("onpropertychange",l),C=null,D=null,E=null,F=null)}function l(a){if("value"===a.propertyName){var b=a.srcElement.value;b!==E&&(E=b,d(a))}}function m(a,b,c){return a===A.topInput?c:void 0}function n(a,b,c){a===A.topFocus?(k(),j(b,c)):a===A.topBlur&&k()}function o(a){return a!==A.topSelectionChange&&a!==A.topKeyUp&&a!==A.topKeyDown||!C||C.value===E?void 0:(E=C.value,D)}function p(a){return"INPUT"===a.nodeName&&("checkbox"===a.type||"radio"===a.type)}function q(a,b,c){return a===A.topClick?c:void 0}var r=a("./EventConstants"),s=a("./EventPluginHub"),t=a("./EventPropagators"),u=a("./ExecutionEnvironment"),v=a("./ReactUpdates"),w=a("./SyntheticEvent"),x=a("./isEventSupported"),y=a("./isTextInputElement"),z=a("./keyOf"),A=r.topLevelTypes,B={change:{phasedRegistrationNames:{bubbled:z({onChange:null}),captured:z({onChangeCapture:null})},dependencies:[A.topBlur,A.topChange,A.topClick,A.topFocus,A.topInput,A.topKeyDown,A.topKeyUp,A.topSelectionChange]}},C=null,D=null,E=null,F=null,G=!1;u.canUseDOM&&(G=x("change")&&(!("documentMode"in document)||document.documentMode>8));var H=!1;u.canUseDOM&&(H=x("input")&&(!("documentMode"in document)||document.documentMode>9));var I={get:function(){return F.get.call(this)},set:function(a){E=""+a,F.set.call(this,a)}},J={eventTypes:B,extractEvents:function(a,b,d,e){var f,g;if(c(b)?G?f=h:g=i:y(b)?H?f=m:(f=o,g=n):p(b)&&(f=q),f){var j=f(a,b,d);if(j){var k=w.getPooled(B.change,j,e);return t.accumulateTwoPhaseDispatches(k),k}}g&&g(a,b,d)}};b.exports=J},{"./EventConstants":122,"./EventPluginHub":124,"./EventPropagators":127,"./ExecutionEnvironment":128,"./ReactUpdates":196,"./SyntheticEvent":205,"./isEventSupported":247,"./isTextInputElement":249,"./keyOf":253}],114:[function(a,b){"use strict";var c=0,d={createReactRootIndex:function(){return c++}};b.exports=d},{}],115:[function(a,b){"use strict";function c(a){switch(a){case r.topCompositionStart:return t.compositionStart;case r.topCompositionEnd:return t.compositionEnd;case r.topCompositionUpdate:return t.compositionUpdate}}function d(a,b){return a===r.topKeyDown&&b.keyCode===o}function e(a,b){switch(a){case r.topKeyUp:return-1!==n.indexOf(b.keyCode);
-case r.topKeyDown:return b.keyCode!==o;case r.topKeyPress:case r.topMouseDown:case r.topBlur:return!0;default:return!1}}function f(a){this.root=a,this.startSelection=j.getSelection(a),this.startValue=this.getText()}var g=a("./EventConstants"),h=a("./EventPropagators"),i=a("./ExecutionEnvironment"),j=a("./ReactInputSelection"),k=a("./SyntheticCompositionEvent"),l=a("./getTextContentAccessor"),m=a("./keyOf"),n=[9,13,27,32],o=229,p=i.canUseDOM&&"CompositionEvent"in window,q=!p||"documentMode"in document&&document.documentMode>8&&document.documentMode<=11,r=g.topLevelTypes,s=null,t={compositionEnd:{phasedRegistrationNames:{bubbled:m({onCompositionEnd:null}),captured:m({onCompositionEndCapture:null})},dependencies:[r.topBlur,r.topCompositionEnd,r.topKeyDown,r.topKeyPress,r.topKeyUp,r.topMouseDown]},compositionStart:{phasedRegistrationNames:{bubbled:m({onCompositionStart:null}),captured:m({onCompositionStartCapture:null})},dependencies:[r.topBlur,r.topCompositionStart,r.topKeyDown,r.topKeyPress,r.topKeyUp,r.topMouseDown]},compositionUpdate:{phasedRegistrationNames:{bubbled:m({onCompositionUpdate:null}),captured:m({onCompositionUpdateCapture:null})},dependencies:[r.topBlur,r.topCompositionUpdate,r.topKeyDown,r.topKeyPress,r.topKeyUp,r.topMouseDown]}};f.prototype.getText=function(){return this.root.value||this.root[l()]},f.prototype.getData=function(){var a=this.getText(),b=this.startSelection.start,c=this.startValue.length-this.startSelection.end;return a.substr(b,a.length-c-b)};var u={eventTypes:t,extractEvents:function(a,b,g,i){var j,l;if(p?j=c(a):s?e(a,i)&&(j=t.compositionEnd):d(a,i)&&(j=t.compositionStart),q&&(s||j!==t.compositionStart?j===t.compositionEnd&&s&&(l=s.getData(),s=null):s=new f(b)),j){var m=k.getPooled(j,g,i);return l&&(m.data=l),h.accumulateTwoPhaseDispatches(m),m}}};b.exports=u},{"./EventConstants":122,"./EventPropagators":127,"./ExecutionEnvironment":128,"./ReactInputSelection":170,"./SyntheticCompositionEvent":203,"./getTextContentAccessor":241,"./keyOf":253}],116:[function(a,b){(function(c){"use strict";function d(a,b,c){a.insertBefore(b,a.childNodes[c]||null)}var e,f=a("./Danger"),g=a("./ReactMultiChildUpdateTypes"),h=a("./getTextContentAccessor"),i=a("./invariant"),j=h();e="textContent"===j?function(a,b){a.textContent=b}:function(a,b){for(;a.firstChild;)a.removeChild(a.firstChild);if(b){var c=a.ownerDocument||document;a.appendChild(c.createTextNode(b))}};var k={dangerouslyReplaceNodeWithMarkup:f.dangerouslyReplaceNodeWithMarkup,updateTextContent:e,processUpdates:function(a,b){for(var h,j=null,k=null,l=0;h=a[l];l++)if(h.type===g.MOVE_EXISTING||h.type===g.REMOVE_NODE){var m=h.fromIndex,n=h.parentNode.childNodes[m],o=h.parentID;"production"!==c.env.NODE_ENV?i(n,"processUpdates(): Unable to find child %s of element. This probably means the DOM was unexpectedly mutated (e.g., by the browser), usually due to forgetting a <tbody> when using tables, nesting tags like <form>, <p>, or <a>, or using non-SVG elements in an <svg> parent. Try inspecting the child nodes of the element with React ID `%s`.",m,o):i(n),j=j||{},j[o]=j[o]||[],j[o][m]=n,k=k||[],k.push(n)}var p=f.dangerouslyRenderMarkup(b);if(k)for(var q=0;q<k.length;q++)k[q].parentNode.removeChild(k[q]);for(var r=0;h=a[r];r++)switch(h.type){case g.INSERT_MARKUP:d(h.parentNode,p[h.markupIndex],h.toIndex);break;case g.MOVE_EXISTING:d(h.parentNode,j[h.parentID][h.fromIndex],h.toIndex);break;case g.TEXT_CONTENT:e(h.parentNode,h.textContent);break;case g.REMOVE_NODE:}}};b.exports=k}).call(this,a("_process"))},{"./Danger":119,"./ReactMultiChildUpdateTypes":177,"./getTextContentAccessor":241,"./invariant":246,_process:90}],117:[function(a,b){(function(c){"use strict";function d(a,b){return(a&b)===b}var e=a("./invariant"),f={MUST_USE_ATTRIBUTE:1,MUST_USE_PROPERTY:2,HAS_SIDE_EFFECTS:4,HAS_BOOLEAN_VALUE:8,HAS_NUMERIC_VALUE:16,HAS_POSITIVE_NUMERIC_VALUE:48,HAS_OVERLOADED_BOOLEAN_VALUE:64,injectDOMPropertyConfig:function(a){var b=a.Properties||{},g=a.DOMAttributeNames||{},i=a.DOMPropertyNames||{},j=a.DOMMutationMethods||{};a.isCustomAttribute&&h._isCustomAttributeFunctions.push(a.isCustomAttribute);for(var k in b){"production"!==c.env.NODE_ENV?e(!h.isStandardName.hasOwnProperty(k),"injectDOMPropertyConfig(...): You're trying to inject DOM property '%s' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.",k):e(!h.isStandardName.hasOwnProperty(k)),h.isStandardName[k]=!0;var l=k.toLowerCase();if(h.getPossibleStandardName[l]=k,g.hasOwnProperty(k)){var m=g[k];h.getPossibleStandardName[m]=k,h.getAttributeName[k]=m}else h.getAttributeName[k]=l;h.getPropertyName[k]=i.hasOwnProperty(k)?i[k]:k,h.getMutationMethod[k]=j.hasOwnProperty(k)?j[k]:null;var n=b[k];h.mustUseAttribute[k]=d(n,f.MUST_USE_ATTRIBUTE),h.mustUseProperty[k]=d(n,f.MUST_USE_PROPERTY),h.hasSideEffects[k]=d(n,f.HAS_SIDE_EFFECTS),h.hasBooleanValue[k]=d(n,f.HAS_BOOLEAN_VALUE),h.hasNumericValue[k]=d(n,f.HAS_NUMERIC_VALUE),h.hasPositiveNumericValue[k]=d(n,f.HAS_POSITIVE_NUMERIC_VALUE),h.hasOverloadedBooleanValue[k]=d(n,f.HAS_OVERLOADED_BOOLEAN_VALUE),"production"!==c.env.NODE_ENV?e(!h.mustUseAttribute[k]||!h.mustUseProperty[k],"DOMProperty: Cannot require using both attribute and property: %s",k):e(!h.mustUseAttribute[k]||!h.mustUseProperty[k]),"production"!==c.env.NODE_ENV?e(h.mustUseProperty[k]||!h.hasSideEffects[k],"DOMProperty: Properties that have side effects must use property: %s",k):e(h.mustUseProperty[k]||!h.hasSideEffects[k]),"production"!==c.env.NODE_ENV?e(!!h.hasBooleanValue[k]+!!h.hasNumericValue[k]+!!h.hasOverloadedBooleanValue[k]<=1,"DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s",k):e(!!h.hasBooleanValue[k]+!!h.hasNumericValue[k]+!!h.hasOverloadedBooleanValue[k]<=1)}}},g={},h={ID_ATTRIBUTE_NAME:"data-reactid",isStandardName:{},getPossibleStandardName:{},getAttributeName:{},getPropertyName:{},getMutationMethod:{},mustUseAttribute:{},mustUseProperty:{},hasSideEffects:{},hasBooleanValue:{},hasNumericValue:{},hasPositiveNumericValue:{},hasOverloadedBooleanValue:{},_isCustomAttributeFunctions:[],isCustomAttribute:function(a){for(var b=0;b<h._isCustomAttributeFunctions.length;b++){var c=h._isCustomAttributeFunctions[b];if(c(a))return!0}return!1},getDefaultValueForProperty:function(a,b){var c,d=g[a];return d||(g[a]=d={}),b in d||(c=document.createElement(a),d[b]=c[b]),d[b]},injection:f};b.exports=h}).call(this,a("_process"))},{"./invariant":246,_process:90}],118:[function(a,b){(function(c){"use strict";function d(a,b){return null==b||e.hasBooleanValue[a]&&!b||e.hasNumericValue[a]&&isNaN(b)||e.hasPositiveNumericValue[a]&&1>b||e.hasOverloadedBooleanValue[a]&&b===!1}var e=a("./DOMProperty"),f=a("./escapeTextForBrowser"),g=a("./memoizeStringOnly"),h=a("./warning"),i=g(function(a){return f(a)+'="'});if("production"!==c.env.NODE_ENV)var j={children:!0,dangerouslySetInnerHTML:!0,key:!0,ref:!0},k={},l=function(a){if(!(j.hasOwnProperty(a)&&j[a]||k.hasOwnProperty(a)&&k[a])){k[a]=!0;var b=a.toLowerCase(),d=e.isCustomAttribute(b)?b:e.getPossibleStandardName.hasOwnProperty(b)?e.getPossibleStandardName[b]:null;"production"!==c.env.NODE_ENV?h(null==d,"Unknown DOM property "+a+". Did you mean "+d+"?"):null}};var m={createMarkupForID:function(a){return i(e.ID_ATTRIBUTE_NAME)+f(a)+'"'},createMarkupForProperty:function(a,b){if(e.isStandardName.hasOwnProperty(a)&&e.isStandardName[a]){if(d(a,b))return"";var g=e.getAttributeName[a];return e.hasBooleanValue[a]||e.hasOverloadedBooleanValue[a]&&b===!0?f(g):i(g)+f(b)+'"'}return e.isCustomAttribute(a)?null==b?"":i(a)+f(b)+'"':("production"!==c.env.NODE_ENV&&l(a),null)},setValueForProperty:function(a,b,f){if(e.isStandardName.hasOwnProperty(b)&&e.isStandardName[b]){var g=e.getMutationMethod[b];if(g)g(a,f);else if(d(b,f))this.deleteValueForProperty(a,b);else if(e.mustUseAttribute[b])a.setAttribute(e.getAttributeName[b],""+f);else{var h=e.getPropertyName[b];e.hasSideEffects[b]&&""+a[h]==""+f||(a[h]=f)}}else e.isCustomAttribute(b)?null==f?a.removeAttribute(b):a.setAttribute(b,""+f):"production"!==c.env.NODE_ENV&&l(b)},deleteValueForProperty:function(a,b){if(e.isStandardName.hasOwnProperty(b)&&e.isStandardName[b]){var d=e.getMutationMethod[b];if(d)d(a,void 0);else if(e.mustUseAttribute[b])a.removeAttribute(e.getAttributeName[b]);else{var f=e.getPropertyName[b],g=e.getDefaultValueForProperty(a.nodeName,f);e.hasSideEffects[b]&&""+a[f]===g||(a[f]=g)}}else e.isCustomAttribute(b)?a.removeAttribute(b):"production"!==c.env.NODE_ENV&&l(b)}};b.exports=m}).call(this,a("_process"))},{"./DOMProperty":117,"./escapeTextForBrowser":229,"./memoizeStringOnly":255,"./warning":266,_process:90}],119:[function(a,b){(function(c){"use strict";function d(a){return a.substring(1,a.indexOf(" "))}var e=a("./ExecutionEnvironment"),f=a("./createNodesFromMarkup"),g=a("./emptyFunction"),h=a("./getMarkupWrap"),i=a("./invariant"),j=/^(<[^ \/>]+)/,k="data-danger-index",l={dangerouslyRenderMarkup:function(a){"production"!==c.env.NODE_ENV?i(e.canUseDOM,"dangerouslyRenderMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use React.renderToString for server rendering."):i(e.canUseDOM);for(var b,l={},m=0;m<a.length;m++)"production"!==c.env.NODE_ENV?i(a[m],"dangerouslyRenderMarkup(...): Missing markup."):i(a[m]),b=d(a[m]),b=h(b)?b:"*",l[b]=l[b]||[],l[b][m]=a[m];var n=[],o=0;for(b in l)if(l.hasOwnProperty(b)){var p=l[b];for(var q in p)if(p.hasOwnProperty(q)){var r=p[q];p[q]=r.replace(j,"$1 "+k+'="'+q+'" ')}var s=f(p.join(""),g);for(m=0;m<s.length;++m){var t=s[m];t.hasAttribute&&t.hasAttribute(k)?(q=+t.getAttribute(k),t.removeAttribute(k),"production"!==c.env.NODE_ENV?i(!n.hasOwnProperty(q),"Danger: Assigning to an already-occupied result index."):i(!n.hasOwnProperty(q)),n[q]=t,o+=1):"production"!==c.env.NODE_ENV&&console.error("Danger: Discarding unexpected node:",t)}}return"production"!==c.env.NODE_ENV?i(o===n.length,"Danger: Did not assign to every index of resultList."):i(o===n.length),"production"!==c.env.NODE_ENV?i(n.length===a.length,"Danger: Expected markup to render %s nodes, but rendered %s.",a.length,n.length):i(n.length===a.length),n},dangerouslyReplaceNodeWithMarkup:function(a,b){"production"!==c.env.NODE_ENV?i(e.canUseDOM,"dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use React.renderToString for server rendering."):i(e.canUseDOM),"production"!==c.env.NODE_ENV?i(b,"dangerouslyReplaceNodeWithMarkup(...): Missing markup."):i(b),"production"!==c.env.NODE_ENV?i("html"!==a.tagName.toLowerCase(),"dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See renderComponentToString()."):i("html"!==a.tagName.toLowerCase());var d=f(b,g)[0];a.parentNode.replaceChild(d,a)}};b.exports=l}).call(this,a("_process"))},{"./ExecutionEnvironment":128,"./createNodesFromMarkup":223,"./emptyFunction":227,"./getMarkupWrap":238,"./invariant":246,_process:90}],120:[function(a,b){"use strict";var c=a("./keyOf"),d=[c({ResponderEventPlugin:null}),c({SimpleEventPlugin:null}),c({TapEventPlugin:null}),c({EnterLeaveEventPlugin:null}),c({ChangeEventPlugin:null}),c({SelectEventPlugin:null}),c({CompositionEventPlugin:null}),c({BeforeInputEventPlugin:null}),c({AnalyticsEventPlugin:null}),c({MobileSafariClickEventPlugin:null})];b.exports=d},{"./keyOf":253}],121:[function(a,b){"use strict";var c=a("./EventConstants"),d=a("./EventPropagators"),e=a("./SyntheticMouseEvent"),f=a("./ReactMount"),g=a("./keyOf"),h=c.topLevelTypes,i=f.getFirstReactDOM,j={mouseEnter:{registrationName:g({onMouseEnter:null}),dependencies:[h.topMouseOut,h.topMouseOver]},mouseLeave:{registrationName:g({onMouseLeave:null}),dependencies:[h.topMouseOut,h.topMouseOver]}},k=[null,null],l={eventTypes:j,extractEvents:function(a,b,c,g){if(a===h.topMouseOver&&(g.relatedTarget||g.fromElement))return null;if(a!==h.topMouseOut&&a!==h.topMouseOver)return null;var l;if(b.window===b)l=b;else{var m=b.ownerDocument;l=m?m.defaultView||m.parentWindow:window}var n,o;if(a===h.topMouseOut?(n=b,o=i(g.relatedTarget||g.toElement)||l):(n=l,o=b),n===o)return null;var p=n?f.getID(n):"",q=o?f.getID(o):"",r=e.getPooled(j.mouseLeave,p,g);r.type="mouseleave",r.target=n,r.relatedTarget=o;var s=e.getPooled(j.mouseEnter,q,g);return s.type="mouseenter",s.target=o,s.relatedTarget=n,d.accumulateEnterLeaveDispatches(r,s,p,q),k[0]=r,k[1]=s,k}};b.exports=l},{"./EventConstants":122,"./EventPropagators":127,"./ReactMount":175,"./SyntheticMouseEvent":209,"./keyOf":253}],122:[function(a,b){"use strict";var c=a("./keyMirror"),d=c({bubbled:null,captured:null}),e=c({topBlur:null,topChange:null,topClick:null,topCompositionEnd:null,topCompositionStart:null,topCompositionUpdate:null,topContextMenu:null,topCopy:null,topCut:null,topDoubleClick:null,topDrag:null,topDragEnd:null,topDragEnter:null,topDragExit:null,topDragLeave:null,topDragOver:null,topDragStart:null,topDrop:null,topError:null,topFocus:null,topInput:null,topKeyDown:null,topKeyPress:null,topKeyUp:null,topLoad:null,topMouseDown:null,topMouseMove:null,topMouseOut:null,topMouseOver:null,topMouseUp:null,topPaste:null,topReset:null,topScroll:null,topSelectionChange:null,topSubmit:null,topTextInput:null,topTouchCancel:null,topTouchEnd:null,topTouchMove:null,topTouchStart:null,topWheel:null}),f={topLevelTypes:e,PropagationPhases:d};b.exports=f},{"./keyMirror":252}],123:[function(a,b){(function(c){var d=a("./emptyFunction"),e={listen:function(a,b,c){return a.addEventListener?(a.addEventListener(b,c,!1),{remove:function(){a.removeEventListener(b,c,!1)}}):a.attachEvent?(a.attachEvent("on"+b,c),{remove:function(){a.detachEvent("on"+b,c)}}):void 0},capture:function(a,b,e){return a.addEventListener?(a.addEventListener(b,e,!0),{remove:function(){a.removeEventListener(b,e,!0)}}):("production"!==c.env.NODE_ENV&&console.error("Attempted to listen to events during the capture phase on a browser that does not support the capture phase. Your application will not receive some events."),{remove:d})},registerDefault:function(){}};b.exports=e}).call(this,a("_process"))},{"./emptyFunction":227,_process:90}],124:[function(a,b){(function(c){"use strict";function d(){var a=!m||!m.traverseTwoPhase||!m.traverseEnterLeave;if(a)throw new Error("InstanceHandle not injected before use!")}var e=a("./EventPluginRegistry"),f=a("./EventPluginUtils"),g=a("./accumulateInto"),h=a("./forEachAccumulated"),i=a("./invariant"),j={},k=null,l=function(a){if(a){var b=f.executeDispatch,c=e.getPluginModuleForEvent(a);c&&c.executeDispatch&&(b=c.executeDispatch),f.executeDispatchesInOrder(a,b),a.isPersistent()||a.constructor.release(a)}},m=null,n={injection:{injectMount:f.injection.injectMount,injectInstanceHandle:function(a){m=a,"production"!==c.env.NODE_ENV&&d()},getInstanceHandle:function(){return"production"!==c.env.NODE_ENV&&d(),m},injectEventPluginOrder:e.injectEventPluginOrder,injectEventPluginsByName:e.injectEventPluginsByName},eventNameDispatchConfigs:e.eventNameDispatchConfigs,registrationNameModules:e.registrationNameModules,putListener:function(a,b,d){"production"!==c.env.NODE_ENV?i(!d||"function"==typeof d,"Expected %s listener to be a function, instead got type %s",b,typeof d):i(!d||"function"==typeof d);var e=j[b]||(j[b]={});e[a]=d},getListener:function(a,b){var c=j[b];return c&&c[a]},deleteListener:function(a,b){var c=j[b];c&&delete c[a]},deleteAllListeners:function(a){for(var b in j)delete j[b][a]},extractEvents:function(a,b,c,d){for(var f,h=e.plugins,i=0,j=h.length;j>i;i++){var k=h[i];if(k){var l=k.extractEvents(a,b,c,d);l&&(f=g(f,l))}}return f},enqueueEvents:function(a){a&&(k=g(k,a))},processEventQueue:function(){var a=k;k=null,h(a,l),"production"!==c.env.NODE_ENV?i(!k,"processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented."):i(!k)},__purge:function(){j={}},__getListenerBank:function(){return j}};b.exports=n}).call(this,a("_process"))},{"./EventPluginRegistry":125,"./EventPluginUtils":126,"./accumulateInto":215,"./forEachAccumulated":232,"./invariant":246,_process:90}],125:[function(a,b){(function(c){"use strict";function d(){if(h)for(var a in i){var b=i[a],d=h.indexOf(a);if("production"!==c.env.NODE_ENV?g(d>-1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",a):g(d>-1),!j.plugins[d]){"production"!==c.env.NODE_ENV?g(b.extractEvents,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",a):g(b.extractEvents),j.plugins[d]=b;var f=b.eventTypes;for(var k in f)"production"!==c.env.NODE_ENV?g(e(f[k],b,k),"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",k,a):g(e(f[k],b,k))}}}function e(a,b,d){"production"!==c.env.NODE_ENV?g(!j.eventNameDispatchConfigs.hasOwnProperty(d),"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",d):g(!j.eventNameDispatchConfigs.hasOwnProperty(d)),j.eventNameDispatchConfigs[d]=a;var e=a.phasedRegistrationNames;if(e){for(var h in e)if(e.hasOwnProperty(h)){var i=e[h];f(i,b,d)}return!0}return a.registrationName?(f(a.registrationName,b,d),!0):!1}function f(a,b,d){"production"!==c.env.NODE_ENV?g(!j.registrationNameModules[a],"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",a):g(!j.registrationNameModules[a]),j.registrationNameModules[a]=b,j.registrationNameDependencies[a]=b.eventTypes[d].dependencies}var g=a("./invariant"),h=null,i={},j={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},injectEventPluginOrder:function(a){"production"!==c.env.NODE_ENV?g(!h,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):g(!h),h=Array.prototype.slice.call(a),d()},injectEventPluginsByName:function(a){var b=!1;for(var e in a)if(a.hasOwnProperty(e)){var f=a[e];i.hasOwnProperty(e)&&i[e]===f||("production"!==c.env.NODE_ENV?g(!i[e],"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",e):g(!i[e]),i[e]=f,b=!0)}b&&d()},getPluginModuleForEvent:function(a){var b=a.dispatchConfig;if(b.registrationName)return j.registrationNameModules[b.registrationName]||null;for(var c in b.phasedRegistrationNames)if(b.phasedRegistrationNames.hasOwnProperty(c)){var d=j.registrationNameModules[b.phasedRegistrationNames[c]];if(d)return d}return null},_resetEventPlugins:function(){h=null;for(var a in i)i.hasOwnProperty(a)&&delete i[a];j.plugins.length=0;var b=j.eventNameDispatchConfigs;for(var c in b)b.hasOwnProperty(c)&&delete b[c];var d=j.registrationNameModules;for(var e in d)d.hasOwnProperty(e)&&delete d[e]}};b.exports=j}).call(this,a("_process"))},{"./invariant":246,_process:90}],126:[function(a,b){(function(c){"use strict";function d(a){return a===r.topMouseUp||a===r.topTouchEnd||a===r.topTouchCancel}function e(a){return a===r.topMouseMove||a===r.topTouchMove}function f(a){return a===r.topMouseDown||a===r.topTouchStart}function g(a,b){var d=a._dispatchListeners,e=a._dispatchIDs;if("production"!==c.env.NODE_ENV&&n(a),Array.isArray(d))for(var f=0;f<d.length&&!a.isPropagationStopped();f++)b(a,d[f],e[f]);else d&&b(a,d,e)}function h(a,b,c){a.currentTarget=q.Mount.getNode(c);var d=b(a,c);return a.currentTarget=null,d}function i(a,b){g(a,b),a._dispatchListeners=null,a._dispatchIDs=null}function j(a){var b=a._dispatchListeners,d=a._dispatchIDs;if("production"!==c.env.NODE_ENV&&n(a),Array.isArray(b)){for(var e=0;e<b.length&&!a.isPropagationStopped();e++)if(b[e](a,d[e]))return d[e]}else if(b&&b(a,d))return d;return null}function k(a){var b=j(a);return a._dispatchIDs=null,a._dispatchListeners=null,b}function l(a){"production"!==c.env.NODE_ENV&&n(a);var b=a._dispatchListeners,d=a._dispatchIDs;"production"!==c.env.NODE_ENV?p(!Array.isArray(b),"executeDirectDispatch(...): Invalid `event`."):p(!Array.isArray(b));var e=b?b(a,d):null;return a._dispatchListeners=null,a._dispatchIDs=null,e}function m(a){return!!a._dispatchListeners}var n,o=a("./EventConstants"),p=a("./invariant"),q={Mount:null,injectMount:function(a){q.Mount=a,"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?p(a&&a.getNode,"EventPluginUtils.injection.injectMount(...): Injected Mount module is missing getNode."):p(a&&a.getNode))}},r=o.topLevelTypes;"production"!==c.env.NODE_ENV&&(n=function(a){var b=a._dispatchListeners,d=a._dispatchIDs,e=Array.isArray(b),f=Array.isArray(d),g=f?d.length:d?1:0,h=e?b.length:b?1:0;"production"!==c.env.NODE_ENV?p(f===e&&g===h,"EventPluginUtils: Invalid `event`."):p(f===e&&g===h)});var s={isEndish:d,isMoveish:e,isStartish:f,executeDirectDispatch:l,executeDispatch:h,executeDispatchesInOrder:i,executeDispatchesInOrderStopAtTrue:k,hasDispatches:m,injection:q,useTouchEvents:!1};b.exports=s}).call(this,a("_process"))},{"./EventConstants":122,"./invariant":246,_process:90}],127:[function(a,b){(function(c){"use strict";function d(a,b,c){var d=b.dispatchConfig.phasedRegistrationNames[c];return q(a,d)}function e(a,b,e){if("production"!==c.env.NODE_ENV&&!a)throw new Error("Dispatching id must not be null");var f=b?p.bubbled:p.captured,g=d(a,e,f);g&&(e._dispatchListeners=n(e._dispatchListeners,g),e._dispatchIDs=n(e._dispatchIDs,a))}function f(a){a&&a.dispatchConfig.phasedRegistrationNames&&m.injection.getInstanceHandle().traverseTwoPhase(a.dispatchMarker,e,a)}function g(a,b,c){if(c&&c.dispatchConfig.registrationName){var d=c.dispatchConfig.registrationName,e=q(a,d);e&&(c._dispatchListeners=n(c._dispatchListeners,e),c._dispatchIDs=n(c._dispatchIDs,a))}}function h(a){a&&a.dispatchConfig.registrationName&&g(a.dispatchMarker,null,a)}function i(a){o(a,f)}function j(a,b,c,d){m.injection.getInstanceHandle().traverseEnterLeave(c,d,g,a,b)}function k(a){o(a,h)}var l=a("./EventConstants"),m=a("./EventPluginHub"),n=a("./accumulateInto"),o=a("./forEachAccumulated"),p=l.PropagationPhases,q=m.getListener,r={accumulateTwoPhaseDispatches:i,accumulateDirectDispatches:k,accumulateEnterLeaveDispatches:j};b.exports=r}).call(this,a("_process"))},{"./EventConstants":122,"./EventPluginHub":124,"./accumulateInto":215,"./forEachAccumulated":232,_process:90}],128:[function(a,b){"use strict";var c=!("undefined"==typeof window||!window.document||!window.document.createElement),d={canUseDOM:c,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:c&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:c&&!!window.screen,isInWorker:!c};b.exports=d},{}],129:[function(a,b){"use strict";var c,d=a("./DOMProperty"),e=a("./ExecutionEnvironment"),f=d.injection.MUST_USE_ATTRIBUTE,g=d.injection.MUST_USE_PROPERTY,h=d.injection.HAS_BOOLEAN_VALUE,i=d.injection.HAS_SIDE_EFFECTS,j=d.injection.HAS_NUMERIC_VALUE,k=d.injection.HAS_POSITIVE_NUMERIC_VALUE,l=d.injection.HAS_OVERLOADED_BOOLEAN_VALUE;if(e.canUseDOM){var m=document.implementation;c=m&&m.hasFeature&&m.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")}var n={isCustomAttribute:RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/),Properties:{accept:null,acceptCharset:null,accessKey:null,action:null,allowFullScreen:f|h,allowTransparency:f,alt:null,async:h,autoComplete:null,autoPlay:h,cellPadding:null,cellSpacing:null,charSet:f,checked:g|h,classID:f,className:c?f:g,cols:f|k,colSpan:null,content:null,contentEditable:null,contextMenu:f,controls:g|h,coords:null,crossOrigin:null,data:null,dateTime:f,defer:h,dir:null,disabled:f|h,download:l,draggable:null,encType:null,form:f,formAction:f,formEncType:f,formMethod:f,formNoValidate:h,formTarget:f,frameBorder:f,height:f,hidden:f|h,href:null,hrefLang:null,htmlFor:null,httpEquiv:null,icon:null,id:g,label:null,lang:null,list:f,loop:g|h,manifest:f,marginHeight:null,marginWidth:null,max:null,maxLength:f,media:f,mediaGroup:null,method:null,min:null,multiple:g|h,muted:g|h,name:null,noValidate:h,open:null,pattern:null,placeholder:null,poster:null,preload:null,radioGroup:null,readOnly:g|h,rel:null,required:h,role:f,rows:f|k,rowSpan:null,sandbox:null,scope:null,scrolling:null,seamless:f|h,selected:g|h,shape:null,size:f|k,sizes:f,span:k,spellCheck:null,src:null,srcDoc:g,srcSet:f,start:j,step:null,style:null,tabIndex:null,target:null,title:null,type:null,useMap:null,value:g|i,width:f,wmode:f,autoCapitalize:null,autoCorrect:null,itemProp:f,itemScope:f|h,itemType:f,property:null},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{autoCapitalize:"autocapitalize",autoComplete:"autocomplete",autoCorrect:"autocorrect",autoFocus:"autofocus",autoPlay:"autoplay",encType:"enctype",hrefLang:"hreflang",radioGroup:"radiogroup",spellCheck:"spellcheck",srcDoc:"srcdoc",srcSet:"srcset"}};b.exports=n},{"./DOMProperty":117,"./ExecutionEnvironment":128}],130:[function(a,b){"use strict";var c=a("./ReactLink"),d=a("./ReactStateSetters"),e={linkState:function(a){return new c(this.state[a],d.createStateKeySetter(this,a))}};b.exports=e},{"./ReactLink":173,"./ReactStateSetters":190}],131:[function(a,b){(function(c){"use strict";function d(a){"production"!==c.env.NODE_ENV?j(null==a.props.checkedLink||null==a.props.valueLink,"Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don't want to use valueLink and vice versa."):j(null==a.props.checkedLink||null==a.props.valueLink)}function e(a){d(a),"production"!==c.env.NODE_ENV?j(null==a.props.value&&null==a.props.onChange,"Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don't want to use valueLink."):j(null==a.props.value&&null==a.props.onChange)}function f(a){d(a),"production"!==c.env.NODE_ENV?j(null==a.props.checked&&null==a.props.onChange,"Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don't want to use checkedLink"):j(null==a.props.checked&&null==a.props.onChange)}function g(a){this.props.valueLink.requestChange(a.target.value)}function h(a){this.props.checkedLink.requestChange(a.target.checked)}var i=a("./ReactPropTypes"),j=a("./invariant"),k={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0},l={Mixin:{propTypes:{value:function(a,b){return!a[b]||k[a.type]||a.onChange||a.readOnly||a.disabled?void 0:new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(a,b){return!a[b]||a.onChange||a.readOnly||a.disabled?void 0:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")},onChange:i.func}},getValue:function(a){return a.props.valueLink?(e(a),a.props.valueLink.value):a.props.value},getChecked:function(a){return a.props.checkedLink?(f(a),a.props.checkedLink.value):a.props.checked},getOnChange:function(a){return a.props.valueLink?(e(a),g):a.props.checkedLink?(f(a),h):a.props.onChange}};b.exports=l}).call(this,a("_process"))},{"./ReactPropTypes":184,"./invariant":246,_process:90}],132:[function(a,b){(function(c){"use strict";function d(a){a.remove()}var e=a("./ReactBrowserEventEmitter"),f=a("./accumulateInto"),g=a("./forEachAccumulated"),h=a("./invariant"),i={trapBubbledEvent:function(a,b){"production"!==c.env.NODE_ENV?h(this.isMounted(),"Must be mounted to trap events"):h(this.isMounted());var d=e.trapBubbledEvent(a,b,this.getDOMNode());this._localEventListeners=f(this._localEventListeners,d)},componentWillUnmount:function(){this._localEventListeners&&g(this._localEventListeners,d)}};b.exports=i}).call(this,a("_process"))},{"./ReactBrowserEventEmitter":138,"./accumulateInto":215,"./forEachAccumulated":232,"./invariant":246,_process:90}],133:[function(a,b){"use strict";var c=a("./EventConstants"),d=a("./emptyFunction"),e=c.topLevelTypes,f={eventTypes:null,extractEvents:function(a,b,c,f){if(a===e.topTouchStart){var g=f.target;g&&!g.onclick&&(g.onclick=d)}}};b.exports=f},{"./EventConstants":122,"./emptyFunction":227}],134:[function(a,b){function c(a){if(null==a)throw new TypeError("Object.assign target cannot be null or undefined");for(var b=Object(a),c=Object.prototype.hasOwnProperty,d=1;d<arguments.length;d++){var e=arguments[d];if(null!=e){var f=Object(e);for(var g in f)c.call(f,g)&&(b[g]=f[g])}}return b}b.exports=c},{}],135:[function(a,b){(function(c){"use strict";var d=a("./invariant"),e=function(a){var b=this;if(b.instancePool.length){var c=b.instancePool.pop();return b.call(c,a),c}return new b(a)},f=function(a,b){var c=this;if(c.instancePool.length){var d=c.instancePool.pop();return c.call(d,a,b),d}return new c(a,b)},g=function(a,b,c){var d=this;if(d.instancePool.length){var e=d.instancePool.pop();return d.call(e,a,b,c),e}return new d(a,b,c)},h=function(a,b,c,d,e){var f=this;if(f.instancePool.length){var g=f.instancePool.pop();return f.call(g,a,b,c,d,e),g}return new f(a,b,c,d,e)},i=function(a){var b=this;"production"!==c.env.NODE_ENV?d(a instanceof b,"Trying to release an instance into a pool of a different type."):d(a instanceof b),a.destructor&&a.destructor(),b.instancePool.length<b.poolSize&&b.instancePool.push(a)},j=10,k=e,l=function(a,b){var c=a;return c.instancePool=[],c.getPooled=b||k,c.poolSize||(c.poolSize=j),c.release=i,c},m={addPoolingTo:l,oneArgumentPooler:e,twoArgumentPooler:f,threeArgumentPooler:g,fiveArgumentPooler:h};b.exports=m}).call(this,a("_process"))},{"./invariant":246,_process:90}],136:[function(a,b){(function(c){"use strict";var d=a("./DOMPropertyOperations"),e=a("./EventPluginUtils"),f=a("./ReactChildren"),g=a("./ReactComponent"),h=a("./ReactCompositeComponent"),i=a("./ReactContext"),j=a("./ReactCurrentOwner"),k=a("./ReactElement"),l=a("./ReactElementValidator"),m=a("./ReactDOM"),n=a("./ReactDOMComponent"),o=a("./ReactDefaultInjection"),p=a("./ReactInstanceHandles"),q=a("./ReactLegacyElement"),r=a("./ReactMount"),s=a("./ReactMultiChild"),t=a("./ReactPerf"),u=a("./ReactPropTypes"),v=a("./ReactServerRendering"),w=a("./ReactTextComponent"),x=a("./Object.assign"),y=a("./deprecated"),z=a("./onlyChild");o.inject();var A=k.createElement,B=k.createFactory;"production"!==c.env.NODE_ENV&&(A=l.createElement,B=l.createFactory),A=q.wrapCreateElement(A),B=q.wrapCreateFactory(B);var C=t.measure("React","render",r.render),D={Children:{map:f.map,forEach:f.forEach,count:f.count,only:z},DOM:m,PropTypes:u,initializeTouchEvents:function(a){e.useTouchEvents=a},createClass:h.createClass,createElement:A,createFactory:B,constructAndRenderComponent:r.constructAndRenderComponent,constructAndRenderComponentByID:r.constructAndRenderComponentByID,render:C,renderToString:v.renderToString,renderToStaticMarkup:v.renderToStaticMarkup,unmountComponentAtNode:r.unmountComponentAtNode,isValidClass:q.isValidClass,isValidElement:k.isValidElement,withContext:i.withContext,__spread:x,renderComponent:y("React","renderComponent","render",this,C),renderComponentToString:y("React","renderComponentToString","renderToString",this,v.renderToString),renderComponentToStaticMarkup:y("React","renderComponentToStaticMarkup","renderToStaticMarkup",this,v.renderToStaticMarkup),isValidComponent:y("React","isValidComponent","isValidElement",this,k.isValidElement)};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject&&__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({Component:g,CurrentOwner:j,DOMComponent:n,DOMPropertyOperations:d,InstanceHandles:p,Mount:r,MultiChild:s,TextComponent:w}),"production"!==c.env.NODE_ENV){var E=a("./ExecutionEnvironment");
-if(E.canUseDOM&&window.top===window.self){navigator.userAgent.indexOf("Chrome")>-1&&"undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&console.debug("Download the React DevTools for a better development experience: http://fb.me/react-devtools");for(var F=[Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.split,String.prototype.trim,Object.create,Object.freeze],G=0;G<F.length;G++)if(!F[G]){console.error("One or more ES5 shim/shams expected by React are not available: http://fb.me/react-warning-polyfills");break}}}D.version="0.12.2",b.exports=D}).call(this,a("_process"))},{"./DOMPropertyOperations":118,"./EventPluginUtils":126,"./ExecutionEnvironment":128,"./Object.assign":134,"./ReactChildren":141,"./ReactComponent":142,"./ReactCompositeComponent":145,"./ReactContext":146,"./ReactCurrentOwner":147,"./ReactDOM":148,"./ReactDOMComponent":150,"./ReactDefaultInjection":160,"./ReactElement":163,"./ReactElementValidator":164,"./ReactInstanceHandles":171,"./ReactLegacyElement":172,"./ReactMount":175,"./ReactMultiChild":176,"./ReactPerf":180,"./ReactPropTypes":184,"./ReactServerRendering":188,"./ReactTextComponent":192,"./deprecated":226,"./onlyChild":257,_process:90}],137:[function(a,b){(function(c){"use strict";var d=a("./ReactEmptyComponent"),e=a("./ReactMount"),f=a("./invariant"),g={getDOMNode:function(){return"production"!==c.env.NODE_ENV?f(this.isMounted(),"getDOMNode(): A component must be mounted to have a DOM node."):f(this.isMounted()),d.isNullComponentID(this._rootNodeID)?null:e.getNode(this._rootNodeID)}};b.exports=g}).call(this,a("_process"))},{"./ReactEmptyComponent":165,"./ReactMount":175,"./invariant":246,_process:90}],138:[function(a,b){"use strict";function c(a){return Object.prototype.hasOwnProperty.call(a,o)||(a[o]=m++,k[a[o]]={}),k[a[o]]}var d=a("./EventConstants"),e=a("./EventPluginHub"),f=a("./EventPluginRegistry"),g=a("./ReactEventEmitterMixin"),h=a("./ViewportMetrics"),i=a("./Object.assign"),j=a("./isEventSupported"),k={},l=!1,m=0,n={topBlur:"blur",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topScroll:"scroll",topSelectionChange:"selectionchange",topTextInput:"textInput",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topWheel:"wheel"},o="_reactListenersID"+String(Math.random()).slice(2),p=i({},g,{ReactEventListener:null,injection:{injectReactEventListener:function(a){a.setHandleTopLevel(p.handleTopLevel),p.ReactEventListener=a}},setEnabled:function(a){p.ReactEventListener&&p.ReactEventListener.setEnabled(a)},isEnabled:function(){return!(!p.ReactEventListener||!p.ReactEventListener.isEnabled())},listenTo:function(a,b){for(var e=b,g=c(e),h=f.registrationNameDependencies[a],i=d.topLevelTypes,k=0,l=h.length;l>k;k++){var m=h[k];g.hasOwnProperty(m)&&g[m]||(m===i.topWheel?j("wheel")?p.ReactEventListener.trapBubbledEvent(i.topWheel,"wheel",e):j("mousewheel")?p.ReactEventListener.trapBubbledEvent(i.topWheel,"mousewheel",e):p.ReactEventListener.trapBubbledEvent(i.topWheel,"DOMMouseScroll",e):m===i.topScroll?j("scroll",!0)?p.ReactEventListener.trapCapturedEvent(i.topScroll,"scroll",e):p.ReactEventListener.trapBubbledEvent(i.topScroll,"scroll",p.ReactEventListener.WINDOW_HANDLE):m===i.topFocus||m===i.topBlur?(j("focus",!0)?(p.ReactEventListener.trapCapturedEvent(i.topFocus,"focus",e),p.ReactEventListener.trapCapturedEvent(i.topBlur,"blur",e)):j("focusin")&&(p.ReactEventListener.trapBubbledEvent(i.topFocus,"focusin",e),p.ReactEventListener.trapBubbledEvent(i.topBlur,"focusout",e)),g[i.topBlur]=!0,g[i.topFocus]=!0):n.hasOwnProperty(m)&&p.ReactEventListener.trapBubbledEvent(m,n[m],e),g[m]=!0)}},trapBubbledEvent:function(a,b,c){return p.ReactEventListener.trapBubbledEvent(a,b,c)},trapCapturedEvent:function(a,b,c){return p.ReactEventListener.trapCapturedEvent(a,b,c)},ensureScrollValueMonitoring:function(){if(!l){var a=h.refreshScrollValues;p.ReactEventListener.monitorScrollValue(a),l=!0}},eventNameDispatchConfigs:e.eventNameDispatchConfigs,registrationNameModules:e.registrationNameModules,putListener:e.putListener,getListener:e.getListener,deleteListener:e.deleteListener,deleteAllListeners:e.deleteAllListeners});b.exports=p},{"./EventConstants":122,"./EventPluginHub":124,"./EventPluginRegistry":125,"./Object.assign":134,"./ReactEventEmitterMixin":167,"./ViewportMetrics":214,"./isEventSupported":247}],139:[function(a,b){"use strict";var c=a("./React"),d=a("./Object.assign"),e=c.createFactory(a("./ReactTransitionGroup")),f=c.createFactory(a("./ReactCSSTransitionGroupChild")),g=c.createClass({displayName:"ReactCSSTransitionGroup",propTypes:{transitionName:c.PropTypes.string.isRequired,transitionEnter:c.PropTypes.bool,transitionLeave:c.PropTypes.bool},getDefaultProps:function(){return{transitionEnter:!0,transitionLeave:!0}},_wrapChild:function(a){return f({name:this.props.transitionName,enter:this.props.transitionEnter,leave:this.props.transitionLeave},a)},render:function(){return e(d({},this.props,{childFactory:this._wrapChild}))}});b.exports=g},{"./Object.assign":134,"./React":136,"./ReactCSSTransitionGroupChild":140,"./ReactTransitionGroup":195}],140:[function(a,b){(function(c){"use strict";var d=a("./React"),e=a("./CSSCore"),f=a("./ReactTransitionEvents"),g=a("./onlyChild"),h=17,i=5e3,j=null;"production"!==c.env.NODE_ENV&&(j=function(){console.warn("transition(): tried to perform an animation without an animationend or transitionend event after timeout ("+i+"ms). You should either disable this transition in JS or add a CSS animation/transition.")});var k=d.createClass({displayName:"ReactCSSTransitionGroupChild",transition:function(a,b){var d=this.getDOMNode(),g=this.props.name+"-"+a,h=g+"-active",k=null,l=function(a){a&&a.target!==d||("production"!==c.env.NODE_ENV&&clearTimeout(k),e.removeClass(d,g),e.removeClass(d,h),f.removeEndEventListener(d,l),b&&b())};f.addEndEventListener(d,l),e.addClass(d,g),this.queueClass(h),"production"!==c.env.NODE_ENV&&(k=setTimeout(j,i))},queueClass:function(a){this.classNameQueue.push(a),this.timeout||(this.timeout=setTimeout(this.flushClassNameQueue,h))},flushClassNameQueue:function(){this.isMounted()&&this.classNameQueue.forEach(e.addClass.bind(e,this.getDOMNode())),this.classNameQueue.length=0,this.timeout=null},componentWillMount:function(){this.classNameQueue=[]},componentWillUnmount:function(){this.timeout&&clearTimeout(this.timeout)},componentWillEnter:function(a){this.props.enter?this.transition("enter",a):a()},componentWillLeave:function(a){this.props.leave?this.transition("leave",a):a()},render:function(){return g(this.props.children)}});b.exports=k}).call(this,a("_process"))},{"./CSSCore":109,"./React":136,"./ReactTransitionEvents":194,"./onlyChild":257,_process:90}],141:[function(a,b){(function(c){"use strict";function d(a,b){this.forEachFunction=a,this.forEachContext=b}function e(a,b,c,d){var e=a;e.forEachFunction.call(e.forEachContext,b,d)}function f(a,b,c){if(null==a)return a;var f=d.getPooled(b,c);m(a,e,f),d.release(f)}function g(a,b,c){this.mapResult=a,this.mapFunction=b,this.mapContext=c}function h(a,b,d,e){var f=a,g=f.mapResult,h=!g.hasOwnProperty(d);if("production"!==c.env.NODE_ENV?n(h,"ReactChildren.map(...): Encountered two children with the same key, `%s`. Child keys must be unique; when two children share a key, only the first child will be used.",d):null,h){var i=f.mapFunction.call(f.mapContext,b,e);g[d]=i}}function i(a,b,c){if(null==a)return a;var d={},e=g.getPooled(d,b,c);return m(a,h,e),g.release(e),d}function j(){return null}function k(a){return m(a,j,null)}var l=a("./PooledClass"),m=a("./traverseAllChildren"),n=a("./warning"),o=l.twoArgumentPooler,p=l.threeArgumentPooler;l.addPoolingTo(d,o),l.addPoolingTo(g,p);var q={forEach:f,map:i,count:k};b.exports=q}).call(this,a("_process"))},{"./PooledClass":135,"./traverseAllChildren":264,"./warning":266,_process:90}],142:[function(a,b){(function(c){"use strict";var d=a("./ReactElement"),e=a("./ReactOwner"),f=a("./ReactUpdates"),g=a("./Object.assign"),h=a("./invariant"),i=a("./keyMirror"),j=i({MOUNTED:null,UNMOUNTED:null}),k=!1,l=null,m=null,n={injection:{injectEnvironment:function(a){"production"!==c.env.NODE_ENV?h(!k,"ReactComponent: injectEnvironment() can only be called once."):h(!k),m=a.mountImageIntoNode,l=a.unmountIDFromEnvironment,n.BackendIDOperations=a.BackendIDOperations,k=!0}},LifeCycle:j,BackendIDOperations:null,Mixin:{isMounted:function(){return this._lifeCycleState===j.MOUNTED},setProps:function(a,b){var c=this._pendingElement||this._currentElement;this.replaceProps(g({},c.props,a),b)},replaceProps:function(a,b){"production"!==c.env.NODE_ENV?h(this.isMounted(),"replaceProps(...): Can only update a mounted component."):h(this.isMounted()),"production"!==c.env.NODE_ENV?h(0===this._mountDepth,"replaceProps(...): You called `setProps` or `replaceProps` on a component with a parent. This is an anti-pattern since props will get reactively updated when rendered. Instead, change the owner's `render` method to pass the correct value as props to the component where it is created."):h(0===this._mountDepth),this._pendingElement=d.cloneAndReplaceProps(this._pendingElement||this._currentElement,a),f.enqueueUpdate(this,b)},_setPropsInternal:function(a,b){var c=this._pendingElement||this._currentElement;this._pendingElement=d.cloneAndReplaceProps(c,g({},c.props,a)),f.enqueueUpdate(this,b)},construct:function(a){this.props=a.props,this._owner=a._owner,this._lifeCycleState=j.UNMOUNTED,this._pendingCallbacks=null,this._currentElement=a,this._pendingElement=null},mountComponent:function(a,b,d){"production"!==c.env.NODE_ENV?h(!this.isMounted(),"mountComponent(%s, ...): Can only mount an unmounted component. Make sure to avoid storing components between renders or reusing a single component instance in multiple places.",a):h(!this.isMounted());var f=this._currentElement.ref;if(null!=f){var g=this._currentElement._owner;e.addComponentAsRefTo(this,f,g)}this._rootNodeID=a,this._lifeCycleState=j.MOUNTED,this._mountDepth=d},unmountComponent:function(){"production"!==c.env.NODE_ENV?h(this.isMounted(),"unmountComponent(): Can only unmount a mounted component."):h(this.isMounted());var a=this._currentElement.ref;null!=a&&e.removeComponentAsRefFrom(this,a,this._owner),l(this._rootNodeID),this._rootNodeID=null,this._lifeCycleState=j.UNMOUNTED},receiveComponent:function(a,b){"production"!==c.env.NODE_ENV?h(this.isMounted(),"receiveComponent(...): Can only update a mounted component."):h(this.isMounted()),this._pendingElement=a,this.performUpdateIfNecessary(b)},performUpdateIfNecessary:function(a){if(null!=this._pendingElement){var b=this._currentElement,c=this._pendingElement;this._currentElement=c,this.props=c.props,this._owner=c._owner,this._pendingElement=null,this.updateComponent(a,b)}},updateComponent:function(a,b){var c=this._currentElement;(c._owner!==b._owner||c.ref!==b.ref)&&(null!=b.ref&&e.removeComponentAsRefFrom(this,b.ref,b._owner),null!=c.ref&&e.addComponentAsRefTo(this,c.ref,c._owner))},mountComponentIntoNode:function(a,b,c){var d=f.ReactReconcileTransaction.getPooled();d.perform(this._mountComponentIntoNode,this,a,b,d,c),f.ReactReconcileTransaction.release(d)},_mountComponentIntoNode:function(a,b,c,d){var e=this.mountComponent(a,c,0);m(e,b,d)},isOwnedBy:function(a){return this._owner===a},getSiblingByRef:function(a){var b=this._owner;return b&&b.refs?b.refs[a]:null}}};b.exports=n}).call(this,a("_process"))},{"./Object.assign":134,"./ReactElement":163,"./ReactOwner":179,"./ReactUpdates":196,"./invariant":246,"./keyMirror":252,_process:90}],143:[function(a,b){(function(c){"use strict";var d=a("./ReactDOMIDOperations"),e=a("./ReactMarkupChecksum"),f=a("./ReactMount"),g=a("./ReactPerf"),h=a("./ReactReconcileTransaction"),i=a("./getReactRootElementInContainer"),j=a("./invariant"),k=a("./setInnerHTML"),l=1,m=9,n={ReactReconcileTransaction:h,BackendIDOperations:d,unmountIDFromEnvironment:function(a){f.purgeID(a)},mountImageIntoNode:g.measure("ReactComponentBrowserEnvironment","mountImageIntoNode",function(a,b,d){if("production"!==c.env.NODE_ENV?j(b&&(b.nodeType===l||b.nodeType===m),"mountComponentIntoNode(...): Target container is not valid."):j(b&&(b.nodeType===l||b.nodeType===m)),d){if(e.canReuseMarkup(a,i(b)))return;"production"!==c.env.NODE_ENV?j(b.nodeType!==m,"You're trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side."):j(b.nodeType!==m),"production"!==c.env.NODE_ENV&&console.warn("React attempted to use reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server.")}"production"!==c.env.NODE_ENV?j(b.nodeType!==m,"You're trying to render a component to the document but you didn't use server rendering. We can't do this without using server rendering due to cross-browser quirks. See renderComponentToString() for server rendering."):j(b.nodeType!==m),k(b,a)})};b.exports=n}).call(this,a("_process"))},{"./ReactDOMIDOperations":152,"./ReactMarkupChecksum":174,"./ReactMount":175,"./ReactPerf":180,"./ReactReconcileTransaction":186,"./getReactRootElementInContainer":240,"./invariant":246,"./setInnerHTML":260,_process:90}],144:[function(a,b){"use strict";var c=a("./shallowEqual"),d={shouldComponentUpdate:function(a,b){return!c(this.props,a)||!c(this.state,b)}};b.exports=d},{"./shallowEqual":261}],145:[function(a,b){(function(c){"use strict";function d(a){var b=a._owner||null;return b&&b.constructor&&b.constructor.displayName?" Check the render method of `"+b.constructor.displayName+"`.":""}function e(a,b,d){for(var e in b)b.hasOwnProperty(e)&&("production"!==c.env.NODE_ENV?C("function"==typeof b[e],"%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.",a.displayName||"ReactCompositeComponent",y[d],e):C("function"==typeof b[e]))}function f(a,b){var d=M.hasOwnProperty(b)?M[b]:null;P.hasOwnProperty(b)&&("production"!==c.env.NODE_ENV?C(d===K.OVERRIDE_BASE,"ReactCompositeComponentInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",b):C(d===K.OVERRIDE_BASE)),a.hasOwnProperty(b)&&("production"!==c.env.NODE_ENV?C(d===K.DEFINE_MANY||d===K.DEFINE_MANY_MERGED,"ReactCompositeComponentInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",b):C(d===K.DEFINE_MANY||d===K.DEFINE_MANY_MERGED))}function g(a){var b=a._compositeLifeCycleState;"production"!==c.env.NODE_ENV?C(a.isMounted()||b===O.MOUNTING,"replaceState(...): Can only update a mounted or mounting component."):C(a.isMounted()||b===O.MOUNTING),"production"!==c.env.NODE_ENV?C(null==o.current,"replaceState(...): Cannot update during an existing state transition (such as within `render`). Render methods should be a pure function of props and state."):C(null==o.current),"production"!==c.env.NODE_ENV?C(b!==O.UNMOUNTING,"replaceState(...): Cannot update while unmounting component. This usually means you called setState() on an unmounted component."):C(b!==O.UNMOUNTING)}function h(a,b){if(b){"production"!==c.env.NODE_ENV?C(!t.isValidFactory(b),"ReactCompositeComponent: You're attempting to use a component class as a mixin. Instead, just use a regular object."):C(!t.isValidFactory(b)),"production"!==c.env.NODE_ENV?C(!p.isValidElement(b),"ReactCompositeComponent: You're attempting to use a component as a mixin. Instead, just use a regular object."):C(!p.isValidElement(b));var d=a.prototype;b.hasOwnProperty(J)&&N.mixins(a,b.mixins);for(var e in b)if(b.hasOwnProperty(e)&&e!==J){var g=b[e];if(f(d,e),N.hasOwnProperty(e))N[e](a,g);else{var h=M.hasOwnProperty(e),i=d.hasOwnProperty(e),j=g&&g.__reactDontBind,m="function"==typeof g,n=m&&!h&&!i&&!j;if(n)d.__reactAutoBindMap||(d.__reactAutoBindMap={}),d.__reactAutoBindMap[e]=g,d[e]=g;else if(i){var o=M[e];"production"!==c.env.NODE_ENV?C(h&&(o===K.DEFINE_MANY_MERGED||o===K.DEFINE_MANY),"ReactCompositeComponent: Unexpected spec policy %s for key %s when mixing in component specs.",o,e):C(h&&(o===K.DEFINE_MANY_MERGED||o===K.DEFINE_MANY)),o===K.DEFINE_MANY_MERGED?d[e]=k(d[e],g):o===K.DEFINE_MANY&&(d[e]=l(d[e],g))}else d[e]=g,"production"!==c.env.NODE_ENV&&"function"==typeof g&&b.displayName&&(d[e].displayName=b.displayName+"_"+e)}}}}function i(a,b){if(b)for(var d in b){var e=b[d];if(b.hasOwnProperty(d)){var f=d in N;"production"!==c.env.NODE_ENV?C(!f,'ReactCompositeComponent: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',d):C(!f);var g=d in a;"production"!==c.env.NODE_ENV?C(!g,"ReactCompositeComponent: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",d):C(!g),a[d]=e}}}function j(a,b){return"production"!==c.env.NODE_ENV?C(a&&b&&"object"==typeof a&&"object"==typeof b,"mergeObjectsWithNoDuplicateKeys(): Cannot merge non-objects"):C(a&&b&&"object"==typeof a&&"object"==typeof b),G(b,function(b,d){"production"!==c.env.NODE_ENV?C(void 0===a[d],"mergeObjectsWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",d):C(void 0===a[d]),a[d]=b}),a}function k(a,b){return function(){var c=a.apply(this,arguments),d=b.apply(this,arguments);return null==c?d:null==d?c:j(c,d)}}function l(a,b){return function(){a.apply(this,arguments),b.apply(this,arguments)}}var m=a("./ReactComponent"),n=a("./ReactContext"),o=a("./ReactCurrentOwner"),p=a("./ReactElement"),q=a("./ReactElementValidator"),r=a("./ReactEmptyComponent"),s=a("./ReactErrorUtils"),t=a("./ReactLegacyElement"),u=a("./ReactOwner"),v=a("./ReactPerf"),w=a("./ReactPropTransferer"),x=a("./ReactPropTypeLocations"),y=a("./ReactPropTypeLocationNames"),z=a("./ReactUpdates"),A=a("./Object.assign"),B=a("./instantiateReactComponent"),C=a("./invariant"),D=a("./keyMirror"),E=a("./keyOf"),F=a("./monitorCodeUse"),G=a("./mapObject"),H=a("./shouldUpdateReactComponent"),I=a("./warning"),J=E({mixins:null}),K=D({DEFINE_ONCE:null,DEFINE_MANY:null,OVERRIDE_BASE:null,DEFINE_MANY_MERGED:null}),L=[],M={mixins:K.DEFINE_MANY,statics:K.DEFINE_MANY,propTypes:K.DEFINE_MANY,contextTypes:K.DEFINE_MANY,childContextTypes:K.DEFINE_MANY,getDefaultProps:K.DEFINE_MANY_MERGED,getInitialState:K.DEFINE_MANY_MERGED,getChildContext:K.DEFINE_MANY_MERGED,render:K.DEFINE_ONCE,componentWillMount:K.DEFINE_MANY,componentDidMount:K.DEFINE_MANY,componentWillReceiveProps:K.DEFINE_MANY,shouldComponentUpdate:K.DEFINE_ONCE,componentWillUpdate:K.DEFINE_MANY,componentDidUpdate:K.DEFINE_MANY,componentWillUnmount:K.DEFINE_MANY,updateComponent:K.OVERRIDE_BASE},N={displayName:function(a,b){a.displayName=b},mixins:function(a,b){if(b)for(var c=0;c<b.length;c++)h(a,b[c])},childContextTypes:function(a,b){e(a,b,x.childContext),a.childContextTypes=A({},a.childContextTypes,b)},contextTypes:function(a,b){e(a,b,x.context),a.contextTypes=A({},a.contextTypes,b)},getDefaultProps:function(a,b){a.getDefaultProps=a.getDefaultProps?k(a.getDefaultProps,b):b},propTypes:function(a,b){e(a,b,x.prop),a.propTypes=A({},a.propTypes,b)},statics:function(a,b){i(a,b)}},O=D({MOUNTING:null,UNMOUNTING:null,RECEIVING_PROPS:null}),P={construct:function(){m.Mixin.construct.apply(this,arguments),u.Mixin.construct.apply(this,arguments),this.state=null,this._pendingState=null,this.context=null,this._compositeLifeCycleState=null},isMounted:function(){return m.Mixin.isMounted.call(this)&&this._compositeLifeCycleState!==O.MOUNTING},mountComponent:v.measure("ReactCompositeComponent","mountComponent",function(a,b,d){m.Mixin.mountComponent.call(this,a,b,d),this._compositeLifeCycleState=O.MOUNTING,this.__reactAutoBindMap&&this._bindAutoBindMethods(),this.context=this._processContext(this._currentElement._context),this.props=this._processProps(this.props),this.state=this.getInitialState?this.getInitialState():null,"production"!==c.env.NODE_ENV?C("object"==typeof this.state&&!Array.isArray(this.state),"%s.getInitialState(): must return an object or null",this.constructor.displayName||"ReactCompositeComponent"):C("object"==typeof this.state&&!Array.isArray(this.state)),this._pendingState=null,this._pendingForceUpdate=!1,this.componentWillMount&&(this.componentWillMount(),this._pendingState&&(this.state=this._pendingState,this._pendingState=null)),this._renderedComponent=B(this._renderValidatedComponent(),this._currentElement.type),this._compositeLifeCycleState=null;var e=this._renderedComponent.mountComponent(a,b,d+1);return this.componentDidMount&&b.getReactMountReady().enqueue(this.componentDidMount,this),e}),unmountComponent:function(){this._compositeLifeCycleState=O.UNMOUNTING,this.componentWillUnmount&&this.componentWillUnmount(),this._compositeLifeCycleState=null,this._renderedComponent.unmountComponent(),this._renderedComponent=null,m.Mixin.unmountComponent.call(this)},setState:function(a,b){"production"!==c.env.NODE_ENV?C("object"==typeof a||null==a,"setState(...): takes an object of state variables to update."):C("object"==typeof a||null==a),"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?I(null!=a,"setState(...): You passed an undefined or null state object; instead, use forceUpdate()."):null),this.replaceState(A({},this._pendingState||this.state,a),b)},replaceState:function(a,b){g(this),this._pendingState=a,this._compositeLifeCycleState!==O.MOUNTING&&z.enqueueUpdate(this,b)},_processContext:function(a){var b=null,d=this.constructor.contextTypes;if(d){b={};for(var e in d)b[e]=a[e];"production"!==c.env.NODE_ENV&&this._checkPropTypes(d,b,x.context)}return b},_processChildContext:function(a){var b=this.getChildContext&&this.getChildContext(),d=this.constructor.displayName||"ReactCompositeComponent";if(b){"production"!==c.env.NODE_ENV?C("object"==typeof this.constructor.childContextTypes,"%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().",d):C("object"==typeof this.constructor.childContextTypes),"production"!==c.env.NODE_ENV&&this._checkPropTypes(this.constructor.childContextTypes,b,x.childContext);for(var e in b)"production"!==c.env.NODE_ENV?C(e in this.constructor.childContextTypes,'%s.getChildContext(): key "%s" is not defined in childContextTypes.',d,e):C(e in this.constructor.childContextTypes);return A({},a,b)}return a},_processProps:function(a){if("production"!==c.env.NODE_ENV){var b=this.constructor.propTypes;b&&this._checkPropTypes(b,a,x.prop)}return a},_checkPropTypes:function(a,b,e){var f=this.constructor.displayName;for(var g in a)if(a.hasOwnProperty(g)){var h=a[g](b,g,f,e);if(h instanceof Error){var i=d(this);"production"!==c.env.NODE_ENV?I(!1,h.message+i):null}}},performUpdateIfNecessary:function(a){var b=this._compositeLifeCycleState;if(b!==O.MOUNTING&&b!==O.RECEIVING_PROPS&&(null!=this._pendingElement||null!=this._pendingState||this._pendingForceUpdate)){var d=this.context,e=this.props,f=this._currentElement;null!=this._pendingElement&&(f=this._pendingElement,d=this._processContext(f._context),e=this._processProps(f.props),this._pendingElement=null,this._compositeLifeCycleState=O.RECEIVING_PROPS,this.componentWillReceiveProps&&this.componentWillReceiveProps(e,d)),this._compositeLifeCycleState=null;var g=this._pendingState||this.state;this._pendingState=null;var h=this._pendingForceUpdate||!this.shouldComponentUpdate||this.shouldComponentUpdate(e,g,d);"production"!==c.env.NODE_ENV&&"undefined"==typeof h&&console.warn((this.constructor.displayName||"ReactCompositeComponent")+".shouldComponentUpdate(): Returned undefined instead of a boolean value. Make sure to return true or false."),h?(this._pendingForceUpdate=!1,this._performComponentUpdate(f,e,g,d,a)):(this._currentElement=f,this.props=e,this.state=g,this.context=d,this._owner=f._owner)}},_performComponentUpdate:function(a,b,c,d,e){var f=this._currentElement,g=this.props,h=this.state,i=this.context;this.componentWillUpdate&&this.componentWillUpdate(b,c,d),this._currentElement=a,this.props=b,this.state=c,this.context=d,this._owner=a._owner,this.updateComponent(e,f),this.componentDidUpdate&&e.getReactMountReady().enqueue(this.componentDidUpdate.bind(this,g,h,i),this)},receiveComponent:function(a,b){(a!==this._currentElement||null==a._owner)&&m.Mixin.receiveComponent.call(this,a,b)},updateComponent:v.measure("ReactCompositeComponent","updateComponent",function(a,b){m.Mixin.updateComponent.call(this,a,b);var c=this._renderedComponent,d=c._currentElement,e=this._renderValidatedComponent();if(H(d,e))c.receiveComponent(e,a);else{var f=this._rootNodeID,g=c._rootNodeID;c.unmountComponent(),this._renderedComponent=B(e,this._currentElement.type);var h=this._renderedComponent.mountComponent(f,a,this._mountDepth+1);m.BackendIDOperations.dangerouslyReplaceNodeWithMarkupByID(g,h)}}),forceUpdate:function(a){var b=this._compositeLifeCycleState;"production"!==c.env.NODE_ENV?C(this.isMounted()||b===O.MOUNTING,"forceUpdate(...): Can only force an update on mounted or mounting components."):C(this.isMounted()||b===O.MOUNTING),"production"!==c.env.NODE_ENV?C(b!==O.UNMOUNTING&&null==o.current,"forceUpdate(...): Cannot force an update while unmounting component or within a `render` function."):C(b!==O.UNMOUNTING&&null==o.current),this._pendingForceUpdate=!0,z.enqueueUpdate(this,a)},_renderValidatedComponent:v.measure("ReactCompositeComponent","_renderValidatedComponent",function(){var a,b=n.current;n.current=this._processChildContext(this._currentElement._context),o.current=this;try{a=this.render(),null===a||a===!1?(a=r.getEmptyComponent(),r.registerNullComponentID(this._rootNodeID)):r.deregisterNullComponentID(this._rootNodeID)}finally{n.current=b,o.current=null}return"production"!==c.env.NODE_ENV?C(p.isValidElement(a),"%s.render(): A valid ReactComponent must be returned. You may have returned undefined, an array or some other invalid object.",this.constructor.displayName||"ReactCompositeComponent"):C(p.isValidElement(a)),a}),_bindAutoBindMethods:function(){for(var a in this.__reactAutoBindMap)if(this.__reactAutoBindMap.hasOwnProperty(a)){var b=this.__reactAutoBindMap[a];this[a]=this._bindAutoBindMethod(s.guard(b,this.constructor.displayName+"."+a))}},_bindAutoBindMethod:function(a){var b=this,d=a.bind(b);if("production"!==c.env.NODE_ENV){d.__reactBoundContext=b,d.__reactBoundMethod=a,d.__reactBoundArguments=null;var e=b.constructor.displayName,f=d.bind;d.bind=function(c){for(var g=[],h=1,i=arguments.length;i>h;h++)g.push(arguments[h]);if(c!==b&&null!==c)F("react_bind_warning",{component:e}),console.warn("bind(): React component methods may only be bound to the component instance. See "+e);else if(!g.length)return F("react_bind_warning",{component:e}),console.warn("bind(): You are binding a component method to the component. React does this for you automatically in a high-performance way, so you can safely remove this call. See "+e),d;var j=f.apply(d,arguments);return j.__reactBoundContext=b,j.__reactBoundMethod=a,j.__reactBoundArguments=g,j}}return d}},Q=function(){};A(Q.prototype,m.Mixin,u.Mixin,w.Mixin,P);var R={LifeCycle:O,Base:Q,createClass:function(a){var b=function(){};b.prototype=new Q,b.prototype.constructor=b,L.forEach(h.bind(null,b)),h(b,a),b.getDefaultProps&&(b.defaultProps=b.getDefaultProps()),"production"!==c.env.NODE_ENV?C(b.prototype.render,"createClass(...): Class specification must implement a `render` method."):C(b.prototype.render),"production"!==c.env.NODE_ENV&&b.prototype.componentShouldUpdate&&(F("react_component_should_update_warning",{component:a.displayName}),console.warn((a.displayName||"A component")+" has a method called componentShouldUpdate(). Did you mean shouldComponentUpdate()? The name is phrased as a question because the function is expected to return a value."));for(var d in M)b.prototype[d]||(b.prototype[d]=null);return t.wrapFactory("production"!==c.env.NODE_ENV?q.createFactory(b):p.createFactory(b))},injection:{injectMixin:function(a){L.push(a)}}};b.exports=R}).call(this,a("_process"))},{"./Object.assign":134,"./ReactComponent":142,"./ReactContext":146,"./ReactCurrentOwner":147,"./ReactElement":163,"./ReactElementValidator":164,"./ReactEmptyComponent":165,"./ReactErrorUtils":166,"./ReactLegacyElement":172,"./ReactOwner":179,"./ReactPerf":180,"./ReactPropTransferer":181,"./ReactPropTypeLocationNames":182,"./ReactPropTypeLocations":183,"./ReactUpdates":196,"./instantiateReactComponent":245,"./invariant":246,"./keyMirror":252,"./keyOf":253,"./mapObject":254,"./monitorCodeUse":256,"./shouldUpdateReactComponent":262,"./warning":266,_process:90}],146:[function(a,b){"use strict";var c=a("./Object.assign"),d={current:{},withContext:function(a,b){var e,f=d.current;d.current=c({},f,a);try{e=b()}finally{d.current=f}return e}};b.exports=d},{"./Object.assign":134}],147:[function(a,b){"use strict";var c={current:null};b.exports=c},{}],148:[function(a,b){(function(c){"use strict";function d(a){return g.markNonLegacyFactory("production"!==c.env.NODE_ENV?f.createFactory(a):e.createFactory(a))}var e=a("./ReactElement"),f=a("./ReactElementValidator"),g=a("./ReactLegacyElement"),h=a("./mapObject"),i=h({a:"a",abbr:"abbr",address:"address",area:"area",article:"article",aside:"aside",audio:"audio",b:"b",base:"base",bdi:"bdi",bdo:"bdo",big:"big",blockquote:"blockquote",body:"body",br:"br",button:"button",canvas:"canvas",caption:"caption",cite:"cite",code:"code",col:"col",colgroup:"colgroup",data:"data",datalist:"datalist",dd:"dd",del:"del",details:"details",dfn:"dfn",dialog:"dialog",div:"div",dl:"dl",dt:"dt",em:"em",embed:"embed",fieldset:"fieldset",figcaption:"figcaption",figure:"figure",footer:"footer",form:"form",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",head:"head",header:"header",hr:"hr",html:"html",i:"i",iframe:"iframe",img:"img",input:"input",ins:"ins",kbd:"kbd",keygen:"keygen",label:"label",legend:"legend",li:"li",link:"link",main:"main",map:"map",mark:"mark",menu:"menu",menuitem:"menuitem",meta:"meta",meter:"meter",nav:"nav",noscript:"noscript",object:"object",ol:"ol",optgroup:"optgroup",option:"option",output:"output",p:"p",param:"param",picture:"picture",pre:"pre",progress:"progress",q:"q",rp:"rp",rt:"rt",ruby:"ruby",s:"s",samp:"samp",script:"script",section:"section",select:"select",small:"small",source:"source",span:"span",strong:"strong",style:"style",sub:"sub",summary:"summary",sup:"sup",table:"table",tbody:"tbody",td:"td",textarea:"textarea",tfoot:"tfoot",th:"th",thead:"thead",time:"time",title:"title",tr:"tr",track:"track",u:"u",ul:"ul","var":"var",video:"video",wbr:"wbr",circle:"circle",defs:"defs",ellipse:"ellipse",g:"g",line:"line",linearGradient:"linearGradient",mask:"mask",path:"path",pattern:"pattern",polygon:"polygon",polyline:"polyline",radialGradient:"radialGradient",rect:"rect",stop:"stop",svg:"svg",text:"text",tspan:"tspan"},d);
-b.exports=i}).call(this,a("_process"))},{"./ReactElement":163,"./ReactElementValidator":164,"./ReactLegacyElement":172,"./mapObject":254,_process:90}],149:[function(a,b){"use strict";var c=a("./AutoFocusMixin"),d=a("./ReactBrowserComponentMixin"),e=a("./ReactCompositeComponent"),f=a("./ReactElement"),g=a("./ReactDOM"),h=a("./keyMirror"),i=f.createFactory(g.button.type),j=h({onClick:!0,onDoubleClick:!0,onMouseDown:!0,onMouseMove:!0,onMouseUp:!0,onClickCapture:!0,onDoubleClickCapture:!0,onMouseDownCapture:!0,onMouseMoveCapture:!0,onMouseUpCapture:!0}),k=e.createClass({displayName:"ReactDOMButton",mixins:[c,d],render:function(){var a={};for(var b in this.props)!this.props.hasOwnProperty(b)||this.props.disabled&&j[b]||(a[b]=this.props[b]);return i(a,this.props.children)}});b.exports=k},{"./AutoFocusMixin":107,"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163,"./keyMirror":252}],150:[function(a,b){(function(c){"use strict";function d(a){a&&("production"!==c.env.NODE_ENV?s(null==a.children||null==a.dangerouslySetInnerHTML,"Can only set one of `children` or `props.dangerouslySetInnerHTML`."):s(null==a.children||null==a.dangerouslySetInnerHTML),"production"!==c.env.NODE_ENV&&a.contentEditable&&null!=a.children&&console.warn("A component is `contentEditable` and contains `children` managed by React. It is now your responsibility to guarantee that none of those nodes are unexpectedly modified or duplicated. This is probably not intentional."),"production"!==c.env.NODE_ENV?s(null==a.style||"object"==typeof a.style,"The `style` prop expects a mapping from style properties to values, not a string."):s(null==a.style||"object"==typeof a.style))}function e(a,b,d,e){"production"!==c.env.NODE_ENV&&("onScroll"!==b||t("scroll",!0)||(v("react_no_scroll_event"),console.warn("This browser doesn't support the `onScroll` event")));var f=n.findReactContainerForID(a);if(f){var g=f.nodeType===B?f.ownerDocument:f;x(b,g)}e.getPutListenerQueue().enqueuePutListener(a,b,d)}function f(a){F.call(E,a)||("production"!==c.env.NODE_ENV?s(D.test(a),"Invalid tag: %s",a):s(D.test(a)),E[a]=!0)}function g(a){f(a),this._tag=a,this.tagName=a.toUpperCase()}var h=a("./CSSPropertyOperations"),i=a("./DOMProperty"),j=a("./DOMPropertyOperations"),k=a("./ReactBrowserComponentMixin"),l=a("./ReactComponent"),m=a("./ReactBrowserEventEmitter"),n=a("./ReactMount"),o=a("./ReactMultiChild"),p=a("./ReactPerf"),q=a("./Object.assign"),r=a("./escapeTextForBrowser"),s=a("./invariant"),t=a("./isEventSupported"),u=a("./keyOf"),v=a("./monitorCodeUse"),w=m.deleteListener,x=m.listenTo,y=m.registrationNameModules,z={string:!0,number:!0},A=u({style:null}),B=1,C={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},D=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,E={},F={}.hasOwnProperty;g.displayName="ReactDOMComponent",g.Mixin={mountComponent:p.measure("ReactDOMComponent","mountComponent",function(a,b,c){l.Mixin.mountComponent.call(this,a,b,c),d(this.props);var e=C[this._tag]?"":"</"+this._tag+">";return this._createOpenTagMarkupAndPutListeners(b)+this._createContentMarkup(b)+e}),_createOpenTagMarkupAndPutListeners:function(a){var b=this.props,c="<"+this._tag;for(var d in b)if(b.hasOwnProperty(d)){var f=b[d];if(null!=f)if(y.hasOwnProperty(d))e(this._rootNodeID,d,f,a);else{d===A&&(f&&(f=b.style=q({},b.style)),f=h.createMarkupForStyles(f));var g=j.createMarkupForProperty(d,f);g&&(c+=" "+g)}}if(a.renderToStaticMarkup)return c+">";var i=j.createMarkupForID(this._rootNodeID);return c+" "+i+">"},_createContentMarkup:function(a){var b=this.props.dangerouslySetInnerHTML;if(null!=b){if(null!=b.__html)return b.__html}else{var c=z[typeof this.props.children]?this.props.children:null,d=null!=c?null:this.props.children;if(null!=c)return r(c);if(null!=d){var e=this.mountChildren(d,a);return e.join("")}}return""},receiveComponent:function(a,b){(a!==this._currentElement||null==a._owner)&&l.Mixin.receiveComponent.call(this,a,b)},updateComponent:p.measure("ReactDOMComponent","updateComponent",function(a,b){d(this._currentElement.props),l.Mixin.updateComponent.call(this,a,b),this._updateDOMProperties(b.props,a),this._updateDOMChildren(b.props,a)}),_updateDOMProperties:function(a,b){var c,d,f,g=this.props;for(c in a)if(!g.hasOwnProperty(c)&&a.hasOwnProperty(c))if(c===A){var h=a[c];for(d in h)h.hasOwnProperty(d)&&(f=f||{},f[d]="")}else y.hasOwnProperty(c)?w(this._rootNodeID,c):(i.isStandardName[c]||i.isCustomAttribute(c))&&l.BackendIDOperations.deletePropertyByID(this._rootNodeID,c);for(c in g){var j=g[c],k=a[c];if(g.hasOwnProperty(c)&&j!==k)if(c===A)if(j&&(j=g.style=q({},j)),k){for(d in k)!k.hasOwnProperty(d)||j&&j.hasOwnProperty(d)||(f=f||{},f[d]="");for(d in j)j.hasOwnProperty(d)&&k[d]!==j[d]&&(f=f||{},f[d]=j[d])}else f=j;else y.hasOwnProperty(c)?e(this._rootNodeID,c,j,b):(i.isStandardName[c]||i.isCustomAttribute(c))&&l.BackendIDOperations.updatePropertyByID(this._rootNodeID,c,j)}f&&l.BackendIDOperations.updateStylesByID(this._rootNodeID,f)},_updateDOMChildren:function(a,b){var c=this.props,d=z[typeof a.children]?a.children:null,e=z[typeof c.children]?c.children:null,f=a.dangerouslySetInnerHTML&&a.dangerouslySetInnerHTML.__html,g=c.dangerouslySetInnerHTML&&c.dangerouslySetInnerHTML.__html,h=null!=d?null:a.children,i=null!=e?null:c.children,j=null!=d||null!=f,k=null!=e||null!=g;null!=h&&null==i?this.updateChildren(null,b):j&&!k&&this.updateTextContent(""),null!=e?d!==e&&this.updateTextContent(""+e):null!=g?f!==g&&l.BackendIDOperations.updateInnerHTMLByID(this._rootNodeID,g):null!=i&&this.updateChildren(i,b)},unmountComponent:function(){this.unmountChildren(),m.deleteAllListeners(this._rootNodeID),l.Mixin.unmountComponent.call(this)}},q(g.prototype,l.Mixin,g.Mixin,o.Mixin,k),b.exports=g}).call(this,a("_process"))},{"./CSSPropertyOperations":111,"./DOMProperty":117,"./DOMPropertyOperations":118,"./Object.assign":134,"./ReactBrowserComponentMixin":137,"./ReactBrowserEventEmitter":138,"./ReactComponent":142,"./ReactMount":175,"./ReactMultiChild":176,"./ReactPerf":180,"./escapeTextForBrowser":229,"./invariant":246,"./isEventSupported":247,"./keyOf":253,"./monitorCodeUse":256,_process:90}],151:[function(a,b){"use strict";var c=a("./EventConstants"),d=a("./LocalEventTrapMixin"),e=a("./ReactBrowserComponentMixin"),f=a("./ReactCompositeComponent"),g=a("./ReactElement"),h=a("./ReactDOM"),i=g.createFactory(h.form.type),j=f.createClass({displayName:"ReactDOMForm",mixins:[e,d],render:function(){return i(this.props)},componentDidMount:function(){this.trapBubbledEvent(c.topLevelTypes.topReset,"reset"),this.trapBubbledEvent(c.topLevelTypes.topSubmit,"submit")}});b.exports=j},{"./EventConstants":122,"./LocalEventTrapMixin":132,"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163}],152:[function(a,b){(function(c){"use strict";var d=a("./CSSPropertyOperations"),e=a("./DOMChildrenOperations"),f=a("./DOMPropertyOperations"),g=a("./ReactMount"),h=a("./ReactPerf"),i=a("./invariant"),j=a("./setInnerHTML"),k={dangerouslySetInnerHTML:"`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.",style:"`style` must be set using `updateStylesByID()`."},l={updatePropertyByID:h.measure("ReactDOMIDOperations","updatePropertyByID",function(a,b,d){var e=g.getNode(a);"production"!==c.env.NODE_ENV?i(!k.hasOwnProperty(b),"updatePropertyByID(...): %s",k[b]):i(!k.hasOwnProperty(b)),null!=d?f.setValueForProperty(e,b,d):f.deleteValueForProperty(e,b)}),deletePropertyByID:h.measure("ReactDOMIDOperations","deletePropertyByID",function(a,b,d){var e=g.getNode(a);"production"!==c.env.NODE_ENV?i(!k.hasOwnProperty(b),"updatePropertyByID(...): %s",k[b]):i(!k.hasOwnProperty(b)),f.deleteValueForProperty(e,b,d)}),updateStylesByID:h.measure("ReactDOMIDOperations","updateStylesByID",function(a,b){var c=g.getNode(a);d.setValueForStyles(c,b)}),updateInnerHTMLByID:h.measure("ReactDOMIDOperations","updateInnerHTMLByID",function(a,b){var c=g.getNode(a);j(c,b)}),updateTextContentByID:h.measure("ReactDOMIDOperations","updateTextContentByID",function(a,b){var c=g.getNode(a);e.updateTextContent(c,b)}),dangerouslyReplaceNodeWithMarkupByID:h.measure("ReactDOMIDOperations","dangerouslyReplaceNodeWithMarkupByID",function(a,b){var c=g.getNode(a);e.dangerouslyReplaceNodeWithMarkup(c,b)}),dangerouslyProcessChildrenUpdates:h.measure("ReactDOMIDOperations","dangerouslyProcessChildrenUpdates",function(a,b){for(var c=0;c<a.length;c++)a[c].parentNode=g.getNode(a[c].parentID);e.processUpdates(a,b)})};b.exports=l}).call(this,a("_process"))},{"./CSSPropertyOperations":111,"./DOMChildrenOperations":116,"./DOMPropertyOperations":118,"./ReactMount":175,"./ReactPerf":180,"./invariant":246,"./setInnerHTML":260,_process:90}],153:[function(a,b){"use strict";var c=a("./EventConstants"),d=a("./LocalEventTrapMixin"),e=a("./ReactBrowserComponentMixin"),f=a("./ReactCompositeComponent"),g=a("./ReactElement"),h=a("./ReactDOM"),i=g.createFactory(h.img.type),j=f.createClass({displayName:"ReactDOMImg",tagName:"IMG",mixins:[e,d],render:function(){return i(this.props)},componentDidMount:function(){this.trapBubbledEvent(c.topLevelTypes.topLoad,"load"),this.trapBubbledEvent(c.topLevelTypes.topError,"error")}});b.exports=j},{"./EventConstants":122,"./LocalEventTrapMixin":132,"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163}],154:[function(a,b){(function(c){"use strict";function d(){this.isMounted()&&this.forceUpdate()}var e=a("./AutoFocusMixin"),f=a("./DOMPropertyOperations"),g=a("./LinkedValueUtils"),h=a("./ReactBrowserComponentMixin"),i=a("./ReactCompositeComponent"),j=a("./ReactElement"),k=a("./ReactDOM"),l=a("./ReactMount"),m=a("./ReactUpdates"),n=a("./Object.assign"),o=a("./invariant"),p=j.createFactory(k.input.type),q={},r=i.createClass({displayName:"ReactDOMInput",mixins:[e,g.Mixin,h],getInitialState:function(){var a=this.props.defaultValue;return{initialChecked:this.props.defaultChecked||!1,initialValue:null!=a?a:null}},render:function(){var a=n({},this.props);a.defaultChecked=null,a.defaultValue=null;var b=g.getValue(this);a.value=null!=b?b:this.state.initialValue;var c=g.getChecked(this);return a.checked=null!=c?c:this.state.initialChecked,a.onChange=this._handleChange,p(a,this.props.children)},componentDidMount:function(){var a=l.getID(this.getDOMNode());q[a]=this},componentWillUnmount:function(){var a=this.getDOMNode(),b=l.getID(a);delete q[b]},componentDidUpdate:function(){var a=this.getDOMNode();null!=this.props.checked&&f.setValueForProperty(a,"checked",this.props.checked||!1);var b=g.getValue(this);null!=b&&f.setValueForProperty(a,"value",""+b)},_handleChange:function(a){var b,e=g.getOnChange(this);e&&(b=e.call(this,a)),m.asap(d,this);var f=this.props.name;if("radio"===this.props.type&&null!=f){for(var h=this.getDOMNode(),i=h;i.parentNode;)i=i.parentNode;for(var j=i.querySelectorAll("input[name="+JSON.stringify(""+f)+'][type="radio"]'),k=0,n=j.length;n>k;k++){var p=j[k];if(p!==h&&p.form===h.form){var r=l.getID(p);"production"!==c.env.NODE_ENV?o(r,"ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported."):o(r);var s=q[r];"production"!==c.env.NODE_ENV?o(s,"ReactDOMInput: Unknown radio button ID %s.",r):o(s),m.asap(d,s)}}}return b}});b.exports=r}).call(this,a("_process"))},{"./AutoFocusMixin":107,"./DOMPropertyOperations":118,"./LinkedValueUtils":131,"./Object.assign":134,"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163,"./ReactMount":175,"./ReactUpdates":196,"./invariant":246,_process:90}],155:[function(a,b){(function(c){"use strict";var d=a("./ReactBrowserComponentMixin"),e=a("./ReactCompositeComponent"),f=a("./ReactElement"),g=a("./ReactDOM"),h=a("./warning"),i=f.createFactory(g.option.type),j=e.createClass({displayName:"ReactDOMOption",mixins:[d],componentWillMount:function(){"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?h(null==this.props.selected,"Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>."):null)},render:function(){return i(this.props,this.props.children)}});b.exports=j}).call(this,a("_process"))},{"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163,"./warning":266,_process:90}],156:[function(a,b){"use strict";function c(){this.isMounted()&&(this.setState({value:this._pendingValue}),this._pendingValue=0)}function d(a,b){if(null!=a[b])if(a.multiple){if(!Array.isArray(a[b]))return new Error("The `"+b+"` prop supplied to <select> must be an array if `multiple` is true.")}else if(Array.isArray(a[b]))return new Error("The `"+b+"` prop supplied to <select> must be a scalar value if `multiple` is false.")}function e(a,b){var c,d,e,f=a.props.multiple,g=null!=b?b:a.state.value,h=a.getDOMNode().options;if(f)for(c={},d=0,e=g.length;e>d;++d)c[""+g[d]]=!0;else c=""+g;for(d=0,e=h.length;e>d;d++){var i=f?c.hasOwnProperty(h[d].value):h[d].value===c;i!==h[d].selected&&(h[d].selected=i)}}var f=a("./AutoFocusMixin"),g=a("./LinkedValueUtils"),h=a("./ReactBrowserComponentMixin"),i=a("./ReactCompositeComponent"),j=a("./ReactElement"),k=a("./ReactDOM"),l=a("./ReactUpdates"),m=a("./Object.assign"),n=j.createFactory(k.select.type),o=i.createClass({displayName:"ReactDOMSelect",mixins:[f,g.Mixin,h],propTypes:{defaultValue:d,value:d},getInitialState:function(){return{value:this.props.defaultValue||(this.props.multiple?[]:"")}},componentWillMount:function(){this._pendingValue=null},componentWillReceiveProps:function(a){!this.props.multiple&&a.multiple?this.setState({value:[this.state.value]}):this.props.multiple&&!a.multiple&&this.setState({value:this.state.value[0]})},render:function(){var a=m({},this.props);return a.onChange=this._handleChange,a.value=null,n(a,this.props.children)},componentDidMount:function(){e(this,g.getValue(this))},componentDidUpdate:function(a){var b=g.getValue(this),c=!!a.multiple,d=!!this.props.multiple;(null!=b||c!==d)&&e(this,b)},_handleChange:function(a){var b,d=g.getOnChange(this);d&&(b=d.call(this,a));var e;if(this.props.multiple){e=[];for(var f=a.target.options,h=0,i=f.length;i>h;h++)f[h].selected&&e.push(f[h].value)}else e=a.target.value;return this._pendingValue=e,l.asap(c,this),b}});b.exports=o},{"./AutoFocusMixin":107,"./LinkedValueUtils":131,"./Object.assign":134,"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163,"./ReactUpdates":196}],157:[function(a,b){"use strict";function c(a,b,c,d){return a===c&&b===d}function d(a){var b=document.selection,c=b.createRange(),d=c.text.length,e=c.duplicate();e.moveToElementText(a),e.setEndPoint("EndToStart",c);var f=e.text.length,g=f+d;return{start:f,end:g}}function e(a){var b=window.getSelection&&window.getSelection();if(!b||0===b.rangeCount)return null;var d=b.anchorNode,e=b.anchorOffset,f=b.focusNode,g=b.focusOffset,h=b.getRangeAt(0),i=c(b.anchorNode,b.anchorOffset,b.focusNode,b.focusOffset),j=i?0:h.toString().length,k=h.cloneRange();k.selectNodeContents(a),k.setEnd(h.startContainer,h.startOffset);var l=c(k.startContainer,k.startOffset,k.endContainer,k.endOffset),m=l?0:k.toString().length,n=m+j,o=document.createRange();o.setStart(d,e),o.setEnd(f,g);var p=o.collapsed;return{start:p?n:m,end:p?m:n}}function f(a,b){var c,d,e=document.selection.createRange().duplicate();"undefined"==typeof b.end?(c=b.start,d=c):b.start>b.end?(c=b.end,d=b.start):(c=b.start,d=b.end),e.moveToElementText(a),e.moveStart("character",c),e.setEndPoint("EndToStart",e),e.moveEnd("character",d-c),e.select()}function g(a,b){if(window.getSelection){var c=window.getSelection(),d=a[j()].length,e=Math.min(b.start,d),f="undefined"==typeof b.end?e:Math.min(b.end,d);if(!c.extend&&e>f){var g=f;f=e,e=g}var h=i(a,e),k=i(a,f);if(h&&k){var l=document.createRange();l.setStart(h.node,h.offset),c.removeAllRanges(),e>f?(c.addRange(l),c.extend(k.node,k.offset)):(l.setEnd(k.node,k.offset),c.addRange(l))}}}var h=a("./ExecutionEnvironment"),i=a("./getNodeForCharacterOffset"),j=a("./getTextContentAccessor"),k=h.canUseDOM&&document.selection,l={getOffsets:k?d:e,setOffsets:k?f:g};b.exports=l},{"./ExecutionEnvironment":128,"./getNodeForCharacterOffset":239,"./getTextContentAccessor":241}],158:[function(a,b){(function(c){"use strict";function d(){this.isMounted()&&this.forceUpdate()}var e=a("./AutoFocusMixin"),f=a("./DOMPropertyOperations"),g=a("./LinkedValueUtils"),h=a("./ReactBrowserComponentMixin"),i=a("./ReactCompositeComponent"),j=a("./ReactElement"),k=a("./ReactDOM"),l=a("./ReactUpdates"),m=a("./Object.assign"),n=a("./invariant"),o=a("./warning"),p=j.createFactory(k.textarea.type),q=i.createClass({displayName:"ReactDOMTextarea",mixins:[e,g.Mixin,h],getInitialState:function(){var a=this.props.defaultValue,b=this.props.children;null!=b&&("production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?o(!1,"Use the `defaultValue` or `value` props instead of setting children on <textarea>."):null),"production"!==c.env.NODE_ENV?n(null==a,"If you supply `defaultValue` on a <textarea>, do not pass children."):n(null==a),Array.isArray(b)&&("production"!==c.env.NODE_ENV?n(b.length<=1,"<textarea> can only have at most one child."):n(b.length<=1),b=b[0]),a=""+b),null==a&&(a="");var d=g.getValue(this);return{initialValue:""+(null!=d?d:a)}},render:function(){var a=m({},this.props);return"production"!==c.env.NODE_ENV?n(null==a.dangerouslySetInnerHTML,"`dangerouslySetInnerHTML` does not make sense on <textarea>."):n(null==a.dangerouslySetInnerHTML),a.defaultValue=null,a.value=null,a.onChange=this._handleChange,p(a,this.state.initialValue)},componentDidUpdate:function(){var a=g.getValue(this);if(null!=a){var b=this.getDOMNode();f.setValueForProperty(b,"value",""+a)}},_handleChange:function(a){var b,c=g.getOnChange(this);return c&&(b=c.call(this,a)),l.asap(d,this),b}});b.exports=q}).call(this,a("_process"))},{"./AutoFocusMixin":107,"./DOMPropertyOperations":118,"./LinkedValueUtils":131,"./Object.assign":134,"./ReactBrowserComponentMixin":137,"./ReactCompositeComponent":145,"./ReactDOM":148,"./ReactElement":163,"./ReactUpdates":196,"./invariant":246,"./warning":266,_process:90}],159:[function(a,b){"use strict";function c(){this.reinitializeTransaction()}var d=a("./ReactUpdates"),e=a("./Transaction"),f=a("./Object.assign"),g=a("./emptyFunction"),h={initialize:g,close:function(){l.isBatchingUpdates=!1}},i={initialize:g,close:d.flushBatchedUpdates.bind(d)},j=[i,h];f(c.prototype,e.Mixin,{getTransactionWrappers:function(){return j}});var k=new c,l={isBatchingUpdates:!1,batchedUpdates:function(a,b,c){var d=l.isBatchingUpdates;l.isBatchingUpdates=!0,d?a(b,c):k.perform(a,null,b,c)}};b.exports=l},{"./Object.assign":134,"./ReactUpdates":196,"./Transaction":213,"./emptyFunction":227}],160:[function(a,b){(function(c){"use strict";function d(){if(z.EventEmitter.injectReactEventListener(y),z.EventPluginHub.injectEventPluginOrder(i),z.EventPluginHub.injectInstanceHandle(A),z.EventPluginHub.injectMount(B),z.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:E,EnterLeaveEventPlugin:j,ChangeEventPlugin:f,CompositionEventPlugin:h,MobileSafariClickEventPlugin:m,SelectEventPlugin:C,BeforeInputEventPlugin:e}),z.NativeComponent.injectGenericComponentClass(q),z.NativeComponent.injectComponentClasses({button:r,form:s,img:t,input:u,option:v,select:w,textarea:x,html:G("html"),head:G("head"),body:G("body")}),z.CompositeComponent.injectMixin(n),z.DOMProperty.injectDOMPropertyConfig(l),z.DOMProperty.injectDOMPropertyConfig(F),z.EmptyComponent.injectEmptyComponent("noscript"),z.Updates.injectReconcileTransaction(o.ReactReconcileTransaction),z.Updates.injectBatchingStrategy(p),z.RootIndex.injectCreateReactRootIndex(k.canUseDOM?g.createReactRootIndex:D.createReactRootIndex),z.Component.injectEnvironment(o),"production"!==c.env.NODE_ENV){var b=k.canUseDOM&&window.location.href||"";if(/[?&]react_perf\b/.test(b)){var d=a("./ReactDefaultPerf");d.start()}}}var e=a("./BeforeInputEventPlugin"),f=a("./ChangeEventPlugin"),g=a("./ClientReactRootIndex"),h=a("./CompositionEventPlugin"),i=a("./DefaultEventPluginOrder"),j=a("./EnterLeaveEventPlugin"),k=a("./ExecutionEnvironment"),l=a("./HTMLDOMPropertyConfig"),m=a("./MobileSafariClickEventPlugin"),n=a("./ReactBrowserComponentMixin"),o=a("./ReactComponentBrowserEnvironment"),p=a("./ReactDefaultBatchingStrategy"),q=a("./ReactDOMComponent"),r=a("./ReactDOMButton"),s=a("./ReactDOMForm"),t=a("./ReactDOMImg"),u=a("./ReactDOMInput"),v=a("./ReactDOMOption"),w=a("./ReactDOMSelect"),x=a("./ReactDOMTextarea"),y=a("./ReactEventListener"),z=a("./ReactInjection"),A=a("./ReactInstanceHandles"),B=a("./ReactMount"),C=a("./SelectEventPlugin"),D=a("./ServerReactRootIndex"),E=a("./SimpleEventPlugin"),F=a("./SVGDOMPropertyConfig"),G=a("./createFullPageComponent");b.exports={inject:d}}).call(this,a("_process"))},{"./BeforeInputEventPlugin":108,"./ChangeEventPlugin":113,"./ClientReactRootIndex":114,"./CompositionEventPlugin":115,"./DefaultEventPluginOrder":120,"./EnterLeaveEventPlugin":121,"./ExecutionEnvironment":128,"./HTMLDOMPropertyConfig":129,"./MobileSafariClickEventPlugin":133,"./ReactBrowserComponentMixin":137,"./ReactComponentBrowserEnvironment":143,"./ReactDOMButton":149,"./ReactDOMComponent":150,"./ReactDOMForm":151,"./ReactDOMImg":153,"./ReactDOMInput":154,"./ReactDOMOption":155,"./ReactDOMSelect":156,"./ReactDOMTextarea":158,"./ReactDefaultBatchingStrategy":159,"./ReactDefaultPerf":161,"./ReactEventListener":168,"./ReactInjection":169,"./ReactInstanceHandles":171,"./ReactMount":175,"./SVGDOMPropertyConfig":198,"./SelectEventPlugin":199,"./ServerReactRootIndex":200,"./SimpleEventPlugin":201,"./createFullPageComponent":222,_process:90}],161:[function(a,b){"use strict";function c(a){return Math.floor(100*a)/100}function d(a,b,c){a[b]=(a[b]||0)+c}var e=a("./DOMProperty"),f=a("./ReactDefaultPerfAnalysis"),g=a("./ReactMount"),h=a("./ReactPerf"),i=a("./performanceNow"),j={_allMeasurements:[],_mountStack:[0],_injected:!1,start:function(){j._injected||h.injection.injectMeasure(j.measure),j._allMeasurements.length=0,h.enableMeasure=!0},stop:function(){h.enableMeasure=!1},getLastMeasurements:function(){return j._allMeasurements},printExclusive:function(a){a=a||j._allMeasurements;var b=f.getExclusiveSummary(a);console.table(b.map(function(a){return{"Component class name":a.componentName,"Total inclusive time (ms)":c(a.inclusive),"Exclusive mount time (ms)":c(a.exclusive),"Exclusive render time (ms)":c(a.render),"Mount time per instance (ms)":c(a.exclusive/a.count),"Render time per instance (ms)":c(a.render/a.count),Instances:a.count}}))},printInclusive:function(a){a=a||j._allMeasurements;var b=f.getInclusiveSummary(a);console.table(b.map(function(a){return{"Owner > component":a.componentName,"Inclusive time (ms)":c(a.time),Instances:a.count}})),console.log("Total time:",f.getTotalTime(a).toFixed(2)+" ms")},getMeasurementsSummaryMap:function(a){var b=f.getInclusiveSummary(a,!0);return b.map(function(a){return{"Owner > component":a.componentName,"Wasted time (ms)":a.time,Instances:a.count}})},printWasted:function(a){a=a||j._allMeasurements,console.table(j.getMeasurementsSummaryMap(a)),console.log("Total time:",f.getTotalTime(a).toFixed(2)+" ms")},printDOM:function(a){a=a||j._allMeasurements;var b=f.getDOMSummary(a);console.table(b.map(function(a){var b={};return b[e.ID_ATTRIBUTE_NAME]=a.id,b.type=a.type,b.args=JSON.stringify(a.args),b})),console.log("Total time:",f.getTotalTime(a).toFixed(2)+" ms")},_recordWrite:function(a,b,c,d){var e=j._allMeasurements[j._allMeasurements.length-1].writes;e[a]=e[a]||[],e[a].push({type:b,time:c,args:d})},measure:function(a,b,c){return function(){for(var e=[],f=0,h=arguments.length;h>f;f++)e.push(arguments[f]);var k,l,m;if("_renderNewRootComponent"===b||"flushBatchedUpdates"===b)return j._allMeasurements.push({exclusive:{},inclusive:{},render:{},counts:{},writes:{},displayNames:{},totalTime:0}),m=i(),l=c.apply(this,e),j._allMeasurements[j._allMeasurements.length-1].totalTime=i()-m,l;if("ReactDOMIDOperations"===a||"ReactComponentBrowserEnvironment"===a){if(m=i(),l=c.apply(this,e),k=i()-m,"mountImageIntoNode"===b){var n=g.getID(e[1]);j._recordWrite(n,b,k,e[0])}else"dangerouslyProcessChildrenUpdates"===b?e[0].forEach(function(a){var b={};null!==a.fromIndex&&(b.fromIndex=a.fromIndex),null!==a.toIndex&&(b.toIndex=a.toIndex),null!==a.textContent&&(b.textContent=a.textContent),null!==a.markupIndex&&(b.markup=e[1][a.markupIndex]),j._recordWrite(a.parentID,a.type,k,b)}):j._recordWrite(e[0],b,k,Array.prototype.slice.call(e,1));return l}if("ReactCompositeComponent"!==a||"mountComponent"!==b&&"updateComponent"!==b&&"_renderValidatedComponent"!==b)return c.apply(this,e);var o="mountComponent"===b?e[0]:this._rootNodeID,p="_renderValidatedComponent"===b,q="mountComponent"===b,r=j._mountStack,s=j._allMeasurements[j._allMeasurements.length-1];if(p?d(s.counts,o,1):q&&r.push(0),m=i(),l=c.apply(this,e),k=i()-m,p)d(s.render,o,k);else if(q){var t=r.pop();r[r.length-1]+=k,d(s.exclusive,o,k-t),d(s.inclusive,o,k)}else d(s.inclusive,o,k);return s.displayNames[o]={current:this.constructor.displayName,owner:this._owner?this._owner.constructor.displayName:"<root>"},l}}};b.exports=j},{"./DOMProperty":117,"./ReactDefaultPerfAnalysis":162,"./ReactMount":175,"./ReactPerf":180,"./performanceNow":259}],162:[function(a,b){function c(a){for(var b=0,c=0;c<a.length;c++){var d=a[c];b+=d.totalTime}return b}function d(a){for(var b=[],c=0;c<a.length;c++){var d,e=a[c];for(d in e.writes)e.writes[d].forEach(function(a){b.push({id:d,type:j[a.type]||a.type,args:a.args})})}return b}function e(a){for(var b,c={},d=0;d<a.length;d++){var e=a[d],f=h({},e.exclusive,e.inclusive);for(var g in f)b=e.displayNames[g].current,c[b]=c[b]||{componentName:b,inclusive:0,exclusive:0,render:0,count:0},e.render[g]&&(c[b].render+=e.render[g]),e.exclusive[g]&&(c[b].exclusive+=e.exclusive[g]),e.inclusive[g]&&(c[b].inclusive+=e.inclusive[g]),e.counts[g]&&(c[b].count+=e.counts[g])}var j=[];for(b in c)c[b].exclusive>=i&&j.push(c[b]);return j.sort(function(a,b){return b.exclusive-a.exclusive}),j}function f(a,b){for(var c,d={},e=0;e<a.length;e++){var f,j=a[e],k=h({},j.exclusive,j.inclusive);b&&(f=g(j));for(var l in k)if(!b||f[l]){var m=j.displayNames[l];c=m.owner+" > "+m.current,d[c]=d[c]||{componentName:c,time:0,count:0},j.inclusive[l]&&(d[c].time+=j.inclusive[l]),j.counts[l]&&(d[c].count+=j.counts[l])}}var n=[];for(c in d)d[c].time>=i&&n.push(d[c]);return n.sort(function(a,b){return b.time-a.time}),n}function g(a){var b={},c=Object.keys(a.writes),d=h({},a.exclusive,a.inclusive);for(var e in d){for(var f=!1,g=0;g<c.length;g++)if(0===c[g].indexOf(e)){f=!0;break}!f&&a.counts[e]>0&&(b[e]=!0)}return b}var h=a("./Object.assign"),i=1.2,j={mountImageIntoNode:"set innerHTML",INSERT_MARKUP:"set innerHTML",MOVE_EXISTING:"move",REMOVE_NODE:"remove",TEXT_CONTENT:"set textContent",updatePropertyByID:"update attribute",deletePropertyByID:"delete attribute",updateStylesByID:"update styles",updateInnerHTMLByID:"set innerHTML",dangerouslyReplaceNodeWithMarkupByID:"replace"},k={getExclusiveSummary:e,getInclusiveSummary:f,getDOMSummary:d,getTotalTime:c};b.exports=k},{"./Object.assign":134}],163:[function(a,b){(function(c){"use strict";function d(a,b){Object.defineProperty(a,b,{configurable:!1,enumerable:!0,get:function(){return this._store?this._store[b]:null},set:function(a){"production"!==c.env.NODE_ENV?h(!1,"Don't set the "+b+" property of the component. Mutate the existing props object instead."):null,this._store[b]=a}})}function e(a){try{var b={props:!0};for(var c in b)d(a,c);j=!0}catch(e){}}var f=a("./ReactContext"),g=a("./ReactCurrentOwner"),h=a("./warning"),i={key:!0,ref:!0},j=!1,k=function(a,b,d,e,f,g){return this.type=a,this.key=b,this.ref=d,this._owner=e,this._context=f,"production"!==c.env.NODE_ENV&&(this._store={validated:!1,props:g},j)?void Object.freeze(this):void(this.props=g)};k.prototype={_isReactElement:!0},"production"!==c.env.NODE_ENV&&e(k.prototype),k.createElement=function(a,b,d){var e,j={},l=null,m=null;if(null!=b){m=void 0===b.ref?null:b.ref,"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?h(null!==b.key,"createElement(...): Encountered component with a `key` of null. In a future version, this will be treated as equivalent to the string 'null'; instead, provide an explicit key or use undefined."):null),l=null==b.key?null:""+b.key;for(e in b)b.hasOwnProperty(e)&&!i.hasOwnProperty(e)&&(j[e]=b[e])}var n=arguments.length-2;if(1===n)j.children=d;else if(n>1){for(var o=Array(n),p=0;n>p;p++)o[p]=arguments[p+2];j.children=o}if(a&&a.defaultProps){var q=a.defaultProps;for(e in q)"undefined"==typeof j[e]&&(j[e]=q[e])}return new k(a,l,m,g.current,f.current,j)},k.createFactory=function(a){var b=k.createElement.bind(null,a);return b.type=a,b},k.cloneAndReplaceProps=function(a,b){var d=new k(a.type,a.key,a.ref,a._owner,a._context,b);return"production"!==c.env.NODE_ENV&&(d._store.validated=a._store.validated),d},k.isValidElement=function(a){var b=!(!a||!a._isReactElement);return b},b.exports=k}).call(this,a("_process"))},{"./ReactContext":146,"./ReactCurrentOwner":147,"./warning":266,_process:90}],164:[function(a,b){(function(c){"use strict";function d(){var a=m.current;return a&&a.constructor.displayName||void 0}function e(a,b){a._store.validated||null!=a.key||(a._store.validated=!0,g("react_key_warning",'Each child in an array should have a unique "key" prop.',a,b))}function f(a,b,c){s.test(a)&&g("react_numeric_key_warning","Child objects should have non-numeric keys so ordering is preserved.",b,c)}function g(a,b,c,e){var f=d(),g=e.displayName,h=f||g,i=p[a];if(!i.hasOwnProperty(h)){i[h]=!0,b+=f?" Check the render method of "+f+".":" Check the renderComponent call using <"+g+">.";var j=null;c._owner&&c._owner!==m.current&&(j=c._owner.constructor.displayName,b+=" It was passed a child from "+j+"."),b+=" See http://fb.me/react-warning-keys for more information.",n(a,{component:h,componentOwner:j}),console.warn(b)}}function h(){var a=d()||"";q.hasOwnProperty(a)||(q[a]=!0,n("react_object_map_children"))}function i(a,b){if(Array.isArray(a))for(var c=0;c<a.length;c++){var d=a[c];k.isValidElement(d)&&e(d,b)}else if(k.isValidElement(a))a._store.validated=!0;else if(a&&"object"==typeof a){h();for(var g in a)f(g,a[g],b)}}function j(a,b,c,d){for(var e in b)if(b.hasOwnProperty(e)){var f;try{f=b[e](c,e,a,d)}catch(g){f=g}f instanceof Error&&!(f.message in r)&&(r[f.message]=!0,n("react_failed_descriptor_type_check",{message:f.message}))}}var k=a("./ReactElement"),l=a("./ReactPropTypeLocations"),m=a("./ReactCurrentOwner"),n=a("./monitorCodeUse"),o=a("./warning"),p={react_key_warning:{},react_numeric_key_warning:{}},q={},r={},s=/^\d+$/,t={createElement:function(a){"production"!==c.env.NODE_ENV?o(null!=a,"React.createElement: type should not be null or undefined. It should be a string (for DOM elements) or a ReactClass (for composite components)."):null;var b=k.createElement.apply(this,arguments);if(null==b)return b;for(var d=2;d<arguments.length;d++)i(arguments[d],a);if(a){var e=a.displayName;a.propTypes&&j(e,a.propTypes,b.props,l.prop),a.contextTypes&&j(e,a.contextTypes,b._context,l.context)}return b},createFactory:function(a){var b=t.createElement.bind(null,a);return b.type=a,b}};b.exports=t}).call(this,a("_process"))},{"./ReactCurrentOwner":147,"./ReactElement":163,"./ReactPropTypeLocations":183,"./monitorCodeUse":256,"./warning":266,_process:90}],165:[function(a,b){(function(c){"use strict";function d(){return"production"!==c.env.NODE_ENV?j(h,"Trying to return null from a render, but no null placeholder component was injected."):j(h),h()}function e(a){k[a]=!0}function f(a){delete k[a]}function g(a){return k[a]}var h,i=a("./ReactElement"),j=a("./invariant"),k={},l={injectEmptyComponent:function(a){h=i.createFactory(a)}},m={deregisterNullComponentID:f,getEmptyComponent:d,injection:l,isNullComponentID:g,registerNullComponentID:e};b.exports=m}).call(this,a("_process"))
-},{"./ReactElement":163,"./invariant":246,_process:90}],166:[function(a,b){"use strict";var c={guard:function(a){return a}};b.exports=c},{}],167:[function(a,b){"use strict";function c(a){d.enqueueEvents(a),d.processEventQueue()}var d=a("./EventPluginHub"),e={handleTopLevel:function(a,b,e,f){var g=d.extractEvents(a,b,e,f);c(g)}};b.exports=e},{"./EventPluginHub":124}],168:[function(a,b){"use strict";function c(a){var b=k.getID(a),c=j.getReactRootIDFromNodeID(b),d=k.findReactContainerForID(c),e=k.getFirstReactDOM(d);return e}function d(a,b){this.topLevelType=a,this.nativeEvent=b,this.ancestors=[]}function e(a){for(var b=k.getFirstReactDOM(n(a.nativeEvent))||window,d=b;d;)a.ancestors.push(d),d=c(d);for(var e=0,f=a.ancestors.length;f>e;e++){b=a.ancestors[e];var g=k.getID(b)||"";p._handleTopLevel(a.topLevelType,b,g,a.nativeEvent)}}function f(a){var b=o(window);a(b)}var g=a("./EventListener"),h=a("./ExecutionEnvironment"),i=a("./PooledClass"),j=a("./ReactInstanceHandles"),k=a("./ReactMount"),l=a("./ReactUpdates"),m=a("./Object.assign"),n=a("./getEventTarget"),o=a("./getUnboundedScrollPosition");m(d.prototype,{destructor:function(){this.topLevelType=null,this.nativeEvent=null,this.ancestors.length=0}}),i.addPoolingTo(d,i.twoArgumentPooler);var p={_enabled:!0,_handleTopLevel:null,WINDOW_HANDLE:h.canUseDOM?window:null,setHandleTopLevel:function(a){p._handleTopLevel=a},setEnabled:function(a){p._enabled=!!a},isEnabled:function(){return p._enabled},trapBubbledEvent:function(a,b,c){var d=c;if(d)return g.listen(d,b,p.dispatchEvent.bind(null,a))},trapCapturedEvent:function(a,b,c){var d=c;if(d)return g.capture(d,b,p.dispatchEvent.bind(null,a))},monitorScrollValue:function(a){var b=f.bind(null,a);g.listen(window,"scroll",b),g.listen(window,"resize",b)},dispatchEvent:function(a,b){if(p._enabled){var c=d.getPooled(a,b);try{l.batchedUpdates(e,c)}finally{d.release(c)}}}};b.exports=p},{"./EventListener":123,"./ExecutionEnvironment":128,"./Object.assign":134,"./PooledClass":135,"./ReactInstanceHandles":171,"./ReactMount":175,"./ReactUpdates":196,"./getEventTarget":237,"./getUnboundedScrollPosition":242}],169:[function(a,b){"use strict";var c=a("./DOMProperty"),d=a("./EventPluginHub"),e=a("./ReactComponent"),f=a("./ReactCompositeComponent"),g=a("./ReactEmptyComponent"),h=a("./ReactBrowserEventEmitter"),i=a("./ReactNativeComponent"),j=a("./ReactPerf"),k=a("./ReactRootIndex"),l=a("./ReactUpdates"),m={Component:e.injection,CompositeComponent:f.injection,DOMProperty:c.injection,EmptyComponent:g.injection,EventPluginHub:d.injection,EventEmitter:h.injection,NativeComponent:i.injection,Perf:j.injection,RootIndex:k.injection,Updates:l.injection};b.exports=m},{"./DOMProperty":117,"./EventPluginHub":124,"./ReactBrowserEventEmitter":138,"./ReactComponent":142,"./ReactCompositeComponent":145,"./ReactEmptyComponent":165,"./ReactNativeComponent":178,"./ReactPerf":180,"./ReactRootIndex":187,"./ReactUpdates":196}],170:[function(a,b){"use strict";function c(a){return e(document.documentElement,a)}var d=a("./ReactDOMSelection"),e=a("./containsNode"),f=a("./focusNode"),g=a("./getActiveElement"),h={hasSelectionCapabilities:function(a){return a&&("INPUT"===a.nodeName&&"text"===a.type||"TEXTAREA"===a.nodeName||"true"===a.contentEditable)},getSelectionInformation:function(){var a=g();return{focusedElem:a,selectionRange:h.hasSelectionCapabilities(a)?h.getSelection(a):null}},restoreSelection:function(a){var b=g(),d=a.focusedElem,e=a.selectionRange;b!==d&&c(d)&&(h.hasSelectionCapabilities(d)&&h.setSelection(d,e),f(d))},getSelection:function(a){var b;if("selectionStart"in a)b={start:a.selectionStart,end:a.selectionEnd};else if(document.selection&&"INPUT"===a.nodeName){var c=document.selection.createRange();c.parentElement()===a&&(b={start:-c.moveStart("character",-a.value.length),end:-c.moveEnd("character",-a.value.length)})}else b=d.getOffsets(a);return b||{start:0,end:0}},setSelection:function(a,b){var c=b.start,e=b.end;if("undefined"==typeof e&&(e=c),"selectionStart"in a)a.selectionStart=c,a.selectionEnd=Math.min(e,a.value.length);else if(document.selection&&"INPUT"===a.nodeName){var f=a.createTextRange();f.collapse(!0),f.moveStart("character",c),f.moveEnd("character",e-c),f.select()}else d.setOffsets(a,b)}};b.exports=h},{"./ReactDOMSelection":157,"./containsNode":220,"./focusNode":231,"./getActiveElement":233}],171:[function(a,b){(function(c){"use strict";function d(a){return n+a.toString(36)}function e(a,b){return a.charAt(b)===n||b===a.length}function f(a){return""===a||a.charAt(0)===n&&a.charAt(a.length-1)!==n}function g(a,b){return 0===b.indexOf(a)&&e(b,a.length)}function h(a){return a?a.substr(0,a.lastIndexOf(n)):""}function i(a,b){if("production"!==c.env.NODE_ENV?m(f(a)&&f(b),"getNextDescendantID(%s, %s): Received an invalid React DOM ID.",a,b):m(f(a)&&f(b)),"production"!==c.env.NODE_ENV?m(g(a,b),"getNextDescendantID(...): React has made an invalid assumption about the DOM hierarchy. Expected `%s` to be an ancestor of `%s`.",a,b):m(g(a,b)),a===b)return a;for(var d=a.length+o,h=d;h<b.length&&!e(b,h);h++);return b.substr(0,h)}function j(a,b){var d=Math.min(a.length,b.length);if(0===d)return"";for(var g=0,h=0;d>=h;h++)if(e(a,h)&&e(b,h))g=h;else if(a.charAt(h)!==b.charAt(h))break;var i=a.substr(0,g);return"production"!==c.env.NODE_ENV?m(f(i),"getFirstCommonAncestorID(%s, %s): Expected a valid React DOM ID: %s",a,b,i):m(f(i)),i}function k(a,b,d,e,f,j){a=a||"",b=b||"","production"!==c.env.NODE_ENV?m(a!==b,"traverseParentPath(...): Cannot traverse from and to the same ID, `%s`.",a):m(a!==b);var k=g(b,a);"production"!==c.env.NODE_ENV?m(k||g(a,b),"traverseParentPath(%s, %s, ...): Cannot traverse from two IDs that do not have a parent path.",a,b):m(k||g(a,b));for(var l=0,n=k?h:i,o=a;;o=n(o,b)){var q;if(f&&o===a||j&&o===b||(q=d(o,k,e)),q===!1||o===b)break;"production"!==c.env.NODE_ENV?m(l++<p,"traverseParentPath(%s, %s, ...): Detected an infinite loop while traversing the React DOM ID tree. This may be due to malformed IDs: %s",a,b):m(l++<p)}}var l=a("./ReactRootIndex"),m=a("./invariant"),n=".",o=n.length,p=100,q={createReactRootID:function(){return d(l.createReactRootIndex())},createReactID:function(a,b){return a+b},getReactRootIDFromNodeID:function(a){if(a&&a.charAt(0)===n&&a.length>1){var b=a.indexOf(n,1);return b>-1?a.substr(0,b):a}return null},traverseEnterLeave:function(a,b,c,d,e){var f=j(a,b);f!==a&&k(a,f,c,d,!1,!0),f!==b&&k(f,b,c,e,!0,!1)},traverseTwoPhase:function(a,b,c){a&&(k("",a,b,c,!0,!1),k(a,"",b,c,!1,!0))},traverseAncestors:function(a,b,c){k("",a,b,c,!0,!1)},_getFirstCommonAncestorID:j,_getNextDescendantID:i,isAncestorIDOf:g,SEPARATOR:n};b.exports=q}).call(this,a("_process"))},{"./ReactRootIndex":187,"./invariant":246,_process:90}],172:[function(a,b){(function(c){"use strict";function d(){if(o._isLegacyCallWarningEnabled){var a=h.current,b=a&&a.constructor?a.constructor.displayName:"";b||(b="Something"),l.hasOwnProperty(b)||(l[b]=!0,"production"!==c.env.NODE_ENV?k(!1,b+" is calling a React component directly. Use a factory or JSX instead. See: http://fb.me/react-legacyfactory"):null,j("react_legacy_factory_call",{version:3,name:b}))}}function e(a){var b=a.prototype&&"function"==typeof a.prototype.mountComponent&&"function"==typeof a.prototype.receiveComponent;if(b)"production"!==c.env.NODE_ENV?k(!1,"Did not expect to get a React class here. Use `Component` instead of `Component.type` or `this.constructor`."):null;else{if(!a._reactWarnedForThisType){try{a._reactWarnedForThisType=!0}catch(d){}j("react_non_component_in_jsx",{version:3,name:a.name})}"production"!==c.env.NODE_ENV?k(!1,"This JSX uses a plain function. Only React components are valid in React's JSX transform."):null}}function f(a){"production"!==c.env.NODE_ENV?k(!1,"Do not pass React.DOM."+a.type+' to JSX or createFactory. Use the string "'+a.type+'" instead.'):null}function g(a,b){if("function"==typeof b)for(var c in b)if(b.hasOwnProperty(c)){var d=b[c];if("function"==typeof d){var e=d.bind(b);for(var f in d)d.hasOwnProperty(f)&&(e[f]=d[f]);a[c]=e}else a[c]=d}}var h=a("./ReactCurrentOwner"),i=a("./invariant"),j=a("./monitorCodeUse"),k=a("./warning"),l={},m={},n={},o={};o.wrapCreateFactory=function(a){var b=function(b){return"function"!=typeof b?a(b):b.isReactNonLegacyFactory?("production"!==c.env.NODE_ENV&&f(b),a(b.type)):b.isReactLegacyFactory?a(b.type):("production"!==c.env.NODE_ENV&&e(b),b)};return b},o.wrapCreateElement=function(a){var b=function(b){if("function"!=typeof b)return a.apply(this,arguments);var d;return b.isReactNonLegacyFactory?("production"!==c.env.NODE_ENV&&f(b),d=Array.prototype.slice.call(arguments,0),d[0]=b.type,a.apply(this,d)):b.isReactLegacyFactory?(b._isMockFunction&&(b.type._mockedReactClassConstructor=b),d=Array.prototype.slice.call(arguments,0),d[0]=b.type,a.apply(this,d)):("production"!==c.env.NODE_ENV&&e(b),b.apply(null,Array.prototype.slice.call(arguments,1)))};return b},o.wrapFactory=function(a){"production"!==c.env.NODE_ENV?i("function"==typeof a,"This is suppose to accept a element factory"):i("function"==typeof a);var b=function(){return"production"!==c.env.NODE_ENV&&d(),a.apply(this,arguments)};return g(b,a.type),b.isReactLegacyFactory=m,b.type=a.type,b},o.markNonLegacyFactory=function(a){return a.isReactNonLegacyFactory=n,a},o.isValidFactory=function(a){return"function"==typeof a&&a.isReactLegacyFactory===m},o.isValidClass=function(a){return"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?k(!1,"isValidClass is deprecated and will be removed in a future release. Use a more specific validator instead."):null),o.isValidFactory(a)},o._isLegacyCallWarningEnabled=!0,b.exports=o}).call(this,a("_process"))},{"./ReactCurrentOwner":147,"./invariant":246,"./monitorCodeUse":256,"./warning":266,_process:90}],173:[function(a,b){"use strict";function c(a,b){this.value=a,this.requestChange=b}function d(a){var b={value:"undefined"==typeof a?e.PropTypes.any.isRequired:a.isRequired,requestChange:e.PropTypes.func.isRequired};return e.PropTypes.shape(b)}var e=a("./React");c.PropTypes={link:d},b.exports=c},{"./React":136}],174:[function(a,b){"use strict";var c=a("./adler32"),d={CHECKSUM_ATTR_NAME:"data-react-checksum",addChecksumToMarkup:function(a){var b=c(a);return a.replace(">"," "+d.CHECKSUM_ATTR_NAME+'="'+b+'">')},canReuseMarkup:function(a,b){var e=b.getAttribute(d.CHECKSUM_ATTR_NAME);e=e&&parseInt(e,10);var f=c(a);return f===e}};b.exports=d},{"./adler32":216}],175:[function(a,b){(function(c){"use strict";function d(a){var b=v(a);return b&&L.getID(b)}function e(a){var b=f(a);if(b)if(D.hasOwnProperty(b)){var d=D[b];d!==a&&("production"!==c.env.NODE_ENV?x(!i(d,b),"ReactMount: Two valid but unequal nodes with the same `%s`: %s",C,b):x(!i(d,b)),D[b]=a)}else D[b]=a;return b}function f(a){return a&&a.getAttribute&&a.getAttribute(C)||""}function g(a,b){var c=f(a);c!==b&&delete D[c],a.setAttribute(C,b),D[b]=a}function h(a){return D.hasOwnProperty(a)&&i(D[a],a)||(D[a]=L.findReactNodeByID(a)),D[a]}function i(a,b){if(a){"production"!==c.env.NODE_ENV?x(f(a)===b,"ReactMount: Unexpected modification of `%s`",C):x(f(a)===b);var d=L.findReactContainerForID(b);if(d&&t(d,a))return!0}return!1}function j(a){delete D[a]}function k(a){var b=D[a];return b&&i(b,a)?void(K=b):!1}function l(a){K=null,r.traverseAncestors(a,k);var b=K;return K=null,b}var m=a("./DOMProperty"),n=a("./ReactBrowserEventEmitter"),o=a("./ReactCurrentOwner"),p=a("./ReactElement"),q=a("./ReactLegacyElement"),r=a("./ReactInstanceHandles"),s=a("./ReactPerf"),t=a("./containsNode"),u=a("./deprecated"),v=a("./getReactRootElementInContainer"),w=a("./instantiateReactComponent"),x=a("./invariant"),y=a("./shouldUpdateReactComponent"),z=a("./warning"),A=q.wrapCreateElement(p.createElement),B=r.SEPARATOR,C=m.ID_ATTRIBUTE_NAME,D={},E=1,F=9,G={},H={};if("production"!==c.env.NODE_ENV)var I={};var J=[],K=null,L={_instancesByReactRootID:G,scrollMonitor:function(a,b){b()},_updateRootComponent:function(a,b,e,f){var g=b.props;return L.scrollMonitor(e,function(){a.replaceProps(g,f)}),"production"!==c.env.NODE_ENV&&(I[d(e)]=v(e)),a},_registerComponent:function(a,b){"production"!==c.env.NODE_ENV?x(b&&(b.nodeType===E||b.nodeType===F),"_registerComponent(...): Target container is not a DOM element."):x(b&&(b.nodeType===E||b.nodeType===F)),n.ensureScrollValueMonitoring();var d=L.registerContainer(b);return G[d]=a,d},_renderNewRootComponent:s.measure("ReactMount","_renderNewRootComponent",function(a,b,d){"production"!==c.env.NODE_ENV?z(null==o.current,"_renderNewRootComponent(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate."):null;var e=w(a,null),f=L._registerComponent(e,b);return e.mountComponentIntoNode(f,b,d),"production"!==c.env.NODE_ENV&&(I[f]=v(b)),e}),render:function(a,b,e){"production"!==c.env.NODE_ENV?x(p.isValidElement(a),"renderComponent(): Invalid component element.%s","string"==typeof a?" Instead of passing an element string, make sure to instantiate it by passing it to React.createElement.":q.isValidFactory(a)?" Instead of passing a component class, make sure to instantiate it by passing it to React.createElement.":"undefined"!=typeof a.props?" This may be caused by unintentionally loading two independent copies of React.":""):x(p.isValidElement(a));var f=G[d(b)];if(f){var g=f._currentElement;if(y(g,a))return L._updateRootComponent(f,a,b,e);L.unmountComponentAtNode(b)}var h=v(b),i=h&&L.isRenderedByReact(h),j=i&&!f,k=L._renderNewRootComponent(a,b,j);return e&&e.call(k),k},constructAndRenderComponent:function(a,b,c){var d=A(a,b);return L.render(d,c)},constructAndRenderComponentByID:function(a,b,d){var e=document.getElementById(d);return"production"!==c.env.NODE_ENV?x(e,'Tried to get element with id of "%s" but it is not present on the page.',d):x(e),L.constructAndRenderComponent(a,b,e)},registerContainer:function(a){var b=d(a);return b&&(b=r.getReactRootIDFromNodeID(b)),b||(b=r.createReactRootID()),H[b]=a,b},unmountComponentAtNode:function(a){"production"!==c.env.NODE_ENV?z(null==o.current,"unmountComponentAtNode(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate."):null;var b=d(a),e=G[b];return e?(L.unmountComponentFromNode(e,a),delete G[b],delete H[b],"production"!==c.env.NODE_ENV&&delete I[b],!0):!1},unmountComponentFromNode:function(a,b){for(a.unmountComponent(),b.nodeType===F&&(b=b.documentElement);b.lastChild;)b.removeChild(b.lastChild)},findReactContainerForID:function(a){var b=r.getReactRootIDFromNodeID(a),d=H[b];if("production"!==c.env.NODE_ENV){var e=I[b];if(e&&e.parentNode!==d){"production"!==c.env.NODE_ENV?x(f(e)===b,"ReactMount: Root element ID differed from reactRootID."):x(f(e)===b);var g=d.firstChild;g&&b===f(g)?I[b]=g:console.warn("ReactMount: Root element has been removed from its original container. New container:",e.parentNode)}}return d},findReactNodeByID:function(a){var b=L.findReactContainerForID(a);return L.findComponentRoot(b,a)},isRenderedByReact:function(a){if(1!==a.nodeType)return!1;var b=L.getID(a);return b?b.charAt(0)===B:!1},getFirstReactDOM:function(a){for(var b=a;b&&b.parentNode!==b;){if(L.isRenderedByReact(b))return b;b=b.parentNode}return null},findComponentRoot:function(a,b){var d=J,e=0,f=l(b)||a;for(d[0]=f.firstChild,d.length=1;e<d.length;){for(var g,h=d[e++];h;){var i=L.getID(h);i?b===i?g=h:r.isAncestorIDOf(i,b)&&(d.length=e=0,d.push(h.firstChild)):d.push(h.firstChild),h=h.nextSibling}if(g)return d.length=0,g}d.length=0,"production"!==c.env.NODE_ENV?x(!1,"findComponentRoot(..., %s): Unable to find element. This probably means the DOM was unexpectedly mutated (e.g., by the browser), usually due to forgetting a <tbody> when using tables, nesting tags like <form>, <p>, or <a>, or using non-SVG elements in an <svg> parent. Try inspecting the child nodes of the element with React ID `%s`.",b,L.getID(a)):x(!1)},getReactRootID:d,getID:e,setID:g,getNode:h,purgeID:j};L.renderComponent=u("ReactMount","renderComponent","render",this,L.render),b.exports=L}).call(this,a("_process"))},{"./DOMProperty":117,"./ReactBrowserEventEmitter":138,"./ReactCurrentOwner":147,"./ReactElement":163,"./ReactInstanceHandles":171,"./ReactLegacyElement":172,"./ReactPerf":180,"./containsNode":220,"./deprecated":226,"./getReactRootElementInContainer":240,"./instantiateReactComponent":245,"./invariant":246,"./shouldUpdateReactComponent":262,"./warning":266,_process:90}],176:[function(a,b){"use strict";function c(a,b,c){o.push({parentID:a,parentNode:null,type:j.INSERT_MARKUP,markupIndex:p.push(b)-1,textContent:null,fromIndex:null,toIndex:c})}function d(a,b,c){o.push({parentID:a,parentNode:null,type:j.MOVE_EXISTING,markupIndex:null,textContent:null,fromIndex:b,toIndex:c})}function e(a,b){o.push({parentID:a,parentNode:null,type:j.REMOVE_NODE,markupIndex:null,textContent:null,fromIndex:b,toIndex:null})}function f(a,b){o.push({parentID:a,parentNode:null,type:j.TEXT_CONTENT,markupIndex:null,textContent:b,fromIndex:null,toIndex:null})}function g(){o.length&&(i.BackendIDOperations.dangerouslyProcessChildrenUpdates(o,p),h())}function h(){o.length=0,p.length=0}var i=a("./ReactComponent"),j=a("./ReactMultiChildUpdateTypes"),k=a("./flattenChildren"),l=a("./instantiateReactComponent"),m=a("./shouldUpdateReactComponent"),n=0,o=[],p=[],q={Mixin:{mountChildren:function(a,b){var c=k(a),d=[],e=0;this._renderedChildren=c;for(var f in c){var g=c[f];if(c.hasOwnProperty(f)){var h=l(g,null);c[f]=h;var i=this._rootNodeID+f,j=h.mountComponent(i,b,this._mountDepth+1);h._mountIndex=e,d.push(j),e++}}return d},updateTextContent:function(a){n++;var b=!0;try{var c=this._renderedChildren;for(var d in c)c.hasOwnProperty(d)&&this._unmountChildByName(c[d],d);this.setTextContent(a),b=!1}finally{n--,n||(b?h():g())}},updateChildren:function(a,b){n++;var c=!0;try{this._updateChildren(a,b),c=!1}finally{n--,n||(c?h():g())}},_updateChildren:function(a,b){var c=k(a),d=this._renderedChildren;if(c||d){var e,f=0,g=0;for(e in c)if(c.hasOwnProperty(e)){var h=d&&d[e],i=h&&h._currentElement,j=c[e];if(m(i,j))this.moveChild(h,g,f),f=Math.max(h._mountIndex,f),h.receiveComponent(j,b),h._mountIndex=g;else{h&&(f=Math.max(h._mountIndex,f),this._unmountChildByName(h,e));var n=l(j,null);this._mountChildByNameAtIndex(n,e,g,b)}g++}for(e in d)!d.hasOwnProperty(e)||c&&c[e]||this._unmountChildByName(d[e],e)}},unmountChildren:function(){var a=this._renderedChildren;for(var b in a){var c=a[b];c.unmountComponent&&c.unmountComponent()}this._renderedChildren=null},moveChild:function(a,b,c){a._mountIndex<c&&d(this._rootNodeID,a._mountIndex,b)},createChild:function(a,b){c(this._rootNodeID,b,a._mountIndex)},removeChild:function(a){e(this._rootNodeID,a._mountIndex)},setTextContent:function(a){f(this._rootNodeID,a)},_mountChildByNameAtIndex:function(a,b,c,d){var e=this._rootNodeID+b,f=a.mountComponent(e,d,this._mountDepth+1);a._mountIndex=c,this.createChild(a,f),this._renderedChildren=this._renderedChildren||{},this._renderedChildren[b]=a},_unmountChildByName:function(a,b){this.removeChild(a),a._mountIndex=null,a.unmountComponent(),delete this._renderedChildren[b]}}};b.exports=q},{"./ReactComponent":142,"./ReactMultiChildUpdateTypes":177,"./flattenChildren":230,"./instantiateReactComponent":245,"./shouldUpdateReactComponent":262}],177:[function(a,b){"use strict";var c=a("./keyMirror"),d=c({INSERT_MARKUP:null,MOVE_EXISTING:null,REMOVE_NODE:null,TEXT_CONTENT:null});b.exports=d},{"./keyMirror":252}],178:[function(a,b){(function(c){"use strict";function d(a,b,d){var e=h[a];return null==e?("production"!==c.env.NODE_ENV?f(g,"There is no registered component for the tag %s",a):f(g),new g(a,b)):d===a?("production"!==c.env.NODE_ENV?f(g,"There is no registered component for the tag %s",a):f(g),new g(a,b)):new e.type(b)}var e=a("./Object.assign"),f=a("./invariant"),g=null,h={},i={injectGenericComponentClass:function(a){g=a},injectComponentClasses:function(a){e(h,a)}},j={createInstanceForTag:d,injection:i};b.exports=j}).call(this,a("_process"))},{"./Object.assign":134,"./invariant":246,_process:90}],179:[function(a,b){(function(c){"use strict";var d=a("./emptyObject"),e=a("./invariant"),f={isValidOwner:function(a){return!(!a||"function"!=typeof a.attachRef||"function"!=typeof a.detachRef)},addComponentAsRefTo:function(a,b,d){"production"!==c.env.NODE_ENV?e(f.isValidOwner(d),"addComponentAsRefTo(...): Only a ReactOwner can have refs. This usually means that you're trying to add a ref to a component that doesn't have an owner (that is, was not created inside of another component's `render` method). Try rendering this component inside of a new top-level component which will hold the ref."):e(f.isValidOwner(d)),d.attachRef(b,a)},removeComponentAsRefFrom:function(a,b,d){"production"!==c.env.NODE_ENV?e(f.isValidOwner(d),"removeComponentAsRefFrom(...): Only a ReactOwner can have refs. This usually means that you're trying to remove a ref to a component that doesn't have an owner (that is, was not created inside of another component's `render` method). Try rendering this component inside of a new top-level component which will hold the ref."):e(f.isValidOwner(d)),d.refs[b]===a&&d.detachRef(b)},Mixin:{construct:function(){this.refs=d},attachRef:function(a,b){"production"!==c.env.NODE_ENV?e(b.isOwnedBy(this),"attachRef(%s, ...): Only a component's owner can store a ref to it.",a):e(b.isOwnedBy(this));var f=this.refs===d?this.refs={}:this.refs;f[a]=b},detachRef:function(a){delete this.refs[a]}}};b.exports=f}).call(this,a("_process"))},{"./emptyObject":228,"./invariant":246,_process:90}],180:[function(a,b){(function(a){"use strict";function c(a,b,c){return c}var d={enableMeasure:!1,storedMeasure:c,measure:function(b,c,e){if("production"!==a.env.NODE_ENV){var f=null,g=function(){return d.enableMeasure?(f||(f=d.storedMeasure(b,c,e)),f.apply(this,arguments)):e.apply(this,arguments)};return g.displayName=b+"_"+c,g}return e},injection:{injectMeasure:function(a){d.storedMeasure=a}}};b.exports=d}).call(this,a("_process"))},{_process:90}],181:[function(a,b){(function(c){"use strict";function d(a){return function(b,c,d){b[c]=b.hasOwnProperty(c)?a(b[c],d):d}}function e(a,b){for(var c in b)if(b.hasOwnProperty(c)){var d=m[c];d&&m.hasOwnProperty(c)?d(a,c,b[c]):a.hasOwnProperty(c)||(a[c]=b[c])}return a}var f=a("./Object.assign"),g=a("./emptyFunction"),h=a("./invariant"),i=a("./joinClasses"),j=a("./warning"),k=!1,l=d(function(a,b){return f({},b,a)}),m={children:g,className:d(i),style:l},n={TransferStrategies:m,mergeProps:function(a,b){return e(f({},a),b)},Mixin:{transferPropsTo:function(a){return"production"!==c.env.NODE_ENV?h(a._owner===this,"%s: You can't call transferPropsTo() on a component that you don't own, %s. This usually means you are calling transferPropsTo() on a component passed in as props or children.",this.constructor.displayName,"string"==typeof a.type?a.type:a.type.displayName):h(a._owner===this),"production"!==c.env.NODE_ENV&&(k||(k=!0,"production"!==c.env.NODE_ENV?j(!1,"transferPropsTo is deprecated. See http://fb.me/react-transferpropsto for more information."):null)),e(a.props,this.props),a}}};b.exports=n}).call(this,a("_process"))},{"./Object.assign":134,"./emptyFunction":227,"./invariant":246,"./joinClasses":251,"./warning":266,_process:90}],182:[function(a,b){(function(a){"use strict";var c={};"production"!==a.env.NODE_ENV&&(c={prop:"prop",context:"context",childContext:"child context"}),b.exports=c}).call(this,a("_process"))},{_process:90}],183:[function(a,b){"use strict";var c=a("./keyMirror"),d=c({prop:null,context:null,childContext:null});b.exports=d},{"./keyMirror":252}],184:[function(a,b){"use strict";function c(a){function b(b,c,d,e,f){if(e=e||u,null!=c[d])return a(c,d,e,f);var g=r[f];return b?new Error("Required "+g+" `"+d+"` was not specified in "+("`"+e+"`.")):void 0}var c=b.bind(null,!1);return c.isRequired=b.bind(null,!0),c}function d(a){function b(b,c,d,e){var f=b[c],g=o(f);if(g!==a){var h=r[e],i=p(f);return new Error("Invalid "+h+" `"+c+"` of type `"+i+"` "+("supplied to `"+d+"`, expected `"+a+"`."))}}return c(b)}function e(){return c(t.thatReturns())}function f(a){function b(b,c,d,e){var f=b[c];if(!Array.isArray(f)){var g=r[e],h=o(f);return new Error("Invalid "+g+" `"+c+"` of type "+("`"+h+"` supplied to `"+d+"`, expected an array."))}for(var i=0;i<f.length;i++){var j=a(f,i,d,e);if(j instanceof Error)return j}}return c(b)}function g(){function a(a,b,c,d){if(!q.isValidElement(a[b])){var e=r[d];return new Error("Invalid "+e+" `"+b+"` supplied to "+("`"+c+"`, expected a ReactElement."))}}return c(a)}function h(a){function b(b,c,d,e){if(!(b[c]instanceof a)){var f=r[e],g=a.name||u;return new Error("Invalid "+f+" `"+c+"` supplied to "+("`"+d+"`, expected instance of `"+g+"`."))}}return c(b)}function i(a){function b(b,c,d,e){for(var f=b[c],g=0;g<a.length;g++)if(f===a[g])return;var h=r[e],i=JSON.stringify(a);return new Error("Invalid "+h+" `"+c+"` of value `"+f+"` "+("supplied to `"+d+"`, expected one of "+i+"."))}return c(b)}function j(a){function b(b,c,d,e){var f=b[c],g=o(f);if("object"!==g){var h=r[e];return new Error("Invalid "+h+" `"+c+"` of type "+("`"+g+"` supplied to `"+d+"`, expected an object."))}for(var i in f)if(f.hasOwnProperty(i)){var j=a(f,i,d,e);if(j instanceof Error)return j}}return c(b)}function k(a){function b(b,c,d,e){for(var f=0;f<a.length;f++){var g=a[f];if(null==g(b,c,d,e))return}var h=r[e];return new Error("Invalid "+h+" `"+c+"` supplied to "+("`"+d+"`."))}return c(b)}function l(){function a(a,b,c,d){if(!n(a[b])){var e=r[d];return new Error("Invalid "+e+" `"+b+"` supplied to "+("`"+c+"`, expected a ReactNode."))}}return c(a)}function m(a){function b(b,c,d,e){var f=b[c],g=o(f);if("object"!==g){var h=r[e];return new Error("Invalid "+h+" `"+c+"` of type `"+g+"` "+("supplied to `"+d+"`, expected `object`."))}for(var i in a){var j=a[i];if(j){var k=j(f,i,d,e);if(k)return k}}}return c(b,"expected `object`")}function n(a){switch(typeof a){case"number":case"string":return!0;case"boolean":return!a;case"object":if(Array.isArray(a))return a.every(n);if(q.isValidElement(a))return!0;for(var b in a)if(!n(a[b]))return!1;return!0;default:return!1}}function o(a){var b=typeof a;return Array.isArray(a)?"array":a instanceof RegExp?"object":b}function p(a){var b=o(a);if("object"===b){if(a instanceof Date)return"date";if(a instanceof RegExp)return"regexp"}return b}var q=a("./ReactElement"),r=a("./ReactPropTypeLocationNames"),s=a("./deprecated"),t=a("./emptyFunction"),u="<<anonymous>>",v=g(),w=l(),x={array:d("array"),bool:d("boolean"),func:d("function"),number:d("number"),object:d("object"),string:d("string"),any:e(),arrayOf:f,element:v,instanceOf:h,node:w,objectOf:j,oneOf:i,oneOfType:k,shape:m,component:s("React.PropTypes","component","element",this,v),renderable:s("React.PropTypes","renderable","node",this,w)};b.exports=x},{"./ReactElement":163,"./ReactPropTypeLocationNames":182,"./deprecated":226,"./emptyFunction":227}],185:[function(a,b){"use strict";function c(){this.listenersToPut=[]}var d=a("./PooledClass"),e=a("./ReactBrowserEventEmitter"),f=a("./Object.assign");f(c.prototype,{enqueuePutListener:function(a,b,c){this.listenersToPut.push({rootNodeID:a,propKey:b,propValue:c})},putListeners:function(){for(var a=0;a<this.listenersToPut.length;a++){var b=this.listenersToPut[a];e.putListener(b.rootNodeID,b.propKey,b.propValue)}},reset:function(){this.listenersToPut.length=0},destructor:function(){this.reset()}}),d.addPoolingTo(c),b.exports=c},{"./Object.assign":134,"./PooledClass":135,"./ReactBrowserEventEmitter":138}],186:[function(a,b){"use strict";function c(){this.reinitializeTransaction(),this.renderToStaticMarkup=!1,this.reactMountReady=d.getPooled(null),this.putListenerQueue=h.getPooled()}var d=a("./CallbackQueue"),e=a("./PooledClass"),f=a("./ReactBrowserEventEmitter"),g=a("./ReactInputSelection"),h=a("./ReactPutListenerQueue"),i=a("./Transaction"),j=a("./Object.assign"),k={initialize:g.getSelectionInformation,close:g.restoreSelection},l={initialize:function(){var a=f.isEnabled();return f.setEnabled(!1),a},close:function(a){f.setEnabled(a)}},m={initialize:function(){this.reactMountReady.reset()},close:function(){this.reactMountReady.notifyAll()}},n={initialize:function(){this.putListenerQueue.reset()},close:function(){this.putListenerQueue.putListeners()}},o=[n,k,l,m],p={getTransactionWrappers:function(){return o},getReactMountReady:function(){return this.reactMountReady},getPutListenerQueue:function(){return this.putListenerQueue},destructor:function(){d.release(this.reactMountReady),this.reactMountReady=null,h.release(this.putListenerQueue),this.putListenerQueue=null}};j(c.prototype,i.Mixin,p),e.addPoolingTo(c),b.exports=c},{"./CallbackQueue":112,"./Object.assign":134,"./PooledClass":135,"./ReactBrowserEventEmitter":138,"./ReactInputSelection":170,"./ReactPutListenerQueue":185,"./Transaction":213}],187:[function(a,b){"use strict";var c={injectCreateReactRootIndex:function(a){d.createReactRootIndex=a}},d={createReactRootIndex:null,injection:c};b.exports=d},{}],188:[function(a,b){(function(c){"use strict";function d(a){"production"!==c.env.NODE_ENV?k(f.isValidElement(a),"renderToString(): You must pass a valid ReactElement."):k(f.isValidElement(a));var b;try{var d=g.createReactRootID();return b=i.getPooled(!1),b.perform(function(){var c=j(a,null),e=c.mountComponent(d,b,0);return h.addChecksumToMarkup(e)},null)}finally{i.release(b)}}function e(a){"production"!==c.env.NODE_ENV?k(f.isValidElement(a),"renderToStaticMarkup(): You must pass a valid ReactElement."):k(f.isValidElement(a));var b;try{var d=g.createReactRootID();return b=i.getPooled(!0),b.perform(function(){var c=j(a,null);return c.mountComponent(d,b,0)},null)}finally{i.release(b)}}var f=a("./ReactElement"),g=a("./ReactInstanceHandles"),h=a("./ReactMarkupChecksum"),i=a("./ReactServerRenderingTransaction"),j=a("./instantiateReactComponent"),k=a("./invariant");b.exports={renderToString:d,renderToStaticMarkup:e}}).call(this,a("_process"))},{"./ReactElement":163,"./ReactInstanceHandles":171,"./ReactMarkupChecksum":174,"./ReactServerRenderingTransaction":189,"./instantiateReactComponent":245,"./invariant":246,_process:90}],189:[function(a,b){"use strict";function c(a){this.reinitializeTransaction(),this.renderToStaticMarkup=a,this.reactMountReady=e.getPooled(null),this.putListenerQueue=f.getPooled()}var d=a("./PooledClass"),e=a("./CallbackQueue"),f=a("./ReactPutListenerQueue"),g=a("./Transaction"),h=a("./Object.assign"),i=a("./emptyFunction"),j={initialize:function(){this.reactMountReady.reset()},close:i},k={initialize:function(){this.putListenerQueue.reset()},close:i},l=[k,j],m={getTransactionWrappers:function(){return l},getReactMountReady:function(){return this.reactMountReady},getPutListenerQueue:function(){return this.putListenerQueue},destructor:function(){e.release(this.reactMountReady),this.reactMountReady=null,f.release(this.putListenerQueue),this.putListenerQueue=null}};h(c.prototype,g.Mixin,m),d.addPoolingTo(c),b.exports=c},{"./CallbackQueue":112,"./Object.assign":134,"./PooledClass":135,"./ReactPutListenerQueue":185,"./Transaction":213,"./emptyFunction":227}],190:[function(a,b){"use strict";function c(a,b){var c={};return function(d){c[b]=d,a.setState(c)}}var d={createStateSetter:function(a,b){return function(c,d,e,f,g,h){var i=b.call(a,c,d,e,f,g,h);i&&a.setState(i)}},createStateKeySetter:function(a,b){var d=a.__keySetters||(a.__keySetters={});return d[b]||(d[b]=c(a,b))}};d.Mixin={createStateSetter:function(a){return d.createStateSetter(this,a)},createStateKeySetter:function(a){return d.createStateKeySetter(this,a)}},b.exports=d},{}],191:[function(a,b){"use strict";function c(){}function d(a){return function(b,d){var e;s.isDOMComponent(b)?e=b.getDOMNode():b.tagName&&(e=b);var f=new c;f.target=e;var g=new p(l.eventNameDispatchConfigs[a],m.getID(e),f);q(g,d),i.accumulateTwoPhaseDispatches(g),o.batchedUpdates(function(){h.enqueueEvents(g),h.processEventQueue()
-})}}function e(){s.Simulate={};var a;for(a in l.eventNameDispatchConfigs)s.Simulate[a]=d(a)}function f(a){return function(b,d){var e=new c(a);q(e,d),s.isDOMComponent(b)?s.simulateNativeEventOnDOMComponent(a,b,e):b.tagName&&s.simulateNativeEventOnNode(a,b,e)}}var g=a("./EventConstants"),h=a("./EventPluginHub"),i=a("./EventPropagators"),j=a("./React"),k=a("./ReactElement"),l=a("./ReactBrowserEventEmitter"),m=a("./ReactMount"),n=a("./ReactTextComponent"),o=a("./ReactUpdates"),p=a("./SyntheticEvent"),q=a("./Object.assign"),r=g.topLevelTypes,s={renderIntoDocument:function(a){var b=document.createElement("div");return j.render(a,b)},isElement:function(a){return k.isValidElement(a)},isElementOfType:function(a,b){return k.isValidElement(a)&&a.type===b.type},isDOMComponent:function(a){return!!(a&&a.mountComponent&&a.tagName)},isDOMComponentElement:function(a){return!!(a&&k.isValidElement(a)&&a.tagName)},isCompositeComponent:function(a){return"function"==typeof a.render&&"function"==typeof a.setState},isCompositeComponentWithType:function(a,b){return!(!s.isCompositeComponent(a)||a.constructor!==b.type)},isCompositeComponentElement:function(a){if(!k.isValidElement(a))return!1;var b=a.type.prototype;return"function"==typeof b.render&&"function"==typeof b.setState},isCompositeComponentElementWithType:function(a,b){return!(!s.isCompositeComponentElement(a)||a.constructor!==b)},isTextComponent:function(a){return a instanceof n.type},findAllInRenderedTree:function(a,b){if(!a)return[];var c=b(a)?[a]:[];if(s.isDOMComponent(a)){var d,e=a._renderedChildren;for(d in e)e.hasOwnProperty(d)&&(c=c.concat(s.findAllInRenderedTree(e[d],b)))}else s.isCompositeComponent(a)&&(c=c.concat(s.findAllInRenderedTree(a._renderedComponent,b)));return c},scryRenderedDOMComponentsWithClass:function(a,b){return s.findAllInRenderedTree(a,function(a){var c=a.props.className;return s.isDOMComponent(a)&&c&&-1!==(" "+c+" ").indexOf(" "+b+" ")})},findRenderedDOMComponentWithClass:function(a,b){var c=s.scryRenderedDOMComponentsWithClass(a,b);if(1!==c.length)throw new Error("Did not find exactly one match for class:"+b);return c[0]},scryRenderedDOMComponentsWithTag:function(a,b){return s.findAllInRenderedTree(a,function(a){return s.isDOMComponent(a)&&a.tagName===b.toUpperCase()})},findRenderedDOMComponentWithTag:function(a,b){var c=s.scryRenderedDOMComponentsWithTag(a,b);if(1!==c.length)throw new Error("Did not find exactly one match for tag:"+b);return c[0]},scryRenderedComponentsWithType:function(a,b){return s.findAllInRenderedTree(a,function(a){return s.isCompositeComponentWithType(a,b)})},findRenderedComponentWithType:function(a,b){var c=s.scryRenderedComponentsWithType(a,b);if(1!==c.length)throw new Error("Did not find exactly one match for componentType:"+b);return c[0]},mockComponent:function(a,b){b=b||a.mockTagName||"div";var c=j.createClass({displayName:"ConvenienceConstructor",render:function(){return j.createElement(b,null,this.props.children)}});return a.mockImplementation(c),a.type=c.type,a.isReactLegacyFactory=!0,this},simulateNativeEventOnNode:function(a,b,c){c.target=b,l.ReactEventListener.dispatchEvent(a,c)},simulateNativeEventOnDOMComponent:function(a,b,c){s.simulateNativeEventOnNode(a,b.getDOMNode(),c)},nativeTouchData:function(a,b){return{touches:[{pageX:a,pageY:b}]}},Simulate:null,SimulateNative:{}},t=h.injection.injectEventPluginOrder;h.injection.injectEventPluginOrder=function(){t.apply(this,arguments),e()};var u=h.injection.injectEventPluginsByName;h.injection.injectEventPluginsByName=function(){u.apply(this,arguments),e()},e();var v;for(v in r){var w=0===v.indexOf("top")?v.charAt(3).toLowerCase()+v.substr(4):v;s.SimulateNative[w]=f(v)}b.exports=s},{"./EventConstants":122,"./EventPluginHub":124,"./EventPropagators":127,"./Object.assign":134,"./React":136,"./ReactBrowserEventEmitter":138,"./ReactElement":163,"./ReactMount":175,"./ReactTextComponent":192,"./ReactUpdates":196,"./SyntheticEvent":205}],192:[function(a,b){"use strict";var c=a("./DOMPropertyOperations"),d=a("./ReactComponent"),e=a("./ReactElement"),f=a("./Object.assign"),g=a("./escapeTextForBrowser"),h=function(){};f(h.prototype,d.Mixin,{mountComponent:function(a,b,e){d.Mixin.mountComponent.call(this,a,b,e);var f=g(this.props);return b.renderToStaticMarkup?f:"<span "+c.createMarkupForID(a)+">"+f+"</span>"},receiveComponent:function(a){var b=a.props;b!==this.props&&(this.props=b,d.BackendIDOperations.updateTextContentByID(this._rootNodeID,b))}});var i=function(a){return new e(h,null,null,null,null,a)};i.type=h,b.exports=i},{"./DOMPropertyOperations":118,"./Object.assign":134,"./ReactComponent":142,"./ReactElement":163,"./escapeTextForBrowser":229}],193:[function(a,b){"use strict";var c=a("./ReactChildren"),d={getChildMapping:function(a){return c.map(a,function(a){return a})},mergeChildMappings:function(a,b){function c(c){return b.hasOwnProperty(c)?b[c]:a[c]}a=a||{},b=b||{};var d={},e=[];for(var f in a)b.hasOwnProperty(f)?e.length&&(d[f]=e,e=[]):e.push(f);var g,h={};for(var i in b){if(d.hasOwnProperty(i))for(g=0;g<d[i].length;g++){var j=d[i][g];h[d[i][g]]=c(j)}h[i]=c(i)}for(g=0;g<e.length;g++)h[e[g]]=c(e[g]);return h}};b.exports=d},{"./ReactChildren":141}],194:[function(a,b){"use strict";function c(){var a=document.createElement("div"),b=a.style;"AnimationEvent"in window||delete g.animationend.animation,"TransitionEvent"in window||delete g.transitionend.transition;for(var c in g){var d=g[c];for(var e in d)if(e in b){h.push(d[e]);break}}}function d(a,b,c){a.addEventListener(b,c,!1)}function e(a,b,c){a.removeEventListener(b,c,!1)}var f=a("./ExecutionEnvironment"),g={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},h=[];f.canUseDOM&&c();var i={addEndEventListener:function(a,b){return 0===h.length?void window.setTimeout(b,0):void h.forEach(function(c){d(a,c,b)})},removeEndEventListener:function(a,b){0!==h.length&&h.forEach(function(c){e(a,c,b)})}};b.exports=i},{"./ExecutionEnvironment":128}],195:[function(a,b){"use strict";var c=a("./React"),d=a("./ReactTransitionChildMapping"),e=a("./Object.assign"),f=a("./cloneWithProps"),g=a("./emptyFunction"),h=c.createClass({displayName:"ReactTransitionGroup",propTypes:{component:c.PropTypes.any,childFactory:c.PropTypes.func},getDefaultProps:function(){return{component:"span",childFactory:g.thatReturnsArgument}},getInitialState:function(){return{children:d.getChildMapping(this.props.children)}},componentWillReceiveProps:function(a){var b=d.getChildMapping(a.children),c=this.state.children;this.setState({children:d.mergeChildMappings(c,b)});var e;for(e in b){var f=c&&c.hasOwnProperty(e);!b[e]||f||this.currentlyTransitioningKeys[e]||this.keysToEnter.push(e)}for(e in c){var g=b&&b.hasOwnProperty(e);!c[e]||g||this.currentlyTransitioningKeys[e]||this.keysToLeave.push(e)}},componentWillMount:function(){this.currentlyTransitioningKeys={},this.keysToEnter=[],this.keysToLeave=[]},componentDidUpdate:function(){var a=this.keysToEnter;this.keysToEnter=[],a.forEach(this.performEnter);var b=this.keysToLeave;this.keysToLeave=[],b.forEach(this.performLeave)},performEnter:function(a){this.currentlyTransitioningKeys[a]=!0;var b=this.refs[a];b.componentWillEnter?b.componentWillEnter(this._handleDoneEntering.bind(this,a)):this._handleDoneEntering(a)},_handleDoneEntering:function(a){var b=this.refs[a];b.componentDidEnter&&b.componentDidEnter(),delete this.currentlyTransitioningKeys[a];var c=d.getChildMapping(this.props.children);c&&c.hasOwnProperty(a)||this.performLeave(a)},performLeave:function(a){this.currentlyTransitioningKeys[a]=!0;var b=this.refs[a];b.componentWillLeave?b.componentWillLeave(this._handleDoneLeaving.bind(this,a)):this._handleDoneLeaving(a)},_handleDoneLeaving:function(a){var b=this.refs[a];b.componentDidLeave&&b.componentDidLeave(),delete this.currentlyTransitioningKeys[a];var c=d.getChildMapping(this.props.children);if(c&&c.hasOwnProperty(a))this.performEnter(a);else{var f=e({},this.state.children);delete f[a],this.setState({children:f})}},render:function(){var a={};for(var b in this.state.children){var d=this.state.children[b];d&&(a[b]=f(this.props.childFactory(d),{ref:b}))}return c.createElement(this.props.component,this.props,a)}});b.exports=h},{"./Object.assign":134,"./React":136,"./ReactTransitionChildMapping":193,"./cloneWithProps":219,"./emptyFunction":227}],196:[function(a,b){(function(c){"use strict";function d(){"production"!==c.env.NODE_ENV?q(B.ReactReconcileTransaction&&v,"ReactUpdates: must inject a reconcile transaction class and batching strategy"):q(B.ReactReconcileTransaction&&v)}function e(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=k.getPooled(),this.reconcileTransaction=B.ReactReconcileTransaction.getPooled()}function f(a,b,c){d(),v.batchedUpdates(a,b,c)}function g(a,b){return a._mountDepth-b._mountDepth}function h(a){var b=a.dirtyComponentsLength;"production"!==c.env.NODE_ENV?q(b===s.length,"Expected flush transaction's stored dirty-components length (%s) to match dirty-components array length (%s).",b,s.length):q(b===s.length),s.sort(g);for(var d=0;b>d;d++){var e=s[d];if(e.isMounted()){var f=e._pendingCallbacks;if(e._pendingCallbacks=null,e.performUpdateIfNecessary(a.reconcileTransaction),f)for(var h=0;h<f.length;h++)a.callbackQueue.enqueue(f[h],e)}}}function i(a,b){return"production"!==c.env.NODE_ENV?q(!b||"function"==typeof b,"enqueueUpdate(...): You called `setProps`, `replaceProps`, `setState`, `replaceState`, or `forceUpdate` with a callback that isn't callable."):q(!b||"function"==typeof b),d(),"production"!==c.env.NODE_ENV?r(null==m.current,"enqueueUpdate(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate."):null,v.isBatchingUpdates?(s.push(a),void(b&&(a._pendingCallbacks?a._pendingCallbacks.push(b):a._pendingCallbacks=[b]))):void v.batchedUpdates(i,a,b)}function j(a,b){"production"!==c.env.NODE_ENV?q(v.isBatchingUpdates,"ReactUpdates.asap: Can't enqueue an asap callback in a context whereupdates are not being batched."):q(v.isBatchingUpdates),t.enqueue(a,b),u=!0}var k=a("./CallbackQueue"),l=a("./PooledClass"),m=a("./ReactCurrentOwner"),n=a("./ReactPerf"),o=a("./Transaction"),p=a("./Object.assign"),q=a("./invariant"),r=a("./warning"),s=[],t=k.getPooled(),u=!1,v=null,w={initialize:function(){this.dirtyComponentsLength=s.length},close:function(){this.dirtyComponentsLength!==s.length?(s.splice(0,this.dirtyComponentsLength),z()):s.length=0}},x={initialize:function(){this.callbackQueue.reset()},close:function(){this.callbackQueue.notifyAll()}},y=[w,x];p(e.prototype,o.Mixin,{getTransactionWrappers:function(){return y},destructor:function(){this.dirtyComponentsLength=null,k.release(this.callbackQueue),this.callbackQueue=null,B.ReactReconcileTransaction.release(this.reconcileTransaction),this.reconcileTransaction=null},perform:function(a,b,c){return o.Mixin.perform.call(this,this.reconcileTransaction.perform,this.reconcileTransaction,a,b,c)}}),l.addPoolingTo(e);var z=n.measure("ReactUpdates","flushBatchedUpdates",function(){for(;s.length||u;){if(s.length){var a=e.getPooled();a.perform(h,null,a),e.release(a)}if(u){u=!1;var b=t;t=k.getPooled(),b.notifyAll(),k.release(b)}}}),A={injectReconcileTransaction:function(a){"production"!==c.env.NODE_ENV?q(a,"ReactUpdates: must provide a reconcile transaction class"):q(a),B.ReactReconcileTransaction=a},injectBatchingStrategy:function(a){"production"!==c.env.NODE_ENV?q(a,"ReactUpdates: must provide a batching strategy"):q(a),"production"!==c.env.NODE_ENV?q("function"==typeof a.batchedUpdates,"ReactUpdates: must provide a batchedUpdates() function"):q("function"==typeof a.batchedUpdates),"production"!==c.env.NODE_ENV?q("boolean"==typeof a.isBatchingUpdates,"ReactUpdates: must provide an isBatchingUpdates boolean attribute"):q("boolean"==typeof a.isBatchingUpdates),v=a}},B={ReactReconcileTransaction:null,batchedUpdates:f,enqueueUpdate:i,flushBatchedUpdates:z,injection:A,asap:j};b.exports=B}).call(this,a("_process"))},{"./CallbackQueue":112,"./Object.assign":134,"./PooledClass":135,"./ReactCurrentOwner":147,"./ReactPerf":180,"./Transaction":213,"./invariant":246,"./warning":266,_process:90}],197:[function(a,b){(function(c){"use strict";var d=a("./LinkedStateMixin"),e=a("./React"),f=a("./ReactComponentWithPureRenderMixin"),g=a("./ReactCSSTransitionGroup"),h=a("./ReactTransitionGroup"),i=a("./ReactUpdates"),j=a("./cx"),k=a("./cloneWithProps"),l=a("./update");e.addons={CSSTransitionGroup:g,LinkedStateMixin:d,PureRenderMixin:f,TransitionGroup:h,batchedUpdates:i.batchedUpdates,classSet:j,cloneWithProps:k,update:l},"production"!==c.env.NODE_ENV&&(e.addons.Perf=a("./ReactDefaultPerf"),e.addons.TestUtils=a("./ReactTestUtils")),b.exports=e}).call(this,a("_process"))},{"./LinkedStateMixin":130,"./React":136,"./ReactCSSTransitionGroup":139,"./ReactComponentWithPureRenderMixin":144,"./ReactDefaultPerf":161,"./ReactTestUtils":191,"./ReactTransitionGroup":195,"./ReactUpdates":196,"./cloneWithProps":219,"./cx":224,"./update":265,_process:90}],198:[function(a,b){"use strict";var c=a("./DOMProperty"),d=c.injection.MUST_USE_ATTRIBUTE,e={Properties:{cx:d,cy:d,d:d,dx:d,dy:d,fill:d,fillOpacity:d,fontFamily:d,fontSize:d,fx:d,fy:d,gradientTransform:d,gradientUnits:d,markerEnd:d,markerMid:d,markerStart:d,offset:d,opacity:d,patternContentUnits:d,patternUnits:d,points:d,preserveAspectRatio:d,r:d,rx:d,ry:d,spreadMethod:d,stopColor:d,stopOpacity:d,stroke:d,strokeDasharray:d,strokeLinecap:d,strokeOpacity:d,strokeWidth:d,textAnchor:d,transform:d,version:d,viewBox:d,x1:d,x2:d,x:d,y1:d,y2:d,y:d},DOMAttributeNames:{fillOpacity:"fill-opacity",fontFamily:"font-family",fontSize:"font-size",gradientTransform:"gradientTransform",gradientUnits:"gradientUnits",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",patternContentUnits:"patternContentUnits",patternUnits:"patternUnits",preserveAspectRatio:"preserveAspectRatio",spreadMethod:"spreadMethod",stopColor:"stop-color",stopOpacity:"stop-opacity",strokeDasharray:"stroke-dasharray",strokeLinecap:"stroke-linecap",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",textAnchor:"text-anchor",viewBox:"viewBox"}};b.exports=e},{"./DOMProperty":117}],199:[function(a,b){"use strict";function c(a){if("selectionStart"in a&&g.hasSelectionCapabilities(a))return{start:a.selectionStart,end:a.selectionEnd};if(window.getSelection){var b=window.getSelection();return{anchorNode:b.anchorNode,anchorOffset:b.anchorOffset,focusNode:b.focusNode,focusOffset:b.focusOffset}}if(document.selection){var c=document.selection.createRange();return{parentElement:c.parentElement(),text:c.text,top:c.boundingTop,left:c.boundingLeft}}}function d(a){if(!r&&null!=o&&o==i()){var b=c(o);if(!q||!l(q,b)){q=b;var d=h.getPooled(n.select,p,a);return d.type="select",d.target=o,f.accumulateTwoPhaseDispatches(d),d}}}var e=a("./EventConstants"),f=a("./EventPropagators"),g=a("./ReactInputSelection"),h=a("./SyntheticEvent"),i=a("./getActiveElement"),j=a("./isTextInputElement"),k=a("./keyOf"),l=a("./shallowEqual"),m=e.topLevelTypes,n={select:{phasedRegistrationNames:{bubbled:k({onSelect:null}),captured:k({onSelectCapture:null})},dependencies:[m.topBlur,m.topContextMenu,m.topFocus,m.topKeyDown,m.topMouseDown,m.topMouseUp,m.topSelectionChange]}},o=null,p=null,q=null,r=!1,s={eventTypes:n,extractEvents:function(a,b,c,e){switch(a){case m.topFocus:(j(b)||"true"===b.contentEditable)&&(o=b,p=c,q=null);break;case m.topBlur:o=null,p=null,q=null;break;case m.topMouseDown:r=!0;break;case m.topContextMenu:case m.topMouseUp:return r=!1,d(e);case m.topSelectionChange:case m.topKeyDown:case m.topKeyUp:return d(e)}}};b.exports=s},{"./EventConstants":122,"./EventPropagators":127,"./ReactInputSelection":170,"./SyntheticEvent":205,"./getActiveElement":233,"./isTextInputElement":249,"./keyOf":253,"./shallowEqual":261}],200:[function(a,b){"use strict";var c=Math.pow(2,53),d={createReactRootIndex:function(){return Math.ceil(Math.random()*c)}};b.exports=d},{}],201:[function(a,b){(function(c){"use strict";var d=a("./EventConstants"),e=a("./EventPluginUtils"),f=a("./EventPropagators"),g=a("./SyntheticClipboardEvent"),h=a("./SyntheticEvent"),i=a("./SyntheticFocusEvent"),j=a("./SyntheticKeyboardEvent"),k=a("./SyntheticMouseEvent"),l=a("./SyntheticDragEvent"),m=a("./SyntheticTouchEvent"),n=a("./SyntheticUIEvent"),o=a("./SyntheticWheelEvent"),p=a("./getEventCharCode"),q=a("./invariant"),r=a("./keyOf"),s=a("./warning"),t=d.topLevelTypes,u={blur:{phasedRegistrationNames:{bubbled:r({onBlur:!0}),captured:r({onBlurCapture:!0})}},click:{phasedRegistrationNames:{bubbled:r({onClick:!0}),captured:r({onClickCapture:!0})}},contextMenu:{phasedRegistrationNames:{bubbled:r({onContextMenu:!0}),captured:r({onContextMenuCapture:!0})}},copy:{phasedRegistrationNames:{bubbled:r({onCopy:!0}),captured:r({onCopyCapture:!0})}},cut:{phasedRegistrationNames:{bubbled:r({onCut:!0}),captured:r({onCutCapture:!0})}},doubleClick:{phasedRegistrationNames:{bubbled:r({onDoubleClick:!0}),captured:r({onDoubleClickCapture:!0})}},drag:{phasedRegistrationNames:{bubbled:r({onDrag:!0}),captured:r({onDragCapture:!0})}},dragEnd:{phasedRegistrationNames:{bubbled:r({onDragEnd:!0}),captured:r({onDragEndCapture:!0})}},dragEnter:{phasedRegistrationNames:{bubbled:r({onDragEnter:!0}),captured:r({onDragEnterCapture:!0})}},dragExit:{phasedRegistrationNames:{bubbled:r({onDragExit:!0}),captured:r({onDragExitCapture:!0})}},dragLeave:{phasedRegistrationNames:{bubbled:r({onDragLeave:!0}),captured:r({onDragLeaveCapture:!0})}},dragOver:{phasedRegistrationNames:{bubbled:r({onDragOver:!0}),captured:r({onDragOverCapture:!0})}},dragStart:{phasedRegistrationNames:{bubbled:r({onDragStart:!0}),captured:r({onDragStartCapture:!0})}},drop:{phasedRegistrationNames:{bubbled:r({onDrop:!0}),captured:r({onDropCapture:!0})}},focus:{phasedRegistrationNames:{bubbled:r({onFocus:!0}),captured:r({onFocusCapture:!0})}},input:{phasedRegistrationNames:{bubbled:r({onInput:!0}),captured:r({onInputCapture:!0})}},keyDown:{phasedRegistrationNames:{bubbled:r({onKeyDown:!0}),captured:r({onKeyDownCapture:!0})}},keyPress:{phasedRegistrationNames:{bubbled:r({onKeyPress:!0}),captured:r({onKeyPressCapture:!0})}},keyUp:{phasedRegistrationNames:{bubbled:r({onKeyUp:!0}),captured:r({onKeyUpCapture:!0})}},load:{phasedRegistrationNames:{bubbled:r({onLoad:!0}),captured:r({onLoadCapture:!0})}},error:{phasedRegistrationNames:{bubbled:r({onError:!0}),captured:r({onErrorCapture:!0})}},mouseDown:{phasedRegistrationNames:{bubbled:r({onMouseDown:!0}),captured:r({onMouseDownCapture:!0})}},mouseMove:{phasedRegistrationNames:{bubbled:r({onMouseMove:!0}),captured:r({onMouseMoveCapture:!0})}},mouseOut:{phasedRegistrationNames:{bubbled:r({onMouseOut:!0}),captured:r({onMouseOutCapture:!0})}},mouseOver:{phasedRegistrationNames:{bubbled:r({onMouseOver:!0}),captured:r({onMouseOverCapture:!0})}},mouseUp:{phasedRegistrationNames:{bubbled:r({onMouseUp:!0}),captured:r({onMouseUpCapture:!0})}},paste:{phasedRegistrationNames:{bubbled:r({onPaste:!0}),captured:r({onPasteCapture:!0})}},reset:{phasedRegistrationNames:{bubbled:r({onReset:!0}),captured:r({onResetCapture:!0})}},scroll:{phasedRegistrationNames:{bubbled:r({onScroll:!0}),captured:r({onScrollCapture:!0})}},submit:{phasedRegistrationNames:{bubbled:r({onSubmit:!0}),captured:r({onSubmitCapture:!0})}},touchCancel:{phasedRegistrationNames:{bubbled:r({onTouchCancel:!0}),captured:r({onTouchCancelCapture:!0})}},touchEnd:{phasedRegistrationNames:{bubbled:r({onTouchEnd:!0}),captured:r({onTouchEndCapture:!0})}},touchMove:{phasedRegistrationNames:{bubbled:r({onTouchMove:!0}),captured:r({onTouchMoveCapture:!0})}},touchStart:{phasedRegistrationNames:{bubbled:r({onTouchStart:!0}),captured:r({onTouchStartCapture:!0})}},wheel:{phasedRegistrationNames:{bubbled:r({onWheel:!0}),captured:r({onWheelCapture:!0})}}},v={topBlur:u.blur,topClick:u.click,topContextMenu:u.contextMenu,topCopy:u.copy,topCut:u.cut,topDoubleClick:u.doubleClick,topDrag:u.drag,topDragEnd:u.dragEnd,topDragEnter:u.dragEnter,topDragExit:u.dragExit,topDragLeave:u.dragLeave,topDragOver:u.dragOver,topDragStart:u.dragStart,topDrop:u.drop,topError:u.error,topFocus:u.focus,topInput:u.input,topKeyDown:u.keyDown,topKeyPress:u.keyPress,topKeyUp:u.keyUp,topLoad:u.load,topMouseDown:u.mouseDown,topMouseMove:u.mouseMove,topMouseOut:u.mouseOut,topMouseOver:u.mouseOver,topMouseUp:u.mouseUp,topPaste:u.paste,topReset:u.reset,topScroll:u.scroll,topSubmit:u.submit,topTouchCancel:u.touchCancel,topTouchEnd:u.touchEnd,topTouchMove:u.touchMove,topTouchStart:u.touchStart,topWheel:u.wheel};for(var w in v)v[w].dependencies=[w];var x={eventTypes:u,executeDispatch:function(a,b,d){var f=e.executeDispatch(a,b,d);"production"!==c.env.NODE_ENV?s("boolean"!=typeof f,"Returning `false` from an event handler is deprecated and will be ignored in a future release. Instead, manually call e.stopPropagation() or e.preventDefault(), as appropriate."):null,f===!1&&(a.stopPropagation(),a.preventDefault())},extractEvents:function(a,b,d,e){var r=v[a];if(!r)return null;var s;switch(a){case t.topInput:case t.topLoad:case t.topError:case t.topReset:case t.topSubmit:s=h;break;case t.topKeyPress:if(0===p(e))return null;case t.topKeyDown:case t.topKeyUp:s=j;break;case t.topBlur:case t.topFocus:s=i;break;case t.topClick:if(2===e.button)return null;case t.topContextMenu:case t.topDoubleClick:case t.topMouseDown:case t.topMouseMove:case t.topMouseOut:case t.topMouseOver:case t.topMouseUp:s=k;break;case t.topDrag:case t.topDragEnd:case t.topDragEnter:case t.topDragExit:case t.topDragLeave:case t.topDragOver:case t.topDragStart:case t.topDrop:s=l;break;case t.topTouchCancel:case t.topTouchEnd:case t.topTouchMove:case t.topTouchStart:s=m;break;case t.topScroll:s=n;break;case t.topWheel:s=o;break;case t.topCopy:case t.topCut:case t.topPaste:s=g}"production"!==c.env.NODE_ENV?q(s,"SimpleEventPlugin: Unhandled event type, `%s`.",a):q(s);var u=s.getPooled(r,d,e);return f.accumulateTwoPhaseDispatches(u),u}};b.exports=x}).call(this,a("_process"))},{"./EventConstants":122,"./EventPluginUtils":126,"./EventPropagators":127,"./SyntheticClipboardEvent":202,"./SyntheticDragEvent":204,"./SyntheticEvent":205,"./SyntheticFocusEvent":206,"./SyntheticKeyboardEvent":208,"./SyntheticMouseEvent":209,"./SyntheticTouchEvent":210,"./SyntheticUIEvent":211,"./SyntheticWheelEvent":212,"./getEventCharCode":234,"./invariant":246,"./keyOf":253,"./warning":266,_process:90}],202:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticEvent"),e={clipboardData:function(a){return"clipboardData"in a?a.clipboardData:window.clipboardData}};d.augmentClass(c,e),b.exports=c},{"./SyntheticEvent":205}],203:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticEvent"),e={data:null};d.augmentClass(c,e),b.exports=c},{"./SyntheticEvent":205}],204:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticMouseEvent"),e={dataTransfer:null};d.augmentClass(c,e),b.exports=c},{"./SyntheticMouseEvent":209}],205:[function(a,b){"use strict";function c(a,b,c){this.dispatchConfig=a,this.dispatchMarker=b,this.nativeEvent=c;var d=this.constructor.Interface;for(var e in d)if(d.hasOwnProperty(e)){var g=d[e];this[e]=g?g(c):c[e]}var h=null!=c.defaultPrevented?c.defaultPrevented:c.returnValue===!1;this.isDefaultPrevented=h?f.thatReturnsTrue:f.thatReturnsFalse,this.isPropagationStopped=f.thatReturnsFalse}var d=a("./PooledClass"),e=a("./Object.assign"),f=a("./emptyFunction"),g=a("./getEventTarget"),h={type:null,target:g,currentTarget:f.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};e(c.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a.preventDefault?a.preventDefault():a.returnValue=!1,this.isDefaultPrevented=f.thatReturnsTrue},stopPropagation:function(){var a=this.nativeEvent;a.stopPropagation?a.stopPropagation():a.cancelBubble=!0,this.isPropagationStopped=f.thatReturnsTrue},persist:function(){this.isPersistent=f.thatReturnsTrue},isPersistent:f.thatReturnsFalse,destructor:function(){var a=this.constructor.Interface;for(var b in a)this[b]=null;this.dispatchConfig=null,this.dispatchMarker=null,this.nativeEvent=null}}),c.Interface=h,c.augmentClass=function(a,b){var c=this,f=Object.create(c.prototype);e(f,a.prototype),a.prototype=f,a.prototype.constructor=a,a.Interface=e({},c.Interface,b),a.augmentClass=c.augmentClass,d.addPoolingTo(a,d.threeArgumentPooler)},d.addPoolingTo(c,d.threeArgumentPooler),b.exports=c},{"./Object.assign":134,"./PooledClass":135,"./emptyFunction":227,"./getEventTarget":237}],206:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticUIEvent"),e={relatedTarget:null};d.augmentClass(c,e),b.exports=c},{"./SyntheticUIEvent":211}],207:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticEvent"),e={data:null};d.augmentClass(c,e),b.exports=c},{"./SyntheticEvent":205}],208:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticUIEvent"),e=a("./getEventCharCode"),f=a("./getEventKey"),g=a("./getEventModifierState"),h={key:f,location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:g,charCode:function(a){return"keypress"===a.type?e(a):0},keyCode:function(a){return"keydown"===a.type||"keyup"===a.type?a.keyCode:0},which:function(a){return"keypress"===a.type?e(a):"keydown"===a.type||"keyup"===a.type?a.keyCode:0}};d.augmentClass(c,h),b.exports=c},{"./SyntheticUIEvent":211,"./getEventCharCode":234,"./getEventKey":235,"./getEventModifierState":236}],209:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticUIEvent"),e=a("./ViewportMetrics"),f=a("./getEventModifierState"),g={screenX:null,screenY:null,clientX:null,clientY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:f,button:function(a){var b=a.button;return"which"in a?b:2===b?2:4===b?1:0},buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},pageX:function(a){return"pageX"in a?a.pageX:a.clientX+e.currentScrollLeft},pageY:function(a){return"pageY"in a?a.pageY:a.clientY+e.currentScrollTop}};d.augmentClass(c,g),b.exports=c},{"./SyntheticUIEvent":211,"./ViewportMetrics":214,"./getEventModifierState":236}],210:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticUIEvent"),e=a("./getEventModifierState"),f={touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:e};d.augmentClass(c,f),b.exports=c},{"./SyntheticUIEvent":211,"./getEventModifierState":236}],211:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticEvent"),e=a("./getEventTarget"),f={view:function(a){if(a.view)return a.view;var b=e(a);if(null!=b&&b.window===b)return b;var c=b.ownerDocument;return c?c.defaultView||c.parentWindow:window},detail:function(a){return a.detail||0}};d.augmentClass(c,f),b.exports=c},{"./SyntheticEvent":205,"./getEventTarget":237}],212:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticMouseEvent"),e={deltaX:function(a){return"deltaX"in a?a.deltaX:"wheelDeltaX"in a?-a.wheelDeltaX:0},deltaY:function(a){return"deltaY"in a?a.deltaY:"wheelDeltaY"in a?-a.wheelDeltaY:"wheelDelta"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null};d.augmentClass(c,e),b.exports=c},{"./SyntheticMouseEvent":209}],213:[function(a,b){(function(c){"use strict";var d=a("./invariant"),e={reinitializeTransaction:function(){this.transactionWrappers=this.getTransactionWrappers(),this.wrapperInitData?this.wrapperInitData.length=0:this.wrapperInitData=[],this._isInTransaction=!1},_isInTransaction:!1,getTransactionWrappers:null,isInTransaction:function(){return!!this._isInTransaction},perform:function(a,b,e,f,g,h,i,j){"production"!==c.env.NODE_ENV?d(!this.isInTransaction(),"Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction."):d(!this.isInTransaction());var k,l;try{this._isInTransaction=!0,k=!0,this.initializeAll(0),l=a.call(b,e,f,g,h,i,j),k=!1}finally{try{if(k)try{this.closeAll(0)}catch(m){}else this.closeAll(0)}finally{this._isInTransaction=!1}}return l},initializeAll:function(a){for(var b=this.transactionWrappers,c=a;c<b.length;c++){var d=b[c];try{this.wrapperInitData[c]=f.OBSERVED_ERROR,this.wrapperInitData[c]=d.initialize?d.initialize.call(this):null}finally{if(this.wrapperInitData[c]===f.OBSERVED_ERROR)try{this.initializeAll(c+1)}catch(e){}}}},closeAll:function(a){"production"!==c.env.NODE_ENV?d(this.isInTransaction(),"Transaction.closeAll(): Cannot close transaction when none are open."):d(this.isInTransaction());for(var b=this.transactionWrappers,e=a;e<b.length;e++){var g,h=b[e],i=this.wrapperInitData[e];try{g=!0,i!==f.OBSERVED_ERROR&&h.close&&h.close.call(this,i),g=!1}finally{if(g)try{this.closeAll(e+1)}catch(j){}}}this.wrapperInitData.length=0}},f={Mixin:e,OBSERVED_ERROR:{}};b.exports=f}).call(this,a("_process"))},{"./invariant":246,_process:90}],214:[function(a,b){"use strict";var c=a("./getUnboundedScrollPosition"),d={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(){var a=c(window);d.currentScrollLeft=a.x,d.currentScrollTop=a.y}};b.exports=d},{"./getUnboundedScrollPosition":242}],215:[function(a,b){(function(c){"use strict";function d(a,b){if("production"!==c.env.NODE_ENV?e(null!=b,"accumulateInto(...): Accumulated items must not be null or undefined."):e(null!=b),null==a)return b;var d=Array.isArray(a),f=Array.isArray(b);return d&&f?(a.push.apply(a,b),a):d?(a.push(b),a):f?[a].concat(b):[a,b]}var e=a("./invariant");b.exports=d}).call(this,a("_process"))},{"./invariant":246,_process:90}],216:[function(a,b){"use strict";function c(a){for(var b=1,c=0,e=0;e<a.length;e++)b=(b+a.charCodeAt(e))%d,c=(c+b)%d;return b|c<<16}var d=65521;b.exports=c},{}],217:[function(a,b){function c(a){return a.replace(d,function(a,b){return b.toUpperCase()})}var d=/-(.)/g;b.exports=c},{}],218:[function(a,b){"use strict";function c(a){return d(a.replace(e,"ms-"))}var d=a("./camelize"),e=/^-ms-/;b.exports=c},{"./camelize":217}],219:[function(a,b){(function(c){"use strict";function d(a,b){"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?h(!a.ref,"You are calling cloneWithProps() on a child with a ref. This is dangerous because you're creating a new child which will not be added as a ref to its parent."):null);var d=f.mergeProps(b,a.props);return!d.hasOwnProperty(i)&&a.props.hasOwnProperty(i)&&(d.children=a.props.children),e.createElement(a.type,d)}var e=a("./ReactElement"),f=a("./ReactPropTransferer"),g=a("./keyOf"),h=a("./warning"),i=g({children:null});b.exports=d}).call(this,a("_process"))},{"./ReactElement":163,"./ReactPropTransferer":181,"./keyOf":253,"./warning":266,_process:90}],220:[function(a,b){function c(a,b){return a&&b?a===b?!0:d(a)?!1:d(b)?c(a,b.parentNode):a.contains?a.contains(b):a.compareDocumentPosition?!!(16&a.compareDocumentPosition(b)):!1:!1}var d=a("./isTextNode");b.exports=c},{"./isTextNode":250}],221:[function(a,b){function c(a){return!!a&&("object"==typeof a||"function"==typeof a)&&"length"in a&&!("setInterval"in a)&&"number"!=typeof a.nodeType&&(Array.isArray(a)||"callee"in a||"item"in a)}function d(a){return c(a)?Array.isArray(a)?a.slice():e(a):[a]}var e=a("./toArray");b.exports=d},{"./toArray":263}],222:[function(a,b){(function(c){"use strict";function d(a){var b=f.createFactory(a),d=e.createClass({displayName:"ReactFullPageComponent"+a,componentWillUnmount:function(){"production"!==c.env.NODE_ENV?g(!1,"%s tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.",this.constructor.displayName):g(!1)
-},render:function(){return b(this.props)}});return d}var e=a("./ReactCompositeComponent"),f=a("./ReactElement"),g=a("./invariant");b.exports=d}).call(this,a("_process"))},{"./ReactCompositeComponent":145,"./ReactElement":163,"./invariant":246,_process:90}],223:[function(a,b){(function(c){function d(a){var b=a.match(k);return b&&b[1].toLowerCase()}function e(a,b){var e=j;"production"!==c.env.NODE_ENV?i(!!j,"createNodesFromMarkup dummy not initialized"):i(!!j);var f=d(a),k=f&&h(f);if(k){e.innerHTML=k[1]+a+k[2];for(var l=k[0];l--;)e=e.lastChild}else e.innerHTML=a;var m=e.getElementsByTagName("script");m.length&&("production"!==c.env.NODE_ENV?i(b,"createNodesFromMarkup(...): Unexpected <script> element rendered."):i(b),g(m).forEach(b));for(var n=g(e.childNodes);e.lastChild;)e.removeChild(e.lastChild);return n}var f=a("./ExecutionEnvironment"),g=a("./createArrayFrom"),h=a("./getMarkupWrap"),i=a("./invariant"),j=f.canUseDOM?document.createElement("div"):null,k=/^\s*<(\w+)/;b.exports=e}).call(this,a("_process"))},{"./ExecutionEnvironment":128,"./createArrayFrom":221,"./getMarkupWrap":238,"./invariant":246,_process:90}],224:[function(a,b){function c(a){return"object"==typeof a?Object.keys(a).filter(function(b){return a[b]}).join(" "):Array.prototype.join.call(arguments," ")}b.exports=c},{}],225:[function(a,b){"use strict";function c(a,b){var c=null==b||"boolean"==typeof b||""===b;if(c)return"";var d=isNaN(b);return d||0===b||e.hasOwnProperty(a)&&e[a]?""+b:("string"==typeof b&&(b=b.trim()),b+"px")}var d=a("./CSSProperty"),e=d.isUnitlessNumber;b.exports=c},{"./CSSProperty":110}],226:[function(a,b){(function(c){function d(a,b,d,g,h){var i=!1;if("production"!==c.env.NODE_ENV){var j=function(){return"production"!==c.env.NODE_ENV?f(i,a+"."+b+" will be deprecated in a future version. "+("Use "+a+"."+d+" instead.")):null,i=!0,h.apply(g,arguments)};return j.displayName=a+"_"+b,e(j,h)}return h}var e=a("./Object.assign"),f=a("./warning");b.exports=d}).call(this,a("_process"))},{"./Object.assign":134,"./warning":266,_process:90}],227:[function(a,b){function c(a){return function(){return a}}function d(){}d.thatReturns=c,d.thatReturnsFalse=c(!1),d.thatReturnsTrue=c(!0),d.thatReturnsNull=c(null),d.thatReturnsThis=function(){return this},d.thatReturnsArgument=function(a){return a},b.exports=d},{}],228:[function(a,b){(function(a){"use strict";var c={};"production"!==a.env.NODE_ENV&&Object.freeze(c),b.exports=c}).call(this,a("_process"))},{_process:90}],229:[function(a,b){"use strict";function c(a){return e[a]}function d(a){return(""+a).replace(f,c)}var e={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},f=/[&><"']/g;b.exports=d},{}],230:[function(a,b){(function(c){"use strict";function d(a,b,d){var e=a,g=!e.hasOwnProperty(d);if("production"!==c.env.NODE_ENV?h(g,"flattenChildren(...): Encountered two children with the same key, `%s`. Child keys must be unique; when two children share a key, only the first child will be used.",d):null,g&&null!=b){var i,j=typeof b;i="string"===j?f(b):"number"===j?f(""+b):b,e[d]=i}}function e(a){if(null==a)return a;var b={};return g(a,d,b),b}var f=a("./ReactTextComponent"),g=a("./traverseAllChildren"),h=a("./warning");b.exports=e}).call(this,a("_process"))},{"./ReactTextComponent":192,"./traverseAllChildren":264,"./warning":266,_process:90}],231:[function(a,b){"use strict";function c(a){try{a.focus()}catch(b){}}b.exports=c},{}],232:[function(a,b){"use strict";var c=function(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)};b.exports=c},{}],233:[function(a,b){function c(){try{return document.activeElement||document.body}catch(a){return document.body}}b.exports=c},{}],234:[function(a,b){"use strict";function c(a){var b,c=a.keyCode;return"charCode"in a?(b=a.charCode,0===b&&13===c&&(b=13)):b=c,b>=32||13===b?b:0}b.exports=c},{}],235:[function(a,b){"use strict";function c(a){if(a.key){var b=e[a.key]||a.key;if("Unidentified"!==b)return b}if("keypress"===a.type){var c=d(a);return 13===c?"Enter":String.fromCharCode(c)}return"keydown"===a.type||"keyup"===a.type?f[a.keyCode]||"Unidentified":""}var d=a("./getEventCharCode"),e={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},f={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"};b.exports=c},{"./getEventCharCode":234}],236:[function(a,b){"use strict";function c(a){var b=this,c=b.nativeEvent;if(c.getModifierState)return c.getModifierState(a);var d=e[a];return d?!!c[d]:!1}function d(){return c}var e={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};b.exports=d},{}],237:[function(a,b){"use strict";function c(a){var b=a.target||a.srcElement||window;return 3===b.nodeType?b.parentNode:b}b.exports=c},{}],238:[function(a,b){(function(c){function d(a){return"production"!==c.env.NODE_ENV?f(!!g,"Markup wrapping node not initialized"):f(!!g),m.hasOwnProperty(a)||(a="*"),h.hasOwnProperty(a)||(g.innerHTML="*"===a?"<link />":"<"+a+"></"+a+">",h[a]=!g.firstChild),h[a]?m[a]:null}var e=a("./ExecutionEnvironment"),f=a("./invariant"),g=e.canUseDOM?document.createElement("div"):null,h={circle:!0,defs:!0,ellipse:!0,g:!0,line:!0,linearGradient:!0,path:!0,polygon:!0,polyline:!0,radialGradient:!0,rect:!0,stop:!0,text:!0},i=[1,'<select multiple="true">',"</select>"],j=[1,"<table>","</table>"],k=[3,"<table><tbody><tr>","</tr></tbody></table>"],l=[1,"<svg>","</svg>"],m={"*":[1,"?<div>","</div>"],area:[1,"<map>","</map>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],legend:[1,"<fieldset>","</fieldset>"],param:[1,"<object>","</object>"],tr:[2,"<table><tbody>","</tbody></table>"],optgroup:i,option:i,caption:j,colgroup:j,tbody:j,tfoot:j,thead:j,td:k,th:k,circle:l,defs:l,ellipse:l,g:l,line:l,linearGradient:l,path:l,polygon:l,polyline:l,radialGradient:l,rect:l,stop:l,text:l};b.exports=d}).call(this,a("_process"))},{"./ExecutionEnvironment":128,"./invariant":246,_process:90}],239:[function(a,b){"use strict";function c(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function d(a){for(;a;){if(a.nextSibling)return a.nextSibling;a=a.parentNode}}function e(a,b){for(var e=c(a),f=0,g=0;e;){if(3==e.nodeType){if(g=f+e.textContent.length,b>=f&&g>=b)return{node:e,offset:b-f};f=g}e=c(d(e))}}b.exports=e},{}],240:[function(a,b){"use strict";function c(a){return a?a.nodeType===d?a.documentElement:a.firstChild:null}var d=9;b.exports=c},{}],241:[function(a,b){"use strict";function c(){return!e&&d.canUseDOM&&(e="textContent"in document.documentElement?"textContent":"innerText"),e}var d=a("./ExecutionEnvironment"),e=null;b.exports=c},{"./ExecutionEnvironment":128}],242:[function(a,b){"use strict";function c(a){return a===window?{x:window.pageXOffset||document.documentElement.scrollLeft,y:window.pageYOffset||document.documentElement.scrollTop}:{x:a.scrollLeft,y:a.scrollTop}}b.exports=c},{}],243:[function(a,b){function c(a){return a.replace(d,"-$1").toLowerCase()}var d=/([A-Z])/g;b.exports=c},{}],244:[function(a,b){"use strict";function c(a){return d(a).replace(e,"-ms-")}var d=a("./hyphenate"),e=/^ms-/;b.exports=c},{"./hyphenate":243}],245:[function(a,b){(function(c){"use strict";function d(a,b){var d;if("production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?e(a&&("function"==typeof a.type||"string"==typeof a.type),"Only functions or strings can be mounted as React components."):null,a.type._mockedReactClassConstructor)){g._isLegacyCallWarningEnabled=!1;try{d=new a.type._mockedReactClassConstructor(a.props)}finally{g._isLegacyCallWarningEnabled=!0}f.isValidElement(d)&&(d=new d.type(d.props));var j=d.render;if(j)return j._isMockFunction&&!j._getMockImplementation()&&j.mockImplementation(i.getEmptyComponent),d.construct(a),d;a=i.getEmptyComponent()}return d="string"==typeof a.type?h.createInstanceForTag(a.type,a.props,b):new a.type(a.props),"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?e("function"==typeof d.construct&&"function"==typeof d.mountComponent&&"function"==typeof d.receiveComponent,"Only React Components can be mounted."):null),d.construct(a),d}var e=a("./warning"),f=a("./ReactElement"),g=a("./ReactLegacyElement"),h=a("./ReactNativeComponent"),i=a("./ReactEmptyComponent");b.exports=d}).call(this,a("_process"))},{"./ReactElement":163,"./ReactEmptyComponent":165,"./ReactLegacyElement":172,"./ReactNativeComponent":178,"./warning":266,_process:90}],246:[function(a,b){(function(a){"use strict";var c=function(b,c,d,e,f,g,h,i){if("production"!==a.env.NODE_ENV&&void 0===c)throw new Error("invariant requires an error message argument");if(!b){var j;if(void 0===c)j=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var k=[d,e,f,g,h,i],l=0;j=new Error("Invariant Violation: "+c.replace(/%s/g,function(){return k[l++]}))}throw j.framesToPop=1,j}};b.exports=c}).call(this,a("_process"))},{_process:90}],247:[function(a,b){"use strict";function c(a,b){if(!e.canUseDOM||b&&!("addEventListener"in document))return!1;var c="on"+a,f=c in document;if(!f){var g=document.createElement("div");g.setAttribute(c,"return;"),f="function"==typeof g[c]}return!f&&d&&"wheel"===a&&(f=document.implementation.hasFeature("Events.wheel","3.0")),f}var d,e=a("./ExecutionEnvironment");e.canUseDOM&&(d=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0),b.exports=c},{"./ExecutionEnvironment":128}],248:[function(a,b){function c(a){return!(!a||!("function"==typeof Node?a instanceof Node:"object"==typeof a&&"number"==typeof a.nodeType&&"string"==typeof a.nodeName))}b.exports=c},{}],249:[function(a,b){"use strict";function c(a){return a&&("INPUT"===a.nodeName&&d[a.type]||"TEXTAREA"===a.nodeName)}var d={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};b.exports=c},{}],250:[function(a,b){function c(a){return d(a)&&3==a.nodeType}var d=a("./isNode");b.exports=c},{"./isNode":248}],251:[function(a,b){"use strict";function c(a){a||(a="");var b,c=arguments.length;if(c>1)for(var d=1;c>d;d++)b=arguments[d],b&&(a=(a?a+" ":"")+b);return a}b.exports=c},{}],252:[function(a,b){(function(c){"use strict";var d=a("./invariant"),e=function(a){var b,e={};"production"!==c.env.NODE_ENV?d(a instanceof Object&&!Array.isArray(a),"keyMirror(...): Argument must be an object."):d(a instanceof Object&&!Array.isArray(a));for(b in a)a.hasOwnProperty(b)&&(e[b]=b);return e};b.exports=e}).call(this,a("_process"))},{"./invariant":246,_process:90}],253:[function(a,b){var c=function(a){var b;for(b in a)if(a.hasOwnProperty(b))return b;return null};b.exports=c},{}],254:[function(a,b){"use strict";function c(a,b,c){if(!a)return null;var e={};for(var f in a)d.call(a,f)&&(e[f]=b.call(c,a[f],f,a));return e}var d=Object.prototype.hasOwnProperty;b.exports=c},{}],255:[function(a,b){"use strict";function c(a){var b={};return function(c){return b.hasOwnProperty(c)?b[c]:b[c]=a.call(this,c)}}b.exports=c},{}],256:[function(a,b){(function(c){"use strict";function d(a){"production"!==c.env.NODE_ENV?e(a&&!/[^a-z0-9_]/.test(a),"You must provide an eventName using only the characters [a-z0-9_]"):e(a&&!/[^a-z0-9_]/.test(a))}var e=a("./invariant");b.exports=d}).call(this,a("_process"))},{"./invariant":246,_process:90}],257:[function(a,b){(function(c){"use strict";function d(a){return"production"!==c.env.NODE_ENV?f(e.isValidElement(a),"onlyChild must be passed a children with exactly one child."):f(e.isValidElement(a)),a}var e=a("./ReactElement"),f=a("./invariant");b.exports=d}).call(this,a("_process"))},{"./ReactElement":163,"./invariant":246,_process:90}],258:[function(a,b){"use strict";var c,d=a("./ExecutionEnvironment");d.canUseDOM&&(c=window.performance||window.msPerformance||window.webkitPerformance),b.exports=c||{}},{"./ExecutionEnvironment":128}],259:[function(a,b){var c=a("./performance");c&&c.now||(c=Date);var d=c.now.bind(c);b.exports=d},{"./performance":258}],260:[function(a,b){"use strict";var c=a("./ExecutionEnvironment"),d=/^[ \r\n\t\f]/,e=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,f=function(a,b){a.innerHTML=b};if(c.canUseDOM){var g=document.createElement("div");g.innerHTML=" ",""===g.innerHTML&&(f=function(a,b){if(a.parentNode&&a.parentNode.replaceChild(a,a),d.test(b)||"<"===b[0]&&e.test(b)){a.innerHTML=""+b;var c=a.firstChild;1===c.data.length?a.removeChild(c):c.deleteData(0,1)}else a.innerHTML=b})}b.exports=f},{"./ExecutionEnvironment":128}],261:[function(a,b){"use strict";function c(a,b){if(a===b)return!0;var c;for(c in a)if(a.hasOwnProperty(c)&&(!b.hasOwnProperty(c)||a[c]!==b[c]))return!1;for(c in b)if(b.hasOwnProperty(c)&&!a.hasOwnProperty(c))return!1;return!0}b.exports=c},{}],262:[function(a,b){"use strict";function c(a,b){return a&&b&&a.type===b.type&&a.key===b.key&&a._owner===b._owner?!0:!1}b.exports=c},{}],263:[function(a,b){(function(c){function d(a){var b=a.length;if("production"!==c.env.NODE_ENV?e(!Array.isArray(a)&&("object"==typeof a||"function"==typeof a),"toArray: Array-like object expected"):e(!Array.isArray(a)&&("object"==typeof a||"function"==typeof a)),"production"!==c.env.NODE_ENV?e("number"==typeof b,"toArray: Object needs a length property"):e("number"==typeof b),"production"!==c.env.NODE_ENV?e(0===b||b-1 in a,"toArray: Object should have keys for indices"):e(0===b||b-1 in a),a.hasOwnProperty)try{return Array.prototype.slice.call(a)}catch(d){}for(var f=Array(b),g=0;b>g;g++)f[g]=a[g];return f}var e=a("./invariant");b.exports=d}).call(this,a("_process"))},{"./invariant":246,_process:90}],264:[function(a,b){(function(c){"use strict";function d(a){return n[a]}function e(a,b){return a&&null!=a.key?g(a.key):b.toString(36)}function f(a){return(""+a).replace(o,d)}function g(a){return"$"+f(a)}function h(a,b,c){return null==a?0:p(a,"",0,b,c)}var i=a("./ReactElement"),j=a("./ReactInstanceHandles"),k=a("./invariant"),l=j.SEPARATOR,m=":",n={"=":"=0",".":"=1",":":"=2"},o=/[=.:]/g,p=function(a,b,d,f,h){var j,n,o=0;if(Array.isArray(a))for(var q=0;q<a.length;q++){var r=a[q];j=b+(b?m:l)+e(r,q),n=d+o,o+=p(r,j,n,f,h)}else{var s=typeof a,t=""===b,u=t?l+e(a,0):b;if(null==a||"boolean"===s)f(h,null,u,d),o=1;else if("string"===s||"number"===s||i.isValidElement(a))f(h,a,u,d),o=1;else if("object"===s){"production"!==c.env.NODE_ENV?k(!a||1!==a.nodeType,"traverseAllChildren(...): Encountered an invalid child; DOM elements are not valid children of React components."):k(!a||1!==a.nodeType);for(var v in a)a.hasOwnProperty(v)&&(j=b+(b?m:l)+g(v)+m+e(a[v],0),n=d+o,o+=p(a[v],j,n,f,h))}}return o};b.exports=h}).call(this,a("_process"))},{"./ReactElement":163,"./ReactInstanceHandles":171,"./invariant":246,_process:90}],265:[function(a,b){(function(c){"use strict";function d(a){return Array.isArray(a)?a.concat():a&&"object"==typeof a?g(new a.constructor,a):a}function e(a,b,d){"production"!==c.env.NODE_ENV?i(Array.isArray(a),"update(): expected target of %s to be an array; got %s.",d,a):i(Array.isArray(a));var e=b[d];"production"!==c.env.NODE_ENV?i(Array.isArray(e),"update(): expected spec of %s to be an array; got %s. Did you forget to wrap your parameter in an array?",d,e):i(Array.isArray(e))}function f(a,b){if("production"!==c.env.NODE_ENV?i("object"==typeof b,"update(): You provided a key path to update() that did not contain one of %s. Did you forget to include {%s: ...}?",p.join(", "),m):i("object"==typeof b),b.hasOwnProperty(m))return"production"!==c.env.NODE_ENV?i(1===Object.keys(b).length,"Cannot have more than one key in an object with %s",m):i(1===Object.keys(b).length),b[m];var h=d(a);if(b.hasOwnProperty(n)){var r=b[n];"production"!==c.env.NODE_ENV?i(r&&"object"==typeof r,"update(): %s expects a spec of type 'object'; got %s",n,r):i(r&&"object"==typeof r),"production"!==c.env.NODE_ENV?i(h&&"object"==typeof h,"update(): %s expects a target of type 'object'; got %s",n,h):i(h&&"object"==typeof h),g(h,b[n])}b.hasOwnProperty(j)&&(e(a,b,j),b[j].forEach(function(a){h.push(a)})),b.hasOwnProperty(k)&&(e(a,b,k),b[k].forEach(function(a){h.unshift(a)})),b.hasOwnProperty(l)&&("production"!==c.env.NODE_ENV?i(Array.isArray(a),"Expected %s target to be an array; got %s",l,a):i(Array.isArray(a)),"production"!==c.env.NODE_ENV?i(Array.isArray(b[l]),"update(): expected spec of %s to be an array of arrays; got %s. Did you forget to wrap your parameters in an array?",l,b[l]):i(Array.isArray(b[l])),b[l].forEach(function(a){"production"!==c.env.NODE_ENV?i(Array.isArray(a),"update(): expected spec of %s to be an array of arrays; got %s. Did you forget to wrap your parameters in an array?",l,b[l]):i(Array.isArray(a)),h.splice.apply(h,a)})),b.hasOwnProperty(o)&&("production"!==c.env.NODE_ENV?i("function"==typeof b[o],"update(): expected spec of %s to be a function; got %s.",o,b[o]):i("function"==typeof b[o]),h=b[o](h));for(var s in b)q.hasOwnProperty(s)&&q[s]||(h[s]=f(a[s],b[s]));return h}var g=a("./Object.assign"),h=a("./keyOf"),i=a("./invariant"),j=h({$push:null}),k=h({$unshift:null}),l=h({$splice:null}),m=h({$set:null}),n=h({$merge:null}),o=h({$apply:null}),p=[j,k,l,m,n,o],q={};p.forEach(function(a){q[a]=!0}),b.exports=f}).call(this,a("_process"))},{"./Object.assign":134,"./invariant":246,"./keyOf":253,_process:90}],266:[function(a,b){(function(c){"use strict";var d=a("./emptyFunction"),e=d;"production"!==c.env.NODE_ENV&&(e=function(a,b){for(var c=[],d=2,e=arguments.length;e>d;d++)c.push(arguments[d]);if(void 0===b)throw new Error("`warning(condition, format, ...args)` requires a warning message argument");if(!a){var f=0;console.warn("Warning: "+b.replace(/%s/g,function(){return c[f++]}))}}),b.exports=e}).call(this,a("_process"))},{"./emptyFunction":227,_process:90}],267:[function(a){"use strict";a("lodash");var b=a("../src/reactTemplates");window.reactTemplates=b},{"../src/reactTemplates":269,lodash:106}],268:[function(a,b){"use strict";var c=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","defs","ellipse","g","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"],d=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","defs","ellipse","g","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan","injection"],e=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","defs","ellipse","g","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan","injection"],f=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","defs","g","line","linearGradient","path","polygon","polyline","radialGradient","rect","stop","svg","text","injection"],g={"0.12.2":c,"0.12.1":c,"0.12.0":c,"0.11.2":d,"0.11.1":e,"0.11.0":e,"0.10.0":f};b.exports=g},{}],269:[function(a,b){"use strict";function c(a){switch(a.options.targetVersion){case"0.11.2":case"0.11.1":case"0.11.0":case"0.10.0":return!1;default:return!0}}function d(a){var b="";return t.forEach(a,function(a){b+=0!==a.indexOf(" /*")&&a?","+a:a},this),b}function e(a,b,c){for(var d="",e=!0;-1!==c.indexOf("{");){var f=c.indexOf("{"),g=c.substr(0,f);g&&(d+=(e?"":"+")+JSON.stringify(g),e=!1);for(var h=1,i=f+1;i<c.length&&h>0;i++)h+=S[c.charAt(i)]||0;if(0!==h)throw j("Failed to parse text '"+c+"'",b,a);var k=0!==f||i!==c.length-1;d+=(e?"":"+")+(k?"(":"")+c.substr(f+1,i-f-2)+(k?")":""),e=!1,c=c.substr(i)}return c&&(d+=(e?"":"+")+JSON.stringify(c)),""===d&&(d="true"),d}function f(a){return a=a.trim(),a.length&&"{"===a.charAt(0)&&"}"===a.charAt(a.length-1)}function g(a,b,c,d){d=d||a.boundParams;var e=b.replace(",","")+(a.injectedFunctions.length+1),f="function "+e+"("+d.join(",");return f+=") {\n"+c+"\n}\n",a.injectedFunctions.push(f),e}function h(a,b){return b?a.substring(0,b.startIndex).split("\n").length-1:0}function i(a,b,c){Error.captureStackTrace(this,i),this.name="RTCodeError",this.message=a||"",this.index=b||-1,this.line=c||-1}function j(a,b,c){var d=h(b.html,c);return new i(a,c.startIndex,d)}function k(a,b){var c={};return t.forOwn(a.attribs,function(d,h){var i=R[h.toLowerCase()]||h;if(c.hasOwnProperty(i))throw j("duplicate definition of "+i+" "+JSON.stringify(a.attribs),b,a);if(0!==h.indexOf("on")||f(d))if("style"!==h||f(d))h===M?c[i]=B({classSet:d}):0!==h.indexOf("rt-")&&(c[i]=e(a,b,d.trim()));else{var k=d.trim().split(";");k=t.compact(t.map(k,function(a){if(a=a.trim(),!a||-1===a.indexOf(":"))return null;var b=a.split(":");return b[0]=b[0].trim(),b[1]=b.slice(1).join(":").trim(),b}));var l=[];t.forEach(k,function(c){l.push(x.convertToCamelCase(c[0])+" : "+e(a,b,c[1].trim()))}),c[i]="{"+l.join(",")+"}"}else{var m=d.split("=>");if(2!==m.length)throw j("when using 'on' events, use lambda '(p1,p2)=>body' notation or use {} to return a callback function. error: ["+h+"='"+d+"']",b,a);var n=m[0].replace("(","").replace(")","").trim(),o=m[1].trim(),p=b.boundParams;""!==n.trim()&&(p=p.concat([n.trim()]));var q=g(b,h,o,p);c[i]=q+".bind("+["this"].concat(b.boundParams).join(",")+")"}}),"{"+t.map(c,function(a,b){return JSON.stringify(b)+" : "+a}).join(",")+"}"}function l(a,b){var d=t.contains(w[b.options.targetVersion],a);return c(b)?d?"'"+a+"'":a:d?"React.DOM."+a:a}function m(a,b){return{boundParams:[],injectedFunctions:[],html:a,options:b}}function n(a){return t.any(a.children,function(a){return"tag"===a.type&&a.attribs[K]})}function o(a,b){if("tag"===a.type){b={boundParams:t.clone(b.boundParams),injectedFunctions:b.injectedFunctions,html:b.html,options:b.options};var f={name:l(a.name,b)};if(a.attribs[N]&&(f.scopeMapping={},f.scopeName="",t.each(b.boundParams,function(a){f.scopeMapping[a]=a}),t.each(a.attribs[N].split(";"),function(c){var d=c.split(" as ");if(d.length<2)throw j("invalid scope part '"+c+"'",b,a);var e=d[1].trim();x.addIfNotThere(b.boundParams,e),f.scopeName+=x.capitalize(e),f.scopeMapping[e]=d[0].trim()})),a.attribs[K]){var h=a.attribs[K].split(" in ");if(2!==h.length)throw j("rt-repeat invalid 'in' expression '"+a.attribs[K]+"'",b,a);f.item=h[0].trim(),f.collection=h[1].trim(),x.addIfNotThere(b.boundParams,f.item),x.addIfNotThere(b.boundParams,f.item+"Index")}if(f.props=k(a,b),a.attribs[O]&&(f.props=A({generatedProps:f.props,rtProps:a.attribs[O]})),a.attribs[L]&&(f.condition=a.attribs[L].trim()),f.children=d(t.map(a.children,function(a){return o(a,b)})),f.body=n(a)?c(b)?F(f):D(f):c(b)?E(f):C(f),a.attribs[K]&&(f.repeatFunction=g(b,"repeat"+x.capitalize(f.item),"return "+f.body),f.repeatBinds=["this"].concat(t.reject(b.boundParams,function(a){return a===f.item||a===f.item+"Index"})),f.body=y(f)),a.attribs[L]&&(f.body=z(f)),a.attribs[N]){var i=g(b,"scope"+f.scopeName,"return "+f.body,t.keys(f.scopeMapping));f.body=i+".apply(this, ["+t.values(f.scopeMapping).join(",")+"])"}return f.body}return"comment"===a.type?G(a):"text"===a.type?a.data.trim()?e(a,b,a.data):"":void 0}function p(a,b){var c=s.load(a,{lowerCaseTags:!1,lowerCaseAttributeNames:!1,xmlMode:!0,withStartIndices:!0});b=t.defaults({},b,P);var d={"react/addons":"React",lodash:"_"},e=m(a,b),f=t.filter(c.root()[0].children,function(a){return"tag"===a.type});if(!f||0===f.length)throw new i("Document should have a root element");var g=null;if(t.forEach(f,function(a){if("rt-require"===a.name){if(!a.attribs.dependency||!a.attribs.as)throw j("rt-require needs 'dependency' and 'as' attributes",e,a);if(a.children.length)throw j("rt-require may have no children",e,a);d[a.attribs.dependency]=a.attribs.as}else{if(null!==g)throw j("Document should have no more than a single root element",e,a);g=a}}),null===g)throw j("Document should have a single root element",e,c.root()[0]);var h=o(g,e),k=t(d).keys().map(function(a){return'"'+a+'"'}).value().join(","),l=t(d).values().value().join(","),n=t(d).map(function(a,b){return"var "+a+" = require('"+b+"');"}).join("\n"),p={body:h,injectedFunctions:"",requireNames:l,requirePaths:k,vars:n,name:b.name};p.injectedFunctions=e.injectedFunctions.join("\n");var r=q(p,b);try{var w=u.parse(r,{range:!0,tokens:!0,comment:!0});w=v.attachComments(w,w.comments,w.tokens),r=v.generate(w,{comment:!0})}catch(x){console.log(x)}return r}function q(a,b){return"amd"===b.modules?H(a):"commonjs"===b.modules?I(a):J(a)}function r(a){return a.replace(/-/g,"_")}var s=a("cheerio"),t=a("lodash"),u=a("esprima"),v=a("escodegen"),w=a("./reactDOMSupport"),x=a("./stringUtils"),y=t.template("_.map(<%= collection %>,<%= repeatFunction %>.bind(<%= repeatBinds %>))"),z=t.template("((<%= condition %>)?(<%= body %>):null)"),A=t.template("_.merge({}, <%= generatedProps %>, <%= rtProps %>)"),B=t.template("React.addons.classSet(<%= classSet %>)"),C=t.template("<%= name %>(<%= props %><%= children %>)"),D=t.template("<%= name %>.apply(this,_.flatten([<%= props %><%= children %>]))"),E=t.template("React.createElement(<%= name %>,<%= props %><%= children %>)"),F=t.template("React.createElement.apply(this,_.flatten([<%= name %>,<%= props %><%= children %>]))"),G=t.template(" /* <%= data %> */ "),H=t.template("define([<%= requirePaths %>], function (<%= requireNames %>) {\n'use strict';\n <%= injectedFunctions %>\nreturn function(){ return <%= body %>};\n});"),I=t.template("<%= vars %>\n\n'use strict';\n <%= injectedFunctions %>\nmodule.exports = function(){ return <%= body %>};\n"),J=t.template("var <%= name %> = function () {\n<%= injectedFunctions %>\nreturn <%= body %>\n};\n"),K="rt-repeat",L="rt-if",M="rt-class",N="rt-scope",O="rt-props",P={modules:"amd",version:!1,force:!1,format:"stylish",targetVersion:"0.12.2"},Q=["accept","acceptCharset","accessKey","action","allowFullScreen","allowTransparency","alt","async","autoComplete","autoPlay","cellPadding","cellSpacing","charSet","checked","classID","className","cols","colSpan","content","contentEditable","contextMenu","controls","coords","crossOrigin","data","dateTime","defer","dir","disabled","download","draggable","encType","form","formNoValidate","frameBorder","height","hidden","href","hrefLang","htmlFor","httpEquiv","icon","id","label","lang","list","loop","manifest","max","maxLength","media","mediaGroup","method","min","multiple","muted","name","noValidate","open","pattern","placeholder","poster","preload","radioGroup","readOnly","rel","required","role","rows","rowSpan","sandbox","scope","scrolling","seamless","selected","shape","size","sizes","span","spellCheck","src","srcDoc","srcSet","start","step","style","tabIndex","target","title","type","useMap","value","width","wmode"],R={"class":"className","rt-class":"className"};t.forEach(Q,function(a){a!==a.toLowerCase()&&(R[a.toLowerCase()]=a)});var S={"{":1,"}":-1};Object.defineProperty(Error.prototype,"message",{configurable:!0,enumerable:!0}),Object.defineProperty(Error.prototype,"stack",{configurable:!0,enumerable:!0}),i.prototype=Object.create(Error.prototype),b.exports={convertTemplateToReact:p,RTCodeError:i,normalizeName:r,_test:{}}},{"./reactDOMSupport":268,"./stringUtils":270,cheerio:1,escodegen:63,esprima:80,lodash:106}],270:[function(a,b){"use strict";function c(a){return a.replace(/-([a-z])/g,function(a){return a[1].toUpperCase()})}function d(a){return a[0].toUpperCase()+a.slice(1)}function e(a,b){f.contains(a,b)||a.push(b)}var f=a("lodash");b.exports={convertToCamelCase:c,capitalize:d,addIfNotThere:e}},{lodash:106}],"react/addons":[function(a,b){b.exports=a("./lib/ReactWithAddons")},{"./lib/ReactWithAddons":197}]},{},[267]);
\ No newline at end of file
+require=function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){c=b.exports=a("./lib/cheerio"),c.version=a("./package").version},{"./lib/cheerio":6,"./package":62}],2:[function(a,b,c){var d=a("lodash"),e=a("../utils"),f=e.isTag,g=e.domEach,h=Object.prototype.hasOwnProperty,i=e.camelCase,j=e.cssCase,k=/\s+/,l="data-",m={"null":null,"true":!0,"false":!1},n=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,o=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,p=function(a,b){return a&&f(a)?(a.attribs||(a.attribs={}),b?h.call(a.attribs,b)?n.test(b)?b:a.attribs[b]:void 0:a.attribs):void 0},q=function(a,b,c){null===c?t(a,b):a.attribs[b]=c+""};c.attr=function(a,b){return"object"==typeof a||void 0!==b?"function"==typeof b?g(this,function(c,d){q(d,a,b.call(d,c,d.attribs[a]))}):g(this,function(c,e){f(e)&&("object"==typeof a?d.each(a,function(a,b){e.attribs[b]=a+""}):q(e,a,b))}):p(this[0],a)};var r=function(a,b,c){return"object"==typeof b?d.extend(a.data,b):void("string"==typeof b&&void 0!==c?a.data[b]=c:"object"==typeof b&&d.exend(a.data,b))},s=function(a,b){var c,d,e,f,g,k,n,p=1===arguments.length;for(p?(c=Object.keys(a.attribs).filter(function(a){return a.slice(0,l.length)===l}),e=c.map(function(a){return i(a.slice(l.length))})):(c=[l+j(b)],e=[b]),k=0,n=c.length;n>k;++k)d=c[k],f=e[k],h.call(a.attribs,d)&&(g=a.attribs[d],h.call(m,g)?g=m[g]:g===String(Number(g))?g=Number(g):o.test(g)&&(g=JSON.parse(g)),a.data[f]=g);return p?a.data:g};c.data=function(a,b){var c=this[0];if(c&&f(c))return c.data||(c.data={}),a?"object"==typeof a||void 0!==b?(g(this,function(c,d){r(d,a,b)}),this):h.call(c.data,a)?c.data[a]:s(c,a):s(c)},c.val=function(a){var b=0===arguments.length,c=this[0];if(c)switch(c.name){case"textarea":return this.text(a);case"input":switch(this.attr("type")){case"radio":var d,e,f='input[type=radio][name="'+this.attr("name")+'"]:checked';return d=this.closest("form"),0===d.length&&(e=(this.parents().last()[0]||this[0]).root,d=this._make(e)),b?d.find(f).attr("value"):(d.find(":checked").removeAttr("checked"),d.find('input[type=radio][value="'+a+'"]').attr("checked",""),this);default:return this.attr("value",a)}return;case"select":var h,i=this.find("option:selected");if(void 0===i)return void 0;if(!b){if(!this.attr().hasOwnProperty("multiple")&&"object"==typeof a)return this;"object"!=typeof a&&(a=[a]),this.find("option").removeAttr("selected");for(var j=0;j<a.length;j++)this.find('option[value="'+a[j]+'"]').attr("selected","");return this}return h=i.attr("value"),this.attr().hasOwnProperty("multiple")&&(h=[],g(i,function(a,b){h.push(b.attribs.value)})),h;case"option":return b?this.attr("value"):(this.attr("value",a),this)}};var t=function(a,b){a.attribs&&h.call(a.attribs,b)&&delete a.attribs[b]};c.removeAttr=function(a){return g(this,function(b,c){t(c,a)}),this},c.hasClass=function(a){return d.any(this,function(b){var c,d=b.attribs,e=d&&d["class"],f=-1;if(e)for(;(f=e.indexOf(a,f+1))>-1;)if(c=f+a.length,(0===f||k.test(e[f-1]))&&(c===e.length||k.test(e[c])))return!0})},c.addClass=function(a){if("function"==typeof a)return g(this,function(b,d){var e=d.attribs["class"]||"";c.addClass.call([d],a.call(d,b,e))});if(!a||"string"!=typeof a)return this;for(var b=a.split(k),d=this.length,e=0;d>e;e++)if(f(this[e])){var h,i,j=p(this[e],"class");if(j){i=" "+j+" ",h=b.length;for(var l=0;h>l;l++){var m=b[l]+" ";~i.indexOf(" "+m)||(i+=m)}q(this[e],"class",i.trim())}else q(this[e],"class",b.join(" ").trim())}return this};var u=function(a){return a?a.trim().split(k):[]};c.removeClass=function(a){var b,d,e;return"function"==typeof a?g(this,function(b,d){c.removeClass.call([d],a.call(d,b,d.attribs["class"]||""))}):(b=u(a),d=b.length,e=0===arguments.length,g(this,function(a,c){if(f(c))if(e)c.attribs["class"]="";else{for(var g,h,i=u(c.attribs["class"]),j=0;d>j;j++)g=i.indexOf(b[j]),g>=0&&(i.splice(g,1),h=!0,j--);h&&(c.attribs["class"]=i.join(" "))}}))},c.toggleClass=function(a,b){if("function"==typeof a)return g(this,function(d,e){c.toggleClass.call([e],a.call(e,d,e.attribs["class"]||"",b),b)});if(!a||"string"!=typeof a)return this;for(var d,e,h=a.split(k),i=h.length,j="boolean"==typeof b?b?1:-1:0,l=this.length,m=0;l>m;m++)if(f(this[m])){d=u(this[m].attribs["class"]);for(var n=0;i>n;n++)e=d.indexOf(h[n]),j>=0&&0>e?d.push(h[n]):0>=j&&e>=0&&d.splice(e,1);this[m].attribs["class"]=d.join(" ")}return this},c.is=function(a){return a?this.filter(a).length>0:!1}},{"../utils":9,lodash:61}],3:[function(a,b,c){function d(a,b,c,g){if("string"==typeof b){var h=e(a);"function"==typeof c&&(c=c.call(a,g,a)),""===c?delete h[b]:null!=c&&(h[b]=c),a.attribs.style=f(h)}else"object"==typeof b&&Object.keys(b).forEach(function(c){d(a,c,b[c])})}function e(a,b){var c=g(a.attribs.style);return"string"==typeof b?c[b]:Array.isArray(b)?h.pick(c,b):c}function f(a){return Object.keys(a||{}).reduce(function(b,c){return b+=""+(b?" ":"")+c+": "+a[c]+";"},"")}function g(a){return a=(a||"").trim(),a?a.split(";").reduce(function(a,b){var c=b.indexOf(":");return 1>c||c===b.length-1?a:(a[b.slice(0,c).trim()]=b.slice(c+1).trim(),a)},{}):{}}var h=a("lodash"),i=a("../utils").domEach,j=Object.prototype.toString;c.css=function(a,b){return 2===arguments.length||"[object Object]"===j.call(a)?i(this,function(c,e){d(e,a,b,c)}):e(this[0],a)}},{"../utils":9,lodash:61}],4:[function(a,b,c){var d=a("lodash"),e=a("../parse"),f=a("../static"),g=e.update,h=e.evaluate,i=a("../utils"),j=i.domEach,k=Array.prototype.slice;c._makeDomArray=function n(a){return null==a?[]:a.cheerio?a.get():Array.isArray(a)?d.flatten(a.map(n,this)):"string"==typeof a?h(a,this.options):[a]};var l=function(a){return function(){var b=this,c=k.call(arguments),d=this._makeDomArray(c);return"function"==typeof c[0]?j(this,function(e,g){d=b._makeDomArray(c[0].call(g,e,f.html(g.children))),a(d,g.children,g)}):j(this,function(b,c){a(d,c.children,c)})}},m=function(a,b,c,d,e){var f,g,h,i,j,k=[b,c].concat(d),l=a[b-1]||null,m=a[b]||null;for(f=0,g=d.length;g>f;++f)i=d[f],j=i.parent||i.root,h=j&&j.children.indexOf(d[f]),j&&h>-1&&(j.children.splice(h,1),e===j&&b>h&&k[0]--),i.root=null,i.parent=e,i.prev&&(i.prev.next=i.next||null),i.next&&(i.next.prev=i.prev||null),i.prev=d[f-1]||l,i.next=d[f+1]||m;return l&&(l.next=d[0]),m&&(m.prev=d[d.length-1]),a.splice.apply(a,k)};c.append=l(function(a,b,c){m(b,b.length,0,a,c)}),c.prepend=l(function(a,b,c){m(b,0,0,a,c)}),c.after=function(){var a=k.call(arguments),b=this._makeDomArray(a),c=this;return j(this,function(d,e){var g=e.parent||e.root;if(g){var h=g.children,i=h.indexOf(e);~i&&("function"==typeof a[0]&&(b=c._makeDomArray(a[0].call(e,d,f.html(e.children)))),m(h,++i,0,b,g))}}),this},c.before=function(){var a=k.call(arguments),b=this._makeDomArray(a),c=this;return j(this,function(d,e){var g=e.parent||e.root;if(g){var h=g.children,i=h.indexOf(e);~i&&("function"==typeof a[0]&&(b=c._makeDomArray(a[0].call(e,d,f.html(e.children)))),m(h,i,0,b,g))}}),this},c.remove=function(a){var b=this;return a&&(b=b.filter(a)),j(b,function(a,b){var c=b.parent||b.root;if(c){var d=c.children,e=d.indexOf(b);~e&&(d.splice(e,1),b.prev&&(b.prev.next=b.next),b.next&&(b.next.prev=b.prev),b.prev=b.next=b.parent=b.root=null)}}),this},c.replaceWith=function(a){var b=this;return j(this,function(c,d){var e=d.parent||d.root;if(e){var f,h=e.children,i=b._makeDomArray("function"==typeof a?a.call(d,c,d):a);g(i,null),f=h.indexOf(d),m(h,f,1,i,e),d.parent=d.prev=d.next=d.root=null}}),this},c.empty=function(){return j(this,function(a,b){d.each(b.children,function(a){a.next=a.prev=a.parent=null}),b.children.length=0}),this},c.html=function(a){if(void 0===a)return this[0]&&this[0].children?f.html(this[0].children,this.options):null;var b=this.options;return j(this,function(c,e){d.each(e.children,function(a){a.next=a.prev=a.parent=null});var f=a.cheerio?a.clone().get():h(a,b);g(f,e)}),this},c.toString=function(){return f.html(this)},c.text=function(a){return void 0===a?f.text(this):"function"==typeof a?j(this,function(b,d){var e=[d];return c.text.call(e,a.call(d,b,f.text(e)))}):(j(this,function(b,c){d.each(c.children,function(a){a.next=a.prev=a.parent=null});var e={data:a,type:"text",parent:c,prev:null,next:null,children:[]};g(e,c)}),this)},c.clone=function(){return this._make(f.html(this,this.options))}},{"../parse":7,"../static":8,"../utils":9,lodash:61}],5:[function(a,b,c){function d(a,b,d,e){for(var f=[];b&&f.length<e;)(!d||c.filter.call([b],d,a).length)&&f.push(b),b=b.parent;return f}var e=a("lodash"),f=a("CSSselect"),g=a("../utils"),h=g.domEach,i=a("htmlparser2").DomUtils.uniqueSort,j=g.isTag;c.find=function(a){var b,c=e.reduce(this,function(a,b){return a.concat(e.filter(b.children,j))},[]),d=this.constructor.contains;return a&&"string"!=typeof a?(b=a.cheerio?a.get():[a],this._make(b.filter(function(a){var b,c;for(b=0,c=this.length;c>b;++b)if(d(this[b],a))return!0},this))):this._make(f(a,c,this.options))},c.parent=function(a){var b=[];return h(this,function(a,c){var d=c.parent;d&&b.indexOf(d)<0&&b.push(d)}),arguments.length&&(b=c.filter.call(b,a,this)),this._make(b)},c.parents=function(a){var b=[];return this.get().reverse().forEach(function(c){d(this,c.parent,a,1/0).forEach(function(a){-1===b.indexOf(a)&&b.push(a)})},this),this._make(b)},c.parentsUntil=function(a,b){var c,d,e=[];return"string"==typeof a?c=f(a,this.parents().toArray(),this.options)[0]:a&&a.cheerio?d=a.toArray():a&&(c=a),this.toArray().reverse().forEach(function(a){for(;(a=a.parent)&&(c&&a!==c||d&&-1===d.indexOf(a)||!c&&!d);)j(a)&&-1===e.indexOf(a)&&e.push(a)},this),this._make(b?f(b,e,this.options):e)},c.closest=function(a){var b=[];return a?(h(this,function(c,e){var f=d(this,e,a,1)[0];f&&b.indexOf(f)<0&&b.push(f)}.bind(this)),this._make(b)):this._make(b)},c.next=function(a){if(!this[0])return this;var b=[];return e.forEach(this,function(a){for(;a=a.next;)if(j(a))return void b.push(a)}),a?c.filter.call(b,a,this):this._make(b)},c.nextAll=function(a){if(!this[0])return this;var b=[];return e.forEach(this,function(a){for(;a=a.next;)j(a)&&-1===b.indexOf(a)&&b.push(a)}),a?c.filter.call(b,a,this):this._make(b)},c.nextUntil=function(a,b){if(!this[0])return this;var d,g,h=[];return"string"==typeof a?d=f(a,this.nextAll().get(),this.options)[0]:a&&a.cheerio?g=a.get():a&&(d=a),e.forEach(this,function(a){for(;(a=a.next)&&(d&&a!==d||g&&-1===g.indexOf(a)||!d&&!g);)j(a)&&-1===h.indexOf(a)&&h.push(a)}),b?c.filter.call(h,b,this):this._make(h)},c.prev=function(a){if(!this[0])return this;var b=[];return e.forEach(this,function(a){for(;a=a.prev;)if(j(a))return void b.push(a)}),a?c.filter.call(b,a,this):this._make(b)},c.prevAll=function(a){if(!this[0])return this;var b=[];return e.forEach(this,function(a){for(;a=a.prev;)j(a)&&-1===b.indexOf(a)&&b.push(a)}),a?c.filter.call(b,a,this):this._make(b)},c.prevUntil=function(a,b){if(!this[0])return this;var d,g,h=[];return"string"==typeof a?d=f(a,this.prevAll().get(),this.options)[0]:a&&a.cheerio?g=a.get():a&&(d=a),e.forEach(this,function(a){for(;(a=a.prev)&&(d&&a!==d||g&&-1===g.indexOf(a)||!d&&!g);)j(a)&&-1===h.indexOf(a)&&h.push(a)}),b?c.filter.call(h,b,this):this._make(h)},c.siblings=function(a){var b=this.parent(),d=e.filter(b?b.children():this.siblingsAndMe(),function(a){return j(a)&&!this.is(a)},this);return void 0!==a?c.filter.call(d,a,this):this._make(d)},c.children=function(a){var b=e.reduce(this,function(a,b){return a.concat(e.filter(b.children,j))},[]);return void 0===a?this._make(b):"number"==typeof a?this._make(b[a]):c.filter.call(b,a,this)},c.contents=function(){return this._make(e.reduce(this,function(a,b){return a.push.apply(a,b.children),a},[]))},c.each=function(a){for(var b=0,c=this.length;c>b&&a.call(this[b],b,this[b])!==!1;)++b;return this},c.map=function(a){return this._make(e.reduce(this,function(b,c,d){var e=a.call(c,d,c);return null==e?b:b.concat(e)},[]))};var k=function(a){return function(b,c){var d;return c=c||this,d="string"==typeof b?f.compile(b,c.options):"function"==typeof b?function(a,c){return b.call(a,c,a)}:b.cheerio?b.is.bind(b):function(a){return b===a},c._make(a(this,d))}};c.filter=k(e.filter),c.not=k(e.reject),c.has=function(a){var b=this;return c.filter.call(this,function(){return b._make(this).find(a).length>0})},c.first=function(){return this.length>1?this._make(this[0]):this},c.last=function(){return this.length>1?this._make(this[this.length-1]):this},c.eq=function(a){return a=+a,0===a&&this.length<=1?this:(0>a&&(a=this.length+a),this._make(this[a]?this[a]:[]))},c.get=function(a){return null==a?Array.prototype.slice.call(this):this[0>a?this.length+a:a]},c.index=function(a){var b,c;return 0===arguments.length?(b=this.parent().children(),c=this[0]):"string"==typeof a?(b=this._make(a),c=this[0]):(b=this,c=a.cheerio?a[0]:a),b.get().indexOf(c)},c.slice=function(){return this._make([].slice.apply(this,arguments))},c.end=function(){return this.prevObject||this._make([])},c.add=function(a,b){for(var c=this._make(a,b),d=i(c.get().concat(this.get())),e=0;e<d.length;++e)c[e]=d[e];return c.length=d.length,c},c.addBack=function(a){return this.add(arguments.length?this.prevObject.filter(a):this.prevObject)}},{"../utils":9,CSSselect:10,htmlparser2:44,lodash:61}],6:[function(a,b){var c=a("./parse"),d=a("lodash"),e=[a("./api/attributes"),a("./api/traversing"),a("./api/manipulation"),a("./api/css")],f=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,g=b.exports=function(a,b,e,f){return this instanceof g?(this.options=d.defaults(f||{},this.options),a?(e&&("string"==typeof e&&(e=c(e,this.options)),this._root=g.call(this,e)),a.cheerio?a:(i(a)&&(a=[a]),Array.isArray(a)?(d.forEach(a,function(a,b){this[b]=a},this),this.length=a.length,this):"string"==typeof a&&h(a)?g.call(this,c(a,this.options).children):(b?"string"==typeof b?h(b)?(b=c(b,this.options),b=g.call(this,b)):(a=[b,a].join(" "),b=this._root):b.cheerio||(b=g.call(this,b)):b=this._root,b?b.find(a):this))):this):new g(a,b,e,f)};d.extend(g,a("./static")),g.prototype.cheerio="[cheerio object]",g.prototype.options={withDomLvl1:!0,normalizeWhitespace:!1,xmlMode:!1,decodeEntities:!0},g.prototype.length=0,g.prototype.splice=Array.prototype.splice;var h=function(a){if("<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3)return!0;var b=f.exec(a);return!(!b||!b[1])};g.prototype._make=function(a,b){var c=new g(a,b,this._root,this.options);return c.prevObject=this,c},g.prototype.toArray=function(){return this.get()},e.forEach(function(a){d.extend(g.prototype,a)});var i=function(a){return a.name||"text"===a.type||"comment"===a.type}},{"./api/attributes":2,"./api/css":3,"./api/manipulation":4,"./api/traversing":5,"./parse":7,"./static":8,lodash:61}],7:[function(a,b,c){(function(d){var e=a("htmlparser2");c=b.exports=function(a,b){var d=c.evaluate(a,b),e=c.evaluate("<root></root>",b)[0];return e.type="root",c.update(d,e),e},c.evaluate=function(a,b){var c;return c="string"==typeof a||d.isBuffer(a)?e.parseDOM(a,b):a},c.update=function(a,b){Array.isArray(a)||(a=[a]),b?b.children=a:b=null;for(var c=0;c<a.length;c++){var d=a[c],e=d.parent||d.root,f=e&&e.children;f&&f!==a&&(f.splice(f.indexOf(d),1),d.prev&&(d.prev.next=d.next),d.next&&(d.next.prev=d.prev)),b?(d.prev=a[c-1]||null,d.next=a[c+1]||null):d.prev=d.next=null,b&&"root"===b.type?(d.root=b,d.parent=null):(d.root=null,d.parent=b)}return b}}).call(this,a("buffer").Buffer)},{buffer:83,htmlparser2:44}],8:[function(a,b,c){var d=a("CSSselect"),e=a("./parse"),f=a("dom-serializer"),g=a("lodash");c.load=function(b,d){var f=a("./cheerio");d=g.defaults(d||{},f.prototype.options);var h=e(b,d),i=function(a,b,c,e){return e=g.defaults(e||{},d),f.call(this,a,b,c||h,e)};return i.prototype=f.prototype,g.merge(i,c),i._root=h,i._options=d,i},c.html=function(b,c){var e=a("./cheerio");return"[object Object]"!==Object.prototype.toString.call(b)||c||"length"in b||"type"in b||(c=b,b=void 0),c=g.defaults(c||{},this._options,e.prototype.options),b?(b="string"==typeof b?d(b,this._root,c):b,f(b,c)):this._root&&this._root.children?f(this._root.children,c):""},c.xml=function(a){return a?(a="string"==typeof a?d(a,this._root,this.options):a,f(a,{xmlMode:!0})):this._root&&this._root.children?f(this._root.children,{xmlMode:!0}):""},c.text=function(a){if(!a)return"";for(var b,d="",e=a.length,f=0;e>f;f++)b=a[f],"text"===b.type?d+=b.data:b.children&&"comment"!==b.type&&(d+=c.text(b.children));return d},c.parseHTML=function(a,b,c){var d;return a&&"string"==typeof a?("boolean"==typeof b&&(c=b),d=this.load(a),c||d("script").remove(),d.root()[0].children):null},c.root=function(){return this(this._root)},c.contains=function(a,b){if(b===a)return!1;for(;b&&b!==b.parent;)if(b=b.parent,b===a)return!0;return!1}},{"./cheerio":6,"./parse":7,CSSselect:10,"dom-serializer":27,lodash:61}],9:[function(a,b,c){var d={tag:!0,script:!0,style:!0};c.isTag=function(a){return a.type&&(a=a.type),d[a]||!1},c.camelCase=function(a){return a.replace(/[_.-](\w|$)/g,function(a,b){return b.toUpperCase()})},c.cssCase=function(a){return a.replace(/[A-Z]/g,"-$&").toLowerCase()},c.domEach=function(a,b){for(var c=0,d=a.length;d>c&&b(c,a[c])!==!1;)++c;return a}},{}],10:[function(a,b){"use strict";function c(a){return function(b,c,d){return"function"!=typeof b&&(b=n(b,d)),c=Array.isArray(c)?k(c):j(c),a(b,c)}}function d(a,b,c){return("function"==typeof b?b:m(b,c))(a)}function e(a,b,c){return o(a,b,c)}b.exports=e;var f=a("./lib/pseudos.js"),g=a("domutils"),h=g.findOne,i=g.findAll,j=g.getChildren,k=g.removeSubsets,l=a("./lib/basefunctions.js").falseFunc,m=a("./lib/compile.js"),n=m.compileUnsafe,o=c(function(a,b){return a!==l&&b&&0!==b.length?i(a,b):[]}),p=c(function(a,b){return a!==l&&b&&0!==b.length?h(a,b):null});e.compile=m,e.filters=f.filters,e.pseudos=f.pseudos,e.selectAll=o,e.selectOne=p,e.is=d,e.parse=m,e.iterate=o},{"./lib/basefunctions.js":12,"./lib/compile.js":13,"./lib/pseudos.js":16,domutils:19}],11:[function(a,b){var c=a("domutils"),d=c.hasAttrib,e=c.getAttributeValue,f=a("./basefunctions.js").falseFunc,g=/[-[\]{}()*+?.,\\^$|#\s]/g,h={__proto__:null,equals:function(a,b){var c=b.name,d=b.value;return b.ignoreCase?(d=d.toLowerCase(),function(b){var f=e(b,c);return null!=f&&f.toLowerCase()===d&&a(b)}):function(b){return e(b,c)===d&&a(b)}},hyphen:function(a,b){var c=b.name,d=b.value,f=d.length;return b.ignoreCase?(d=d.toLowerCase(),function(b){var g=e(b,c);return null!=g&&(g.length===f||"-"===g.charAt(f))&&g.substr(0,f).toLowerCase()===d&&a(b)}):function(b){var g=e(b,c);return null!=g&&g.substr(0,f)===d&&(g.length===f||"-"===g.charAt(f))&&a(b)}},element:function(a,b){var c=b.name,d=b.value;if(/\s/.test(d))return f;d=d.replace(g,"\\$&");var h="(?:^|\\s)"+d+"(?:$|\\s)",i=b.ignoreCase?"i":"",j=new RegExp(h,i);return function(b){var d=e(b,c);return null!=d&&j.test(d)&&a(b)}},exists:function(a,b){var c=b.name;return function(b){return d(b,c)&&a(b)}},start:function(a,b){var c=b.name,d=b.value,g=d.length;return 0===g?f:b.ignoreCase?(d=d.toLowerCase(),function(b){var f=e(b,c);return null!=f&&f.substr(0,g).toLowerCase()===d&&a(b)}):function(b){var f=e(b,c);return null!=f&&f.substr(0,g)===d&&a(b)}},end:function(a,b){var c=b.name,d=b.value,g=-d.length;return 0===g?f:b.ignoreCase?(d=d.toLowerCase(),function(b){var f=e(b,c);return null!=f&&f.substr(g).toLowerCase()===d&&a(b)}):function(b){var f=e(b,c);return null!=f&&f.substr(g)===d&&a(b)}},any:function(a,b){var c=b.name,d=b.value;if(""===d)return f;if(b.ignoreCase){var h=new RegExp(d.replace(g,"\\$&"),"i");return function(b){var d=e(b,c);return null!=d&&h.test(d)&&a(b)}}return function(b){var f=e(b,c);return null!=f&&f.indexOf(d)>=0&&a(b)}},not:function(a,b){var c=b.name,d=b.value;return""===d?function(b){return!!e(b,c)&&a(b)}:b.ignoreCase?(d=d.toLowerCase(),function(b){var f=e(b,c);return null!=f&&f.toLowerCase()!==d&&a(b)}):function(b){return e(b,c)!==d&&a(b)}}};b.exports={compile:function(a,b){return h[b.action](a,b)},rules:h}},{"./basefunctions.js":12,domutils:19}],12:[function(a,b){b.exports={trueFunc:function(){return!0},falseFunc:function(){return!1}}},{}],13:[function(a,b){function c(a,b){var c=d(a,b);return function(a){return i(a)&&c(a)}}function d(a,b){return g(a,b).map(e).reduce(f,n)}function e(a){return 0===a.length?n:k(a).reduce(function(a,b){return a===n?a:j[b.type](a,b)},m)}function f(a,b){return b===n||a===m?a:a===n||b===m?b:function(c){return a(c)||b(c)}}b.exports=c,b.exports.compileUnsafe=d;var g=a("CSSwhat"),h=a("domutils"),i=h.isTag,j=a("./general.js"),k=a("./sort.js"),l=a("./basefunctions.js"),m=l.trueFunc,n=l.falseFunc,o=a("./pseudos.js"),p=o.filters,q=o.pseudos.parent,r=h.existsOne,s=h.getChildren;p.not=function(a,b){var c=d(b);return c===n?a:c===m?n:function(b){return!c(b)&&a(b)}},p.has=function(a,b){var d=c(b);return d===n?n:d===m?function(b){return q(b)&&a(b)}:function(b){return a(b)&&r(d,s(b))}}},{"./basefunctions.js":12,"./general.js":14,"./pseudos.js":16,"./sort.js":17,CSSwhat:18,domutils:19}],14:[function(a,b){var c=a("domutils"),d=c.isTag,e=c.getParent,f=c.getChildren,g=c.getSiblings,h=c.getName;b.exports={__proto__:null,attribute:a("./attributes.js").compile,pseudo:a("./pseudos.js").compile,tag:function(a,b){var c=b.name;return function(b){return h(b)===c&&a(b)}},descendant:function(a){return function(b){for(var c=!1;!c&&(b=e(b));)c=a(b);return c}},parent:function(a){return function(b){return f(b).some(a)}},child:function(a){return function(b){var c=e(b);return!!c&&a(c)}},sibling:function(a){return function(b){for(var c=g(b),e=0;e<c.length;e++)if(d(c[e])){if(c[e]===b)break;if(a(c[e]))return!0}return!1}},adjacent:function(a){return function(b){for(var c,e=g(b),f=0;f<e.length;f++)if(d(e[f])){if(e[f]===b)break;c=e[f]}return!!c&&a(c)}},universal:function(a){return a}}},{"./attributes.js":11,"./pseudos.js":16,domutils:19}],15:[function(a,b){function c(a){if(a=a.trim().toLowerCase(),"even"===a)return[2,0];if("odd"===a)return[2,1];var b=a.match(h);if(!b)throw new SyntaxError("n-th rule couldn't be parsed ('"+a+"')");var c;return b[1]?(c=parseInt(b[1],10),c||(c="-"===b[1].charAt(0)?-1:1)):c=0,[c,b[3]?parseInt((b[2]||"")+b[3],10):0]}function d(a){var b=a[0],c=a[1]-1;if(0>c&&0>=b)return g;if(-1===b)return function(a){return c>=a};if(0===b)return function(a){return a===c};if(1===b)return 0>c?f:function(a){return a>=c};var d=c%b;return 0>d&&(d+=b),b>1?function(a){return a>=c&&a%b===d}:(b*=-1,function(a){return c>=a&&a%b===d})}var e=a("./basefunctions.js"),f=e.trueFunc,g=e.falseFunc;b.exports=function(a){return d(c(a))},b.exports.parse=c,b.exports.compile=d;var h=/^([+\-]?\d*n)?\s*(?:([+\-]?)\s*(\d+))?$/},{"./basefunctions.js":12}],16:[function(a,b){function c(a){for(var b=0;a&&b<a.length;b++)if(h(a[b]))return a[b]}function d(a,b){var c={name:a,value:b};return function(a){return q(a,c)}}function e(a){return function(b){return!!j(b)&&a(b)}}function f(a,b,c){if(null===c){if(a.length>1)throw new SyntaxError("pseudo-selector :"+b+" requires an argument")}else if(1===a.length)throw new SyntaxError("pseudo-selector :"+b+" doesn't have any arguments")}var g=a("domutils"),h=g.isTag,i=g.getText,j=g.getParent,k=g.getChildren,l=g.getSiblings,m=g.hasAttrib,n=g.getName,o=g.getAttributeValue,p=a("./nth-check.js"),q=a("./attributes.js").rules.equals,r=a("./basefunctions.js"),s=r.trueFunc,t=r.falseFunc,u={contains:function(a,b){return'"'!==b.charAt(0)&&"'"!==b.charAt(0)||b.charAt(0)!==b.substr(-1)||(b=b.slice(1,-1)),function(c){return i(c).indexOf(b)>=0&&a(c)}},"first-child":function(a){return function(b){return c(l(b))===b&&a(b)}},"last-child":function(a){return function(b){for(var c=l(b),d=c.length-1;d>=0;d--){if(c[d]===b)return a(b);if(h(c[d]))break}return!1}},"first-of-type":function(a){return function(b){for(var c=l(b),d=0;d<c.length;d++)if(h(c[d])){if(c[d]===b)return a(b);if(n(c[d])===n(b))break}return!1}},"last-of-type":function(a){return function(b){for(var c=l(b),d=c.length-1;d>=0;d--)if(h(c[d])){if(c[d]===b)return a(b);if(n(c[d])===n(b))break}return!1}},"only-of-type":function(a){return function(b){for(var c=l(b),d=0,e=c.length;e>d;d++)if(h(c[d])){if(c[d]===b)continue;if(n(c[d])===n(b))return!1}return a(b)}},"only-child":function(a){return function(b){for(var c=l(b),d=0;d<c.length;d++)if(h(c[d])&&c[d]!==b)return!1;return a(b)}},"nth-child":function(a,b){var c=p(b);return c===t?c:c===s?e(a):function(b){for(var d=l(b),e=0,f=0;e<d.length;e++)if(h(d[e])){if(d[e]===b)break;f++}return c(f)&&a(b)}},"nth-last-child":function(a,b){var c=p(b);return c===t?c:c===s?e(a):function(b){for(var d=l(b),e=0,f=d.length-1;f>=0;f--)if(h(d[f])){if(d[f]===b)break;e++}return c(e)&&a(b)}},"nth-of-type":function(a,b){var c=p(b);return c===t?c:c===s?e(a):function(b){for(var d=l(b),e=0,f=0;f<d.length;f++)if(h(d[f])){if(d[f]===b)break;n(d[f])===n(b)&&e++}return c(e)&&a(b)}},"nth-last-of-type":function(a,b){var c=p(b);return c===t?c:c===s?e(a):function(b){for(var d=l(b),e=0,f=d.length-1;f>=0&&d[f]!==b;f--)n(d[f])===n(b)&&e++;return c(e)&&a(b)}},checkbox:d("type","checkbox"),file:d("type","file"),password:d("type","password"),radio:d("type","radio"),reset:d("type","reset"),image:d("type","image"),submit:d("type","submit")},v={root:function(a){return!j(a)},empty:function(a){return!k(a).some(function(a){return h(a)||"text"===a.type})},selected:function(a){if(m(a,"selected"))return!0;if("option"!==n(a))return!1;var b=j(a);if(!b||"select"!==n(b))return!1;for(var c=k(b),d=!1,e=0;e<c.length;e++)if(h(c[e]))if(c[e]===a)d=!0;else{if(!d)return!1;if(m(c[e],"selected"))return!1}return d},disabled:function(a){return m(a,"disabled")},enabled:function(a){return!m(a,"disabled")},checked:function(a){return m(a,"checked")||v.selected(a)},parent:function(a){return!v.empty(a)},header:function(a){var b=n(a);return"h1"===b||"h2"===b||"h3"===b||"h4"===b||"h5"===b||"h6"===b},button:function(a){var b=n(a);return"button"===b||"input"===b&&"button"===o(a,"type")},input:function(a){var b=n(a);return"input"===b||"textarea"===b||"select"===b||"button"===b},text:function(a){var b;return"input"===n(a)&&(!(b=o(a,"type"))||"text"===b.toLowerCase())}};b.exports={compile:function(a,b){var c=b.name,d=b.data;if("function"==typeof u[c])return f(u[c],c,d),u[c](a,d);if("function"==typeof v[c]){var e=v[c];return f(e,c,d),function(b){return e(b,d)&&a(b)}}throw new SyntaxError("unmatched pseudo-class :"+c)},filters:u,pseudos:v}},{"./attributes.js":11,"./basefunctions.js":12,"./nth-check.js":15,domutils:19}],17:[function(a,b){function c(a){for(var b=1;b<a.length;b++){var c=e[a[b].type];if(!(0>c))for(var g=b-1;g>=0&&(!(c>e[a[g].type])&&(c===d&&e[a[g].type]===d&&f[a[b].action]<=f[a[g].action]));g--){var h=a[g+1];a[g+1]=a[g],a[g]=h}}return a}b.exports=c;var d=1,e={__proto__:null,universal:5,tag:3,attribute:d,pseudo:0,descendant:-1,child:-1,parent:-1,sibling:-1,adjacent:-1},f={__proto__:null,exists:8,equals:7,not:6,start:5,end:4,any:3,hyphen:2,element:1}},{}],18:[function(a,b){"use strict";function c(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)}function d(a){return a.replace(i,c)}function e(a){for(var b=1,c=1,d=a.length;c>0&&d>b;b++)"("===a.charAt(b)?c++:")"===a.charAt(b)&&c--;return b}function f(a,b){function c(){var b=a.match(h)[0];return a=a.substr(b.length),d(b)}a=(a+"").trimLeft();for(var f,i,n,o=[],p=[],q=!1;""!==a;)if(h.test(a))q&&(p.push({type:"descendant"}),q=!1),n=c(),b&&("lowerCaseTags"in b?!b.lowerCaseTags:b.xmlMode)||(n=n.toLowerCase()),p.push({type:"tag",name:n});else if(g.test(a))q=!0,a=a.trimLeft();else{if(i=a.charAt(0),a=a.substr(1),i in l){p.push({type:l[i]}),a=a.trimLeft(),q=!1;continue}if(","===i){if(0===p.length)throw new SyntaxError("empty sub-selector");o.push(p),p=[],a=a.trimLeft(),q=!1;continue}if(q&&(p.push({type:"descendant"}),q=!1),"*"===i)p.push({type:"universal"});else if(i in m)p.push({type:"attribute",name:m[i][0],action:m[i][1],value:c(),ignoreCase:!1});else if("["===i){if(f=a.match(j),!f)throw new SyntaxError("Malformed attribute selector: "+a);a=a.substr(f[0].length),n=d(f[1]),b&&("lowerCaseAttributeNames"in b?!b.lowerCaseAttributeNames:b.xmlMode)||(n=n.toLowerCase()),p.push({type:"attribute",name:n,action:k[f[2]],value:d(f[4]||f[5]||""),ignoreCase:!!f[6]})}else{if(":"!==i)throw new SyntaxError("Unmatched selector: "+i+a);if(n=c().toLowerCase(),f=null,"("===a.charAt(0)){var r=e(a);f=a.substr(1,r-2),a=a.substr(r)}p.push({type:"pseudo",name:n,data:f})}}if(o.length>0&&0===p.length)throw new SyntaxError("empty sub-selector");return o.push(p),o}b.exports=f;var g=/^\s/,h=/^(?:\\.|[\w\-\u00c0-\uFFFF])+/,i=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,j=/^\s*((?:\\.|[\w\u00c0-\uFFFF\-])+)\s*(?:(\S?)=\s*(?:(['"])(.*?)\3|(#?(?:\\.|[\w\u00c0-\uFFFF\-])*)|)|)\s*(i)?\]/,k={__proto__:null,undefined:"exists","":"equals","~":"element","^":"start",$:"end","*":"any","!":"not","|":"hyphen"},l={__proto__:null,">":"child","<":"parent","~":"sibling","+":"adjacent"},m={__proto__:null,"#":["id","equals"],".":["class","element"]}},{}],19:[function(a,b){var c=b.exports;[a("./lib/stringify"),a("./lib/traversal"),a("./lib/manipulation"),a("./lib/querying"),a("./lib/legacy"),a("./lib/helpers")].forEach(function(a){Object.keys(a).forEach(function(b){c[b]=a[b].bind(c)})})},{"./lib/helpers":20,"./lib/legacy":21,"./lib/manipulation":22,"./lib/querying":23,"./lib/stringify":24,"./lib/traversal":25}],20:[function(a,b,c){c.removeSubsets=function(a){for(var b,c,d,e=a.length;--e>-1;){for(b=c=a[e],a[e]=null,d=!0;c;){if(a.indexOf(c)>-1){d=!1,a.splice(e,1);break}c=c.parent}d&&(a[e]=b)}return a}},{}],21:[function(a,b,c){function d(a,b){return"function"==typeof b?function(c){return c.attribs&&b(c.attribs[a])}:function(c){return c.attribs&&c.attribs[a]===b}}function e(a,b){return function(c){return a(c)||b(c)}}var f=a("domelementtype"),g=c.isTag=f.isTag;c.testElement=function(a,b){for(var c in a)if(a.hasOwnProperty(c)){if("tag_name"===c){if(!g(b)||!a.tag_name(b.name))return!1}else if("tag_type"===c){if(!a.tag_type(b.type))return!1}else if("tag_contains"===c){if(g(b)||!a.tag_contains(b.data))return!1}else if(!b.attribs||!a[c](b.attribs[c]))return!1}else;return!0};var h={tag_name:function(a){return"function"==typeof a?function(b){return g(b)&&a(b.name)}:"*"===a?g:function(b){return g(b)&&b.name===a}},tag_type:function(a){return"function"==typeof a?function(b){return a(b.type)}:function(b){return b.type===a}},tag_contains:function(a){return"function"==typeof a?function(b){return!g(b)&&a(b.data)}:function(b){return!g(b)&&b.data===a}}};c.getElements=function(a,b,c,f){var g=Object.keys(a).map(function(b){var c=a[b];return b in h?h[b](c):d(b,c)});return 0===g.length?[]:this.filter(g.reduce(e),b,c,f)},c.getElementById=function(a,b,c){return Array.isArray(b)||(b=[b]),this.findOne(d("id",a),b,c!==!1)},c.getElementsByTagName=function(a,b,c,d){return this.filter(h.tag_name(a),b,c,d)},c.getElementsByTagType=function(a,b,c,d){return this.filter(h.tag_type(a),b,c,d)}},{domelementtype:26}],22:[function(a,b,c){c.removeElement=function(a){if(a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.parent){var b=a.parent.children;b.splice(b.lastIndexOf(a),1)}},c.replaceElement=function(a,b){var c=b.prev=a.prev;c&&(c.next=b);var d=b.next=a.next;d&&(d.prev=b);var e=b.parent=a.parent;if(e){var f=e.children;f[f.lastIndexOf(a)]=b}},c.appendChild=function(a,b){if(b.parent=a,1!==a.children.push(b)){var c=a.children[a.children.length-2];c.next=b,b.prev=c,b.next=null}},c.append=function(a,b){var c=a.parent,d=a.next;if(b.next=d,b.prev=a,a.next=b,b.parent=c,d){if(d.prev=b,c){var e=c.children;e.splice(e.lastIndexOf(d),0,b)}}else c&&c.children.push(b)},c.prepend=function(a,b){var c=a.parent;if(c){var d=c.children;d.splice(d.lastIndexOf(a),0,b)}a.prev&&(a.prev.next=b),b.parent=c,b.prev=a.prev,b.next=a,a.prev=b}},{}],23:[function(a,b){function c(a,b,c,e){return Array.isArray(b)||(b=[b]),"number"==typeof e&&isFinite(e)||(e=1/0),d(a,b,c!==!1,e)
+}function d(a,b,c,e){for(var f,g=[],h=0,i=b.length;i>h&&!(a(b[h])&&(g.push(b[h]),--e<=0))&&(f=b[h].children,!(c&&f&&f.length>0&&(f=d(a,f,c,e),g=g.concat(f),e-=f.length,0>=e)));h++);return g}function e(a,b){for(var c=0,d=b.length;d>c;c++)if(a(b[c]))return b[c];return null}function f(a,b){for(var c=null,d=0,e=b.length;e>d&&!c;d++)i(b[d])&&(a(b[d])?c=b[d]:b[d].children.length>0&&(c=f(a,b[d].children)));return c}function g(a,b){for(var c=0,d=b.length;d>c;c++)if(i(b[c])&&(a(b[c])||b[c].children.length>0&&g(a,b[c].children)))return!0;return!1}function h(a,b){for(var c=[],d=0,e=b.length;e>d;d++)i(b[d])&&(a(b[d])&&c.push(b[d]),b[d].children.length>0&&(c=c.concat(h(a,b[d].children))));return c}var i=a("domelementtype").isTag;b.exports={filter:c,find:d,findOneChild:e,findOne:f,existsOne:g,findAll:h}},{domelementtype:26}],24:[function(a,b){function c(a){return a.children?a.children.map(d).join(""):""}function d(a){switch(a.type){case f.Text:return a.data;case f.Comment:return"<!--"+a.data+"-->";case f.Directive:return"<"+a.data+">";case f.CDATA:return"<!CDATA "+c(a)+"]]>"}var b="<"+a.name;if("attribs"in a)for(var d in a.attribs)if(a.attribs.hasOwnProperty(d)){b+=" "+d;var e=a.attribs[d];null==e?d in h||(b+='=""'):b+='="'+e+'"'}return a.name in i&&0===a.children.length?b+" />":b+">"+c(a)+"</"+a.name+">"}function e(a){return Array.isArray(a)?a.map(e).join(""):g(a)||a.type===f.CDATA?e(a.children):a.type===f.Text?a.data:""}var f=a("domelementtype"),g=f.isTag;b.exports={getInnerHTML:c,getOuterHTML:d,getText:e};var h={__proto__:null,async:!0,autofocus:!0,autoplay:!0,checked:!0,controls:!0,defer:!0,disabled:!0,hidden:!0,loop:!0,multiple:!0,open:!0,readonly:!0,required:!0,scoped:!0,selected:!0},i={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,link:!0,meta:!0,param:!0,embed:!0}},{domelementtype:26}],25:[function(a,b,c){var d=c.getChildren=function(a){return a.children},e=c.getParent=function(a){return a.parent};c.getSiblings=function(a){var b=e(a);return b?d(b):[a]},c.getAttributeValue=function(a,b){return a.attribs&&a.attribs[b]},c.hasAttrib=function(a,b){return hasOwnProperty.call(a.attribs,b)},c.getName=function(a){return a.name}},{}],26:[function(a,b){b.exports={Text:"text",Directive:"directive",Comment:"comment",Script:"script",Style:"style",Tag:"tag",CDATA:"cdata",isTag:function(a){return"tag"===a.type||"script"===a.type||"style"===a.type}}},{}],27:[function(a,b){function c(a,b){if(a){var c,d="";for(var e in a)c=a[e],d&&(d+=" "),d+=!c&&k[e]?e:e+'="'+(b.decodeEntities?j.encodeXML(c):c)+'"';return d}}function d(a,b){var d="<"+a.name,e=c(a.attribs,b);return e&&(d+=" "+e),!b.xmlMode||a.children&&0!==a.children.length?(d+=">",d+=n(a.children,b),(!m[a.name]||b.xmlMode)&&(d+="</"+a.name+">")):d+="/>",d}function e(a){return"<"+a.data+">"}function f(a,b){var c=a.data||"";return!b.decodeEntities||a.parent&&a.parent.name in l||(c=j.encodeXML(c)),c}function g(a){return"<![CDATA["+a.children[0].data+"]]>"}function h(a){return"<!--"+a.data+"-->"}var i=a("domelementtype"),j=a("entities"),k={__proto__:null,allowfullscreen:!0,async:!0,autofocus:!0,autoplay:!0,checked:!0,controls:!0,"default":!0,defer:!0,disabled:!0,hidden:!0,ismap:!0,loop:!0,multiple:!0,muted:!0,open:!0,readonly:!0,required:!0,reversed:!0,scoped:!0,seamless:!0,selected:!0,typemustmatch:!0},l={__proto__:null,style:!0,script:!0,xmp:!0,iframe:!0,noembed:!0,noframes:!0,plaintext:!0,noscript:!0},m={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,path:!0,circle:!0,ellipse:!0,line:!0,rect:!0,use:!0},n=b.exports=function(a,b){Array.isArray(a)||a.cheerio||(a=[a]),b=b||{};for(var c="",j=0;j<a.length;j++){var k=a[j];c+="root"===k.type?n(k.children,b):i.isTag(k)?d(k,b):k.type===i.Directive?e(k):k.type===i.Comment?h(k):k.type===i.CDATA?g(k):f(k,b)}return c}},{domelementtype:28,entities:29}],28:[function(a,b,c){arguments[4][26][0].apply(c,arguments)},{dup:26}],29:[function(a,b,c){var d=a("./lib/encode.js"),e=a("./lib/decode.js");c.decode=function(a,b){return(!b||0>=b?e.XML:e.HTML)(a)},c.decodeStrict=function(a,b){return(!b||0>=b?e.XML:e.HTMLStrict)(a)},c.encode=function(a,b){return(!b||0>=b?d.XML:d.HTML)(a)},c.encodeXML=d.XML,c.encodeHTML4=c.encodeHTML5=c.encodeHTML=d.HTML,c.decodeXML=c.decodeXMLStrict=e.XML,c.decodeHTML4=c.decodeHTML5=c.decodeHTML=e.HTML,c.decodeHTML4Strict=c.decodeHTML5Strict=c.decodeHTMLStrict=e.HTMLStrict,c.escape=d.escape},{"./lib/decode.js":30,"./lib/encode.js":32}],30:[function(a,b){function c(a){var b=Object.keys(a).join("|"),c=e(a);b+="|#[xX][\\da-fA-F]+|#\\d+";var d=new RegExp("&(?:"+b+");","g");return function(a){return String(a).replace(d,c)}}function d(a,b){return b>a?1:-1}function e(a){return function(b){return"#"===b.charAt(1)?i("X"===b.charAt(2)||"x"===b.charAt(2)?parseInt(b.substr(3),16):parseInt(b.substr(2),10)):a[b.slice(1,-1)]}}var f=a("../maps/entities.json"),g=a("../maps/legacy.json"),h=a("../maps/xml.json"),i=a("./decode_codepoint.js"),j=c(h),k=c(f),l=function(){function a(a){return";"!==a.substr(-1)&&(a+=";"),k(a)}for(var b=Object.keys(g).sort(d),c=Object.keys(f).sort(d),h=0,i=0;h<c.length;h++)b[i]===c[h]?(c[h]+=";?",i++):c[h]+=";";var j=new RegExp("&(?:"+c.join("|")+"|#[xX][\\da-fA-F]+;?|#\\d+;?)","g"),k=e(f);return function(b){return String(b).replace(j,a)}}();b.exports={XML:j,HTML:l,HTMLStrict:k}},{"../maps/entities.json":34,"../maps/legacy.json":35,"../maps/xml.json":36,"./decode_codepoint.js":31}],31:[function(a,b){function c(a){if(a>=55296&&57343>=a||a>1114111)return"�";a in d&&(a=d[a]);var b="";return a>65535&&(a-=65536,b+=String.fromCharCode(a>>>10&1023|55296),a=56320|1023&a),b+=String.fromCharCode(a)}var d=a("../maps/decode.json");b.exports=c},{"../maps/decode.json":33}],32:[function(a,b,c){function d(a){return Object.keys(a).sort().reduce(function(b,c){return b[a[c]]="&"+c+";",b},{})}function e(a){var b=[],c=[];return Object.keys(a).forEach(function(a){1===a.length?b.push("\\"+a):c.push(a)}),c.unshift("["+b.join("")+"]"),new RegExp(c.join("|"),"g")}function f(a){return"&#x"+a.charCodeAt(0).toString(16).toUpperCase()+";"}function g(a){var b=a.charCodeAt(0),c=a.charCodeAt(1),d=1024*(b-55296)+c-56320+65536;return"&#x"+d.toString(16).toUpperCase()+";"}function h(a,b){function c(b){return a[b]}return function(a){return a.replace(b,c).replace(o,g).replace(n,f)}}function i(a){return a.replace(p,f).replace(o,g).replace(n,f)}var j=d(a("../maps/xml.json")),k=e(j);c.XML=h(j,k);var l=d(a("../maps/entities.json")),m=e(l);c.HTML=h(l,m);var n=/[^\0-\x7F]/g,o=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,p=e(j);c.escape=i},{"../maps/entities.json":34,"../maps/xml.json":36}],33:[function(a,b){b.exports={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376}},{}],34:[function(a,b){b.exports={Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",amp:"&",AMP:"&",andand:"⩕",And:"⩓",and:"∧",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angmsd:"∡",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",apacir:"⩯",ap:"≈",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxHd:"╤",boxhD:"╥",boxHD:"╦",boxhu:"┴",boxHu:"╧",boxhU:"╨",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsolb:"⧅",bsol:"\\",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",capand:"⩄",capbrcup:"⩉",capcap:"⩋",cap:"∩",Cap:"⋒",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cir:"○",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cup:"∪",Cup:"⋓",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",Darr:"↡",dArr:"⇓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",ddagger:"‡",ddarr:"⇊",DD:"ⅅ",dd:"ⅆ",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrowBar:"⤓",downarrow:"↓",DownArrow:"↓",Downarrow:"⇓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVectorBar:"⥖",DownLeftVector:"↽",DownRightTeeVector:"⥟",DownRightVectorBar:"⥗",DownRightVector:"⇁",DownTeeArrow:"↧",DownTee:"⊤",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",Ecirc:"Ê",ecirc:"ê",ecir:"≖",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",edot:"ė",eDot:"≑",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp13:" ",emsp14:" ",emsp:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",ge:"≥",gE:"≧",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",gescc:"⪩",ges:"⩾",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gla:"⪥",gl:"≷",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",gtcc:"⪧",gtcir:"⩺",gt:">",GT:">",Gt:"≫",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",harrcir:"⥈",harr:"↔",hArr:"⇔",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",Im:"ℑ",imof:"⊷",imped:"Ƶ",Implies:"⇒",incare:"℅","in":"∈",infin:"∞",infintie:"⧝",inodot:"ı",intcal:"⊺","int":"∫",Int:"∬",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larrb:"⇤",larrbfs:"⤟",larr:"←",Larr:"↞",lArr:"⇐",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",latail:"⤙",lAtail:"⤛",lat:"⪫",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",LeftArrowBar:"⇤",leftarrow:"←",LeftArrow:"←",Leftarrow:"⇐",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVectorBar:"⥙",LeftDownVector:"⇃",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTeeArrow:"↤",LeftTee:"⊣",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangleBar:"⧏",LeftTriangle:"⊲",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVectorBar:"⥘",LeftUpVector:"↿",LeftVectorBar:"⥒",LeftVector:"↼",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",lescc:"⪨",les:"⩽",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",llarr:"⇇",ll:"≪",Ll:"⋘",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoustache:"⎰",lmoust:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftrightarrow:"⟷",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longmapsto:"⟼",longrightarrow:"⟶",LongRightArrow:"⟶",Longrightarrow:"⟹",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",ltcc:"⪦",ltcir:"⩹",lt:"<",LT:"<",Lt:"≪",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",midast:"*",midcir:"⫰",mid:"∣",middot:"·",minusb:"⊟",minus:"−",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natural:"♮",naturals:"ℕ",natur:"♮",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",ne:"≠",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nlE:"≦̸",nle:"≰",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangleBar:"⧏̸",NotLeftTriangle:"⋪",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangleBar:"⧐̸",NotRightTriangle:"⋫",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",nparallel:"∦",npar:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",nprec:"⊀",npreceq:"⪯̸",npre:"⪯̸",nrarrc:"⤳̸",nrarr:"↛",nrArr:"⇏",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",Ocirc:"Ô",ocirc:"ô",ocir:"⊚",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",orarr:"↻",Or:"⩔",or:"∨",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",otimesas:"⨶",Otimes:"⨷",otimes:"⊗",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",para:"¶",parallel:"∥",par:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plus:"+",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",prap:"⪷",Pr:"⪻",pr:"≺",prcue:"≼",precapprox:"⪷",prec:"≺",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",pre:"⪯",prE:"⪳",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportional:"∝",Proportion:"∷",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarr:"→",Rarr:"↠",rArr:"⇒",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",Re:"ℜ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrowBar:"⇥",rightarrow:"→",RightArrow:"→",Rightarrow:"⇒",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVectorBar:"⥕",RightDownVector:"⇂",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTeeArrow:"↦",RightTee:"⊢",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangleBar:"⧐",RightTriangle:"⊳",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVectorBar:"⥔",RightUpVector:"↾",RightVectorBar:"⥓",RightVector:"⇀",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoustache:"⎱",rmoust:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",scap:"⪸",Scaron:"Š",scaron:"š",Sc:"⪼",sc:"≻",sccue:"≽",sce:"⪰",scE:"⪴",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdotb:"⊡",sdot:"⋅",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",solbar:"⌿",solb:"⧄",sol:"/",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squ:"□",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succapprox:"⪸",succ:"≻",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup1:"¹",sup2:"²",sup3:"³",sup:"⊃",Sup:"⋑",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"	",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",therefore:"∴",Therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",ThinSpace:" ",thinsp:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",timesbar:"⨱",timesb:"⊠",times:"×",timesd:"⨰",tint:"∭",toea:"⤨",topbot:"⌶",topcir:"⫱",top:"⊤",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",uarr:"↑",Uarr:"↟",uArr:"⇑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrowBar:"⤒",uparrow:"↑",UpArrow:"↑",Uparrow:"⇑",UpArrowDownArrow:"⇅",updownarrow:"↕",UpDownArrow:"↕",Updownarrow:"⇕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTeeArrow:"↥",UpTee:"⊥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",Vcy:"В",vcy:"в",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",veebar:"⊻",vee:"∨",Vee:"⋁",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xharr:"⟷",xhArr:"⟺",Xi:"Ξ",xi:"ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",yuml:"ÿ",Yuml:"Ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",zfr:"𝔷",Zfr:"ℨ",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"}},{}],35:[function(a,b){b.exports={Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",amp:"&",AMP:"&",Aring:"Å",aring:"å",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",brvbar:"¦",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",iquest:"¿",Iuml:"Ï",iuml:"ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",Ntilde:"Ñ",ntilde:"ñ",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",Ograve:"Ò",ograve:"ò",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",Ouml:"Ö",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",THORN:"Þ",thorn:"þ",times:"×",Uacute:"Ú",uacute:"ú",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",Uuml:"Ü",uuml:"ü",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ"}
+},{}],36:[function(a,b){b.exports={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'}},{}],37:[function(a,b){function c(a){this._cbs=a||{},this.events=[]}b.exports=c;var d=a("./").EVENTS;Object.keys(d).forEach(function(a){if(0===d[a])a="on"+a,c.prototype[a]=function(){this.events.push([a]),this._cbs[a]&&this._cbs[a]()};else if(1===d[a])a="on"+a,c.prototype[a]=function(b){this.events.push([a,b]),this._cbs[a]&&this._cbs[a](b)};else{if(2!==d[a])throw Error("wrong number of arguments");a="on"+a,c.prototype[a]=function(b,c){this.events.push([a,b,c]),this._cbs[a]&&this._cbs[a](b,c)}}}),c.prototype.onreset=function(){this.events=[],this._cbs.onreset&&this._cbs.onreset()},c.prototype.restart=function(){this._cbs.onreset&&this._cbs.onreset();for(var a=0,b=this.events.length;b>a;a++)if(this._cbs[this.events[a][0]]){var c=this.events[a].length;1===c?this._cbs[this.events[a][0]]():2===c?this._cbs[this.events[a][0]](this.events[a][1]):this._cbs[this.events[a][0]](this.events[a][1],this.events[a][2])}}},{"./":44}],38:[function(a,b){function c(a,b){this.init(a,b)}function d(a,b){return j.getElementsByTagName(a,b,!0)}function e(a,b){return j.getElementsByTagName(a,b,!0,1)[0]}function f(a,b,c){return j.getText(j.getElementsByTagName(a,b,c,1)).trim()}function g(a,b,c,d,e){var g=f(c,d,e);g&&(a[b]=g)}var h=a("./index.js"),i=h.DomHandler,j=h.DomUtils;a("util").inherits(c,i),c.prototype.init=i;var k=function(a){return"rss"===a||"feed"===a||"rdf:RDF"===a};c.prototype.onend=function(){var a,b,c={},h=e(k,this.dom);h&&("feed"===h.name?(b=h.children,c.type="atom",g(c,"id","id",b),g(c,"title","title",b),(a=e("link",b))&&(a=a.attribs)&&(a=a.href)&&(c.link=a),g(c,"description","subtitle",b),(a=f("updated",b))&&(c.updated=new Date(a)),g(c,"author","email",b,!0),c.items=d("entry",b).map(function(a){var b,c={};return a=a.children,g(c,"id","id",a),g(c,"title","title",a),(b=e("link",a))&&(b=b.attribs)&&(b=b.href)&&(c.link=b),(b=f("summary",a)||f("content",a))&&(c.description=b),(b=f("updated",a))&&(c.pubDate=new Date(b)),c})):(b=e("channel",h.children).children,c.type=h.name.substr(0,3),c.id="",g(c,"title","title",b),g(c,"link","link",b),g(c,"description","description",b),(a=f("lastBuildDate",b))&&(c.updated=new Date(a)),g(c,"author","managingEditor",b,!0),c.items=d("item",h.children).map(function(a){var b,c={};return a=a.children,g(c,"id","guid",a),g(c,"title","title",a),g(c,"link","link",a),g(c,"description","description",a),(b=f("pubDate",a))&&(c.pubDate=new Date(b)),c}))),this.dom=c,i.prototype._handleCallback.call(this,h?null:Error("couldn't find root of feed"))},b.exports=c},{"./index.js":44,util:106}],39:[function(a,b){function c(a,b){this._options=b||{},this._cbs=a||{},this._tagname="",this._attribname="",this._attribvalue="",this._attribs=null,this._stack=[],this.startIndex=0,this.endIndex=null,this._lowerCaseTagNames="lowerCaseTags"in this._options?!!this._options.lowerCaseTags:!this._options.xmlMode,this._lowerCaseAttributeNames="lowerCaseAttributeNames"in this._options?!!this._options.lowerCaseAttributeNames:!this._options.xmlMode,this._tokenizer=new d(this._options,this),this._cbs.onparserinit&&this._cbs.onparserinit(this)}var d=a("./Tokenizer.js"),e={input:!0,option:!0,optgroup:!0,select:!0,button:!0,datalist:!0,textarea:!0},f={tr:{tr:!0,th:!0,td:!0},th:{th:!0},td:{thead:!0,td:!0},body:{head:!0,link:!0,script:!0},li:{li:!0},p:{p:!0},h1:{p:!0},h2:{p:!0},h3:{p:!0},h4:{p:!0},h5:{p:!0},h6:{p:!0},select:e,input:e,output:e,button:e,datalist:e,textarea:e,option:{option:!0},optgroup:{optgroup:!0}},g={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,path:!0,circle:!0,ellipse:!0,line:!0,rect:!0,use:!0,stop:!0,polyline:!0,polygone:!0},h=/\s|\//;a("util").inherits(c,a("events").EventEmitter),c.prototype._updatePosition=function(a){this.startIndex=null===this.endIndex?this._tokenizer._sectionStart<=a?0:this._tokenizer._sectionStart-a:this.endIndex+1,this.endIndex=this._tokenizer.getAbsoluteIndex()},c.prototype.ontext=function(a){this._updatePosition(1),this.endIndex--,this._cbs.ontext&&this._cbs.ontext(a)},c.prototype.onopentagname=function(a){if(this._lowerCaseTagNames&&(a=a.toLowerCase()),this._tagname=a,!this._options.xmlMode&&a in f)for(var b;(b=this._stack[this._stack.length-1])in f[a];this.onclosetag(b));!this._options.xmlMode&&a in g||this._stack.push(a),this._cbs.onopentagname&&this._cbs.onopentagname(a),this._cbs.onopentag&&(this._attribs={})},c.prototype.onopentagend=function(){this._updatePosition(1),this._attribs&&(this._cbs.onopentag&&this._cbs.onopentag(this._tagname,this._attribs),this._attribs=null),!this._options.xmlMode&&this._cbs.onclosetag&&this._tagname in g&&this._cbs.onclosetag(this._tagname),this._tagname=""},c.prototype.onclosetag=function(a){if(this._updatePosition(1),this._lowerCaseTagNames&&(a=a.toLowerCase()),!this._stack.length||a in g&&!this._options.xmlMode)this._options.xmlMode||"br"!==a&&"p"!==a||(this.onopentagname(a),this._closeCurrentTag());else{var b=this._stack.lastIndexOf(a);if(-1!==b)if(this._cbs.onclosetag)for(b=this._stack.length-b;b--;)this._cbs.onclosetag(this._stack.pop());else this._stack.length=b;else"p"!==a||this._options.xmlMode||(this.onopentagname(a),this._closeCurrentTag())}},c.prototype.onselfclosingtag=function(){this._options.xmlMode||this._options.recognizeSelfClosing?this._closeCurrentTag():this.onopentagend()},c.prototype._closeCurrentTag=function(){var a=this._tagname;this.onopentagend(),this._stack[this._stack.length-1]===a&&(this._cbs.onclosetag&&this._cbs.onclosetag(a),this._stack.pop())},c.prototype.onattribname=function(a){this._lowerCaseAttributeNames&&(a=a.toLowerCase()),this._attribname=a},c.prototype.onattribdata=function(a){this._attribvalue+=a},c.prototype.onattribend=function(){this._cbs.onattribute&&this._cbs.onattribute(this._attribname,this._attribvalue),this._attribs&&!Object.prototype.hasOwnProperty.call(this._attribs,this._attribname)&&(this._attribs[this._attribname]=this._attribvalue),this._attribname="",this._attribvalue=""},c.prototype._getInstructionName=function(a){var b=a.search(h),c=0>b?a:a.substr(0,b);return this._lowerCaseTagNames&&(c=c.toLowerCase()),c},c.prototype.ondeclaration=function(a){if(this._cbs.onprocessinginstruction){var b=this._getInstructionName(a);this._cbs.onprocessinginstruction("!"+b,"!"+a)}},c.prototype.onprocessinginstruction=function(a){if(this._cbs.onprocessinginstruction){var b=this._getInstructionName(a);this._cbs.onprocessinginstruction("?"+b,"?"+a)}},c.prototype.oncomment=function(a){this._updatePosition(4),this._cbs.oncomment&&this._cbs.oncomment(a),this._cbs.oncommentend&&this._cbs.oncommentend()},c.prototype.oncdata=function(a){this._updatePosition(1),this._options.xmlMode||this._options.recognizeCDATA?(this._cbs.oncdatastart&&this._cbs.oncdatastart(),this._cbs.ontext&&this._cbs.ontext(a),this._cbs.oncdataend&&this._cbs.oncdataend()):this.oncomment("[CDATA["+a+"]]")},c.prototype.onerror=function(a){this._cbs.onerror&&this._cbs.onerror(a)},c.prototype.onend=function(){if(this._cbs.onclosetag)for(var a=this._stack.length;a>0;this._cbs.onclosetag(this._stack[--a]));this._cbs.onend&&this._cbs.onend()},c.prototype.reset=function(){this._cbs.onreset&&this._cbs.onreset(),this._tokenizer.reset(),this._tagname="",this._attribname="",this._attribs=null,this._stack=[],this._cbs.onparserinit&&this._cbs.onparserinit(this)},c.prototype.parseComplete=function(a){this.reset(),this.end(a)},c.prototype.write=function(a){this._tokenizer.write(a)},c.prototype.end=function(a){this._tokenizer.end(a)},c.prototype.pause=function(){this._tokenizer.pause()},c.prototype.resume=function(){this._tokenizer.resume()},c.prototype.parseChunk=c.prototype.write,c.prototype.done=c.prototype.end,b.exports=c},{"./Tokenizer.js":42,events:87,util:106}],40:[function(a,b){function c(a){this._cbs=a||{}}b.exports=c;var d=a("./").EVENTS;Object.keys(d).forEach(function(a){if(0===d[a])a="on"+a,c.prototype[a]=function(){this._cbs[a]&&this._cbs[a]()};else if(1===d[a])a="on"+a,c.prototype[a]=function(b){this._cbs[a]&&this._cbs[a](b)};else{if(2!==d[a])throw Error("wrong number of arguments");a="on"+a,c.prototype[a]=function(b,c){this._cbs[a]&&this._cbs[a](b,c)}}})},{"./":44}],41:[function(a,b){function c(a){e.call(this,new d(this),a)}function d(a){this.scope=a}b.exports=c;var e=a("./WritableStream.js");a("util").inherits(c,e),c.prototype.readable=!0;var f=a("../").EVENTS;Object.keys(f).forEach(function(a){if(0===f[a])d.prototype["on"+a]=function(){this.scope.emit(a)};else if(1===f[a])d.prototype["on"+a]=function(b){this.scope.emit(a,b)};else{if(2!==f[a])throw Error("wrong number of arguments!");d.prototype["on"+a]=function(b,c){this.scope.emit(a,b,c)}}})},{"../":44,"./WritableStream.js":43,util:106}],42:[function(a,b){function c(a){return" "===a||"\n"===a||"	"===a||"\f"===a||"\r"===a}function d(a,b){return function(c){c===a&&(this._state=b)}}function e(a,b,c){var d=a.toLowerCase();return a===d?function(a){a===d?this._state=b:(this._state=c,this._index--)}:function(e){e===d||e===a?this._state=b:(this._state=c,this._index--)}}function f(a,b){var c=a.toLowerCase();return function(d){d===c||d===a?this._state=b:(this._state=o,this._index--)}}function g(a,b){this._state=m,this._buffer="",this._sectionStart=0,this._index=0,this._bufferOffset=0,this._baseState=m,this._special=ob,this._cbs=b,this._running=!0,this._ended=!1,this._xmlMode=!(!a||!a.xmlMode),this._decodeEntities=!(!a||!a.decodeEntities)}b.exports=g;var h=a("entities/lib/decode_codepoint.js"),i=a("entities/maps/entities.json"),j=a("entities/maps/legacy.json"),k=a("entities/maps/xml.json"),l=0,m=l++,n=l++,o=l++,p=l++,q=l++,r=l++,s=l++,t=l++,u=l++,v=l++,w=l++,x=l++,y=l++,z=l++,A=l++,B=l++,C=l++,D=l++,E=l++,F=l++,G=l++,H=l++,I=l++,J=l++,K=l++,L=l++,M=l++,N=l++,O=l++,P=l++,Q=l++,R=l++,S=l++,T=l++,U=l++,V=l++,W=l++,X=l++,Y=l++,Z=l++,$=l++,_=l++,ab=l++,bb=l++,cb=l++,db=l++,eb=l++,fb=l++,gb=l++,hb=l++,ib=l++,jb=l++,kb=l++,lb=l++,mb=l++,nb=0,ob=nb++,pb=nb++,qb=nb++;g.prototype._stateText=function(a){"<"===a?(this._index>this._sectionStart&&this._cbs.ontext(this._getSection()),this._state=n,this._sectionStart=this._index):this._decodeEntities&&this._special===ob&&"&"===a&&(this._index>this._sectionStart&&this._cbs.ontext(this._getSection()),this._baseState=m,this._state=ib,this._sectionStart=this._index)},g.prototype._stateBeforeTagName=function(a){"/"===a?this._state=q:">"===a||this._special!==ob||c(a)?this._state=m:"!"===a?(this._state=A,this._sectionStart=this._index+1):"?"===a?(this._state=C,this._sectionStart=this._index+1):"<"===a?(this._cbs.ontext(this._getSection()),this._sectionStart=this._index):(this._state=this._xmlMode||"s"!==a&&"S"!==a?o:Q,this._sectionStart=this._index)},g.prototype._stateInTagName=function(a){("/"===a||">"===a||c(a))&&(this._emitToken("onopentagname"),this._state=t,this._index--)},g.prototype._stateBeforeCloseingTagName=function(a){c(a)||(">"===a?this._state=m:this._special!==ob?"s"===a||"S"===a?this._state=R:(this._state=m,this._index--):(this._state=r,this._sectionStart=this._index))},g.prototype._stateInCloseingTagName=function(a){(">"===a||c(a))&&(this._emitToken("onclosetag"),this._state=s,this._index--)},g.prototype._stateAfterCloseingTagName=function(a){">"===a&&(this._state=m,this._sectionStart=this._index+1)},g.prototype._stateBeforeAttributeName=function(a){">"===a?(this._cbs.onopentagend(),this._state=m,this._sectionStart=this._index+1):"/"===a?this._state=p:c(a)||(this._state=u,this._sectionStart=this._index)},g.prototype._stateInSelfClosingTag=function(a){">"===a?(this._cbs.onselfclosingtag(),this._state=m,this._sectionStart=this._index+1):c(a)||(this._state=t,this._index--)},g.prototype._stateInAttributeName=function(a){("="===a||"/"===a||">"===a||c(a))&&(this._cbs.onattribname(this._getSection()),this._sectionStart=-1,this._state=v,this._index--)},g.prototype._stateAfterAttributeName=function(a){"="===a?this._state=w:"/"===a||">"===a?(this._cbs.onattribend(),this._state=t,this._index--):c(a)||(this._cbs.onattribend(),this._state=u,this._sectionStart=this._index)},g.prototype._stateBeforeAttributeValue=function(a){'"'===a?(this._state=x,this._sectionStart=this._index+1):"'"===a?(this._state=y,this._sectionStart=this._index+1):c(a)||(this._state=z,this._sectionStart=this._index,this._index--)},g.prototype._stateInAttributeValueDoubleQuotes=function(a){'"'===a?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=t):this._decodeEntities&&"&"===a&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=ib,this._sectionStart=this._index)},g.prototype._stateInAttributeValueSingleQuotes=function(a){"'"===a?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=t):this._decodeEntities&&"&"===a&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=ib,this._sectionStart=this._index)},g.prototype._stateInAttributeValueNoQuotes=function(a){c(a)||">"===a?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=t,this._index--):this._decodeEntities&&"&"===a&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=ib,this._sectionStart=this._index)},g.prototype._stateBeforeDeclaration=function(a){this._state="["===a?H:"-"===a?D:B},g.prototype._stateInDeclaration=function(a){">"===a&&(this._cbs.ondeclaration(this._getSection()),this._state=m,this._sectionStart=this._index+1)},g.prototype._stateInProcessingInstruction=function(a){">"===a&&(this._cbs.onprocessinginstruction(this._getSection()),this._state=m,this._sectionStart=this._index+1)},g.prototype._stateBeforeComment=function(a){"-"===a?(this._state=E,this._sectionStart=this._index+1):this._state=B},g.prototype._stateInComment=function(a){"-"===a&&(this._state=F)},g.prototype._stateAfterComment1=function(a){this._state="-"===a?G:E},g.prototype._stateAfterComment2=function(a){">"===a?(this._cbs.oncomment(this._buffer.substring(this._sectionStart,this._index-2)),this._state=m,this._sectionStart=this._index+1):"-"!==a&&(this._state=E)},g.prototype._stateBeforeCdata1=e("C",I,B),g.prototype._stateBeforeCdata2=e("D",J,B),g.prototype._stateBeforeCdata3=e("A",K,B),g.prototype._stateBeforeCdata4=e("T",L,B),g.prototype._stateBeforeCdata5=e("A",M,B),g.prototype._stateBeforeCdata6=function(a){"["===a?(this._state=N,this._sectionStart=this._index+1):(this._state=B,this._index--)},g.prototype._stateInCdata=function(a){"]"===a&&(this._state=O)},g.prototype._stateAfterCdata1=d("]",P),g.prototype._stateAfterCdata2=function(a){">"===a?(this._cbs.oncdata(this._buffer.substring(this._sectionStart,this._index-2)),this._state=m,this._sectionStart=this._index+1):"]"!==a&&(this._state=N)},g.prototype._stateBeforeSpecial=function(a){"c"===a||"C"===a?this._state=S:"t"===a||"T"===a?this._state=ab:(this._state=o,this._index--)},g.prototype._stateBeforeSpecialEnd=function(a){this._state=this._special!==pb||"c"!==a&&"C"!==a?this._special!==qb||"t"!==a&&"T"!==a?m:eb:X},g.prototype._stateBeforeScript1=f("R",T),g.prototype._stateBeforeScript2=f("I",U),g.prototype._stateBeforeScript3=f("P",V),g.prototype._stateBeforeScript4=f("T",W),g.prototype._stateBeforeScript5=function(a){("/"===a||">"===a||c(a))&&(this._special=pb),this._state=o,this._index--},g.prototype._stateAfterScript1=e("R",Y,m),g.prototype._stateAfterScript2=e("I",Z,m),g.prototype._stateAfterScript3=e("P",$,m),g.prototype._stateAfterScript4=e("T",_,m),g.prototype._stateAfterScript5=function(a){">"===a||c(a)?(this._special=ob,this._state=r,this._sectionStart=this._index-6,this._index--):this._state=m},g.prototype._stateBeforeStyle1=f("Y",bb),g.prototype._stateBeforeStyle2=f("L",cb),g.prototype._stateBeforeStyle3=f("E",db),g.prototype._stateBeforeStyle4=function(a){("/"===a||">"===a||c(a))&&(this._special=qb),this._state=o,this._index--},g.prototype._stateAfterStyle1=e("Y",fb,m),g.prototype._stateAfterStyle2=e("L",gb,m),g.prototype._stateAfterStyle3=e("E",hb,m),g.prototype._stateAfterStyle4=function(a){">"===a||c(a)?(this._special=ob,this._state=r,this._sectionStart=this._index-5,this._index--):this._state=m},g.prototype._stateBeforeEntity=e("#",jb,kb),g.prototype._stateBeforeNumericEntity=e("X",mb,lb),g.prototype._parseNamedEntityStrict=function(){if(this._sectionStart+1<this._index){var a=this._buffer.substring(this._sectionStart+1,this._index),b=this._xmlMode?k:i;b.hasOwnProperty(a)&&(this._emitPartial(b[a]),this._sectionStart=this._index+1)}},g.prototype._parseLegacyEntity=function(){var a=this._sectionStart+1,b=this._index-a;for(b>6&&(b=6);b>=2;){var c=this._buffer.substr(a,b);if(j.hasOwnProperty(c))return this._emitPartial(j[c]),void(this._sectionStart+=b+1);b--}},g.prototype._stateInNamedEntity=function(a){";"===a?(this._parseNamedEntityStrict(),this._sectionStart+1<this._index&&!this._xmlMode&&this._parseLegacyEntity(),this._state=this._baseState):("a">a||a>"z")&&("A">a||a>"Z")&&("0">a||a>"9")&&(this._xmlMode||this._sectionStart+1===this._index||(this._baseState!==m?"="!==a&&this._parseNamedEntityStrict():this._parseLegacyEntity()),this._state=this._baseState,this._index--)},g.prototype._decodeNumericEntity=function(a,b){var c=this._sectionStart+a;if(c!==this._index){var d=this._buffer.substring(c,this._index),e=parseInt(d,b);this._emitPartial(h(e)),this._sectionStart=this._index}else this._sectionStart--;this._state=this._baseState},g.prototype._stateInNumericEntity=function(a){";"===a?(this._decodeNumericEntity(2,10),this._sectionStart++):("0">a||a>"9")&&(this._xmlMode?this._state=this._baseState:this._decodeNumericEntity(2,10),this._index--)},g.prototype._stateInHexEntity=function(a){";"===a?(this._decodeNumericEntity(3,16),this._sectionStart++):("a">a||a>"f")&&("A">a||a>"F")&&("0">a||a>"9")&&(this._xmlMode?this._state=this._baseState:this._decodeNumericEntity(3,16),this._index--)},g.prototype._cleanup=function(){this._sectionStart<0?(this._buffer="",this._index=0,this._bufferOffset+=this._index):this._running&&(this._state===m?(this._sectionStart!==this._index&&this._cbs.ontext(this._buffer.substr(this._sectionStart)),this._buffer="",this._index=0,this._bufferOffset+=this._index):this._sectionStart===this._index?(this._buffer="",this._index=0,this._bufferOffset+=this._index):(this._buffer=this._buffer.substr(this._sectionStart),this._index-=this._sectionStart,this._bufferOffset+=this._sectionStart),this._sectionStart=0)},g.prototype.write=function(a){this._ended&&this._cbs.onerror(Error(".write() after done!")),this._buffer+=a,this._parse()},g.prototype._parse=function(){for(;this._index<this._buffer.length&&this._running;){var a=this._buffer.charAt(this._index);this._state===m?this._stateText(a):this._state===n?this._stateBeforeTagName(a):this._state===o?this._stateInTagName(a):this._state===q?this._stateBeforeCloseingTagName(a):this._state===r?this._stateInCloseingTagName(a):this._state===s?this._stateAfterCloseingTagName(a):this._state===p?this._stateInSelfClosingTag(a):this._state===t?this._stateBeforeAttributeName(a):this._state===u?this._stateInAttributeName(a):this._state===v?this._stateAfterAttributeName(a):this._state===w?this._stateBeforeAttributeValue(a):this._state===x?this._stateInAttributeValueDoubleQuotes(a):this._state===y?this._stateInAttributeValueSingleQuotes(a):this._state===z?this._stateInAttributeValueNoQuotes(a):this._state===A?this._stateBeforeDeclaration(a):this._state===B?this._stateInDeclaration(a):this._state===C?this._stateInProcessingInstruction(a):this._state===D?this._stateBeforeComment(a):this._state===E?this._stateInComment(a):this._state===F?this._stateAfterComment1(a):this._state===G?this._stateAfterComment2(a):this._state===H?this._stateBeforeCdata1(a):this._state===I?this._stateBeforeCdata2(a):this._state===J?this._stateBeforeCdata3(a):this._state===K?this._stateBeforeCdata4(a):this._state===L?this._stateBeforeCdata5(a):this._state===M?this._stateBeforeCdata6(a):this._state===N?this._stateInCdata(a):this._state===O?this._stateAfterCdata1(a):this._state===P?this._stateAfterCdata2(a):this._state===Q?this._stateBeforeSpecial(a):this._state===R?this._stateBeforeSpecialEnd(a):this._state===S?this._stateBeforeScript1(a):this._state===T?this._stateBeforeScript2(a):this._state===U?this._stateBeforeScript3(a):this._state===V?this._stateBeforeScript4(a):this._state===W?this._stateBeforeScript5(a):this._state===X?this._stateAfterScript1(a):this._state===Y?this._stateAfterScript2(a):this._state===Z?this._stateAfterScript3(a):this._state===$?this._stateAfterScript4(a):this._state===_?this._stateAfterScript5(a):this._state===ab?this._stateBeforeStyle1(a):this._state===bb?this._stateBeforeStyle2(a):this._state===cb?this._stateBeforeStyle3(a):this._state===db?this._stateBeforeStyle4(a):this._state===eb?this._stateAfterStyle1(a):this._state===fb?this._stateAfterStyle2(a):this._state===gb?this._stateAfterStyle3(a):this._state===hb?this._stateAfterStyle4(a):this._state===ib?this._stateBeforeEntity(a):this._state===jb?this._stateBeforeNumericEntity(a):this._state===kb?this._stateInNamedEntity(a):this._state===lb?this._stateInNumericEntity(a):this._state===mb?this._stateInHexEntity(a):this._cbs.onerror(Error("unknown _state"),this._state),this._index++}this._cleanup()},g.prototype.pause=function(){this._running=!1},g.prototype.resume=function(){this._running=!0,this._index<this._buffer.length&&this._parse(),this._ended&&this._finish()},g.prototype.end=function(a){this._ended&&this._cbs.onerror(Error(".end() after done!")),a&&this.write(a),this._ended=!0,this._running&&this._finish()},g.prototype._finish=function(){this._sectionStart<this._index&&this._handleTrailingData(),this._cbs.onend()},g.prototype._handleTrailingData=function(){var a=this._buffer.substr(this._sectionStart);this._state===N||this._state===O||this._state===P?this._cbs.oncdata(a):this._state===E||this._state===F||this._state===G?this._cbs.oncomment(a):this._state!==kb||this._xmlMode?this._state!==lb||this._xmlMode?this._state!==mb||this._xmlMode?this._state!==o&&this._state!==t&&this._state!==w&&this._state!==v&&this._state!==u&&this._state!==y&&this._state!==x&&this._state!==z&&this._state!==r&&this._cbs.ontext(a):(this._decodeNumericEntity(3,16),this._sectionStart<this._index&&(this._state=this._baseState,this._handleTrailingData())):(this._decodeNumericEntity(2,10),this._sectionStart<this._index&&(this._state=this._baseState,this._handleTrailingData())):(this._parseLegacyEntity(),this._sectionStart<this._index&&(this._state=this._baseState,this._handleTrailingData()))},g.prototype.reset=function(){g.call(this,{xmlMode:this._xmlMode,decodeEntities:this._decodeEntities},this._cbs)},g.prototype.getAbsoluteIndex=function(){return this._bufferOffset+this._index},g.prototype._getSection=function(){return this._buffer.substring(this._sectionStart,this._index)},g.prototype._emitToken=function(a){this._cbs[a](this._getSection()),this._sectionStart=-1},g.prototype._emitPartial=function(a){this._baseState!==m?this._cbs.onattribdata(a):this._cbs.ontext(a)}},{"entities/lib/decode_codepoint.js":56,"entities/maps/entities.json":58,"entities/maps/legacy.json":59,"entities/maps/xml.json":60}],43:[function(a,b){function c(a,b){var c=this._parser=new d(a,b);e.call(this,{decodeStrings:!1}),this.once("finish",function(){c.end()})}b.exports=c;var d=a("./Parser.js"),e=a("stream").Writable||a("readable-stream").Writable;a("util").inherits(c,e),e.prototype._write=function(a,b,c){this._parser.write(a),c()}},{"./Parser.js":39,"readable-stream":82,stream:103,util:106}],44:[function(a,b){function c(a,c){return delete b.exports[a],b.exports[a]=c,c}var d=a("./Parser.js"),e=a("domhandler");b.exports={Parser:d,Tokenizer:a("./Tokenizer.js"),ElementType:a("domelementtype"),DomHandler:e,get FeedHandler(){return c("FeedHandler",a("./FeedHandler.js"))},get Stream(){return c("Stream",a("./Stream.js"))},get WritableStream(){return c("WritableStream",a("./WritableStream.js"))},get ProxyHandler(){return c("ProxyHandler",a("./ProxyHandler.js"))},get DomUtils(){return c("DomUtils",a("domutils"))},get CollectingHandler(){return c("CollectingHandler",a("./CollectingHandler.js"))},DefaultHandler:e,get RssHandler(){return c("RssHandler",this.FeedHandler)},parseDOM:function(a,b){var c=new e(b);return new d(c,b).end(a),c.dom},parseFeed:function(a,c){var e=new b.exports.FeedHandler(c);return new d(e,c).end(a),e.dom},createDomStream:function(a,b,c){var f=new e(a,b,c);return new d(f,b)},EVENTS:{attribute:2,cdatastart:0,cdataend:0,text:1,processinginstruction:2,comment:1,commentend:0,closetag:1,opentag:2,opentagname:1,error:1,end:0}}},{"./CollectingHandler.js":37,"./FeedHandler.js":38,"./Parser.js":39,"./ProxyHandler.js":40,"./Stream.js":41,"./Tokenizer.js":42,"./WritableStream.js":43,domelementtype:45,domhandler:46,domutils:49}],45:[function(a,b,c){arguments[4][26][0].apply(c,arguments)},{dup:26}],46:[function(a,b){function c(a,b,c){"object"==typeof a?(c=b,b=a,a=null):"function"==typeof b&&(c=b,b=h),this._callback=a,this._options=b||h,this._elementCB=c,this.dom=[],this._done=!1,this._tagStack=[],this._parser=this._parser||null}var d=a("domelementtype"),e=/\s+/g,f=a("./lib/node"),g=a("./lib/element"),h={normalizeWhitespace:!1,withStartIndices:!1};c.prototype.onparserinit=function(a){this._parser=a},c.prototype.onreset=function(){c.call(this,this._callback,this._options,this._elementCB)},c.prototype.onend=function(){this._done||(this._done=!0,this._parser=null,this._handleCallback(null))},c.prototype._handleCallback=c.prototype.onerror=function(a){if("function"==typeof this._callback)this._callback(a,this.dom);else if(a)throw a},c.prototype.onclosetag=function(){var a=this._tagStack.pop();this._elementCB&&this._elementCB(a)},c.prototype._addDomElement=function(a){var b=this._tagStack[this._tagStack.length-1],c=b?b.children:this.dom,d=c[c.length-1];a.next=null,this._options.withStartIndices&&(a.startIndex=this._parser.startIndex),this._options.withDomLvl1&&(a.__proto__="tag"===a.type?g:f),d?(a.prev=d,d.next=a):a.prev=null,c.push(a),a.parent=b||null},c.prototype.onopentag=function(a,b){var c={type:"script"===a?d.Script:"style"===a?d.Style:d.Tag,name:a,attribs:b,children:[]};this._addDomElement(c),this._tagStack.push(c)},c.prototype.ontext=function(a){var b,c=this._options.normalizeWhitespace||this._options.ignoreWhitespace;!this._tagStack.length&&this.dom.length&&(b=this.dom[this.dom.length-1]).type===d.Text?c?b.data=(b.data+a).replace(e," "):b.data+=a:this._tagStack.length&&(b=this._tagStack[this._tagStack.length-1])&&(b=b.children[b.children.length-1])&&b.type===d.Text?c?b.data=(b.data+a).replace(e," "):b.data+=a:(c&&(a=a.replace(e," ")),this._addDomElement({data:a,type:d.Text}))},c.prototype.oncomment=function(a){var b=this._tagStack[this._tagStack.length-1];if(b&&b.type===d.Comment)return void(b.data+=a);var c={data:a,type:d.Comment};this._addDomElement(c),this._tagStack.push(c)},c.prototype.oncdatastart=function(){var a={children:[{data:"",type:d.Text}],type:d.CDATA};this._addDomElement(a),this._tagStack.push(a)},c.prototype.oncommentend=c.prototype.oncdataend=function(){this._tagStack.pop()},c.prototype.onprocessinginstruction=function(a,b){this._addDomElement({name:a,data:b,type:d.Directive})},b.exports=c},{"./lib/element":47,"./lib/node":48,domelementtype:45}],47:[function(a,b){var c=a("./node"),d=b.exports=Object.create(c),e={tagName:"name"};Object.keys(e).forEach(function(a){var b=e[a];Object.defineProperty(d,a,{get:function(){return this[b]||null},set:function(a){return this[b]=a,a}})})},{"./node":48}],48:[function(a,b){var c=b.exports={get firstChild(){var a=this.children;return a&&a[0]||null},get lastChild(){var a=this.children;return a&&a[a.length-1]||null},get nodeType(){return e[this.type]||e.element}},d={tagName:"name",childNodes:"children",parentNode:"parent",previousSibling:"prev",nextSibling:"next",nodeValue:"data"},e={element:1,text:3,cdata:4,comment:8};Object.keys(d).forEach(function(a){var b=d[a];Object.defineProperty(c,a,{get:function(){return this[b]||null},set:function(a){return this[b]=a,a}})})},{}],49:[function(a,b,c){arguments[4][19][0].apply(c,arguments)},{"./lib/helpers":50,"./lib/legacy":51,"./lib/manipulation":52,"./lib/querying":53,"./lib/stringify":54,"./lib/traversal":55,dup:19}],50:[function(a,b,c){c.removeSubsets=function(a){for(var b,c,d,e=a.length;--e>-1;){for(b=c=a[e],a[e]=null,d=!0;c;){if(a.indexOf(c)>-1){d=!1,a.splice(e,1);break}c=c.parent}d&&(a[e]=b)}return a};var d={DISCONNECTED:1,PRECEDING:2,FOLLOWING:4,CONTAINS:8,CONTAINED_BY:16},e=c.compareDocumentPosition=function(a,b){var c,e,f,g,h,i,j=[],k=[];if(a===b)return 0;for(c=a;c;)j.unshift(c),c=c.parent;for(c=b;c;)k.unshift(c),c=c.parent;for(i=0;j[i]===k[i];)i++;return 0===i?d.DISCONNECTED:(e=j[i-1],f=e.children,g=j[i],h=k[i],f.indexOf(g)>f.indexOf(h)?e===b?d.FOLLOWING|d.CONTAINED_BY:d.FOLLOWING:e===a?d.PRECEDING|d.CONTAINS:d.PRECEDING)};c.uniqueSort=function(a){var b,c,f=a.length;for(a=a.slice();--f>-1;)b=a[f],c=a.indexOf(b),c>-1&&f>c&&a.splice(f,1);return a.sort(function(a,b){var c=e(a,b);return c&d.PRECEDING?-1:c&d.FOLLOWING?1:0}),a}},{}],51:[function(a,b,c){arguments[4][21][0].apply(c,arguments)},{domelementtype:45,dup:21}],52:[function(a,b,c){arguments[4][22][0].apply(c,arguments)},{dup:22}],53:[function(a,b,c){arguments[4][23][0].apply(c,arguments)},{domelementtype:45,dup:23}],54:[function(a,b,c){arguments[4][24][0].apply(c,arguments)},{domelementtype:45,dup:24}],55:[function(a,b,c){arguments[4][25][0].apply(c,arguments)},{dup:25}],56:[function(a,b,c){arguments[4][31][0].apply(c,arguments)},{"../maps/decode.json":57,dup:31}],57:[function(a,b,c){arguments[4][33][0].apply(c,arguments)},{dup:33}],58:[function(a,b,c){arguments[4][34][0].apply(c,arguments)},{dup:34}],59:[function(a,b,c){arguments[4][35][0].apply(c,arguments)},{dup:35}],60:[function(a,b,c){arguments[4][36][0].apply(c,arguments)},{dup:36}],61:[function(a,b,c){(function(a){(function(){function d(a,b,c){for(var d=(c||0)-1,e=a?a.length:0;++d<e;)if(a[d]===b)return d;return-1}function e(a,b){var c=typeof b;if(a=a.cache,"boolean"==c||null==b)return a[b]?0:-1;"number"!=c&&"string"!=c&&(c="object");var e="number"==c?b:u+b;return a=(a=a[c])&&a[e],"object"==c?a&&d(a,b)>-1?0:-1:a?0:-1}function f(a){var b=this.cache,c=typeof a;if("boolean"==c||null==a)b[a]=!0;else{"number"!=c&&"string"!=c&&(c="object");var d="number"==c?a:u+a,e=b[c]||(b[c]={});"object"==c?(e[d]||(e[d]=[])).push(a):e[d]=!0}}function g(a){return a.charCodeAt(0)}function h(a,b){for(var c=a.criteria,d=b.criteria,e=-1,f=c.length;++e<f;){var g=c[e],h=d[e];if(g!==h){if(g>h||"undefined"==typeof g)return 1;if(h>g||"undefined"==typeof h)return-1}}return a.index-b.index}function i(a){var b=-1,c=a.length,d=a[0],e=a[c/2|0],g=a[c-1];if(d&&"object"==typeof d&&e&&"object"==typeof e&&g&&"object"==typeof g)return!1;var h=l();h["false"]=h["null"]=h["true"]=h.undefined=!1;var i=l();for(i.array=a,i.cache=h,i.push=f;++b<c;)i.push(a[b]);return i}function j(a){return"\\"+Y[a]}function k(){return r.pop()||[]}function l(){return s.pop()||{array:null,cache:null,criteria:null,"false":!1,index:0,"null":!1,number:null,object:null,push:null,string:null,"true":!1,undefined:!1,value:null}}function m(a){a.length=0,r.length<w&&r.push(a)}function n(a){var b=a.cache;b&&n(b),a.array=a.cache=a.criteria=a.object=a.number=a.string=a.value=null,s.length<w&&s.push(a)}function o(a,b,c){b||(b=0),"undefined"==typeof c&&(c=a?a.length:0);for(var d=-1,e=c-b||0,f=Array(0>e?0:e);++d<e;)f[d]=a[b+d];return f}function p(a){function b(a){return a&&"object"==typeof a&&!Zd(a)&&Hd.call(a,"__wrapped__")?a:new c(a)}function c(a,b){this.__chain__=!!b,this.__wrapped__=a}function f(a){function b(){if(d){var a=o(d);Id.apply(a,arguments)}if(this instanceof b){var f=s(c.prototype),g=c.apply(f,a||arguments);return Eb(g)?g:f}return c.apply(e,a||arguments)}var c=a[0],d=a[2],e=a[4];return Yd(b,a),b}function r(a,b,c,d,e){if(c){var f=c(a);if("undefined"!=typeof f)return f}var g=Eb(a);if(!g)return a;var h=Ad.call(a);if(!U[h])return a;var i=Wd[h];switch(h){case N:case O:return new i(+a);case Q:case T:return new i(a);
+case S:return f=i(a.source,C.exec(a)),f.lastIndex=a.lastIndex,f}var j=Zd(a);if(b){var l=!d;d||(d=k()),e||(e=k());for(var n=d.length;n--;)if(d[n]==a)return e[n];f=j?i(a.length):{}}else f=j?o(a):ee({},a);return j&&(Hd.call(a,"index")&&(f.index=a.index),Hd.call(a,"input")&&(f.input=a.input)),b?(d.push(a),e.push(f),(j?Yb:he)(a,function(a,g){f[g]=r(a,b,c,d,e)}),l&&(m(d),m(e)),f):f}function s(a){return Eb(a)?Nd(a):{}}function w(a,b,c){if("function"!=typeof a)return Zc;if("undefined"==typeof b||!("prototype"in a))return a;var d=a.__bindData__;if("undefined"==typeof d&&(Xd.funcNames&&(d=!a.name),d=d||!Xd.funcDecomp,!d)){var e=Fd.call(a);Xd.funcNames||(d=!D.test(e)),d||(d=H.test(e),Yd(a,d))}if(d===!1||d!==!0&&1&d[1])return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)};case 4:return function(c,d,e,f){return a.call(b,c,d,e,f)}}return Ic(a,b)}function Y(a){function b(){var a=i?g:this;if(e){var n=o(e);Id.apply(n,arguments)}if((f||k)&&(n||(n=o(arguments)),f&&Id.apply(n,f),k&&n.length<h))return d|=16,Y([c,l?d:-4&d,n,null,g,h]);if(n||(n=arguments),j&&(c=a[m]),this instanceof b){a=s(c.prototype);var p=c.apply(a,n);return Eb(p)?p:a}return c.apply(a,n)}var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],i=1&d,j=2&d,k=4&d,l=8&d,m=c;return Yd(b,a),b}function $(a,b){var c=-1,f=ib(),g=a?a.length:0,h=g>=v&&f===d,j=[];if(h){var k=i(b);k?(f=e,b=k):h=!1}for(;++c<g;){var l=a[c];f(b,l)<0&&j.push(l)}return h&&n(b),j}function _(a,b,c,d){for(var e=(d||0)-1,f=a?a.length:0,g=[];++e<f;){var h=a[e];if(h&&"object"==typeof h&&"number"==typeof h.length&&(Zd(h)||mb(h))){b||(h=_(h,b,c));var i=-1,j=h.length,k=g.length;for(g.length+=j;++i<j;)g[k++]=h[i]}else c||g.push(h)}return g}function ab(a,b,c,d,e,f){if(c){var g=c(a,b);if("undefined"!=typeof g)return!!g}if(a===b)return 0!==a||1/a==1/b;var h=typeof a,i=typeof b;if(!(a!==a||a&&X[h]||b&&X[i]))return!1;if(null==a||null==b)return a===b;var j=Ad.call(a),l=Ad.call(b);if(j==L&&(j=R),l==L&&(l=R),j!=l)return!1;switch(j){case N:case O:return+a==+b;case Q:return a!=+a?b!=+b:0==a?1/a==1/b:a==+b;case S:case T:return a==vd(b)}var n=j==M;if(!n){var o=Hd.call(a,"__wrapped__"),p=Hd.call(b,"__wrapped__");if(o||p)return ab(o?a.__wrapped__:a,p?b.__wrapped__:b,c,d,e,f);if(j!=R)return!1;var q=a.constructor,r=b.constructor;if(q!=r&&!(Db(q)&&q instanceof q&&Db(r)&&r instanceof r)&&"constructor"in a&&"constructor"in b)return!1}var s=!e;e||(e=k()),f||(f=k());for(var t=e.length;t--;)if(e[t]==a)return f[t]==b;var u=0;if(g=!0,e.push(a),f.push(b),n){if(t=a.length,u=b.length,g=u==t,g||d)for(;u--;){var v=t,w=b[u];if(d)for(;v--&&!(g=ab(a[v],w,c,d,e,f)););else if(!(g=ab(a[u],w,c,d,e,f)))break}}else ge(b,function(b,h,i){return Hd.call(i,h)?(u++,g=Hd.call(a,h)&&ab(a[h],b,c,d,e,f)):void 0}),g&&!d&&ge(a,function(a,b,c){return Hd.call(c,b)?g=--u>-1:void 0});return e.pop(),f.pop(),s&&(m(e),m(f)),g}function bb(a,b,c,d,e){(Zd(b)?Yb:he)(b,function(b,f){var g,h,i=b,j=a[f];if(b&&((h=Zd(b))||ie(b))){for(var k=d.length;k--;)if(g=d[k]==b){j=e[k];break}if(!g){var l;c&&(i=c(j,b),(l="undefined"!=typeof i)&&(j=i)),l||(j=h?Zd(j)?j:[]:ie(j)?j:{}),d.push(b),e.push(j),l||bb(j,b,c,d,e)}}else c&&(i=c(j,b),"undefined"==typeof i&&(i=b)),"undefined"!=typeof i&&(j=i);a[f]=j})}function db(a,b){return a+Ed(Vd()*(b-a+1))}function eb(a,b,c){var f=-1,g=ib(),h=a?a.length:0,j=[],l=!b&&h>=v&&g===d,o=c||l?k():j;if(l){var p=i(o);g=e,o=p}for(;++f<h;){var q=a[f],r=c?c(q,f,a):q;(b?!f||o[o.length-1]!==r:g(o,r)<0)&&((c||l)&&o.push(r),j.push(q))}return l?(m(o.array),n(o)):c&&m(o),j}function fb(a){return function(c,d,e){var f={};d=b.createCallback(d,e,3);var g=-1,h=c?c.length:0;if("number"==typeof h)for(;++g<h;){var i=c[g];a(f,i,d(i,g,c),c)}else he(c,function(b,c,e){a(f,b,d(b,c,e),e)});return f}}function gb(a,b,c,d,e,g){var h=1&b,i=2&b,j=4&b,k=16&b,l=32&b;if(!i&&!Db(a))throw new wd;k&&!c.length&&(b&=-17,k=c=!1),l&&!d.length&&(b&=-33,l=d=!1);var m=a&&a.__bindData__;if(m&&m!==!0)return m=o(m),m[2]&&(m[2]=o(m[2])),m[3]&&(m[3]=o(m[3])),!h||1&m[1]||(m[4]=e),!h&&1&m[1]&&(b|=8),!j||4&m[1]||(m[5]=g),k&&Id.apply(m[2]||(m[2]=[]),c),l&&Ld.apply(m[3]||(m[3]=[]),d),m[1]|=b,gb.apply(null,m);var n=1==b||17===b?f:Y;return n([a,b,c,d,e,g])}function hb(a){return ae[a]}function ib(){var a=(a=b.indexOf)===rc?d:a;return a}function jb(a){return"function"==typeof a&&Bd.test(a)}function kb(a){var b,c;return a&&Ad.call(a)==R&&(b=a.constructor,!Db(b)||b instanceof b)?(ge(a,function(a,b){c=b}),"undefined"==typeof c||Hd.call(a,c)):!1}function lb(a){return be[a]}function mb(a){return a&&"object"==typeof a&&"number"==typeof a.length&&Ad.call(a)==L||!1}function nb(a,b,c,d){return"boolean"!=typeof b&&null!=b&&(d=c,c=b,b=!1),r(a,b,"function"==typeof c&&w(c,d,1))}function ob(a,b,c){return r(a,!0,"function"==typeof b&&w(b,c,1))}function pb(a,b){var c=s(a);return b?ee(c,b):c}function qb(a,c,d){var e;return c=b.createCallback(c,d,3),he(a,function(a,b,d){return c(a,b,d)?(e=b,!1):void 0}),e}function rb(a,c,d){var e;return c=b.createCallback(c,d,3),tb(a,function(a,b,d){return c(a,b,d)?(e=b,!1):void 0}),e}function sb(a,b,c){var d=[];ge(a,function(a,b){d.push(b,a)});var e=d.length;for(b=w(b,c,3);e--&&b(d[e--],d[e],a)!==!1;);return a}function tb(a,b,c){var d=_d(a),e=d.length;for(b=w(b,c,3);e--;){var f=d[e];if(b(a[f],f,a)===!1)break}return a}function ub(a){var b=[];return ge(a,function(a,c){Db(a)&&b.push(c)}),b.sort()}function vb(a,b){return a?Hd.call(a,b):!1}function wb(a){for(var b=-1,c=_d(a),d=c.length,e={};++b<d;){var f=c[b];e[a[f]]=f}return e}function xb(a){return a===!0||a===!1||a&&"object"==typeof a&&Ad.call(a)==N||!1}function yb(a){return a&&"object"==typeof a&&Ad.call(a)==O||!1}function zb(a){return a&&1===a.nodeType||!1}function Ab(a){var b=!0;if(!a)return b;var c=Ad.call(a),d=a.length;return c==M||c==T||c==L||c==R&&"number"==typeof d&&Db(a.splice)?!d:(he(a,function(){return b=!1}),b)}function Bb(a,b,c,d){return ab(a,b,"function"==typeof c&&w(c,d,2))}function Cb(a){return Pd(a)&&!Qd(parseFloat(a))}function Db(a){return"function"==typeof a}function Eb(a){return!(!a||!X[typeof a])}function Fb(a){return Hb(a)&&a!=+a}function Gb(a){return null===a}function Hb(a){return"number"==typeof a||a&&"object"==typeof a&&Ad.call(a)==Q||!1}function Ib(a){return a&&"object"==typeof a&&Ad.call(a)==S||!1}function Jb(a){return"string"==typeof a||a&&"object"==typeof a&&Ad.call(a)==T||!1}function Kb(a){return"undefined"==typeof a}function Lb(a,c,d){var e={};return c=b.createCallback(c,d,3),he(a,function(a,b,d){e[b]=c(a,b,d)}),e}function Mb(a){var b=arguments,c=2;if(!Eb(a))return a;if("number"!=typeof b[2]&&(c=b.length),c>3&&"function"==typeof b[c-2])var d=w(b[--c-1],b[c--],2);else c>2&&"function"==typeof b[c-1]&&(d=b[--c]);for(var e=o(arguments,1,c),f=-1,g=k(),h=k();++f<c;)bb(a,e[f],d,g,h);return m(g),m(h),a}function Nb(a,c,d){var e={};if("function"!=typeof c){var f=[];ge(a,function(a,b){f.push(b)}),f=$(f,_(arguments,!0,!1,1));for(var g=-1,h=f.length;++g<h;){var i=f[g];e[i]=a[i]}}else c=b.createCallback(c,d,3),ge(a,function(a,b,d){c(a,b,d)||(e[b]=a)});return e}function Ob(a){for(var b=-1,c=_d(a),d=c.length,e=nd(d);++b<d;){var f=c[b];e[b]=[f,a[f]]}return e}function Pb(a,c,d){var e={};if("function"!=typeof c)for(var f=-1,g=_(arguments,!0,!1,1),h=Eb(a)?g.length:0;++f<h;){var i=g[f];i in a&&(e[i]=a[i])}else c=b.createCallback(c,d,3),ge(a,function(a,b,d){c(a,b,d)&&(e[b]=a)});return e}function Qb(a,c,d,e){var f=Zd(a);if(null==d)if(f)d=[];else{var g=a&&a.constructor,h=g&&g.prototype;d=s(h)}return c&&(c=b.createCallback(c,e,4),(f?Yb:he)(a,function(a,b,e){return c(d,a,b,e)})),d}function Rb(a){for(var b=-1,c=_d(a),d=c.length,e=nd(d);++b<d;)e[b]=a[c[b]];return e}function Sb(a){for(var b=arguments,c=-1,d=_(b,!0,!1,1),e=b[2]&&b[2][b[1]]===a?1:d.length,f=nd(e);++c<e;)f[c]=a[d[c]];return f}function Tb(a,b,c){var d=-1,e=ib(),f=a?a.length:0,g=!1;return c=(0>c?Sd(0,f+c):c)||0,Zd(a)?g=e(a,b,c)>-1:"number"==typeof f?g=(Jb(a)?a.indexOf(b,c):e(a,b,c))>-1:he(a,function(a){return++d>=c?!(g=a===b):void 0}),g}function Ub(a,c,d){var e=!0;c=b.createCallback(c,d,3);var f=-1,g=a?a.length:0;if("number"==typeof g)for(;++f<g&&(e=!!c(a[f],f,a)););else he(a,function(a,b,d){return e=!!c(a,b,d)});return e}function Vb(a,c,d){var e=[];c=b.createCallback(c,d,3);var f=-1,g=a?a.length:0;if("number"==typeof g)for(;++f<g;){var h=a[f];c(h,f,a)&&e.push(h)}else he(a,function(a,b,d){c(a,b,d)&&e.push(a)});return e}function Wb(a,c,d){c=b.createCallback(c,d,3);var e=-1,f=a?a.length:0;if("number"!=typeof f){var g;return he(a,function(a,b,d){return c(a,b,d)?(g=a,!1):void 0}),g}for(;++e<f;){var h=a[e];if(c(h,e,a))return h}}function Xb(a,c,d){var e;return c=b.createCallback(c,d,3),Zb(a,function(a,b,d){return c(a,b,d)?(e=a,!1):void 0}),e}function Yb(a,b,c){var d=-1,e=a?a.length:0;if(b=b&&"undefined"==typeof c?b:w(b,c,3),"number"==typeof e)for(;++d<e&&b(a[d],d,a)!==!1;);else he(a,b);return a}function Zb(a,b,c){var d=a?a.length:0;if(b=b&&"undefined"==typeof c?b:w(b,c,3),"number"==typeof d)for(;d--&&b(a[d],d,a)!==!1;);else{var e=_d(a);d=e.length,he(a,function(a,c,f){return c=e?e[--d]:--d,b(f[c],c,f)})}return a}function $b(a,b){var c=o(arguments,2),d=-1,e="function"==typeof b,f=a?a.length:0,g=nd("number"==typeof f?f:0);return Yb(a,function(a){g[++d]=(e?b:a[b]).apply(a,c)}),g}function _b(a,c,d){var e=-1,f=a?a.length:0;if(c=b.createCallback(c,d,3),"number"==typeof f)for(var g=nd(f);++e<f;)g[e]=c(a[e],e,a);else g=[],he(a,function(a,b,d){g[++e]=c(a,b,d)});return g}function ac(a,c,d){var e=-1/0,f=e;if("function"!=typeof c&&d&&d[c]===a&&(c=null),null==c&&Zd(a))for(var h=-1,i=a.length;++h<i;){var j=a[h];j>f&&(f=j)}else c=null==c&&Jb(a)?g:b.createCallback(c,d,3),Yb(a,function(a,b,d){var g=c(a,b,d);g>e&&(e=g,f=a)});return f}function bc(a,c,d){var e=1/0,f=e;if("function"!=typeof c&&d&&d[c]===a&&(c=null),null==c&&Zd(a))for(var h=-1,i=a.length;++h<i;){var j=a[h];f>j&&(f=j)}else c=null==c&&Jb(a)?g:b.createCallback(c,d,3),Yb(a,function(a,b,d){var g=c(a,b,d);e>g&&(e=g,f=a)});return f}function cc(a,c,d,e){if(!a)return d;var f=arguments.length<3;c=b.createCallback(c,e,4);var g=-1,h=a.length;if("number"==typeof h)for(f&&(d=a[++g]);++g<h;)d=c(d,a[g],g,a);else he(a,function(a,b,e){d=f?(f=!1,a):c(d,a,b,e)});return d}function dc(a,c,d,e){var f=arguments.length<3;return c=b.createCallback(c,e,4),Zb(a,function(a,b,e){d=f?(f=!1,a):c(d,a,b,e)}),d}function ec(a,c,d){return c=b.createCallback(c,d,3),Vb(a,function(a,b,d){return!c(a,b,d)})}function fc(a,b,c){if(a&&"number"!=typeof a.length&&(a=Rb(a)),null==b||c)return a?a[db(0,a.length-1)]:q;var d=gc(a);return d.length=Td(Sd(0,b),d.length),d}function gc(a){var b=-1,c=a?a.length:0,d=nd("number"==typeof c?c:0);return Yb(a,function(a){var c=db(0,++b);d[b]=d[c],d[c]=a}),d}function hc(a){var b=a?a.length:0;return"number"==typeof b?b:_d(a).length}function ic(a,c,d){var e;c=b.createCallback(c,d,3);var f=-1,g=a?a.length:0;if("number"==typeof g)for(;++f<g&&!(e=c(a[f],f,a)););else he(a,function(a,b,d){return!(e=c(a,b,d))});return!!e}function jc(a,c,d){var e=-1,f=Zd(c),g=a?a.length:0,i=nd("number"==typeof g?g:0);for(f||(c=b.createCallback(c,d,3)),Yb(a,function(a,b,d){var g=i[++e]=l();f?g.criteria=_b(c,function(b){return a[b]}):(g.criteria=k())[0]=c(a,b,d),g.index=e,g.value=a}),g=i.length,i.sort(h);g--;){var j=i[g];i[g]=j.value,f||m(j.criteria),n(j)}return i}function kc(a){return a&&"number"==typeof a.length?o(a):Rb(a)}function lc(a){for(var b=-1,c=a?a.length:0,d=[];++b<c;){var e=a[b];e&&d.push(e)}return d}function mc(a){return $(a,_(arguments,!0,!0,1))}function nc(a,c,d){var e=-1,f=a?a.length:0;for(c=b.createCallback(c,d,3);++e<f;)if(c(a[e],e,a))return e;return-1}function oc(a,c,d){var e=a?a.length:0;for(c=b.createCallback(c,d,3);e--;)if(c(a[e],e,a))return e;return-1}function pc(a,c,d){var e=0,f=a?a.length:0;if("number"!=typeof c&&null!=c){var g=-1;for(c=b.createCallback(c,d,3);++g<f&&c(a[g],g,a);)e++}else if(e=c,null==e||d)return a?a[0]:q;return o(a,0,Td(Sd(0,e),f))}function qc(a,b,c,d){return"boolean"!=typeof b&&null!=b&&(d=c,c="function"!=typeof b&&d&&d[b]===a?null:b,b=!1),null!=c&&(a=_b(a,c,d)),_(a,b)}function rc(a,b,c){if("number"==typeof c){var e=a?a.length:0;c=0>c?Sd(0,e+c):c||0}else if(c){var f=Ac(a,b);return a[f]===b?f:-1}return d(a,b,c)}function sc(a,c,d){var e=0,f=a?a.length:0;if("number"!=typeof c&&null!=c){var g=f;for(c=b.createCallback(c,d,3);g--&&c(a[g],g,a);)e++}else e=null==c||d?1:c||e;return o(a,0,Td(Sd(0,f-e),f))}function tc(){for(var a=[],b=-1,c=arguments.length,f=k(),g=ib(),h=g===d,j=k();++b<c;){var l=arguments[b];(Zd(l)||mb(l))&&(a.push(l),f.push(h&&l.length>=v&&i(b?a[b]:j)))}var o=a[0],p=-1,q=o?o.length:0,r=[];a:for(;++p<q;){var s=f[0];if(l=o[p],(s?e(s,l):g(j,l))<0){for(b=c,(s||j).push(l);--b;)if(s=f[b],(s?e(s,l):g(a[b],l))<0)continue a;r.push(l)}}for(;c--;)s=f[c],s&&n(s);return m(f),m(j),r}function uc(a,c,d){var e=0,f=a?a.length:0;if("number"!=typeof c&&null!=c){var g=f;for(c=b.createCallback(c,d,3);g--&&c(a[g],g,a);)e++}else if(e=c,null==e||d)return a?a[f-1]:q;return o(a,Sd(0,f-e))}function vc(a,b,c){var d=a?a.length:0;for("number"==typeof c&&(d=(0>c?Sd(0,d+c):Td(c,d-1))+1);d--;)if(a[d]===b)return d;return-1}function wc(a){for(var b=arguments,c=0,d=b.length,e=a?a.length:0;++c<d;)for(var f=-1,g=b[c];++f<e;)a[f]===g&&(Kd.call(a,f--,1),e--);return a}function xc(a,b,c){a=+a||0,c="number"==typeof c?c:+c||1,null==b&&(b=a,a=0);for(var d=-1,e=Sd(0,Cd((b-a)/(c||1))),f=nd(e);++d<e;)f[d]=a,a+=c;return f}function yc(a,c,d){var e=-1,f=a?a.length:0,g=[];for(c=b.createCallback(c,d,3);++e<f;){var h=a[e];c(h,e,a)&&(g.push(h),Kd.call(a,e--,1),f--)}return g}function zc(a,c,d){if("number"!=typeof c&&null!=c){var e=0,f=-1,g=a?a.length:0;for(c=b.createCallback(c,d,3);++f<g&&c(a[f],f,a);)e++}else e=null==c||d?1:Sd(0,c);return o(a,e)}function Ac(a,c,d,e){var f=0,g=a?a.length:f;for(d=d?b.createCallback(d,e,1):Zc,c=d(c);g>f;){var h=f+g>>>1;d(a[h])<c?f=h+1:g=h}return f}function Bc(){return eb(_(arguments,!0,!0))}function Cc(a,c,d,e){return"boolean"!=typeof c&&null!=c&&(e=d,d="function"!=typeof c&&e&&e[c]===a?null:c,c=!1),null!=d&&(d=b.createCallback(d,e,3)),eb(a,c,d)}function Dc(a){return $(a,o(arguments,1))}function Ec(){for(var a=-1,b=arguments.length;++a<b;){var c=arguments[a];if(Zd(c)||mb(c))var d=d?eb($(d,c).concat($(c,d))):c}return d||[]}function Fc(){for(var a=arguments.length>1?arguments:arguments[0],b=-1,c=a?ac(me(a,"length")):0,d=nd(0>c?0:c);++b<c;)d[b]=me(a,b);return d}function Gc(a,b){var c=-1,d=a?a.length:0,e={};for(b||!d||Zd(a[0])||(b=[]);++c<d;){var f=a[c];b?e[f]=b[c]:f&&(e[f[0]]=f[1])}return e}function Hc(a,b){if(!Db(b))throw new wd;return function(){return--a<1?b.apply(this,arguments):void 0}}function Ic(a,b){return arguments.length>2?gb(a,17,o(arguments,2),null,b):gb(a,1,null,null,b)}function Jc(a){for(var b=arguments.length>1?_(arguments,!0,!1,1):ub(a),c=-1,d=b.length;++c<d;){var e=b[c];a[e]=gb(a[e],1,null,null,a)}return a}function Kc(a,b){return arguments.length>2?gb(b,19,o(arguments,2),null,a):gb(b,3,null,null,a)}function Lc(){for(var a=arguments,b=a.length;b--;)if(!Db(a[b]))throw new wd;return function(){for(var b=arguments,c=a.length;c--;)b=[a[c].apply(this,b)];return b[0]}}function Mc(a,b){return b="number"==typeof b?b:+b||a.length,gb(a,4,null,null,null,b)}function Nc(a,b,c){var d,e,f,g,h,i,j,k=0,l=!1,m=!0;if(!Db(a))throw new wd;if(b=Sd(0,b)||0,c===!0){var n=!0;m=!1}else Eb(c)&&(n=c.leading,l="maxWait"in c&&(Sd(b,c.maxWait)||0),m="trailing"in c?c.trailing:m);var o=function(){var c=b-(oe()-g);if(0>=c){e&&Dd(e);var l=j;e=i=j=q,l&&(k=oe(),f=a.apply(h,d),i||e||(d=h=null))}else i=Jd(o,c)},p=function(){i&&Dd(i),e=i=j=q,(m||l!==b)&&(k=oe(),f=a.apply(h,d),i||e||(d=h=null))};return function(){if(d=arguments,g=oe(),h=this,j=m&&(i||!n),l===!1)var c=n&&!i;else{e||n||(k=g);var q=l-(g-k),r=0>=q;r?(e&&(e=Dd(e)),k=g,f=a.apply(h,d)):e||(e=Jd(p,q))}return r&&i?i=Dd(i):i||b===l||(i=Jd(o,b)),c&&(r=!0,f=a.apply(h,d)),!r||i||e||(d=h=null),f}}function Oc(a){if(!Db(a))throw new wd;var b=o(arguments,1);return Jd(function(){a.apply(q,b)},1)}function Pc(a,b){if(!Db(a))throw new wd;var c=o(arguments,2);return Jd(function(){a.apply(q,c)},b)}function Qc(a,b){if(!Db(a))throw new wd;var c=function(){var d=c.cache,e=b?b.apply(this,arguments):u+arguments[0];return Hd.call(d,e)?d[e]:d[e]=a.apply(this,arguments)};return c.cache={},c}function Rc(a){var b,c;if(!Db(a))throw new wd;return function(){return b?c:(b=!0,c=a.apply(this,arguments),a=null,c)}}function Sc(a){return gb(a,16,o(arguments,1))}function Tc(a){return gb(a,32,null,o(arguments,1))}function Uc(a,b,c){var d=!0,e=!0;if(!Db(a))throw new wd;return c===!1?d=!1:Eb(c)&&(d="leading"in c?c.leading:d,e="trailing"in c?c.trailing:e),V.leading=d,V.maxWait=b,V.trailing=e,Nc(a,b,V)}function Vc(a,b){return gb(b,16,[a])}function Wc(a){return function(){return a}}function Xc(a,b,c){var d=typeof a;if(null==a||"function"==d)return w(a,b,c);if("object"!=d)return bd(a);var e=_d(a),f=e[0],g=a[f];return 1!=e.length||g!==g||Eb(g)?function(b){for(var c=e.length,d=!1;c--&&(d=ab(b[e[c]],a[e[c]],null,!0)););return d}:function(a){var b=a[f];return g===b&&(0!==g||1/g==1/b)}}function Yc(a){return null==a?"":vd(a).replace(de,hb)}function Zc(a){return a}function $c(a,d,e){var f=!0,g=d&&ub(d);d&&(e||g.length)||(null==e&&(e=d),h=c,d=a,a=b,g=ub(d)),e===!1?f=!1:Eb(e)&&"chain"in e&&(f=e.chain);var h=a,i=Db(h);Yb(g,function(b){var c=a[b]=d[b];i&&(h.prototype[b]=function(){var b=this.__chain__,d=this.__wrapped__,e=[d];Id.apply(e,arguments);var g=c.apply(a,e);if(f||b){if(d===g&&Eb(g))return this;g=new h(g),g.__chain__=b}return g})})}function _c(){return a._=zd,this}function ad(){}function bd(a){return function(b){return b[a]}}function cd(a,b,c){var d=null==a,e=null==b;if(null==c&&("boolean"==typeof a&&e?(c=a,a=1):e||"boolean"!=typeof b||(c=b,e=!0)),d&&e&&(b=1),a=+a||0,e?(b=a,a=0):b=+b||0,c||a%1||b%1){var f=Vd();return Td(a+f*(b-a+parseFloat("1e-"+((f+"").length-1))),b)}return db(a,b)}function dd(a,b){if(a){var c=a[b];return Db(c)?a[b]():c}}function ed(a,c,d){var e=b.templateSettings;a=vd(a||""),d=fe({},d,e);var f,g=fe({},d.imports,e.imports),h=_d(g),i=Rb(g),k=0,l=d.interpolate||G,m="__p += '",n=ud((d.escape||G).source+"|"+l.source+"|"+(l===E?B:G).source+"|"+(d.evaluate||G).source+"|$","g");a.replace(n,function(b,c,d,e,g,h){return d||(d=e),m+=a.slice(k,h).replace(I,j),c&&(m+="' +\n__e("+c+") +\n'"),g&&(f=!0,m+="';\n"+g+";\n__p += '"),d&&(m+="' +\n((__t = ("+d+")) == null ? '' : __t) +\n'"),k=h+b.length,b}),m+="';\n";var o=d.variable,p=o;p||(o="obj",m="with ("+o+") {\n"+m+"\n}\n"),m=(f?m.replace(y,""):m).replace(z,"$1").replace(A,"$1;"),m="function("+o+") {\n"+(p?"":o+" || ("+o+" = {});\n")+"var __t, __p = '', __e = _.escape"+(f?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+m+"return __p\n}";var r="\n/*\n//# sourceURL="+(d.sourceURL||"/lodash/template/source["+K++ +"]")+"\n*/";try{var s=qd(h,"return "+m+r).apply(q,i)}catch(t){throw t.source=m,t}return c?s(c):(s.source=m,s)}function fd(a,b,c){a=(a=+a)>-1?a:0;var d=-1,e=nd(a);for(b=w(b,c,1);++d<a;)e[d]=b(d);return e}function gd(a){return null==a?"":vd(a).replace(ce,lb)}function hd(a){var b=++t;return vd(null==a?"":a)+b}function id(a){return a=new c(a),a.__chain__=!0,a}function jd(a,b){return b(a),a}function kd(){return this.__chain__=!0,this}function ld(){return vd(this.__wrapped__)}function md(){return this.__wrapped__}a=a?cb.defaults(Z.Object(),a,cb.pick(Z,J)):Z;var nd=a.Array,od=a.Boolean,pd=a.Date,qd=a.Function,rd=a.Math,sd=a.Number,td=a.Object,ud=a.RegExp,vd=a.String,wd=a.TypeError,xd=[],yd=td.prototype,zd=a._,Ad=yd.toString,Bd=ud("^"+vd(Ad).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$"),Cd=rd.ceil,Dd=a.clearTimeout,Ed=rd.floor,Fd=qd.prototype.toString,Gd=jb(Gd=td.getPrototypeOf)&&Gd,Hd=yd.hasOwnProperty,Id=xd.push,Jd=a.setTimeout,Kd=xd.splice,Ld=xd.unshift,Md=function(){try{var a={},b=jb(b=td.defineProperty)&&b,c=b(a,a,a)&&b}catch(d){}return c}(),Nd=jb(Nd=td.create)&&Nd,Od=jb(Od=nd.isArray)&&Od,Pd=a.isFinite,Qd=a.isNaN,Rd=jb(Rd=td.keys)&&Rd,Sd=rd.max,Td=rd.min,Ud=a.parseInt,Vd=rd.random,Wd={};Wd[M]=nd,Wd[N]=od,Wd[O]=pd,Wd[P]=qd,Wd[R]=td,Wd[Q]=sd,Wd[S]=ud,Wd[T]=vd,c.prototype=b.prototype;var Xd=b.support={};Xd.funcDecomp=!jb(a.WinRTError)&&H.test(p),Xd.funcNames="string"==typeof qd.name,b.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:E,variable:"",imports:{_:b}},Nd||(s=function(){function b(){}return function(c){if(Eb(c)){b.prototype=c;var d=new b;b.prototype=null}return d||a.Object()}}());var Yd=Md?function(a,b){W.value=b,Md(a,"__bindData__",W)}:ad,Zd=Od||function(a){return a&&"object"==typeof a&&"number"==typeof a.length&&Ad.call(a)==M||!1},$d=function(a){var b,c=a,d=[];if(!c)return d;if(!X[typeof a])return d;for(b in c)Hd.call(c,b)&&d.push(b);return d},_d=Rd?function(a){return Eb(a)?Rd(a):[]}:$d,ae={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},be=wb(ae),ce=ud("("+_d(be).join("|")+")","g"),de=ud("["+_d(ae).join("")+"]","g"),ee=function(a,b,c){var d,e=a,f=e;if(!e)return f;var g=arguments,h=0,i="number"==typeof c?2:g.length;if(i>3&&"function"==typeof g[i-2])var j=w(g[--i-1],g[i--],2);else i>2&&"function"==typeof g[i-1]&&(j=g[--i]);for(;++h<i;)if(e=g[h],e&&X[typeof e])for(var k=-1,l=X[typeof e]&&_d(e),m=l?l.length:0;++k<m;)d=l[k],f[d]=j?j(f[d],e[d]):e[d];return f},fe=function(a,b,c){var d,e=a,f=e;if(!e)return f;for(var g=arguments,h=0,i="number"==typeof c?2:g.length;++h<i;)if(e=g[h],e&&X[typeof e])for(var j=-1,k=X[typeof e]&&_d(e),l=k?k.length:0;++j<l;)d=k[j],"undefined"==typeof f[d]&&(f[d]=e[d]);return f},ge=function(a,b,c){var d,e=a,f=e;if(!e)return f;if(!X[typeof e])return f;b=b&&"undefined"==typeof c?b:w(b,c,3);for(d in e)if(b(e[d],d,a)===!1)return f;return f},he=function(a,b,c){var d,e=a,f=e;if(!e)return f;if(!X[typeof e])return f;b=b&&"undefined"==typeof c?b:w(b,c,3);for(var g=-1,h=X[typeof e]&&_d(e),i=h?h.length:0;++g<i;)if(d=h[g],b(e[d],d,a)===!1)return f;return f},ie=Gd?function(a){if(!a||Ad.call(a)!=R)return!1;var b=a.valueOf,c=jb(b)&&(c=Gd(b))&&Gd(c);return c?a==c||Gd(a)==c:kb(a)}:kb,je=fb(function(a,b,c){Hd.call(a,c)?a[c]++:a[c]=1}),ke=fb(function(a,b,c){(Hd.call(a,c)?a[c]:a[c]=[]).push(b)}),le=fb(function(a,b,c){a[c]=b}),me=_b,ne=Vb,oe=jb(oe=pd.now)&&oe||function(){return(new pd).getTime()},pe=8==Ud(x+"08")?Ud:function(a,b){return Ud(Jb(a)?a.replace(F,""):a,b||0)};return b.after=Hc,b.assign=ee,b.at=Sb,b.bind=Ic,b.bindAll=Jc,b.bindKey=Kc,b.chain=id,b.compact=lc,b.compose=Lc,b.constant=Wc,b.countBy=je,b.create=pb,b.createCallback=Xc,b.curry=Mc,b.debounce=Nc,b.defaults=fe,b.defer=Oc,b.delay=Pc,b.difference=mc,b.filter=Vb,b.flatten=qc,b.forEach=Yb,b.forEachRight=Zb,b.forIn=ge,b.forInRight=sb,b.forOwn=he,b.forOwnRight=tb,b.functions=ub,b.groupBy=ke,b.indexBy=le,b.initial=sc,b.intersection=tc,b.invert=wb,b.invoke=$b,b.keys=_d,b.map=_b,b.mapValues=Lb,b.max=ac,b.memoize=Qc,b.merge=Mb,b.min=bc,b.omit=Nb,b.once=Rc,b.pairs=Ob,b.partial=Sc,b.partialRight=Tc,b.pick=Pb,b.pluck=me,b.property=bd,b.pull=wc,b.range=xc,b.reject=ec,b.remove=yc,b.rest=zc,b.shuffle=gc,b.sortBy=jc,b.tap=jd,b.throttle=Uc,b.times=fd,b.toArray=kc,b.transform=Qb,b.union=Bc,b.uniq=Cc,b.values=Rb,b.where=ne,b.without=Dc,b.wrap=Vc,b.xor=Ec,b.zip=Fc,b.zipObject=Gc,b.collect=_b,b.drop=zc,b.each=Yb,b.eachRight=Zb,b.extend=ee,b.methods=ub,b.object=Gc,b.select=Vb,b.tail=zc,b.unique=Cc,b.unzip=Fc,$c(b),b.clone=nb,b.cloneDeep=ob,b.contains=Tb,b.escape=Yc,b.every=Ub,b.find=Wb,b.findIndex=nc,b.findKey=qb,b.findLast=Xb,b.findLastIndex=oc,b.findLastKey=rb,b.has=vb,b.identity=Zc,b.indexOf=rc,b.isArguments=mb,b.isArray=Zd,b.isBoolean=xb,b.isDate=yb,b.isElement=zb,b.isEmpty=Ab,b.isEqual=Bb,b.isFinite=Cb,b.isFunction=Db,b.isNaN=Fb,b.isNull=Gb,b.isNumber=Hb,b.isObject=Eb,b.isPlainObject=ie,b.isRegExp=Ib,b.isString=Jb,b.isUndefined=Kb,b.lastIndexOf=vc,b.mixin=$c,b.noConflict=_c,b.noop=ad,b.now=oe,b.parseInt=pe,b.random=cd,b.reduce=cc,b.reduceRight=dc,b.result=dd,b.runInContext=p,b.size=hc,b.some=ic,b.sortedIndex=Ac,b.template=ed,b.unescape=gd,b.uniqueId=hd,b.all=Ub,b.any=ic,b.detect=Wb,b.findWhere=Wb,b.foldl=cc,b.foldr=dc,b.include=Tb,b.inject=cc,$c(function(){var a={};return he(b,function(c,d){b.prototype[d]||(a[d]=c)}),a}(),!1),b.first=pc,b.last=uc,b.sample=fc,b.take=pc,b.head=pc,he(b,function(a,d){var e="sample"!==d;b.prototype[d]||(b.prototype[d]=function(b,d){var f=this.__chain__,g=a(this.__wrapped__,b,d);return f||null!=b&&(!d||e&&"function"==typeof b)?new c(g,f):g})}),b.VERSION="2.4.1",b.prototype.chain=kd,b.prototype.toString=ld,b.prototype.value=md,b.prototype.valueOf=md,Yb(["join","pop","shift"],function(a){var d=xd[a];b.prototype[a]=function(){var a=this.__chain__,b=d.apply(this.__wrapped__,arguments);return a?new c(b,a):b}}),Yb(["push","reverse","sort","unshift"],function(a){var c=xd[a];b.prototype[a]=function(){return c.apply(this.__wrapped__,arguments),this}}),Yb(["concat","slice","splice"],function(a){var d=xd[a];b.prototype[a]=function(){return new c(d.apply(this.__wrapped__,arguments),this.__chain__)}}),b}var q,r=[],s=[],t=0,u=+new Date+"",v=75,w=40,x=" 	\f \n\r\u2028\u2029 ᠎              ",y=/\b__p \+= '';/g,z=/\b(__p \+=) '' \+/g,A=/(__e\(.*?\)|\b__t\)) \+\n'';/g,B=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,C=/\w*$/,D=/^\s*function[ \n\r\t]+\w/,E=/<%=([\s\S]+?)%>/g,F=RegExp("^["+x+"]*0+(?=.$)"),G=/($^)/,H=/\bthis\b/,I=/['\n\r\t\u2028\u2029\\]/g,J=["Array","Boolean","Date","Function","Math","Number","Object","RegExp","String","_","attachEvent","clearTimeout","isFinite","isNaN","parseInt","setTimeout"],K=0,L="[object Arguments]",M="[object Array]",N="[object Boolean]",O="[object Date]",P="[object Function]",Q="[object Number]",R="[object Object]",S="[object RegExp]",T="[object String]",U={};U[P]=!1,U[L]=U[M]=U[N]=U[O]=U[Q]=U[R]=U[S]=U[T]=!0;var V={leading:!1,maxWait:0,trailing:!1},W={configurable:!1,enumerable:!1,value:null,writable:!1},X={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},Y={"\\":"\\","'":"'","\n":"n","\r":"r","	":"t","\u2028":"u2028","\u2029":"u2029"},Z=X[typeof window]&&window||this,$=X[typeof c]&&c&&!c.nodeType&&c,_=X[typeof b]&&b&&!b.nodeType&&b,ab=_&&_.exports===$&&$,bb=X[typeof a]&&a;!bb||bb.global!==bb&&bb.window!==bb||(Z=bb);var cb=p();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(Z._=cb,define(function(){return cb})):$&&_?ab?(_.exports=cb)._=cb:$._=cb:Z._=cb}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],62:[function(a,b){b.exports={name:"cheerio",version:"0.18.0",description:"Tiny, fast, and elegant implementation of core jQuery designed specifically for the server",author:{name:"Matt Mueller",email:"mattmuelle@gmail.com",url:"mat.io"},keywords:["htmlparser","jquery","selector","scraper","parser","html"],repository:{type:"git",url:"git://github.com/cheeriojs/cheerio.git"},main:"./index.js",engines:{node:">= 0.6"},dependencies:{CSSselect:"^0.4.1","dom-serializer":"~0.0.0",entities:"~1.1.1",htmlparser2:"~3.8.1",lodash:"^2.4.1"},devDependencies:{benchmark:"~1.0.0",coveralls:"~2.10","expect.js":"~0.3.1",istanbul:"~0.2",jsdom:"~0.8.9",jshint:"~2.5.1",mocha:"*",xyz:"~0.4.0"},scripts:{test:"make test"},gitHead:"c4f52db9d0e2011a968ba097c85f434f3a05b7f0",bugs:{url:"https://github.com/cheeriojs/cheerio/issues"},homepage:"https://github.com/cheeriojs/cheerio",_id:"cheerio@0.18.0",_shasum:"4e1c06377e725b740e996e0dfec353863de677fa",_from:"cheerio@^0.18.0",_npmVersion:"2.1.3",_nodeVersion:"0.10.31",_npmUser:{name:"jugglinmike",email:"mike@mikepennisi.com"},maintainers:[{name:"mattmueller",email:"mattmuelle@gmail.com"},{name:"davidchambers",email:"dc@davidchambers.me"},{name:"jugglinmike",email:"mike@mikepennisi.com"}],dist:{shasum:"4e1c06377e725b740e996e0dfec353863de677fa",tarball:"http://registry.npmjs.org/cheerio/-/cheerio-0.18.0.tgz"},directories:{},_resolved:"https://registry.npmjs.org/cheerio/-/cheerio-0.18.0.tgz",readme:"ERROR: No README data found!"}},{}],63:[function(a,b,c){(function(b){!function(){"use strict";function d(a){return G.Expression.hasOwnProperty(a.type)}function e(a){return G.Statement.hasOwnProperty(a.type)}function f(){return{indent:null,base:null,parse:null,comment:!1,format:{indent:{style:"    ",base:0,adjustMultilineComment:!1},newline:"\n",space:" ",json:!1,renumber:!1,hexadecimal:!1,quotes:"single",escapeless:!1,compact:!1,parentheses:!0,semicolons:!0,safeConcatenation:!1,preserveBlankLines:!1},moz:{comprehensionExpressionStartsWithAssignment:!1,starlessGenerator:!1},sourceMap:null,sourceMapRoot:null,sourceMapWithCode:!1,directive:!1,raw:!0,verbatim:null,sourceCode:null}}function g(a,b){var c="";for(b|=0;b>0;b>>>=1,a+=a)1&b&&(c+=a);return c}function h(a){return/[\r\n]/g.test(a)}function i(a){var b=a.length;return b&&S.code.isLineTerminator(a.charCodeAt(b-1))}function j(a,b){var c;for(c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}function k(a,b){function c(a){return"object"==typeof a&&a instanceof Object&&!(a instanceof RegExp)}var d,e;for(d in b)b.hasOwnProperty(d)&&(e=b[d],c(e)?c(a[d])?k(a[d],e):a[d]=k({},e):a[d]=e);return a}function l(a){var b,c,d,e,f;if(a!==a)throw new Error("Numeric literal whose value is NaN");if(0>a||0===a&&0>1/a)throw new Error("Numeric literal whose value is negative");if(a===1/0)return W?"null":X?"1e400":"1e+400";if(b=""+a,!X||b.length<3)return b;for(c=b.indexOf("."),W||48!==b.charCodeAt(0)||1!==c||(c=0,b=b.slice(1)),d=b,b=b.replace("e+","e"),e=0,(f=d.indexOf("e"))>0&&(e=+d.slice(f+1),d=d.slice(0,f)),c>=0&&(e-=d.length-c-1,d=+(d.slice(0,c)+d.slice(c+1))+""),f=0;48===d.charCodeAt(d.length+f-1);)--f;return 0!==f&&(e-=f,d=d.slice(0,f)),0!==e&&(d+="e"+e),(d.length<b.length||Y&&a>1e12&&Math.floor(a)===a&&(d="0x"+a.toString(16)).length<b.length)&&+d===a&&(b=d),b}function m(a,b){return 8232===(-2&a)?(b?"u":"\\u")+(8232===a?"2028":"2029"):10===a||13===a?(b?"":"\\")+(10===a?"n":"r"):String.fromCharCode(a)}function n(a){var b,c,d,e,f,g,h,i;if(c=a.toString(),a.source){if(b=c.match(/\/([^/]*)$/),!b)return c;for(d=b[1],c="",h=!1,i=!1,e=0,f=a.source.length;f>e;++e)g=a.source.charCodeAt(e),i?(c+=m(g,i),i=!1):(h?93===g&&(h=!1):47===g?c+="\\":91===g&&(h=!0),c+=m(g,i),i=92===g);return"/"+c+"/"+d}return c}function o(a,b){var c;return 8===a?"\\b":12===a?"\\f":9===a?"\\t":(c=a.toString(16).toUpperCase(),W||a>255?"\\u"+"0000".slice(c.length)+c:0!==a||S.code.isDecimalDigit(b)?11===a?"\\x0B":"\\x"+"00".slice(c.length)+c:"\\0")}function p(a){if(92===a)return"\\\\";if(10===a)return"\\n";if(13===a)return"\\r";if(8232===a)return"\\u2028";if(8233===a)return"\\u2029";throw new Error("Incorrectly classified character")}function q(a){var b,c,d,e;for(e="double"===Z?'"':"'",b=0,c=a.length;c>b;++b){if(d=a.charCodeAt(b),39===d){e='"';break}if(34===d){e="'";break}92===d&&++b}return e+a+e}function r(a){var b,c,d,e,f,g="",h=0,i=0;for(b=0,c=a.length;c>b;++b){if(d=a.charCodeAt(b),39===d)++h;else if(34===d)++i;else if(47===d&&W)g+="\\";else{if(S.code.isLineTerminator(d)||92===d){g+=p(d);continue}if(W&&32>d||!(W||$||d>=32&&126>=d)){g+=o(d,a.charCodeAt(b+1));continue}}g+=String.fromCharCode(d)}if(e=!("double"===Z||"auto"===Z&&h>i),f=e?"'":'"',!(e?h:i))return f+g+f;for(a=g,g=f,b=0,c=a.length;c>b;++b)d=a.charCodeAt(b),(39===d&&e||34===d&&!e)&&(g+="\\"),g+=String.fromCharCode(d);return g+f}function s(a){var b,c,d,e="";for(b=0,c=a.length;c>b;++b)d=a[b],e+=T(d)?s(d):d;return e}function t(a,b){if(!hb)return T(a)?s(a):a;if(null==b){if(a instanceof Q)return a;b={}}return null==b.loc?new Q(null,null,hb,a,b.name||null):new Q(b.loc.start.line,b.loc.start.column,hb===!0?b.loc.source||null:hb,a,b.name||null)}function u(){return ab?ab:" "}function v(a,b){var c,d,e,f;return c=t(a).toString(),0===c.length?[b]:(d=t(b).toString(),0===d.length?[a]:(e=c.charCodeAt(c.length-1),f=d.charCodeAt(0),(43===e||45===e)&&e===f||S.code.isIdentifierPart(e)&&S.code.isIdentifierPart(f)||47===e&&105===f?[a,u(),b]:S.code.isWhiteSpace(e)||S.code.isLineTerminator(e)||S.code.isWhiteSpace(f)||S.code.isLineTerminator(f)?[a,b]:[a,ab,b]))}function w(a){return[U,a]}function x(a){var b;
+b=U,U+=V,a(U),U=b}function y(a){var b;for(b=a.length-1;b>=0&&!S.code.isLineTerminator(a.charCodeAt(b));--b);return a.length-1-b}function z(a,b){var c,d,e,f,g,h,i,j;for(c=a.split(/\r\n|[\r\n]/),h=Number.MAX_VALUE,d=1,e=c.length;e>d;++d){for(f=c[d],g=0;g<f.length&&S.code.isWhiteSpace(f.charCodeAt(g));)++g;h>g&&(h=g)}for("undefined"!=typeof b?(i=U,"*"===c[1][h]&&(b+=" "),U=b):(1&h&&--h,i=U),d=1,e=c.length;e>d;++d)j=t(w(c[d].slice(h))),c[d]=hb?j.join(""):j;return U=i,c.join("\n")}function A(a,b){if("Line"===a.type){if(i(a.value))return"//"+a.value;var c="//"+a.value;return jb||(c+="\n"),c}return fb.format.indent.adjustMultilineComment&&/[\n\r]/.test(a.value)?z("/*"+a.value+"*/",b):"/*"+a.value+"*/"}function B(a,b){var c,d,e,f,h,j,k,l,m,n,o,p,q,r;if(a.leadingComments&&a.leadingComments.length>0){if(f=b,jb){for(e=a.leadingComments[0],b=[],l=e.extendedRange,m=e.range,o=ib.substring(l[0],m[0]),r=(o.match(/\n/g)||[]).length,r>0?(b.push(g("\n",r)),b.push(w(A(e)))):(b.push(o),b.push(A(e))),n=m,c=1,d=a.leadingComments.length;d>c;c++)e=a.leadingComments[c],m=e.range,p=ib.substring(n[1],m[0]),r=(p.match(/\n/g)||[]).length,b.push(g("\n",r)),b.push(w(A(e))),n=m;q=ib.substring(m[1],l[1]),r=(q.match(/\n/g)||[]).length,b.push(g("\n",r))}else for(e=a.leadingComments[0],b=[],db&&a.type===N.Program&&0===a.body.length&&b.push("\n"),b.push(A(e)),i(t(b).toString())||b.push("\n"),c=1,d=a.leadingComments.length;d>c;++c)e=a.leadingComments[c],k=[A(e)],i(t(k).toString())||k.push("\n"),b.push(w(k));b.push(w(f))}if(a.trailingComments)if(jb)e=a.trailingComments[0],l=e.extendedRange,m=e.range,o=ib.substring(l[0],m[0]),r=(o.match(/\n/g)||[]).length,r>0?(b.push(g("\n",r)),b.push(w(A(e)))):(b.push(o),b.push(A(e)));else for(h=!i(t(b).toString()),j=g(" ",y(t([U,b,V]).toString())),c=0,d=a.trailingComments.length;d>c;++c)e=a.trailingComments[c],h?(b=0===c?[b,V]:[b,j],b.push(A(e,j))):b=[b,w(A(e))],c===d-1||i(t(b).toString())||(b=[b,"\n"]);return b}function C(a,b,c){var d,e=0;for(d=a;b>d;d++)"\n"===ib[d]&&e++;for(d=1;e>d;d++)c.push(_)}function D(a,b,c){return c>b?["(",a,")"]:a}function E(a){var b,c,d;for(d=a.split(/\r\n|\n/),b=1,c=d.length;c>b;b++)d[b]=_+U+d[b];return d}function F(a,b){var c,d,e;return c=a[fb.verbatim],"string"==typeof c?d=D(E(c),O.Sequence,b):(d=E(c.content),e=null!=c.precedence?c.precedence:O.Sequence,d=D(d,e,b)),t(d,a)}function G(){}function H(a){return t(a.name,a)}function I(a,b){return a.async?"async"+(b?u():ab):""}function J(a){var b=a.generator&&!fb.moz.starlessGenerator;return b?"*"+ab:""}function K(a){var b=a.value;return b.async?I(b,!a.computed):J(b)?"*":""}function L(a){var b;if(b=new G,e(a))return b.generateStatement(a,yb);if(d(a))return b.generateExpression(a,O.Sequence,ub);throw new Error("Unknown node type: "+a.type)}function M(d,e){var h,i,j=f();return null!=e?("string"==typeof e.indent&&(j.format.indent.style=e.indent),"number"==typeof e.base&&(j.format.indent.base=e.base),e=k(j,e),V=e.format.indent.style,U="string"==typeof e.base?e.base:g(V,e.format.indent.base)):(e=j,V=e.format.indent.style,U=g(V,e.format.indent.base)),W=e.format.json,X=e.format.renumber,Y=W?!1:e.format.hexadecimal,Z=W?"double":e.format.quotes,$=e.format.escapeless,_=e.format.newline,ab=e.format.space,e.format.compact&&(_=ab=V=U=""),bb=e.format.parentheses,cb=e.format.semicolons,db=e.format.safeConcatenation,eb=e.directive,gb=W?null:e.parse,hb=e.sourceMap,ib=e.sourceCode,jb=e.format.preserveBlankLines&&null!==ib,fb=e,hb&&(Q=c.browser?b.sourceMap.SourceNode:a("source-map").SourceNode),h=L(d),hb?(i=h.toStringWithSourceMap({file:e.file,sourceRoot:e.sourceMapRoot}),e.sourceContent&&i.map.setSourceContent(e.sourceMap,e.sourceContent),e.sourceMapWithCode?i:i.map.toString()):(i={code:h.toString(),map:null},e.sourceMapWithCode?i:i.code)}var N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,ab,bb,cb,db,eb,fb,gb,hb,ib,jb,kb,lb;R=a("estraverse"),S=a("esutils"),N=R.Syntax,O={Sequence:0,Yield:1,Await:1,Assignment:1,Conditional:2,ArrowFunction:2,LogicalOR:3,LogicalAND:4,BitwiseOR:5,BitwiseXOR:6,BitwiseAND:7,Equality:8,Relational:9,BitwiseSHIFT:10,Additive:11,Multiplicative:12,Unary:13,Postfix:14,Call:15,New:16,TaggedTemplate:17,Member:18,Primary:19},P={"||":O.LogicalOR,"&&":O.LogicalAND,"|":O.BitwiseOR,"^":O.BitwiseXOR,"&":O.BitwiseAND,"==":O.Equality,"!=":O.Equality,"===":O.Equality,"!==":O.Equality,is:O.Equality,isnt:O.Equality,"<":O.Relational,">":O.Relational,"<=":O.Relational,">=":O.Relational,"in":O.Relational,"instanceof":O.Relational,"<<":O.BitwiseSHIFT,">>":O.BitwiseSHIFT,">>>":O.BitwiseSHIFT,"+":O.Additive,"-":O.Additive,"*":O.Multiplicative,"%":O.Multiplicative,"/":O.Multiplicative};var mb=1,nb=2,ob=4,pb=8,qb=16,rb=32,sb=nb|ob,tb=mb|nb,ub=mb|nb|ob,vb=mb,wb=ob,xb=mb|ob,yb=mb,zb=mb|rb,Ab=0,Bb=mb|qb,Cb=mb|pb;T=Array.isArray,T||(T=function(a){return"[object Array]"===Object.prototype.toString.call(a)}),G.prototype.maybeBlock=function(a,b){var c,d,e=this;return d=!fb.comment||!a.leadingComments,a.type===N.BlockStatement&&d?[ab,this.generateStatement(a,b)]:a.type===N.EmptyStatement&&d?";":(x(function(){c=[_,w(e.generateStatement(a,b))]}),c)},G.prototype.maybeBlockSuffix=function(a,b){var c=i(t(b).toString());return a.type!==N.BlockStatement||fb.comment&&a.leadingComments||c?c?[b,U]:[b,_,U]:[b,ab]},G.prototype.generatePattern=function(a,b,c){return a.type===N.Identifier?H(a):this.generateExpression(a,b,c)},G.prototype.generateFunctionParams=function(a){var b,c,d,e;if(e=!1,a.type!==N.ArrowFunctionExpression||a.rest||a.defaults&&0!==a.defaults.length||1!==a.params.length||a.params[0].type!==N.Identifier){for(d=a.type===N.ArrowFunctionExpression?[I(a,!1)]:[],d.push("("),a.defaults&&(e=!0),b=0,c=a.params.length;c>b;++b)d.push(e&&a.defaults[b]?this.generateAssignment(a.params[b],a.defaults[b],"=",O.Assignment,ub):this.generatePattern(a.params[b],O.Assignment,ub)),c>b+1&&d.push(","+ab);a.rest&&(a.params.length&&d.push(","+ab),d.push("..."),d.push(H(a.rest))),d.push(")")}else d=[I(a,!0),H(a.params[0])];return d},G.prototype.generateFunctionBody=function(a){var b,c;return b=this.generateFunctionParams(a),a.type===N.ArrowFunctionExpression&&(b.push(ab),b.push("=>")),a.expression?(b.push(ab),c=this.generateExpression(a.body,O.Assignment,ub),"{"===c.toString().charAt(0)&&(c=["(",c,")"]),b.push(c)):b.push(this.maybeBlock(a.body,Cb)),b},G.prototype.generateIterationForStatement=function(a,b,c){var d=["for"+ab+"("],e=this;return x(function(){b.left.type===N.VariableDeclaration?x(function(){d.push(b.left.kind+u()),d.push(e.generateStatement(b.left.declarations[0],Ab))}):d.push(e.generateExpression(b.left,O.Call,ub)),d=v(d,a),d=[v(d,e.generateExpression(b.right,O.Sequence,ub)),")"]}),d.push(this.maybeBlock(b.body,c)),d},G.prototype.generatePropertyKey=function(a,b){var c=[];return b&&c.push("["),c.push(this.generateExpression(a,O.Sequence,ub)),b&&c.push("]"),c},G.prototype.generateAssignment=function(a,b,c,d,e){return O.Assignment<d&&(e|=mb),D([this.generateExpression(a,O.Call,e),ab+c+ab,this.generateExpression(b,O.Assignment,e)],O.Assignment,d)},G.prototype.semicolon=function(a){return!cb&&a&rb?"":";"},G.Statement={BlockStatement:function(a,b){var c,d,e=["{",_],f=this;return x(function(){0===a.body.length&&jb&&(c=a.range,c[1]-c[0]>2&&(d=ib.substring(c[0]+1,c[1]-1),"\n"===d[0]&&(e=["{"]),e.push(d)));var g,h,j,k;for(k=yb,b&pb&&(k|=qb),g=0,h=a.body.length;h>g;++g)jb&&(0===g&&(a.body[0].leadingComments&&(c=a.body[0].leadingComments[0].extendedRange,d=ib.substring(c[0],c[1]),"\n"===d[0]&&(e=["{"])),a.body[0].leadingComments||C(a.range[0],a.body[0].range[0],e)),g>0&&(a.body[g-1].trailingComments||a.body[g].leadingComments||C(a.body[g-1].range[1],a.body[g].range[0],e))),g===h-1&&(k|=rb),j=a.body[g].leadingComments&&jb?f.generateStatement(a.body[g],k):w(f.generateStatement(a.body[g],k)),e.push(j),i(t(j).toString())||(jb&&h-1>g?a.body[g+1].leadingComments||e.push(_):e.push(_)),jb&&g===h-1&&(a.body[g].trailingComments||C(a.body[g].range[1],a.range[1],e))}),e.push(w("}")),e},BreakStatement:function(a,b){return a.label?"break "+a.label.name+this.semicolon(b):"break"+this.semicolon(b)},ContinueStatement:function(a,b){return a.label?"continue "+a.label.name+this.semicolon(b):"continue"+this.semicolon(b)},ClassBody:function(a){var b=["{",_],c=this;return x(function(d){var e,f;for(e=0,f=a.body.length;f>e;++e)b.push(d),b.push(c.generateExpression(a.body[e],O.Sequence,ub)),f>e+1&&b.push(_)}),i(t(b).toString())||b.push(_),b.push(U),b.push("}"),b},ClassDeclaration:function(a){var b,c;return b=["class "+a.id.name],a.superClass&&(c=v("extends",this.generateExpression(a.superClass,O.Assignment,ub)),b=v(b,c)),b.push(ab),b.push(this.generateStatement(a.body,zb)),b},DirectiveStatement:function(a,b){return fb.raw&&a.raw?a.raw+this.semicolon(b):q(a.directive)+this.semicolon(b)},DoWhileStatement:function(a,b){var c=v("do",this.maybeBlock(a.body,yb));return c=this.maybeBlockSuffix(a.body,c),v(c,["while"+ab+"(",this.generateExpression(a.test,O.Sequence,ub),")"+this.semicolon(b)])},CatchClause:function(a){var b,c=this;return x(function(){var d;b=["catch"+ab+"(",c.generateExpression(a.param,O.Sequence,ub),")"],a.guard&&(d=c.generateExpression(a.guard,O.Sequence,ub),b.splice(2,0," if ",d))}),b.push(this.maybeBlock(a.body,yb)),b},DebuggerStatement:function(a,b){return"debugger"+this.semicolon(b)},EmptyStatement:function(){return";"},ExportDeclaration:function(a,b){var c,d=["export"],f=this;return c=b&rb?zb:yb,a["default"]?(d=v(d,"default"),d=e(a.declaration)?v(d,this.generateStatement(a.declaration,c)):v(d,this.generateExpression(a.declaration,O.Assignment,ub)+this.semicolon(b))):a.declaration?v(d,this.generateStatement(a.declaration,c)):(a.specifiers&&(0===a.specifiers.length?d=v(d,"{"+ab+"}"):a.specifiers[0].type===N.ExportBatchSpecifier?d=v(d,this.generateExpression(a.specifiers[0],O.Sequence,ub)):(d=v(d,"{"),x(function(b){var c,e;for(d.push(_),c=0,e=a.specifiers.length;e>c;++c)d.push(b),d.push(f.generateExpression(a.specifiers[c],O.Sequence,ub)),e>c+1&&d.push(","+_)}),i(t(d).toString())||d.push(_),d.push(U+"}")),a.source?d=v(d,["from"+ab,this.generateExpression(a.source,O.Sequence,ub),this.semicolon(b)]):d.push(this.semicolon(b))),d)},ExpressionStatement:function(a,b){function c(a){var b;return"class"!==a.slice(0,5)?!1:(b=a.charCodeAt(5),123===b||S.code.isWhiteSpace(b)||S.code.isLineTerminator(b))}function d(a){var b;return"function"!==a.slice(0,8)?!1:(b=a.charCodeAt(8),40===b||S.code.isWhiteSpace(b)||42===b||S.code.isLineTerminator(b))}function e(a){var b,c,d;if("async"!==a.slice(0,5))return!1;if(!S.code.isWhiteSpace(a.charCodeAt(5)))return!1;for(c=6,d=a.length;d>c&&S.code.isWhiteSpace(a.charCodeAt(c));++c);return c===d?!1:"function"!==a.slice(c,c+8)?!1:(b=a.charCodeAt(c+8),40===b||S.code.isWhiteSpace(b)||42===b||S.code.isLineTerminator(b))}var f,g;return f=[this.generateExpression(a.expression,O.Sequence,ub)],g=t(f).toString(),123===g.charCodeAt(0)||c(g)||d(g)||e(g)||eb&&b&qb&&a.expression.type===N.Literal&&"string"==typeof a.expression.value?f=["(",f,")"+this.semicolon(b)]:f.push(this.semicolon(b)),f},ImportDeclaration:function(a,b){var c,d,e=this;return 0===a.specifiers.length?["import",ab,this.generateExpression(a.source,O.Sequence,ub),this.semicolon(b)]:(c=["import"],d=0,a.specifiers[d].type===N.ImportDefaultSpecifier&&(c=v(c,[this.generateExpression(a.specifiers[d],O.Sequence,ub)]),++d),a.specifiers[d]&&(0!==d&&c.push(","),a.specifiers[d].type===N.ImportNamespaceSpecifier?c=v(c,[ab,this.generateExpression(a.specifiers[d],O.Sequence,ub)]):(c.push(ab+"{"),a.specifiers.length-d===1?(c.push(ab),c.push(this.generateExpression(a.specifiers[d],O.Sequence,ub)),c.push(ab+"}"+ab)):(x(function(b){var f,g;for(c.push(_),f=d,g=a.specifiers.length;g>f;++f)c.push(b),c.push(e.generateExpression(a.specifiers[f],O.Sequence,ub)),g>f+1&&c.push(","+_)}),i(t(c).toString())||c.push(_),c.push(U+"}"+ab)))),c=v(c,["from"+ab,this.generateExpression(a.source,O.Sequence,ub),this.semicolon(b)]))},VariableDeclarator:function(a,b){var c=b&mb?ub:sb;return a.init?[this.generateExpression(a.id,O.Assignment,c),ab,"=",ab,this.generateExpression(a.init,O.Assignment,c)]:this.generatePattern(a.id,O.Assignment,c)},VariableDeclaration:function(a,b){function c(){for(g=a.declarations[0],fb.comment&&g.leadingComments?(d.push("\n"),d.push(w(i.generateStatement(g,h)))):(d.push(u()),d.push(i.generateStatement(g,h))),e=1,f=a.declarations.length;f>e;++e)g=a.declarations[e],fb.comment&&g.leadingComments?(d.push(","+_),d.push(w(i.generateStatement(g,h)))):(d.push(","+ab),d.push(i.generateStatement(g,h)))}var d,e,f,g,h,i=this;return d=[a.kind],h=b&mb?yb:Ab,a.declarations.length>1?x(c):c(),d.push(this.semicolon(b)),d},ThrowStatement:function(a,b){return[v("throw",this.generateExpression(a.argument,O.Sequence,ub)),this.semicolon(b)]},TryStatement:function(a){var b,c,d,e;if(b=["try",this.maybeBlock(a.block,yb)],b=this.maybeBlockSuffix(a.block,b),a.handlers)for(c=0,d=a.handlers.length;d>c;++c)b=v(b,this.generateStatement(a.handlers[c],yb)),(a.finalizer||c+1!==d)&&(b=this.maybeBlockSuffix(a.handlers[c].body,b));else{for(e=a.guardedHandlers||[],c=0,d=e.length;d>c;++c)b=v(b,this.generateStatement(e[c],yb)),(a.finalizer||c+1!==d)&&(b=this.maybeBlockSuffix(e[c].body,b));if(a.handler)if(T(a.handler))for(c=0,d=a.handler.length;d>c;++c)b=v(b,this.generateStatement(a.handler[c],yb)),(a.finalizer||c+1!==d)&&(b=this.maybeBlockSuffix(a.handler[c].body,b));else b=v(b,this.generateStatement(a.handler,yb)),a.finalizer&&(b=this.maybeBlockSuffix(a.handler.body,b))}return a.finalizer&&(b=v(b,["finally",this.maybeBlock(a.finalizer,yb)])),b},SwitchStatement:function(a){var b,c,d,e,f,g=this;if(x(function(){b=["switch"+ab+"(",g.generateExpression(a.discriminant,O.Sequence,ub),")"+ab+"{"+_]}),a.cases)for(f=yb,d=0,e=a.cases.length;e>d;++d)d===e-1&&(f|=rb),c=w(this.generateStatement(a.cases[d],f)),b.push(c),i(t(c).toString())||b.push(_);return b.push(w("}")),b},SwitchCase:function(a,b){var c,d,e,f,g,h=this;return x(function(){for(c=a.test?[v("case",h.generateExpression(a.test,O.Sequence,ub)),":"]:["default:"],e=0,f=a.consequent.length,f&&a.consequent[0].type===N.BlockStatement&&(d=h.maybeBlock(a.consequent[0],yb),c.push(d),e=1),e===f||i(t(c).toString())||c.push(_),g=yb;f>e;++e)e===f-1&&b&rb&&(g|=rb),d=w(h.generateStatement(a.consequent[e],g)),c.push(d),e+1===f||i(t(d).toString())||c.push(_)}),c},IfStatement:function(a,b){var c,d,e,f=this;return x(function(){c=["if"+ab+"(",f.generateExpression(a.test,O.Sequence,ub),")"]}),e=b&rb,d=yb,e&&(d|=rb),a.alternate?(c.push(this.maybeBlock(a.consequent,yb)),c=this.maybeBlockSuffix(a.consequent,c),c=a.alternate.type===N.IfStatement?v(c,["else ",this.generateStatement(a.alternate,d)]):v(c,v("else",this.maybeBlock(a.alternate,d)))):c.push(this.maybeBlock(a.consequent,d)),c},ForStatement:function(a,b){var c,d=this;return x(function(){c=["for"+ab+"("],a.init?a.init.type===N.VariableDeclaration?c.push(d.generateStatement(a.init,Ab)):(c.push(d.generateExpression(a.init,O.Sequence,sb)),c.push(";")):c.push(";"),a.test?(c.push(ab),c.push(d.generateExpression(a.test,O.Sequence,ub)),c.push(";")):c.push(";"),a.update?(c.push(ab),c.push(d.generateExpression(a.update,O.Sequence,ub)),c.push(")")):c.push(")")}),c.push(this.maybeBlock(a.body,b&rb?zb:yb)),c},ForInStatement:function(a,b){return this.generateIterationForStatement("in",a,b&rb?zb:yb)},ForOfStatement:function(a,b){return this.generateIterationForStatement("of",a,b&rb?zb:yb)},LabeledStatement:function(a,b){return[a.label.name+":",this.maybeBlock(a.body,b&rb?zb:yb)]},Program:function(a){var b,c,d,e,f;for(e=a.body.length,b=[db&&e>0?"\n":""],f=Bb,d=0;e>d;++d)db||d!==e-1||(f|=rb),jb&&(0===d&&(a.body[0].leadingComments||C(a.range[0],a.body[d].range[0],b)),d>0&&(a.body[d-1].trailingComments||a.body[d].leadingComments||C(a.body[d-1].range[1],a.body[d].range[0],b))),c=w(this.generateStatement(a.body[d],f)),b.push(c),e>d+1&&!i(t(c).toString())&&(jb?a.body[d+1].leadingComments||b.push(_):b.push(_)),jb&&d===e-1&&(a.body[d].trailingComments||C(a.body[d].range[1],a.range[1],b));return b},FunctionDeclaration:function(a){return[I(a,!0),"function",J(a)||u(),H(a.id),this.generateFunctionBody(a)]},ReturnStatement:function(a,b){return a.argument?[v("return",this.generateExpression(a.argument,O.Sequence,ub)),this.semicolon(b)]:["return"+this.semicolon(b)]},WhileStatement:function(a,b){var c,d=this;return x(function(){c=["while"+ab+"(",d.generateExpression(a.test,O.Sequence,ub),")"]}),c.push(this.maybeBlock(a.body,b&rb?zb:yb)),c},WithStatement:function(a,b){var c,d=this;return x(function(){c=["with"+ab+"(",d.generateExpression(a.object,O.Sequence,ub),")"]}),c.push(this.maybeBlock(a.body,b&rb?zb:yb)),c}},j(G.prototype,G.Statement),G.Expression={SequenceExpression:function(a,b,c){var d,e,f;for(O.Sequence<b&&(c|=mb),d=[],e=0,f=a.expressions.length;f>e;++e)d.push(this.generateExpression(a.expressions[e],O.Assignment,c)),f>e+1&&d.push(","+ab);return D(d,O.Sequence,b)},AssignmentExpression:function(a,b,c){return this.generateAssignment(a.left,a.right,a.operator,b,c)},ArrowFunctionExpression:function(a,b){return D(this.generateFunctionBody(a),O.ArrowFunction,b)},ConditionalExpression:function(a,b,c){return O.Conditional<b&&(c|=mb),D([this.generateExpression(a.test,O.LogicalOR,c),ab+"?"+ab,this.generateExpression(a.consequent,O.Assignment,c),ab+":"+ab,this.generateExpression(a.alternate,O.Assignment,c)],O.Conditional,b)},LogicalExpression:function(a,b,c){return this.BinaryExpression(a,b,c)},BinaryExpression:function(a,b,c){var d,e,f,g;return e=P[a.operator],b>e&&(c|=mb),f=this.generateExpression(a.left,e,c),g=f.toString(),d=47===g.charCodeAt(g.length-1)&&S.code.isIdentifierPart(a.operator.charCodeAt(0))?[f,u(),a.operator]:v(f,a.operator),f=this.generateExpression(a.right,e+1,c),"/"===a.operator&&"/"===f.toString().charAt(0)||"<"===a.operator.slice(-1)&&"!--"===f.toString().slice(0,3)?(d.push(u()),d.push(f)):d=v(d,f),"in"!==a.operator||c&mb?D(d,e,b):["(",d,")"]},CallExpression:function(a,b,c){var d,e,f;for(d=[this.generateExpression(a.callee,O.Call,tb)],d.push("("),e=0,f=a.arguments.length;f>e;++e)d.push(this.generateExpression(a.arguments[e],O.Assignment,ub)),f>e+1&&d.push(","+ab);return d.push(")"),c&nb?D(d,O.Call,b):["(",d,")"]},NewExpression:function(a,b,c){var d,e,f,g,h;if(e=a.arguments.length,h=c&ob&&!bb&&0===e?xb:vb,d=v("new",this.generateExpression(a.callee,O.New,h)),!(c&ob)||bb||e>0){for(d.push("("),f=0,g=e;g>f;++f)d.push(this.generateExpression(a.arguments[f],O.Assignment,ub)),g>f+1&&d.push(","+ab);d.push(")")}return D(d,O.New,b)},MemberExpression:function(a,b,c){var d,e;return d=[this.generateExpression(a.object,O.Call,c&nb?tb:vb)],a.computed?(d.push("["),d.push(this.generateExpression(a.property,O.Sequence,c&nb?ub:xb)),d.push("]")):(a.object.type===N.Literal&&"number"==typeof a.object.value&&(e=t(d).toString(),e.indexOf(".")<0&&!/[eExX]/.test(e)&&S.code.isDecimalDigit(e.charCodeAt(e.length-1))&&!(e.length>=2&&48===e.charCodeAt(0))&&d.push(".")),d.push("."),d.push(H(a.property))),D(d,O.Member,b)},UnaryExpression:function(a,b){var c,d,e,f,g;return d=this.generateExpression(a.argument,O.Unary,ub),""===ab?c=v(a.operator,d):(c=[a.operator],a.operator.length>2?c=v(c,d):(f=t(c).toString(),g=f.charCodeAt(f.length-1),e=d.toString().charCodeAt(0),(43===g||45===g)&&g===e||S.code.isIdentifierPart(g)&&S.code.isIdentifierPart(e)?(c.push(u()),c.push(d)):c.push(d))),D(c,O.Unary,b)},YieldExpression:function(a,b){var c;return c=a.delegate?"yield*":"yield",a.argument&&(c=v(c,this.generateExpression(a.argument,O.Yield,ub))),D(c,O.Yield,b)},AwaitExpression:function(a,b){var c=v(a.delegate?"await*":"await",this.generateExpression(a.argument,O.Await,ub));return D(c,O.Await,b)},UpdateExpression:function(a,b){return a.prefix?D([a.operator,this.generateExpression(a.argument,O.Unary,ub)],O.Unary,b):D([this.generateExpression(a.argument,O.Postfix,ub),a.operator],O.Postfix,b)},FunctionExpression:function(a){var b=[I(a,!0),"function"];return a.id?(b.push(J(a)||u()),b.push(H(a.id))):b.push(J(a)||ab),b.push(this.generateFunctionBody(a)),b},ExportBatchSpecifier:function(){return"*"},ArrayPattern:function(a,b,c){return this.ArrayExpression(a,b,c)},ArrayExpression:function(a){var b,c,d=this;return a.elements.length?(c=a.elements.length>1,b=["[",c?_:""],x(function(e){var f,g;for(f=0,g=a.elements.length;g>f;++f)a.elements[f]?(b.push(c?e:""),b.push(d.generateExpression(a.elements[f],O.Assignment,ub))):(c&&b.push(e),f+1===g&&b.push(",")),g>f+1&&b.push(","+(c?_:ab))}),c&&!i(t(b).toString())&&b.push(_),b.push(c?U:""),b.push("]"),b):"[]"},ClassExpression:function(a){var b,c;return b=["class"],a.id&&(b=v(b,this.generateExpression(a.id,O.Sequence,ub))),a.superClass&&(c=v("extends",this.generateExpression(a.superClass,O.Assignment,ub)),b=v(b,c)),b.push(ab),b.push(this.generateStatement(a.body,zb)),b},MethodDefinition:function(a){var b,c;return b=a["static"]?["static"+ab]:[],c="get"===a.kind||"set"===a.kind?[v(a.kind,this.generatePropertyKey(a.key,a.computed)),this.generateFunctionBody(a.value)]:[K(a),this.generatePropertyKey(a.key,a.computed),this.generateFunctionBody(a.value)],v(b,c)},Property:function(a){return"get"===a.kind||"set"===a.kind?[a.kind,u(),this.generatePropertyKey(a.key,a.computed),this.generateFunctionBody(a.value)]:a.shorthand?this.generatePropertyKey(a.key,a.computed):a.method?[K(a),this.generatePropertyKey(a.key,a.computed),this.generateFunctionBody(a.value)]:[this.generatePropertyKey(a.key,a.computed),":"+ab,this.generateExpression(a.value,O.Assignment,ub)]},ObjectExpression:function(a){var b,c,d,e=this;return a.properties.length?(b=a.properties.length>1,x(function(){d=e.generateExpression(a.properties[0],O.Sequence,ub)}),b||h(t(d).toString())?(x(function(f){var g,h;if(c=["{",_,f,d],b)for(c.push(","+_),g=1,h=a.properties.length;h>g;++g)c.push(f),c.push(e.generateExpression(a.properties[g],O.Sequence,ub)),h>g+1&&c.push(","+_)}),i(t(c).toString())||c.push(_),c.push(U),c.push("}"),c):["{",ab,d,ab,"}"]):"{}"},ObjectPattern:function(a){var b,c,d,e,f,g=this;if(!a.properties.length)return"{}";if(e=!1,1===a.properties.length)f=a.properties[0],f.value.type!==N.Identifier&&(e=!0);else for(c=0,d=a.properties.length;d>c;++c)if(f=a.properties[c],!f.shorthand){e=!0;break}return b=["{",e?_:""],x(function(c){var d,f;for(d=0,f=a.properties.length;f>d;++d)b.push(e?c:""),b.push(g.generateExpression(a.properties[d],O.Sequence,ub)),f>d+1&&b.push(","+(e?_:ab))}),e&&!i(t(b).toString())&&b.push(_),b.push(e?U:""),b.push("}"),b},ThisExpression:function(){return"this"},Identifier:function(a){return H(a)},ImportDefaultSpecifier:function(a){return H(a.id)},ImportNamespaceSpecifier:function(a){var b=["*"];return a.id&&b.push(ab+"as"+u()+H(a.id)),b},ImportSpecifier:function(a,b,c){return this.ExportSpecifier(a,b,c)},ExportSpecifier:function(a){var b=[a.id.name];return a.name&&b.push(u()+"as"+u()+H(a.name)),b},Literal:function(a){var b;if(a.hasOwnProperty("raw")&&gb&&fb.raw)try{if(b=gb(a.raw).body[0].expression,b.type===N.Literal&&b.value===a.value)return a.raw}catch(c){}return null===a.value?"null":"string"==typeof a.value?r(a.value):"number"==typeof a.value?l(a.value):"boolean"==typeof a.value?a.value?"true":"false":n(a.value)},GeneratorExpression:function(a,b,c){return this.ComprehensionExpression(a,b,c)},ComprehensionExpression:function(a){var b,c,d,e,f=this;return b=a.type===N.GeneratorExpression?["("]:["["],fb.moz.comprehensionExpressionStartsWithAssignment&&(e=this.generateExpression(a.body,O.Assignment,ub),b.push(e)),a.blocks&&x(function(){for(c=0,d=a.blocks.length;d>c;++c)e=f.generateExpression(a.blocks[c],O.Sequence,ub),c>0||fb.moz.comprehensionExpressionStartsWithAssignment?b=v(b,e):b.push(e)}),a.filter&&(b=v(b,"if"+ab),e=this.generateExpression(a.filter,O.Sequence,ub),b=v(b,["(",e,")"])),fb.moz.comprehensionExpressionStartsWithAssignment||(e=this.generateExpression(a.body,O.Assignment,ub),b=v(b,e)),b.push(a.type===N.GeneratorExpression?")":"]"),b},ComprehensionBlock:function(a){var b;return b=a.left.type===N.VariableDeclaration?[a.left.kind,u(),this.generateStatement(a.left.declarations[0],Ab)]:this.generateExpression(a.left,O.Call,ub),b=v(b,a.of?"of":"in"),b=v(b,this.generateExpression(a.right,O.Sequence,ub)),["for"+ab+"(",b,")"]},SpreadElement:function(a){return["...",this.generateExpression(a.argument,O.Assignment,ub)]},TaggedTemplateExpression:function(a,b,c){var d=tb;c&nb||(d=vb);var e=[this.generateExpression(a.tag,O.Call,d),this.generateExpression(a.quasi,O.Primary,wb)];return D(e,O.TaggedTemplate,b)},TemplateElement:function(a){return a.value.raw},TemplateLiteral:function(a){var b,c,d;for(b=["`"],c=0,d=a.quasis.length;d>c;++c)b.push(this.generateExpression(a.quasis[c],O.Primary,ub)),d>c+1&&(b.push("${"+ab),b.push(this.generateExpression(a.expressions[c],O.Sequence,ub)),b.push(ab+"}"));return b.push("`"),b},ModuleSpecifier:function(a,b,c){return this.Literal(a,b,c)}},j(G.prototype,G.Expression),G.prototype.generateExpression=function(a,b,c){var d,e;return e=a.type||N.Property,fb.verbatim&&a.hasOwnProperty(fb.verbatim)?F(a,b):(d=this[e](a,b,c),fb.comment&&(d=B(a,d)),t(d,a))},G.prototype.generateStatement=function(a,b){var c,d;return c=this[a.type](a,b),fb.comment&&(c=B(a,c)),d=t(c).toString(),a.type!==N.Program||db||""!==_||"\n"!==d.charAt(d.length-1)||(c=hb?t(c).replaceRight(/\s+$/,""):d.replace(/\s+$/,"")),t(c,a)},kb={indent:{style:"",base:0},renumber:!0,hexadecimal:!0,quotes:"auto",escapeless:!0,compact:!0,parentheses:!1,semicolons:!1},lb=f().format,c.version=a("./package.json").version,c.generate=M,c.attachComments=R.attachComments,c.Precedence=k({},O),c.browser=!1,c.FORMAT_MINIFY=kb,c.FORMAT_DEFAULTS=lb}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./package.json":80,estraverse:64,esutils:68,"source-map":69}],64:[function(a,b,c){!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["exports"],b):b("undefined"!=typeof c?c:a.estraverse={})}(this,function d(a){"use strict";function b(){}function c(a){var b,d,e={};for(b in a)a.hasOwnProperty(b)&&(d=a[b],e[b]="object"==typeof d&&null!==d?c(d):d);return e}function e(a){var b,c={};for(b in a)a.hasOwnProperty(b)&&(c[b]=a[b]);return c}function f(a,b){var c,d,e,f;for(d=a.length,e=0;d;)c=d>>>1,f=e+c,b(a[f])?d=c:(e=f+1,d-=c+1);return e}function g(a,b){var c,d,e,f;for(d=a.length,e=0;d;)c=d>>>1,f=e+c,b(a[f])?(e=f+1,d-=c+1):d=c;return e}function h(a,b){return w(b).forEach(function(c){a[c]=b[c]}),a}function i(a,b){this.parent=a,this.key=b}function j(a,b,c,d){this.node=a,this.path=b,this.wrap=c,this.ref=d}function k(){}function l(a){return null==a?!1:"object"==typeof a&&"string"==typeof a.type}function m(a,b){return(a===r.ObjectExpression||a===r.ObjectPattern)&&"properties"===b}function n(a,b){var c=new k;return c.traverse(a,b)}function o(a,b){var c=new k;return c.replace(a,b)}function p(a,b){var c;return c=f(b,function(b){return b.range[0]>a.range[0]}),a.extendedRange=[a.range[0],a.range[1]],c!==b.length&&(a.extendedRange[1]=b[c].range[0]),c-=1,c>=0&&(a.extendedRange[0]=b[c].range[1]),a}function q(a,b,d){var e,f,g,h,i=[];if(!a.range)throw new Error("attachComments needs range information");if(!d.length){if(b.length){for(g=0,f=b.length;f>g;g+=1)e=c(b[g]),e.extendedRange=[0,a.range[0]],i.push(e);a.leadingComments=i}return a}for(g=0,f=b.length;f>g;g+=1)i.push(p(c(b[g]),d));return h=0,n(a,{enter:function(a){for(var b;h<i.length&&(b=i[h],!(b.extendedRange[1]>a.range[0]));)b.extendedRange[1]===a.range[0]?(a.leadingComments||(a.leadingComments=[]),a.leadingComments.push(b),i.splice(h,1)):h+=1;return h===i.length?t.Break:i[h].extendedRange[0]>a.range[1]?t.Skip:void 0}}),h=0,n(a,{leave:function(a){for(var b;h<i.length&&(b=i[h],!(a.range[1]<b.extendedRange[0]));)a.range[1]===b.extendedRange[0]?(a.trailingComments||(a.trailingComments=[]),a.trailingComments.push(b),i.splice(h,1)):h+=1;return h===i.length?t.Break:i[h].extendedRange[0]>a.range[1]?t.Skip:void 0}}),a}var r,s,t,u,v,w,x,y,z;return s=Array.isArray,s||(s=function(a){return"[object Array]"===Object.prototype.toString.call(a)}),b(e),b(g),v=Object.create||function(){function a(){}return function(b){return a.prototype=b,new a}}(),w=Object.keys||function(a){var b,c=[];for(b in a)c.push(b);return c},r={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportBatchSpecifier:"ExportBatchSpecifier",ExportDeclaration:"ExportDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},u={AssignmentExpression:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","defaults","rest","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ClassBody:["body"],ClassDeclaration:["id","body","superClass"],ClassExpression:["id","body","superClass"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportBatchSpecifier:[],ExportDeclaration:["declaration","specifiers","source"],ExportSpecifier:["id","name"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","defaults","rest","body"],FunctionExpression:["id","params","defaults","rest","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["id"],ImportNamespaceSpecifier:["id"],ImportSpecifier:["id","name"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],Program:["body"],Property:["key","value"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handlers","handler","guardedHandlers","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},x={},y={},z={},t={Break:x,Skip:y,Remove:z},i.prototype.replace=function(a){this.parent[this.key]=a
+},i.prototype.remove=function(){return s(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)},k.prototype.path=function(){function a(a,b){if(s(b))for(d=0,e=b.length;e>d;++d)a.push(b[d]);else a.push(b)}var b,c,d,e,f,g;if(!this.__current.path)return null;for(f=[],b=2,c=this.__leavelist.length;c>b;++b)g=this.__leavelist[b],a(f,g.path);return a(f,this.__current.path),f},k.prototype.type=function(){var a=this.current();return a.type||this.__current.wrap},k.prototype.parents=function(){var a,b,c;for(c=[],a=1,b=this.__leavelist.length;b>a;++a)c.push(this.__leavelist[a].node);return c},k.prototype.current=function(){return this.__current.node},k.prototype.__execute=function(a,b){var c,d;return d=void 0,c=this.__current,this.__current=b,this.__state=null,a&&(d=a.call(this,b.node,this.__leavelist[this.__leavelist.length-1].node)),this.__current=c,d},k.prototype.notify=function(a){this.__state=a},k.prototype.skip=function(){this.notify(y)},k.prototype["break"]=function(){this.notify(x)},k.prototype.remove=function(){this.notify(z)},k.prototype.__initialize=function(a,b){this.visitor=b,this.root=a,this.__worklist=[],this.__leavelist=[],this.__current=null,this.__state=null,this.__fallback="iteration"===b.fallback,this.__keys=u,b.keys&&(this.__keys=h(v(this.__keys),b.keys))},k.prototype.traverse=function(a,b){var c,d,e,f,g,h,i,k,n,o,p,q;for(this.__initialize(a,b),q={},c=this.__worklist,d=this.__leavelist,c.push(new j(a,null,null,null)),d.push(new j(null,null,null,null));c.length;)if(e=c.pop(),e!==q){if(e.node){if(h=this.__execute(b.enter,e),this.__state===x||h===x)return;if(c.push(q),d.push(e),this.__state===y||h===y)continue;if(f=e.node,g=e.wrap||f.type,o=this.__keys[g],!o){if(!this.__fallback)throw new Error("Unknown node type "+g+".");o=w(f)}for(k=o.length;(k-=1)>=0;)if(i=o[k],p=f[i])if(s(p)){for(n=p.length;(n-=1)>=0;)if(p[n]){if(m(g,o[k]))e=new j(p[n],[i,n],"Property",null);else{if(!l(p[n]))continue;e=new j(p[n],[i,n],null,null)}c.push(e)}}else l(p)&&c.push(new j(p,i,null,null))}}else if(e=d.pop(),h=this.__execute(b.leave,e),this.__state===x||h===x)return},k.prototype.replace=function(a,b){function c(a){var b,c,e,f;if(a.ref.remove())for(c=a.ref.key,f=a.ref.parent,b=d.length;b--;)if(e=d[b],e.ref&&e.ref.parent===f){if(e.ref.key<c)break;--e.ref.key}}var d,e,f,g,h,k,n,o,p,q,r,t,u;for(this.__initialize(a,b),r={},d=this.__worklist,e=this.__leavelist,t={root:a},k=new j(a,null,null,new i(t,"root")),d.push(k),e.push(k);d.length;)if(k=d.pop(),k!==r){if(h=this.__execute(b.enter,k),void 0!==h&&h!==x&&h!==y&&h!==z&&(k.ref.replace(h),k.node=h),(this.__state===z||h===z)&&(c(k),k.node=null),this.__state===x||h===x)return t.root;if(f=k.node,f&&(d.push(r),e.push(k),this.__state!==y&&h!==y)){if(g=k.wrap||f.type,p=this.__keys[g],!p){if(!this.__fallback)throw new Error("Unknown node type "+g+".");p=w(f)}for(n=p.length;(n-=1)>=0;)if(u=p[n],q=f[u])if(s(q)){for(o=q.length;(o-=1)>=0;)if(q[o]){if(m(g,p[n]))k=new j(q[o],[u,o],"Property",new i(q,o));else{if(!l(q[o]))continue;k=new j(q[o],[u,o],null,new i(q,o))}d.push(k)}}else l(q)&&d.push(new j(q,u,null,new i(f,u)))}}else if(k=e.pop(),h=this.__execute(b.leave,k),void 0!==h&&h!==x&&h!==y&&h!==z&&k.ref.replace(h),(this.__state===z||h===z)&&c(k),this.__state===x||h===x)return t.root;return t.root},a.version="1.8.1-dev",a.Syntax=r,a.traverse=n,a.replace=o,a.attachComments=q,a.VisitorKeys=u,a.VisitorOption=t,a.Controller=k,a.cloneEnvironment=function(){return d({})},a})},{}],65:[function(a,b){!function(){"use strict";function a(a){if(null==a)return!1;switch(a.type){case"ArrayExpression":case"AssignmentExpression":case"BinaryExpression":case"CallExpression":case"ConditionalExpression":case"FunctionExpression":case"Identifier":case"Literal":case"LogicalExpression":case"MemberExpression":case"NewExpression":case"ObjectExpression":case"SequenceExpression":case"ThisExpression":case"UnaryExpression":case"UpdateExpression":return!0}return!1}function c(a){if(null==a)return!1;switch(a.type){case"DoWhileStatement":case"ForInStatement":case"ForStatement":case"WhileStatement":return!0}return!1}function d(a){if(null==a)return!1;switch(a.type){case"BlockStatement":case"BreakStatement":case"ContinueStatement":case"DebuggerStatement":case"DoWhileStatement":case"EmptyStatement":case"ExpressionStatement":case"ForInStatement":case"ForStatement":case"IfStatement":case"LabeledStatement":case"ReturnStatement":case"SwitchStatement":case"ThrowStatement":case"TryStatement":case"VariableDeclaration":case"WhileStatement":case"WithStatement":return!0}return!1}function e(a){return d(a)||null!=a&&"FunctionDeclaration"===a.type}function f(a){switch(a.type){case"IfStatement":return null!=a.alternate?a.alternate:a.consequent;case"LabeledStatement":case"ForStatement":case"ForInStatement":case"WhileStatement":case"WithStatement":return a.body}return null}function g(a){var b;if("IfStatement"!==a.type)return!1;if(null==a.alternate)return!1;b=a.consequent;do{if("IfStatement"===b.type&&null==b.alternate)return!0;b=f(b)}while(b);return!1}b.exports={isExpression:a,isStatement:d,isIterationStatement:c,isSourceElement:e,isProblematicIfStatement:g,trailingStatement:f}}()},{}],66:[function(a,b){!function(){"use strict";function a(a){return a>=48&&57>=a}function c(b){return a(b)||b>=97&&102>=b||b>=65&&70>=b}function d(a){return a>=48&&55>=a}function e(a){return 32===a||9===a||11===a||12===a||160===a||a>=5760&&j.indexOf(a)>=0}function f(a){return 10===a||13===a||8232===a||8233===a}function g(a){return a>=97&&122>=a||a>=65&&90>=a||36===a||95===a||92===a||a>=128&&i.NonAsciiIdentifierStart.test(String.fromCharCode(a))}function h(a){return a>=97&&122>=a||a>=65&&90>=a||a>=48&&57>=a||36===a||95===a||92===a||a>=128&&i.NonAsciiIdentifierPart.test(String.fromCharCode(a))}var i,j;i={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},j=[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],b.exports={isDecimalDigit:a,isHexDigit:c,isOctalDigit:d,isWhiteSpace:e,isLineTerminator:f,isIdentifierStart:g,isIdentifierPart:h}}()},{}],67:[function(a,b){!function(){"use strict";function c(a){switch(a){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function d(a,b){return b||"yield"!==a?e(a,b):!1}function e(a,b){if(b&&c(a))return!0;switch(a.length){case 2:return"if"===a||"in"===a||"do"===a;case 3:return"var"===a||"for"===a||"new"===a||"try"===a;case 4:return"this"===a||"else"===a||"case"===a||"void"===a||"with"===a||"enum"===a;case 5:return"while"===a||"break"===a||"catch"===a||"throw"===a||"const"===a||"yield"===a||"class"===a||"super"===a;case 6:return"return"===a||"typeof"===a||"delete"===a||"switch"===a||"export"===a||"import"===a;case 7:return"default"===a||"finally"===a||"extends"===a;case 8:return"function"===a||"continue"===a||"debugger"===a;case 10:return"instanceof"===a;default:return!1}}function f(a,b){return"null"===a||"true"===a||"false"===a||d(a,b)}function g(a,b){return"null"===a||"true"===a||"false"===a||e(a,b)}function h(a){return"eval"===a||"arguments"===a}function i(a){var b,c,d;if(0===a.length)return!1;if(d=a.charCodeAt(0),!l.isIdentifierStart(d)||92===d)return!1;for(b=1,c=a.length;c>b;++b)if(d=a.charCodeAt(b),!l.isIdentifierPart(d)||92===d)return!1;return!0}function j(a,b){return i(a)&&!f(a,b)}function k(a,b){return i(a)&&!g(a,b)}var l=a("./code");b.exports={isKeywordES5:d,isKeywordES6:e,isReservedWordES5:f,isReservedWordES6:g,isRestrictedWord:h,isIdentifierName:i,isIdentifierES5:j,isIdentifierES6:k}}()},{"./code":66}],68:[function(a,b,c){!function(){"use strict";c.ast=a("./ast"),c.code=a("./code"),c.keyword=a("./keyword")}()},{"./ast":65,"./code":66,"./keyword":67}],69:[function(a,b,c){c.SourceMapGenerator=a("./source-map/source-map-generator").SourceMapGenerator,c.SourceMapConsumer=a("./source-map/source-map-consumer").SourceMapConsumer,c.SourceNode=a("./source-map/source-node").SourceNode},{"./source-map/source-map-consumer":75,"./source-map/source-map-generator":76,"./source-map/source-node":77}],70:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(){this._array=[],this._set={}}var d=a("./util");c.fromArray=function(a,b){for(var d=new c,e=0,f=a.length;f>e;e++)d.add(a[e],b);return d},c.prototype.add=function(a,b){var c=this.has(a),e=this._array.length;(!c||b)&&this._array.push(a),c||(this._set[d.toSetString(a)]=e)},c.prototype.has=function(a){return Object.prototype.hasOwnProperty.call(this._set,d.toSetString(a))},c.prototype.indexOf=function(a){if(this.has(a))return this._set[d.toSetString(a)];throw new Error('"'+a+'" is not in the set.')},c.prototype.at=function(a){if(a>=0&&a<this._array.length)return this._array[a];throw new Error("No element indexed by "+a)},c.prototype.toArray=function(){return this._array.slice()},b.ArraySet=c})},{"./util":78,amdefine:79}],71:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a){return 0>a?(-a<<1)+1:(a<<1)+0}function d(a){var b=1===(1&a),c=a>>1;return b?-c:c}var e=a("./base64"),f=5,g=1<<f,h=g-1,i=g;b.encode=function(a){var b,d="",g=c(a);do b=g&h,g>>>=f,g>0&&(b|=i),d+=e.encode(b);while(g>0);return d},b.decode=function(a,b){var c,g,j=0,k=a.length,l=0,m=0;do{if(j>=k)throw new Error("Expected more digits in base 64 VLQ value.");g=e.decode(a.charAt(j++)),c=!!(g&i),g&=h,l+=g<<m,m+=f}while(c);b.value=d(l),b.rest=a.slice(j)}})},{"./base64":72,amdefine:79}],72:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){var c={},d={};"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("").forEach(function(a,b){c[a]=b,d[b]=a}),b.encode=function(a){if(a in d)return d[a];throw new TypeError("Must be between 0 and 63: "+a)},b.decode=function(a){if(a in c)return c[a];throw new TypeError("Not a valid base 64 digit: "+a)}})},{amdefine:79}],73:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a,b,d,e,f){var g=Math.floor((b-a)/2)+a,h=f(d,e[g],!0);return 0===h?g:h>0?b-g>1?c(g,b,d,e,f):g:g-a>1?c(a,g,d,e,f):0>a?-1:a}b.search=function(a,b,d){return 0===b.length?-1:c(-1,b.length,a,b,d)}})},{amdefine:79}],74:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a,b){var c=a.generatedLine,d=b.generatedLine,f=a.generatedColumn,g=b.generatedColumn;return d>c||d==c&&g>=f||e.compareByGeneratedPositions(a,b)<=0}function d(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var e=a("./util");d.prototype.unsortedForEach=function(a,b){this._array.forEach(a,b)},d.prototype.add=function(a){c(this._last,a)?(this._last=a,this._array.push(a)):(this._sorted=!1,this._array.push(a))},d.prototype.toArray=function(){return this._sorted||(this._array.sort(e.compareByGeneratedPositions),this._sorted=!0),this._array},b.MappingList=d})},{"./util":78,amdefine:79}],75:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a){var b=a;"string"==typeof a&&(b=JSON.parse(a.replace(/^\)\]\}'/,"")));var c=d.getArg(b,"version"),e=d.getArg(b,"sources"),g=d.getArg(b,"names",[]),h=d.getArg(b,"sourceRoot",null),i=d.getArg(b,"sourcesContent",null),j=d.getArg(b,"mappings"),k=d.getArg(b,"file",null);if(c!=this._version)throw new Error("Unsupported version: "+c);e=e.map(d.normalize),this._names=f.fromArray(g,!0),this._sources=f.fromArray(e,!0),this.sourceRoot=h,this.sourcesContent=i,this._mappings=j,this.file=k}var d=a("./util"),e=a("./binary-search"),f=a("./array-set").ArraySet,g=a("./base64-vlq");c.fromSourceMap=function(a){var b=Object.create(c.prototype);return b._names=f.fromArray(a._names.toArray(),!0),b._sources=f.fromArray(a._sources.toArray(),!0),b.sourceRoot=a._sourceRoot,b.sourcesContent=a._generateSourcesContent(b._sources.toArray(),b.sourceRoot),b.file=a._file,b.__generatedMappings=a._mappings.toArray().slice(),b.__originalMappings=a._mappings.toArray().slice().sort(d.compareByOriginalPositions),b},c.prototype._version=3,Object.defineProperty(c.prototype,"sources",{get:function(){return this._sources.toArray().map(function(a){return null!=this.sourceRoot?d.join(this.sourceRoot,a):a},this)}}),c.prototype.__generatedMappings=null,Object.defineProperty(c.prototype,"_generatedMappings",{get:function(){return this.__generatedMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__generatedMappings}}),c.prototype.__originalMappings=null,Object.defineProperty(c.prototype,"_originalMappings",{get:function(){return this.__originalMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__originalMappings}}),c.prototype._nextCharIsMappingSeparator=function(a){var b=a.charAt(0);return";"===b||","===b},c.prototype._parseMappings=function(a){for(var b,c=1,e=0,f=0,h=0,i=0,j=0,k=a,l={};k.length>0;)if(";"===k.charAt(0))c++,k=k.slice(1),e=0;else if(","===k.charAt(0))k=k.slice(1);else{if(b={},b.generatedLine=c,g.decode(k,l),b.generatedColumn=e+l.value,e=b.generatedColumn,k=l.rest,k.length>0&&!this._nextCharIsMappingSeparator(k)){if(g.decode(k,l),b.source=this._sources.at(i+l.value),i+=l.value,k=l.rest,0===k.length||this._nextCharIsMappingSeparator(k))throw new Error("Found a source, but no line and column");if(g.decode(k,l),b.originalLine=f+l.value,f=b.originalLine,b.originalLine+=1,k=l.rest,0===k.length||this._nextCharIsMappingSeparator(k))throw new Error("Found a source and line, but no column");g.decode(k,l),b.originalColumn=h+l.value,h=b.originalColumn,k=l.rest,k.length>0&&!this._nextCharIsMappingSeparator(k)&&(g.decode(k,l),b.name=this._names.at(j+l.value),j+=l.value,k=l.rest)}this.__generatedMappings.push(b),"number"==typeof b.originalLine&&this.__originalMappings.push(b)}this.__generatedMappings.sort(d.compareByGeneratedPositions),this.__originalMappings.sort(d.compareByOriginalPositions)},c.prototype._findMapping=function(a,b,c,d,f){if(a[c]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+a[c]);if(a[d]<0)throw new TypeError("Column must be greater than or equal to 0, got "+a[d]);return e.search(a,b,f)},c.prototype.computeColumnSpans=function(){for(var a=0;a<this._generatedMappings.length;++a){var b=this._generatedMappings[a];if(a+1<this._generatedMappings.length){var c=this._generatedMappings[a+1];if(b.generatedLine===c.generatedLine){b.lastGeneratedColumn=c.generatedColumn-1;continue}}b.lastGeneratedColumn=1/0}},c.prototype.originalPositionFor=function(a){var b={generatedLine:d.getArg(a,"line"),generatedColumn:d.getArg(a,"column")},c=this._findMapping(b,this._generatedMappings,"generatedLine","generatedColumn",d.compareByGeneratedPositions);if(c>=0){var e=this._generatedMappings[c];if(e.generatedLine===b.generatedLine){var f=d.getArg(e,"source",null);return null!=f&&null!=this.sourceRoot&&(f=d.join(this.sourceRoot,f)),{source:f,line:d.getArg(e,"originalLine",null),column:d.getArg(e,"originalColumn",null),name:d.getArg(e,"name",null)}}}return{source:null,line:null,column:null,name:null}},c.prototype.sourceContentFor=function(a){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(a=d.relative(this.sourceRoot,a)),this._sources.has(a))return this.sourcesContent[this._sources.indexOf(a)];var b;if(null!=this.sourceRoot&&(b=d.urlParse(this.sourceRoot))){var c=a.replace(/^file:\/\//,"");if("file"==b.scheme&&this._sources.has(c))return this.sourcesContent[this._sources.indexOf(c)];if((!b.path||"/"==b.path)&&this._sources.has("/"+a))return this.sourcesContent[this._sources.indexOf("/"+a)]}throw new Error('"'+a+'" is not in the SourceMap.')},c.prototype.generatedPositionFor=function(a){var b={source:d.getArg(a,"source"),originalLine:d.getArg(a,"line"),originalColumn:d.getArg(a,"column")};null!=this.sourceRoot&&(b.source=d.relative(this.sourceRoot,b.source));var c=this._findMapping(b,this._originalMappings,"originalLine","originalColumn",d.compareByOriginalPositions);if(c>=0){var e=this._originalMappings[c];return{line:d.getArg(e,"generatedLine",null),column:d.getArg(e,"generatedColumn",null),lastColumn:d.getArg(e,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},c.prototype.allGeneratedPositionsFor=function(a){var b={source:d.getArg(a,"source"),originalLine:d.getArg(a,"line"),originalColumn:1/0};null!=this.sourceRoot&&(b.source=d.relative(this.sourceRoot,b.source));var c=[],e=this._findMapping(b,this._originalMappings,"originalLine","originalColumn",d.compareByOriginalPositions);if(e>=0)for(var f=this._originalMappings[e];f&&f.originalLine===b.originalLine;)c.push({line:d.getArg(f,"generatedLine",null),column:d.getArg(f,"generatedColumn",null),lastColumn:d.getArg(f,"lastGeneratedColumn",null)}),f=this._originalMappings[--e];return c.reverse()},c.GENERATED_ORDER=1,c.ORIGINAL_ORDER=2,c.prototype.eachMapping=function(a,b,e){var f,g=b||null,h=e||c.GENERATED_ORDER;switch(h){case c.GENERATED_ORDER:f=this._generatedMappings;break;case c.ORIGINAL_ORDER:f=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var i=this.sourceRoot;f.map(function(a){var b=a.source;return null!=b&&null!=i&&(b=d.join(i,b)),{source:b,generatedLine:a.generatedLine,generatedColumn:a.generatedColumn,originalLine:a.originalLine,originalColumn:a.originalColumn,name:a.name}}).forEach(a,g)},b.SourceMapConsumer=c})},{"./array-set":70,"./base64-vlq":71,"./binary-search":73,"./util":78,amdefine:79}],76:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a){a||(a={}),this._file=e.getArg(a,"file",null),this._sourceRoot=e.getArg(a,"sourceRoot",null),this._skipValidation=e.getArg(a,"skipValidation",!1),this._sources=new f,this._names=new f,this._mappings=new g,this._sourcesContents=null}var d=a("./base64-vlq"),e=a("./util"),f=a("./array-set").ArraySet,g=a("./mapping-list").MappingList;c.prototype._version=3,c.fromSourceMap=function(a){var b=a.sourceRoot,d=new c({file:a.file,sourceRoot:b});return a.eachMapping(function(a){var c={generated:{line:a.generatedLine,column:a.generatedColumn}};null!=a.source&&(c.source=a.source,null!=b&&(c.source=e.relative(b,c.source)),c.original={line:a.originalLine,column:a.originalColumn},null!=a.name&&(c.name=a.name)),d.addMapping(c)}),a.sources.forEach(function(b){var c=a.sourceContentFor(b);null!=c&&d.setSourceContent(b,c)}),d},c.prototype.addMapping=function(a){var b=e.getArg(a,"generated"),c=e.getArg(a,"original",null),d=e.getArg(a,"source",null),f=e.getArg(a,"name",null);this._skipValidation||this._validateMapping(b,c,d,f),null==d||this._sources.has(d)||this._sources.add(d),null==f||this._names.has(f)||this._names.add(f),this._mappings.add({generatedLine:b.line,generatedColumn:b.column,originalLine:null!=c&&c.line,originalColumn:null!=c&&c.column,source:d,name:f})},c.prototype.setSourceContent=function(a,b){var c=a;null!=this._sourceRoot&&(c=e.relative(this._sourceRoot,c)),null!=b?(this._sourcesContents||(this._sourcesContents={}),this._sourcesContents[e.toSetString(c)]=b):this._sourcesContents&&(delete this._sourcesContents[e.toSetString(c)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},c.prototype.applySourceMap=function(a,b,c){var d=b;if(null==b){if(null==a.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');d=a.file}var g=this._sourceRoot;null!=g&&(d=e.relative(g,d));var h=new f,i=new f;this._mappings.unsortedForEach(function(b){if(b.source===d&&null!=b.originalLine){var f=a.originalPositionFor({line:b.originalLine,column:b.originalColumn});null!=f.source&&(b.source=f.source,null!=c&&(b.source=e.join(c,b.source)),null!=g&&(b.source=e.relative(g,b.source)),b.originalLine=f.line,b.originalColumn=f.column,null!=f.name&&(b.name=f.name))}var j=b.source;null==j||h.has(j)||h.add(j);var k=b.name;null==k||i.has(k)||i.add(k)},this),this._sources=h,this._names=i,a.sources.forEach(function(b){var d=a.sourceContentFor(b);null!=d&&(null!=c&&(b=e.join(c,b)),null!=g&&(b=e.relative(g,b)),this.setSourceContent(b,d))},this)},c.prototype._validateMapping=function(a,b,c,d){if(!(a&&"line"in a&&"column"in a&&a.line>0&&a.column>=0&&!b&&!c&&!d||a&&"line"in a&&"column"in a&&b&&"line"in b&&"column"in b&&a.line>0&&a.column>=0&&b.line>0&&b.column>=0&&c))throw new Error("Invalid mapping: "+JSON.stringify({generated:a,source:c,original:b,name:d}))},c.prototype._serializeMappings=function(){for(var a,b=0,c=1,f=0,g=0,h=0,i=0,j="",k=this._mappings.toArray(),l=0,m=k.length;m>l;l++){if(a=k[l],a.generatedLine!==c)for(b=0;a.generatedLine!==c;)j+=";",c++;else if(l>0){if(!e.compareByGeneratedPositions(a,k[l-1]))continue;j+=","}j+=d.encode(a.generatedColumn-b),b=a.generatedColumn,null!=a.source&&(j+=d.encode(this._sources.indexOf(a.source)-i),i=this._sources.indexOf(a.source),j+=d.encode(a.originalLine-1-g),g=a.originalLine-1,j+=d.encode(a.originalColumn-f),f=a.originalColumn,null!=a.name&&(j+=d.encode(this._names.indexOf(a.name)-h),h=this._names.indexOf(a.name)))}return j},c.prototype._generateSourcesContent=function(a,b){return a.map(function(a){if(!this._sourcesContents)return null;null!=b&&(a=e.relative(b,a));var c=e.toSetString(a);return Object.prototype.hasOwnProperty.call(this._sourcesContents,c)?this._sourcesContents[c]:null},this)},c.prototype.toJSON=function(){var a={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(a.file=this._file),null!=this._sourceRoot&&(a.sourceRoot=this._sourceRoot),this._sourcesContents&&(a.sourcesContent=this._generateSourcesContent(a.sources,a.sourceRoot)),a},c.prototype.toString=function(){return JSON.stringify(this)},b.SourceMapGenerator=c})},{"./array-set":70,"./base64-vlq":71,"./mapping-list":74,"./util":78,amdefine:79}],77:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a,b,c,d,e){this.children=[],this.sourceContents={},this.line=null==a?null:a,this.column=null==b?null:b,this.source=null==c?null:c,this.name=null==e?null:e,this[h]=!0,null!=d&&this.add(d)}var d=a("./source-map-generator").SourceMapGenerator,e=a("./util"),f=/(\r?\n)/,g=10,h="$$$isSourceNode$$$";c.fromStringWithSourceMap=function(a,b,d){function g(a,b){if(null===a||void 0===a.source)h.add(b);else{var f=d?e.join(d,a.source):a.source;h.add(new c(a.originalLine,a.originalColumn,f,b,a.name))}}var h=new c,i=a.split(f),j=function(){var a=i.shift(),b=i.shift()||"";return a+b},k=1,l=0,m=null;return b.eachMapping(function(a){if(null!==m){if(!(k<a.generatedLine)){var b=i[0],c=b.substr(0,a.generatedColumn-l);return i[0]=b.substr(a.generatedColumn-l),l=a.generatedColumn,g(m,c),void(m=a)}var c="";g(m,j()),k++,l=0}for(;k<a.generatedLine;)h.add(j()),k++;if(l<a.generatedColumn){var b=i[0];h.add(b.substr(0,a.generatedColumn)),i[0]=b.substr(a.generatedColumn),l=a.generatedColumn}m=a},this),i.length>0&&(m&&g(m,j()),h.add(i.join(""))),b.sources.forEach(function(a){var c=b.sourceContentFor(a);null!=c&&(null!=d&&(a=e.join(d,a)),h.setSourceContent(a,c))}),h},c.prototype.add=function(a){if(Array.isArray(a))a.forEach(function(a){this.add(a)},this);else{if(!a[h]&&"string"!=typeof a)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+a);a&&this.children.push(a)}return this},c.prototype.prepend=function(a){if(Array.isArray(a))for(var b=a.length-1;b>=0;b--)this.prepend(a[b]);else{if(!a[h]&&"string"!=typeof a)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+a);this.children.unshift(a)}return this},c.prototype.walk=function(a){for(var b,c=0,d=this.children.length;d>c;c++)b=this.children[c],b[h]?b.walk(a):""!==b&&a(b,{source:this.source,line:this.line,column:this.column,name:this.name})},c.prototype.join=function(a){var b,c,d=this.children.length;if(d>0){for(b=[],c=0;d-1>c;c++)b.push(this.children[c]),b.push(a);b.push(this.children[c]),this.children=b}return this},c.prototype.replaceRight=function(a,b){var c=this.children[this.children.length-1];return c[h]?c.replaceRight(a,b):"string"==typeof c?this.children[this.children.length-1]=c.replace(a,b):this.children.push("".replace(a,b)),this},c.prototype.setSourceContent=function(a,b){this.sourceContents[e.toSetString(a)]=b},c.prototype.walkSourceContents=function(a){for(var b=0,c=this.children.length;c>b;b++)this.children[b][h]&&this.children[b].walkSourceContents(a);for(var d=Object.keys(this.sourceContents),b=0,c=d.length;c>b;b++)a(e.fromSetString(d[b]),this.sourceContents[d[b]])},c.prototype.toString=function(){var a="";return this.walk(function(b){a+=b}),a},c.prototype.toStringWithSourceMap=function(a){var b={code:"",line:1,column:0},c=new d(a),e=!1,f=null,h=null,i=null,j=null;return this.walk(function(a,d){b.code+=a,null!==d.source&&null!==d.line&&null!==d.column?((f!==d.source||h!==d.line||i!==d.column||j!==d.name)&&c.addMapping({source:d.source,original:{line:d.line,column:d.column},generated:{line:b.line,column:b.column},name:d.name}),f=d.source,h=d.line,i=d.column,j=d.name,e=!0):e&&(c.addMapping({generated:{line:b.line,column:b.column}}),f=null,e=!1);for(var k=0,l=a.length;l>k;k++)a.charCodeAt(k)===g?(b.line++,b.column=0,k+1===l?(f=null,e=!1):e&&c.addMapping({source:d.source,original:{line:d.line,column:d.column},generated:{line:b.line,column:b.column},name:d.name})):b.column++}),this.walkSourceContents(function(a,b){c.setSourceContent(a,b)}),{code:b.code,map:c}},b.SourceNode=c})},{"./source-map-generator":76,"./util":78,amdefine:79}],78:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a,b,c){if(b in a)return a[b];if(3===arguments.length)return c;throw new Error('"'+b+'" is a required argument.')}function d(a){var b=a.match(n);return b?{scheme:b[1],auth:b[2],host:b[3],port:b[4],path:b[5]}:null}function e(a){var b="";return a.scheme&&(b+=a.scheme+":"),b+="//",a.auth&&(b+=a.auth+"@"),a.host&&(b+=a.host),a.port&&(b+=":"+a.port),a.path&&(b+=a.path),b}function f(a){var b=a,c=d(a);if(c){if(!c.path)return a;b=c.path}for(var f,g="/"===b.charAt(0),h=b.split(/\/+/),i=0,j=h.length-1;j>=0;j--)f=h[j],"."===f?h.splice(j,1):".."===f?i++:i>0&&(""===f?(h.splice(j+1,i),i=0):(h.splice(j,2),i--));return b=h.join("/"),""===b&&(b=g?"/":"."),c?(c.path=b,e(c)):b}function g(a,b){""===a&&(a="."),""===b&&(b=".");var c=d(b),g=d(a);if(g&&(a=g.path||"/"),c&&!c.scheme)return g&&(c.scheme=g.scheme),e(c);if(c||b.match(o))return b;if(g&&!g.host&&!g.path)return g.host=b,e(g);var h="/"===b.charAt(0)?b:f(a.replace(/\/+$/,"")+"/"+b);return g?(g.path=h,e(g)):h}function h(a,b){""===a&&(a="."),a=a.replace(/\/$/,"");var c=d(a);return"/"==b.charAt(0)&&c&&"/"==c.path?b.slice(1):0===b.indexOf(a+"/")?b.substr(a.length+1):b}function i(a){return"$"+a}function j(a){return a.substr(1)}function k(a,b){var c=a||"",d=b||"";return(c>d)-(d>c)}function l(a,b,c){var d;return(d=k(a.source,b.source))?d:(d=a.originalLine-b.originalLine)?d:(d=a.originalColumn-b.originalColumn,d||c?d:(d=k(a.name,b.name))?d:(d=a.generatedLine-b.generatedLine,d?d:a.generatedColumn-b.generatedColumn))}function m(a,b,c){var d;return(d=a.generatedLine-b.generatedLine)?d:(d=a.generatedColumn-b.generatedColumn,d||c?d:(d=k(a.source,b.source))?d:(d=a.originalLine-b.originalLine)?d:(d=a.originalColumn-b.originalColumn,d?d:k(a.name,b.name)))}b.getArg=c;var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,o=/^data:.+\,.+$/;b.urlParse=d,b.urlGenerate=e,b.normalize=f,b.join=g,b.relative=h,b.toSetString=i,b.fromSetString=j,b.compareByOriginalPositions=l,b.compareByGeneratedPositions=m})},{amdefine:79}],79:[function(a,b){(function(c,d){"use strict";function e(b,e){function f(a){var b,c;for(b=0;a[b];b+=1)if(c=a[b],"."===c)a.splice(b,1),b-=1;else if(".."===c){if(1===b&&(".."===a[2]||".."===a[0]))break;b>0&&(a.splice(b-1,2),b-=2)}}function g(a,b){var c;return a&&"."===a.charAt(0)&&b&&(c=b.split("/"),c=c.slice(0,c.length-1),c=c.concat(a.split("/")),f(c),a=c.join("/")),a}function h(a){return function(b){return g(b,a)}}function i(a){function b(b){o[a]=b}return b.fromText=function(){throw new Error("amdefine does not implement load.fromText")},b}function j(a,c,f){var g,h,i,j;if(a)h=o[a]={},i={id:a,uri:d,exports:h},g=l(e,h,i,a);else{if(p)throw new Error("amdefine with no module ID cannot be called more than once per file.");p=!0,h=b.exports,i=b,g=l(e,h,i,b.id)}c&&(c=c.map(function(a){return g(a)})),j="function"==typeof f?f.apply(i.exports,c):f,void 0!==j&&(i.exports=j,a&&(o[a]=i.exports))}function k(a,b,c){Array.isArray(a)?(c=b,b=a,a=void 0):"string"!=typeof a&&(c=a,a=b=void 0),b&&!Array.isArray(b)&&(c=b,b=void 0),b||(b=["require","exports","module"]),a?n[a]=[a,b,c]:j(a,b,c)}var l,m,n={},o={},p=!1,q=a("path");return l=function(a,b,d,e){function f(f,g){return"string"==typeof f?m(a,b,d,f,e):(f=f.map(function(c){return m(a,b,d,c,e)}),void c.nextTick(function(){g.apply(null,f)}))}return f.toUrl=function(a){return 0===a.indexOf(".")?g(a,q.dirname(d.filename)):a},f},e=e||function(){return b.require.apply(b,arguments)},m=function(a,b,c,d,e){var f,k,p=d.indexOf("!"),q=d;if(-1===p){if(d=g(d,e),"require"===d)return l(a,b,c,e);if("exports"===d)return b;if("module"===d)return c;if(o.hasOwnProperty(d))return o[d];if(n[d])return j.apply(null,n[d]),o[d];if(a)return a(q);throw new Error("No module with ID: "+d)}return f=d.substring(0,p),d=d.substring(p+1,d.length),k=m(a,b,c,f,e),d=k.normalize?k.normalize(d,h(e)):g(d,e),o[d]?o[d]:(k.load(d,l(a,b,c,e),i(d),{}),o[d])},k.require=function(a){return o[a]?o[a]:n[a]?(j.apply(null,n[a]),o[a]):void 0},k.amd={},k}b.exports=e}).call(this,a("_process"),"/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/amdefine.js")},{_process:91,path:90}],80:[function(a,b){b.exports={name:"escodegen",description:"ECMAScript code generator",homepage:"http://github.com/estools/escodegen",main:"escodegen.js",bin:{esgenerate:"./bin/esgenerate.js",escodegen:"./bin/escodegen.js"},files:["LICENSE.BSD","LICENSE.source-map","README.md","bin","escodegen.js","package.json"],version:"1.6.1",engines:{node:">=0.10.0"},maintainers:[{name:"constellation",email:"utatane.tea@gmail.com"}],repository:{type:"git",url:"http://github.com/estools/escodegen.git"},dependencies:{estraverse:"^1.9.1",esutils:"^1.1.6",esprima:"^1.2.2",optionator:"^0.5.0","source-map":"~0.1.40"},optionalDependencies:{"source-map":"~0.1.40"},devDependencies:{"acorn-6to5":"^0.11.1-25",bluebird:"^2.3.11","bower-registry-client":"^0.2.1",chai:"^1.10.0","commonjs-everywhere":"^0.9.7","esprima-moz":"*",gulp:"^3.8.10","gulp-eslint":"^0.2.0","gulp-mocha":"^2.0.0",semver:"^4.1.0"},licenses:[{type:"BSD",url:"http://github.com/estools/escodegen/raw/master/LICENSE.BSD"}],scripts:{test:"gulp travis","unit-test":"gulp test",lint:"gulp lint",release:"node tools/release.js","build-min":"cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",build:"cjsify -a path: tools/entry-point.js > escodegen.browser.js"},gitHead:"1ca664f68dcf220b76c9dc562b2337c5e0b4227d",bugs:{url:"https://github.com/estools/escodegen/issues"},_id:"escodegen@1.6.1",_shasum:"367de17d8510540d12bc6dcb8b3f918391265815",_from:"escodegen@1.6.1",_npmVersion:"2.0.0-alpha-5",_npmUser:{name:"constellation",email:"utatane.tea@gmail.com"},dist:{shasum:"367de17d8510540d12bc6dcb8b3f918391265815",tarball:"http://registry.npmjs.org/escodegen/-/escodegen-1.6.1.tgz"},directories:{},_resolved:"https://registry.npmjs.org/escodegen/-/escodegen-1.6.1.tgz",readme:"ERROR: No README data found!"}
+},{}],81:[function(a,b,c){!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["exports"],b):b("undefined"!=typeof c?c:a.esprima={})}(this,function(a){"use strict";function b(a,b){if(!a)throw new Error("ASSERT: "+b)}function c(a){return a>=48&&57>=a}function d(a){return"0123456789abcdefABCDEF".indexOf(a)>=0}function e(a){return"01234567".indexOf(a)>=0}function f(a){return 32===a||9===a||11===a||12===a||160===a||a>=5760&&" ᠎              ".indexOf(String.fromCharCode(a))>0}function g(a){return 10===a||13===a||8232===a||8233===a}function h(a){return 36===a||95===a||a>=65&&90>=a||a>=97&&122>=a||92===a||a>=128&&wd.NonAsciiIdentifierStart.test(String.fromCharCode(a))}function i(a){return 36===a||95===a||a>=65&&90>=a||a>=97&&122>=a||a>=48&&57>=a||92===a||a>=128&&wd.NonAsciiIdentifierPart.test(String.fromCharCode(a))}function j(a){switch(a){case"class":case"enum":case"export":case"extends":case"import":case"super":return!0;default:return!1}}function k(a){switch(a){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}}function l(a){return"eval"===a||"arguments"===a}function m(a){if(Bd&&k(a))return!0;switch(a.length){case 2:return"if"===a||"in"===a||"do"===a;case 3:return"var"===a||"for"===a||"new"===a||"try"===a||"let"===a;case 4:return"this"===a||"else"===a||"case"===a||"void"===a||"with"===a||"enum"===a;case 5:return"while"===a||"break"===a||"catch"===a||"throw"===a||"const"===a||"class"===a||"super"===a;case 6:return"return"===a||"typeof"===a||"delete"===a||"switch"===a||"export"===a||"import"===a;case 7:return"default"===a||"finally"===a||"extends"===a;case 8:return"function"===a||"continue"===a||"debugger"===a;case 10:return"instanceof"===a;default:return!1}}function n(){var a,b,c;for(b=!1,c=!1;Fd>Cd;)if(a=Ad.charCodeAt(Cd),c)++Cd,g(a)&&(c=!1,13===a&&10===Ad.charCodeAt(Cd)&&++Cd,++Dd,Ed=Cd);else if(b)g(a)?(13===a&&++Cd,(13!==a||10===Ad.charCodeAt(Cd))&&(++Dd,++Cd,Ed=Cd,Cd>=Fd&&N({},vd.UnexpectedToken,"ILLEGAL"))):(a=Ad.charCodeAt(Cd++),Cd>=Fd&&N({},vd.UnexpectedToken,"ILLEGAL"),42===a&&(a=Ad.charCodeAt(Cd),47===a&&(++Cd,b=!1)));else if(47===a)if(a=Ad.charCodeAt(Cd+1),47===a)Cd+=2,c=!0;else{if(42!==a)break;Cd+=2,b=!0,Cd>=Fd&&N({},vd.UnexpectedToken,"ILLEGAL")}else if(f(a))++Cd;else{if(!g(a))break;++Cd,13===a&&10===Ad.charCodeAt(Cd)&&++Cd,++Dd,Ed=Cd}}function o(a){var b,c,e,f=0;for(c="u"===a?4:2,b=0;c>b;++b){if(!(Fd>Cd&&d(Ad[Cd])))return"";e=Ad[Cd++],f=16*f+"0123456789abcdef".indexOf(e.toLowerCase())}return String.fromCharCode(f)}function p(){var a,b,c,e;for(a=Ad[Cd],b=0,"}"===a&&N({},vd.UnexpectedToken,"ILLEGAL");Fd>Cd&&(a=Ad[Cd++],d(a));)b=16*b+"0123456789abcdef".indexOf(a.toLowerCase());return(b>1114111||"}"!==a)&&N({},vd.UnexpectedToken,"ILLEGAL"),65535>=b?String.fromCharCode(b):(c=(b-65536>>10)+55296,e=(b-65536&1023)+56320,String.fromCharCode(c,e))}function q(){var a,b;for(a=Ad.charCodeAt(Cd++),b=String.fromCharCode(a),92===a&&(117!==Ad.charCodeAt(Cd)&&N({},vd.UnexpectedToken,"ILLEGAL"),++Cd,a=o("u"),a&&"\\"!==a&&h(a.charCodeAt(0))||N({},vd.UnexpectedToken,"ILLEGAL"),b=a);Fd>Cd&&(a=Ad.charCodeAt(Cd),i(a));)++Cd,b+=String.fromCharCode(a),92===a&&(b=b.substr(0,b.length-1),117!==Ad.charCodeAt(Cd)&&N({},vd.UnexpectedToken,"ILLEGAL"),++Cd,a=o("u"),a&&"\\"!==a&&i(a.charCodeAt(0))||N({},vd.UnexpectedToken,"ILLEGAL"),b+=a);return b}function r(){var a,b;for(a=Cd++;Fd>Cd;){if(b=Ad.charCodeAt(Cd),92===b)return Cd=a,q();if(!i(b))break;++Cd}return Ad.slice(a,Cd)}function s(){var a,b,c;return a=Cd,b=92===Ad.charCodeAt(Cd)?q():r(),c=1===b.length?qd.Identifier:m(b)?qd.Keyword:"null"===b?qd.NullLiteral:"true"===b||"false"===b?qd.BooleanLiteral:qd.Identifier,{type:c,value:b,lineNumber:Dd,lineStart:Ed,range:[a,Cd]}}function t(){var a,b,c,d,e=Cd,f=Ad.charCodeAt(Cd),g=Ad[Cd];switch(f){case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++Cd,Jd.tokenize&&(40===f?Jd.openParenToken=Jd.tokens.length:123===f&&(Jd.openCurlyToken=Jd.tokens.length)),{type:qd.Punctuator,value:String.fromCharCode(f),lineNumber:Dd,lineStart:Ed,range:[e,Cd]};default:if(a=Ad.charCodeAt(Cd+1),61===a)switch(f){case 37:case 38:case 42:case 43:case 45:case 47:case 60:case 62:case 94:case 124:return Cd+=2,{type:qd.Punctuator,value:String.fromCharCode(f)+String.fromCharCode(a),lineNumber:Dd,lineStart:Ed,range:[e,Cd]};case 33:case 61:return Cd+=2,61===Ad.charCodeAt(Cd)&&++Cd,{type:qd.Punctuator,value:Ad.slice(e,Cd),lineNumber:Dd,lineStart:Ed,range:[e,Cd]}}}return b=Ad[Cd+1],c=Ad[Cd+2],d=Ad[Cd+3],">"===g&&">"===b&&">"===c&&"="===d?(Cd+=4,{type:qd.Punctuator,value:">>>=",lineNumber:Dd,lineStart:Ed,range:[e,Cd]}):">"===g&&">"===b&&">"===c?(Cd+=3,{type:qd.Punctuator,value:">>>",lineNumber:Dd,lineStart:Ed,range:[e,Cd]}):"<"===g&&"<"===b&&"="===c?(Cd+=3,{type:qd.Punctuator,value:"<<=",lineNumber:Dd,lineStart:Ed,range:[e,Cd]}):">"===g&&">"===b&&"="===c?(Cd+=3,{type:qd.Punctuator,value:">>=",lineNumber:Dd,lineStart:Ed,range:[e,Cd]}):"."===g&&"."===b&&"."===c?(Cd+=3,{type:qd.Punctuator,value:"...",lineNumber:Dd,lineStart:Ed,range:[e,Cd]}):g===b&&"+-<>&|".indexOf(g)>=0?(Cd+=2,{type:qd.Punctuator,value:g+b,lineNumber:Dd,lineStart:Ed,range:[e,Cd]}):"="===g&&">"===b?(Cd+=2,{type:qd.Punctuator,value:"=>",lineNumber:Dd,lineStart:Ed,range:[e,Cd]}):"<>=!+-*%&|^/".indexOf(g)>=0?(++Cd,{type:qd.Punctuator,value:g,lineNumber:Dd,lineStart:Ed,range:[e,Cd]}):"."===g?(++Cd,{type:qd.Punctuator,value:g,lineNumber:Dd,lineStart:Ed,range:[e,Cd]}):void N({},vd.UnexpectedToken,"ILLEGAL")}function u(a){for(var b="";Fd>Cd&&d(Ad[Cd]);)b+=Ad[Cd++];return 0===b.length&&N({},vd.UnexpectedToken,"ILLEGAL"),h(Ad.charCodeAt(Cd))&&N({},vd.UnexpectedToken,"ILLEGAL"),{type:qd.NumericLiteral,value:parseInt("0x"+b,16),lineNumber:Dd,lineStart:Ed,range:[a,Cd]}}function v(a,b){var d,f;for(e(a)?(f=!0,d="0"+Ad[Cd++]):(f=!1,++Cd,d="");Fd>Cd&&e(Ad[Cd]);)d+=Ad[Cd++];return f||0!==d.length||N({},vd.UnexpectedToken,"ILLEGAL"),(h(Ad.charCodeAt(Cd))||c(Ad.charCodeAt(Cd)))&&N({},vd.UnexpectedToken,"ILLEGAL"),{type:qd.NumericLiteral,value:parseInt(d,8),octal:f,lineNumber:Dd,lineStart:Ed,range:[b,Cd]}}function w(){var a,d,f;if(f=Ad[Cd],b(c(f.charCodeAt(0))||"."===f,"Numeric literal must start with a decimal digit or a decimal point"),d=Cd,a="","."!==f){if(a=Ad[Cd++],f=Ad[Cd],"0"===a){if("x"===f||"X"===f)return++Cd,u(d);if("b"===f||"B"===f){for(++Cd,a="";Fd>Cd&&(f=Ad[Cd],"0"===f||"1"===f);)a+=Ad[Cd++];return 0===a.length&&N({},vd.UnexpectedToken,"ILLEGAL"),Fd>Cd&&(f=Ad.charCodeAt(Cd),(h(f)||c(f))&&N({},vd.UnexpectedToken,"ILLEGAL")),{type:qd.NumericLiteral,value:parseInt(a,2),lineNumber:Dd,lineStart:Ed,range:[d,Cd]}}if("o"===f||"O"===f||e(f))return v(f,d);f&&c(f.charCodeAt(0))&&N({},vd.UnexpectedToken,"ILLEGAL")}for(;c(Ad.charCodeAt(Cd));)a+=Ad[Cd++];f=Ad[Cd]}if("."===f){for(a+=Ad[Cd++];c(Ad.charCodeAt(Cd));)a+=Ad[Cd++];f=Ad[Cd]}if("e"===f||"E"===f)if(a+=Ad[Cd++],f=Ad[Cd],("+"===f||"-"===f)&&(a+=Ad[Cd++]),c(Ad.charCodeAt(Cd)))for(;c(Ad.charCodeAt(Cd));)a+=Ad[Cd++];else N({},vd.UnexpectedToken,"ILLEGAL");return h(Ad.charCodeAt(Cd))&&N({},vd.UnexpectedToken,"ILLEGAL"),{type:qd.NumericLiteral,value:parseFloat(a),lineNumber:Dd,lineStart:Ed,range:[d,Cd]}}function x(){var a,c,d,f,h,i,j="",k=!1;for(a=Ad[Cd],b("'"===a||'"'===a,"String literal must starts with a quote"),c=Cd,++Cd;Fd>Cd;){if(d=Ad[Cd++],d===a){a="";break}if("\\"===d)if(d=Ad[Cd++],d&&g(d.charCodeAt(0)))++Dd,"\r"===d&&"\n"===Ad[Cd]&&++Cd,Ed=Cd;else switch(d){case"n":j+="\n";break;case"r":j+="\r";break;case"t":j+="	";break;case"u":case"x":"{"===Ad[Cd]?(++Cd,j+=p()):(i=Cd,h=o(d),h?j+=h:(Cd=i,j+=d));break;case"b":j+="\b";break;case"f":j+="\f";break;case"v":j+="";break;default:e(d)?(f="01234567".indexOf(d),0!==f&&(k=!0),Fd>Cd&&e(Ad[Cd])&&(k=!0,f=8*f+"01234567".indexOf(Ad[Cd++]),"0123".indexOf(d)>=0&&Fd>Cd&&e(Ad[Cd])&&(f=8*f+"01234567".indexOf(Ad[Cd++]))),j+=String.fromCharCode(f)):j+=d}else{if(g(d.charCodeAt(0)))break;j+=d}}return""!==a&&N({},vd.UnexpectedToken,"ILLEGAL"),{type:qd.StringLiteral,value:j,octal:k,lineNumber:Dd,lineStart:Ed,range:[c,Cd]}}function y(){var a,b,c,d,f,h,i,j,k="";for(c=!1,d=!1,b=Cd,++Cd;Fd>Cd;){if(a=Ad[Cd++],"`"===a){d=!0,c=!0;break}if("$"===a){if("{"===Ad[Cd]){++Cd,c=!0;break}k+=a}else if("\\"===a)if(a=Ad[Cd++],g(a.charCodeAt(0)))++Dd,"\r"===a&&"\n"===Ad[Cd]&&++Cd,Ed=Cd;else switch(a){case"n":k+="\n";break;case"r":k+="\r";break;case"t":k+="	";break;case"u":case"x":"{"===Ad[Cd]?(++Cd,k+=p()):(f=Cd,h=o(a),h?k+=h:(Cd=f,k+=a));break;case"b":k+="\b";break;case"f":k+="\f";break;case"v":k+="";break;default:e(a)?(i="01234567".indexOf(a),0!==i&&(j=!0),Fd>Cd&&e(Ad[Cd])&&(j=!0,i=8*i+"01234567".indexOf(Ad[Cd++]),"0123".indexOf(a)>=0&&Fd>Cd&&e(Ad[Cd])&&(i=8*i+"01234567".indexOf(Ad[Cd++]))),k+=String.fromCharCode(i)):k+=a}else g(a.charCodeAt(0))?(++Dd,"\r"===a&&"\n"===Ad[Cd]&&++Cd,Ed=Cd,k+="\n"):k+=a}return c||N({},vd.UnexpectedToken,"ILLEGAL"),{type:qd.Template,value:{cooked:k,raw:Ad.slice(b+1,Cd-(d?1:2))},tail:d,octal:j,lineNumber:Dd,lineStart:Ed,range:[b,Cd]}}function z(a){var b,c;return Hd=null,n(),b=a.head?"`":"}",Ad[Cd]!==b&&N({},vd.UnexpectedToken,"ILLEGAL"),c=y(),F(),c}function A(){var a,c,d,e,f,h,j,k,l=!1,m=!1;for(Hd=null,n(),d=Cd,c=Ad[Cd],b("/"===c,"Regular expression literal must start with a slash"),a=Ad[Cd++];Fd>Cd;)if(c=Ad[Cd++],a+=c,l)"]"===c&&(l=!1);else if("\\"===c)c=Ad[Cd++],g(c.charCodeAt(0))&&N({},vd.UnterminatedRegExp),a+=c;else{if("/"===c){m=!0;break}"["===c?l=!0:g(c.charCodeAt(0))&&N({},vd.UnterminatedRegExp)}for(m||N({},vd.UnterminatedRegExp),e=a.substr(1,a.length-2),f="";Fd>Cd&&(c=Ad[Cd],i(c.charCodeAt(0)));)if(++Cd,"\\"===c&&Fd>Cd)if(c=Ad[Cd],"u"===c)if(++Cd,j=Cd,c=o("u"))for(f+=c,a+="\\u";Cd>j;++j)a+=Ad[j];else Cd=j,f+="u",a+="\\u";else a+="\\";else f+=c,a+=c;k=e,f.indexOf("u")>=0&&(k=k.replace(/\\u\{([0-9a-fA-F]{5,6})\}/g,"x").replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{h=new RegExp(k)}catch(p){N({},vd.InvalidRegExp)}try{h=new RegExp(e,f)}catch(q){h=null}return F(),Jd.tokenize?{type:qd.RegularExpression,value:h,regex:{pattern:e,flags:f},lineNumber:Dd,lineStart:Ed,range:[d,Cd]}:{literal:a,value:h,regex:{pattern:e,flags:f},range:[d,Cd]}}function B(a){return a.type===qd.Identifier||a.type===qd.Keyword||a.type===qd.BooleanLiteral||a.type===qd.NullLiteral}function C(){var a,b;if(a=Jd.tokens[Jd.tokens.length-1],!a)return A();if("Punctuator"===a.type){if(")"===a.value)return b=Jd.tokens[Jd.openParenToken-1],!b||"Keyword"!==b.type||"if"!==b.value&&"while"!==b.value&&"for"!==b.value&&"with"!==b.value?t():A();if("}"===a.value){if(Jd.tokens[Jd.openCurlyToken-3]&&"Keyword"===Jd.tokens[Jd.openCurlyToken-3].type){if(b=Jd.tokens[Jd.openCurlyToken-4],!b)return t()}else{if(!Jd.tokens[Jd.openCurlyToken-4]||"Keyword"!==Jd.tokens[Jd.openCurlyToken-4].type)return t();if(b=Jd.tokens[Jd.openCurlyToken-5],!b)return A()}return sd.indexOf(b.value)>=0?t():A()}return A()}return"Keyword"===a.type?A():t()}function D(){var a;return Id.inXJSChild||n(),Cd>=Fd?{type:qd.EOF,lineNumber:Dd,lineStart:Ed,range:[Cd,Cd]}:Id.inXJSChild?Vc():(a=Ad.charCodeAt(Cd),40===a||41===a||58===a?t():39===a||34===a?Id.inXJSTag?Uc():x():Id.inXJSTag&&Pc(a)?Rc():96===a?y():h(a)?s():46===a?c(Ad.charCodeAt(Cd+1))?w():t():c(a)?w():Jd.tokenize&&47===a?C():t())}function E(){var a;return a=Hd,Cd=a.range[1],Dd=a.lineNumber,Ed=a.lineStart,Hd=D(),Cd=a.range[1],Dd=a.lineNumber,Ed=a.lineStart,a}function F(){var a,b,c;a=Cd,b=Dd,c=Ed,Hd=D(),Cd=a,Dd=b,Ed=c}function G(){var a,b,c,d,e;return a="function"==typeof Jd.advance?Jd.advance:D,b=Cd,c=Dd,d=Ed,null===Hd&&(Hd=a()),Cd=Hd.range[1],Dd=Hd.lineNumber,Ed=Hd.lineStart,e=a(),Cd=b,Dd=c,Ed=d,e}function H(a){Cd=a.range[0],Dd=a.lineNumber,Ed=a.lineStart,Hd=a}function I(){return Jd.loc||Jd.range?(n(),{offset:Cd,line:Dd,col:Cd-Ed}):void 0}function J(){return Jd.loc||Jd.range?{offset:Cd,line:Dd,col:Cd-Ed}:void 0}function K(a){var b,c,d=Jd.bottomRightStack,e=d[d.length-1];if(!(a.type===td.Program&&a.body.length>0)){if(Jd.trailingComments.length>0?Jd.trailingComments[0].range[0]>=a.range[1]?(c=Jd.trailingComments,Jd.trailingComments=[]):Jd.trailingComments.length=0:e&&e.trailingComments&&e.trailingComments[0].range[0]>=a.range[1]&&(c=e.trailingComments,delete e.trailingComments),e)for(;e&&e.range[0]>=a.range[0];)b=e,e=d.pop();b?b.leadingComments&&b.leadingComments[b.leadingComments.length-1].range[1]<=a.range[0]&&(a.leadingComments=b.leadingComments,delete b.leadingComments):Jd.leadingComments.length>0&&Jd.leadingComments[Jd.leadingComments.length-1].range[1]<=a.range[0]&&(a.leadingComments=Jd.leadingComments,Jd.leadingComments=[]),c&&(a.trailingComments=c),d.push(a)}}function L(a,b){return Jd.range&&(b.range=[a.offset,Cd]),Jd.loc&&(b.loc={start:{line:a.line,column:a.col},end:{line:Dd,column:Cd-Ed}},b=Gd.postProcess(b)),Jd.attachComment&&K(b),b}function M(){var a,b,c,d;return a=Cd,b=Dd,c=Ed,n(),d=Dd!==b,Cd=a,Dd=b,Ed=c,d}function N(a,c){var d,e=Array.prototype.slice.call(arguments,2),f=c.replace(/%(\d)/g,function(a,c){return b(c<e.length,"Message reference must be in range"),e[c]});throw"number"==typeof a.lineNumber?(d=new Error("Line "+a.lineNumber+": "+f),d.index=a.range[0],d.lineNumber=a.lineNumber,d.column=a.range[0]-Ed+1):(d=new Error("Line "+Dd+": "+f),d.index=Cd,d.lineNumber=Dd,d.column=Cd-Ed+1),d.description=f,d}function O(){try{N.apply(null,arguments)}catch(a){if(!Jd.errors)throw a;Jd.errors.push(a)}}function P(a){if(a.type===qd.EOF&&N(a,vd.UnexpectedEOS),a.type===qd.NumericLiteral&&N(a,vd.UnexpectedNumber),(a.type===qd.StringLiteral||a.type===qd.XJSText)&&N(a,vd.UnexpectedString),a.type===qd.Identifier&&N(a,vd.UnexpectedIdentifier),a.type===qd.Keyword){if(j(a.value))N(a,vd.UnexpectedReserved);else if(Bd&&k(a.value))return void O(a,vd.StrictReservedWord);N(a,vd.UnexpectedToken,a.value)}a.type===qd.Template&&N(a,vd.UnexpectedTemplate,a.value.raw),N(a,vd.UnexpectedToken,a.value)}function Q(a){var b=E();(b.type!==qd.Punctuator||b.value!==a)&&P(b)}function R(a,b){var c=E();(c.type!==(b?qd.Identifier:qd.Keyword)||c.value!==a)&&P(c)}function S(a){return R(a,!0)}function T(a){return Hd.type===qd.Punctuator&&Hd.value===a}function U(a,b){var c=b?qd.Identifier:qd.Keyword;return Hd.type===c&&Hd.value===a}function V(a){return U(a,!0)}function W(){var a;return Hd.type!==qd.Punctuator?!1:(a=Hd.value,"="===a||"*="===a||"/="===a||"%="===a||"+="===a||"-="===a||"<<="===a||">>="===a||">>>="===a||"&="===a||"^="===a||"|="===a)}function X(){return Id.yieldAllowed&&U("yield",!Bd)}function Y(){var a=Hd,b=!1;return V("async")&&(E(),b=!M(),H(a)),b}function Z(){return Id.awaitAllowed&&V("await")}function $(){var a,b=Cd,c=Dd,d=Ed,e=Hd;return 59===Ad.charCodeAt(Cd)?void E():(a=Dd,n(),Dd!==a?(Cd=b,Dd=c,Ed=d,void(Hd=e)):T(";")?void E():void(Hd.type===qd.EOF||T("}")||P(Hd)))}function _(a){return a.type===td.Identifier||a.type===td.MemberExpression}function ab(a){return _(a)||a.type===td.ObjectPattern||a.type===td.ArrayPattern}function bb(){var a,b=[],c=[],d=null,e=!0,f=I();for(Q("[");!T("]");)"for"===Hd.value&&Hd.type===qd.Keyword?(e||N({},vd.ComprehensionError),U("for"),a=hc({ignoreBody:!0}),a.of=a.type===td.ForOfStatement,a.type=td.ComprehensionBlock,a.left.kind&&N({},vd.ComprehensionError),c.push(a)):"if"===Hd.value&&Hd.type===qd.Keyword?(e||N({},vd.ComprehensionError),R("if"),Q("("),d=Fb(),Q(")")):","===Hd.value&&Hd.type===qd.Punctuator?(e=!1,E(),b.push(null)):(a=ob(),b.push(a),a&&a.type===td.SpreadElement?T("]")||N({},vd.ElementAfterSpreadElement):T("]")||U("for")||U("if")||(Q(","),e=!1));return Q("]"),d&&!c.length&&N({},vd.ComprehensionRequiresBlock),c.length?(1!==b.length&&N({},vd.ComprehensionError),L(f,Gd.createComprehensionExpression(d,c,b[0]))):L(f,Gd.createArrayExpression(b))}function cb(a){var b,c,d,e,f,g,h=I();return b=Bd,c=Id.yieldAllowed,Id.yieldAllowed=a.generator,d=Id.awaitAllowed,Id.awaitAllowed=a.async,e=a.params||[],f=a.defaults||[],g=tc(),a.name&&Bd&&l(e[0].name)&&O(a.name,vd.StrictParamName),Bd=b,Id.yieldAllowed=c,Id.awaitAllowed=d,L(h,Gd.createFunctionExpression(null,e,f,g,a.rest||null,a.generator,g.type!==td.BlockStatement,a.async,a.returnType,a.parametricType))}function db(a){var b,c,d;return b=Bd,Bd=!0,c=xc(),c.stricted&&O(c.stricted,c.message),d=cb({params:c.params,defaults:c.defaults,rest:c.rest,generator:a.generator,async:a.async,returnType:c.returnType,parametricType:a.parametricType}),Bd=b,d}function eb(){var a,b,c=I(),d=E();return d.type===qd.StringLiteral||d.type===qd.NumericLiteral?(Bd&&d.octal&&O(d,vd.StrictOctalLiteral),L(c,Gd.createLiteral(d))):d.type===qd.Punctuator&&"["===d.value?(c=I(),a=Eb(),b=L(c,a),Q("]"),b):L(c,Gd.createIdentifier(d.value))}function fb(){var a,b,c,d,e,f=I();return a=Hd,e="["===a.value,a.type===qd.Identifier||e||Y()?(c=eb(),T(":")?(E(),L(f,Gd.createProperty("init",c,Eb(),!1,!1,e))):T("(")?L(f,Gd.createProperty("init",c,db({generator:!1,async:!1}),!0,!1,e)):"get"===a.value?(e="["===Hd.value,b=eb(),Q("("),Q(")"),L(f,Gd.createProperty("get",b,cb({generator:!1,async:!1}),!1,!1,e))):"set"===a.value?(e="["===Hd.value,b=eb(),Q("("),a=Hd,d=[Pb()],Q(")"),L(f,Gd.createProperty("set",b,cb({params:d,generator:!1,async:!1,name:a}),!1,!1,e))):"async"===a.value?(e="["===Hd.value,b=eb(),L(f,Gd.createProperty("init",b,db({generator:!1,async:!0}),!0,!1,e))):(e&&P(Hd),L(f,Gd.createProperty("init",c,c,!1,!0,!1)))):a.type===qd.EOF||a.type===qd.Punctuator?(T("*")||P(a),E(),e=Hd.type===qd.Punctuator&&"["===Hd.value,c=eb(),T("(")||P(E()),L(f,Gd.createProperty("init",c,db({generator:!0}),!0,!1,e))):(b=eb(),T(":")?(E(),L(f,Gd.createProperty("init",b,Eb(),!1,!1,!1))):T("(")?L(f,Gd.createProperty("init",b,db({generator:!1}),!0,!1,!1)):void P(E()))}function gb(){var a=I();return Q("..."),L(a,Gd.createSpreadProperty(Eb()))}function hb(){var a,b,c,d,e=[],f={},g=String,h=I();for(Q("{");!T("}");)T("...")?a=gb():(a=fb(),b=a.key.type===td.Identifier?a.key.name:g(a.key.value),d="init"===a.kind?ud.Data:"get"===a.kind?ud.Get:ud.Set,c="$"+b,Object.prototype.hasOwnProperty.call(f,c)?(f[c]===ud.Data?Bd&&d===ud.Data?O({},vd.StrictDuplicateProperty):d!==ud.Data&&O({},vd.AccessorDataProperty):d===ud.Data?O({},vd.AccessorDataProperty):f[c]&d&&O({},vd.AccessorGetSet),f[c]|=d):f[c]=d),e.push(a),T("}")||Q(",");return Q("}"),L(h,Gd.createObjectExpression(e))}function ib(a){var b=I(),c=z(a);return Bd&&c.octal&&N(c,vd.StrictOctalLiteral),L(b,Gd.createTemplateElement({raw:c.value.raw,cooked:c.value.cooked},c.tail))}function jb(){var a,b,c,d=I();for(a=ib({head:!0}),b=[a],c=[];!a.tail;)c.push(Fb()),a=ib({head:!1}),b.push(a);return L(d,Gd.createTemplateLiteral(b,c))}function kb(){var a;return Q("("),++Id.parenthesizedCount,a=Fb(),Q(")"),a}function lb(){var a;return Y()&&(a=G(),a.type===qd.Keyword&&"function"===a.value)?!0:!1}function mb(){var a,b,c;if(b=Hd.type,b===qd.Identifier)return a=I(),L(a,Gd.createIdentifier(E().value));if(b===qd.StringLiteral||b===qd.NumericLiteral)return Bd&&Hd.octal&&O(Hd,vd.StrictOctalLiteral),a=I(),L(a,Gd.createLiteral(E()));if(b===qd.Keyword){if(U("this"))return a=I(),E(),L(a,Gd.createThisExpression());if(U("function"))return zc();if(U("class"))return Gc();if(U("super"))return a=I(),E(),L(a,Gd.createIdentifier("super"))}return b===qd.BooleanLiteral?(a=I(),c=E(),c.value="true"===c.value,L(a,Gd.createLiteral(c))):b===qd.NullLiteral?(a=I(),c=E(),c.value=null,L(a,Gd.createLiteral(c))):T("[")?bb():T("{")?hb():T("(")?kb():T("/")||T("/=")?(a=I(),L(a,Gd.createLiteral(A()))):b===qd.Template?jb():T("<")?hd():void P(E())}function nb(){var a,b=[];if(Q("("),!T(")"))for(;Fd>Cd&&(a=ob(),b.push(a),!T(")"));)a.type===td.SpreadElement&&N({},vd.ElementAfterSpreadElement),Q(",");return Q(")"),b}function ob(){if(T("...")){var a=I();return E(),L(a,Gd.createSpreadElement(Eb()))}return Eb()}function pb(){var a=I(),b=E();return B(b)||P(b),L(a,Gd.createIdentifier(b.value))}function qb(){return Q("."),pb()}function rb(){var a;return Q("["),a=Fb(),Q("]"),a}function sb(){var a,b,c=I();return R("new"),a=ub(),b=T("(")?nb():[],L(c,Gd.createNewExpression(a,b))}function tb(){var a,b,c=I();for(a=U("new")?sb():mb();T(".")||T("[")||T("(")||Hd.type===qd.Template;)T("(")?(b=nb(),a=L(c,Gd.createCallExpression(a,b))):a=T("[")?L(c,Gd.createMemberExpression("[",a,rb())):T(".")?L(c,Gd.createMemberExpression(".",a,qb())):L(c,Gd.createTaggedTemplateExpression(a,jb()));return a}function ub(){var a,b=I();for(a=U("new")?sb():mb();T(".")||T("[")||Hd.type===qd.Template;)a=T("[")?L(b,Gd.createMemberExpression("[",a,rb())):T(".")?L(b,Gd.createMemberExpression(".",a,qb())):L(b,Gd.createTaggedTemplateExpression(a,jb()));return a}function vb(){var a,b=I(),c=tb();return Hd.type!==qd.Punctuator?c:(!T("++")&&!T("--")||M()||(Bd&&c.type===td.Identifier&&l(c.name)&&O({},vd.StrictLHSPostfix),_(c)||N({},vd.InvalidLHSInAssignment),a=E(),c=L(b,Gd.createPostfixExpression(a.value,c))),c)}function wb(){var a,b,c;return Hd.type!==qd.Punctuator&&Hd.type!==qd.Keyword?vb():T("++")||T("--")?(a=I(),b=E(),c=wb(),Bd&&c.type===td.Identifier&&l(c.name)&&O({},vd.StrictLHSPrefix),_(c)||N({},vd.InvalidLHSInAssignment),L(a,Gd.createUnaryExpression(b.value,c))):T("+")||T("-")||T("~")||T("!")?(a=I(),b=E(),c=wb(),L(a,Gd.createUnaryExpression(b.value,c))):U("delete")||U("void")||U("typeof")?(a=I(),b=E(),c=wb(),c=L(a,Gd.createUnaryExpression(b.value,c)),Bd&&"delete"===c.operator&&c.argument.type===td.Identifier&&O({},vd.StrictDelete),c):vb()}function xb(a,b){var c=0;if(a.type!==qd.Punctuator&&a.type!==qd.Keyword)return 0;switch(a.value){case"||":c=1;break;case"&&":c=2;break;case"|":c=3;break;case"^":c=4;break;case"&":c=5;break;case"==":case"!=":case"===":case"!==":c=6;break;case"<":case">":case"<=":case">=":case"instanceof":c=7;break;case"in":c=b?7:0;break;case"<<":case">>":case">>>":c=8;break;case"+":case"-":c=9;break;case"*":case"/":case"%":c=11}return c}function yb(){var a,b,c,d,e,f,g,h,i,j,k;if(d=Id.allowIn,Id.allowIn=!0,j=I(),h=wb(),b=Hd,c=xb(b,d),0===c)return h;for(b.prec=c,E(),k=[j,I()],f=wb(),e=[h,b,f];(c=xb(Hd,d))>0;){for(;e.length>2&&c<=e[e.length-2].prec;)f=e.pop(),g=e.pop().value,h=e.pop(),a=Gd.createBinaryExpression(g,h,f),k.pop(),j=k.pop(),L(j,a),e.push(a),k.push(j);b=E(),b.prec=c,e.push(b),k.push(I()),a=wb(),e.push(a)}for(Id.allowIn=d,i=e.length-1,a=e[i],k.pop();i>1;)a=Gd.createBinaryExpression(e[i-1].value,e[i-2],a),i-=2,j=k.pop(),L(j,a);return a}function zb(){var a,b,c,d,e=I();return a=yb(),T("?")&&(E(),b=Id.allowIn,Id.allowIn=!0,c=Eb(),Id.allowIn=b,Q(":"),d=Eb(),a=L(e,Gd.createConditionalExpression(a,c,d))),a}function Ab(a){var b,c,d,e;if(a.type===td.ObjectExpression)for(a.type=td.ObjectPattern,b=0,c=a.properties.length;c>b;b+=1)d=a.properties[b],d.type===td.SpreadProperty?(c-1>b&&N({},vd.PropertyAfterSpreadProperty),Ab(d.argument)):("init"!==d.kind&&N({},vd.InvalidLHSInAssignment),Ab(d.value));else if(a.type===td.ArrayExpression)for(a.type=td.ArrayPattern,b=0,c=a.elements.length;c>b;b+=1)e=a.elements[b],e&&Ab(e);else a.type===td.Identifier?l(a.name)&&N({},vd.InvalidLHSInAssignment):a.type===td.SpreadElement?(Ab(a.argument),a.argument.type===td.ObjectPattern&&N({},vd.ObjectPatternAsSpread)):a.type!==td.MemberExpression&&a.type!==td.CallExpression&&a.type!==td.NewExpression&&N({},vd.InvalidLHSInAssignment)}function Bb(a,b){var c,d,e,f;if(b.type===td.ObjectExpression)for(b.type=td.ObjectPattern,c=0,d=b.properties.length;d>c;c+=1)e=b.properties[c],e.type===td.SpreadProperty?(d-1>c&&N({},vd.PropertyAfterSpreadProperty),Bb(a,e.argument)):("init"!==e.kind&&N({},vd.InvalidLHSInFormalsList),Bb(a,e.value));else if(b.type===td.ArrayExpression)for(b.type=td.ArrayPattern,c=0,d=b.elements.length;d>c;c+=1)f=b.elements[c],f&&Bb(a,f);else b.type===td.Identifier?vc(a,b,b.name):b.type!==td.MemberExpression&&N({},vd.InvalidLHSInFormalsList)}function Cb(a){var c,d,e,f,g,h,i,j;for(f=[],g=[],h=0,j=null,i={paramSet:{}},c=0,d=a.length;d>c;c+=1)if(e=a[c],e.type===td.Identifier)f.push(e),g.push(null),vc(i,e,e.name);else if(e.type===td.ObjectExpression||e.type===td.ArrayExpression)Bb(i,e),f.push(e),g.push(null);else if(e.type===td.SpreadElement)b(c===d-1,"It is guaranteed that SpreadElement is last element by parseExpression"),Bb(i,e.argument),j=e.argument;else{if(e.type!==td.AssignmentExpression)return null;f.push(e.left),g.push(e.right),++h,vc(i,e.left,e.left.name)}return i.message===vd.StrictParamDupe&&N(Bd?i.stricted:i.firstRestricted,i.message),0===h&&(g=[]),{params:f,defaults:g,rest:j,stricted:i.stricted,firstRestricted:i.firstRestricted,message:i.message}}function Db(a,b){var c,d,e,f;return Q("=>"),c=Bd,d=Id.yieldAllowed,Id.yieldAllowed=!1,e=Id.awaitAllowed,Id.awaitAllowed=!!a.async,f=tc(),Bd&&a.firstRestricted&&N(a.firstRestricted,a.message),Bd&&a.stricted&&O(a.stricted,a.message),Bd=c,Id.yieldAllowed=d,Id.awaitAllowed=e,L(b,Gd.createArrowFunctionExpression(a.params,a.defaults,f,a.rest,f.type!==td.BlockStatement,!!a.async))}function Eb(){var a,b,c,d,e,f=Hd,g=!1;return X()?Ac():Z()?Bc():(e=Id.parenthesizedCount,a=I(),lb()?zc():(Y()&&(g=!0,E()),T("(")&&(c=G(),c.type===qd.Punctuator&&")"===c.value||"..."===c.value)?(d=xc(),T("=>")||P(E()),d.async=g,Db(d,a)):(c=Hd,g&&!T("(")&&c.type!==qd.Identifier&&(g=!1,H(f)),b=zb(),T("=>")&&(Id.parenthesizedCount===e||Id.parenthesizedCount===e+1)&&(b.type===td.Identifier?d=Cb([b]):b.type===td.SequenceExpression&&(d=Cb(b.expressions)),d)?(d.async=g,Db(d,a)):(g&&(g=!1,H(f),b=zb()),W()&&(Bd&&b.type===td.Identifier&&l(b.name)&&O(c,vd.StrictLHSAssignment),!T("=")||b.type!==td.ObjectExpression&&b.type!==td.ArrayExpression?_(b)||N({},vd.InvalidLHSInAssignment):Ab(b),b=L(a,Gd.createAssignmentExpression(E().value,b,Eb()))),b))))}function Fb(){var a,b,c,d,e,f,g;if(g=Id.parenthesizedCount,a=I(),b=Eb(),c=[b],T(",")){for(;Fd>Cd&&T(",");)if(E(),b=ob(),c.push(b),b.type===td.SpreadElement){f=!0,T(")")||N({},vd.ElementAfterSpreadElement);break}d=L(a,Gd.createSequenceExpression(c))}if(T("=>")){if((Id.parenthesizedCount===g||Id.parenthesizedCount===g+1)&&(b=b.type===td.SequenceExpression?b.expressions:c,e=Cb(b)))return Db(e,a);P(E())}return f&&"=>"!==G().value&&N({},vd.IllegalSpread),d||b}function Gb(){for(var a,b=[];Fd>Cd&&!T("}")&&(a=Ic(),"undefined"!=typeof a);)b.push(a);return b}function Hb(){var a,b=I();return Q("{"),a=Gb(),Q("}"),L(b,Gd.createBlockStatement(a))}function Ib(a){var b,c,d,e,f=[];for(Q("{");!T("}");)c=I(),d=eb(),b=T("("),e=Nb(),f.push(L(c,Gd.createProperty("init",d,e,b,!1))),T("}")||(T(",")||T(";")?E():P(Hd));return Q("}"),Gd.createObjectTypeAnnotation(f,a)}function Jb(){var a=I();return R("void"),L(a,Gd.createVoidTypeAnnotation())}function Kb(){var a=I(),b=[];for(Q("<");!T(">");)b.push(Ob()),T(">")||Q(",");return Q(">"),L(a,Gd.createParametricTypeAnnotation(b))}function Lb(){var a,b=null,c=null,d=null,e=!1,f=I(),g=null;if(T("?")&&(E(),e=!0),T("{"))return L(f,Ib(e));if(Hd.type===qd.Identifier)b=Ob(),T("<")&&(a=Kb());else if(T("(")){for(E(),c=[];Hd.type===qd.Identifier||T("?");)c.push(Pb(!0,!0)),T(")")||Q(",");Q(")"),g=I(),Q("=>"),d=Nb(!0)}else{if(U("void"))return L(f,Jb());P(Hd)}return L(f,Gd.createTypeAnnotation(b,a,c,d,e))}function Mb(a){for(;T("|");)E(),a.push(Lb());return Gd.createUnionTypeAnnotation(a)}function Nb(a){var b,c=I();return a||Q(":"),b=Lb(c),T("|")&&(b=Mb([b])),L(c,b)}function Ob(){var a=I(),b=E();return b.type!==qd.Identifier&&P(b),L(a,Gd.createIdentifier(b.value))}function Pb(a,b){var c=I(),d=Ob(),e=!1;return b&&T("?")&&(Q("?"),e=!0),(a||T(":"))&&(d=L(c,Gd.createTypeAnnotatedIdentifier(d,Nb()))),e&&(d=L(c,Gd.createOptionalParameter(d))),d}function Qb(a){var b,c=I(),d=null;return T("{")?(b=hb(),Ab(b)):T("[")?(b=bb(),Ab(b)):(b=Id.allowKeyword?pb():Pb(),Bd&&l(b.name)&&O({},vd.StrictVarName)),"const"===a?(T("=")||N({},vd.NoUnintializedConst),Q("="),d=Eb()):T("=")&&(E(),d=Eb()),L(c,Gd.createVariableDeclarator(b,d))}function Rb(a){var b=[];do{if(b.push(Qb(a)),!T(","))break;E()}while(Fd>Cd);return b}function Sb(){var a,b=I();return R("var"),a=Rb(),$(),L(b,Gd.createVariableDeclaration(a,"var"))}function Tb(a){var b,c=I();return R(a),b=Rb(a),$(),L(c,Gd.createVariableDeclaration(b,a))}function Ub(){var a,b=I();return Hd.type!==qd.StringLiteral&&N({},vd.InvalidModuleSpecifier),a=Gd.createModuleSpecifier(Hd),E(),L(b,a)}function Vb(){var a=I();return Q("*"),L(a,Gd.createExportBatchSpecifier())}function Wb(){var a,b=null,c=I();return U("default")?(E(),a=L(c,Gd.createIdentifier("default"))):a=Ob(),V("as")&&(E(),b=pb()),L(c,Gd.createExportSpecifier(a,b))}function Xb(){var a,b,c,d=null,e=null,f=[],g=I();if(R("export"),U("default")){if(E(),U("function")||U("class")){if(a=Hd,E(),B(Hd))return b=pb(),H(a),L(g,Gd.createExportDeclaration(!0,Ic(),[b],null));switch(H(a),Hd.value){case"class":return L(g,Gd.createExportDeclaration(!0,Gc(),[],null));case"function":return L(g,Gd.createExportDeclaration(!0,zc(),[],null))}}return V("from")&&N({},vd.UnexpectedToken,Hd.value),d=T("{")?hb():T("[")?bb():Eb(),$(),L(g,Gd.createExportDeclaration(!0,d,[],null))}if(Hd.type===qd.Keyword)switch(Hd.value){case"let":case"const":case"var":case"class":case"function":return L(g,Gd.createExportDeclaration(!1,Ic(),f,null))}if(T("*"))return f.push(Vb()),V("from")||N({},Hd.value?vd.UnexpectedToken:vd.MissingFromClause,Hd.value),E(),e=Ub(),$(),L(g,Gd.createExportDeclaration(!1,null,f,e));Q("{");do c=c||U("default"),f.push(Wb());while(T(",")&&E());return Q("}"),V("from")?(E(),e=Ub(),$()):c?N({},Hd.value?vd.UnexpectedToken:vd.MissingFromClause,Hd.value):$(),L(g,Gd.createExportDeclaration(!1,d,f,e))}function Yb(){var a,b=null,c=I();return a=pb(),V("as")&&(E(),b=Ob()),L(c,Gd.createImportSpecifier(a,b))}function Zb(){var a=[];Q("{");do a.push(Yb());while(T(",")&&E());return Q("}"),a}function $b(){var a,b=I();return a=pb(),L(b,Gd.createImportDefaultSpecifier(a))}function _b(){var a,b=I();return Q("*"),V("as")||N({},vd.NoAsAfterImportNamespace),E(),a=pb(),L(b,Gd.createImportNamespaceSpecifier(a))}function ac(){var a,b,c=I();return R("import"),a=[],Hd.type===qd.StringLiteral?(b=Ub(),$(),L(c,Gd.createImportDeclaration(a,b))):(!U("default")&&B(Hd)&&(a.push($b()),T(",")&&E()),T("*")?a.push(_b()):T("{")&&(a=a.concat(Zb())),V("from")||N({},Hd.value?vd.UnexpectedToken:vd.MissingFromClause,Hd.value),E(),b=Ub(),$(),L(c,Gd.createImportDeclaration(a,b)))}function bc(){var a=I();return Q(";"),L(a,Gd.createEmptyStatement())}function cc(){var a=I(),b=Fb();return $(),L(a,Gd.createExpressionStatement(b))}function dc(){var a,b,c,d=I();return R("if"),Q("("),a=Fb(),Q(")"),b=sc(),U("else")?(E(),c=sc()):c=null,L(d,Gd.createIfStatement(a,b,c))}function ec(){var a,b,c,d=I();return R("do"),c=Id.inIteration,Id.inIteration=!0,a=sc(),Id.inIteration=c,R("while"),Q("("),b=Fb(),Q(")"),T(";")&&E(),L(d,Gd.createDoWhileStatement(a,b))}function fc(){var a,b,c,d=I();return R("while"),Q("("),a=Fb(),Q(")"),c=Id.inIteration,Id.inIteration=!0,b=sc(),Id.inIteration=c,L(d,Gd.createWhileStatement(a,b))}function gc(){var a=I(),b=E(),c=Rb();return L(a,Gd.createVariableDeclaration(c,b.value))}function hc(a){var b,c,d,e,f,g,h,i,j=I();return b=c=d=null,R("for"),V("each")&&N({},vd.EachNotAllowed),Q("("),T(";")?E():(U("var")||U("let")||U("const")?(Id.allowIn=!1,b=gc(),Id.allowIn=!0,1===b.declarations.length&&(U("in")||V("of"))&&(h=Hd,("in"!==h.value&&"var"===b.kind||!b.declarations[0].init)&&(E(),e=b,f=Fb(),b=null))):(Id.allowIn=!1,b=Fb(),Id.allowIn=!0,V("of")?(h=E(),e=b,f=Fb(),b=null):U("in")&&(ab(b)||N({},vd.InvalidLHSInForIn),h=E(),e=b,f=Fb(),b=null)),"undefined"==typeof e&&Q(";")),"undefined"==typeof e&&(T(";")||(c=Fb()),Q(";"),T(")")||(d=Fb())),Q(")"),i=Id.inIteration,Id.inIteration=!0,void 0!==a&&a.ignoreBody||(g=sc()),Id.inIteration=i,"undefined"==typeof e?L(j,Gd.createForStatement(b,c,d,g)):"in"===h.value?L(j,Gd.createForInStatement(e,f,g)):L(j,Gd.createForOfStatement(e,f,g))}function ic(){var a,b=null,c=I();return R("continue"),59===Ad.charCodeAt(Cd)?(E(),Id.inIteration||N({},vd.IllegalContinue),L(c,Gd.createContinueStatement(null))):M()?(Id.inIteration||N({},vd.IllegalContinue),L(c,Gd.createContinueStatement(null))):(Hd.type===qd.Identifier&&(b=Ob(),a="$"+b.name,Object.prototype.hasOwnProperty.call(Id.labelSet,a)||N({},vd.UnknownLabel,b.name)),$(),null!==b||Id.inIteration||N({},vd.IllegalContinue),L(c,Gd.createContinueStatement(b)))
+}function jc(){var a,b=null,c=I();return R("break"),59===Ad.charCodeAt(Cd)?(E(),Id.inIteration||Id.inSwitch||N({},vd.IllegalBreak),L(c,Gd.createBreakStatement(null))):M()?(Id.inIteration||Id.inSwitch||N({},vd.IllegalBreak),L(c,Gd.createBreakStatement(null))):(Hd.type===qd.Identifier&&(b=Ob(),a="$"+b.name,Object.prototype.hasOwnProperty.call(Id.labelSet,a)||N({},vd.UnknownLabel,b.name)),$(),null!==b||Id.inIteration||Id.inSwitch||N({},vd.IllegalBreak),L(c,Gd.createBreakStatement(b)))}function kc(){var a=null,b=I();return R("return"),Id.inFunctionBody||O({},vd.IllegalReturn),32===Ad.charCodeAt(Cd)&&h(Ad.charCodeAt(Cd+1))?(a=Fb(),$(),L(b,Gd.createReturnStatement(a))):M()?L(b,Gd.createReturnStatement(null)):(T(";")||T("}")||Hd.type===qd.EOF||(a=Fb()),$(),L(b,Gd.createReturnStatement(a)))}function lc(){var a,b,c=I();return Bd&&O({},vd.StrictModeWith),R("with"),Q("("),a=Fb(),Q(")"),b=sc(),L(c,Gd.createWithStatement(a,b))}function mc(){var a,b,c=[],d=I();for(U("default")?(E(),a=null):(R("case"),a=Fb()),Q(":");Fd>Cd&&!(T("}")||U("default")||U("case"))&&(b=Ic(),"undefined"!=typeof b);)c.push(b);return L(d,Gd.createSwitchCase(a,c))}function nc(){var a,b,c,d,e,f=I();if(R("switch"),Q("("),a=Fb(),Q(")"),Q("{"),b=[],T("}"))return E(),L(f,Gd.createSwitchStatement(a,b));for(d=Id.inSwitch,Id.inSwitch=!0,e=!1;Fd>Cd&&!T("}");)c=mc(),null===c.test&&(e&&N({},vd.MultipleDefaultsInSwitch),e=!0),b.push(c);return Id.inSwitch=d,Q("}"),L(f,Gd.createSwitchStatement(a,b))}function oc(){var a,b=I();return R("throw"),M()&&N({},vd.NewlineAfterThrow),a=Fb(),$(),L(b,Gd.createThrowStatement(a))}function pc(){var a,b,c=I();return R("catch"),Q("("),T(")")&&P(Hd),a=Fb(),Bd&&a.type===td.Identifier&&l(a.name)&&O({},vd.StrictCatchVariable),Q(")"),b=Hb(),L(c,Gd.createCatchClause(a,b))}function qc(){var a,b=[],c=null,d=I();return R("try"),a=Hb(),U("catch")&&b.push(pc()),U("finally")&&(E(),c=Hb()),0!==b.length||c||N({},vd.NoCatchOrFinally),L(d,Gd.createTryStatement(a,[],b,c))}function rc(){var a=I();return R("debugger"),$(),L(a,Gd.createDebuggerStatement())}function sc(){var a,b,c,d,e=Hd.type;if(e===qd.EOF&&P(Hd),e===qd.Punctuator)switch(Hd.value){case";":return bc();case"{":return Hb();case"(":return cc()}if(e===qd.Keyword)switch(Hd.value){case"break":return jc();case"continue":return ic();case"debugger":return rc();case"do":return ec();case"for":return hc();case"function":return yc();case"class":return Hc();case"if":return dc();case"return":return kc();case"switch":return nc();case"throw":return oc();case"try":return qc();case"var":return Sb();case"while":return fc();case"with":return lc()}return lb()?yc():(a=I(),b=Fb(),b.type===td.Identifier&&T(":")?(E(),d="$"+b.name,Object.prototype.hasOwnProperty.call(Id.labelSet,d)&&N({},vd.Redeclaration,"Label",b.name),Id.labelSet[d]=!0,c=sc(),delete Id.labelSet[d],L(a,Gd.createLabeledStatement(b,c))):($(),L(a,Gd.createExpressionStatement(b))))}function tc(){return T("{")?uc():Eb()}function uc(){var a,b,c,d,e,f,g,h,i,j=[],k=I();for(Q("{");Fd>Cd&&Hd.type===qd.StringLiteral&&(b=Hd,a=Ic(),j.push(a),a.expression.type===td.Literal);)c=Ad.slice(b.range[0]+1,b.range[1]-1),"use strict"===c?(Bd=!0,d&&O(d,vd.StrictOctalLiteral)):!d&&b.octal&&(d=b);for(e=Id.labelSet,f=Id.inIteration,g=Id.inSwitch,h=Id.inFunctionBody,i=Id.parenthesizedCount,Id.labelSet={},Id.inIteration=!1,Id.inSwitch=!1,Id.inFunctionBody=!0,Id.parenthesizedCount=0;Fd>Cd&&!T("}")&&(a=Ic(),"undefined"!=typeof a);)j.push(a);return Q("}"),Id.labelSet=e,Id.inIteration=f,Id.inSwitch=g,Id.inFunctionBody=h,Id.parenthesizedCount=i,L(k,Gd.createBlockStatement(j))}function vc(a,b,c){var d="$"+c;Bd?(l(c)&&(a.stricted=b,a.message=vd.StrictParamName),Object.prototype.hasOwnProperty.call(a.paramSet,d)&&(a.stricted=b,a.message=vd.StrictParamDupe)):a.firstRestricted||(l(c)?(a.firstRestricted=b,a.message=vd.StrictParamName):k(c)?(a.firstRestricted=b,a.message=vd.StrictReservedWord):Object.prototype.hasOwnProperty.call(a.paramSet,d)&&(a.firstRestricted=b,a.message=vd.StrictParamDupe)),a.paramSet[d]=!0}function wc(a){var b,c,d,e;return b=Hd,"..."===b.value&&(b=E(),c=!0),T("[")?(d=bb(),Bb(a,d)):T("{")?(c&&N({},vd.ObjectPatternAsRestParameter),d=hb(),Bb(a,d)):(d=c?Ob():Pb(!1,!0),vc(a,b,b.value)),T("=")&&(c&&O(Hd,vd.DefaultRestParameter),E(),e=Eb(),++a.defaultCount),c?(T(")")||N({},vd.ParameterAfterRestParameter),a.rest=d,!1):(a.params.push(d),a.defaults.push(e),!T(")"))}function xc(a){var b,c=I();if(b={params:[],defaultCount:0,defaults:[],rest:null,firstRestricted:a},Q("("),!T(")"))for(b.paramSet={};Fd>Cd&&wc(b);)Q(",");return Q(")"),0===b.defaultCount&&(b.defaults=[]),T(":")&&(b.returnType=Nb()),L(c,b)}function yc(){var a,b,c,d,e,f,g,h,i,j,m,n,o=I();return h=!1,Y()&&(E(),h=!0),R("function"),g=!1,T("*")&&(E(),g=!0),c=Hd,a=Ob(),T("<")&&(n=Kb()),Bd?l(c.value)&&O(c,vd.StrictFunctionName):l(c.value)?(e=c,f=vd.StrictFunctionName):k(c.value)&&(e=c,f=vd.StrictReservedWord),d=xc(e),e=d.firstRestricted,d.message&&(f=d.message),i=Bd,j=Id.yieldAllowed,Id.yieldAllowed=g,m=Id.awaitAllowed,Id.awaitAllowed=h,b=uc(),Bd&&e&&N(e,f),Bd&&d.stricted&&O(d.stricted,f),Bd=i,Id.yieldAllowed=j,Id.awaitAllowed=m,L(o,Gd.createFunctionDeclaration(a,d.params,d.defaults,b,d.rest,g,!1,h,d.returnType,n))}function zc(){var a,b,c,d,e,f,g,h,i,j,m,n=null,o=I();return g=!1,Y()&&(E(),g=!0),R("function"),f=!1,T("*")&&(E(),f=!0),T("(")||(T("<")||(a=Hd,n=Ob(),Bd?l(a.value)&&O(a,vd.StrictFunctionName):l(a.value)?(b=a,c=vd.StrictFunctionName):k(a.value)&&(b=a,c=vd.StrictReservedWord)),T("<")&&(m=Kb())),d=xc(b),b=d.firstRestricted,d.message&&(c=d.message),h=Bd,i=Id.yieldAllowed,Id.yieldAllowed=f,j=Id.awaitAllowed,Id.awaitAllowed=g,e=uc(),Bd&&b&&N(b,c),Bd&&d.stricted&&O(d.stricted,c),Bd=h,Id.yieldAllowed=i,Id.awaitAllowed=j,L(o,Gd.createFunctionExpression(n,d.params,d.defaults,e,d.rest,f,!1,g,d.returnType,m))}function Ac(){var a,b,c=I();return R("yield",!Bd),a=!1,T("*")&&(E(),a=!0),b=Eb(),L(c,Gd.createYieldExpression(b,a))}function Bc(){var a,b=I();return S("await"),a=Eb(),L(b,Gd.createAwaitExpression(a))}function Cc(a){var b,c,d,e,f,g,h=!1,i=I();return"static"===Hd.value?(e=zd["static"],E()):e=zd.prototype,T("*")?(E(),L(i,Gd.createMethodDefinition(e,"",eb(),db({generator:!0})))):(b=Hd,c=eb(),"get"!==b.value||T("(")?"set"!==b.value||T("(")?(T("<")&&(g=Kb()),f="async"===b.value&&!T("("),f&&(c=eb()),a[e].hasOwnProperty(c.name)?N(c,vd.IllegalDuplicateClassProperty):a[e][c.name]={},a[e][c.name].data=!0,L(i,Gd.createMethodDefinition(e,"",c,db({generator:!1,async:f,parametricType:g})))):(c=eb(),a[e].hasOwnProperty(c.name)?(h=void 0===a[e][c.name].set&&void 0===a[e][c.name].data&&void 0!==a[e][c.name].get,h||N(c,vd.IllegalDuplicateClassProperty)):a[e][c.name]={},a[e][c.name].set=!0,Q("("),b=Hd,d=[Pb()],Q(")"),L(i,Gd.createMethodDefinition(e,"set",c,cb({params:d,generator:!1,name:b})))):(c=eb(),a[e].hasOwnProperty(c.name)?(h=void 0===a[e][c.name].get&&void 0===a[e][c.name].data&&void 0!==a[e][c.name].set,h||N(c,vd.IllegalDuplicateClassProperty)):a[e][c.name]={},a[e][c.name].get=!0,Q("("),Q(")"),L(i,Gd.createMethodDefinition(e,"get",c,cb({generator:!1})))))}function Dc(){var a,b=I();return a=Pb(),Q(";"),L(b,Gd.createClassProperty(a))}function Ec(a){if(T(";"))return void E();var b=G();return b.type===qd.Punctuator&&":"===b.value?Dc(a):Cc(a)}function Fc(){var a,b=[],c={},d=I();for(c[zd["static"]]={},c[zd.prototype]={},Q("{");Fd>Cd&&!T("}");)a=Ec(c),"undefined"!=typeof a&&b.push(a);return Q("}"),L(d,Gd.createClassBody(b))}function Gc(){var a,b,c,d=null,e=I();return R("class"),U("extends")||T("{")||(a=Ob()),T("<")&&(c=Kb()),U("extends")&&(R("extends"),b=Id.yieldAllowed,Id.yieldAllowed=!1,d=Eb(),Id.yieldAllowed=b),L(e,Gd.createClassExpression(a,d,Fc(),c))}function Hc(){var a,b,c,d,e=null,f=I();return R("class"),a=Ob(),T("<")&&(c=Kb()),U("extends")&&(R("extends"),b=Id.yieldAllowed,Id.yieldAllowed=!1,e=Eb(),Id.yieldAllowed=b),L(f,Gd.createClassDeclaration(a,e,Fc(),c,d))}function Ic(){if(Hd.type===qd.Keyword)switch(Hd.value){case"const":case"let":return Tb(Hd.value);case"function":return yc();default:return sc()}return Hd.type!==qd.EOF?sc():void 0}function Jc(){if(Hd.type===qd.Keyword)switch(Hd.value){case"export":return Xb();case"import":return ac()}return Ic()}function Kc(){for(var a,b,c,d,e=[];Fd>Cd&&(b=Hd,b.type===qd.StringLiteral)&&(a=Jc(),e.push(a),a.expression.type===td.Literal);)c=Ad.slice(b.range[0]+1,b.range[1]-1),"use strict"===c?(Bd=!0,d&&O(d,vd.StrictOctalLiteral)):!d&&b.octal&&(d=b);for(;Fd>Cd&&(a=Jc(),"undefined"!=typeof a);)e.push(a);return e}function Lc(){var a,b=I();return Bd=!1,F(),a=Kc(),L(b,Gd.createProgram(a))}function Mc(a,c,d,e,f){var g;b("number"==typeof d,"Comment must have valid position"),Id.lastCommentStart>=d||(Id.lastCommentStart=d,g={type:a,value:c},Jd.range&&(g.range=[d,e]),Jd.loc&&(g.loc=f),Jd.comments.push(g),Jd.attachComment&&(Jd.leadingComments.push(g),Jd.trailingComments.push(g)))}function Nc(){var a,b,c,d,e,h;for(a="",e=!1,h=!1;Fd>Cd;)if(b=Ad[Cd],h)b=Ad[Cd++],g(b.charCodeAt(0))?(c.end={line:Dd,column:Cd-Ed-1},h=!1,Mc("Line",a,d,Cd-1,c),"\r"===b&&"\n"===Ad[Cd]&&++Cd,++Dd,Ed=Cd,a=""):Cd>=Fd?(h=!1,a+=b,c.end={line:Dd,column:Fd-Ed},Mc("Line",a,d,Fd,c)):a+=b;else if(e)g(b.charCodeAt(0))?("\r"===b&&(++Cd,a+="\r"),("\r"!==b||"\n"===Ad[Cd])&&(a+=Ad[Cd],++Dd,++Cd,Ed=Cd,Cd>=Fd&&N({},vd.UnexpectedToken,"ILLEGAL"))):(b=Ad[Cd++],Cd>=Fd&&N({},vd.UnexpectedToken,"ILLEGAL"),a+=b,"*"===b&&(b=Ad[Cd],"/"===b&&(a=a.substr(0,a.length-1),e=!1,++Cd,c.end={line:Dd,column:Cd-Ed},Mc("Block",a,d,Cd,c),a="")));else if("/"===b)if(b=Ad[Cd+1],"/"===b)c={start:{line:Dd,column:Cd-Ed}},d=Cd,Cd+=2,h=!0,Cd>=Fd&&(c.end={line:Dd,column:Cd-Ed},h=!1,Mc("Line",a,d,Cd,c));else{if("*"!==b)break;d=Cd,Cd+=2,e=!0,c={start:{line:Dd,column:Cd-Ed-2}},Cd>=Fd&&N({},vd.UnexpectedToken,"ILLEGAL")}else if(f(b.charCodeAt(0)))++Cd;else{if(!g(b.charCodeAt(0)))break;++Cd,"\r"===b&&"\n"===Ad[Cd]&&++Cd,++Dd,Ed=Cd}}function Oc(a){return a.type===td.XJSIdentifier?a.name:a.type===td.XJSNamespacedName?a.namespace.name+":"+a.name.name:a.type===td.XJSMemberExpression?Oc(a.object)+"."+Oc(a.property):void 0}function Pc(a){return 92!==a&&h(a)}function Qc(a){return 92!==a&&(45===a||i(a))}function Rc(){var a,b,c="";for(b=Cd;Fd>Cd&&(a=Ad.charCodeAt(Cd),Qc(a));)c+=Ad[Cd++];return{type:qd.XJSIdentifier,value:c,lineNumber:Dd,lineStart:Ed,range:[b,Cd]}}function Sc(){var a,c,d="",e=Cd,f=0;for(a=Ad[Cd],b("&"===a,"Entity must start with an ampersand"),Cd++;Fd>Cd&&f++<10&&(a=Ad[Cd++],";"!==a);)d+=a;if(";"===a)if("#"===d[0]){if(c="x"===d[1]?+("0"+d.substr(1)):+d.substr(1).replace(wd.LeadingZeros,""),!isNaN(c))return String.fromCharCode(c)}else if(yd[d])return yd[d];return Cd=e+1,"&"}function Tc(a){var b,c,d="";for(c=Cd;Fd>Cd&&(b=Ad[Cd],-1===a.indexOf(b));)"&"===b?d+=Sc():(Cd++,"\r"===b&&"\n"===Ad[Cd]&&(d+=b,b=Ad[Cd],Cd++),g(b.charCodeAt(0))&&(++Dd,Ed=Cd),d+=b);return{type:qd.XJSText,value:d,lineNumber:Dd,lineStart:Ed,range:[c,Cd]}}function Uc(){var a,c,d;return c=Ad[Cd],b("'"===c||'"'===c,"String literal must starts with a quote"),d=Cd,++Cd,a=Tc([c]),c!==Ad[Cd]&&N({},vd.UnexpectedToken,"ILLEGAL"),++Cd,a.range=[d,Cd],a}function Vc(){var a=Ad.charCodeAt(Cd);return 123!==a&&60!==a?Tc(["<","{"]):t()}function Wc(){var a,b=I();return Hd.type!==qd.XJSIdentifier&&P(Hd),a=E(),L(b,Gd.createXJSIdentifier(a.value))}function Xc(){var a,b,c=I();return a=Wc(),Q(":"),b=Wc(),L(c,Gd.createXJSNamespacedName(a,b))}function Yc(){for(var a=I(),b=Wc();T(".");)E(),b=L(a,Gd.createXJSMemberExpression(b,Wc()));return b}function Zc(){return":"===G().value?Xc():"."===G().value?Yc():Wc()}function $c(){return":"===G().value?Xc():Wc()}function _c(){var a,b;return T("{")?(a=bd(),a.expression.type===td.XJSEmptyExpression&&N(a,"XJS attributes must only be assigned a non-empty expression")):T("<")?a=hd():Hd.type===qd.XJSText?(b=I(),a=L(b,Gd.createLiteral(E()))):N({},vd.InvalidXJSAttributeValue),a}function ad(){for(var a=J();"}"!==Ad.charAt(Cd);)Cd++;return L(a,Gd.createXJSEmptyExpression())}function bd(){var a,b,c,d=I();return b=Id.inXJSChild,c=Id.inXJSTag,Id.inXJSChild=!1,Id.inXJSTag=!1,Q("{"),a=T("}")?ad():Fb(),Id.inXJSChild=b,Id.inXJSTag=c,Q("}"),L(d,Gd.createXJSExpressionContainer(a))}function cd(){var a,b,c,d=I();return b=Id.inXJSChild,c=Id.inXJSTag,Id.inXJSChild=!1,Id.inXJSTag=!1,Q("{"),Q("..."),a=Eb(),Id.inXJSChild=b,Id.inXJSTag=c,Q("}"),L(d,Gd.createXJSSpreadAttribute(a))}function dd(){var a,b;return T("{")?cd():(b=I(),a=$c(),T("=")?(E(),L(b,Gd.createXJSAttribute(a,_c()))):L(b,Gd.createXJSAttribute(a)))}function ed(){var a,b;return T("{")?a=bd():Hd.type===qd.XJSText?(b=J(),a=L(b,Gd.createLiteral(E()))):a=hd(),a}function fd(){var a,b,c,d=I();return b=Id.inXJSChild,c=Id.inXJSTag,Id.inXJSChild=!1,Id.inXJSTag=!0,Q("<"),Q("/"),a=Zc(),Id.inXJSChild=b,Id.inXJSTag=c,Q(">"),L(d,Gd.createXJSClosingElement(a))}function gd(){var a,b,c,d=[],e=!1,f=I();for(b=Id.inXJSChild,c=Id.inXJSTag,Id.inXJSChild=!1,Id.inXJSTag=!0,Q("<"),a=Zc();Fd>Cd&&"/"!==Hd.value&&">"!==Hd.value;)d.push(dd());return Id.inXJSTag=c,"/"===Hd.value?(Q("/"),Id.inXJSChild=b,Q(">"),e=!0):(Id.inXJSChild=!0,Q(">")),L(f,Gd.createXJSOpeningElement(a,d,e))}function hd(){var a,b,c,d=null,e=[],f=I();if(b=Id.inXJSChild,c=Id.inXJSTag,a=gd(),!a.selfClosing){for(;Fd>Cd&&(Id.inXJSChild=!1,"<"!==Hd.value||"/"!==G().value);)Id.inXJSChild=!0,e.push(ed());Id.inXJSChild=b,Id.inXJSTag=c,d=fd(),Oc(d.name)!==Oc(a.name)&&N({},vd.ExpectedXJSClosingTag,Oc(a.name))}return!b&&T("<")&&N(Hd,vd.AdjacentXJSElements),L(f,Gd.createXJSElement(a,d,e))}function id(){var a,b,c,d,e,f;return Id.inXJSChild||n(),a=Cd,b={start:{line:Dd,column:Cd-Ed}},c=Jd.advance(),b.end={line:Dd,column:Cd-Ed},c.type!==qd.EOF&&(d=[c.range[0],c.range[1]],e=Ad.slice(c.range[0],c.range[1]),f={type:rd[c.type],value:e,range:d,loc:b},c.regex&&(f.regex={pattern:c.regex.pattern,flags:c.regex.flags}),Jd.tokens.push(f)),c}function jd(){var a,b,c,d;return n(),a=Cd,b={start:{line:Dd,column:Cd-Ed}},c=Jd.scanRegExp(),b.end={line:Dd,column:Cd-Ed},Jd.tokenize||(Jd.tokens.length>0&&(d=Jd.tokens[Jd.tokens.length-1],d.range[0]===a&&"Punctuator"===d.type&&("/"===d.value||"/="===d.value)&&Jd.tokens.pop()),Jd.tokens.push({type:"RegularExpression",value:c.literal,regex:c.regex,range:[a,Cd],loc:b})),c}function kd(){var a,b,c,d=[];for(a=0;a<Jd.tokens.length;++a)b=Jd.tokens[a],c={type:b.type,value:b.value},b.regex&&(c.regex={pattern:b.regex.pattern,flags:b.regex.flags}),Jd.range&&(c.range=b.range),Jd.loc&&(c.loc=b.loc),d.push(c);Jd.tokens=d}function ld(){Jd.comments&&(Jd.skipComment=n,n=Nc),"undefined"!=typeof Jd.tokens&&(Jd.advance=D,Jd.scanRegExp=A,D=id,A=jd)}function md(){"function"==typeof Jd.skipComment&&(n=Jd.skipComment),"function"==typeof Jd.scanRegExp&&(D=Jd.advance,A=Jd.scanRegExp)}function nd(a,b){var c,d={};for(c in a)a.hasOwnProperty(c)&&(d[c]=a[c]);for(c in b)b.hasOwnProperty(c)&&(d[c]=b[c]);return d}function od(a,b){var c,d,e;c=String,"string"==typeof a||a instanceof String||(a=c(a)),Gd=xd,Ad=a,Cd=0,Dd=Ad.length>0?1:0,Ed=0,Fd=Ad.length,Hd=null,Id={allowKeyword:!0,allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1},Jd={},b=b||{},b.tokens=!0,Jd.tokens=[],Jd.tokenize=!0,Jd.openParenToken=-1,Jd.openCurlyToken=-1,Jd.range="boolean"==typeof b.range&&b.range,Jd.loc="boolean"==typeof b.loc&&b.loc,"boolean"==typeof b.comment&&b.comment&&(Jd.comments=[]),"boolean"==typeof b.tolerant&&b.tolerant&&(Jd.errors=[]),Fd>0&&"undefined"==typeof Ad[0]&&a instanceof String&&(Ad=a.valueOf()),ld();try{if(F(),Hd.type===qd.EOF)return Jd.tokens;for(d=E();Hd.type!==qd.EOF;)try{d=E()}catch(f){if(d=Hd,Jd.errors){Jd.errors.push(f);break}throw f}kd(),e=Jd.tokens,"undefined"!=typeof Jd.comments&&(e.comments=Jd.comments),"undefined"!=typeof Jd.errors&&(e.errors=Jd.errors)}catch(g){throw g}finally{md(),Jd={}}return e}function pd(a,b){var c,d;d=String,"string"==typeof a||a instanceof String||(a=d(a)),Gd=xd,Ad=a,Cd=0,Dd=Ad.length>0?1:0,Ed=0,Fd=Ad.length,Hd=null,Id={allowKeyword:!1,allowIn:!0,labelSet:{},parenthesizedCount:0,inFunctionBody:!1,inIteration:!1,inSwitch:!1,inXJSChild:!1,inXJSTag:!1,lastCommentStart:-1,yieldAllowed:!1,awaitAllowed:!1},Jd={},"undefined"!=typeof b&&(Jd.range="boolean"==typeof b.range&&b.range,Jd.loc="boolean"==typeof b.loc&&b.loc,Jd.attachComment="boolean"==typeof b.attachComment&&b.attachComment,Jd.loc&&null!==b.source&&void 0!==b.source&&(Gd=nd(Gd,{postProcess:function(a){return a.loc.source=d(b.source),a}})),"boolean"==typeof b.tokens&&b.tokens&&(Jd.tokens=[]),"boolean"==typeof b.comment&&b.comment&&(Jd.comments=[]),"boolean"==typeof b.tolerant&&b.tolerant&&(Jd.errors=[]),Jd.attachComment&&(Jd.range=!0,Jd.comments=[],Jd.bottomRightStack=[],Jd.trailingComments=[],Jd.leadingComments=[])),Fd>0&&"undefined"==typeof Ad[0]&&a instanceof String&&(Ad=a.valueOf()),ld();try{c=Lc(),"undefined"!=typeof Jd.comments&&(c.comments=Jd.comments),"undefined"!=typeof Jd.tokens&&(kd(),c.tokens=Jd.tokens),"undefined"!=typeof Jd.errors&&(c.errors=Jd.errors)}catch(e){throw e}finally{md(),Jd={}}return c}var qd,rd,sd,td,ud,vd,wd,xd,yd,zd,Ad,Bd,Cd,Dd,Ed,Fd,Gd,Hd,Id,Jd;qd={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8,RegularExpression:9,Template:10,XJSIdentifier:11,XJSText:12},rd={},rd[qd.BooleanLiteral]="Boolean",rd[qd.EOF]="<end>",rd[qd.Identifier]="Identifier",rd[qd.Keyword]="Keyword",rd[qd.NullLiteral]="Null",rd[qd.NumericLiteral]="Numeric",rd[qd.Punctuator]="Punctuator",rd[qd.StringLiteral]="String",rd[qd.XJSIdentifier]="XJSIdentifier",rd[qd.XJSText]="XJSText",rd[qd.RegularExpression]="RegularExpression",sd=["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="],td={ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AssignmentExpression:"AssignmentExpression",BinaryExpression:"BinaryExpression",BlockStatement:"BlockStatement",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ClassProperty:"ClassProperty",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportDeclaration:"ExportDeclaration",ExportBatchSpecifier:"ExportBatchSpecifier",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",ForStatement:"ForStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",LabeledStatement:"LabeledStatement",Literal:"Literal",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",ObjectTypeAnnotation:"ObjectTypeAnnotation",OptionalParameter:"OptionalParameter",ParametricTypeAnnotation:"ParametricTypeAnnotation",ParametricallyTypedIdentifier:"ParametricallyTypedIdentifier",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",SpreadProperty:"SpreadProperty",SwitchCase:"SwitchCase",SwitchStatement:"SwitchStatement",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",TypeAnnotatedIdentifier:"TypeAnnotatedIdentifier",TypeAnnotation:"TypeAnnotation",UnaryExpression:"UnaryExpression",UnionTypeAnnotation:"UnionTypeAnnotation",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",VoidTypeAnnotation:"VoidTypeAnnotation",WhileStatement:"WhileStatement",WithStatement:"WithStatement",XJSIdentifier:"XJSIdentifier",XJSNamespacedName:"XJSNamespacedName",XJSMemberExpression:"XJSMemberExpression",XJSEmptyExpression:"XJSEmptyExpression",XJSExpressionContainer:"XJSExpressionContainer",XJSElement:"XJSElement",XJSClosingElement:"XJSClosingElement",XJSOpeningElement:"XJSOpeningElement",XJSAttribute:"XJSAttribute",XJSSpreadAttribute:"XJSSpreadAttribute",XJSText:"XJSText",YieldExpression:"YieldExpression",AwaitExpression:"AwaitExpression"},ud={Data:1,Get:2,Set:4},zd={"static":"static",prototype:"prototype"},vd={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedTemplate:"Unexpected quasi %0",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInFormalsList:"Invalid left-hand side in formals list",InvalidLHSInForIn:"Invalid left-hand side in for-in",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalDuplicateClassProperty:"Illegal duplicate property in class definition",IllegalReturn:"Illegal return statement",IllegalSpread:"Illegal spread element",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",ParameterAfterRestParameter:"Rest parameter must be final parameter of an argument list",DefaultRestParameter:"Rest parameter can not have a default value",ElementAfterSpreadElement:"Spread must be the final element of an element list",PropertyAfterSpreadProperty:"A rest property must be the final property of an object literal",ObjectPatternAsRestParameter:"Invalid rest parameter",ObjectPatternAsSpread:"Invalid spread argument",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictDuplicateProperty:"Duplicate data property in object literal not allowed in strict mode",AccessorDataProperty:"Object literal may not have data and accessor property with the same name",AccessorGetSet:"Object literal may not have multiple get/set accessors with the same name",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode",MissingFromClause:"Missing from clause",NoAsAfterImportNamespace:"Missing as after import *",InvalidModuleSpecifier:"Invalid module specifier",NoUnintializedConst:"Const must be initialized",ComprehensionRequiresBlock:"Comprehension must have at least one block",ComprehensionError:"Comprehension Error",EachNotAllowed:"Each is not supported",InvalidXJSAttributeValue:"XJS value should be either an expression or a quoted XJS text",ExpectedXJSClosingTag:"Expected corresponding XJS closing tag for %0",AdjacentXJSElements:"Adjacent XJS elements must be wrapped in an enclosing tag"},wd={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),LeadingZeros:new RegExp("^0+(?!$)")},xd={name:"SyntaxTree",postProcess:function(a){return a},createArrayExpression:function(a){return{type:td.ArrayExpression,elements:a}},createAssignmentExpression:function(a,b,c){return{type:td.AssignmentExpression,operator:a,left:b,right:c}},createBinaryExpression:function(a,b,c){var d="||"===a||"&&"===a?td.LogicalExpression:td.BinaryExpression;return{type:d,operator:a,left:b,right:c}},createBlockStatement:function(a){return{type:td.BlockStatement,body:a}},createBreakStatement:function(a){return{type:td.BreakStatement,label:a}},createCallExpression:function(a,b){return{type:td.CallExpression,callee:a,arguments:b}},createCatchClause:function(a,b){return{type:td.CatchClause,param:a,body:b}},createConditionalExpression:function(a,b,c){return{type:td.ConditionalExpression,test:a,consequent:b,alternate:c}},createContinueStatement:function(a){return{type:td.ContinueStatement,label:a}},createDebuggerStatement:function(){return{type:td.DebuggerStatement}},createDoWhileStatement:function(a,b){return{type:td.DoWhileStatement,body:a,test:b}},createEmptyStatement:function(){return{type:td.EmptyStatement}},createExpressionStatement:function(a){return{type:td.ExpressionStatement,expression:a}},createForStatement:function(a,b,c,d){return{type:td.ForStatement,init:a,test:b,update:c,body:d}},createForInStatement:function(a,b,c){return{type:td.ForInStatement,left:a,right:b,body:c,each:!1}},createForOfStatement:function(a,b,c){return{type:td.ForOfStatement,left:a,right:b,body:c}},createFunctionDeclaration:function(a,b,c,d,e,f,g,h,i,j){var k={type:td.FunctionDeclaration,id:a,params:b,defaults:c,body:d,rest:e,generator:f,expression:g,returnType:i,parametricType:j};return h&&(k.async=!0),k},createFunctionExpression:function(a,b,c,d,e,f,g,h,i,j){var k={type:td.FunctionExpression,id:a,params:b,defaults:c,body:d,rest:e,generator:f,expression:g,returnType:i,parametricType:j};return h&&(k.async=!0),k},createIdentifier:function(a){return{type:td.Identifier,name:a,typeAnnotation:void 0}},createTypeAnnotation:function(a,b,c,d,e){return{type:td.TypeAnnotation,id:a,parametricType:b,params:c,returnType:d,nullable:e}},createParametricTypeAnnotation:function(a){return{type:td.ParametricTypeAnnotation,params:a}},createVoidTypeAnnotation:function(){return{type:td.VoidTypeAnnotation}},createObjectTypeAnnotation:function(a,b){return{type:td.ObjectTypeAnnotation,properties:a,nullable:b}},createUnionTypeAnnotation:function(a){return{type:td.UnionTypeAnnotation,types:a}},createTypeAnnotatedIdentifier:function(a,b){return{type:td.TypeAnnotatedIdentifier,id:a,annotation:b}},createOptionalParameter:function(a){return{type:td.OptionalParameter,id:a}},createXJSAttribute:function(a,b){return{type:td.XJSAttribute,name:a,value:b||null}},createXJSSpreadAttribute:function(a){return{type:td.XJSSpreadAttribute,argument:a}},createXJSIdentifier:function(a){return{type:td.XJSIdentifier,name:a}},createXJSNamespacedName:function(a,b){return{type:td.XJSNamespacedName,namespace:a,name:b}},createXJSMemberExpression:function(a,b){return{type:td.XJSMemberExpression,object:a,property:b}},createXJSElement:function(a,b,c){return{type:td.XJSElement,openingElement:a,closingElement:b,children:c}},createXJSEmptyExpression:function(){return{type:td.XJSEmptyExpression}},createXJSExpressionContainer:function(a){return{type:td.XJSExpressionContainer,expression:a}},createXJSOpeningElement:function(a,b,c){return{type:td.XJSOpeningElement,name:a,selfClosing:c,attributes:b}},createXJSClosingElement:function(a){return{type:td.XJSClosingElement,name:a}},createIfStatement:function(a,b,c){return{type:td.IfStatement,test:a,consequent:b,alternate:c}},createLabeledStatement:function(a,b){return{type:td.LabeledStatement,label:a,body:b}},createLiteral:function(a){var b={type:td.Literal,value:a.value,raw:Ad.slice(a.range[0],a.range[1])};return a.regex&&(b.regex=a.regex),b},createMemberExpression:function(a,b,c){return{type:td.MemberExpression,computed:"["===a,object:b,property:c}},createNewExpression:function(a,b){return{type:td.NewExpression,callee:a,arguments:b}},createObjectExpression:function(a){return{type:td.ObjectExpression,properties:a}},createPostfixExpression:function(a,b){return{type:td.UpdateExpression,operator:a,argument:b,prefix:!1}},createProgram:function(a){return{type:td.Program,body:a}},createProperty:function(a,b,c,d,e,f){return{type:td.Property,key:b,value:c,kind:a,method:d,shorthand:e,computed:f}},createReturnStatement:function(a){return{type:td.ReturnStatement,argument:a}},createSequenceExpression:function(a){return{type:td.SequenceExpression,expressions:a}},createSwitchCase:function(a,b){return{type:td.SwitchCase,test:a,consequent:b}},createSwitchStatement:function(a,b){return{type:td.SwitchStatement,discriminant:a,cases:b}},createThisExpression:function(){return{type:td.ThisExpression}},createThrowStatement:function(a){return{type:td.ThrowStatement,argument:a}},createTryStatement:function(a,b,c,d){return{type:td.TryStatement,block:a,guardedHandlers:b,handlers:c,finalizer:d}},createUnaryExpression:function(a,b){return"++"===a||"--"===a?{type:td.UpdateExpression,operator:a,argument:b,prefix:!0}:{type:td.UnaryExpression,operator:a,argument:b,prefix:!0}},createVariableDeclaration:function(a,b){return{type:td.VariableDeclaration,declarations:a,kind:b}},createVariableDeclarator:function(a,b){return{type:td.VariableDeclarator,id:a,init:b}},createWhileStatement:function(a,b){return{type:td.WhileStatement,test:a,body:b}},createWithStatement:function(a,b){return{type:td.WithStatement,object:a,body:b}},createTemplateElement:function(a,b){return{type:td.TemplateElement,value:a,tail:b}},createTemplateLiteral:function(a,b){return{type:td.TemplateLiteral,quasis:a,expressions:b}
+},createSpreadElement:function(a){return{type:td.SpreadElement,argument:a}},createSpreadProperty:function(a){return{type:td.SpreadProperty,argument:a}},createTaggedTemplateExpression:function(a,b){return{type:td.TaggedTemplateExpression,tag:a,quasi:b}},createArrowFunctionExpression:function(a,b,c,d,e,f){var g={type:td.ArrowFunctionExpression,id:null,params:a,defaults:b,body:c,rest:d,generator:!1,expression:e};return f&&(g.async=!0),g},createMethodDefinition:function(a,b,c,d){return{type:td.MethodDefinition,key:c,value:d,kind:b,"static":a===zd["static"]}},createClassProperty:function(a){return{type:td.ClassProperty,id:a}},createClassBody:function(a){return{type:td.ClassBody,body:a}},createClassExpression:function(a,b,c,d){return{type:td.ClassExpression,id:a,superClass:b,body:c,parametricType:d}},createClassDeclaration:function(a,b,c,d,e){return{type:td.ClassDeclaration,id:a,superClass:b,body:c,parametricType:d,superParametricType:e}},createModuleSpecifier:function(a){return{type:td.ModuleSpecifier,value:a.value,raw:Ad.slice(a.range[0],a.range[1])}},createExportSpecifier:function(a,b){return{type:td.ExportSpecifier,id:a,name:b}},createExportBatchSpecifier:function(){return{type:td.ExportBatchSpecifier}},createImportDefaultSpecifier:function(a){return{type:td.ImportDefaultSpecifier,id:a}},createImportNamespaceSpecifier:function(a){return{type:td.ImportNamespaceSpecifier,id:a}},createExportDeclaration:function(a,b,c,d){return{type:td.ExportDeclaration,"default":!!a,declaration:b,specifiers:c,source:d}},createImportSpecifier:function(a,b){return{type:td.ImportSpecifier,id:a,name:b}},createImportDeclaration:function(a,b){return{type:td.ImportDeclaration,specifiers:a,source:b}},createYieldExpression:function(a,b){return{type:td.YieldExpression,argument:a,delegate:b}},createAwaitExpression:function(a){return{type:td.AwaitExpression,argument:a}},createComprehensionExpression:function(a,b,c){return{type:td.ComprehensionExpression,filter:a,blocks:b,body:c}}},yd={quot:'"',amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪","int":"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦"},a.version="7001.0001.0000-dev-harmony-fb",a.tokenize=od,a.parse=pd,a.Syntax=function(){var a,b={};"function"==typeof Object.create&&(b=Object.create(null));for(a in td)td.hasOwnProperty(a)&&(b[a]=td[a]);return"function"==typeof Object.freeze&&Object.freeze(b),b}()})},{}],82:[function(){},{}],83:[function(a,b,c){function d(a,b,c){if(!(this instanceof d))return new d(a,b,c);var e,f=typeof a;if("number"===f)e=a>0?a>>>0:0;else if("string"===f)e=d.byteLength(a,b);else{if("object"!==f||null===a)throw new TypeError("must start with number, buffer, array or string");"Buffer"===a.type&&K(a.data)&&(a=a.data),e=+a.length>0?Math.floor(+a.length):0}if(e>L)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+L.toString(16)+" bytes");var g;d.TYPED_ARRAY_SUPPORT?g=d._augment(new Uint8Array(e)):(g=this,g.length=e,g._isBuffer=!0);var h;if(d.TYPED_ARRAY_SUPPORT&&"number"==typeof a.byteLength)g._set(a);else if(A(a))if(d.isBuffer(a))for(h=0;e>h;h++)g[h]=a.readUInt8(h);else for(h=0;e>h;h++)g[h]=(a[h]%256+256)%256;else if("string"===f)g.write(a,0,b);else if("number"===f&&!d.TYPED_ARRAY_SUPPORT&&!c)for(h=0;e>h;h++)g[h]=0;return e>0&&e<=d.poolSize&&(g.parent=M),g}function e(a,b,c){if(!(this instanceof e))return new e(a,b,c);var f=new d(a,b,c);return delete f.parent,f}function f(a,b,c,d){c=Number(c)||0;var e=a.length-c;d?(d=Number(d),d>e&&(d=e)):d=e;var f=b.length;if(f%2!==0)throw new Error("Invalid hex string");d>f/2&&(d=f/2);for(var g=0;d>g;g++){var h=parseInt(b.substr(2*g,2),16);if(isNaN(h))throw new Error("Invalid hex string");a[c+g]=h}return g}function g(a,b,c,d){var e=G(C(b,a.length-c),a,c,d);return e}function h(a,b,c,d){var e=G(D(b),a,c,d);return e}function i(a,b,c,d){return h(a,b,c,d)}function j(a,b,c,d){var e=G(F(b),a,c,d);return e}function k(a,b,c,d){var e=G(E(b,a.length-c),a,c,d,2);return e}function l(a,b,c){return I.fromByteArray(0===b&&c===a.length?a:a.slice(b,c))}function m(a,b,c){var d="",e="";c=Math.min(a.length,c);for(var f=b;c>f;f++)a[f]<=127?(d+=H(e)+String.fromCharCode(a[f]),e=""):e+="%"+a[f].toString(16);return d+H(e)}function n(a,b,c){var d="";c=Math.min(a.length,c);for(var e=b;c>e;e++)d+=String.fromCharCode(127&a[e]);return d}function o(a,b,c){var d="";c=Math.min(a.length,c);for(var e=b;c>e;e++)d+=String.fromCharCode(a[e]);return d}function p(a,b,c){var d=a.length;(!b||0>b)&&(b=0),(!c||0>c||c>d)&&(c=d);for(var e="",f=b;c>f;f++)e+=B(a[f]);return e}function q(a,b,c){for(var d=a.slice(b,c),e="",f=0;f<d.length;f+=2)e+=String.fromCharCode(d[f]+256*d[f+1]);return e}function r(a,b,c){if(a%1!==0||0>a)throw new RangeError("offset is not uint");if(a+b>c)throw new RangeError("Trying to access beyond buffer length")}function s(a,b,c,e,f,g){if(!d.isBuffer(a))throw new TypeError("buffer must be a Buffer instance");if(b>f||g>b)throw new RangeError("value is out of bounds");if(c+e>a.length)throw new RangeError("index out of range")}function t(a,b,c,d){0>b&&(b=65535+b+1);for(var e=0,f=Math.min(a.length-c,2);f>e;e++)a[c+e]=(b&255<<8*(d?e:1-e))>>>8*(d?e:1-e)}function u(a,b,c,d){0>b&&(b=4294967295+b+1);for(var e=0,f=Math.min(a.length-c,4);f>e;e++)a[c+e]=b>>>8*(d?e:3-e)&255}function v(a,b,c,d,e,f){if(b>e||f>b)throw new RangeError("value is out of bounds");if(c+d>a.length)throw new RangeError("index out of range");if(0>c)throw new RangeError("index out of range")}function w(a,b,c,d,e){return e||v(a,b,c,4,3.4028234663852886e38,-3.4028234663852886e38),J.write(a,b,c,d,23,4),c+4}function x(a,b,c,d,e){return e||v(a,b,c,8,1.7976931348623157e308,-1.7976931348623157e308),J.write(a,b,c,d,52,8),c+8}function y(a){if(a=z(a).replace(O,""),a.length<2)return"";for(;a.length%4!==0;)a+="=";return a}function z(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function A(a){return K(a)||d.isBuffer(a)||a&&"object"==typeof a&&"number"==typeof a.length}function B(a){return 16>a?"0"+a.toString(16):a.toString(16)}function C(a,b){var c,d=a.length,e=null;b=b||1/0;for(var f=[],g=0;d>g;g++){if(c=a.charCodeAt(g),c>55295&&57344>c){if(!e){if(c>56319){(b-=3)>-1&&f.push(239,191,189);continue}if(g+1===d){(b-=3)>-1&&f.push(239,191,189);continue}e=c;continue}if(56320>c){(b-=3)>-1&&f.push(239,191,189),e=c;continue}c=e-55296<<10|c-56320|65536,e=null}else e&&((b-=3)>-1&&f.push(239,191,189),e=null);if(128>c){if((b-=1)<0)break;f.push(c)}else if(2048>c){if((b-=2)<0)break;f.push(c>>6|192,63&c|128)}else if(65536>c){if((b-=3)<0)break;f.push(c>>12|224,c>>6&63|128,63&c|128)}else{if(!(2097152>c))throw new Error("Invalid code point");if((b-=4)<0)break;f.push(c>>18|240,c>>12&63|128,c>>6&63|128,63&c|128)}}return f}function D(a){for(var b=[],c=0;c<a.length;c++)b.push(255&a.charCodeAt(c));return b}function E(a,b){for(var c,d,e,f=[],g=0;g<a.length&&!((b-=2)<0);g++)c=a.charCodeAt(g),d=c>>8,e=c%256,f.push(e),f.push(d);return f}function F(a){return I.toByteArray(y(a))}function G(a,b,c,d,e){e&&(d-=d%e);for(var f=0;d>f&&!(f+c>=b.length||f>=a.length);f++)b[f+c]=a[f];return f}function H(a){try{return decodeURIComponent(a)}catch(b){return String.fromCharCode(65533)}}var I=a("base64-js"),J=a("ieee754"),K=a("is-array");c.Buffer=d,c.SlowBuffer=e,c.INSPECT_MAX_BYTES=50,d.poolSize=8192;var L=1073741823,M={};d.TYPED_ARRAY_SUPPORT=function(){try{var a=new ArrayBuffer(0),b=new Uint8Array(a);return b.foo=function(){return 42},42===b.foo()&&"function"==typeof b.subarray&&0===new Uint8Array(1).subarray(1,1).byteLength}catch(c){return!1}}(),d.isBuffer=function(a){return!(null==a||!a._isBuffer)},d.compare=function(a,b){if(!d.isBuffer(a)||!d.isBuffer(b))throw new TypeError("Arguments must be Buffers");for(var c=a.length,e=b.length,f=0,g=Math.min(c,e);g>f&&a[f]===b[f];f++);return f!==g&&(c=a[f],e=b[f]),e>c?-1:c>e?1:0},d.isEncoding=function(a){switch(String(a).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},d.concat=function(a,b){if(!K(a))throw new TypeError("Usage: Buffer.concat(list[, length])");if(0===a.length)return new d(0);if(1===a.length)return a[0];var c;if(void 0===b)for(b=0,c=0;c<a.length;c++)b+=a[c].length;var e=new d(b),f=0;for(c=0;c<a.length;c++){var g=a[c];g.copy(e,f),f+=g.length}return e},d.byteLength=function(a,b){var c;switch(a+="",b||"utf8"){case"ascii":case"binary":case"raw":c=a.length;break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":c=2*a.length;break;case"hex":c=a.length>>>1;break;case"utf8":case"utf-8":c=C(a).length;break;case"base64":c=F(a).length;break;default:c=a.length}return c},d.prototype.length=void 0,d.prototype.parent=void 0,d.prototype.toString=function(a,b,c){var d=!1;if(b>>>=0,c=void 0===c||1/0===c?this.length:c>>>0,a||(a="utf8"),0>b&&(b=0),c>this.length&&(c=this.length),b>=c)return"";for(;;)switch(a){case"hex":return p(this,b,c);case"utf8":case"utf-8":return m(this,b,c);case"ascii":return n(this,b,c);case"binary":return o(this,b,c);case"base64":return l(this,b,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return q(this,b,c);default:if(d)throw new TypeError("Unknown encoding: "+a);a=(a+"").toLowerCase(),d=!0}},d.prototype.equals=function(a){if(!d.isBuffer(a))throw new TypeError("Argument must be a Buffer");return 0===d.compare(this,a)},d.prototype.inspect=function(){var a="",b=c.INSPECT_MAX_BYTES;return this.length>0&&(a=this.toString("hex",0,b).match(/.{2}/g).join(" "),this.length>b&&(a+=" ... ")),"<Buffer "+a+">"},d.prototype.compare=function(a){if(!d.isBuffer(a))throw new TypeError("Argument must be a Buffer");return d.compare(this,a)},d.prototype.get=function(a){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(a)},d.prototype.set=function(a,b){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(a,b)},d.prototype.write=function(a,b,c,d){if(isFinite(b))isFinite(c)||(d=c,c=void 0);else{var e=d;d=b,b=c,c=e}if(b=Number(b)||0,0>c||0>b||b>this.length)throw new RangeError("attempt to write outside buffer bounds");var l=this.length-b;c?(c=Number(c),c>l&&(c=l)):c=l,d=String(d||"utf8").toLowerCase();var m;switch(d){case"hex":m=f(this,a,b,c);break;case"utf8":case"utf-8":m=g(this,a,b,c);break;case"ascii":m=h(this,a,b,c);break;case"binary":m=i(this,a,b,c);break;case"base64":m=j(this,a,b,c);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":m=k(this,a,b,c);break;default:throw new TypeError("Unknown encoding: "+d)}return m},d.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},d.prototype.slice=function(a,b){var c=this.length;a=~~a,b=void 0===b?c:~~b,0>a?(a+=c,0>a&&(a=0)):a>c&&(a=c),0>b?(b+=c,0>b&&(b=0)):b>c&&(b=c),a>b&&(b=a);var e;if(d.TYPED_ARRAY_SUPPORT)e=d._augment(this.subarray(a,b));else{var f=b-a;e=new d(f,void 0,!0);for(var g=0;f>g;g++)e[g]=this[g+a]}return e.length&&(e.parent=this.parent||this),e},d.prototype.readUIntLE=function(a,b,c){a>>>=0,b>>>=0,c||r(a,b,this.length);for(var d=this[a],e=1,f=0;++f<b&&(e*=256);)d+=this[a+f]*e;return d},d.prototype.readUIntBE=function(a,b,c){a>>>=0,b>>>=0,c||r(a,b,this.length);for(var d=this[a+--b],e=1;b>0&&(e*=256);)d+=this[a+--b]*e;return d},d.prototype.readUInt8=function(a,b){return b||r(a,1,this.length),this[a]},d.prototype.readUInt16LE=function(a,b){return b||r(a,2,this.length),this[a]|this[a+1]<<8},d.prototype.readUInt16BE=function(a,b){return b||r(a,2,this.length),this[a]<<8|this[a+1]},d.prototype.readUInt32LE=function(a,b){return b||r(a,4,this.length),(this[a]|this[a+1]<<8|this[a+2]<<16)+16777216*this[a+3]},d.prototype.readUInt32BE=function(a,b){return b||r(a,4,this.length),16777216*this[a]+(this[a+1]<<16|this[a+2]<<8|this[a+3])},d.prototype.readIntLE=function(a,b,c){a>>>=0,b>>>=0,c||r(a,b,this.length);for(var d=this[a],e=1,f=0;++f<b&&(e*=256);)d+=this[a+f]*e;return e*=128,d>=e&&(d-=Math.pow(2,8*b)),d},d.prototype.readIntBE=function(a,b,c){a>>>=0,b>>>=0,c||r(a,b,this.length);for(var d=b,e=1,f=this[a+--d];d>0&&(e*=256);)f+=this[a+--d]*e;return e*=128,f>=e&&(f-=Math.pow(2,8*b)),f},d.prototype.readInt8=function(a,b){return b||r(a,1,this.length),128&this[a]?-1*(255-this[a]+1):this[a]},d.prototype.readInt16LE=function(a,b){b||r(a,2,this.length);var c=this[a]|this[a+1]<<8;return 32768&c?4294901760|c:c},d.prototype.readInt16BE=function(a,b){b||r(a,2,this.length);var c=this[a+1]|this[a]<<8;return 32768&c?4294901760|c:c},d.prototype.readInt32LE=function(a,b){return b||r(a,4,this.length),this[a]|this[a+1]<<8|this[a+2]<<16|this[a+3]<<24},d.prototype.readInt32BE=function(a,b){return b||r(a,4,this.length),this[a]<<24|this[a+1]<<16|this[a+2]<<8|this[a+3]},d.prototype.readFloatLE=function(a,b){return b||r(a,4,this.length),J.read(this,a,!0,23,4)},d.prototype.readFloatBE=function(a,b){return b||r(a,4,this.length),J.read(this,a,!1,23,4)},d.prototype.readDoubleLE=function(a,b){return b||r(a,8,this.length),J.read(this,a,!0,52,8)},d.prototype.readDoubleBE=function(a,b){return b||r(a,8,this.length),J.read(this,a,!1,52,8)},d.prototype.writeUIntLE=function(a,b,c,d){a=+a,b>>>=0,c>>>=0,d||s(this,a,b,c,Math.pow(2,8*c),0);var e=1,f=0;for(this[b]=255&a;++f<c&&(e*=256);)this[b+f]=a/e>>>0&255;return b+c},d.prototype.writeUIntBE=function(a,b,c,d){a=+a,b>>>=0,c>>>=0,d||s(this,a,b,c,Math.pow(2,8*c),0);var e=c-1,f=1;for(this[b+e]=255&a;--e>=0&&(f*=256);)this[b+e]=a/f>>>0&255;return b+c},d.prototype.writeUInt8=function(a,b,c){return a=+a,b>>>=0,c||s(this,a,b,1,255,0),d.TYPED_ARRAY_SUPPORT||(a=Math.floor(a)),this[b]=a,b+1},d.prototype.writeUInt16LE=function(a,b,c){return a=+a,b>>>=0,c||s(this,a,b,2,65535,0),d.TYPED_ARRAY_SUPPORT?(this[b]=a,this[b+1]=a>>>8):t(this,a,b,!0),b+2},d.prototype.writeUInt16BE=function(a,b,c){return a=+a,b>>>=0,c||s(this,a,b,2,65535,0),d.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=a):t(this,a,b,!1),b+2},d.prototype.writeUInt32LE=function(a,b,c){return a=+a,b>>>=0,c||s(this,a,b,4,4294967295,0),d.TYPED_ARRAY_SUPPORT?(this[b+3]=a>>>24,this[b+2]=a>>>16,this[b+1]=a>>>8,this[b]=a):u(this,a,b,!0),b+4},d.prototype.writeUInt32BE=function(a,b,c){return a=+a,b>>>=0,c||s(this,a,b,4,4294967295,0),d.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=a):u(this,a,b,!1),b+4},d.prototype.writeIntLE=function(a,b,c,d){a=+a,b>>>=0,d||s(this,a,b,c,Math.pow(2,8*c-1)-1,-Math.pow(2,8*c-1));var e=0,f=1,g=0>a?1:0;for(this[b]=255&a;++e<c&&(f*=256);)this[b+e]=(a/f>>0)-g&255;return b+c},d.prototype.writeIntBE=function(a,b,c,d){a=+a,b>>>=0,d||s(this,a,b,c,Math.pow(2,8*c-1)-1,-Math.pow(2,8*c-1));var e=c-1,f=1,g=0>a?1:0;for(this[b+e]=255&a;--e>=0&&(f*=256);)this[b+e]=(a/f>>0)-g&255;return b+c},d.prototype.writeInt8=function(a,b,c){return a=+a,b>>>=0,c||s(this,a,b,1,127,-128),d.TYPED_ARRAY_SUPPORT||(a=Math.floor(a)),0>a&&(a=255+a+1),this[b]=a,b+1},d.prototype.writeInt16LE=function(a,b,c){return a=+a,b>>>=0,c||s(this,a,b,2,32767,-32768),d.TYPED_ARRAY_SUPPORT?(this[b]=a,this[b+1]=a>>>8):t(this,a,b,!0),b+2},d.prototype.writeInt16BE=function(a,b,c){return a=+a,b>>>=0,c||s(this,a,b,2,32767,-32768),d.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=a):t(this,a,b,!1),b+2},d.prototype.writeInt32LE=function(a,b,c){return a=+a,b>>>=0,c||s(this,a,b,4,2147483647,-2147483648),d.TYPED_ARRAY_SUPPORT?(this[b]=a,this[b+1]=a>>>8,this[b+2]=a>>>16,this[b+3]=a>>>24):u(this,a,b,!0),b+4},d.prototype.writeInt32BE=function(a,b,c){return a=+a,b>>>=0,c||s(this,a,b,4,2147483647,-2147483648),0>a&&(a=4294967295+a+1),d.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=a):u(this,a,b,!1),b+4},d.prototype.writeFloatLE=function(a,b,c){return w(this,a,b,!0,c)},d.prototype.writeFloatBE=function(a,b,c){return w(this,a,b,!1,c)},d.prototype.writeDoubleLE=function(a,b,c){return x(this,a,b,!0,c)},d.prototype.writeDoubleBE=function(a,b,c){return x(this,a,b,!1,c)},d.prototype.copy=function(a,b,c,e){var f=this;if(c||(c=0),e||0===e||(e=this.length),b>=a.length&&(b=a.length),b||(b=0),e>0&&c>e&&(e=c),e===c)return 0;if(0===a.length||0===f.length)return 0;if(0>b)throw new RangeError("targetStart out of bounds");if(0>c||c>=f.length)throw new RangeError("sourceStart out of bounds");if(0>e)throw new RangeError("sourceEnd out of bounds");e>this.length&&(e=this.length),a.length-b<e-c&&(e=a.length-b+c);var g=e-c;if(1e3>g||!d.TYPED_ARRAY_SUPPORT)for(var h=0;g>h;h++)a[h+b]=this[h+c];else a._set(this.subarray(c,c+g),b);return g},d.prototype.fill=function(a,b,c){if(a||(a=0),b||(b=0),c||(c=this.length),b>c)throw new RangeError("end < start");if(c!==b&&0!==this.length){if(0>b||b>=this.length)throw new RangeError("start out of bounds");if(0>c||c>this.length)throw new RangeError("end out of bounds");var d;if("number"==typeof a)for(d=b;c>d;d++)this[d]=a;else{var e=C(a.toString()),f=e.length;for(d=b;c>d;d++)this[d]=e[d%f]}return this}},d.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(d.TYPED_ARRAY_SUPPORT)return new d(this).buffer;for(var a=new Uint8Array(this.length),b=0,c=a.length;c>b;b+=1)a[b]=this[b];return a.buffer}throw new TypeError("Buffer.toArrayBuffer not supported in this browser")};var N=d.prototype;d._augment=function(a){return a.constructor=d,a._isBuffer=!0,a._get=a.get,a._set=a.set,a.get=N.get,a.set=N.set,a.write=N.write,a.toString=N.toString,a.toLocaleString=N.toString,a.toJSON=N.toJSON,a.equals=N.equals,a.compare=N.compare,a.copy=N.copy,a.slice=N.slice,a.readUIntLE=N.readUIntLE,a.readUIntBE=N.readUIntBE,a.readUInt8=N.readUInt8,a.readUInt16LE=N.readUInt16LE,a.readUInt16BE=N.readUInt16BE,a.readUInt32LE=N.readUInt32LE,a.readUInt32BE=N.readUInt32BE,a.readIntLE=N.readIntLE,a.readIntBE=N.readIntBE,a.readInt8=N.readInt8,a.readInt16LE=N.readInt16LE,a.readInt16BE=N.readInt16BE,a.readInt32LE=N.readInt32LE,a.readInt32BE=N.readInt32BE,a.readFloatLE=N.readFloatLE,a.readFloatBE=N.readFloatBE,a.readDoubleLE=N.readDoubleLE,a.readDoubleBE=N.readDoubleBE,a.writeUInt8=N.writeUInt8,a.writeUIntLE=N.writeUIntLE,a.writeUIntBE=N.writeUIntBE,a.writeUInt16LE=N.writeUInt16LE,a.writeUInt16BE=N.writeUInt16BE,a.writeUInt32LE=N.writeUInt32LE,a.writeUInt32BE=N.writeUInt32BE,a.writeIntLE=N.writeIntLE,a.writeIntBE=N.writeIntBE,a.writeInt8=N.writeInt8,a.writeInt16LE=N.writeInt16LE,a.writeInt16BE=N.writeInt16BE,a.writeInt32LE=N.writeInt32LE,a.writeInt32BE=N.writeInt32BE,a.writeFloatLE=N.writeFloatLE,a.writeFloatBE=N.writeFloatBE,a.writeDoubleLE=N.writeDoubleLE,a.writeDoubleBE=N.writeDoubleBE,a.fill=N.fill,a.inspect=N.inspect,a.toArrayBuffer=N.toArrayBuffer,a};var O=/[^+\/0-9A-z\-]/g},{"base64-js":84,ieee754:85,"is-array":86}],84:[function(a,b,c){var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";!function(a){"use strict";function b(a){var b=a.charCodeAt(0);return b===g||b===l?62:b===h||b===m?63:i>b?-1:i+10>b?b-i+26+26:k+26>b?b-k:j+26>b?b-j+26:void 0}function c(a){function c(a){j[l++]=a}var d,e,g,h,i,j;if(a.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var k=a.length;i="="===a.charAt(k-2)?2:"="===a.charAt(k-1)?1:0,j=new f(3*a.length/4-i),g=i>0?a.length-4:a.length;var l=0;for(d=0,e=0;g>d;d+=4,e+=3)h=b(a.charAt(d))<<18|b(a.charAt(d+1))<<12|b(a.charAt(d+2))<<6|b(a.charAt(d+3)),c((16711680&h)>>16),c((65280&h)>>8),c(255&h);return 2===i?(h=b(a.charAt(d))<<2|b(a.charAt(d+1))>>4,c(255&h)):1===i&&(h=b(a.charAt(d))<<10|b(a.charAt(d+1))<<4|b(a.charAt(d+2))>>2,c(h>>8&255),c(255&h)),j}function e(a){function b(a){return d.charAt(a)}function c(a){return b(a>>18&63)+b(a>>12&63)+b(a>>6&63)+b(63&a)}var e,f,g,h=a.length%3,i="";for(e=0,g=a.length-h;g>e;e+=3)f=(a[e]<<16)+(a[e+1]<<8)+a[e+2],i+=c(f);switch(h){case 1:f=a[a.length-1],i+=b(f>>2),i+=b(f<<4&63),i+="==";break;case 2:f=(a[a.length-2]<<8)+a[a.length-1],i+=b(f>>10),i+=b(f>>4&63),i+=b(f<<2&63),i+="="}return i}var f="undefined"!=typeof Uint8Array?Uint8Array:Array,g="+".charCodeAt(0),h="/".charCodeAt(0),i="0".charCodeAt(0),j="a".charCodeAt(0),k="A".charCodeAt(0),l="-".charCodeAt(0),m="_".charCodeAt(0);a.toByteArray=c,a.fromByteArray=e}("undefined"==typeof c?this.base64js={}:c)},{}],85:[function(a,b,c){c.read=function(a,b,c,d,e){var f,g,h=8*e-d-1,i=(1<<h)-1,j=i>>1,k=-7,l=c?e-1:0,m=c?-1:1,n=a[b+l];for(l+=m,f=n&(1<<-k)-1,n>>=-k,k+=h;k>0;f=256*f+a[b+l],l+=m,k-=8);for(g=f&(1<<-k)-1,f>>=-k,k+=d;k>0;g=256*g+a[b+l],l+=m,k-=8);if(0===f)f=1-j;else{if(f===i)return g?0/0:1/0*(n?-1:1);g+=Math.pow(2,d),f-=j}return(n?-1:1)*g*Math.pow(2,f-d)},c.write=function(a,b,c,d,e,f){var g,h,i,j=8*f-e-1,k=(1<<j)-1,l=k>>1,m=23===e?Math.pow(2,-24)-Math.pow(2,-77):0,n=d?0:f-1,o=d?1:-1,p=0>b||0===b&&0>1/b?1:0;for(b=Math.abs(b),isNaN(b)||1/0===b?(h=isNaN(b)?1:0,g=k):(g=Math.floor(Math.log(b)/Math.LN2),b*(i=Math.pow(2,-g))<1&&(g--,i*=2),b+=g+l>=1?m/i:m*Math.pow(2,1-l),b*i>=2&&(g++,i/=2),g+l>=k?(h=0,g=k):g+l>=1?(h=(b*i-1)*Math.pow(2,e),g+=l):(h=b*Math.pow(2,l-1)*Math.pow(2,e),g=0));e>=8;a[c+n]=255&h,n+=o,h/=256,e-=8);for(g=g<<e|h,j+=e;j>0;a[c+n]=255&g,n+=o,g/=256,j-=8);a[c+n-o]|=128*p}},{}],86:[function(a,b){var c=Array.isArray,d=Object.prototype.toString;b.exports=c||function(a){return!!a&&"[object Array]"==d.call(a)}},{}],87:[function(a,b){function c(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function d(a){return"function"==typeof a}function e(a){return"number"==typeof a}function f(a){return"object"==typeof a&&null!==a}function g(a){return void 0===a}b.exports=c,c.EventEmitter=c,c.prototype._events=void 0,c.prototype._maxListeners=void 0,c.defaultMaxListeners=10,c.prototype.setMaxListeners=function(a){if(!e(a)||0>a||isNaN(a))throw TypeError("n must be a positive number");return this._maxListeners=a,this},c.prototype.emit=function(a){var b,c,e,h,i,j;if(this._events||(this._events={}),"error"===a&&(!this._events.error||f(this._events.error)&&!this._events.error.length)){if(b=arguments[1],b instanceof Error)throw b;throw TypeError('Uncaught, unspecified "error" event.')}if(c=this._events[a],g(c))return!1;if(d(c))switch(arguments.length){case 1:c.call(this);break;case 2:c.call(this,arguments[1]);break;case 3:c.call(this,arguments[1],arguments[2]);break;default:for(e=arguments.length,h=new Array(e-1),i=1;e>i;i++)h[i-1]=arguments[i];c.apply(this,h)}else if(f(c)){for(e=arguments.length,h=new Array(e-1),i=1;e>i;i++)h[i-1]=arguments[i];for(j=c.slice(),e=j.length,i=0;e>i;i++)j[i].apply(this,h)}return!0},c.prototype.addListener=function(a,b){var e;if(!d(b))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",a,d(b.listener)?b.listener:b),this._events[a]?f(this._events[a])?this._events[a].push(b):this._events[a]=[this._events[a],b]:this._events[a]=b,f(this._events[a])&&!this._events[a].warned){var e;e=g(this._maxListeners)?c.defaultMaxListeners:this._maxListeners,e&&e>0&&this._events[a].length>e&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),"function"==typeof console.trace&&console.trace())}return this},c.prototype.on=c.prototype.addListener,c.prototype.once=function(a,b){function c(){this.removeListener(a,c),e||(e=!0,b.apply(this,arguments))}if(!d(b))throw TypeError("listener must be a function");var e=!1;return c.listener=b,this.on(a,c),this},c.prototype.removeListener=function(a,b){var c,e,g,h;if(!d(b))throw TypeError("listener must be a function");if(!this._events||!this._events[a])return this;if(c=this._events[a],g=c.length,e=-1,c===b||d(c.listener)&&c.listener===b)delete this._events[a],this._events.removeListener&&this.emit("removeListener",a,b);else if(f(c)){for(h=g;h-->0;)if(c[h]===b||c[h].listener&&c[h].listener===b){e=h;break}if(0>e)return this;1===c.length?(c.length=0,delete this._events[a]):c.splice(e,1),this._events.removeListener&&this.emit("removeListener",a,b)}return this},c.prototype.removeAllListeners=function(a){var b,c;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[a]&&delete this._events[a],this;if(0===arguments.length){for(b in this._events)"removeListener"!==b&&this.removeAllListeners(b);return this.removeAllListeners("removeListener"),this._events={},this}if(c=this._events[a],d(c))this.removeListener(a,c);else for(;c.length;)this.removeListener(a,c[c.length-1]);return delete this._events[a],this},c.prototype.listeners=function(a){var b;return b=this._events&&this._events[a]?d(this._events[a])?[this._events[a]]:this._events[a].slice():[]},c.listenerCount=function(a,b){var c;return c=a._events&&a._events[b]?d(a._events[b])?1:a._events[b].length:0}},{}],88:[function(a,b){b.exports="function"==typeof Object.create?function(a,b){a.super_=b,a.prototype=Object.create(b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}})}:function(a,b){a.super_=b;var c=function(){};c.prototype=b.prototype,a.prototype=new c,a.prototype.constructor=a}},{}],89:[function(a,b){b.exports=Array.isArray||function(a){return"[object Array]"==Object.prototype.toString.call(a)}},{}],90:[function(a,b,c){(function(a){function b(a,b){for(var c=0,d=a.length-1;d>=0;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c--;c)a.unshift("..");return a}function d(a,b){if(a.filter)return a.filter(b);for(var c=[],d=0;d<a.length;d++)b(a[d],d,a)&&c.push(a[d]);return c}var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,f=function(a){return e.exec(a).slice(1)};c.resolve=function(){for(var c="",e=!1,f=arguments.length-1;f>=-1&&!e;f--){var g=f>=0?arguments[f]:a.cwd();if("string"!=typeof g)throw new TypeError("Arguments to path.resolve must be strings");g&&(c=g+"/"+c,e="/"===g.charAt(0))}return c=b(d(c.split("/"),function(a){return!!a}),!e).join("/"),(e?"/":"")+c||"."},c.normalize=function(a){var e=c.isAbsolute(a),f="/"===g(a,-1);return a=b(d(a.split("/"),function(a){return!!a}),!e).join("/"),a||e||(a="."),a&&f&&(a+="/"),(e?"/":"")+a},c.isAbsolute=function(a){return"/"===a.charAt(0)},c.join=function(){var a=Array.prototype.slice.call(arguments,0);return c.normalize(d(a,function(a){if("string"!=typeof a)throw new TypeError("Arguments to path.join must be strings");return a}).join("/"))},c.relative=function(a,b){function d(a){for(var b=0;b<a.length&&""===a[b];b++);for(var c=a.length-1;c>=0&&""===a[c];c--);return b>c?[]:a.slice(b,c-b+1)}a=c.resolve(a).substr(1),b=c.resolve(b).substr(1);for(var e=d(a.split("/")),f=d(b.split("/")),g=Math.min(e.length,f.length),h=g,i=0;g>i;i++)if(e[i]!==f[i]){h=i;break}for(var j=[],i=h;i<e.length;i++)j.push("..");return j=j.concat(f.slice(h)),j.join("/")},c.sep="/",c.delimiter=":",c.dirname=function(a){var b=f(a),c=b[0],d=b[1];return c||d?(d&&(d=d.substr(0,d.length-1)),c+d):"."},c.basename=function(a,b){var c=f(a)[2];return b&&c.substr(-1*b.length)===b&&(c=c.substr(0,c.length-b.length)),c},c.extname=function(a){return f(a)[3]};var g="b"==="ab".substr(-1)?function(a,b,c){return a.substr(b,c)}:function(a,b,c){return 0>b&&(b=a.length+b),a.substr(b,c)}}).call(this,a("_process"))},{_process:91}],91:[function(a,b){function c(){if(!g){g=!0;for(var a,b=f.length;b;){a=f,f=[];for(var c=-1;++c<b;)a[c]();b=f.length}g=!1}}function d(){}var e=b.exports={},f=[],g=!1;e.nextTick=function(a){f.push(a),g||setTimeout(c,0)},e.title="browser",e.browser=!0,e.env={},e.argv=[],e.version="",e.on=d,e.addListener=d,e.once=d,e.off=d,e.removeListener=d,e.removeAllListeners=d,e.emit=d,e.binding=function(){throw new Error("process.binding is not supported")},e.cwd=function(){return"/"},e.chdir=function(){throw new Error("process.chdir is not supported")},e.umask=function(){return 0}},{}],92:[function(a,b){b.exports=a("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":93}],93:[function(a,b){(function(c){function d(a){return this instanceof d?(i.call(this,a),j.call(this,a),a&&a.readable===!1&&(this.readable=!1),a&&a.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,a&&a.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once("end",e)):new d(a)}function e(){this.allowHalfOpen||this._writableState.ended||c.nextTick(this.end.bind(this))}function f(a,b){for(var c=0,d=a.length;d>c;c++)b(a[c],c)}b.exports=d;var g=Object.keys||function(a){var b=[];for(var c in a)b.push(c);return b},h=a("core-util-is");h.inherits=a("inherits");var i=a("./_stream_readable"),j=a("./_stream_writable");h.inherits(d,i),f(g(j.prototype),function(a){d.prototype[a]||(d.prototype[a]=j.prototype[a])})}).call(this,a("_process"))},{"./_stream_readable":95,"./_stream_writable":97,_process:91,"core-util-is":98,inherits:88}],94:[function(a,b){function c(a){return this instanceof c?void d.call(this,a):new c(a)}b.exports=c;var d=a("./_stream_transform"),e=a("core-util-is");e.inherits=a("inherits"),e.inherits(c,d),c.prototype._transform=function(a,b,c){c(null,a)}},{"./_stream_transform":96,"core-util-is":98,inherits:88}],95:[function(a,b){(function(c){function d(b){b=b||{};var c=b.highWaterMark;this.highWaterMark=c||0===c?c:16384,this.highWaterMark=~~this.highWaterMark,this.buffer=[],this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=!1,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.calledRead=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.objectMode=!!b.objectMode,this.defaultEncoding=b.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=a("string_decoder/").StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function e(a){return this instanceof e?(this._readableState=new d(a,this),this.readable=!0,void A.call(this)):new e(a)}function f(a,b,c,d,e){var f=j(b,c);if(f)a.emit("error",f);else if(null===c||void 0===c)b.reading=!1,b.ended||k(a,b);else if(b.objectMode||c&&c.length>0)if(b.ended&&!e){var h=new Error("stream.push() after EOF");
+a.emit("error",h)}else if(b.endEmitted&&e){var h=new Error("stream.unshift() after end event");a.emit("error",h)}else!b.decoder||e||d||(c=b.decoder.write(c)),b.length+=b.objectMode?1:c.length,e?b.buffer.unshift(c):(b.reading=!1,b.buffer.push(c)),b.needReadable&&l(a),n(a,b);else e||(b.reading=!1);return g(b)}function g(a){return!a.ended&&(a.needReadable||a.length<a.highWaterMark||0===a.length)}function h(a){if(a>=D)a=D;else{a--;for(var b=1;32>b;b<<=1)a|=a>>b;a++}return a}function i(a,b){return 0===b.length&&b.ended?0:b.objectMode?0===a?0:1:null===a||isNaN(a)?b.flowing&&b.buffer.length?b.buffer[0].length:b.length:0>=a?0:(a>b.highWaterMark&&(b.highWaterMark=h(a)),a>b.length?b.ended?b.length:(b.needReadable=!0,0):a)}function j(a,b){var c=null;return y.isBuffer(b)||"string"==typeof b||null===b||void 0===b||a.objectMode||(c=new TypeError("Invalid non-string/buffer chunk")),c}function k(a,b){if(b.decoder&&!b.ended){var c=b.decoder.end();c&&c.length&&(b.buffer.push(c),b.length+=b.objectMode?1:c.length)}b.ended=!0,b.length>0?l(a):u(a)}function l(a){var b=a._readableState;b.needReadable=!1,b.emittedReadable||(b.emittedReadable=!0,b.sync?c.nextTick(function(){m(a)}):m(a))}function m(a){a.emit("readable")}function n(a,b){b.readingMore||(b.readingMore=!0,c.nextTick(function(){o(a,b)}))}function o(a,b){for(var c=b.length;!b.reading&&!b.flowing&&!b.ended&&b.length<b.highWaterMark&&(a.read(0),c!==b.length);)c=b.length;b.readingMore=!1}function p(a){return function(){var b=a._readableState;b.awaitDrain--,0===b.awaitDrain&&q(a)}}function q(a){function b(a){var b=a.write(c);!1===b&&d.awaitDrain++}var c,d=a._readableState;for(d.awaitDrain=0;d.pipesCount&&null!==(c=a.read());)if(1===d.pipesCount?b(d.pipes,0,null):v(d.pipes,b),a.emit("data",c),d.awaitDrain>0)return;return 0===d.pipesCount?(d.flowing=!1,void(z.listenerCount(a,"data")>0&&s(a))):void(d.ranOut=!0)}function r(){this._readableState.ranOut&&(this._readableState.ranOut=!1,q(this))}function s(a,b){var d=a._readableState;if(d.flowing)throw new Error("Cannot switch to old mode now.");var e=b||!1,f=!1;a.readable=!0,a.pipe=A.prototype.pipe,a.on=a.addListener=A.prototype.on,a.on("readable",function(){f=!0;for(var b;!e&&null!==(b=a.read());)a.emit("data",b);null===b&&(f=!1,a._readableState.needReadable=!0)}),a.pause=function(){e=!0,this.emit("pause")},a.resume=function(){e=!1,f?c.nextTick(function(){a.emit("readable")}):this.read(0),this.emit("resume")},a.emit("readable")}function t(a,b){var c,d=b.buffer,e=b.length,f=!!b.decoder,g=!!b.objectMode;if(0===d.length)return null;if(0===e)c=null;else if(g)c=d.shift();else if(!a||a>=e)c=f?d.join(""):y.concat(d,e),d.length=0;else if(a<d[0].length){var h=d[0];c=h.slice(0,a),d[0]=h.slice(a)}else if(a===d[0].length)c=d.shift();else{c=f?"":new y(a);for(var i=0,j=0,k=d.length;k>j&&a>i;j++){var h=d[0],l=Math.min(a-i,h.length);f?c+=h.slice(0,l):h.copy(c,i,0,l),l<h.length?d[0]=h.slice(l):d.shift(),i+=l}}return c}function u(a){var b=a._readableState;if(b.length>0)throw new Error("endReadable called on non-empty stream");!b.endEmitted&&b.calledRead&&(b.ended=!0,c.nextTick(function(){b.endEmitted||0!==b.length||(b.endEmitted=!0,a.readable=!1,a.emit("end"))}))}function v(a,b){for(var c=0,d=a.length;d>c;c++)b(a[c],c)}function w(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1}b.exports=e;var x=a("isarray"),y=a("buffer").Buffer;e.ReadableState=d;var z=a("events").EventEmitter;z.listenerCount||(z.listenerCount=function(a,b){return a.listeners(b).length});var A=a("stream"),B=a("core-util-is");B.inherits=a("inherits");var C;B.inherits(e,A),e.prototype.push=function(a,b){var c=this._readableState;return"string"!=typeof a||c.objectMode||(b=b||c.defaultEncoding,b!==c.encoding&&(a=new y(a,b),b="")),f(this,c,a,b,!1)},e.prototype.unshift=function(a){var b=this._readableState;return f(this,b,a,"",!0)},e.prototype.setEncoding=function(b){C||(C=a("string_decoder/").StringDecoder),this._readableState.decoder=new C(b),this._readableState.encoding=b};var D=8388608;e.prototype.read=function(a){var b=this._readableState;b.calledRead=!0;var c,d=a;if(("number"!=typeof a||a>0)&&(b.emittedReadable=!1),0===a&&b.needReadable&&(b.length>=b.highWaterMark||b.ended))return l(this),null;if(a=i(a,b),0===a&&b.ended)return c=null,b.length>0&&b.decoder&&(c=t(a,b),b.length-=c.length),0===b.length&&u(this),c;var e=b.needReadable;return b.length-a<=b.highWaterMark&&(e=!0),(b.ended||b.reading)&&(e=!1),e&&(b.reading=!0,b.sync=!0,0===b.length&&(b.needReadable=!0),this._read(b.highWaterMark),b.sync=!1),e&&!b.reading&&(a=i(d,b)),c=a>0?t(a,b):null,null===c&&(b.needReadable=!0,a=0),b.length-=a,0!==b.length||b.ended||(b.needReadable=!0),b.ended&&!b.endEmitted&&0===b.length&&u(this),c},e.prototype._read=function(){this.emit("error",new Error("not implemented"))},e.prototype.pipe=function(a,b){function d(a){a===k&&f()}function e(){a.end()}function f(){a.removeListener("close",h),a.removeListener("finish",i),a.removeListener("drain",o),a.removeListener("error",g),a.removeListener("unpipe",d),k.removeListener("end",e),k.removeListener("end",f),(!a._writableState||a._writableState.needDrain)&&o()}function g(b){j(),a.removeListener("error",g),0===z.listenerCount(a,"error")&&a.emit("error",b)}function h(){a.removeListener("finish",i),j()}function i(){a.removeListener("close",h),j()}function j(){k.unpipe(a)}var k=this,l=this._readableState;switch(l.pipesCount){case 0:l.pipes=a;break;case 1:l.pipes=[l.pipes,a];break;default:l.pipes.push(a)}l.pipesCount+=1;var m=(!b||b.end!==!1)&&a!==c.stdout&&a!==c.stderr,n=m?e:f;l.endEmitted?c.nextTick(n):k.once("end",n),a.on("unpipe",d);var o=p(k);return a.on("drain",o),a._events&&a._events.error?x(a._events.error)?a._events.error.unshift(g):a._events.error=[g,a._events.error]:a.on("error",g),a.once("close",h),a.once("finish",i),a.emit("pipe",k),l.flowing||(this.on("readable",r),l.flowing=!0,c.nextTick(function(){q(k)})),a},e.prototype.unpipe=function(a){var b=this._readableState;if(0===b.pipesCount)return this;if(1===b.pipesCount)return a&&a!==b.pipes?this:(a||(a=b.pipes),b.pipes=null,b.pipesCount=0,this.removeListener("readable",r),b.flowing=!1,a&&a.emit("unpipe",this),this);if(!a){var c=b.pipes,d=b.pipesCount;b.pipes=null,b.pipesCount=0,this.removeListener("readable",r),b.flowing=!1;for(var e=0;d>e;e++)c[e].emit("unpipe",this);return this}var e=w(b.pipes,a);return-1===e?this:(b.pipes.splice(e,1),b.pipesCount-=1,1===b.pipesCount&&(b.pipes=b.pipes[0]),a.emit("unpipe",this),this)},e.prototype.on=function(a,b){var c=A.prototype.on.call(this,a,b);if("data"!==a||this._readableState.flowing||s(this),"readable"===a&&this.readable){var d=this._readableState;d.readableListening||(d.readableListening=!0,d.emittedReadable=!1,d.needReadable=!0,d.reading?d.length&&l(this,d):this.read(0))}return c},e.prototype.addListener=e.prototype.on,e.prototype.resume=function(){s(this),this.read(0),this.emit("resume")},e.prototype.pause=function(){s(this,!0),this.emit("pause")},e.prototype.wrap=function(a){var b=this._readableState,c=!1,d=this;a.on("end",function(){if(b.decoder&&!b.ended){var a=b.decoder.end();a&&a.length&&d.push(a)}d.push(null)}),a.on("data",function(e){if(b.decoder&&(e=b.decoder.write(e)),(!b.objectMode||null!==e&&void 0!==e)&&(b.objectMode||e&&e.length)){var f=d.push(e);f||(c=!0,a.pause())}});for(var e in a)"function"==typeof a[e]&&"undefined"==typeof this[e]&&(this[e]=function(b){return function(){return a[b].apply(a,arguments)}}(e));var f=["error","close","destroy","pause","resume"];return v(f,function(b){a.on(b,d.emit.bind(d,b))}),d._read=function(){c&&(c=!1,a.resume())},d},e._fromList=t}).call(this,a("_process"))},{_process:91,buffer:83,"core-util-is":98,events:87,inherits:88,isarray:89,stream:103,"string_decoder/":104}],96:[function(a,b){function c(a,b){this.afterTransform=function(a,c){return d(b,a,c)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null}function d(a,b,c){var d=a._transformState;d.transforming=!1;var e=d.writecb;if(!e)return a.emit("error",new Error("no writecb in Transform class"));d.writechunk=null,d.writecb=null,null!==c&&void 0!==c&&a.push(c),e&&e(b);var f=a._readableState;f.reading=!1,(f.needReadable||f.length<f.highWaterMark)&&a._read(f.highWaterMark)}function e(a){if(!(this instanceof e))return new e(a);g.call(this,a);var b=(this._transformState=new c(a,this),this);this._readableState.needReadable=!0,this._readableState.sync=!1,this.once("finish",function(){"function"==typeof this._flush?this._flush(function(a){f(b,a)}):f(b)})}function f(a,b){if(b)return a.emit("error",b);var c=a._writableState,d=(a._readableState,a._transformState);if(c.length)throw new Error("calling transform done when ws.length != 0");if(d.transforming)throw new Error("calling transform done when still transforming");return a.push(null)}b.exports=e;var g=a("./_stream_duplex"),h=a("core-util-is");h.inherits=a("inherits"),h.inherits(e,g),e.prototype.push=function(a,b){return this._transformState.needTransform=!1,g.prototype.push.call(this,a,b)},e.prototype._transform=function(){throw new Error("not implemented")},e.prototype._write=function(a,b,c){var d=this._transformState;if(d.writecb=c,d.writechunk=a,d.writeencoding=b,!d.transforming){var e=this._readableState;(d.needTransform||e.needReadable||e.length<e.highWaterMark)&&this._read(e.highWaterMark)}},e.prototype._read=function(){var a=this._transformState;null!==a.writechunk&&a.writecb&&!a.transforming?(a.transforming=!0,this._transform(a.writechunk,a.writeencoding,a.afterTransform)):a.needTransform=!0}},{"./_stream_duplex":93,"core-util-is":98,inherits:88}],97:[function(a,b){(function(c){function d(a,b,c){this.chunk=a,this.encoding=b,this.callback=c}function e(a,b){a=a||{};var c=a.highWaterMark;this.highWaterMark=c||0===c?c:16384,this.objectMode=!!a.objectMode,this.highWaterMark=~~this.highWaterMark,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var d=a.decodeStrings===!1;this.decodeStrings=!d,this.defaultEncoding=a.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){n(b,a)},this.writecb=null,this.writelen=0,this.buffer=[],this.errorEmitted=!1}function f(b){var c=a("./_stream_duplex");return this instanceof f||this instanceof c?(this._writableState=new e(b,this),this.writable=!0,void w.call(this)):new f(b)}function g(a,b,d){var e=new Error("write after end");a.emit("error",e),c.nextTick(function(){d(e)})}function h(a,b,d,e){var f=!0;if(!u.isBuffer(d)&&"string"!=typeof d&&null!==d&&void 0!==d&&!b.objectMode){var g=new TypeError("Invalid non-string/buffer chunk");a.emit("error",g),c.nextTick(function(){e(g)}),f=!1}return f}function i(a,b,c){return a.objectMode||a.decodeStrings===!1||"string"!=typeof b||(b=new u(b,c)),b}function j(a,b,c,e,f){c=i(b,c,e),u.isBuffer(c)&&(e="buffer");var g=b.objectMode?1:c.length;b.length+=g;var h=b.length<b.highWaterMark;return h||(b.needDrain=!0),b.writing?b.buffer.push(new d(c,e,f)):k(a,b,g,c,e,f),h}function k(a,b,c,d,e,f){b.writelen=c,b.writecb=f,b.writing=!0,b.sync=!0,a._write(d,e,b.onwrite),b.sync=!1}function l(a,b,d,e,f){d?c.nextTick(function(){f(e)}):f(e),a._writableState.errorEmitted=!0,a.emit("error",e)}function m(a){a.writing=!1,a.writecb=null,a.length-=a.writelen,a.writelen=0}function n(a,b){var d=a._writableState,e=d.sync,f=d.writecb;if(m(d),b)l(a,d,e,b,f);else{var g=r(a,d);g||d.bufferProcessing||!d.buffer.length||q(a,d),e?c.nextTick(function(){o(a,d,g,f)}):o(a,d,g,f)}}function o(a,b,c,d){c||p(a,b),d(),c&&s(a,b)}function p(a,b){0===b.length&&b.needDrain&&(b.needDrain=!1,a.emit("drain"))}function q(a,b){b.bufferProcessing=!0;for(var c=0;c<b.buffer.length;c++){var d=b.buffer[c],e=d.chunk,f=d.encoding,g=d.callback,h=b.objectMode?1:e.length;if(k(a,b,h,e,f,g),b.writing){c++;break}}b.bufferProcessing=!1,c<b.buffer.length?b.buffer=b.buffer.slice(c):b.buffer.length=0}function r(a,b){return b.ending&&0===b.length&&!b.finished&&!b.writing}function s(a,b){var c=r(a,b);return c&&(b.finished=!0,a.emit("finish")),c}function t(a,b,d){b.ending=!0,s(a,b),d&&(b.finished?c.nextTick(d):a.once("finish",d)),b.ended=!0}b.exports=f;var u=a("buffer").Buffer;f.WritableState=e;var v=a("core-util-is");v.inherits=a("inherits");var w=a("stream");v.inherits(f,w),f.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe. Not readable."))},f.prototype.write=function(a,b,c){var d=this._writableState,e=!1;return"function"==typeof b&&(c=b,b=null),u.isBuffer(a)?b="buffer":b||(b=d.defaultEncoding),"function"!=typeof c&&(c=function(){}),d.ended?g(this,d,c):h(this,d,a,c)&&(e=j(this,d,a,b,c)),e},f.prototype._write=function(a,b,c){c(new Error("not implemented"))},f.prototype.end=function(a,b,c){var d=this._writableState;"function"==typeof a?(c=a,a=null,b=null):"function"==typeof b&&(c=b,b=null),"undefined"!=typeof a&&null!==a&&this.write(a,b),d.ending||d.finished||t(this,d,c)}}).call(this,a("_process"))},{"./_stream_duplex":93,_process:91,buffer:83,"core-util-is":98,inherits:88,stream:103}],98:[function(a,b,c){(function(a){function b(a){return Array.isArray(a)}function d(a){return"boolean"==typeof a}function e(a){return null===a}function f(a){return null==a}function g(a){return"number"==typeof a}function h(a){return"string"==typeof a}function i(a){return"symbol"==typeof a}function j(a){return void 0===a}function k(a){return l(a)&&"[object RegExp]"===r(a)}function l(a){return"object"==typeof a&&null!==a}function m(a){return l(a)&&"[object Date]"===r(a)}function n(a){return l(a)&&("[object Error]"===r(a)||a instanceof Error)}function o(a){return"function"==typeof a}function p(a){return null===a||"boolean"==typeof a||"number"==typeof a||"string"==typeof a||"symbol"==typeof a||"undefined"==typeof a}function q(b){return a.isBuffer(b)}function r(a){return Object.prototype.toString.call(a)}c.isArray=b,c.isBoolean=d,c.isNull=e,c.isNullOrUndefined=f,c.isNumber=g,c.isString=h,c.isSymbol=i,c.isUndefined=j,c.isRegExp=k,c.isObject=l,c.isDate=m,c.isError=n,c.isFunction=o,c.isPrimitive=p,c.isBuffer=q}).call(this,a("buffer").Buffer)},{buffer:83}],99:[function(a,b){b.exports=a("./lib/_stream_passthrough.js")},{"./lib/_stream_passthrough.js":94}],100:[function(a,b,c){var d=a("stream");c=b.exports=a("./lib/_stream_readable.js"),c.Stream=d,c.Readable=c,c.Writable=a("./lib/_stream_writable.js"),c.Duplex=a("./lib/_stream_duplex.js"),c.Transform=a("./lib/_stream_transform.js"),c.PassThrough=a("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":93,"./lib/_stream_passthrough.js":94,"./lib/_stream_readable.js":95,"./lib/_stream_transform.js":96,"./lib/_stream_writable.js":97,stream:103}],101:[function(a,b){b.exports=a("./lib/_stream_transform.js")},{"./lib/_stream_transform.js":96}],102:[function(a,b){b.exports=a("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":97}],103:[function(a,b){function c(){d.call(this)}b.exports=c;var d=a("events").EventEmitter,e=a("inherits");e(c,d),c.Readable=a("readable-stream/readable.js"),c.Writable=a("readable-stream/writable.js"),c.Duplex=a("readable-stream/duplex.js"),c.Transform=a("readable-stream/transform.js"),c.PassThrough=a("readable-stream/passthrough.js"),c.Stream=c,c.prototype.pipe=function(a,b){function c(b){a.writable&&!1===a.write(b)&&j.pause&&j.pause()}function e(){j.readable&&j.resume&&j.resume()}function f(){k||(k=!0,a.end())}function g(){k||(k=!0,"function"==typeof a.destroy&&a.destroy())}function h(a){if(i(),0===d.listenerCount(this,"error"))throw a}function i(){j.removeListener("data",c),a.removeListener("drain",e),j.removeListener("end",f),j.removeListener("close",g),j.removeListener("error",h),a.removeListener("error",h),j.removeListener("end",i),j.removeListener("close",i),a.removeListener("close",i)}var j=this;j.on("data",c),a.on("drain",e),a._isStdio||b&&b.end===!1||(j.on("end",f),j.on("close",g));var k=!1;return j.on("error",h),a.on("error",h),j.on("end",i),j.on("close",i),a.on("close",i),a.emit("pipe",j),a}},{events:87,inherits:88,"readable-stream/duplex.js":92,"readable-stream/passthrough.js":99,"readable-stream/readable.js":100,"readable-stream/transform.js":101,"readable-stream/writable.js":102}],104:[function(a,b,c){function d(a){if(a&&!i(a))throw new Error("Unknown encoding: "+a)}function e(a){return a.toString(this.encoding)}function f(a){this.charReceived=a.length%2,this.charLength=this.charReceived?2:0}function g(a){this.charReceived=a.length%3,this.charLength=this.charReceived?3:0}var h=a("buffer").Buffer,i=h.isEncoding||function(a){switch(a&&a.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},j=c.StringDecoder=function(a){switch(this.encoding=(a||"utf8").toLowerCase().replace(/[-_]/,""),d(a),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=f;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=g;break;default:return void(this.write=e)}this.charBuffer=new h(6),this.charReceived=0,this.charLength=0};j.prototype.write=function(a){for(var b="";this.charLength;){var c=a.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:a.length;if(a.copy(this.charBuffer,this.charReceived,0,c),this.charReceived+=c,this.charReceived<this.charLength)return"";a=a.slice(c,a.length),b=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var d=b.charCodeAt(b.length-1);if(!(d>=55296&&56319>=d)){if(this.charReceived=this.charLength=0,0===a.length)return b;break}this.charLength+=this.surrogateSize,b=""}this.detectIncompleteChar(a);var e=a.length;this.charLength&&(a.copy(this.charBuffer,0,a.length-this.charReceived,e),e-=this.charReceived),b+=a.toString(this.encoding,0,e);var e=b.length-1,d=b.charCodeAt(e);if(d>=55296&&56319>=d){var f=this.surrogateSize;return this.charLength+=f,this.charReceived+=f,this.charBuffer.copy(this.charBuffer,f,0,f),a.copy(this.charBuffer,0,0,f),b.substring(0,e)}return b},j.prototype.detectIncompleteChar=function(a){for(var b=a.length>=3?3:a.length;b>0;b--){var c=a[a.length-b];if(1==b&&c>>5==6){this.charLength=2;break}if(2>=b&&c>>4==14){this.charLength=3;break}if(3>=b&&c>>3==30){this.charLength=4;break}}this.charReceived=b},j.prototype.end=function(a){var b="";if(a&&a.length&&(b=this.write(a)),this.charReceived){var c=this.charReceived,d=this.charBuffer,e=this.encoding;b+=d.slice(0,c).toString(e)}return b}},{buffer:83}],105:[function(a,b){b.exports=function(a){return a&&"object"==typeof a&&"function"==typeof a.copy&&"function"==typeof a.fill&&"function"==typeof a.readUInt8}},{}],106:[function(a,b,c){(function(b,d){function e(a,b){var d={seen:[],stylize:g};return arguments.length>=3&&(d.depth=arguments[2]),arguments.length>=4&&(d.colors=arguments[3]),p(b)?d.showHidden=b:b&&c._extend(d,b),v(d.showHidden)&&(d.showHidden=!1),v(d.depth)&&(d.depth=2),v(d.colors)&&(d.colors=!1),v(d.customInspect)&&(d.customInspect=!0),d.colors&&(d.stylize=f),i(d,a,d.depth)}function f(a,b){var c=e.styles[b];return c?"["+e.colors[c][0]+"m"+a+"["+e.colors[c][1]+"m":a}function g(a){return a}function h(a){var b={};return a.forEach(function(a){b[a]=!0}),b}function i(a,b,d){if(a.customInspect&&b&&A(b.inspect)&&b.inspect!==c.inspect&&(!b.constructor||b.constructor.prototype!==b)){var e=b.inspect(d,a);return t(e)||(e=i(a,e,d)),e}var f=j(a,b);if(f)return f;var g=Object.keys(b),p=h(g);if(a.showHidden&&(g=Object.getOwnPropertyNames(b)),z(b)&&(g.indexOf("message")>=0||g.indexOf("description")>=0))return k(b);if(0===g.length){if(A(b)){var q=b.name?": "+b.name:"";return a.stylize("[Function"+q+"]","special")}if(w(b))return a.stylize(RegExp.prototype.toString.call(b),"regexp");if(y(b))return a.stylize(Date.prototype.toString.call(b),"date");if(z(b))return k(b)}var r="",s=!1,u=["{","}"];if(o(b)&&(s=!0,u=["[","]"]),A(b)){var v=b.name?": "+b.name:"";r=" [Function"+v+"]"}if(w(b)&&(r=" "+RegExp.prototype.toString.call(b)),y(b)&&(r=" "+Date.prototype.toUTCString.call(b)),z(b)&&(r=" "+k(b)),0===g.length&&(!s||0==b.length))return u[0]+r+u[1];if(0>d)return w(b)?a.stylize(RegExp.prototype.toString.call(b),"regexp"):a.stylize("[Object]","special");a.seen.push(b);var x;return x=s?l(a,b,d,p,g):g.map(function(c){return m(a,b,d,p,c,s)}),a.seen.pop(),n(x,r,u)}function j(a,b){if(v(b))return a.stylize("undefined","undefined");if(t(b)){var c="'"+JSON.stringify(b).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return a.stylize(c,"string")}return s(b)?a.stylize(""+b,"number"):p(b)?a.stylize(""+b,"boolean"):q(b)?a.stylize("null","null"):void 0}function k(a){return"["+Error.prototype.toString.call(a)+"]"}function l(a,b,c,d,e){for(var f=[],g=0,h=b.length;h>g;++g)f.push(F(b,String(g))?m(a,b,c,d,String(g),!0):"");return e.forEach(function(e){e.match(/^\d+$/)||f.push(m(a,b,c,d,e,!0))}),f}function m(a,b,c,d,e,f){var g,h,j;if(j=Object.getOwnPropertyDescriptor(b,e)||{value:b[e]},j.get?h=j.set?a.stylize("[Getter/Setter]","special"):a.stylize("[Getter]","special"):j.set&&(h=a.stylize("[Setter]","special")),F(d,e)||(g="["+e+"]"),h||(a.seen.indexOf(j.value)<0?(h=q(c)?i(a,j.value,null):i(a,j.value,c-1),h.indexOf("\n")>-1&&(h=f?h.split("\n").map(function(a){return"  "+a}).join("\n").substr(2):"\n"+h.split("\n").map(function(a){return"   "+a}).join("\n"))):h=a.stylize("[Circular]","special")),v(g)){if(f&&e.match(/^\d+$/))return h;g=JSON.stringify(""+e),g.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(g=g.substr(1,g.length-2),g=a.stylize(g,"name")):(g=g.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),g=a.stylize(g,"string"))}return g+": "+h}function n(a,b,c){var d=0,e=a.reduce(function(a,b){return d++,b.indexOf("\n")>=0&&d++,a+b.replace(/\u001b\[\d\d?m/g,"").length+1},0);return e>60?c[0]+(""===b?"":b+"\n ")+" "+a.join(",\n  ")+" "+c[1]:c[0]+b+" "+a.join(", ")+" "+c[1]}function o(a){return Array.isArray(a)}function p(a){return"boolean"==typeof a}function q(a){return null===a}function r(a){return null==a}function s(a){return"number"==typeof a}function t(a){return"string"==typeof a}function u(a){return"symbol"==typeof a}function v(a){return void 0===a}function w(a){return x(a)&&"[object RegExp]"===C(a)}function x(a){return"object"==typeof a&&null!==a}function y(a){return x(a)&&"[object Date]"===C(a)}function z(a){return x(a)&&("[object Error]"===C(a)||a instanceof Error)}function A(a){return"function"==typeof a}function B(a){return null===a||"boolean"==typeof a||"number"==typeof a||"string"==typeof a||"symbol"==typeof a||"undefined"==typeof a}function C(a){return Object.prototype.toString.call(a)}function D(a){return 10>a?"0"+a.toString(10):a.toString(10)}function E(){var a=new Date,b=[D(a.getHours()),D(a.getMinutes()),D(a.getSeconds())].join(":");return[a.getDate(),J[a.getMonth()],b].join(" ")}function F(a,b){return Object.prototype.hasOwnProperty.call(a,b)}var G=/%[sdj%]/g;c.format=function(a){if(!t(a)){for(var b=[],c=0;c<arguments.length;c++)b.push(e(arguments[c]));return b.join(" ")}for(var c=1,d=arguments,f=d.length,g=String(a).replace(G,function(a){if("%%"===a)return"%";if(c>=f)return a;switch(a){case"%s":return String(d[c++]);case"%d":return Number(d[c++]);case"%j":try{return JSON.stringify(d[c++])}catch(b){return"[Circular]"}default:return a}}),h=d[c];f>c;h=d[++c])g+=q(h)||!x(h)?" "+h:" "+e(h);return g},c.deprecate=function(a,e){function f(){if(!g){if(b.throwDeprecation)throw new Error(e);b.traceDeprecation?console.trace(e):console.error(e),g=!0}return a.apply(this,arguments)}if(v(d.process))return function(){return c.deprecate(a,e).apply(this,arguments)};if(b.noDeprecation===!0)return a;var g=!1;return f};var H,I={};c.debuglog=function(a){if(v(H)&&(H=b.env.NODE_DEBUG||""),a=a.toUpperCase(),!I[a])if(new RegExp("\\b"+a+"\\b","i").test(H)){var d=b.pid;I[a]=function(){var b=c.format.apply(c,arguments);console.error("%s %d: %s",a,d,b)}}else I[a]=function(){};return I[a]},c.inspect=e,e.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},e.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},c.isArray=o,c.isBoolean=p,c.isNull=q,c.isNullOrUndefined=r,c.isNumber=s,c.isString=t,c.isSymbol=u,c.isUndefined=v,c.isRegExp=w,c.isObject=x,c.isDate=y,c.isError=z,c.isFunction=A,c.isPrimitive=B,c.isBuffer=a("./support/isBuffer");var J=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];c.log=function(){console.log("%s - %s",E(),c.format.apply(c,arguments))},c.inherits=a("inherits"),c._extend=function(a,b){if(!b||!x(b))return a;for(var c=Object.keys(b),d=c.length;d--;)a[c[d]]=b[c[d]];return a}}).call(this,a("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":105,_process:91,inherits:88}],107:[function(a,b,c){(function(a){(function(){function d(a,b){if(a!==b){var c=a===a,d=b===b;if(a>b||!c||"undefined"==typeof a&&d)return 1;if(b>a||!d||"undefined"==typeof b&&c)return-1}return 0}function e(a,b,c){if(b!==b)return p(a,c);for(var d=(c||0)-1,e=a.length;++d<e;)if(a[d]===b)return d;return-1}function f(a,b){var c=a.length;for(a.sort(b);c--;)a[c]=a[c].value;return a}function g(a){return"string"==typeof a?a:null==a?"":a+""}function h(a){return a.charCodeAt(0)}function i(a,b){for(var c=-1,d=a.length;++c<d&&b.indexOf(a.charAt(c))>-1;);return c}function j(a,b){for(var c=a.length;c--&&b.indexOf(a.charAt(c))>-1;);return c}function k(a,b){return d(a.criteria,b.criteria)||a.index-b.index}function l(a,b){for(var c=-1,e=a.criteria,f=b.criteria,g=e.length;++c<g;){var h=d(e[c],f[c]);if(h)return h}return a.index-b.index}function m(a){return Pb[a]}function n(a){return Qb[a]}function o(a){return"\\"+Tb[a]}function p(a,b,c){for(var d=a.length,e=c?b||d:(b||0)-1;c?e--:++e<d;){var f=a[e];if(f!==f)return e}return-1}function q(a){return a&&"object"==typeof a||!1}function r(a){return 160>=a&&a>=9&&13>=a||32==a||160==a||5760==a||6158==a||a>=8192&&(8202>=a||8232==a||8233==a||8239==a||8287==a||12288==a||65279==a)}function s(a,b){for(var c=-1,d=a.length,e=-1,f=[];++c<d;)a[c]===b&&(a[c]=R,f[++e]=c);return f}function t(a,b){for(var c,d=-1,e=a.length,f=-1,g=[];++d<e;){var h=a[d],i=b?b(h,d,a):h;d&&c===i||(c=i,g[++f]=h)}return g}function u(a){for(var b=-1,c=a.length;++b<c&&r(a.charCodeAt(b)););return b}function v(a){for(var b=a.length;b--&&r(a.charCodeAt(b)););return b}function w(a){return Rb[a]}function x(a){function b(a){if(q(a)&&!Xh(a)&&!(a instanceof r)){if(a instanceof c)return a;if(_g.call(a,"__chain__")&&_g.call(a,"__wrapped__"))return Id(a)}return new c(a)}function c(a,b,c){this.__wrapped__=a,this.__actions__=c||[],this.__chain__=!!b}function r(a){this.__wrapped__=a,this.__actions__=null,this.__dir__=1,this.__dropCount__=0,this.__filtered__=!1,this.__iteratees__=null,this.__takeCount__=Dh,this.__views__=null}function Y(){var a=this.__actions__,b=this.__iteratees__,c=this.__views__,d=new r(this.__wrapped__);return d.__actions__=a?Yb(a):null,d.__dir__=this.__dir__,d.__dropCount__=this.__dropCount__,d.__filtered__=this.__filtered__,d.__iteratees__=b?Yb(b):null,d.__takeCount__=this.__takeCount__,d.__views__=c?Yb(c):null,d}function ab(){if(this.__filtered__){var a=new r(this);a.__dir__=-1,a.__filtered__=!0}else a=this.clone(),a.__dir__*=-1;return a}function cb(){var a=this.__wrapped__.value();if(!Xh(a))return Wc(a,this.__actions__);var b=this.__dir__,c=0>b,d=rd(0,a.length,this.__views__),e=d.start,f=d.end,g=f-e,h=this.__dropCount__,i=xh(g,this.__takeCount__),j=c?f:e-1,k=this.__iteratees__,l=k?k.length:0,m=0,n=[];a:for(;g--&&i>m;){j+=b;for(var o=-1,p=a[j];++o<l;){var q=k[o],r=q.iteratee,s=r(p,j,a),t=q.type;if(t==O)p=s;else if(!s){if(t==N)continue a;break a}}h?h--:n[m++]=p}return n}function Pb(){this.__data__={}}function Qb(a){return this.has(a)&&delete this.__data__[a]}function Rb(a){return"__proto__"==a?y:this.__data__[a]}function Sb(a){return"__proto__"!=a&&_g.call(this.__data__,a)}function Tb(a,b){return"__proto__"!=a&&(this.__data__[a]=b),this}function Vb(a){var b=a?a.length:0;for(this.data={hash:th(null),set:new mh};b--;)this.push(a[b])}function Wb(a,b){var c=a.data,d="string"==typeof b||Bf(b)?c.set.has(b):c.hash[b];return d?0:-1}function Xb(a){var b=this.data;"string"==typeof a||Bf(a)?b.set.add(a):b.hash[a]=!0}function Yb(a,b){var c=-1,d=a.length;for(b||(b=Mg(d));++c<d;)b[c]=a[c];return b}function $b(a,b){for(var c=-1,d=a.length;++c<d&&b(a[c],c,a)!==!1;);return a}function _b(a,b){for(var c=a.length;c--&&b(a[c],c,a)!==!1;);return a}function ac(a,b){for(var c=-1,d=a.length;++c<d;)if(!b(a[c],c,a))return!1;return!0}function bc(a,b){for(var c=-1,d=a.length,e=-1,f=[];++c<d;){var g=a[c];b(g,c,a)&&(f[++e]=g)}return f}function cc(a,b){for(var c=-1,d=a.length,e=Mg(d);++c<d;)e[c]=b(a[c],c,a);return e}function dc(a){for(var b=-1,c=a.length,d=Ch;++b<c;){var e=a[b];e>d&&(d=e)}return d}function ec(a){for(var b=-1,c=a.length,d=Dh;++b<c;){var e=a[b];d>e&&(d=e)}return d}function fc(a,b,c,d){var e=-1,f=a.length;for(d&&f&&(c=a[++e]);++e<f;)c=b(c,a[e],e,a);return c}function gc(a,b,c,d){var e=a.length;for(d&&e&&(c=a[--e]);e--;)c=b(c,a[e],e,a);return c}function hc(a,b){for(var c=-1,d=a.length;++c<d;)if(b(a[c],c,a))return!0;return!1}function ic(a,b){return"undefined"==typeof a?b:a}function jc(a,b,c,d){return"undefined"!=typeof a&&_g.call(d,c)?a:b}function kc(a,b,c){var d=_h(b);if(!c)return mc(b,a,d);for(var e=-1,f=d.length;++e<f;){var g=d[e],h=a[g],i=c(h,b[g],g,a,b);(i===i?i===h:h!==h)&&("undefined"!=typeof h||g in a)||(a[g]=i)}return a}function lc(a,b){for(var c=-1,d=a.length,e=yd(d),f=b.length,g=Mg(f);++c<f;){var h=b[c];e?(h=parseFloat(h),g[c]=wd(h,d)?a[h]:y):g[c]=a[h]}return g}function mc(a,b,c){c||(c=b,b={});for(var d=-1,e=c.length;++d<e;){var f=c[d];b[f]=a[f]}return b}function nc(a,b){for(var c=-1,d=b.length;++c<d;){var e=b[c];a[e]=kd(a[e],A,a)}return a}function oc(a,b,c){var d=typeof a;return"function"==d?"undefined"!=typeof b&&vd(a)?Zc(a,b,c):a:null==a?Bg:"object"==d?Kc(a):"undefined"==typeof b?Oc(a+""):Lc(a+"",b)}function pc(a,b,c,d,e,f,g){var h;if(c&&(h=e?c(a,d,e):c(a)),"undefined"!=typeof h)return h;if(!Bf(a))return a;var i=Xh(a);if(i){if(h=sd(a),!b)return Yb(a,h)}else{var j=bh.call(a),k=j==X;if(j!=$&&j!=S&&(!k||e))return Nb[j]?ud(a,j,b):e?a:{};if(h=td(k?{}:a),!b)return mc(a,h,_h(a))}f||(f=[]),g||(g=[]);for(var l=f.length;l--;)if(f[l]==a)return g[l];return f.push(a),g.push(h),(i?$b:Cc)(a,function(d,e){h[e]=pc(d,b,c,e,a,f,g)}),h}function qc(a,b,c,d){if("function"!=typeof a)throw new Vg(Q);return nh(function(){a.apply(y,Sc(c,d))},b)}function rc(a,b){var c=a?a.length:0,d=[];if(!c)return d;var f=-1,g=qd(),h=g==e,i=h&&b.length>=200&&Nh(b),j=b.length;i&&(g=Wb,h=!1,b=i);a:for(;++f<c;){var k=a[f];if(h&&k===k){for(var l=j;l--;)if(b[l]===k)continue a;d.push(k)}else g(b,k)<0&&d.push(k)}return d}function sc(a,b){var c=a?a.length:0;if(!yd(c))return Cc(a,b);for(var d=-1,e=Hd(a);++d<c&&b(e[d],d,e)!==!1;);return a}function tc(a,b){var c=a?a.length:0;if(!yd(c))return Dc(a,b);for(var d=Hd(a);c--&&b(d[c],c,d)!==!1;);return a}function uc(a,b){var c=!0;return sc(a,function(a,d,e){return c=!!b(a,d,e)}),c}function vc(a,b,c,d){var e=a.length;for(c=null==c?0:+c||0,0>c&&(c=-c>e?0:e+c),d="undefined"==typeof d||d>e?e:+d||0,0>d&&(d+=e),e=c>d?0:d>>>0,c>>>=0;e>c;)a[c++]=b;return a}function wc(a,b){var c=[];return sc(a,function(a,d,e){b(a,d,e)&&c.push(a)}),c}function xc(a,b,c,d){var e;return c(a,function(a,c,f){return b(a,c,f)?(e=d?c:a,!1):void 0}),e}function yc(a,b,c,d){for(var e=(d||0)-1,f=a.length,g=-1,h=[];++e<f;){var i=a[e];if(q(i)&&yd(i.length)&&(Xh(i)||tf(i))){b&&(i=yc(i,b,c));var j=-1,k=i.length;for(h.length+=k;++j<k;)h[++g]=i[j]}else c||(h[++g]=i)}return h}function zc(a,b,c){for(var d=-1,e=Hd(a),f=c(a),g=f.length;++d<g;){var h=f[d];if(b(e[h],h,e)===!1)break}return a}function Ac(a,b,c){for(var d=Hd(a),e=c(a),f=e.length;f--;){var g=e[f];if(b(d[g],g,d)===!1)break}return a}function Bc(a,b){return zc(a,b,Yf)}function Cc(a,b){return zc(a,b,_h)}function Dc(a,b){return Ac(a,b,_h)
+}function Ec(a,b){for(var c=-1,d=b.length,e=-1,f=[];++c<d;){var g=b[c];Af(a[g])&&(f[++e]=g)}return f}function Fc(a,b,c){var d=-1,e="function"==typeof b,f=a?a.length:0,g=yd(f)?Mg(f):[];return sc(a,function(a){var f=e?b:null!=a&&a[b];g[++d]=f?f.apply(a,c):y}),g}function Gc(a,b,c,d,e,f){if(a===b)return 0!==a||1/a==1/b;var g=typeof a,h=typeof b;return"function"!=g&&"object"!=g&&"function"!=h&&"object"!=h||null==a||null==b?a!==a&&b!==b:Hc(a,b,Gc,c,d,e,f)}function Hc(a,b,c,d,e,f,g){var h=Xh(a),i=Xh(b),j=T,k=T;h||(j=bh.call(a),j==S?j=$:j!=$&&(h=Jf(a))),i||(k=bh.call(b),k==S?k=$:k!=$&&(i=Jf(b)));var l=j==$,m=k==$,n=j==k;if(n&&!h&&!l)return md(a,b,j);var o=l&&_g.call(a,"__wrapped__"),p=m&&_g.call(b,"__wrapped__");if(o||p)return c(o?a.value():a,p?b.value():b,d,e,f,g);if(!n)return!1;f||(f=[]),g||(g=[]);for(var q=f.length;q--;)if(f[q]==a)return g[q]==b;f.push(a),g.push(b);var r=(h?ld:nd)(a,b,c,d,e,f,g);return f.pop(),g.pop(),r}function Ic(a,b,c,d,e){var f=b.length;if(null==a)return!f;for(var g=-1,h=!e;++g<f;)if(h&&d[g]?c[g]!==a[b[g]]:!_g.call(a,b[g]))return!1;for(g=-1;++g<f;){var i=b[g];if(h&&d[g])var j=_g.call(a,i);else{var k=a[i],l=c[g];j=e?e(k,l,i):y,"undefined"==typeof j&&(j=Gc(l,k,e,!0))}if(!j)return!1}return!0}function Jc(a,b){var c=[];return sc(a,function(a,d,e){c.push(b(a,d,e))}),c}function Kc(a){var b=_h(a),c=b.length;if(1==c){var d=b[0],e=a[d];if(zd(e))return function(a){return null!=a&&e===a[d]&&_g.call(a,d)}}for(var f=Mg(c),g=Mg(c);c--;)e=a[b[c]],f[c]=e,g[c]=zd(e);return function(a){return Ic(a,b,f,g)}}function Lc(a,b){return zd(b)?function(c){return null!=c&&c[a]===b}:function(c){return null!=c&&Gc(b,c[a],null,!0)}}function Mc(a,b,c,d,e){var f=yd(b.length)&&(Xh(b)||Jf(b));return(f?$b:Cc)(b,function(b,g,h){if(q(b))return d||(d=[]),e||(e=[]),Nc(a,h,g,Mc,c,d,e);var i=a[g],j=c?c(i,b,g,a,h):y,k="undefined"==typeof j;k&&(j=b),!f&&"undefined"==typeof j||!k&&(j===j?j===i:i!==i)||(a[g]=j)}),a}function Nc(a,b,c,d,e,f,g){for(var h=f.length,i=b[c];h--;)if(f[h]==i)return void(a[c]=g[h]);var j=a[c],k=e?e(j,i,c,a,b):y,l="undefined"==typeof k;l&&(k=i,yd(i.length)&&(Xh(i)||Jf(i))?k=Xh(j)?j:j?Yb(j):[]:Zh(i)||tf(i)?k=tf(j)?Mf(j):Zh(j)?j:{}:l=!1),f.push(i),g.push(k),l?a[c]=d(k,i,e,f,g):(k===k?k!==j:j===j)&&(a[c]=k)}function Oc(a){return function(b){return null==b?y:b[a]}}function Pc(a,b){var c=b.length,e=lc(a,b);for(b.sort(d);c--;){var f=parseFloat(b[c]);if(f!=g&&wd(f)){var g=f;oh.call(a,f,1)}}return e}function Qc(a,b){return a+ih(Bh()*(b-a+1))}function Rc(a,b,c,d,e){return e(a,function(a,e,f){c=d?(d=!1,a):b(c,a,e,f)}),c}function Sc(a,b,c){var d=-1,e=a.length;b=null==b?0:+b||0,0>b&&(b=-b>e?0:e+b),c="undefined"==typeof c||c>e?e:+c||0,0>c&&(c+=e),e=b>c?0:c-b>>>0,b>>>=0;for(var f=Mg(e);++d<e;)f[d]=a[d+b];return f}function Tc(a,b){var c;return sc(a,function(a,d,e){return c=b(a,d,e),!c}),!!c}function Uc(a,b){var c=-1,d=qd(),f=a.length,g=d==e,h=g&&f>=200,i=h&&Nh(),j=[];i?(d=Wb,g=!1):(h=!1,i=b?[]:j);a:for(;++c<f;){var k=a[c],l=b?b(k,c,a):k;if(g&&k===k){for(var m=i.length;m--;)if(i[m]===l)continue a;b&&i.push(l),j.push(k)}else d(i,l)<0&&((b||h)&&i.push(l),j.push(k))}return j}function Vc(a,b){for(var c=-1,d=b.length,e=Mg(d);++c<d;)e[c]=a[b[c]];return e}function Wc(a,b){var c=a;c instanceof r&&(c=c.value());for(var d=-1,e=b.length;++d<e;){var f=[c],g=b[d];kh.apply(f,g.args),c=g.func.apply(g.thisArg,f)}return c}function Xc(a,b,c){var d=0,e=a?a.length:d;if("number"==typeof b&&b===b&&Gh>=e){for(;e>d;){var f=d+e>>>1,g=a[f];(c?b>=g:b>g)?d=f+1:e=f}return e}return Yc(a,b,Bg,c)}function Yc(a,b,c,d){b=c(b);for(var e=0,f=a?a.length:0,g=b!==b,h="undefined"==typeof b;f>e;){var i=ih((e+f)/2),j=c(a[i]),k=j===j;if(g)var l=k||d;else l=h?k&&(d||"undefined"!=typeof j):d?b>=j:b>j;l?e=i+1:f=i}return xh(f,Fh)}function Zc(a,b,c){if("function"!=typeof a)return Bg;if("undefined"==typeof b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 3:return function(c,d,e){return a.call(b,c,d,e)};case 4:return function(c,d,e,f){return a.call(b,c,d,e,f)};case 5:return function(c,d,e,f,g){return a.call(b,c,d,e,f,g)}}return function(){return a.apply(b,arguments)}}function $c(a){return fh.call(a,0)}function _c(a,b,c){for(var d=c.length,e=-1,f=wh(a.length-d,0),g=-1,h=b.length,i=Mg(f+h);++g<h;)i[g]=b[g];for(;++e<d;)i[c[e]]=a[e];for(;f--;)i[g++]=a[e++];return i}function ad(a,b,c){for(var d=-1,e=c.length,f=-1,g=wh(a.length-e,0),h=-1,i=b.length,j=Mg(g+i);++f<g;)j[f]=a[f];for(var k=f;++h<i;)j[k+h]=b[h];for(;++d<e;)j[k+c[d]]=a[f++];return j}function bd(a,b){return function(c,d,e){var f=b?b():{};if(d=pd(d,e,3),Xh(c))for(var g=-1,h=c.length;++g<h;){var i=c[g];a(f,i,d(i,g,c),c)}else sc(c,function(b,c,e){a(f,b,d(b,c,e),e)});return f}}function cd(a){return function(){var b=arguments.length,c=arguments[0];if(2>b||null==c)return c;if(b>3&&xd(arguments[1],arguments[2],arguments[3])&&(b=2),b>3&&"function"==typeof arguments[b-2])var d=Zc(arguments[--b-1],arguments[b--],5);else b>2&&"function"==typeof arguments[b-1]&&(d=arguments[--b]);for(var e=0;++e<b;){var f=arguments[e];f&&a(c,f,d)}return c}}function dd(a,b){function c(){return(this instanceof c?d:a).apply(b,arguments)}var d=fd(a);return c}function ed(a){return function(b){for(var c=-1,d=xg(hg(b)),e=d.length,f="";++c<e;)f=a(f,d[c],c);return f}}function fd(a){return function(){var b=Lh(a.prototype),c=a.apply(b,arguments);return Bf(c)?c:b}}function gd(a,b){return function(c,d,e){e&&xd(c,d,e)&&(d=null);var f=pd(),g=null==d;if(f===oc&&g||(g=!1,d=f(d,e,3)),g){var i=Xh(c);if(i||!If(c))return a(i?c:Gd(c));d=h}return od(c,d,b)}}function hd(a,b,c,d,e,f,g,h,i,j){function k(){for(var u=arguments.length,v=u,w=Mg(u);v--;)w[v]=arguments[v];if(d&&(w=_c(w,d,e)),f&&(w=ad(w,f,g)),o||q){var x=k.placeholder,y=s(w,x);if(u-=y.length,j>u){var z=h?Yb(h):null,C=wh(j-u,0),D=o?y:null,E=o?null:y,H=o?w:null,I=o?null:w;b|=o?F:G,b&=~(o?G:F),p||(b&=~(A|B));var J=hd(a,b,c,H,D,I,E,z,i,C);return J.placeholder=x,J}}var K=m?c:this;return n&&(a=K[t]),h&&(w=Dd(w,h)),l&&i<w.length&&(w.length=i),(this instanceof k?r||fd(a):a).apply(K,w)}var l=b&I,m=b&A,n=b&B,o=b&D,p=b&C,q=b&E,r=!n&&fd(a),t=a;return k}function id(a,b,c){var d=a.length;if(b=+b,d>=b||!uh(b))return"";var e=b-d;return c=null==c?" ":c+"",pg(c,gh(e/c.length)).slice(0,e)}function jd(a,b,c,d){function e(){for(var b=-1,h=arguments.length,i=-1,j=d.length,k=Mg(h+j);++i<j;)k[i]=d[i];for(;h--;)k[i++]=arguments[++b];return(this instanceof e?g:a).apply(f?c:this,k)}var f=b&A,g=fd(a);return e}function kd(a,b,c,d,e,f,g,h){var i=b&B;if(!i&&"function"!=typeof a)throw new Vg(Q);var j=d?d.length:0;if(j||(b&=~(F|G),d=e=null),j-=e?e.length:0,b&G){var k=d,l=e;d=e=null}var m=!i&&Oh(a),n=[a,b,c,d,e,k,l,f,g,h];if(m&&m!==!0&&(Ad(n,m),b=n[1],h=n[9]),n[9]=null==h?i?0:a.length:wh(h-j,0)||0,b==A)var o=dd(n[0],n[2]);else o=b!=F&&b!=(A|F)||n[4].length?hd.apply(y,n):jd.apply(y,n);var p=m?Mh:Ph;return p(o,n)}function ld(a,b,c,d,e,f,g){var h=-1,i=a.length,j=b.length,k=!0;if(i!=j&&!(e&&j>i))return!1;for(;k&&++h<i;){var l=a[h],m=b[h];if(k=y,d&&(k=e?d(m,l,h):d(l,m,h)),"undefined"==typeof k)if(e)for(var n=j;n--&&(m=b[n],!(k=l&&l===m||c(l,m,d,e,f,g))););else k=l&&l===m||c(l,m,d,e,f,g)}return!!k}function md(a,b,c){switch(c){case U:case V:return+a==+b;case W:return a.name==b.name&&a.message==b.message;case Z:return a!=+a?b!=+b:0==a?1/a==1/b:a==+b;case _:case bb:return a==b+""}return!1}function nd(a,b,c,d,e,f,g){var h=_h(a),i=h.length,j=_h(b),k=j.length;if(i!=k&&!e)return!1;for(var l,m=-1;++m<i;){var n=h[m],o=_g.call(b,n);if(o){var p=a[n],q=b[n];o=y,d&&(o=e?d(q,p,n):d(p,q,n)),"undefined"==typeof o&&(o=p&&p===q||c(p,q,d,e,f,g))}if(!o)return!1;l||(l="constructor"==n)}if(!l){var r=a.constructor,s=b.constructor;if(r!=s&&"constructor"in a&&"constructor"in b&&!("function"==typeof r&&r instanceof r&&"function"==typeof s&&s instanceof s))return!1}return!0}function od(a,b,c){var d=c?Dh:Ch,e=d,f=e;return sc(a,function(a,g,h){var i=b(a,g,h);((c?e>i:i>e)||i===d&&i===f)&&(e=i,f=a)}),f}function pd(a,c,d){var e=b.callback||zg;return e=e===zg?oc:e,d?e(a,c,d):e}function qd(a,c,d){var f=b.indexOf||Wd;return f=f===Wd?e:f,a?f(a,c,d):f}function rd(a,b,c){for(var d=-1,e=c?c.length:0;++d<e;){var f=c[d],g=f.size;switch(f.type){case"drop":a+=g;break;case"dropRight":b-=g;break;case"take":b=xh(b,a+g);break;case"takeRight":a=wh(a,b-g)}}return{start:a,end:b}}function sd(a){var b=a.length,c=new a.constructor(b);return b&&"string"==typeof a[0]&&_g.call(a,"index")&&(c.index=a.index,c.input=a.input),c}function td(a){var b=a.constructor;return"function"==typeof b&&b instanceof b||(b=Sg),new b}function ud(a,b,c){var d=a.constructor;switch(b){case db:return $c(a);case U:case V:return new d(+a);case eb:case fb:case gb:case hb:case ib:case jb:case kb:case lb:case mb:var e=a.buffer;return new d(c?$c(e):e,a.byteOffset,a.length);case Z:case bb:return new d(a);case _:var f=new d(a.source,yb.exec(a));f.lastIndex=a.lastIndex}return f}function vd(a){var c=b.support,d=!(c.funcNames?a.name:c.funcDecomp);if(!d){var e=Zg.call(a);c.funcNames||(d=!zb.test(e)),d||(d=Gb.test(e)||Ef(a),Mh(a,d))}return d}function wd(a,b){return a=+a,b=null==b?Ih:b,a>-1&&a%1==0&&b>a}function xd(a,b,c){if(!Bf(c))return!1;var d=typeof b;if("number"==d)var e=c.length,f=yd(e)&&wd(b,e);else f="string"==d&&b in c;return f&&c[b]===a}function yd(a){return"number"==typeof a&&a>-1&&a%1==0&&Ih>=a}function zd(a){return a===a&&(0===a?1/a>0:!Bf(a))}function Ad(a,b){var c=a[1],d=b[1],e=c|d,f=I|H,g=A|B,h=f|g|C|E,i=c&I&&!(d&I),j=c&H&&!(d&H),k=(j?a:b)[7],l=(i?a:b)[8],m=!(c>=H&&d>g||c>g&&d>=H),n=e>=f&&h>=e&&(H>c||(j||i)&&k.length<=l);if(!m&&!n)return a;d&A&&(a[2]=b[2],e|=c&A?0:C);var o=b[3];if(o){var p=a[3];a[3]=p?_c(p,o,b[4]):Yb(o),a[4]=p?s(a[3],R):Yb(b[4])}return o=b[5],o&&(p=a[5],a[5]=p?ad(p,o,b[6]):Yb(o),a[6]=p?s(a[5],R):Yb(b[6])),o=b[7],o&&(a[7]=Yb(o)),d&I&&(a[8]=null==a[8]?b[8]:xh(a[8],b[8])),null==a[9]&&(a[9]=b[9]),a[0]=b[0],a[1]=e,a}function Bd(a,b){a=Hd(a);for(var c=-1,d=b.length,e={};++c<d;){var f=b[c];f in a&&(e[f]=a[f])}return e}function Cd(a,b){var c={};return Bc(a,function(a,d,e){b(a,d,e)&&(c[d]=a)}),c}function Dd(a,b){for(var c=a.length,d=xh(b.length,c),e=Yb(a);d--;){var f=b[d];a[d]=wd(f,c)?e[f]:y}return a}function Ed(a){{var c;b.support}if(!q(a)||bh.call(a)!=$||!_g.call(a,"constructor")&&(c=a.constructor,"function"==typeof c&&!(c instanceof c)))return!1;var d;return Bc(a,function(a,b){d=b}),"undefined"==typeof d||_g.call(a,d)}function Fd(a){for(var c=Yf(a),d=c.length,e=d&&a.length,f=b.support,g=e&&yd(e)&&(Xh(a)||f.nonEnumArgs&&tf(a)),h=-1,i=[];++h<d;){var j=c[h];(g&&wd(j,e)||_g.call(a,j))&&i.push(j)}return i}function Gd(a){return null==a?[]:yd(a.length)?Bf(a)?a:Sg(a):dg(a)}function Hd(a){return Bf(a)?a:Sg(a)}function Id(a){return a instanceof r?a.clone():new c(a.__wrapped__,a.__chain__,Yb(a.__actions__))}function Jd(a,b,c){b=(c?xd(a,b,c):null==b)?1:wh(+b||1,1);for(var d=0,e=a?a.length:0,f=-1,g=Mg(gh(e/b));e>d;)g[++f]=Sc(a,d,d+=b);return g}function Kd(a){for(var b=-1,c=a?a.length:0,d=-1,e=[];++b<c;){var f=a[b];f&&(e[++d]=f)}return e}function Ld(){for(var a=-1,b=arguments.length;++a<b;){var c=arguments[a];if(Xh(c)||tf(c))break}return rc(c,yc(arguments,!1,!0,++a))}function Md(a,b,c){var d=a?a.length:0;return d?((c?xd(a,b,c):null==b)&&(b=1),Sc(a,0>b?0:b)):[]}function Nd(a,b,c){var d=a?a.length:0;return d?((c?xd(a,b,c):null==b)&&(b=1),b=d-(+b||0),Sc(a,0,0>b?0:b)):[]}function Od(a,b,c){var d=a?a.length:0;if(!d)return[];for(b=pd(b,c,3);d--&&b(a[d],d,a););return Sc(a,0,d+1)}function Pd(a,b,c){var d=a?a.length:0;if(!d)return[];var e=-1;for(b=pd(b,c,3);++e<d&&b(a[e],e,a););return Sc(a,e)}function Qd(a,b,c,d){var e=a?a.length:0;return e?(c&&"number"!=typeof c&&xd(a,b,c)&&(c=0,d=e),vc(a,b,c,d)):[]}function Rd(a,b,c){var d=-1,e=a?a.length:0;for(b=pd(b,c,3);++d<e;)if(b(a[d],d,a))return d;return-1}function Sd(a,b,c){var d=a?a.length:0;for(b=pd(b,c,3);d--;)if(b(a[d],d,a))return d;return-1}function Td(a){return a?a[0]:y}function Ud(a,b,c){var d=a?a.length:0;return c&&xd(a,b,c)&&(b=!1),d?yc(a,b):[]}function Vd(a){var b=a?a.length:0;return b?yc(a,!0):[]}function Wd(a,b,c){var d=a?a.length:0;if(!d)return-1;if("number"==typeof c)c=0>c?wh(d+c,0):c||0;else if(c){var f=Xc(a,b),g=a[f];return(b===b?b===g:g!==g)?f:-1}return e(a,b,c)}function Xd(a){return Nd(a,1)}function Yd(){for(var a=[],b=-1,c=arguments.length,d=[],f=qd(),g=f==e;++b<c;){var h=arguments[b];(Xh(h)||tf(h))&&(a.push(h),d.push(g&&h.length>=120&&Nh(b&&h)))}c=a.length;var i=a[0],j=-1,k=i?i.length:0,l=[],m=d[0];a:for(;++j<k;)if(h=i[j],(m?Wb(m,h):f(l,h))<0){for(b=c;--b;){var n=d[b];if((n?Wb(n,h):f(a[b],h))<0)continue a}m&&m.push(h),l.push(h)}return l}function Zd(a){var b=a?a.length:0;return b?a[b-1]:y}function $d(a,b,c){var d=a?a.length:0;if(!d)return-1;var e=d;if("number"==typeof c)e=(0>c?wh(d+c,0):xh(c||0,d-1))+1;else if(c){e=Xc(a,b,!0)-1;var f=a[e];return(b===b?b===f:f!==f)?e:-1}if(b!==b)return p(a,e,!0);for(;e--;)if(a[e]===b)return e;return-1}function _d(){var a=arguments[0];if(!a||!a.length)return a;for(var b=0,c=qd(),d=arguments.length;++b<d;)for(var e=0,f=arguments[b];(e=c(a,f,e))>-1;)oh.call(a,e,1);return a}function ae(a){return Pc(a||[],yc(arguments,!1,!1,1))}function be(a,b,c){var d=-1,e=a?a.length:0,f=[];for(b=pd(b,c,3);++d<e;){var g=a[d];b(g,d,a)&&(f.push(g),oh.call(a,d--,1),e--)}return f}function ce(a){return Md(a,1)}function de(a,b,c){var d=a?a.length:0;return d?(c&&"number"!=typeof c&&xd(a,b,c)&&(b=0,c=d),Sc(a,b,c)):[]}function ee(a,b,c,d){var e=pd(c);return e===oc&&null==c?Xc(a,b):Yc(a,b,e(c,d,1))}function fe(a,b,c,d){var e=pd(c);return e===oc&&null==c?Xc(a,b,!0):Yc(a,b,e(c,d,1),!0)}function ge(a,b,c){var d=a?a.length:0;return d?((c?xd(a,b,c):null==b)&&(b=1),Sc(a,0,0>b?0:b)):[]}function he(a,b,c){var d=a?a.length:0;return d?((c?xd(a,b,c):null==b)&&(b=1),b=d-(+b||0),Sc(a,0>b?0:b)):[]}function ie(a,b,c){var d=a?a.length:0;if(!d)return[];for(b=pd(b,c,3);d--&&b(a[d],d,a););return Sc(a,d+1)}function je(a,b,c){var d=a?a.length:0;if(!d)return[];var e=-1;for(b=pd(b,c,3);++e<d&&b(a[e],e,a););return Sc(a,0,e)}function ke(){return Uc(yc(arguments,!1,!0))}function le(a,b,c,d){var f=a?a.length:0;if(!f)return[];"boolean"!=typeof b&&null!=b&&(d=c,c=xd(a,b,d)?null:b,b=!1);var g=pd();return(g!==oc||null!=c)&&(c=g(c,d,3)),b&&qd()==e?t(a,c):Uc(a,c)}function me(a){for(var b=-1,c=(a&&a.length&&dc(cc(a,$g)))>>>0,d=Mg(c);++b<c;)d[b]=cc(a,Oc(b));return d}function ne(a){return rc(a,Sc(arguments,1))}function oe(){for(var a=-1,b=arguments.length;++a<b;){var c=arguments[a];if(Xh(c)||tf(c))var d=d?rc(d,c).concat(rc(c,d)):c}return d?Uc(d):[]}function pe(){for(var a=arguments.length,b=Mg(a);a--;)b[a]=arguments[a];return me(b)}function qe(a,b){var c=-1,d=a?a.length:0,e={};for(!d||b||Xh(a[0])||(b=[]);++c<d;){var f=a[c];b?e[f]=b[c]:f&&(e[f[0]]=f[1])}return e}function re(a){var c=b(a);return c.__chain__=!0,c}function se(a,b,c){return b.call(c,a),a}function te(a,b,c){return b.call(c,a)}function ue(){return re(this)}function ve(){return new c(this.value(),this.__chain__)}function we(a){for(var b,d=this;d instanceof c;){var e=Id(d);b?f.__wrapped__=e:b=e;var f=e;d=d.__wrapped__}return f.__wrapped__=a,b}function xe(){var a=this.__wrapped__;return a instanceof r?(this.__actions__.length&&(a=new r(this)),new c(a.reverse(),this.__chain__)):this.thru(function(a){return a.reverse()})}function ye(){return this.value()+""}function ze(){return Wc(this.__wrapped__,this.__actions__)}function Ae(a){var b=a?a.length:0;return yd(b)&&(a=Gd(a)),lc(a,yc(arguments,!1,!1,1))}function Be(a,b,c){var d=a?a.length:0;return yd(d)||(a=dg(a),d=a.length),d?(c="number"==typeof c?0>c?wh(d+c,0):c||0:0,"string"==typeof a||!Xh(a)&&If(a)?d>c&&a.indexOf(b,c)>-1:qd(a,b,c)>-1):!1}function Ce(a,b,c){var d=Xh(a)?ac:uc;return("function"!=typeof b||"undefined"!=typeof c)&&(b=pd(b,c,3)),d(a,b)}function De(a,b,c){var d=Xh(a)?bc:wc;return b=pd(b,c,3),d(a,b)}function Ee(a,b,c){if(Xh(a)){var d=Rd(a,b,c);return d>-1?a[d]:y}return b=pd(b,c,3),xc(a,b,sc)}function Fe(a,b,c){return b=pd(b,c,3),xc(a,b,tc)}function Ge(a,b){return Ee(a,Kc(b))}function He(a,b,c){return"function"==typeof b&&"undefined"==typeof c&&Xh(a)?$b(a,b):sc(a,Zc(b,c,3))}function Ie(a,b,c){return"function"==typeof b&&"undefined"==typeof c&&Xh(a)?_b(a,b):tc(a,Zc(b,c,3))}function Je(a,b){return Fc(a,b,Sc(arguments,2))}function Ke(a,b,c){var d=Xh(a)?cc:Jc;return b=pd(b,c,3),d(a,b)}function Le(a,b){return Ke(a,Oc(b))}function Me(a,b,c,d){var e=Xh(a)?fc:Rc;return e(a,pd(b,d,4),c,arguments.length<3,sc)}function Ne(a,b,c,d){var e=Xh(a)?gc:Rc;return e(a,pd(b,d,4),c,arguments.length<3,tc)}function Oe(a,b,c){var d=Xh(a)?bc:wc;return b=pd(b,c,3),d(a,function(a,c,d){return!b(a,c,d)})}function Pe(a,b,c){if(c?xd(a,b,c):null==b){a=Gd(a);var d=a.length;return d>0?a[Qc(0,d-1)]:y}var e=Qe(a);return e.length=xh(0>b?0:+b||0,e.length),e}function Qe(a){a=Gd(a);for(var b=-1,c=a.length,d=Mg(c);++b<c;){var e=Qc(0,b);b!=e&&(d[b]=d[e]),d[e]=a[b]}return d}function Re(a){var b=a?a.length:0;return yd(b)?b:_h(a).length}function Se(a,b,c){var d=Xh(a)?hc:Tc;return("function"!=typeof b||"undefined"!=typeof c)&&(b=pd(b,c,3)),d(a,b)}function Te(a,b,c){var d=-1,e=a?a.length:0,g=yd(e)?Mg(e):[];return c&&xd(a,b,c)&&(b=null),b=pd(b,c,3),sc(a,function(a,c,e){g[++d]={criteria:b(a,c,e),index:d,value:a}}),f(g,k)}function Ue(a){var b=arguments;b.length>3&&xd(b[1],b[2],b[3])&&(b=[a,b[1]]);var c=-1,d=a?a.length:0,e=yc(b,!1,!1,1),g=yd(d)?Mg(d):[];return sc(a,function(a){for(var b=e.length,d=Mg(b);b--;)d[b]=null==a?y:a[e[b]];g[++c]={criteria:d,index:c,value:a}}),f(g,l)}function Ve(a,b){return De(a,Kc(b))}function We(a,b){if("function"!=typeof b){if("function"!=typeof a)throw new Vg(Q);var c=a;a=b,b=c}return a=uh(a=+a)?a:0,function(){return--a<1?b.apply(this,arguments):void 0}}function Xe(a,b,c){return c&&xd(a,b,c)&&(b=null),b=a&&null==b?a.length:wh(+b||0,0),kd(a,I,null,null,null,null,b)}function Ye(a,b){var c;if("function"!=typeof b){if("function"!=typeof a)throw new Vg(Q);var d=a;a=b,b=d}return function(){return--a>0?c=b.apply(this,arguments):b=null,c}}function Ze(a,b){var c=A;if(arguments.length>2){var d=Sc(arguments,2),e=s(d,Ze.placeholder);c|=F}return kd(a,c,b,d,e)}function $e(a){return nc(a,arguments.length>1?yc(arguments,!1,!1,1):Vf(a))}function _e(a,b){var c=A|B;if(arguments.length>2){var d=Sc(arguments,2),e=s(d,_e.placeholder);c|=F}return kd(b,c,a,d,e)}function af(a,b,c){c&&xd(a,b,c)&&(b=null);var d=kd(a,D,null,null,null,null,null,b);return d.placeholder=af.placeholder,d}function bf(a,b,c){c&&xd(a,b,c)&&(b=null);var d=kd(a,E,null,null,null,null,null,b);return d.placeholder=bf.placeholder,d}function cf(a,b,c){function d(){m&&hh(m),i&&hh(i),i=m=n=y}function e(){var c=b-(Wh()-k);if(0>=c||c>b){i&&hh(i);var d=n;i=m=n=y,d&&(o=Wh(),j=a.apply(l,h),m||i||(h=l=null))}else m=nh(e,c)}function f(){m&&hh(m),i=m=n=y,(q||p!==b)&&(o=Wh(),j=a.apply(l,h),m||i||(h=l=null))}function g(){if(h=arguments,k=Wh(),l=this,n=q&&(m||!r),p===!1)var c=r&&!m;else{i||r||(o=k);var d=p-(k-o),g=0>=d||d>p;g?(i&&(i=hh(i)),o=k,j=a.apply(l,h)):i||(i=nh(f,d))}return g&&m?m=hh(m):m||b===p||(m=nh(e,b)),c&&(g=!0,j=a.apply(l,h)),!g||m||i||(h=l=null),j}var h,i,j,k,l,m,n,o=0,p=!1,q=!0;if("function"!=typeof a)throw new Vg(Q);if(b=0>b?0:b,c===!0){var r=!0;q=!1}else Bf(c)&&(r=c.leading,p="maxWait"in c&&wh(+c.maxWait||0,b),q="trailing"in c?c.trailing:q);return g.cancel=d,g}function df(a){return qc(a,1,arguments,1)}function ef(a,b){return qc(a,b,arguments,2)}function ff(){var a=arguments,b=a.length;if(!b)return function(){return arguments[0]};if(!ac(a,Af))throw new Vg(Q);return function(){for(var c=0,d=a[c].apply(this,arguments);++c<b;)d=a[c].call(this,d);return d}}function gf(){var a=arguments,b=a.length-1;if(0>b)return function(){return arguments[0]};if(!ac(a,Af))throw new Vg(Q);return function(){for(var c=b,d=a[c].apply(this,arguments);c--;)d=a[c].call(this,d);return d}}function hf(a,b){if("function"!=typeof a||b&&"function"!=typeof b)throw new Vg(Q);var c=function(){var d=c.cache,e=b?b.apply(this,arguments):arguments[0];if(d.has(e))return d.get(e);var f=a.apply(this,arguments);return d.set(e,f),f};return c.cache=new hf.Cache,c}function jf(a){if("function"!=typeof a)throw new Vg(Q);return function(){return!a.apply(this,arguments)}}function kf(a){return Ye(a,2)}function lf(a){var b=Sc(arguments,1),c=s(b,lf.placeholder);return kd(a,F,null,b,c)}function mf(a){var b=Sc(arguments,1),c=s(b,mf.placeholder);return kd(a,G,null,b,c)}function nf(a){var b=yc(arguments,!1,!1,1);return kd(a,H,null,null,null,b)}function of(a){if("function"!=typeof a)throw new Vg(Q);return function(b){return a.apply(this,b)}}function pf(a,b,c){var d=!0,e=!0;if("function"!=typeof a)throw new Vg(Q);return c===!1?d=!1:Bf(c)&&(d="leading"in c?!!c.leading:d,e="trailing"in c?!!c.trailing:e),Ob.leading=d,Ob.maxWait=+b,Ob.trailing=e,cf(a,b,Ob)}function qf(a,b){return b=null==b?Bg:b,kd(b,F,null,[a],[])}function rf(a,b,c,d){return"boolean"!=typeof b&&null!=b&&(d=c,c=xd(a,b,d)?null:b,b=!1),c="function"==typeof c&&Zc(c,d,1),pc(a,b,c)}function sf(a,b,c){return b="function"==typeof b&&Zc(b,c,1),pc(a,!0,b)}function tf(a){var b=q(a)?a.length:y;return yd(b)&&bh.call(a)==S||!1}function uf(a){return a===!0||a===!1||q(a)&&bh.call(a)==U||!1}function vf(a){return q(a)&&bh.call(a)==V||!1}function wf(a){return a&&1===a.nodeType&&q(a)&&bh.call(a).indexOf("Element")>-1||!1}function xf(a){if(null==a)return!0;var b=a.length;return yd(b)&&(Xh(a)||If(a)||tf(a)||q(a)&&Af(a.splice))?!b:!_h(a).length}function yf(a,b,c,d){if(c="function"==typeof c&&Zc(c,d,3),!c&&zd(a)&&zd(b))return a===b;var e=c?c(a,b):y;return"undefined"==typeof e?Gc(a,b,c):!!e}function zf(a){return q(a)&&"string"==typeof a.message&&bh.call(a)==W||!1}function Af(a){return"function"==typeof a||!1}function Bf(a){var b=typeof a;return"function"==b||a&&"object"==b||!1}function Cf(a,b,c,d){var e=_h(b),f=e.length;if(c="function"==typeof c&&Zc(c,d,3),!c&&1==f){var g=e[0],h=b[g];if(zd(h))return null!=a&&h===a[g]&&_g.call(a,g)}for(var i=Mg(f),j=Mg(f);f--;)h=i[f]=b[e[f]],j[f]=zd(h);return Ic(a,e,i,j,c)}function Df(a){return Gf(a)&&a!=+a}function Ef(a){return null==a?!1:bh.call(a)==X?dh.test(Zg.call(a)):q(a)&&Bb.test(a)||!1}function Ff(a){return null===a}function Gf(a){return"number"==typeof a||q(a)&&bh.call(a)==Z||!1}function Hf(a){return q(a)&&bh.call(a)==_||!1}function If(a){return"string"==typeof a||q(a)&&bh.call(a)==bb||!1}function Jf(a){return q(a)&&yd(a.length)&&Mb[bh.call(a)]||!1}function Kf(a){return"undefined"==typeof a}function Lf(a){var b=a?a.length:0;return yd(b)?b?Yb(a):[]:dg(a)}function Mf(a){return mc(a,Yf(a))}function Nf(a,b,c){var d=Lh(a);return c&&xd(a,b,c)&&(b=null),b?mc(b,d,_h(b)):d}function Of(a){if(null==a)return a;var b=Yb(arguments);return b.push(ic),$h.apply(y,b)}function Pf(a,b,c){return b=pd(b,c,3),xc(a,b,Cc,!0)}function Qf(a,b,c){return b=pd(b,c,3),xc(a,b,Dc,!0)}function Rf(a,b,c){return("function"!=typeof b||"undefined"!=typeof c)&&(b=Zc(b,c,3)),zc(a,b,Yf)}function Sf(a,b,c){return b=Zc(b,c,3),Ac(a,b,Yf)}function Tf(a,b,c){return("function"!=typeof b||"undefined"!=typeof c)&&(b=Zc(b,c,3)),Cc(a,b)}function Uf(a,b,c){return b=Zc(b,c,3),Ac(a,b,_h)}function Vf(a){return Ec(a,Yf(a))}function Wf(a,b){return a?_g.call(a,b):!1}function Xf(a,b,c){c&&xd(a,b,c)&&(b=null);for(var d=-1,e=_h(a),f=e.length,g={};++d<f;){var h=e[d],i=a[h];b?_g.call(g,i)?g[i].push(h):g[i]=[h]:g[i]=h}return g}function Yf(a){if(null==a)return[];Bf(a)||(a=Sg(a));var b=a.length;b=b&&yd(b)&&(Xh(a)||Kh.nonEnumArgs&&tf(a))&&b||0;for(var c=a.constructor,d=-1,e="function"==typeof c&&c.prototype===a,f=Mg(b),g=b>0;++d<b;)f[d]=d+"";for(var h in a)g&&wd(h,b)||"constructor"==h&&(e||!_g.call(a,h))||f.push(h);return f}function Zf(a,b,c){var d={};return b=pd(b,c,3),Cc(a,function(a,c,e){d[c]=b(a,c,e)}),d}function $f(a,b,c){if(null==a)return{};if("function"!=typeof b){var d=cc(yc(arguments,!1,!1,1),Ug);return Bd(a,rc(Yf(a),d))}return b=Zc(b,c,3),Cd(a,function(a,c,d){return!b(a,c,d)})}function _f(a){for(var b=-1,c=_h(a),d=c.length,e=Mg(d);++b<d;){var f=c[b];e[b]=[f,a[f]]}return e}function ag(a,b,c){return null==a?{}:"function"==typeof b?Cd(a,Zc(b,c,3)):Bd(a,yc(arguments,!1,!1,1))}function bg(a,b,c){var d=null==a?y:a[b];return"undefined"==typeof d&&(d=c),Af(d)?d.call(a):d}function cg(a,b,c,d){var e=Xh(a)||Jf(a);if(b=pd(b,d,4),null==c)if(e||Bf(a)){var f=a.constructor;c=e?Xh(a)?new f:[]:Lh(Af(f)&&f.prototype)}else c={};return(e?$b:Cc)(a,function(a,d,e){return b(c,a,d,e)}),c}function dg(a){return Vc(a,_h(a))}function eg(a){return Vc(a,Yf(a))}function fg(a,b,c){c&&xd(a,b,c)&&(b=c=null);var d=null==a,e=null==b;if(null==c&&(e&&"boolean"==typeof a?(c=a,a=1):"boolean"==typeof b&&(c=b,e=!0)),d&&e&&(b=1,e=!1),a=+a||0,e?(b=a,a=0):b=+b||0,c||a%1||b%1){var f=Bh();return xh(a+f*(b-a+parseFloat("1e-"+((f+"").length-1))),b)}return Qc(a,b)}function gg(a){return a=g(a),a&&a.charAt(0).toUpperCase()+a.slice(1)}function hg(a){return a=g(a),a&&a.replace(Cb,m)}function ig(a,b,c){a=g(a),b+="";var d=a.length;return c=("undefined"==typeof c?d:xh(0>c?0:+c||0,d))-b.length,c>=0&&a.indexOf(b,c)==c}function jg(a){return a=g(a),a&&tb.test(a)?a.replace(rb,n):a}function kg(a){return a=g(a),a&&Fb.test(a)?a.replace(Eb,"\\$&"):a}function lg(a,b,c){a=g(a),b=+b;var d=a.length;if(d>=b||!uh(b))return a;var e=(b-d)/2,f=ih(e),h=gh(e);return c=id("",h,c),c.slice(0,f)+a+c}function mg(a,b,c){return a=g(a),a&&id(a,b,c)+a}function ng(a,b,c){return a=g(a),a&&a+id(a,b,c)}function og(a,b,c){return c&&xd(a,b,c)&&(b=0),Ah(a,b)}function pg(a,b){var c="";if(a=g(a),b=+b,1>b||!a||!uh(b))return c;do b%2&&(c+=a),b=ih(b/2),a+=a;while(b);return c}function qg(a,b,c){return a=g(a),c=null==c?0:xh(0>c?0:+c||0,a.length),a.lastIndexOf(b,c)==c}function rg(a,c,d){var e=b.templateSettings;d&&xd(a,c,d)&&(c=d=null),a=g(a),c=kc(kc({},d||c),e,jc);var f,h,i=kc(kc({},c.imports),e.imports,jc),j=_h(i),k=Vc(i,j),l=0,m=c.interpolate||Db,n="__p += '",p=Tg((c.escape||Db).source+"|"+m.source+"|"+(m===wb?xb:Db).source+"|"+(c.evaluate||Db).source+"|$","g"),q="//# sourceURL="+("sourceURL"in c?c.sourceURL:"lodash.templateSources["+ ++Lb+"]")+"\n";a.replace(p,function(b,c,d,e,g,i){return d||(d=e),n+=a.slice(l,i).replace(Hb,o),c&&(f=!0,n+="' +\n__e("+c+") +\n'"),g&&(h=!0,n+="';\n"+g+";\n__p += '"),d&&(n+="' +\n((__t = ("+d+")) == null ? '' : __t) +\n'"),l=i+b.length,b}),n+="';\n";var r=c.variable;r||(n="with (obj) {\n"+n+"\n}\n"),n=(h?n.replace(nb,""):n).replace(ob,"$1").replace(pb,"$1;"),n="function("+(r||"obj")+") {\n"+(r?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(f?", __e = _.escape":"")+(h?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+n+"return __p\n}";var s=yg(function(){return Pg(j,q+"return "+n).apply(y,k)});if(s.source=n,zf(s))throw s;return s}function sg(a,b,c){var d=a;return(a=g(a))?(c?xd(d,b,c):null==b)?a.slice(u(a),v(a)+1):(b+="",a.slice(i(a,b),j(a,b)+1)):a}function tg(a,b,c){var d=a;return a=g(a),a?a.slice((c?xd(d,b,c):null==b)?u(a):i(a,b+"")):a}function ug(a,b,c){var d=a;return a=g(a),a?(c?xd(d,b,c):null==b)?a.slice(0,v(a)+1):a.slice(0,j(a,b+"")+1):a}function vg(a,b,c){c&&xd(a,b,c)&&(b=null);var d=J,e=K;if(null!=b)if(Bf(b)){var f="separator"in b?b.separator:f;d="length"in b?+b.length||0:d,e="omission"in b?g(b.omission):e}else d=+b||0;if(a=g(a),d>=a.length)return a;var h=d-e.length;if(1>h)return e;var i=a.slice(0,h);if(null==f)return i+e;if(Hf(f)){if(a.slice(h).search(f)){var j,k,l=a.slice(0,h);for(f.global||(f=Tg(f.source,(yb.exec(f)||"")+"g")),f.lastIndex=0;j=f.exec(l);)k=j.index;i=i.slice(0,null==k?h:k)}}else if(a.indexOf(f,h)!=h){var m=i.lastIndexOf(f);m>-1&&(i=i.slice(0,m))}return i+e}function wg(a){return a=g(a),a&&sb.test(a)?a.replace(qb,w):a}function xg(a,b,c){return c&&xd(a,b,c)&&(b=null),a=g(a),a.match(b||Ib)||[]}function yg(a){try{return a.apply(y,Sc(arguments,1))}catch(b){return zf(b)?b:new Og(b)}}function zg(a,b,c){return c&&xd(a,b,c)&&(b=null),q(a)?Cg(a):oc(a,b)}function Ag(a){return function(){return a}}function Bg(a){return a}function Cg(a){return Kc(pc(a,!0))}function Dg(a,b){return Lc(a+"",pc(b,!0))}function Eg(a,b,c){if(null==c){var d=Bf(b),e=d&&_h(b),f=e&&e.length&&Ec(b,e);(f?f.length:d)||(f=!1,c=b,b=a,a=this)}f||(f=Ec(b,_h(b)));var g=!0,h=-1,i=Af(a),j=f.length;c===!1?g=!1:Bf(c)&&"chain"in c&&(g=c.chain);for(;++h<j;){var k=f[h],l=b[k];a[k]=l,i&&(a.prototype[k]=function(b){return function(){var c=this.__chain__;if(g||c){var d=a(this.__wrapped__);return(d.__actions__=Yb(this.__actions__)).push({func:b,args:arguments,thisArg:a}),d.__chain__=c,d}var e=[this.value()];return kh.apply(e,arguments),b.apply(a,e)}}(l))}return a}function Fg(){return a._=ch,this}function Gg(){}function Hg(a){return Oc(a+"")}function Ig(a){return function(b){return null==a?y:a[b]}}function Jg(a,b,c){c&&xd(a,b,c)&&(b=c=null),a=+a||0,c=null==c?1:+c||0,null==b?(b=a,a=0):b=+b||0;for(var d=-1,e=wh(gh((b-a)/(c||1)),0),f=Mg(e);++d<e;)f[d]=a,a+=c;return f}function Kg(a,b,c){if(a=+a,1>a||!uh(a))return[];var d=-1,e=Mg(xh(a,Eh));for(b=Zc(b,c,1);++d<a;)Eh>d?e[d]=b(d):b(d);return e}function Lg(a){var b=++ah;return g(a)+b}a=a?Zb.defaults(Ub.Object(),a,Zb.pick(Ub,Kb)):Ub;var Mg=a.Array,Ng=a.Date,Og=a.Error,Pg=a.Function,Qg=a.Math,Rg=a.Number,Sg=a.Object,Tg=a.RegExp,Ug=a.String,Vg=a.TypeError,Wg=Mg.prototype,Xg=Sg.prototype,Yg=(Yg=a.window)&&Yg.document,Zg=Pg.prototype.toString,$g=Oc("length"),_g=Xg.hasOwnProperty,ah=0,bh=Xg.toString,ch=a._,dh=Tg("^"+kg(bh).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),eh=Ef(eh=a.ArrayBuffer)&&eh,fh=Ef(fh=eh&&new eh(0).slice)&&fh,gh=Qg.ceil,hh=a.clearTimeout,ih=Qg.floor,jh=Ef(jh=Sg.getPrototypeOf)&&jh,kh=Wg.push,lh=Xg.propertyIsEnumerable,mh=Ef(mh=a.Set)&&mh,nh=a.setTimeout,oh=Wg.splice,ph=Ef(ph=a.Uint8Array)&&ph,qh=Ef(qh=a.WeakMap)&&qh,rh=function(){try{var b=Ef(b=a.Float64Array)&&b,c=new b(new eh(10),0,1)&&b}catch(d){}return c}(),sh=Ef(sh=Mg.isArray)&&sh,th=Ef(th=Sg.create)&&th,uh=a.isFinite,vh=Ef(vh=Sg.keys)&&vh,wh=Qg.max,xh=Qg.min,yh=Ef(yh=Ng.now)&&yh,zh=Ef(zh=Rg.isFinite)&&zh,Ah=a.parseInt,Bh=Qg.random,Ch=Rg.NEGATIVE_INFINITY,Dh=Rg.POSITIVE_INFINITY,Eh=Qg.pow(2,32)-1,Fh=Eh-1,Gh=Eh>>>1,Hh=rh?rh.BYTES_PER_ELEMENT:0,Ih=Qg.pow(2,53)-1,Jh=qh&&new qh,Kh=b.support={};!function(){Kh.funcDecomp=!Ef(a.WinRTError)&&Gb.test(x),Kh.funcNames="string"==typeof Pg.name;try{Kh.dom=11===Yg.createDocumentFragment().nodeType}catch(b){Kh.dom=!1}try{Kh.nonEnumArgs=!lh.call(arguments,1)}catch(b){Kh.nonEnumArgs=!0}}(0,0),b.templateSettings={escape:ub,evaluate:vb,interpolate:wb,variable:"",imports:{_:b}};var Lh=function(){function b(){}return function(c){if(Bf(c)){b.prototype=c;var d=new b;b.prototype=null}return d||a.Object()}}(),Mh=Jh?function(a,b){return Jh.set(a,b),a}:Bg;fh||($c=eh&&ph?function(a){var b=a.byteLength,c=rh?ih(b/Hh):0,d=c*Hh,e=new eh(b);if(c){var f=new rh(e,0,c);f.set(new rh(a,0,c))}return b!=d&&(f=new ph(e,d),f.set(new ph(a,d))),e}:Ag(null));var Nh=th&&mh?function(a){return new Vb(a)}:Ag(null),Oh=Jh?function(a){return Jh.get(a)}:Gg,Ph=function(){var a=0,b=0;return function(c,d){var e=Wh(),f=M-(e-b);if(b=e,f>0){if(++a>=L)return c}else a=0;return Mh(c,d)}}(),Qh=bd(function(a,b,c){_g.call(a,c)?++a[c]:a[c]=1}),Rh=bd(function(a,b,c){_g.call(a,c)?a[c].push(b):a[c]=[b]}),Sh=bd(function(a,b,c){a[c]=b}),Th=gd(dc),Uh=gd(ec,!0),Vh=bd(function(a,b,c){a[c?0:1].push(b)},function(){return[[],[]]}),Wh=yh||function(){return(new Ng).getTime()},Xh=sh||function(a){return q(a)&&yd(a.length)&&bh.call(a)==T||!1};Kh.dom||(wf=function(a){return a&&1===a.nodeType&&q(a)&&!Zh(a)||!1});var Yh=zh||function(a){return"number"==typeof a&&uh(a)};(Af(/x/)||ph&&!Af(ph))&&(Af=function(a){return bh.call(a)==X});var Zh=jh?function(a){if(!a||bh.call(a)!=$)return!1;var b=a.valueOf,c=Ef(b)&&(c=jh(b))&&jh(c);return c?a==c||jh(a)==c:Ed(a)}:Ed,$h=cd(kc),_h=vh?function(a){if(a)var b=a.constructor,c=a.length;return"function"==typeof b&&b.prototype===a||"function"!=typeof a&&c&&yd(c)?Fd(a):Bf(a)?vh(a):[]}:Fd,ai=cd(Mc),bi=ed(function(a,b,c){return b=b.toLowerCase(),a+(c?b.charAt(0).toUpperCase()+b.slice(1):b)}),ci=ed(function(a,b,c){return a+(c?"-":"")+b.toLowerCase()});8!=Ah(Jb+"08")&&(og=function(a,b,c){return(c?xd(a,b,c):null==b)?b=0:b&&(b=+b),a=sg(a),Ah(a,b||(Ab.test(a)?16:10))});var di=ed(function(a,b,c){return a+(c?"_":"")+b.toLowerCase()
+}),ei=ed(function(a,b,c){return a+(c?" ":"")+(b.charAt(0).toUpperCase()+b.slice(1))});return c.prototype=Lh(b.prototype),r.prototype=Lh(c.prototype),r.prototype.constructor=r,Pb.prototype["delete"]=Qb,Pb.prototype.get=Rb,Pb.prototype.has=Sb,Pb.prototype.set=Tb,Vb.prototype.push=Xb,hf.Cache=Pb,b.after=We,b.ary=Xe,b.assign=$h,b.at=Ae,b.before=Ye,b.bind=Ze,b.bindAll=$e,b.bindKey=_e,b.callback=zg,b.chain=re,b.chunk=Jd,b.compact=Kd,b.constant=Ag,b.countBy=Qh,b.create=Nf,b.curry=af,b.curryRight=bf,b.debounce=cf,b.defaults=Of,b.defer=df,b.delay=ef,b.difference=Ld,b.drop=Md,b.dropRight=Nd,b.dropRightWhile=Od,b.dropWhile=Pd,b.fill=Qd,b.filter=De,b.flatten=Ud,b.flattenDeep=Vd,b.flow=ff,b.flowRight=gf,b.forEach=He,b.forEachRight=Ie,b.forIn=Rf,b.forInRight=Sf,b.forOwn=Tf,b.forOwnRight=Uf,b.functions=Vf,b.groupBy=Rh,b.indexBy=Sh,b.initial=Xd,b.intersection=Yd,b.invert=Xf,b.invoke=Je,b.keys=_h,b.keysIn=Yf,b.map=Ke,b.mapValues=Zf,b.matches=Cg,b.matchesProperty=Dg,b.memoize=hf,b.merge=ai,b.mixin=Eg,b.negate=jf,b.omit=$f,b.once=kf,b.pairs=_f,b.partial=lf,b.partialRight=mf,b.partition=Vh,b.pick=ag,b.pluck=Le,b.property=Hg,b.propertyOf=Ig,b.pull=_d,b.pullAt=ae,b.range=Jg,b.rearg=nf,b.reject=Oe,b.remove=be,b.rest=ce,b.shuffle=Qe,b.slice=de,b.sortBy=Te,b.sortByAll=Ue,b.spread=of,b.take=ge,b.takeRight=he,b.takeRightWhile=ie,b.takeWhile=je,b.tap=se,b.throttle=pf,b.thru=te,b.times=Kg,b.toArray=Lf,b.toPlainObject=Mf,b.transform=cg,b.union=ke,b.uniq=le,b.unzip=me,b.values=dg,b.valuesIn=eg,b.where=Ve,b.without=ne,b.wrap=qf,b.xor=oe,b.zip=pe,b.zipObject=qe,b.backflow=gf,b.collect=Ke,b.compose=gf,b.each=He,b.eachRight=Ie,b.extend=$h,b.iteratee=zg,b.methods=Vf,b.object=qe,b.select=De,b.tail=ce,b.unique=le,Eg(b,b),b.attempt=yg,b.camelCase=bi,b.capitalize=gg,b.clone=rf,b.cloneDeep=sf,b.deburr=hg,b.endsWith=ig,b.escape=jg,b.escapeRegExp=kg,b.every=Ce,b.find=Ee,b.findIndex=Rd,b.findKey=Pf,b.findLast=Fe,b.findLastIndex=Sd,b.findLastKey=Qf,b.findWhere=Ge,b.first=Td,b.has=Wf,b.identity=Bg,b.includes=Be,b.indexOf=Wd,b.isArguments=tf,b.isArray=Xh,b.isBoolean=uf,b.isDate=vf,b.isElement=wf,b.isEmpty=xf,b.isEqual=yf,b.isError=zf,b.isFinite=Yh,b.isFunction=Af,b.isMatch=Cf,b.isNaN=Df,b.isNative=Ef,b.isNull=Ff,b.isNumber=Gf,b.isObject=Bf,b.isPlainObject=Zh,b.isRegExp=Hf,b.isString=If,b.isTypedArray=Jf,b.isUndefined=Kf,b.kebabCase=ci,b.last=Zd,b.lastIndexOf=$d,b.max=Th,b.min=Uh,b.noConflict=Fg,b.noop=Gg,b.now=Wh,b.pad=lg,b.padLeft=mg,b.padRight=ng,b.parseInt=og,b.random=fg,b.reduce=Me,b.reduceRight=Ne,b.repeat=pg,b.result=bg,b.runInContext=x,b.size=Re,b.snakeCase=di,b.some=Se,b.sortedIndex=ee,b.sortedLastIndex=fe,b.startCase=ei,b.startsWith=qg,b.template=rg,b.trim=sg,b.trimLeft=tg,b.trimRight=ug,b.trunc=vg,b.unescape=wg,b.uniqueId=Lg,b.words=xg,b.all=Ce,b.any=Se,b.contains=Be,b.detect=Ee,b.foldl=Me,b.foldr=Ne,b.head=Td,b.include=Be,b.inject=Me,Eg(b,function(){var a={};return Cc(b,function(c,d){b.prototype[d]||(a[d]=c)}),a}(),!1),b.sample=Pe,b.prototype.sample=function(a){return this.__chain__||null!=a?this.thru(function(b){return Pe(b,a)}):Pe(this.value())},b.VERSION=z,$b(["bind","bindKey","curry","curryRight","partial","partialRight"],function(a){b[a].placeholder=b}),$b(["filter","map","takeWhile"],function(a,b){var c=b==N,d=b==P;r.prototype[a]=function(a,e){var f=this.clone(),g=f.__filtered__,h=f.__iteratees__||(f.__iteratees__=[]);return f.__filtered__=g||c||d&&f.__dir__<0,h.push({iteratee:pd(a,e,3),type:b}),f}}),$b(["drop","take"],function(a,b){var c="__"+a+"Count__",d=a+"While";r.prototype[a]=function(d){d=null==d?1:wh(ih(d)||0,0);var e=this.clone();if(e.__filtered__){var f=e[c];e[c]=b?xh(f,d):f+d}else{var g=e.__views__||(e.__views__=[]);g.push({size:d,type:a+(e.__dir__<0?"Right":"")})}return e},r.prototype[a+"Right"]=function(b){return this.reverse()[a](b).reverse()},r.prototype[a+"RightWhile"]=function(a,b){return this.reverse()[d](a,b).reverse()}}),$b(["first","last"],function(a,b){var c="take"+(b?"Right":"");r.prototype[a]=function(){return this[c](1).value()[0]}}),$b(["initial","rest"],function(a,b){var c="drop"+(b?"":"Right");r.prototype[a]=function(){return this[c](1)}}),$b(["pluck","where"],function(a,b){var c=b?"filter":"map",d=b?Kc:Oc;r.prototype[a]=function(a){return this[c](d(a))}}),r.prototype.compact=function(){return this.filter(Bg)},r.prototype.dropWhile=function(a,b){var c;return a=pd(a,b,3),this.filter(function(b,d,e){return c||(c=!a(b,d,e))})},r.prototype.reject=function(a,b){return a=pd(a,b,3),this.filter(function(b,c,d){return!a(b,c,d)})},r.prototype.slice=function(a,b){a=null==a?0:+a||0;var c=0>a?this.takeRight(-a):this.drop(a);return"undefined"!=typeof b&&(b=+b||0,c=0>b?c.dropRight(-b):c.take(b-a)),c},r.prototype.toArray=function(){return this.drop(0)},Cc(r.prototype,function(a,d){var e=b[d],f=/^(?:first|last)$/.test(d);b.prototype[d]=function(){var d=this.__wrapped__,g=arguments,h=this.__chain__,i=!!this.__actions__.length,j=d instanceof r,k=j&&!i;if(f&&!h)return k?a.call(d):e.call(b,this.value());var l=function(a){var c=[a];return kh.apply(c,g),e.apply(b,c)};if(j||Xh(d)){var m=k?d:new r(this),n=a.apply(m,g);if(!f&&(i||n.__actions__)){var o=n.__actions__||(n.__actions__=[]);o.push({func:te,args:[l],thisArg:b})}return new c(n,h)}return this.thru(l)}}),$b(["concat","join","pop","push","shift","sort","splice","unshift"],function(a){var c=Wg[a],d=/^(?:push|sort|unshift)$/.test(a)?"tap":"thru",e=/^(?:join|pop|shift)$/.test(a);b.prototype[a]=function(){var a=arguments;return e&&!this.__chain__?c.apply(this.value(),a):this[d](function(b){return c.apply(b,a)})}}),r.prototype.clone=Y,r.prototype.reverse=ab,r.prototype.value=cb,b.prototype.chain=ue,b.prototype.commit=ve,b.prototype.plant=we,b.prototype.reverse=xe,b.prototype.toString=ye,b.prototype.run=b.prototype.toJSON=b.prototype.valueOf=b.prototype.value=ze,b.prototype.collect=b.prototype.map,b.prototype.head=b.prototype.first,b.prototype.select=b.prototype.filter,b.prototype.tail=b.prototype.rest,b}var y,z="3.2.0",A=1,B=2,C=4,D=8,E=16,F=32,G=64,H=128,I=256,J=30,K="...",L=150,M=16,N=0,O=1,P=2,Q="Expected a function",R="__lodash_placeholder__",S="[object Arguments]",T="[object Array]",U="[object Boolean]",V="[object Date]",W="[object Error]",X="[object Function]",Y="[object Map]",Z="[object Number]",$="[object Object]",_="[object RegExp]",ab="[object Set]",bb="[object String]",cb="[object WeakMap]",db="[object ArrayBuffer]",eb="[object Float32Array]",fb="[object Float64Array]",gb="[object Int8Array]",hb="[object Int16Array]",ib="[object Int32Array]",jb="[object Uint8Array]",kb="[object Uint8ClampedArray]",lb="[object Uint16Array]",mb="[object Uint32Array]",nb=/\b__p \+= '';/g,ob=/\b(__p \+=) '' \+/g,pb=/(__e\(.*?\)|\b__t\)) \+\n'';/g,qb=/&(?:amp|lt|gt|quot|#39|#96);/g,rb=/[&<>"'`]/g,sb=RegExp(qb.source),tb=RegExp(rb.source),ub=/<%-([\s\S]+?)%>/g,vb=/<%([\s\S]+?)%>/g,wb=/<%=([\s\S]+?)%>/g,xb=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,yb=/\w*$/,zb=/^\s*function[ \n\r\t]+\w/,Ab=/^0[xX]/,Bb=/^\[object .+?Constructor\]$/,Cb=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Db=/($^)/,Eb=/[.*+?^${}()|[\]\/\\]/g,Fb=RegExp(Eb.source),Gb=/\bthis\b/,Hb=/['\n\r\u2028\u2029\\]/g,Ib=function(){var a="[A-Z\\xc0-\\xd6\\xd8-\\xde]",b="[a-z\\xdf-\\xf6\\xf8-\\xff]+";return RegExp(a+"{2,}(?="+a+b+")|"+a+"?"+b+"|"+a+"+|[0-9]+","g")}(),Jb=" 	\f \n\r\u2028\u2029 ᠎              ",Kb=["Array","ArrayBuffer","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Math","Number","Object","RegExp","Set","String","_","clearTimeout","document","isFinite","parseInt","setTimeout","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","window","WinRTError"],Lb=-1,Mb={};Mb[eb]=Mb[fb]=Mb[gb]=Mb[hb]=Mb[ib]=Mb[jb]=Mb[kb]=Mb[lb]=Mb[mb]=!0,Mb[S]=Mb[T]=Mb[db]=Mb[U]=Mb[V]=Mb[W]=Mb[X]=Mb[Y]=Mb[Z]=Mb[$]=Mb[_]=Mb[ab]=Mb[bb]=Mb[cb]=!1;var Nb={};Nb[S]=Nb[T]=Nb[db]=Nb[U]=Nb[V]=Nb[eb]=Nb[fb]=Nb[gb]=Nb[hb]=Nb[ib]=Nb[Z]=Nb[$]=Nb[_]=Nb[bb]=Nb[jb]=Nb[kb]=Nb[lb]=Nb[mb]=!0,Nb[W]=Nb[X]=Nb[Y]=Nb[ab]=Nb[cb]=!1;var Ob={leading:!1,maxWait:0,trailing:!1},Pb={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss"},Qb={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},Rb={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"},Sb={"function":!0,object:!0},Tb={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ub=Sb[typeof window]&&window!==(this&&this.window)?window:this,Vb=Sb[typeof c]&&c&&!c.nodeType&&c,Wb=Sb[typeof b]&&b&&!b.nodeType&&b,Xb=Vb&&Wb&&"object"==typeof a&&a;!Xb||Xb.global!==Xb&&Xb.window!==Xb&&Xb.self!==Xb||(Ub=Xb);var Yb=Wb&&Wb.exports===Vb&&Vb,Zb=x();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(Ub._=Zb,define(function(){return Zb})):Vb&&Wb?Yb?(Wb.exports=Zb)._=Zb:Vb._=Zb:Ub._=Zb}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],108:[function(a,b){"use strict";var c=a("./focusNode"),d={componentDidMount:function(){this.props.autoFocus&&c(this.getDOMNode())}};b.exports=d},{"./focusNode":232}],109:[function(a,b){"use strict";function c(){var a=window.opera;return"object"==typeof a&&"function"==typeof a.version&&parseInt(a.version(),10)<=12}function d(a){return(a.ctrlKey||a.altKey||a.metaKey)&&!(a.ctrlKey&&a.altKey)}var e=a("./EventConstants"),f=a("./EventPropagators"),g=a("./ExecutionEnvironment"),h=a("./SyntheticInputEvent"),i=a("./keyOf"),j=g.canUseDOM&&"TextEvent"in window&&!("documentMode"in document||c()),k=32,l=String.fromCharCode(k),m=e.topLevelTypes,n={beforeInput:{phasedRegistrationNames:{bubbled:i({onBeforeInput:null}),captured:i({onBeforeInputCapture:null})},dependencies:[m.topCompositionEnd,m.topKeyPress,m.topTextInput,m.topPaste]}},o=null,p=!1,q={eventTypes:n,extractEvents:function(a,b,c,e){var g;if(j)switch(a){case m.topKeyPress:var i=e.which;if(i!==k)return;p=!0,g=l;break;case m.topTextInput:if(g=e.data,g===l&&p)return;break;default:return}else{switch(a){case m.topPaste:o=null;break;case m.topKeyPress:e.which&&!d(e)&&(o=String.fromCharCode(e.which));break;case m.topCompositionEnd:o=e.data}if(null===o)return;g=o}if(g){var q=h.getPooled(n.beforeInput,c,e);return q.data=g,o=null,f.accumulateTwoPhaseDispatches(q),q}}};b.exports=q},{"./EventConstants":123,"./EventPropagators":128,"./ExecutionEnvironment":129,"./SyntheticInputEvent":208,"./keyOf":254}],110:[function(a,b){(function(c){var d=a("./invariant"),e={addClass:function(a,b){return"production"!==c.env.NODE_ENV?d(!/\s/.test(b),'CSSCore.addClass takes only a single class name. "%s" contains multiple classes.',b):d(!/\s/.test(b)),b&&(a.classList?a.classList.add(b):e.hasClass(a,b)||(a.className=a.className+" "+b)),a},removeClass:function(a,b){return"production"!==c.env.NODE_ENV?d(!/\s/.test(b),'CSSCore.removeClass takes only a single class name. "%s" contains multiple classes.',b):d(!/\s/.test(b)),b&&(a.classList?a.classList.remove(b):e.hasClass(a,b)&&(a.className=a.className.replace(new RegExp("(^|\\s)"+b+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,""))),a},conditionClass:function(a,b,c){return(c?e.addClass:e.removeClass)(a,b)},hasClass:function(a,b){return"production"!==c.env.NODE_ENV?d(!/\s/.test(b),"CSS.hasClass takes only a single class name."):d(!/\s/.test(b)),a.classList?!!b&&a.classList.contains(b):(" "+a.className+" ").indexOf(" "+b+" ")>-1}};b.exports=e}).call(this,a("_process"))},{"./invariant":247,_process:91}],111:[function(a,b){"use strict";function c(a,b){return a+b.charAt(0).toUpperCase()+b.substring(1)}var d={columnCount:!0,flex:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,strokeOpacity:!0},e=["Webkit","ms","Moz","O"];Object.keys(d).forEach(function(a){e.forEach(function(b){d[c(b,a)]=d[a]})});var f={background:{backgroundImage:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundColor:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0}},g={isUnitlessNumber:d,shorthandPropertyExpansions:f};b.exports=g},{}],112:[function(a,b){(function(c){"use strict";var d=a("./CSSProperty"),e=a("./ExecutionEnvironment"),f=a("./camelizeStyleName"),g=a("./dangerousStyleValue"),h=a("./hyphenateStyleName"),i=a("./memoizeStringOnly"),j=a("./warning"),k=i(function(a){return h(a)}),l="cssFloat";if(e.canUseDOM&&void 0===document.documentElement.style.cssFloat&&(l="styleFloat"),"production"!==c.env.NODE_ENV)var m={},n=function(a){m.hasOwnProperty(a)&&m[a]||(m[a]=!0,"production"!==c.env.NODE_ENV?j(!1,"Unsupported style property "+a+". Did you mean "+f(a)+"?"):null)};var o={createMarkupForStyles:function(a){var b="";for(var d in a)if(a.hasOwnProperty(d)){"production"!==c.env.NODE_ENV&&d.indexOf("-")>-1&&n(d);var e=a[d];null!=e&&(b+=k(d)+":",b+=g(d,e)+";")}return b||null},setValueForStyles:function(a,b){var e=a.style;for(var f in b)if(b.hasOwnProperty(f)){"production"!==c.env.NODE_ENV&&f.indexOf("-")>-1&&n(f);var h=g(f,b[f]);if("float"===f&&(f=l),h)e[f]=h;else{var i=d.shorthandPropertyExpansions[f];if(i)for(var j in i)e[j]="";else e[f]=""}}}};b.exports=o}).call(this,a("_process"))},{"./CSSProperty":111,"./ExecutionEnvironment":129,"./camelizeStyleName":219,"./dangerousStyleValue":226,"./hyphenateStyleName":245,"./memoizeStringOnly":256,"./warning":267,_process:91}],113:[function(a,b){(function(c){"use strict";function d(){this._callbacks=null,this._contexts=null}var e=a("./PooledClass"),f=a("./Object.assign"),g=a("./invariant");f(d.prototype,{enqueue:function(a,b){this._callbacks=this._callbacks||[],this._contexts=this._contexts||[],this._callbacks.push(a),this._contexts.push(b)},notifyAll:function(){var a=this._callbacks,b=this._contexts;if(a){"production"!==c.env.NODE_ENV?g(a.length===b.length,"Mismatched list of contexts in callback queue"):g(a.length===b.length),this._callbacks=null,this._contexts=null;for(var d=0,e=a.length;e>d;d++)a[d].call(b[d]);a.length=0,b.length=0}},reset:function(){this._callbacks=null,this._contexts=null},destructor:function(){this.reset()}}),e.addPoolingTo(d),b.exports=d}).call(this,a("_process"))},{"./Object.assign":135,"./PooledClass":136,"./invariant":247,_process:91}],114:[function(a,b){"use strict";function c(a){return"SELECT"===a.nodeName||"INPUT"===a.nodeName&&"file"===a.type}function d(a){var b=w.getPooled(B.change,D,a);t.accumulateTwoPhaseDispatches(b),v.batchedUpdates(e,b)}function e(a){s.enqueueEvents(a),s.processEventQueue()}function f(a,b){C=a,D=b,C.attachEvent("onchange",d)}function g(){C&&(C.detachEvent("onchange",d),C=null,D=null)}function h(a,b,c){return a===A.topChange?c:void 0}function i(a,b,c){a===A.topFocus?(g(),f(b,c)):a===A.topBlur&&g()}function j(a,b){C=a,D=b,E=a.value,F=Object.getOwnPropertyDescriptor(a.constructor.prototype,"value"),Object.defineProperty(C,"value",I),C.attachEvent("onpropertychange",l)}function k(){C&&(delete C.value,C.detachEvent("onpropertychange",l),C=null,D=null,E=null,F=null)}function l(a){if("value"===a.propertyName){var b=a.srcElement.value;b!==E&&(E=b,d(a))}}function m(a,b,c){return a===A.topInput?c:void 0}function n(a,b,c){a===A.topFocus?(k(),j(b,c)):a===A.topBlur&&k()}function o(a){return a!==A.topSelectionChange&&a!==A.topKeyUp&&a!==A.topKeyDown||!C||C.value===E?void 0:(E=C.value,D)}function p(a){return"INPUT"===a.nodeName&&("checkbox"===a.type||"radio"===a.type)}function q(a,b,c){return a===A.topClick?c:void 0}var r=a("./EventConstants"),s=a("./EventPluginHub"),t=a("./EventPropagators"),u=a("./ExecutionEnvironment"),v=a("./ReactUpdates"),w=a("./SyntheticEvent"),x=a("./isEventSupported"),y=a("./isTextInputElement"),z=a("./keyOf"),A=r.topLevelTypes,B={change:{phasedRegistrationNames:{bubbled:z({onChange:null}),captured:z({onChangeCapture:null})},dependencies:[A.topBlur,A.topChange,A.topClick,A.topFocus,A.topInput,A.topKeyDown,A.topKeyUp,A.topSelectionChange]}},C=null,D=null,E=null,F=null,G=!1;u.canUseDOM&&(G=x("change")&&(!("documentMode"in document)||document.documentMode>8));var H=!1;u.canUseDOM&&(H=x("input")&&(!("documentMode"in document)||document.documentMode>9));var I={get:function(){return F.get.call(this)},set:function(a){E=""+a,F.set.call(this,a)}},J={eventTypes:B,extractEvents:function(a,b,d,e){var f,g;if(c(b)?G?f=h:g=i:y(b)?H?f=m:(f=o,g=n):p(b)&&(f=q),f){var j=f(a,b,d);if(j){var k=w.getPooled(B.change,j,e);return t.accumulateTwoPhaseDispatches(k),k}}g&&g(a,b,d)}};b.exports=J},{"./EventConstants":123,"./EventPluginHub":125,"./EventPropagators":128,"./ExecutionEnvironment":129,"./ReactUpdates":197,"./SyntheticEvent":206,"./isEventSupported":248,"./isTextInputElement":250,"./keyOf":254}],115:[function(a,b){"use strict";var c=0,d={createReactRootIndex:function(){return c++}};b.exports=d},{}],116:[function(a,b){"use strict";function c(a){switch(a){case r.topCompositionStart:return t.compositionStart;case r.topCompositionEnd:return t.compositionEnd;case r.topCompositionUpdate:return t.compositionUpdate}}function d(a,b){return a===r.topKeyDown&&b.keyCode===o}function e(a,b){switch(a){case r.topKeyUp:return-1!==n.indexOf(b.keyCode);case r.topKeyDown:return b.keyCode!==o;case r.topKeyPress:case r.topMouseDown:case r.topBlur:return!0;default:return!1}}function f(a){this.root=a,this.startSelection=j.getSelection(a),this.startValue=this.getText()}var g=a("./EventConstants"),h=a("./EventPropagators"),i=a("./ExecutionEnvironment"),j=a("./ReactInputSelection"),k=a("./SyntheticCompositionEvent"),l=a("./getTextContentAccessor"),m=a("./keyOf"),n=[9,13,27,32],o=229,p=i.canUseDOM&&"CompositionEvent"in window,q=!p||"documentMode"in document&&document.documentMode>8&&document.documentMode<=11,r=g.topLevelTypes,s=null,t={compositionEnd:{phasedRegistrationNames:{bubbled:m({onCompositionEnd:null}),captured:m({onCompositionEndCapture:null})},dependencies:[r.topBlur,r.topCompositionEnd,r.topKeyDown,r.topKeyPress,r.topKeyUp,r.topMouseDown]},compositionStart:{phasedRegistrationNames:{bubbled:m({onCompositionStart:null}),captured:m({onCompositionStartCapture:null})},dependencies:[r.topBlur,r.topCompositionStart,r.topKeyDown,r.topKeyPress,r.topKeyUp,r.topMouseDown]},compositionUpdate:{phasedRegistrationNames:{bubbled:m({onCompositionUpdate:null}),captured:m({onCompositionUpdateCapture:null})},dependencies:[r.topBlur,r.topCompositionUpdate,r.topKeyDown,r.topKeyPress,r.topKeyUp,r.topMouseDown]}};f.prototype.getText=function(){return this.root.value||this.root[l()]},f.prototype.getData=function(){var a=this.getText(),b=this.startSelection.start,c=this.startValue.length-this.startSelection.end;return a.substr(b,a.length-c-b)};var u={eventTypes:t,extractEvents:function(a,b,g,i){var j,l;if(p?j=c(a):s?e(a,i)&&(j=t.compositionEnd):d(a,i)&&(j=t.compositionStart),q&&(s||j!==t.compositionStart?j===t.compositionEnd&&s&&(l=s.getData(),s=null):s=new f(b)),j){var m=k.getPooled(j,g,i);return l&&(m.data=l),h.accumulateTwoPhaseDispatches(m),m}}};b.exports=u},{"./EventConstants":123,"./EventPropagators":128,"./ExecutionEnvironment":129,"./ReactInputSelection":171,"./SyntheticCompositionEvent":204,"./getTextContentAccessor":242,"./keyOf":254}],117:[function(a,b){(function(c){"use strict";function d(a,b,c){a.insertBefore(b,a.childNodes[c]||null)}var e,f=a("./Danger"),g=a("./ReactMultiChildUpdateTypes"),h=a("./getTextContentAccessor"),i=a("./invariant"),j=h();e="textContent"===j?function(a,b){a.textContent=b}:function(a,b){for(;a.firstChild;)a.removeChild(a.firstChild);if(b){var c=a.ownerDocument||document;a.appendChild(c.createTextNode(b))}};var k={dangerouslyReplaceNodeWithMarkup:f.dangerouslyReplaceNodeWithMarkup,updateTextContent:e,processUpdates:function(a,b){for(var h,j=null,k=null,l=0;h=a[l];l++)if(h.type===g.MOVE_EXISTING||h.type===g.REMOVE_NODE){var m=h.fromIndex,n=h.parentNode.childNodes[m],o=h.parentID;"production"!==c.env.NODE_ENV?i(n,"processUpdates(): Unable to find child %s of element. This probably means the DOM was unexpectedly mutated (e.g., by the browser), usually due to forgetting a <tbody> when using tables, nesting tags like <form>, <p>, or <a>, or using non-SVG elements in an <svg> parent. Try inspecting the child nodes of the element with React ID `%s`.",m,o):i(n),j=j||{},j[o]=j[o]||[],j[o][m]=n,k=k||[],k.push(n)}var p=f.dangerouslyRenderMarkup(b);if(k)for(var q=0;q<k.length;q++)k[q].parentNode.removeChild(k[q]);for(var r=0;h=a[r];r++)switch(h.type){case g.INSERT_MARKUP:d(h.parentNode,p[h.markupIndex],h.toIndex);break;case g.MOVE_EXISTING:d(h.parentNode,j[h.parentID][h.fromIndex],h.toIndex);break;case g.TEXT_CONTENT:e(h.parentNode,h.textContent);break;case g.REMOVE_NODE:}}};b.exports=k}).call(this,a("_process"))},{"./Danger":120,"./ReactMultiChildUpdateTypes":178,"./getTextContentAccessor":242,"./invariant":247,_process:91}],118:[function(a,b){(function(c){"use strict";function d(a,b){return(a&b)===b}var e=a("./invariant"),f={MUST_USE_ATTRIBUTE:1,MUST_USE_PROPERTY:2,HAS_SIDE_EFFECTS:4,HAS_BOOLEAN_VALUE:8,HAS_NUMERIC_VALUE:16,HAS_POSITIVE_NUMERIC_VALUE:48,HAS_OVERLOADED_BOOLEAN_VALUE:64,injectDOMPropertyConfig:function(a){var b=a.Properties||{},g=a.DOMAttributeNames||{},i=a.DOMPropertyNames||{},j=a.DOMMutationMethods||{};a.isCustomAttribute&&h._isCustomAttributeFunctions.push(a.isCustomAttribute);for(var k in b){"production"!==c.env.NODE_ENV?e(!h.isStandardName.hasOwnProperty(k),"injectDOMPropertyConfig(...): You're trying to inject DOM property '%s' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.",k):e(!h.isStandardName.hasOwnProperty(k)),h.isStandardName[k]=!0;var l=k.toLowerCase();if(h.getPossibleStandardName[l]=k,g.hasOwnProperty(k)){var m=g[k];h.getPossibleStandardName[m]=k,h.getAttributeName[k]=m}else h.getAttributeName[k]=l;h.getPropertyName[k]=i.hasOwnProperty(k)?i[k]:k,h.getMutationMethod[k]=j.hasOwnProperty(k)?j[k]:null;var n=b[k];h.mustUseAttribute[k]=d(n,f.MUST_USE_ATTRIBUTE),h.mustUseProperty[k]=d(n,f.MUST_USE_PROPERTY),h.hasSideEffects[k]=d(n,f.HAS_SIDE_EFFECTS),h.hasBooleanValue[k]=d(n,f.HAS_BOOLEAN_VALUE),h.hasNumericValue[k]=d(n,f.HAS_NUMERIC_VALUE),h.hasPositiveNumericValue[k]=d(n,f.HAS_POSITIVE_NUMERIC_VALUE),h.hasOverloadedBooleanValue[k]=d(n,f.HAS_OVERLOADED_BOOLEAN_VALUE),"production"!==c.env.NODE_ENV?e(!h.mustUseAttribute[k]||!h.mustUseProperty[k],"DOMProperty: Cannot require using both attribute and property: %s",k):e(!h.mustUseAttribute[k]||!h.mustUseProperty[k]),"production"!==c.env.NODE_ENV?e(h.mustUseProperty[k]||!h.hasSideEffects[k],"DOMProperty: Properties that have side effects must use property: %s",k):e(h.mustUseProperty[k]||!h.hasSideEffects[k]),"production"!==c.env.NODE_ENV?e(!!h.hasBooleanValue[k]+!!h.hasNumericValue[k]+!!h.hasOverloadedBooleanValue[k]<=1,"DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s",k):e(!!h.hasBooleanValue[k]+!!h.hasNumericValue[k]+!!h.hasOverloadedBooleanValue[k]<=1)}}},g={},h={ID_ATTRIBUTE_NAME:"data-reactid",isStandardName:{},getPossibleStandardName:{},getAttributeName:{},getPropertyName:{},getMutationMethod:{},mustUseAttribute:{},mustUseProperty:{},hasSideEffects:{},hasBooleanValue:{},hasNumericValue:{},hasPositiveNumericValue:{},hasOverloadedBooleanValue:{},_isCustomAttributeFunctions:[],isCustomAttribute:function(a){for(var b=0;b<h._isCustomAttributeFunctions.length;b++){var c=h._isCustomAttributeFunctions[b];if(c(a))return!0}return!1},getDefaultValueForProperty:function(a,b){var c,d=g[a];return d||(g[a]=d={}),b in d||(c=document.createElement(a),d[b]=c[b]),d[b]},injection:f};b.exports=h}).call(this,a("_process"))},{"./invariant":247,_process:91}],119:[function(a,b){(function(c){"use strict";function d(a,b){return null==b||e.hasBooleanValue[a]&&!b||e.hasNumericValue[a]&&isNaN(b)||e.hasPositiveNumericValue[a]&&1>b||e.hasOverloadedBooleanValue[a]&&b===!1}var e=a("./DOMProperty"),f=a("./escapeTextForBrowser"),g=a("./memoizeStringOnly"),h=a("./warning"),i=g(function(a){return f(a)+'="'});if("production"!==c.env.NODE_ENV)var j={children:!0,dangerouslySetInnerHTML:!0,key:!0,ref:!0},k={},l=function(a){if(!(j.hasOwnProperty(a)&&j[a]||k.hasOwnProperty(a)&&k[a])){k[a]=!0;var b=a.toLowerCase(),d=e.isCustomAttribute(b)?b:e.getPossibleStandardName.hasOwnProperty(b)?e.getPossibleStandardName[b]:null;"production"!==c.env.NODE_ENV?h(null==d,"Unknown DOM property "+a+". Did you mean "+d+"?"):null}};var m={createMarkupForID:function(a){return i(e.ID_ATTRIBUTE_NAME)+f(a)+'"'},createMarkupForProperty:function(a,b){if(e.isStandardName.hasOwnProperty(a)&&e.isStandardName[a]){if(d(a,b))return"";var g=e.getAttributeName[a];return e.hasBooleanValue[a]||e.hasOverloadedBooleanValue[a]&&b===!0?f(g):i(g)+f(b)+'"'}return e.isCustomAttribute(a)?null==b?"":i(a)+f(b)+'"':("production"!==c.env.NODE_ENV&&l(a),null)},setValueForProperty:function(a,b,f){if(e.isStandardName.hasOwnProperty(b)&&e.isStandardName[b]){var g=e.getMutationMethod[b];if(g)g(a,f);else if(d(b,f))this.deleteValueForProperty(a,b);else if(e.mustUseAttribute[b])a.setAttribute(e.getAttributeName[b],""+f);else{var h=e.getPropertyName[b];e.hasSideEffects[b]&&""+a[h]==""+f||(a[h]=f)}}else e.isCustomAttribute(b)?null==f?a.removeAttribute(b):a.setAttribute(b,""+f):"production"!==c.env.NODE_ENV&&l(b)},deleteValueForProperty:function(a,b){if(e.isStandardName.hasOwnProperty(b)&&e.isStandardName[b]){var d=e.getMutationMethod[b];if(d)d(a,void 0);else if(e.mustUseAttribute[b])a.removeAttribute(e.getAttributeName[b]);else{var f=e.getPropertyName[b],g=e.getDefaultValueForProperty(a.nodeName,f);e.hasSideEffects[b]&&""+a[f]===g||(a[f]=g)}}else e.isCustomAttribute(b)?a.removeAttribute(b):"production"!==c.env.NODE_ENV&&l(b)}};b.exports=m}).call(this,a("_process"))},{"./DOMProperty":118,"./escapeTextForBrowser":230,"./memoizeStringOnly":256,"./warning":267,_process:91}],120:[function(a,b){(function(c){"use strict";function d(a){return a.substring(1,a.indexOf(" "))}var e=a("./ExecutionEnvironment"),f=a("./createNodesFromMarkup"),g=a("./emptyFunction"),h=a("./getMarkupWrap"),i=a("./invariant"),j=/^(<[^ \/>]+)/,k="data-danger-index",l={dangerouslyRenderMarkup:function(a){"production"!==c.env.NODE_ENV?i(e.canUseDOM,"dangerouslyRenderMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use React.renderToString for server rendering."):i(e.canUseDOM);for(var b,l={},m=0;m<a.length;m++)"production"!==c.env.NODE_ENV?i(a[m],"dangerouslyRenderMarkup(...): Missing markup."):i(a[m]),b=d(a[m]),b=h(b)?b:"*",l[b]=l[b]||[],l[b][m]=a[m];var n=[],o=0;for(b in l)if(l.hasOwnProperty(b)){var p=l[b];for(var q in p)if(p.hasOwnProperty(q)){var r=p[q];p[q]=r.replace(j,"$1 "+k+'="'+q+'" ')}var s=f(p.join(""),g);for(m=0;m<s.length;++m){var t=s[m];t.hasAttribute&&t.hasAttribute(k)?(q=+t.getAttribute(k),t.removeAttribute(k),"production"!==c.env.NODE_ENV?i(!n.hasOwnProperty(q),"Danger: Assigning to an already-occupied result index."):i(!n.hasOwnProperty(q)),n[q]=t,o+=1):"production"!==c.env.NODE_ENV&&console.error("Danger: Discarding unexpected node:",t)}}return"production"!==c.env.NODE_ENV?i(o===n.length,"Danger: Did not assign to every index of resultList."):i(o===n.length),"production"!==c.env.NODE_ENV?i(n.length===a.length,"Danger: Expected markup to render %s nodes, but rendered %s.",a.length,n.length):i(n.length===a.length),n},dangerouslyReplaceNodeWithMarkup:function(a,b){"production"!==c.env.NODE_ENV?i(e.canUseDOM,"dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use React.renderToString for server rendering."):i(e.canUseDOM),"production"!==c.env.NODE_ENV?i(b,"dangerouslyReplaceNodeWithMarkup(...): Missing markup."):i(b),"production"!==c.env.NODE_ENV?i("html"!==a.tagName.toLowerCase(),"dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See renderComponentToString()."):i("html"!==a.tagName.toLowerCase());var d=f(b,g)[0];a.parentNode.replaceChild(d,a)}};b.exports=l}).call(this,a("_process"))},{"./ExecutionEnvironment":129,"./createNodesFromMarkup":224,"./emptyFunction":228,"./getMarkupWrap":239,"./invariant":247,_process:91}],121:[function(a,b){"use strict";var c=a("./keyOf"),d=[c({ResponderEventPlugin:null}),c({SimpleEventPlugin:null}),c({TapEventPlugin:null}),c({EnterLeaveEventPlugin:null}),c({ChangeEventPlugin:null}),c({SelectEventPlugin:null}),c({CompositionEventPlugin:null}),c({BeforeInputEventPlugin:null}),c({AnalyticsEventPlugin:null}),c({MobileSafariClickEventPlugin:null})];b.exports=d},{"./keyOf":254}],122:[function(a,b){"use strict";var c=a("./EventConstants"),d=a("./EventPropagators"),e=a("./SyntheticMouseEvent"),f=a("./ReactMount"),g=a("./keyOf"),h=c.topLevelTypes,i=f.getFirstReactDOM,j={mouseEnter:{registrationName:g({onMouseEnter:null}),dependencies:[h.topMouseOut,h.topMouseOver]},mouseLeave:{registrationName:g({onMouseLeave:null}),dependencies:[h.topMouseOut,h.topMouseOver]}},k=[null,null],l={eventTypes:j,extractEvents:function(a,b,c,g){if(a===h.topMouseOver&&(g.relatedTarget||g.fromElement))return null;if(a!==h.topMouseOut&&a!==h.topMouseOver)return null;var l;if(b.window===b)l=b;else{var m=b.ownerDocument;l=m?m.defaultView||m.parentWindow:window}var n,o;if(a===h.topMouseOut?(n=b,o=i(g.relatedTarget||g.toElement)||l):(n=l,o=b),n===o)return null;var p=n?f.getID(n):"",q=o?f.getID(o):"",r=e.getPooled(j.mouseLeave,p,g);r.type="mouseleave",r.target=n,r.relatedTarget=o;var s=e.getPooled(j.mouseEnter,q,g);return s.type="mouseenter",s.target=o,s.relatedTarget=n,d.accumulateEnterLeaveDispatches(r,s,p,q),k[0]=r,k[1]=s,k}};b.exports=l},{"./EventConstants":123,"./EventPropagators":128,"./ReactMount":176,"./SyntheticMouseEvent":210,"./keyOf":254}],123:[function(a,b){"use strict";var c=a("./keyMirror"),d=c({bubbled:null,captured:null}),e=c({topBlur:null,topChange:null,topClick:null,topCompositionEnd:null,topCompositionStart:null,topCompositionUpdate:null,topContextMenu:null,topCopy:null,topCut:null,topDoubleClick:null,topDrag:null,topDragEnd:null,topDragEnter:null,topDragExit:null,topDragLeave:null,topDragOver:null,topDragStart:null,topDrop:null,topError:null,topFocus:null,topInput:null,topKeyDown:null,topKeyPress:null,topKeyUp:null,topLoad:null,topMouseDown:null,topMouseMove:null,topMouseOut:null,topMouseOver:null,topMouseUp:null,topPaste:null,topReset:null,topScroll:null,topSelectionChange:null,topSubmit:null,topTextInput:null,topTouchCancel:null,topTouchEnd:null,topTouchMove:null,topTouchStart:null,topWheel:null}),f={topLevelTypes:e,PropagationPhases:d};b.exports=f},{"./keyMirror":253}],124:[function(a,b){(function(c){var d=a("./emptyFunction"),e={listen:function(a,b,c){return a.addEventListener?(a.addEventListener(b,c,!1),{remove:function(){a.removeEventListener(b,c,!1)}}):a.attachEvent?(a.attachEvent("on"+b,c),{remove:function(){a.detachEvent("on"+b,c)}}):void 0},capture:function(a,b,e){return a.addEventListener?(a.addEventListener(b,e,!0),{remove:function(){a.removeEventListener(b,e,!0)}}):("production"!==c.env.NODE_ENV&&console.error("Attempted to listen to events during the capture phase on a browser that does not support the capture phase. Your application will not receive some events."),{remove:d})
+},registerDefault:function(){}};b.exports=e}).call(this,a("_process"))},{"./emptyFunction":228,_process:91}],125:[function(a,b){(function(c){"use strict";function d(){var a=!m||!m.traverseTwoPhase||!m.traverseEnterLeave;if(a)throw new Error("InstanceHandle not injected before use!")}var e=a("./EventPluginRegistry"),f=a("./EventPluginUtils"),g=a("./accumulateInto"),h=a("./forEachAccumulated"),i=a("./invariant"),j={},k=null,l=function(a){if(a){var b=f.executeDispatch,c=e.getPluginModuleForEvent(a);c&&c.executeDispatch&&(b=c.executeDispatch),f.executeDispatchesInOrder(a,b),a.isPersistent()||a.constructor.release(a)}},m=null,n={injection:{injectMount:f.injection.injectMount,injectInstanceHandle:function(a){m=a,"production"!==c.env.NODE_ENV&&d()},getInstanceHandle:function(){return"production"!==c.env.NODE_ENV&&d(),m},injectEventPluginOrder:e.injectEventPluginOrder,injectEventPluginsByName:e.injectEventPluginsByName},eventNameDispatchConfigs:e.eventNameDispatchConfigs,registrationNameModules:e.registrationNameModules,putListener:function(a,b,d){"production"!==c.env.NODE_ENV?i(!d||"function"==typeof d,"Expected %s listener to be a function, instead got type %s",b,typeof d):i(!d||"function"==typeof d);var e=j[b]||(j[b]={});e[a]=d},getListener:function(a,b){var c=j[b];return c&&c[a]},deleteListener:function(a,b){var c=j[b];c&&delete c[a]},deleteAllListeners:function(a){for(var b in j)delete j[b][a]},extractEvents:function(a,b,c,d){for(var f,h=e.plugins,i=0,j=h.length;j>i;i++){var k=h[i];if(k){var l=k.extractEvents(a,b,c,d);l&&(f=g(f,l))}}return f},enqueueEvents:function(a){a&&(k=g(k,a))},processEventQueue:function(){var a=k;k=null,h(a,l),"production"!==c.env.NODE_ENV?i(!k,"processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented."):i(!k)},__purge:function(){j={}},__getListenerBank:function(){return j}};b.exports=n}).call(this,a("_process"))},{"./EventPluginRegistry":126,"./EventPluginUtils":127,"./accumulateInto":216,"./forEachAccumulated":233,"./invariant":247,_process:91}],126:[function(a,b){(function(c){"use strict";function d(){if(h)for(var a in i){var b=i[a],d=h.indexOf(a);if("production"!==c.env.NODE_ENV?g(d>-1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",a):g(d>-1),!j.plugins[d]){"production"!==c.env.NODE_ENV?g(b.extractEvents,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",a):g(b.extractEvents),j.plugins[d]=b;var f=b.eventTypes;for(var k in f)"production"!==c.env.NODE_ENV?g(e(f[k],b,k),"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",k,a):g(e(f[k],b,k))}}}function e(a,b,d){"production"!==c.env.NODE_ENV?g(!j.eventNameDispatchConfigs.hasOwnProperty(d),"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",d):g(!j.eventNameDispatchConfigs.hasOwnProperty(d)),j.eventNameDispatchConfigs[d]=a;var e=a.phasedRegistrationNames;if(e){for(var h in e)if(e.hasOwnProperty(h)){var i=e[h];f(i,b,d)}return!0}return a.registrationName?(f(a.registrationName,b,d),!0):!1}function f(a,b,d){"production"!==c.env.NODE_ENV?g(!j.registrationNameModules[a],"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",a):g(!j.registrationNameModules[a]),j.registrationNameModules[a]=b,j.registrationNameDependencies[a]=b.eventTypes[d].dependencies}var g=a("./invariant"),h=null,i={},j={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},injectEventPluginOrder:function(a){"production"!==c.env.NODE_ENV?g(!h,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):g(!h),h=Array.prototype.slice.call(a),d()},injectEventPluginsByName:function(a){var b=!1;for(var e in a)if(a.hasOwnProperty(e)){var f=a[e];i.hasOwnProperty(e)&&i[e]===f||("production"!==c.env.NODE_ENV?g(!i[e],"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",e):g(!i[e]),i[e]=f,b=!0)}b&&d()},getPluginModuleForEvent:function(a){var b=a.dispatchConfig;if(b.registrationName)return j.registrationNameModules[b.registrationName]||null;for(var c in b.phasedRegistrationNames)if(b.phasedRegistrationNames.hasOwnProperty(c)){var d=j.registrationNameModules[b.phasedRegistrationNames[c]];if(d)return d}return null},_resetEventPlugins:function(){h=null;for(var a in i)i.hasOwnProperty(a)&&delete i[a];j.plugins.length=0;var b=j.eventNameDispatchConfigs;for(var c in b)b.hasOwnProperty(c)&&delete b[c];var d=j.registrationNameModules;for(var e in d)d.hasOwnProperty(e)&&delete d[e]}};b.exports=j}).call(this,a("_process"))},{"./invariant":247,_process:91}],127:[function(a,b){(function(c){"use strict";function d(a){return a===r.topMouseUp||a===r.topTouchEnd||a===r.topTouchCancel}function e(a){return a===r.topMouseMove||a===r.topTouchMove}function f(a){return a===r.topMouseDown||a===r.topTouchStart}function g(a,b){var d=a._dispatchListeners,e=a._dispatchIDs;if("production"!==c.env.NODE_ENV&&n(a),Array.isArray(d))for(var f=0;f<d.length&&!a.isPropagationStopped();f++)b(a,d[f],e[f]);else d&&b(a,d,e)}function h(a,b,c){a.currentTarget=q.Mount.getNode(c);var d=b(a,c);return a.currentTarget=null,d}function i(a,b){g(a,b),a._dispatchListeners=null,a._dispatchIDs=null}function j(a){var b=a._dispatchListeners,d=a._dispatchIDs;if("production"!==c.env.NODE_ENV&&n(a),Array.isArray(b)){for(var e=0;e<b.length&&!a.isPropagationStopped();e++)if(b[e](a,d[e]))return d[e]}else if(b&&b(a,d))return d;return null}function k(a){var b=j(a);return a._dispatchIDs=null,a._dispatchListeners=null,b}function l(a){"production"!==c.env.NODE_ENV&&n(a);var b=a._dispatchListeners,d=a._dispatchIDs;"production"!==c.env.NODE_ENV?p(!Array.isArray(b),"executeDirectDispatch(...): Invalid `event`."):p(!Array.isArray(b));var e=b?b(a,d):null;return a._dispatchListeners=null,a._dispatchIDs=null,e}function m(a){return!!a._dispatchListeners}var n,o=a("./EventConstants"),p=a("./invariant"),q={Mount:null,injectMount:function(a){q.Mount=a,"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?p(a&&a.getNode,"EventPluginUtils.injection.injectMount(...): Injected Mount module is missing getNode."):p(a&&a.getNode))}},r=o.topLevelTypes;"production"!==c.env.NODE_ENV&&(n=function(a){var b=a._dispatchListeners,d=a._dispatchIDs,e=Array.isArray(b),f=Array.isArray(d),g=f?d.length:d?1:0,h=e?b.length:b?1:0;"production"!==c.env.NODE_ENV?p(f===e&&g===h,"EventPluginUtils: Invalid `event`."):p(f===e&&g===h)});var s={isEndish:d,isMoveish:e,isStartish:f,executeDirectDispatch:l,executeDispatch:h,executeDispatchesInOrder:i,executeDispatchesInOrderStopAtTrue:k,hasDispatches:m,injection:q,useTouchEvents:!1};b.exports=s}).call(this,a("_process"))},{"./EventConstants":123,"./invariant":247,_process:91}],128:[function(a,b){(function(c){"use strict";function d(a,b,c){var d=b.dispatchConfig.phasedRegistrationNames[c];return q(a,d)}function e(a,b,e){if("production"!==c.env.NODE_ENV&&!a)throw new Error("Dispatching id must not be null");var f=b?p.bubbled:p.captured,g=d(a,e,f);g&&(e._dispatchListeners=n(e._dispatchListeners,g),e._dispatchIDs=n(e._dispatchIDs,a))}function f(a){a&&a.dispatchConfig.phasedRegistrationNames&&m.injection.getInstanceHandle().traverseTwoPhase(a.dispatchMarker,e,a)}function g(a,b,c){if(c&&c.dispatchConfig.registrationName){var d=c.dispatchConfig.registrationName,e=q(a,d);e&&(c._dispatchListeners=n(c._dispatchListeners,e),c._dispatchIDs=n(c._dispatchIDs,a))}}function h(a){a&&a.dispatchConfig.registrationName&&g(a.dispatchMarker,null,a)}function i(a){o(a,f)}function j(a,b,c,d){m.injection.getInstanceHandle().traverseEnterLeave(c,d,g,a,b)}function k(a){o(a,h)}var l=a("./EventConstants"),m=a("./EventPluginHub"),n=a("./accumulateInto"),o=a("./forEachAccumulated"),p=l.PropagationPhases,q=m.getListener,r={accumulateTwoPhaseDispatches:i,accumulateDirectDispatches:k,accumulateEnterLeaveDispatches:j};b.exports=r}).call(this,a("_process"))},{"./EventConstants":123,"./EventPluginHub":125,"./accumulateInto":216,"./forEachAccumulated":233,_process:91}],129:[function(a,b){"use strict";var c=!("undefined"==typeof window||!window.document||!window.document.createElement),d={canUseDOM:c,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:c&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:c&&!!window.screen,isInWorker:!c};b.exports=d},{}],130:[function(a,b){"use strict";var c,d=a("./DOMProperty"),e=a("./ExecutionEnvironment"),f=d.injection.MUST_USE_ATTRIBUTE,g=d.injection.MUST_USE_PROPERTY,h=d.injection.HAS_BOOLEAN_VALUE,i=d.injection.HAS_SIDE_EFFECTS,j=d.injection.HAS_NUMERIC_VALUE,k=d.injection.HAS_POSITIVE_NUMERIC_VALUE,l=d.injection.HAS_OVERLOADED_BOOLEAN_VALUE;if(e.canUseDOM){var m=document.implementation;c=m&&m.hasFeature&&m.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")}var n={isCustomAttribute:RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/),Properties:{accept:null,acceptCharset:null,accessKey:null,action:null,allowFullScreen:f|h,allowTransparency:f,alt:null,async:h,autoComplete:null,autoPlay:h,cellPadding:null,cellSpacing:null,charSet:f,checked:g|h,classID:f,className:c?f:g,cols:f|k,colSpan:null,content:null,contentEditable:null,contextMenu:f,controls:g|h,coords:null,crossOrigin:null,data:null,dateTime:f,defer:h,dir:null,disabled:f|h,download:l,draggable:null,encType:null,form:f,formAction:f,formEncType:f,formMethod:f,formNoValidate:h,formTarget:f,frameBorder:f,height:f,hidden:f|h,href:null,hrefLang:null,htmlFor:null,httpEquiv:null,icon:null,id:g,label:null,lang:null,list:f,loop:g|h,manifest:f,marginHeight:null,marginWidth:null,max:null,maxLength:f,media:f,mediaGroup:null,method:null,min:null,multiple:g|h,muted:g|h,name:null,noValidate:h,open:null,pattern:null,placeholder:null,poster:null,preload:null,radioGroup:null,readOnly:g|h,rel:null,required:h,role:f,rows:f|k,rowSpan:null,sandbox:null,scope:null,scrolling:null,seamless:f|h,selected:g|h,shape:null,size:f|k,sizes:f,span:k,spellCheck:null,src:null,srcDoc:g,srcSet:f,start:j,step:null,style:null,tabIndex:null,target:null,title:null,type:null,useMap:null,value:g|i,width:f,wmode:f,autoCapitalize:null,autoCorrect:null,itemProp:f,itemScope:f|h,itemType:f,property:null},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{autoCapitalize:"autocapitalize",autoComplete:"autocomplete",autoCorrect:"autocorrect",autoFocus:"autofocus",autoPlay:"autoplay",encType:"enctype",hrefLang:"hreflang",radioGroup:"radiogroup",spellCheck:"spellcheck",srcDoc:"srcdoc",srcSet:"srcset"}};b.exports=n},{"./DOMProperty":118,"./ExecutionEnvironment":129}],131:[function(a,b){"use strict";var c=a("./ReactLink"),d=a("./ReactStateSetters"),e={linkState:function(a){return new c(this.state[a],d.createStateKeySetter(this,a))}};b.exports=e},{"./ReactLink":174,"./ReactStateSetters":191}],132:[function(a,b){(function(c){"use strict";function d(a){"production"!==c.env.NODE_ENV?j(null==a.props.checkedLink||null==a.props.valueLink,"Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don't want to use valueLink and vice versa."):j(null==a.props.checkedLink||null==a.props.valueLink)}function e(a){d(a),"production"!==c.env.NODE_ENV?j(null==a.props.value&&null==a.props.onChange,"Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don't want to use valueLink."):j(null==a.props.value&&null==a.props.onChange)}function f(a){d(a),"production"!==c.env.NODE_ENV?j(null==a.props.checked&&null==a.props.onChange,"Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don't want to use checkedLink"):j(null==a.props.checked&&null==a.props.onChange)}function g(a){this.props.valueLink.requestChange(a.target.value)}function h(a){this.props.checkedLink.requestChange(a.target.checked)}var i=a("./ReactPropTypes"),j=a("./invariant"),k={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0},l={Mixin:{propTypes:{value:function(a,b){return!a[b]||k[a.type]||a.onChange||a.readOnly||a.disabled?void 0:new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(a,b){return!a[b]||a.onChange||a.readOnly||a.disabled?void 0:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")},onChange:i.func}},getValue:function(a){return a.props.valueLink?(e(a),a.props.valueLink.value):a.props.value},getChecked:function(a){return a.props.checkedLink?(f(a),a.props.checkedLink.value):a.props.checked},getOnChange:function(a){return a.props.valueLink?(e(a),g):a.props.checkedLink?(f(a),h):a.props.onChange}};b.exports=l}).call(this,a("_process"))},{"./ReactPropTypes":185,"./invariant":247,_process:91}],133:[function(a,b){(function(c){"use strict";function d(a){a.remove()}var e=a("./ReactBrowserEventEmitter"),f=a("./accumulateInto"),g=a("./forEachAccumulated"),h=a("./invariant"),i={trapBubbledEvent:function(a,b){"production"!==c.env.NODE_ENV?h(this.isMounted(),"Must be mounted to trap events"):h(this.isMounted());var d=e.trapBubbledEvent(a,b,this.getDOMNode());this._localEventListeners=f(this._localEventListeners,d)},componentWillUnmount:function(){this._localEventListeners&&g(this._localEventListeners,d)}};b.exports=i}).call(this,a("_process"))},{"./ReactBrowserEventEmitter":139,"./accumulateInto":216,"./forEachAccumulated":233,"./invariant":247,_process:91}],134:[function(a,b){"use strict";var c=a("./EventConstants"),d=a("./emptyFunction"),e=c.topLevelTypes,f={eventTypes:null,extractEvents:function(a,b,c,f){if(a===e.topTouchStart){var g=f.target;g&&!g.onclick&&(g.onclick=d)}}};b.exports=f},{"./EventConstants":123,"./emptyFunction":228}],135:[function(a,b){function c(a){if(null==a)throw new TypeError("Object.assign target cannot be null or undefined");for(var b=Object(a),c=Object.prototype.hasOwnProperty,d=1;d<arguments.length;d++){var e=arguments[d];if(null!=e){var f=Object(e);for(var g in f)c.call(f,g)&&(b[g]=f[g])}}return b}b.exports=c},{}],136:[function(a,b){(function(c){"use strict";var d=a("./invariant"),e=function(a){var b=this;if(b.instancePool.length){var c=b.instancePool.pop();return b.call(c,a),c}return new b(a)},f=function(a,b){var c=this;if(c.instancePool.length){var d=c.instancePool.pop();return c.call(d,a,b),d}return new c(a,b)},g=function(a,b,c){var d=this;if(d.instancePool.length){var e=d.instancePool.pop();return d.call(e,a,b,c),e}return new d(a,b,c)},h=function(a,b,c,d,e){var f=this;if(f.instancePool.length){var g=f.instancePool.pop();return f.call(g,a,b,c,d,e),g}return new f(a,b,c,d,e)},i=function(a){var b=this;"production"!==c.env.NODE_ENV?d(a instanceof b,"Trying to release an instance into a pool of a different type."):d(a instanceof b),a.destructor&&a.destructor(),b.instancePool.length<b.poolSize&&b.instancePool.push(a)},j=10,k=e,l=function(a,b){var c=a;return c.instancePool=[],c.getPooled=b||k,c.poolSize||(c.poolSize=j),c.release=i,c},m={addPoolingTo:l,oneArgumentPooler:e,twoArgumentPooler:f,threeArgumentPooler:g,fiveArgumentPooler:h};b.exports=m}).call(this,a("_process"))},{"./invariant":247,_process:91}],137:[function(a,b){(function(c){"use strict";var d=a("./DOMPropertyOperations"),e=a("./EventPluginUtils"),f=a("./ReactChildren"),g=a("./ReactComponent"),h=a("./ReactCompositeComponent"),i=a("./ReactContext"),j=a("./ReactCurrentOwner"),k=a("./ReactElement"),l=a("./ReactElementValidator"),m=a("./ReactDOM"),n=a("./ReactDOMComponent"),o=a("./ReactDefaultInjection"),p=a("./ReactInstanceHandles"),q=a("./ReactLegacyElement"),r=a("./ReactMount"),s=a("./ReactMultiChild"),t=a("./ReactPerf"),u=a("./ReactPropTypes"),v=a("./ReactServerRendering"),w=a("./ReactTextComponent"),x=a("./Object.assign"),y=a("./deprecated"),z=a("./onlyChild");o.inject();var A=k.createElement,B=k.createFactory;"production"!==c.env.NODE_ENV&&(A=l.createElement,B=l.createFactory),A=q.wrapCreateElement(A),B=q.wrapCreateFactory(B);var C=t.measure("React","render",r.render),D={Children:{map:f.map,forEach:f.forEach,count:f.count,only:z},DOM:m,PropTypes:u,initializeTouchEvents:function(a){e.useTouchEvents=a},createClass:h.createClass,createElement:A,createFactory:B,constructAndRenderComponent:r.constructAndRenderComponent,constructAndRenderComponentByID:r.constructAndRenderComponentByID,render:C,renderToString:v.renderToString,renderToStaticMarkup:v.renderToStaticMarkup,unmountComponentAtNode:r.unmountComponentAtNode,isValidClass:q.isValidClass,isValidElement:k.isValidElement,withContext:i.withContext,__spread:x,renderComponent:y("React","renderComponent","render",this,C),renderComponentToString:y("React","renderComponentToString","renderToString",this,v.renderToString),renderComponentToStaticMarkup:y("React","renderComponentToStaticMarkup","renderToStaticMarkup",this,v.renderToStaticMarkup),isValidComponent:y("React","isValidComponent","isValidElement",this,k.isValidElement)};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject&&__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({Component:g,CurrentOwner:j,DOMComponent:n,DOMPropertyOperations:d,InstanceHandles:p,Mount:r,MultiChild:s,TextComponent:w}),"production"!==c.env.NODE_ENV){var E=a("./ExecutionEnvironment");if(E.canUseDOM&&window.top===window.self){navigator.userAgent.indexOf("Chrome")>-1&&"undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&console.debug("Download the React DevTools for a better development experience: http://fb.me/react-devtools");for(var F=[Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.split,String.prototype.trim,Object.create,Object.freeze],G=0;G<F.length;G++)if(!F[G]){console.error("One or more ES5 shim/shams expected by React are not available: http://fb.me/react-warning-polyfills");break}}}D.version="0.12.2",b.exports=D}).call(this,a("_process"))},{"./DOMPropertyOperations":119,"./EventPluginUtils":127,"./ExecutionEnvironment":129,"./Object.assign":135,"./ReactChildren":142,"./ReactComponent":143,"./ReactCompositeComponent":146,"./ReactContext":147,"./ReactCurrentOwner":148,"./ReactDOM":149,"./ReactDOMComponent":151,"./ReactDefaultInjection":161,"./ReactElement":164,"./ReactElementValidator":165,"./ReactInstanceHandles":172,"./ReactLegacyElement":173,"./ReactMount":176,"./ReactMultiChild":177,"./ReactPerf":181,"./ReactPropTypes":185,"./ReactServerRendering":189,"./ReactTextComponent":193,"./deprecated":227,"./onlyChild":258,_process:91}],138:[function(a,b){(function(c){"use strict";var d=a("./ReactEmptyComponent"),e=a("./ReactMount"),f=a("./invariant"),g={getDOMNode:function(){return"production"!==c.env.NODE_ENV?f(this.isMounted(),"getDOMNode(): A component must be mounted to have a DOM node."):f(this.isMounted()),d.isNullComponentID(this._rootNodeID)?null:e.getNode(this._rootNodeID)}};b.exports=g}).call(this,a("_process"))},{"./ReactEmptyComponent":166,"./ReactMount":176,"./invariant":247,_process:91}],139:[function(a,b){"use strict";function c(a){return Object.prototype.hasOwnProperty.call(a,o)||(a[o]=m++,k[a[o]]={}),k[a[o]]}var d=a("./EventConstants"),e=a("./EventPluginHub"),f=a("./EventPluginRegistry"),g=a("./ReactEventEmitterMixin"),h=a("./ViewportMetrics"),i=a("./Object.assign"),j=a("./isEventSupported"),k={},l=!1,m=0,n={topBlur:"blur",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topScroll:"scroll",topSelectionChange:"selectionchange",topTextInput:"textInput",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topWheel:"wheel"},o="_reactListenersID"+String(Math.random()).slice(2),p=i({},g,{ReactEventListener:null,injection:{injectReactEventListener:function(a){a.setHandleTopLevel(p.handleTopLevel),p.ReactEventListener=a}},setEnabled:function(a){p.ReactEventListener&&p.ReactEventListener.setEnabled(a)},isEnabled:function(){return!(!p.ReactEventListener||!p.ReactEventListener.isEnabled())},listenTo:function(a,b){for(var e=b,g=c(e),h=f.registrationNameDependencies[a],i=d.topLevelTypes,k=0,l=h.length;l>k;k++){var m=h[k];g.hasOwnProperty(m)&&g[m]||(m===i.topWheel?j("wheel")?p.ReactEventListener.trapBubbledEvent(i.topWheel,"wheel",e):j("mousewheel")?p.ReactEventListener.trapBubbledEvent(i.topWheel,"mousewheel",e):p.ReactEventListener.trapBubbledEvent(i.topWheel,"DOMMouseScroll",e):m===i.topScroll?j("scroll",!0)?p.ReactEventListener.trapCapturedEvent(i.topScroll,"scroll",e):p.ReactEventListener.trapBubbledEvent(i.topScroll,"scroll",p.ReactEventListener.WINDOW_HANDLE):m===i.topFocus||m===i.topBlur?(j("focus",!0)?(p.ReactEventListener.trapCapturedEvent(i.topFocus,"focus",e),p.ReactEventListener.trapCapturedEvent(i.topBlur,"blur",e)):j("focusin")&&(p.ReactEventListener.trapBubbledEvent(i.topFocus,"focusin",e),p.ReactEventListener.trapBubbledEvent(i.topBlur,"focusout",e)),g[i.topBlur]=!0,g[i.topFocus]=!0):n.hasOwnProperty(m)&&p.ReactEventListener.trapBubbledEvent(m,n[m],e),g[m]=!0)}},trapBubbledEvent:function(a,b,c){return p.ReactEventListener.trapBubbledEvent(a,b,c)},trapCapturedEvent:function(a,b,c){return p.ReactEventListener.trapCapturedEvent(a,b,c)},ensureScrollValueMonitoring:function(){if(!l){var a=h.refreshScrollValues;p.ReactEventListener.monitorScrollValue(a),l=!0}},eventNameDispatchConfigs:e.eventNameDispatchConfigs,registrationNameModules:e.registrationNameModules,putListener:e.putListener,getListener:e.getListener,deleteListener:e.deleteListener,deleteAllListeners:e.deleteAllListeners});b.exports=p},{"./EventConstants":123,"./EventPluginHub":125,"./EventPluginRegistry":126,"./Object.assign":135,"./ReactEventEmitterMixin":168,"./ViewportMetrics":215,"./isEventSupported":248}],140:[function(a,b){"use strict";var c=a("./React"),d=a("./Object.assign"),e=c.createFactory(a("./ReactTransitionGroup")),f=c.createFactory(a("./ReactCSSTransitionGroupChild")),g=c.createClass({displayName:"ReactCSSTransitionGroup",propTypes:{transitionName:c.PropTypes.string.isRequired,transitionEnter:c.PropTypes.bool,transitionLeave:c.PropTypes.bool},getDefaultProps:function(){return{transitionEnter:!0,transitionLeave:!0}},_wrapChild:function(a){return f({name:this.props.transitionName,enter:this.props.transitionEnter,leave:this.props.transitionLeave},a)},render:function(){return e(d({},this.props,{childFactory:this._wrapChild}))}});b.exports=g},{"./Object.assign":135,"./React":137,"./ReactCSSTransitionGroupChild":141,"./ReactTransitionGroup":196}],141:[function(a,b){(function(c){"use strict";var d=a("./React"),e=a("./CSSCore"),f=a("./ReactTransitionEvents"),g=a("./onlyChild"),h=17,i=5e3,j=null;"production"!==c.env.NODE_ENV&&(j=function(){console.warn("transition(): tried to perform an animation without an animationend or transitionend event after timeout ("+i+"ms). You should either disable this transition in JS or add a CSS animation/transition.")});var k=d.createClass({displayName:"ReactCSSTransitionGroupChild",transition:function(a,b){var d=this.getDOMNode(),g=this.props.name+"-"+a,h=g+"-active",k=null,l=function(a){a&&a.target!==d||("production"!==c.env.NODE_ENV&&clearTimeout(k),e.removeClass(d,g),e.removeClass(d,h),f.removeEndEventListener(d,l),b&&b())};f.addEndEventListener(d,l),e.addClass(d,g),this.queueClass(h),"production"!==c.env.NODE_ENV&&(k=setTimeout(j,i))},queueClass:function(a){this.classNameQueue.push(a),this.timeout||(this.timeout=setTimeout(this.flushClassNameQueue,h))},flushClassNameQueue:function(){this.isMounted()&&this.classNameQueue.forEach(e.addClass.bind(e,this.getDOMNode())),this.classNameQueue.length=0,this.timeout=null},componentWillMount:function(){this.classNameQueue=[]},componentWillUnmount:function(){this.timeout&&clearTimeout(this.timeout)},componentWillEnter:function(a){this.props.enter?this.transition("enter",a):a()},componentWillLeave:function(a){this.props.leave?this.transition("leave",a):a()},render:function(){return g(this.props.children)}});b.exports=k}).call(this,a("_process"))},{"./CSSCore":110,"./React":137,"./ReactTransitionEvents":195,"./onlyChild":258,_process:91}],142:[function(a,b){(function(c){"use strict";function d(a,b){this.forEachFunction=a,this.forEachContext=b}function e(a,b,c,d){var e=a;e.forEachFunction.call(e.forEachContext,b,d)}function f(a,b,c){if(null==a)return a;var f=d.getPooled(b,c);m(a,e,f),d.release(f)}function g(a,b,c){this.mapResult=a,this.mapFunction=b,this.mapContext=c}function h(a,b,d,e){var f=a,g=f.mapResult,h=!g.hasOwnProperty(d);if("production"!==c.env.NODE_ENV?n(h,"ReactChildren.map(...): Encountered two children with the same key, `%s`. Child keys must be unique; when two children share a key, only the first child will be used.",d):null,h){var i=f.mapFunction.call(f.mapContext,b,e);g[d]=i}}function i(a,b,c){if(null==a)return a;var d={},e=g.getPooled(d,b,c);return m(a,h,e),g.release(e),d}function j(){return null}function k(a){return m(a,j,null)}var l=a("./PooledClass"),m=a("./traverseAllChildren"),n=a("./warning"),o=l.twoArgumentPooler,p=l.threeArgumentPooler;l.addPoolingTo(d,o),l.addPoolingTo(g,p);var q={forEach:f,map:i,count:k};b.exports=q}).call(this,a("_process"))},{"./PooledClass":136,"./traverseAllChildren":265,"./warning":267,_process:91}],143:[function(a,b){(function(c){"use strict";var d=a("./ReactElement"),e=a("./ReactOwner"),f=a("./ReactUpdates"),g=a("./Object.assign"),h=a("./invariant"),i=a("./keyMirror"),j=i({MOUNTED:null,UNMOUNTED:null}),k=!1,l=null,m=null,n={injection:{injectEnvironment:function(a){"production"!==c.env.NODE_ENV?h(!k,"ReactComponent: injectEnvironment() can only be called once."):h(!k),m=a.mountImageIntoNode,l=a.unmountIDFromEnvironment,n.BackendIDOperations=a.BackendIDOperations,k=!0}},LifeCycle:j,BackendIDOperations:null,Mixin:{isMounted:function(){return this._lifeCycleState===j.MOUNTED},setProps:function(a,b){var c=this._pendingElement||this._currentElement;this.replaceProps(g({},c.props,a),b)},replaceProps:function(a,b){"production"!==c.env.NODE_ENV?h(this.isMounted(),"replaceProps(...): Can only update a mounted component."):h(this.isMounted()),"production"!==c.env.NODE_ENV?h(0===this._mountDepth,"replaceProps(...): You called `setProps` or `replaceProps` on a component with a parent. This is an anti-pattern since props will get reactively updated when rendered. Instead, change the owner's `render` method to pass the correct value as props to the component where it is created."):h(0===this._mountDepth),this._pendingElement=d.cloneAndReplaceProps(this._pendingElement||this._currentElement,a),f.enqueueUpdate(this,b)},_setPropsInternal:function(a,b){var c=this._pendingElement||this._currentElement;this._pendingElement=d.cloneAndReplaceProps(c,g({},c.props,a)),f.enqueueUpdate(this,b)},construct:function(a){this.props=a.props,this._owner=a._owner,this._lifeCycleState=j.UNMOUNTED,this._pendingCallbacks=null,this._currentElement=a,this._pendingElement=null},mountComponent:function(a,b,d){"production"!==c.env.NODE_ENV?h(!this.isMounted(),"mountComponent(%s, ...): Can only mount an unmounted component. Make sure to avoid storing components between renders or reusing a single component instance in multiple places.",a):h(!this.isMounted());var f=this._currentElement.ref;if(null!=f){var g=this._currentElement._owner;e.addComponentAsRefTo(this,f,g)}this._rootNodeID=a,this._lifeCycleState=j.MOUNTED,this._mountDepth=d},unmountComponent:function(){"production"!==c.env.NODE_ENV?h(this.isMounted(),"unmountComponent(): Can only unmount a mounted component."):h(this.isMounted());var a=this._currentElement.ref;null!=a&&e.removeComponentAsRefFrom(this,a,this._owner),l(this._rootNodeID),this._rootNodeID=null,this._lifeCycleState=j.UNMOUNTED},receiveComponent:function(a,b){"production"!==c.env.NODE_ENV?h(this.isMounted(),"receiveComponent(...): Can only update a mounted component."):h(this.isMounted()),this._pendingElement=a,this.performUpdateIfNecessary(b)},performUpdateIfNecessary:function(a){if(null!=this._pendingElement){var b=this._currentElement,c=this._pendingElement;this._currentElement=c,this.props=c.props,this._owner=c._owner,this._pendingElement=null,this.updateComponent(a,b)}},updateComponent:function(a,b){var c=this._currentElement;(c._owner!==b._owner||c.ref!==b.ref)&&(null!=b.ref&&e.removeComponentAsRefFrom(this,b.ref,b._owner),null!=c.ref&&e.addComponentAsRefTo(this,c.ref,c._owner))},mountComponentIntoNode:function(a,b,c){var d=f.ReactReconcileTransaction.getPooled();d.perform(this._mountComponentIntoNode,this,a,b,d,c),f.ReactReconcileTransaction.release(d)},_mountComponentIntoNode:function(a,b,c,d){var e=this.mountComponent(a,c,0);m(e,b,d)},isOwnedBy:function(a){return this._owner===a},getSiblingByRef:function(a){var b=this._owner;return b&&b.refs?b.refs[a]:null}}};b.exports=n}).call(this,a("_process"))},{"./Object.assign":135,"./ReactElement":164,"./ReactOwner":180,"./ReactUpdates":197,"./invariant":247,"./keyMirror":253,_process:91}],144:[function(a,b){(function(c){"use strict";var d=a("./ReactDOMIDOperations"),e=a("./ReactMarkupChecksum"),f=a("./ReactMount"),g=a("./ReactPerf"),h=a("./ReactReconcileTransaction"),i=a("./getReactRootElementInContainer"),j=a("./invariant"),k=a("./setInnerHTML"),l=1,m=9,n={ReactReconcileTransaction:h,BackendIDOperations:d,unmountIDFromEnvironment:function(a){f.purgeID(a)},mountImageIntoNode:g.measure("ReactComponentBrowserEnvironment","mountImageIntoNode",function(a,b,d){if("production"!==c.env.NODE_ENV?j(b&&(b.nodeType===l||b.nodeType===m),"mountComponentIntoNode(...): Target container is not valid."):j(b&&(b.nodeType===l||b.nodeType===m)),d){if(e.canReuseMarkup(a,i(b)))return;"production"!==c.env.NODE_ENV?j(b.nodeType!==m,"You're trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side."):j(b.nodeType!==m),"production"!==c.env.NODE_ENV&&console.warn("React attempted to use reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server.")}"production"!==c.env.NODE_ENV?j(b.nodeType!==m,"You're trying to render a component to the document but you didn't use server rendering. We can't do this without using server rendering due to cross-browser quirks. See renderComponentToString() for server rendering."):j(b.nodeType!==m),k(b,a)})};b.exports=n}).call(this,a("_process"))},{"./ReactDOMIDOperations":153,"./ReactMarkupChecksum":175,"./ReactMount":176,"./ReactPerf":181,"./ReactReconcileTransaction":187,"./getReactRootElementInContainer":241,"./invariant":247,"./setInnerHTML":261,_process:91}],145:[function(a,b){"use strict";
+var c=a("./shallowEqual"),d={shouldComponentUpdate:function(a,b){return!c(this.props,a)||!c(this.state,b)}};b.exports=d},{"./shallowEqual":262}],146:[function(a,b){(function(c){"use strict";function d(a){var b=a._owner||null;return b&&b.constructor&&b.constructor.displayName?" Check the render method of `"+b.constructor.displayName+"`.":""}function e(a,b,d){for(var e in b)b.hasOwnProperty(e)&&("production"!==c.env.NODE_ENV?C("function"==typeof b[e],"%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.",a.displayName||"ReactCompositeComponent",y[d],e):C("function"==typeof b[e]))}function f(a,b){var d=M.hasOwnProperty(b)?M[b]:null;P.hasOwnProperty(b)&&("production"!==c.env.NODE_ENV?C(d===K.OVERRIDE_BASE,"ReactCompositeComponentInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",b):C(d===K.OVERRIDE_BASE)),a.hasOwnProperty(b)&&("production"!==c.env.NODE_ENV?C(d===K.DEFINE_MANY||d===K.DEFINE_MANY_MERGED,"ReactCompositeComponentInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",b):C(d===K.DEFINE_MANY||d===K.DEFINE_MANY_MERGED))}function g(a){var b=a._compositeLifeCycleState;"production"!==c.env.NODE_ENV?C(a.isMounted()||b===O.MOUNTING,"replaceState(...): Can only update a mounted or mounting component."):C(a.isMounted()||b===O.MOUNTING),"production"!==c.env.NODE_ENV?C(null==o.current,"replaceState(...): Cannot update during an existing state transition (such as within `render`). Render methods should be a pure function of props and state."):C(null==o.current),"production"!==c.env.NODE_ENV?C(b!==O.UNMOUNTING,"replaceState(...): Cannot update while unmounting component. This usually means you called setState() on an unmounted component."):C(b!==O.UNMOUNTING)}function h(a,b){if(b){"production"!==c.env.NODE_ENV?C(!t.isValidFactory(b),"ReactCompositeComponent: You're attempting to use a component class as a mixin. Instead, just use a regular object."):C(!t.isValidFactory(b)),"production"!==c.env.NODE_ENV?C(!p.isValidElement(b),"ReactCompositeComponent: You're attempting to use a component as a mixin. Instead, just use a regular object."):C(!p.isValidElement(b));var d=a.prototype;b.hasOwnProperty(J)&&N.mixins(a,b.mixins);for(var e in b)if(b.hasOwnProperty(e)&&e!==J){var g=b[e];if(f(d,e),N.hasOwnProperty(e))N[e](a,g);else{var h=M.hasOwnProperty(e),i=d.hasOwnProperty(e),j=g&&g.__reactDontBind,m="function"==typeof g,n=m&&!h&&!i&&!j;if(n)d.__reactAutoBindMap||(d.__reactAutoBindMap={}),d.__reactAutoBindMap[e]=g,d[e]=g;else if(i){var o=M[e];"production"!==c.env.NODE_ENV?C(h&&(o===K.DEFINE_MANY_MERGED||o===K.DEFINE_MANY),"ReactCompositeComponent: Unexpected spec policy %s for key %s when mixing in component specs.",o,e):C(h&&(o===K.DEFINE_MANY_MERGED||o===K.DEFINE_MANY)),o===K.DEFINE_MANY_MERGED?d[e]=k(d[e],g):o===K.DEFINE_MANY&&(d[e]=l(d[e],g))}else d[e]=g,"production"!==c.env.NODE_ENV&&"function"==typeof g&&b.displayName&&(d[e].displayName=b.displayName+"_"+e)}}}}function i(a,b){if(b)for(var d in b){var e=b[d];if(b.hasOwnProperty(d)){var f=d in N;"production"!==c.env.NODE_ENV?C(!f,'ReactCompositeComponent: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',d):C(!f);var g=d in a;"production"!==c.env.NODE_ENV?C(!g,"ReactCompositeComponent: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",d):C(!g),a[d]=e}}}function j(a,b){return"production"!==c.env.NODE_ENV?C(a&&b&&"object"==typeof a&&"object"==typeof b,"mergeObjectsWithNoDuplicateKeys(): Cannot merge non-objects"):C(a&&b&&"object"==typeof a&&"object"==typeof b),G(b,function(b,d){"production"!==c.env.NODE_ENV?C(void 0===a[d],"mergeObjectsWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",d):C(void 0===a[d]),a[d]=b}),a}function k(a,b){return function(){var c=a.apply(this,arguments),d=b.apply(this,arguments);return null==c?d:null==d?c:j(c,d)}}function l(a,b){return function(){a.apply(this,arguments),b.apply(this,arguments)}}var m=a("./ReactComponent"),n=a("./ReactContext"),o=a("./ReactCurrentOwner"),p=a("./ReactElement"),q=a("./ReactElementValidator"),r=a("./ReactEmptyComponent"),s=a("./ReactErrorUtils"),t=a("./ReactLegacyElement"),u=a("./ReactOwner"),v=a("./ReactPerf"),w=a("./ReactPropTransferer"),x=a("./ReactPropTypeLocations"),y=a("./ReactPropTypeLocationNames"),z=a("./ReactUpdates"),A=a("./Object.assign"),B=a("./instantiateReactComponent"),C=a("./invariant"),D=a("./keyMirror"),E=a("./keyOf"),F=a("./monitorCodeUse"),G=a("./mapObject"),H=a("./shouldUpdateReactComponent"),I=a("./warning"),J=E({mixins:null}),K=D({DEFINE_ONCE:null,DEFINE_MANY:null,OVERRIDE_BASE:null,DEFINE_MANY_MERGED:null}),L=[],M={mixins:K.DEFINE_MANY,statics:K.DEFINE_MANY,propTypes:K.DEFINE_MANY,contextTypes:K.DEFINE_MANY,childContextTypes:K.DEFINE_MANY,getDefaultProps:K.DEFINE_MANY_MERGED,getInitialState:K.DEFINE_MANY_MERGED,getChildContext:K.DEFINE_MANY_MERGED,render:K.DEFINE_ONCE,componentWillMount:K.DEFINE_MANY,componentDidMount:K.DEFINE_MANY,componentWillReceiveProps:K.DEFINE_MANY,shouldComponentUpdate:K.DEFINE_ONCE,componentWillUpdate:K.DEFINE_MANY,componentDidUpdate:K.DEFINE_MANY,componentWillUnmount:K.DEFINE_MANY,updateComponent:K.OVERRIDE_BASE},N={displayName:function(a,b){a.displayName=b},mixins:function(a,b){if(b)for(var c=0;c<b.length;c++)h(a,b[c])},childContextTypes:function(a,b){e(a,b,x.childContext),a.childContextTypes=A({},a.childContextTypes,b)},contextTypes:function(a,b){e(a,b,x.context),a.contextTypes=A({},a.contextTypes,b)},getDefaultProps:function(a,b){a.getDefaultProps=a.getDefaultProps?k(a.getDefaultProps,b):b},propTypes:function(a,b){e(a,b,x.prop),a.propTypes=A({},a.propTypes,b)},statics:function(a,b){i(a,b)}},O=D({MOUNTING:null,UNMOUNTING:null,RECEIVING_PROPS:null}),P={construct:function(){m.Mixin.construct.apply(this,arguments),u.Mixin.construct.apply(this,arguments),this.state=null,this._pendingState=null,this.context=null,this._compositeLifeCycleState=null},isMounted:function(){return m.Mixin.isMounted.call(this)&&this._compositeLifeCycleState!==O.MOUNTING},mountComponent:v.measure("ReactCompositeComponent","mountComponent",function(a,b,d){m.Mixin.mountComponent.call(this,a,b,d),this._compositeLifeCycleState=O.MOUNTING,this.__reactAutoBindMap&&this._bindAutoBindMethods(),this.context=this._processContext(this._currentElement._context),this.props=this._processProps(this.props),this.state=this.getInitialState?this.getInitialState():null,"production"!==c.env.NODE_ENV?C("object"==typeof this.state&&!Array.isArray(this.state),"%s.getInitialState(): must return an object or null",this.constructor.displayName||"ReactCompositeComponent"):C("object"==typeof this.state&&!Array.isArray(this.state)),this._pendingState=null,this._pendingForceUpdate=!1,this.componentWillMount&&(this.componentWillMount(),this._pendingState&&(this.state=this._pendingState,this._pendingState=null)),this._renderedComponent=B(this._renderValidatedComponent(),this._currentElement.type),this._compositeLifeCycleState=null;var e=this._renderedComponent.mountComponent(a,b,d+1);return this.componentDidMount&&b.getReactMountReady().enqueue(this.componentDidMount,this),e}),unmountComponent:function(){this._compositeLifeCycleState=O.UNMOUNTING,this.componentWillUnmount&&this.componentWillUnmount(),this._compositeLifeCycleState=null,this._renderedComponent.unmountComponent(),this._renderedComponent=null,m.Mixin.unmountComponent.call(this)},setState:function(a,b){"production"!==c.env.NODE_ENV?C("object"==typeof a||null==a,"setState(...): takes an object of state variables to update."):C("object"==typeof a||null==a),"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?I(null!=a,"setState(...): You passed an undefined or null state object; instead, use forceUpdate()."):null),this.replaceState(A({},this._pendingState||this.state,a),b)},replaceState:function(a,b){g(this),this._pendingState=a,this._compositeLifeCycleState!==O.MOUNTING&&z.enqueueUpdate(this,b)},_processContext:function(a){var b=null,d=this.constructor.contextTypes;if(d){b={};for(var e in d)b[e]=a[e];"production"!==c.env.NODE_ENV&&this._checkPropTypes(d,b,x.context)}return b},_processChildContext:function(a){var b=this.getChildContext&&this.getChildContext(),d=this.constructor.displayName||"ReactCompositeComponent";if(b){"production"!==c.env.NODE_ENV?C("object"==typeof this.constructor.childContextTypes,"%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().",d):C("object"==typeof this.constructor.childContextTypes),"production"!==c.env.NODE_ENV&&this._checkPropTypes(this.constructor.childContextTypes,b,x.childContext);for(var e in b)"production"!==c.env.NODE_ENV?C(e in this.constructor.childContextTypes,'%s.getChildContext(): key "%s" is not defined in childContextTypes.',d,e):C(e in this.constructor.childContextTypes);return A({},a,b)}return a},_processProps:function(a){if("production"!==c.env.NODE_ENV){var b=this.constructor.propTypes;b&&this._checkPropTypes(b,a,x.prop)}return a},_checkPropTypes:function(a,b,e){var f=this.constructor.displayName;for(var g in a)if(a.hasOwnProperty(g)){var h=a[g](b,g,f,e);if(h instanceof Error){var i=d(this);"production"!==c.env.NODE_ENV?I(!1,h.message+i):null}}},performUpdateIfNecessary:function(a){var b=this._compositeLifeCycleState;if(b!==O.MOUNTING&&b!==O.RECEIVING_PROPS&&(null!=this._pendingElement||null!=this._pendingState||this._pendingForceUpdate)){var d=this.context,e=this.props,f=this._currentElement;null!=this._pendingElement&&(f=this._pendingElement,d=this._processContext(f._context),e=this._processProps(f.props),this._pendingElement=null,this._compositeLifeCycleState=O.RECEIVING_PROPS,this.componentWillReceiveProps&&this.componentWillReceiveProps(e,d)),this._compositeLifeCycleState=null;var g=this._pendingState||this.state;this._pendingState=null;var h=this._pendingForceUpdate||!this.shouldComponentUpdate||this.shouldComponentUpdate(e,g,d);"production"!==c.env.NODE_ENV&&"undefined"==typeof h&&console.warn((this.constructor.displayName||"ReactCompositeComponent")+".shouldComponentUpdate(): Returned undefined instead of a boolean value. Make sure to return true or false."),h?(this._pendingForceUpdate=!1,this._performComponentUpdate(f,e,g,d,a)):(this._currentElement=f,this.props=e,this.state=g,this.context=d,this._owner=f._owner)}},_performComponentUpdate:function(a,b,c,d,e){var f=this._currentElement,g=this.props,h=this.state,i=this.context;this.componentWillUpdate&&this.componentWillUpdate(b,c,d),this._currentElement=a,this.props=b,this.state=c,this.context=d,this._owner=a._owner,this.updateComponent(e,f),this.componentDidUpdate&&e.getReactMountReady().enqueue(this.componentDidUpdate.bind(this,g,h,i),this)},receiveComponent:function(a,b){(a!==this._currentElement||null==a._owner)&&m.Mixin.receiveComponent.call(this,a,b)},updateComponent:v.measure("ReactCompositeComponent","updateComponent",function(a,b){m.Mixin.updateComponent.call(this,a,b);var c=this._renderedComponent,d=c._currentElement,e=this._renderValidatedComponent();if(H(d,e))c.receiveComponent(e,a);else{var f=this._rootNodeID,g=c._rootNodeID;c.unmountComponent(),this._renderedComponent=B(e,this._currentElement.type);var h=this._renderedComponent.mountComponent(f,a,this._mountDepth+1);m.BackendIDOperations.dangerouslyReplaceNodeWithMarkupByID(g,h)}}),forceUpdate:function(a){var b=this._compositeLifeCycleState;"production"!==c.env.NODE_ENV?C(this.isMounted()||b===O.MOUNTING,"forceUpdate(...): Can only force an update on mounted or mounting components."):C(this.isMounted()||b===O.MOUNTING),"production"!==c.env.NODE_ENV?C(b!==O.UNMOUNTING&&null==o.current,"forceUpdate(...): Cannot force an update while unmounting component or within a `render` function."):C(b!==O.UNMOUNTING&&null==o.current),this._pendingForceUpdate=!0,z.enqueueUpdate(this,a)},_renderValidatedComponent:v.measure("ReactCompositeComponent","_renderValidatedComponent",function(){var a,b=n.current;n.current=this._processChildContext(this._currentElement._context),o.current=this;try{a=this.render(),null===a||a===!1?(a=r.getEmptyComponent(),r.registerNullComponentID(this._rootNodeID)):r.deregisterNullComponentID(this._rootNodeID)}finally{n.current=b,o.current=null}return"production"!==c.env.NODE_ENV?C(p.isValidElement(a),"%s.render(): A valid ReactComponent must be returned. You may have returned undefined, an array or some other invalid object.",this.constructor.displayName||"ReactCompositeComponent"):C(p.isValidElement(a)),a}),_bindAutoBindMethods:function(){for(var a in this.__reactAutoBindMap)if(this.__reactAutoBindMap.hasOwnProperty(a)){var b=this.__reactAutoBindMap[a];this[a]=this._bindAutoBindMethod(s.guard(b,this.constructor.displayName+"."+a))}},_bindAutoBindMethod:function(a){var b=this,d=a.bind(b);if("production"!==c.env.NODE_ENV){d.__reactBoundContext=b,d.__reactBoundMethod=a,d.__reactBoundArguments=null;var e=b.constructor.displayName,f=d.bind;d.bind=function(c){for(var g=[],h=1,i=arguments.length;i>h;h++)g.push(arguments[h]);if(c!==b&&null!==c)F("react_bind_warning",{component:e}),console.warn("bind(): React component methods may only be bound to the component instance. See "+e);else if(!g.length)return F("react_bind_warning",{component:e}),console.warn("bind(): You are binding a component method to the component. React does this for you automatically in a high-performance way, so you can safely remove this call. See "+e),d;var j=f.apply(d,arguments);return j.__reactBoundContext=b,j.__reactBoundMethod=a,j.__reactBoundArguments=g,j}}return d}},Q=function(){};A(Q.prototype,m.Mixin,u.Mixin,w.Mixin,P);var R={LifeCycle:O,Base:Q,createClass:function(a){var b=function(){};b.prototype=new Q,b.prototype.constructor=b,L.forEach(h.bind(null,b)),h(b,a),b.getDefaultProps&&(b.defaultProps=b.getDefaultProps()),"production"!==c.env.NODE_ENV?C(b.prototype.render,"createClass(...): Class specification must implement a `render` method."):C(b.prototype.render),"production"!==c.env.NODE_ENV&&b.prototype.componentShouldUpdate&&(F("react_component_should_update_warning",{component:a.displayName}),console.warn((a.displayName||"A component")+" has a method called componentShouldUpdate(). Did you mean shouldComponentUpdate()? The name is phrased as a question because the function is expected to return a value."));for(var d in M)b.prototype[d]||(b.prototype[d]=null);return t.wrapFactory("production"!==c.env.NODE_ENV?q.createFactory(b):p.createFactory(b))},injection:{injectMixin:function(a){L.push(a)}}};b.exports=R}).call(this,a("_process"))},{"./Object.assign":135,"./ReactComponent":143,"./ReactContext":147,"./ReactCurrentOwner":148,"./ReactElement":164,"./ReactElementValidator":165,"./ReactEmptyComponent":166,"./ReactErrorUtils":167,"./ReactLegacyElement":173,"./ReactOwner":180,"./ReactPerf":181,"./ReactPropTransferer":182,"./ReactPropTypeLocationNames":183,"./ReactPropTypeLocations":184,"./ReactUpdates":197,"./instantiateReactComponent":246,"./invariant":247,"./keyMirror":253,"./keyOf":254,"./mapObject":255,"./monitorCodeUse":257,"./shouldUpdateReactComponent":263,"./warning":267,_process:91}],147:[function(a,b){"use strict";var c=a("./Object.assign"),d={current:{},withContext:function(a,b){var e,f=d.current;d.current=c({},f,a);try{e=b()}finally{d.current=f}return e}};b.exports=d},{"./Object.assign":135}],148:[function(a,b){"use strict";var c={current:null};b.exports=c},{}],149:[function(a,b){(function(c){"use strict";function d(a){return g.markNonLegacyFactory("production"!==c.env.NODE_ENV?f.createFactory(a):e.createFactory(a))}var e=a("./ReactElement"),f=a("./ReactElementValidator"),g=a("./ReactLegacyElement"),h=a("./mapObject"),i=h({a:"a",abbr:"abbr",address:"address",area:"area",article:"article",aside:"aside",audio:"audio",b:"b",base:"base",bdi:"bdi",bdo:"bdo",big:"big",blockquote:"blockquote",body:"body",br:"br",button:"button",canvas:"canvas",caption:"caption",cite:"cite",code:"code",col:"col",colgroup:"colgroup",data:"data",datalist:"datalist",dd:"dd",del:"del",details:"details",dfn:"dfn",dialog:"dialog",div:"div",dl:"dl",dt:"dt",em:"em",embed:"embed",fieldset:"fieldset",figcaption:"figcaption",figure:"figure",footer:"footer",form:"form",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",head:"head",header:"header",hr:"hr",html:"html",i:"i",iframe:"iframe",img:"img",input:"input",ins:"ins",kbd:"kbd",keygen:"keygen",label:"label",legend:"legend",li:"li",link:"link",main:"main",map:"map",mark:"mark",menu:"menu",menuitem:"menuitem",meta:"meta",meter:"meter",nav:"nav",noscript:"noscript",object:"object",ol:"ol",optgroup:"optgroup",option:"option",output:"output",p:"p",param:"param",picture:"picture",pre:"pre",progress:"progress",q:"q",rp:"rp",rt:"rt",ruby:"ruby",s:"s",samp:"samp",script:"script",section:"section",select:"select",small:"small",source:"source",span:"span",strong:"strong",style:"style",sub:"sub",summary:"summary",sup:"sup",table:"table",tbody:"tbody",td:"td",textarea:"textarea",tfoot:"tfoot",th:"th",thead:"thead",time:"time",title:"title",tr:"tr",track:"track",u:"u",ul:"ul","var":"var",video:"video",wbr:"wbr",circle:"circle",defs:"defs",ellipse:"ellipse",g:"g",line:"line",linearGradient:"linearGradient",mask:"mask",path:"path",pattern:"pattern",polygon:"polygon",polyline:"polyline",radialGradient:"radialGradient",rect:"rect",stop:"stop",svg:"svg",text:"text",tspan:"tspan"},d);b.exports=i}).call(this,a("_process"))},{"./ReactElement":164,"./ReactElementValidator":165,"./ReactLegacyElement":173,"./mapObject":255,_process:91}],150:[function(a,b){"use strict";var c=a("./AutoFocusMixin"),d=a("./ReactBrowserComponentMixin"),e=a("./ReactCompositeComponent"),f=a("./ReactElement"),g=a("./ReactDOM"),h=a("./keyMirror"),i=f.createFactory(g.button.type),j=h({onClick:!0,onDoubleClick:!0,onMouseDown:!0,onMouseMove:!0,onMouseUp:!0,onClickCapture:!0,onDoubleClickCapture:!0,onMouseDownCapture:!0,onMouseMoveCapture:!0,onMouseUpCapture:!0}),k=e.createClass({displayName:"ReactDOMButton",mixins:[c,d],render:function(){var a={};for(var b in this.props)!this.props.hasOwnProperty(b)||this.props.disabled&&j[b]||(a[b]=this.props[b]);return i(a,this.props.children)}});b.exports=k},{"./AutoFocusMixin":108,"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164,"./keyMirror":253}],151:[function(a,b){(function(c){"use strict";function d(a){a&&("production"!==c.env.NODE_ENV?s(null==a.children||null==a.dangerouslySetInnerHTML,"Can only set one of `children` or `props.dangerouslySetInnerHTML`."):s(null==a.children||null==a.dangerouslySetInnerHTML),"production"!==c.env.NODE_ENV&&a.contentEditable&&null!=a.children&&console.warn("A component is `contentEditable` and contains `children` managed by React. It is now your responsibility to guarantee that none of those nodes are unexpectedly modified or duplicated. This is probably not intentional."),"production"!==c.env.NODE_ENV?s(null==a.style||"object"==typeof a.style,"The `style` prop expects a mapping from style properties to values, not a string."):s(null==a.style||"object"==typeof a.style))}function e(a,b,d,e){"production"!==c.env.NODE_ENV&&("onScroll"!==b||t("scroll",!0)||(v("react_no_scroll_event"),console.warn("This browser doesn't support the `onScroll` event")));var f=n.findReactContainerForID(a);if(f){var g=f.nodeType===B?f.ownerDocument:f;x(b,g)}e.getPutListenerQueue().enqueuePutListener(a,b,d)}function f(a){F.call(E,a)||("production"!==c.env.NODE_ENV?s(D.test(a),"Invalid tag: %s",a):s(D.test(a)),E[a]=!0)}function g(a){f(a),this._tag=a,this.tagName=a.toUpperCase()}var h=a("./CSSPropertyOperations"),i=a("./DOMProperty"),j=a("./DOMPropertyOperations"),k=a("./ReactBrowserComponentMixin"),l=a("./ReactComponent"),m=a("./ReactBrowserEventEmitter"),n=a("./ReactMount"),o=a("./ReactMultiChild"),p=a("./ReactPerf"),q=a("./Object.assign"),r=a("./escapeTextForBrowser"),s=a("./invariant"),t=a("./isEventSupported"),u=a("./keyOf"),v=a("./monitorCodeUse"),w=m.deleteListener,x=m.listenTo,y=m.registrationNameModules,z={string:!0,number:!0},A=u({style:null}),B=1,C={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},D=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,E={},F={}.hasOwnProperty;g.displayName="ReactDOMComponent",g.Mixin={mountComponent:p.measure("ReactDOMComponent","mountComponent",function(a,b,c){l.Mixin.mountComponent.call(this,a,b,c),d(this.props);var e=C[this._tag]?"":"</"+this._tag+">";return this._createOpenTagMarkupAndPutListeners(b)+this._createContentMarkup(b)+e}),_createOpenTagMarkupAndPutListeners:function(a){var b=this.props,c="<"+this._tag;for(var d in b)if(b.hasOwnProperty(d)){var f=b[d];if(null!=f)if(y.hasOwnProperty(d))e(this._rootNodeID,d,f,a);else{d===A&&(f&&(f=b.style=q({},b.style)),f=h.createMarkupForStyles(f));var g=j.createMarkupForProperty(d,f);g&&(c+=" "+g)}}if(a.renderToStaticMarkup)return c+">";var i=j.createMarkupForID(this._rootNodeID);return c+" "+i+">"},_createContentMarkup:function(a){var b=this.props.dangerouslySetInnerHTML;if(null!=b){if(null!=b.__html)return b.__html}else{var c=z[typeof this.props.children]?this.props.children:null,d=null!=c?null:this.props.children;if(null!=c)return r(c);if(null!=d){var e=this.mountChildren(d,a);return e.join("")}}return""},receiveComponent:function(a,b){(a!==this._currentElement||null==a._owner)&&l.Mixin.receiveComponent.call(this,a,b)},updateComponent:p.measure("ReactDOMComponent","updateComponent",function(a,b){d(this._currentElement.props),l.Mixin.updateComponent.call(this,a,b),this._updateDOMProperties(b.props,a),this._updateDOMChildren(b.props,a)}),_updateDOMProperties:function(a,b){var c,d,f,g=this.props;for(c in a)if(!g.hasOwnProperty(c)&&a.hasOwnProperty(c))if(c===A){var h=a[c];for(d in h)h.hasOwnProperty(d)&&(f=f||{},f[d]="")}else y.hasOwnProperty(c)?w(this._rootNodeID,c):(i.isStandardName[c]||i.isCustomAttribute(c))&&l.BackendIDOperations.deletePropertyByID(this._rootNodeID,c);for(c in g){var j=g[c],k=a[c];if(g.hasOwnProperty(c)&&j!==k)if(c===A)if(j&&(j=g.style=q({},j)),k){for(d in k)!k.hasOwnProperty(d)||j&&j.hasOwnProperty(d)||(f=f||{},f[d]="");for(d in j)j.hasOwnProperty(d)&&k[d]!==j[d]&&(f=f||{},f[d]=j[d])}else f=j;else y.hasOwnProperty(c)?e(this._rootNodeID,c,j,b):(i.isStandardName[c]||i.isCustomAttribute(c))&&l.BackendIDOperations.updatePropertyByID(this._rootNodeID,c,j)}f&&l.BackendIDOperations.updateStylesByID(this._rootNodeID,f)},_updateDOMChildren:function(a,b){var c=this.props,d=z[typeof a.children]?a.children:null,e=z[typeof c.children]?c.children:null,f=a.dangerouslySetInnerHTML&&a.dangerouslySetInnerHTML.__html,g=c.dangerouslySetInnerHTML&&c.dangerouslySetInnerHTML.__html,h=null!=d?null:a.children,i=null!=e?null:c.children,j=null!=d||null!=f,k=null!=e||null!=g;null!=h&&null==i?this.updateChildren(null,b):j&&!k&&this.updateTextContent(""),null!=e?d!==e&&this.updateTextContent(""+e):null!=g?f!==g&&l.BackendIDOperations.updateInnerHTMLByID(this._rootNodeID,g):null!=i&&this.updateChildren(i,b)},unmountComponent:function(){this.unmountChildren(),m.deleteAllListeners(this._rootNodeID),l.Mixin.unmountComponent.call(this)}},q(g.prototype,l.Mixin,g.Mixin,o.Mixin,k),b.exports=g}).call(this,a("_process"))},{"./CSSPropertyOperations":112,"./DOMProperty":118,"./DOMPropertyOperations":119,"./Object.assign":135,"./ReactBrowserComponentMixin":138,"./ReactBrowserEventEmitter":139,"./ReactComponent":143,"./ReactMount":176,"./ReactMultiChild":177,"./ReactPerf":181,"./escapeTextForBrowser":230,"./invariant":247,"./isEventSupported":248,"./keyOf":254,"./monitorCodeUse":257,_process:91}],152:[function(a,b){"use strict";var c=a("./EventConstants"),d=a("./LocalEventTrapMixin"),e=a("./ReactBrowserComponentMixin"),f=a("./ReactCompositeComponent"),g=a("./ReactElement"),h=a("./ReactDOM"),i=g.createFactory(h.form.type),j=f.createClass({displayName:"ReactDOMForm",mixins:[e,d],render:function(){return i(this.props)},componentDidMount:function(){this.trapBubbledEvent(c.topLevelTypes.topReset,"reset"),this.trapBubbledEvent(c.topLevelTypes.topSubmit,"submit")}});b.exports=j},{"./EventConstants":123,"./LocalEventTrapMixin":133,"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164}],153:[function(a,b){(function(c){"use strict";var d=a("./CSSPropertyOperations"),e=a("./DOMChildrenOperations"),f=a("./DOMPropertyOperations"),g=a("./ReactMount"),h=a("./ReactPerf"),i=a("./invariant"),j=a("./setInnerHTML"),k={dangerouslySetInnerHTML:"`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.",style:"`style` must be set using `updateStylesByID()`."},l={updatePropertyByID:h.measure("ReactDOMIDOperations","updatePropertyByID",function(a,b,d){var e=g.getNode(a);"production"!==c.env.NODE_ENV?i(!k.hasOwnProperty(b),"updatePropertyByID(...): %s",k[b]):i(!k.hasOwnProperty(b)),null!=d?f.setValueForProperty(e,b,d):f.deleteValueForProperty(e,b)}),deletePropertyByID:h.measure("ReactDOMIDOperations","deletePropertyByID",function(a,b,d){var e=g.getNode(a);"production"!==c.env.NODE_ENV?i(!k.hasOwnProperty(b),"updatePropertyByID(...): %s",k[b]):i(!k.hasOwnProperty(b)),f.deleteValueForProperty(e,b,d)}),updateStylesByID:h.measure("ReactDOMIDOperations","updateStylesByID",function(a,b){var c=g.getNode(a);d.setValueForStyles(c,b)}),updateInnerHTMLByID:h.measure("ReactDOMIDOperations","updateInnerHTMLByID",function(a,b){var c=g.getNode(a);j(c,b)}),updateTextContentByID:h.measure("ReactDOMIDOperations","updateTextContentByID",function(a,b){var c=g.getNode(a);e.updateTextContent(c,b)}),dangerouslyReplaceNodeWithMarkupByID:h.measure("ReactDOMIDOperations","dangerouslyReplaceNodeWithMarkupByID",function(a,b){var c=g.getNode(a);e.dangerouslyReplaceNodeWithMarkup(c,b)}),dangerouslyProcessChildrenUpdates:h.measure("ReactDOMIDOperations","dangerouslyProcessChildrenUpdates",function(a,b){for(var c=0;c<a.length;c++)a[c].parentNode=g.getNode(a[c].parentID);e.processUpdates(a,b)})};b.exports=l}).call(this,a("_process"))},{"./CSSPropertyOperations":112,"./DOMChildrenOperations":117,"./DOMPropertyOperations":119,"./ReactMount":176,"./ReactPerf":181,"./invariant":247,"./setInnerHTML":261,_process:91}],154:[function(a,b){"use strict";var c=a("./EventConstants"),d=a("./LocalEventTrapMixin"),e=a("./ReactBrowserComponentMixin"),f=a("./ReactCompositeComponent"),g=a("./ReactElement"),h=a("./ReactDOM"),i=g.createFactory(h.img.type),j=f.createClass({displayName:"ReactDOMImg",tagName:"IMG",mixins:[e,d],render:function(){return i(this.props)},componentDidMount:function(){this.trapBubbledEvent(c.topLevelTypes.topLoad,"load"),this.trapBubbledEvent(c.topLevelTypes.topError,"error")}});b.exports=j},{"./EventConstants":123,"./LocalEventTrapMixin":133,"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164}],155:[function(a,b){(function(c){"use strict";function d(){this.isMounted()&&this.forceUpdate()}var e=a("./AutoFocusMixin"),f=a("./DOMPropertyOperations"),g=a("./LinkedValueUtils"),h=a("./ReactBrowserComponentMixin"),i=a("./ReactCompositeComponent"),j=a("./ReactElement"),k=a("./ReactDOM"),l=a("./ReactMount"),m=a("./ReactUpdates"),n=a("./Object.assign"),o=a("./invariant"),p=j.createFactory(k.input.type),q={},r=i.createClass({displayName:"ReactDOMInput",mixins:[e,g.Mixin,h],getInitialState:function(){var a=this.props.defaultValue;return{initialChecked:this.props.defaultChecked||!1,initialValue:null!=a?a:null}},render:function(){var a=n({},this.props);a.defaultChecked=null,a.defaultValue=null;var b=g.getValue(this);a.value=null!=b?b:this.state.initialValue;var c=g.getChecked(this);return a.checked=null!=c?c:this.state.initialChecked,a.onChange=this._handleChange,p(a,this.props.children)},componentDidMount:function(){var a=l.getID(this.getDOMNode());q[a]=this},componentWillUnmount:function(){var a=this.getDOMNode(),b=l.getID(a);delete q[b]},componentDidUpdate:function(){var a=this.getDOMNode();null!=this.props.checked&&f.setValueForProperty(a,"checked",this.props.checked||!1);var b=g.getValue(this);null!=b&&f.setValueForProperty(a,"value",""+b)},_handleChange:function(a){var b,e=g.getOnChange(this);e&&(b=e.call(this,a)),m.asap(d,this);var f=this.props.name;if("radio"===this.props.type&&null!=f){for(var h=this.getDOMNode(),i=h;i.parentNode;)i=i.parentNode;for(var j=i.querySelectorAll("input[name="+JSON.stringify(""+f)+'][type="radio"]'),k=0,n=j.length;n>k;k++){var p=j[k];if(p!==h&&p.form===h.form){var r=l.getID(p);"production"!==c.env.NODE_ENV?o(r,"ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported."):o(r);var s=q[r];"production"!==c.env.NODE_ENV?o(s,"ReactDOMInput: Unknown radio button ID %s.",r):o(s),m.asap(d,s)}}}return b}});b.exports=r}).call(this,a("_process"))},{"./AutoFocusMixin":108,"./DOMPropertyOperations":119,"./LinkedValueUtils":132,"./Object.assign":135,"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164,"./ReactMount":176,"./ReactUpdates":197,"./invariant":247,_process:91}],156:[function(a,b){(function(c){"use strict";var d=a("./ReactBrowserComponentMixin"),e=a("./ReactCompositeComponent"),f=a("./ReactElement"),g=a("./ReactDOM"),h=a("./warning"),i=f.createFactory(g.option.type),j=e.createClass({displayName:"ReactDOMOption",mixins:[d],componentWillMount:function(){"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?h(null==this.props.selected,"Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>."):null)},render:function(){return i(this.props,this.props.children)}});b.exports=j}).call(this,a("_process"))},{"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164,"./warning":267,_process:91}],157:[function(a,b){"use strict";function c(){this.isMounted()&&(this.setState({value:this._pendingValue}),this._pendingValue=0)}function d(a,b){if(null!=a[b])if(a.multiple){if(!Array.isArray(a[b]))return new Error("The `"+b+"` prop supplied to <select> must be an array if `multiple` is true.")}else if(Array.isArray(a[b]))return new Error("The `"+b+"` prop supplied to <select> must be a scalar value if `multiple` is false.")}function e(a,b){var c,d,e,f=a.props.multiple,g=null!=b?b:a.state.value,h=a.getDOMNode().options;if(f)for(c={},d=0,e=g.length;e>d;++d)c[""+g[d]]=!0;else c=""+g;for(d=0,e=h.length;e>d;d++){var i=f?c.hasOwnProperty(h[d].value):h[d].value===c;i!==h[d].selected&&(h[d].selected=i)}}var f=a("./AutoFocusMixin"),g=a("./LinkedValueUtils"),h=a("./ReactBrowserComponentMixin"),i=a("./ReactCompositeComponent"),j=a("./ReactElement"),k=a("./ReactDOM"),l=a("./ReactUpdates"),m=a("./Object.assign"),n=j.createFactory(k.select.type),o=i.createClass({displayName:"ReactDOMSelect",mixins:[f,g.Mixin,h],propTypes:{defaultValue:d,value:d},getInitialState:function(){return{value:this.props.defaultValue||(this.props.multiple?[]:"")}},componentWillMount:function(){this._pendingValue=null},componentWillReceiveProps:function(a){!this.props.multiple&&a.multiple?this.setState({value:[this.state.value]}):this.props.multiple&&!a.multiple&&this.setState({value:this.state.value[0]})},render:function(){var a=m({},this.props);return a.onChange=this._handleChange,a.value=null,n(a,this.props.children)},componentDidMount:function(){e(this,g.getValue(this))},componentDidUpdate:function(a){var b=g.getValue(this),c=!!a.multiple,d=!!this.props.multiple;(null!=b||c!==d)&&e(this,b)},_handleChange:function(a){var b,d=g.getOnChange(this);d&&(b=d.call(this,a));var e;if(this.props.multiple){e=[];for(var f=a.target.options,h=0,i=f.length;i>h;h++)f[h].selected&&e.push(f[h].value)}else e=a.target.value;
+return this._pendingValue=e,l.asap(c,this),b}});b.exports=o},{"./AutoFocusMixin":108,"./LinkedValueUtils":132,"./Object.assign":135,"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164,"./ReactUpdates":197}],158:[function(a,b){"use strict";function c(a,b,c,d){return a===c&&b===d}function d(a){var b=document.selection,c=b.createRange(),d=c.text.length,e=c.duplicate();e.moveToElementText(a),e.setEndPoint("EndToStart",c);var f=e.text.length,g=f+d;return{start:f,end:g}}function e(a){var b=window.getSelection&&window.getSelection();if(!b||0===b.rangeCount)return null;var d=b.anchorNode,e=b.anchorOffset,f=b.focusNode,g=b.focusOffset,h=b.getRangeAt(0),i=c(b.anchorNode,b.anchorOffset,b.focusNode,b.focusOffset),j=i?0:h.toString().length,k=h.cloneRange();k.selectNodeContents(a),k.setEnd(h.startContainer,h.startOffset);var l=c(k.startContainer,k.startOffset,k.endContainer,k.endOffset),m=l?0:k.toString().length,n=m+j,o=document.createRange();o.setStart(d,e),o.setEnd(f,g);var p=o.collapsed;return{start:p?n:m,end:p?m:n}}function f(a,b){var c,d,e=document.selection.createRange().duplicate();"undefined"==typeof b.end?(c=b.start,d=c):b.start>b.end?(c=b.end,d=b.start):(c=b.start,d=b.end),e.moveToElementText(a),e.moveStart("character",c),e.setEndPoint("EndToStart",e),e.moveEnd("character",d-c),e.select()}function g(a,b){if(window.getSelection){var c=window.getSelection(),d=a[j()].length,e=Math.min(b.start,d),f="undefined"==typeof b.end?e:Math.min(b.end,d);if(!c.extend&&e>f){var g=f;f=e,e=g}var h=i(a,e),k=i(a,f);if(h&&k){var l=document.createRange();l.setStart(h.node,h.offset),c.removeAllRanges(),e>f?(c.addRange(l),c.extend(k.node,k.offset)):(l.setEnd(k.node,k.offset),c.addRange(l))}}}var h=a("./ExecutionEnvironment"),i=a("./getNodeForCharacterOffset"),j=a("./getTextContentAccessor"),k=h.canUseDOM&&document.selection,l={getOffsets:k?d:e,setOffsets:k?f:g};b.exports=l},{"./ExecutionEnvironment":129,"./getNodeForCharacterOffset":240,"./getTextContentAccessor":242}],159:[function(a,b){(function(c){"use strict";function d(){this.isMounted()&&this.forceUpdate()}var e=a("./AutoFocusMixin"),f=a("./DOMPropertyOperations"),g=a("./LinkedValueUtils"),h=a("./ReactBrowserComponentMixin"),i=a("./ReactCompositeComponent"),j=a("./ReactElement"),k=a("./ReactDOM"),l=a("./ReactUpdates"),m=a("./Object.assign"),n=a("./invariant"),o=a("./warning"),p=j.createFactory(k.textarea.type),q=i.createClass({displayName:"ReactDOMTextarea",mixins:[e,g.Mixin,h],getInitialState:function(){var a=this.props.defaultValue,b=this.props.children;null!=b&&("production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?o(!1,"Use the `defaultValue` or `value` props instead of setting children on <textarea>."):null),"production"!==c.env.NODE_ENV?n(null==a,"If you supply `defaultValue` on a <textarea>, do not pass children."):n(null==a),Array.isArray(b)&&("production"!==c.env.NODE_ENV?n(b.length<=1,"<textarea> can only have at most one child."):n(b.length<=1),b=b[0]),a=""+b),null==a&&(a="");var d=g.getValue(this);return{initialValue:""+(null!=d?d:a)}},render:function(){var a=m({},this.props);return"production"!==c.env.NODE_ENV?n(null==a.dangerouslySetInnerHTML,"`dangerouslySetInnerHTML` does not make sense on <textarea>."):n(null==a.dangerouslySetInnerHTML),a.defaultValue=null,a.value=null,a.onChange=this._handleChange,p(a,this.state.initialValue)},componentDidUpdate:function(){var a=g.getValue(this);if(null!=a){var b=this.getDOMNode();f.setValueForProperty(b,"value",""+a)}},_handleChange:function(a){var b,c=g.getOnChange(this);return c&&(b=c.call(this,a)),l.asap(d,this),b}});b.exports=q}).call(this,a("_process"))},{"./AutoFocusMixin":108,"./DOMPropertyOperations":119,"./LinkedValueUtils":132,"./Object.assign":135,"./ReactBrowserComponentMixin":138,"./ReactCompositeComponent":146,"./ReactDOM":149,"./ReactElement":164,"./ReactUpdates":197,"./invariant":247,"./warning":267,_process:91}],160:[function(a,b){"use strict";function c(){this.reinitializeTransaction()}var d=a("./ReactUpdates"),e=a("./Transaction"),f=a("./Object.assign"),g=a("./emptyFunction"),h={initialize:g,close:function(){l.isBatchingUpdates=!1}},i={initialize:g,close:d.flushBatchedUpdates.bind(d)},j=[i,h];f(c.prototype,e.Mixin,{getTransactionWrappers:function(){return j}});var k=new c,l={isBatchingUpdates:!1,batchedUpdates:function(a,b,c){var d=l.isBatchingUpdates;l.isBatchingUpdates=!0,d?a(b,c):k.perform(a,null,b,c)}};b.exports=l},{"./Object.assign":135,"./ReactUpdates":197,"./Transaction":214,"./emptyFunction":228}],161:[function(a,b){(function(c){"use strict";function d(){if(z.EventEmitter.injectReactEventListener(y),z.EventPluginHub.injectEventPluginOrder(i),z.EventPluginHub.injectInstanceHandle(A),z.EventPluginHub.injectMount(B),z.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:E,EnterLeaveEventPlugin:j,ChangeEventPlugin:f,CompositionEventPlugin:h,MobileSafariClickEventPlugin:m,SelectEventPlugin:C,BeforeInputEventPlugin:e}),z.NativeComponent.injectGenericComponentClass(q),z.NativeComponent.injectComponentClasses({button:r,form:s,img:t,input:u,option:v,select:w,textarea:x,html:G("html"),head:G("head"),body:G("body")}),z.CompositeComponent.injectMixin(n),z.DOMProperty.injectDOMPropertyConfig(l),z.DOMProperty.injectDOMPropertyConfig(F),z.EmptyComponent.injectEmptyComponent("noscript"),z.Updates.injectReconcileTransaction(o.ReactReconcileTransaction),z.Updates.injectBatchingStrategy(p),z.RootIndex.injectCreateReactRootIndex(k.canUseDOM?g.createReactRootIndex:D.createReactRootIndex),z.Component.injectEnvironment(o),"production"!==c.env.NODE_ENV){var b=k.canUseDOM&&window.location.href||"";if(/[?&]react_perf\b/.test(b)){var d=a("./ReactDefaultPerf");d.start()}}}var e=a("./BeforeInputEventPlugin"),f=a("./ChangeEventPlugin"),g=a("./ClientReactRootIndex"),h=a("./CompositionEventPlugin"),i=a("./DefaultEventPluginOrder"),j=a("./EnterLeaveEventPlugin"),k=a("./ExecutionEnvironment"),l=a("./HTMLDOMPropertyConfig"),m=a("./MobileSafariClickEventPlugin"),n=a("./ReactBrowserComponentMixin"),o=a("./ReactComponentBrowserEnvironment"),p=a("./ReactDefaultBatchingStrategy"),q=a("./ReactDOMComponent"),r=a("./ReactDOMButton"),s=a("./ReactDOMForm"),t=a("./ReactDOMImg"),u=a("./ReactDOMInput"),v=a("./ReactDOMOption"),w=a("./ReactDOMSelect"),x=a("./ReactDOMTextarea"),y=a("./ReactEventListener"),z=a("./ReactInjection"),A=a("./ReactInstanceHandles"),B=a("./ReactMount"),C=a("./SelectEventPlugin"),D=a("./ServerReactRootIndex"),E=a("./SimpleEventPlugin"),F=a("./SVGDOMPropertyConfig"),G=a("./createFullPageComponent");b.exports={inject:d}}).call(this,a("_process"))},{"./BeforeInputEventPlugin":109,"./ChangeEventPlugin":114,"./ClientReactRootIndex":115,"./CompositionEventPlugin":116,"./DefaultEventPluginOrder":121,"./EnterLeaveEventPlugin":122,"./ExecutionEnvironment":129,"./HTMLDOMPropertyConfig":130,"./MobileSafariClickEventPlugin":134,"./ReactBrowserComponentMixin":138,"./ReactComponentBrowserEnvironment":144,"./ReactDOMButton":150,"./ReactDOMComponent":151,"./ReactDOMForm":152,"./ReactDOMImg":154,"./ReactDOMInput":155,"./ReactDOMOption":156,"./ReactDOMSelect":157,"./ReactDOMTextarea":159,"./ReactDefaultBatchingStrategy":160,"./ReactDefaultPerf":162,"./ReactEventListener":169,"./ReactInjection":170,"./ReactInstanceHandles":172,"./ReactMount":176,"./SVGDOMPropertyConfig":199,"./SelectEventPlugin":200,"./ServerReactRootIndex":201,"./SimpleEventPlugin":202,"./createFullPageComponent":223,_process:91}],162:[function(a,b){"use strict";function c(a){return Math.floor(100*a)/100}function d(a,b,c){a[b]=(a[b]||0)+c}var e=a("./DOMProperty"),f=a("./ReactDefaultPerfAnalysis"),g=a("./ReactMount"),h=a("./ReactPerf"),i=a("./performanceNow"),j={_allMeasurements:[],_mountStack:[0],_injected:!1,start:function(){j._injected||h.injection.injectMeasure(j.measure),j._allMeasurements.length=0,h.enableMeasure=!0},stop:function(){h.enableMeasure=!1},getLastMeasurements:function(){return j._allMeasurements},printExclusive:function(a){a=a||j._allMeasurements;var b=f.getExclusiveSummary(a);console.table(b.map(function(a){return{"Component class name":a.componentName,"Total inclusive time (ms)":c(a.inclusive),"Exclusive mount time (ms)":c(a.exclusive),"Exclusive render time (ms)":c(a.render),"Mount time per instance (ms)":c(a.exclusive/a.count),"Render time per instance (ms)":c(a.render/a.count),Instances:a.count}}))},printInclusive:function(a){a=a||j._allMeasurements;var b=f.getInclusiveSummary(a);console.table(b.map(function(a){return{"Owner > component":a.componentName,"Inclusive time (ms)":c(a.time),Instances:a.count}})),console.log("Total time:",f.getTotalTime(a).toFixed(2)+" ms")},getMeasurementsSummaryMap:function(a){var b=f.getInclusiveSummary(a,!0);return b.map(function(a){return{"Owner > component":a.componentName,"Wasted time (ms)":a.time,Instances:a.count}})},printWasted:function(a){a=a||j._allMeasurements,console.table(j.getMeasurementsSummaryMap(a)),console.log("Total time:",f.getTotalTime(a).toFixed(2)+" ms")},printDOM:function(a){a=a||j._allMeasurements;var b=f.getDOMSummary(a);console.table(b.map(function(a){var b={};return b[e.ID_ATTRIBUTE_NAME]=a.id,b.type=a.type,b.args=JSON.stringify(a.args),b})),console.log("Total time:",f.getTotalTime(a).toFixed(2)+" ms")},_recordWrite:function(a,b,c,d){var e=j._allMeasurements[j._allMeasurements.length-1].writes;e[a]=e[a]||[],e[a].push({type:b,time:c,args:d})},measure:function(a,b,c){return function(){for(var e=[],f=0,h=arguments.length;h>f;f++)e.push(arguments[f]);var k,l,m;if("_renderNewRootComponent"===b||"flushBatchedUpdates"===b)return j._allMeasurements.push({exclusive:{},inclusive:{},render:{},counts:{},writes:{},displayNames:{},totalTime:0}),m=i(),l=c.apply(this,e),j._allMeasurements[j._allMeasurements.length-1].totalTime=i()-m,l;if("ReactDOMIDOperations"===a||"ReactComponentBrowserEnvironment"===a){if(m=i(),l=c.apply(this,e),k=i()-m,"mountImageIntoNode"===b){var n=g.getID(e[1]);j._recordWrite(n,b,k,e[0])}else"dangerouslyProcessChildrenUpdates"===b?e[0].forEach(function(a){var b={};null!==a.fromIndex&&(b.fromIndex=a.fromIndex),null!==a.toIndex&&(b.toIndex=a.toIndex),null!==a.textContent&&(b.textContent=a.textContent),null!==a.markupIndex&&(b.markup=e[1][a.markupIndex]),j._recordWrite(a.parentID,a.type,k,b)}):j._recordWrite(e[0],b,k,Array.prototype.slice.call(e,1));return l}if("ReactCompositeComponent"!==a||"mountComponent"!==b&&"updateComponent"!==b&&"_renderValidatedComponent"!==b)return c.apply(this,e);var o="mountComponent"===b?e[0]:this._rootNodeID,p="_renderValidatedComponent"===b,q="mountComponent"===b,r=j._mountStack,s=j._allMeasurements[j._allMeasurements.length-1];if(p?d(s.counts,o,1):q&&r.push(0),m=i(),l=c.apply(this,e),k=i()-m,p)d(s.render,o,k);else if(q){var t=r.pop();r[r.length-1]+=k,d(s.exclusive,o,k-t),d(s.inclusive,o,k)}else d(s.inclusive,o,k);return s.displayNames[o]={current:this.constructor.displayName,owner:this._owner?this._owner.constructor.displayName:"<root>"},l}}};b.exports=j},{"./DOMProperty":118,"./ReactDefaultPerfAnalysis":163,"./ReactMount":176,"./ReactPerf":181,"./performanceNow":260}],163:[function(a,b){function c(a){for(var b=0,c=0;c<a.length;c++){var d=a[c];b+=d.totalTime}return b}function d(a){for(var b=[],c=0;c<a.length;c++){var d,e=a[c];for(d in e.writes)e.writes[d].forEach(function(a){b.push({id:d,type:j[a.type]||a.type,args:a.args})})}return b}function e(a){for(var b,c={},d=0;d<a.length;d++){var e=a[d],f=h({},e.exclusive,e.inclusive);for(var g in f)b=e.displayNames[g].current,c[b]=c[b]||{componentName:b,inclusive:0,exclusive:0,render:0,count:0},e.render[g]&&(c[b].render+=e.render[g]),e.exclusive[g]&&(c[b].exclusive+=e.exclusive[g]),e.inclusive[g]&&(c[b].inclusive+=e.inclusive[g]),e.counts[g]&&(c[b].count+=e.counts[g])}var j=[];for(b in c)c[b].exclusive>=i&&j.push(c[b]);return j.sort(function(a,b){return b.exclusive-a.exclusive}),j}function f(a,b){for(var c,d={},e=0;e<a.length;e++){var f,j=a[e],k=h({},j.exclusive,j.inclusive);b&&(f=g(j));for(var l in k)if(!b||f[l]){var m=j.displayNames[l];c=m.owner+" > "+m.current,d[c]=d[c]||{componentName:c,time:0,count:0},j.inclusive[l]&&(d[c].time+=j.inclusive[l]),j.counts[l]&&(d[c].count+=j.counts[l])}}var n=[];for(c in d)d[c].time>=i&&n.push(d[c]);return n.sort(function(a,b){return b.time-a.time}),n}function g(a){var b={},c=Object.keys(a.writes),d=h({},a.exclusive,a.inclusive);for(var e in d){for(var f=!1,g=0;g<c.length;g++)if(0===c[g].indexOf(e)){f=!0;break}!f&&a.counts[e]>0&&(b[e]=!0)}return b}var h=a("./Object.assign"),i=1.2,j={mountImageIntoNode:"set innerHTML",INSERT_MARKUP:"set innerHTML",MOVE_EXISTING:"move",REMOVE_NODE:"remove",TEXT_CONTENT:"set textContent",updatePropertyByID:"update attribute",deletePropertyByID:"delete attribute",updateStylesByID:"update styles",updateInnerHTMLByID:"set innerHTML",dangerouslyReplaceNodeWithMarkupByID:"replace"},k={getExclusiveSummary:e,getInclusiveSummary:f,getDOMSummary:d,getTotalTime:c};b.exports=k},{"./Object.assign":135}],164:[function(a,b){(function(c){"use strict";function d(a,b){Object.defineProperty(a,b,{configurable:!1,enumerable:!0,get:function(){return this._store?this._store[b]:null},set:function(a){"production"!==c.env.NODE_ENV?h(!1,"Don't set the "+b+" property of the component. Mutate the existing props object instead."):null,this._store[b]=a}})}function e(a){try{var b={props:!0};for(var c in b)d(a,c);j=!0}catch(e){}}var f=a("./ReactContext"),g=a("./ReactCurrentOwner"),h=a("./warning"),i={key:!0,ref:!0},j=!1,k=function(a,b,d,e,f,g){return this.type=a,this.key=b,this.ref=d,this._owner=e,this._context=f,"production"!==c.env.NODE_ENV&&(this._store={validated:!1,props:g},j)?void Object.freeze(this):void(this.props=g)};k.prototype={_isReactElement:!0},"production"!==c.env.NODE_ENV&&e(k.prototype),k.createElement=function(a,b,d){var e,j={},l=null,m=null;if(null!=b){m=void 0===b.ref?null:b.ref,"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?h(null!==b.key,"createElement(...): Encountered component with a `key` of null. In a future version, this will be treated as equivalent to the string 'null'; instead, provide an explicit key or use undefined."):null),l=null==b.key?null:""+b.key;for(e in b)b.hasOwnProperty(e)&&!i.hasOwnProperty(e)&&(j[e]=b[e])}var n=arguments.length-2;if(1===n)j.children=d;else if(n>1){for(var o=Array(n),p=0;n>p;p++)o[p]=arguments[p+2];j.children=o}if(a&&a.defaultProps){var q=a.defaultProps;for(e in q)"undefined"==typeof j[e]&&(j[e]=q[e])}return new k(a,l,m,g.current,f.current,j)},k.createFactory=function(a){var b=k.createElement.bind(null,a);return b.type=a,b},k.cloneAndReplaceProps=function(a,b){var d=new k(a.type,a.key,a.ref,a._owner,a._context,b);return"production"!==c.env.NODE_ENV&&(d._store.validated=a._store.validated),d},k.isValidElement=function(a){var b=!(!a||!a._isReactElement);return b},b.exports=k}).call(this,a("_process"))},{"./ReactContext":147,"./ReactCurrentOwner":148,"./warning":267,_process:91}],165:[function(a,b){(function(c){"use strict";function d(){var a=m.current;return a&&a.constructor.displayName||void 0}function e(a,b){a._store.validated||null!=a.key||(a._store.validated=!0,g("react_key_warning",'Each child in an array should have a unique "key" prop.',a,b))}function f(a,b,c){s.test(a)&&g("react_numeric_key_warning","Child objects should have non-numeric keys so ordering is preserved.",b,c)}function g(a,b,c,e){var f=d(),g=e.displayName,h=f||g,i=p[a];if(!i.hasOwnProperty(h)){i[h]=!0,b+=f?" Check the render method of "+f+".":" Check the renderComponent call using <"+g+">.";var j=null;c._owner&&c._owner!==m.current&&(j=c._owner.constructor.displayName,b+=" It was passed a child from "+j+"."),b+=" See http://fb.me/react-warning-keys for more information.",n(a,{component:h,componentOwner:j}),console.warn(b)}}function h(){var a=d()||"";q.hasOwnProperty(a)||(q[a]=!0,n("react_object_map_children"))}function i(a,b){if(Array.isArray(a))for(var c=0;c<a.length;c++){var d=a[c];k.isValidElement(d)&&e(d,b)}else if(k.isValidElement(a))a._store.validated=!0;else if(a&&"object"==typeof a){h();for(var g in a)f(g,a[g],b)}}function j(a,b,c,d){for(var e in b)if(b.hasOwnProperty(e)){var f;try{f=b[e](c,e,a,d)}catch(g){f=g}f instanceof Error&&!(f.message in r)&&(r[f.message]=!0,n("react_failed_descriptor_type_check",{message:f.message}))}}var k=a("./ReactElement"),l=a("./ReactPropTypeLocations"),m=a("./ReactCurrentOwner"),n=a("./monitorCodeUse"),o=a("./warning"),p={react_key_warning:{},react_numeric_key_warning:{}},q={},r={},s=/^\d+$/,t={createElement:function(a){"production"!==c.env.NODE_ENV?o(null!=a,"React.createElement: type should not be null or undefined. It should be a string (for DOM elements) or a ReactClass (for composite components)."):null;var b=k.createElement.apply(this,arguments);if(null==b)return b;for(var d=2;d<arguments.length;d++)i(arguments[d],a);if(a){var e=a.displayName;a.propTypes&&j(e,a.propTypes,b.props,l.prop),a.contextTypes&&j(e,a.contextTypes,b._context,l.context)}return b},createFactory:function(a){var b=t.createElement.bind(null,a);return b.type=a,b}};b.exports=t}).call(this,a("_process"))},{"./ReactCurrentOwner":148,"./ReactElement":164,"./ReactPropTypeLocations":184,"./monitorCodeUse":257,"./warning":267,_process:91}],166:[function(a,b){(function(c){"use strict";function d(){return"production"!==c.env.NODE_ENV?j(h,"Trying to return null from a render, but no null placeholder component was injected."):j(h),h()}function e(a){k[a]=!0}function f(a){delete k[a]}function g(a){return k[a]}var h,i=a("./ReactElement"),j=a("./invariant"),k={},l={injectEmptyComponent:function(a){h=i.createFactory(a)}},m={deregisterNullComponentID:f,getEmptyComponent:d,injection:l,isNullComponentID:g,registerNullComponentID:e};b.exports=m}).call(this,a("_process"))},{"./ReactElement":164,"./invariant":247,_process:91}],167:[function(a,b){"use strict";var c={guard:function(a){return a}};b.exports=c},{}],168:[function(a,b){"use strict";function c(a){d.enqueueEvents(a),d.processEventQueue()}var d=a("./EventPluginHub"),e={handleTopLevel:function(a,b,e,f){var g=d.extractEvents(a,b,e,f);c(g)}};b.exports=e},{"./EventPluginHub":125}],169:[function(a,b){"use strict";function c(a){var b=k.getID(a),c=j.getReactRootIDFromNodeID(b),d=k.findReactContainerForID(c),e=k.getFirstReactDOM(d);return e}function d(a,b){this.topLevelType=a,this.nativeEvent=b,this.ancestors=[]}function e(a){for(var b=k.getFirstReactDOM(n(a.nativeEvent))||window,d=b;d;)a.ancestors.push(d),d=c(d);for(var e=0,f=a.ancestors.length;f>e;e++){b=a.ancestors[e];var g=k.getID(b)||"";p._handleTopLevel(a.topLevelType,b,g,a.nativeEvent)}}function f(a){var b=o(window);a(b)}var g=a("./EventListener"),h=a("./ExecutionEnvironment"),i=a("./PooledClass"),j=a("./ReactInstanceHandles"),k=a("./ReactMount"),l=a("./ReactUpdates"),m=a("./Object.assign"),n=a("./getEventTarget"),o=a("./getUnboundedScrollPosition");m(d.prototype,{destructor:function(){this.topLevelType=null,this.nativeEvent=null,this.ancestors.length=0}}),i.addPoolingTo(d,i.twoArgumentPooler);var p={_enabled:!0,_handleTopLevel:null,WINDOW_HANDLE:h.canUseDOM?window:null,setHandleTopLevel:function(a){p._handleTopLevel=a},setEnabled:function(a){p._enabled=!!a},isEnabled:function(){return p._enabled},trapBubbledEvent:function(a,b,c){var d=c;if(d)return g.listen(d,b,p.dispatchEvent.bind(null,a))},trapCapturedEvent:function(a,b,c){var d=c;if(d)return g.capture(d,b,p.dispatchEvent.bind(null,a))},monitorScrollValue:function(a){var b=f.bind(null,a);g.listen(window,"scroll",b),g.listen(window,"resize",b)},dispatchEvent:function(a,b){if(p._enabled){var c=d.getPooled(a,b);try{l.batchedUpdates(e,c)}finally{d.release(c)}}}};b.exports=p},{"./EventListener":124,"./ExecutionEnvironment":129,"./Object.assign":135,"./PooledClass":136,"./ReactInstanceHandles":172,"./ReactMount":176,"./ReactUpdates":197,"./getEventTarget":238,"./getUnboundedScrollPosition":243}],170:[function(a,b){"use strict";var c=a("./DOMProperty"),d=a("./EventPluginHub"),e=a("./ReactComponent"),f=a("./ReactCompositeComponent"),g=a("./ReactEmptyComponent"),h=a("./ReactBrowserEventEmitter"),i=a("./ReactNativeComponent"),j=a("./ReactPerf"),k=a("./ReactRootIndex"),l=a("./ReactUpdates"),m={Component:e.injection,CompositeComponent:f.injection,DOMProperty:c.injection,EmptyComponent:g.injection,EventPluginHub:d.injection,EventEmitter:h.injection,NativeComponent:i.injection,Perf:j.injection,RootIndex:k.injection,Updates:l.injection};b.exports=m},{"./DOMProperty":118,"./EventPluginHub":125,"./ReactBrowserEventEmitter":139,"./ReactComponent":143,"./ReactCompositeComponent":146,"./ReactEmptyComponent":166,"./ReactNativeComponent":179,"./ReactPerf":181,"./ReactRootIndex":188,"./ReactUpdates":197}],171:[function(a,b){"use strict";function c(a){return e(document.documentElement,a)}var d=a("./ReactDOMSelection"),e=a("./containsNode"),f=a("./focusNode"),g=a("./getActiveElement"),h={hasSelectionCapabilities:function(a){return a&&("INPUT"===a.nodeName&&"text"===a.type||"TEXTAREA"===a.nodeName||"true"===a.contentEditable)},getSelectionInformation:function(){var a=g();return{focusedElem:a,selectionRange:h.hasSelectionCapabilities(a)?h.getSelection(a):null}},restoreSelection:function(a){var b=g(),d=a.focusedElem,e=a.selectionRange;b!==d&&c(d)&&(h.hasSelectionCapabilities(d)&&h.setSelection(d,e),f(d))},getSelection:function(a){var b;if("selectionStart"in a)b={start:a.selectionStart,end:a.selectionEnd};else if(document.selection&&"INPUT"===a.nodeName){var c=document.selection.createRange();c.parentElement()===a&&(b={start:-c.moveStart("character",-a.value.length),end:-c.moveEnd("character",-a.value.length)})}else b=d.getOffsets(a);return b||{start:0,end:0}},setSelection:function(a,b){var c=b.start,e=b.end;if("undefined"==typeof e&&(e=c),"selectionStart"in a)a.selectionStart=c,a.selectionEnd=Math.min(e,a.value.length);else if(document.selection&&"INPUT"===a.nodeName){var f=a.createTextRange();f.collapse(!0),f.moveStart("character",c),f.moveEnd("character",e-c),f.select()}else d.setOffsets(a,b)}};b.exports=h},{"./ReactDOMSelection":158,"./containsNode":221,"./focusNode":232,"./getActiveElement":234}],172:[function(a,b){(function(c){"use strict";function d(a){return n+a.toString(36)}function e(a,b){return a.charAt(b)===n||b===a.length}function f(a){return""===a||a.charAt(0)===n&&a.charAt(a.length-1)!==n}function g(a,b){return 0===b.indexOf(a)&&e(b,a.length)}function h(a){return a?a.substr(0,a.lastIndexOf(n)):""}function i(a,b){if("production"!==c.env.NODE_ENV?m(f(a)&&f(b),"getNextDescendantID(%s, %s): Received an invalid React DOM ID.",a,b):m(f(a)&&f(b)),"production"!==c.env.NODE_ENV?m(g(a,b),"getNextDescendantID(...): React has made an invalid assumption about the DOM hierarchy. Expected `%s` to be an ancestor of `%s`.",a,b):m(g(a,b)),a===b)return a;for(var d=a.length+o,h=d;h<b.length&&!e(b,h);h++);return b.substr(0,h)}function j(a,b){var d=Math.min(a.length,b.length);if(0===d)return"";for(var g=0,h=0;d>=h;h++)if(e(a,h)&&e(b,h))g=h;else if(a.charAt(h)!==b.charAt(h))break;var i=a.substr(0,g);return"production"!==c.env.NODE_ENV?m(f(i),"getFirstCommonAncestorID(%s, %s): Expected a valid React DOM ID: %s",a,b,i):m(f(i)),i}function k(a,b,d,e,f,j){a=a||"",b=b||"","production"!==c.env.NODE_ENV?m(a!==b,"traverseParentPath(...): Cannot traverse from and to the same ID, `%s`.",a):m(a!==b);var k=g(b,a);"production"!==c.env.NODE_ENV?m(k||g(a,b),"traverseParentPath(%s, %s, ...): Cannot traverse from two IDs that do not have a parent path.",a,b):m(k||g(a,b));for(var l=0,n=k?h:i,o=a;;o=n(o,b)){var q;if(f&&o===a||j&&o===b||(q=d(o,k,e)),q===!1||o===b)break;"production"!==c.env.NODE_ENV?m(l++<p,"traverseParentPath(%s, %s, ...): Detected an infinite loop while traversing the React DOM ID tree. This may be due to malformed IDs: %s",a,b):m(l++<p)}}var l=a("./ReactRootIndex"),m=a("./invariant"),n=".",o=n.length,p=100,q={createReactRootID:function(){return d(l.createReactRootIndex())},createReactID:function(a,b){return a+b},getReactRootIDFromNodeID:function(a){if(a&&a.charAt(0)===n&&a.length>1){var b=a.indexOf(n,1);return b>-1?a.substr(0,b):a}return null},traverseEnterLeave:function(a,b,c,d,e){var f=j(a,b);f!==a&&k(a,f,c,d,!1,!0),f!==b&&k(f,b,c,e,!0,!1)},traverseTwoPhase:function(a,b,c){a&&(k("",a,b,c,!0,!1),k(a,"",b,c,!1,!0))},traverseAncestors:function(a,b,c){k("",a,b,c,!0,!1)},_getFirstCommonAncestorID:j,_getNextDescendantID:i,isAncestorIDOf:g,SEPARATOR:n};b.exports=q}).call(this,a("_process"))},{"./ReactRootIndex":188,"./invariant":247,_process:91}],173:[function(a,b){(function(c){"use strict";function d(){if(o._isLegacyCallWarningEnabled){var a=h.current,b=a&&a.constructor?a.constructor.displayName:"";b||(b="Something"),l.hasOwnProperty(b)||(l[b]=!0,"production"!==c.env.NODE_ENV?k(!1,b+" is calling a React component directly. Use a factory or JSX instead. See: http://fb.me/react-legacyfactory"):null,j("react_legacy_factory_call",{version:3,name:b}))}}function e(a){var b=a.prototype&&"function"==typeof a.prototype.mountComponent&&"function"==typeof a.prototype.receiveComponent;if(b)"production"!==c.env.NODE_ENV?k(!1,"Did not expect to get a React class here. Use `Component` instead of `Component.type` or `this.constructor`."):null;else{if(!a._reactWarnedForThisType){try{a._reactWarnedForThisType=!0}catch(d){}j("react_non_component_in_jsx",{version:3,name:a.name})}"production"!==c.env.NODE_ENV?k(!1,"This JSX uses a plain function. Only React components are valid in React's JSX transform."):null}}function f(a){"production"!==c.env.NODE_ENV?k(!1,"Do not pass React.DOM."+a.type+' to JSX or createFactory. Use the string "'+a.type+'" instead.'):null}function g(a,b){if("function"==typeof b)for(var c in b)if(b.hasOwnProperty(c)){var d=b[c];if("function"==typeof d){var e=d.bind(b);for(var f in d)d.hasOwnProperty(f)&&(e[f]=d[f]);a[c]=e}else a[c]=d}}var h=a("./ReactCurrentOwner"),i=a("./invariant"),j=a("./monitorCodeUse"),k=a("./warning"),l={},m={},n={},o={};o.wrapCreateFactory=function(a){var b=function(b){return"function"!=typeof b?a(b):b.isReactNonLegacyFactory?("production"!==c.env.NODE_ENV&&f(b),a(b.type)):b.isReactLegacyFactory?a(b.type):("production"!==c.env.NODE_ENV&&e(b),b)};return b},o.wrapCreateElement=function(a){var b=function(b){if("function"!=typeof b)return a.apply(this,arguments);var d;return b.isReactNonLegacyFactory?("production"!==c.env.NODE_ENV&&f(b),d=Array.prototype.slice.call(arguments,0),d[0]=b.type,a.apply(this,d)):b.isReactLegacyFactory?(b._isMockFunction&&(b.type._mockedReactClassConstructor=b),d=Array.prototype.slice.call(arguments,0),d[0]=b.type,a.apply(this,d)):("production"!==c.env.NODE_ENV&&e(b),b.apply(null,Array.prototype.slice.call(arguments,1)))};return b},o.wrapFactory=function(a){"production"!==c.env.NODE_ENV?i("function"==typeof a,"This is suppose to accept a element factory"):i("function"==typeof a);var b=function(){return"production"!==c.env.NODE_ENV&&d(),a.apply(this,arguments)};return g(b,a.type),b.isReactLegacyFactory=m,b.type=a.type,b},o.markNonLegacyFactory=function(a){return a.isReactNonLegacyFactory=n,a},o.isValidFactory=function(a){return"function"==typeof a&&a.isReactLegacyFactory===m},o.isValidClass=function(a){return"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?k(!1,"isValidClass is deprecated and will be removed in a future release. Use a more specific validator instead."):null),o.isValidFactory(a)},o._isLegacyCallWarningEnabled=!0,b.exports=o}).call(this,a("_process"))},{"./ReactCurrentOwner":148,"./invariant":247,"./monitorCodeUse":257,"./warning":267,_process:91}],174:[function(a,b){"use strict";function c(a,b){this.value=a,this.requestChange=b}function d(a){var b={value:"undefined"==typeof a?e.PropTypes.any.isRequired:a.isRequired,requestChange:e.PropTypes.func.isRequired};return e.PropTypes.shape(b)}var e=a("./React");c.PropTypes={link:d},b.exports=c},{"./React":137}],175:[function(a,b){"use strict";var c=a("./adler32"),d={CHECKSUM_ATTR_NAME:"data-react-checksum",addChecksumToMarkup:function(a){var b=c(a);return a.replace(">"," "+d.CHECKSUM_ATTR_NAME+'="'+b+'">')},canReuseMarkup:function(a,b){var e=b.getAttribute(d.CHECKSUM_ATTR_NAME);e=e&&parseInt(e,10);var f=c(a);return f===e}};b.exports=d},{"./adler32":217}],176:[function(a,b){(function(c){"use strict";function d(a){var b=v(a);return b&&L.getID(b)}function e(a){var b=f(a);if(b)if(D.hasOwnProperty(b)){var d=D[b];d!==a&&("production"!==c.env.NODE_ENV?x(!i(d,b),"ReactMount: Two valid but unequal nodes with the same `%s`: %s",C,b):x(!i(d,b)),D[b]=a)}else D[b]=a;return b}function f(a){return a&&a.getAttribute&&a.getAttribute(C)||""}function g(a,b){var c=f(a);c!==b&&delete D[c],a.setAttribute(C,b),D[b]=a}function h(a){return D.hasOwnProperty(a)&&i(D[a],a)||(D[a]=L.findReactNodeByID(a)),D[a]}function i(a,b){if(a){"production"!==c.env.NODE_ENV?x(f(a)===b,"ReactMount: Unexpected modification of `%s`",C):x(f(a)===b);var d=L.findReactContainerForID(b);if(d&&t(d,a))return!0}return!1}function j(a){delete D[a]}function k(a){var b=D[a];return b&&i(b,a)?void(K=b):!1}function l(a){K=null,r.traverseAncestors(a,k);var b=K;return K=null,b}var m=a("./DOMProperty"),n=a("./ReactBrowserEventEmitter"),o=a("./ReactCurrentOwner"),p=a("./ReactElement"),q=a("./ReactLegacyElement"),r=a("./ReactInstanceHandles"),s=a("./ReactPerf"),t=a("./containsNode"),u=a("./deprecated"),v=a("./getReactRootElementInContainer"),w=a("./instantiateReactComponent"),x=a("./invariant"),y=a("./shouldUpdateReactComponent"),z=a("./warning"),A=q.wrapCreateElement(p.createElement),B=r.SEPARATOR,C=m.ID_ATTRIBUTE_NAME,D={},E=1,F=9,G={},H={};if("production"!==c.env.NODE_ENV)var I={};var J=[],K=null,L={_instancesByReactRootID:G,scrollMonitor:function(a,b){b()},_updateRootComponent:function(a,b,e,f){var g=b.props;return L.scrollMonitor(e,function(){a.replaceProps(g,f)}),"production"!==c.env.NODE_ENV&&(I[d(e)]=v(e)),a},_registerComponent:function(a,b){"production"!==c.env.NODE_ENV?x(b&&(b.nodeType===E||b.nodeType===F),"_registerComponent(...): Target container is not a DOM element."):x(b&&(b.nodeType===E||b.nodeType===F)),n.ensureScrollValueMonitoring();var d=L.registerContainer(b);return G[d]=a,d},_renderNewRootComponent:s.measure("ReactMount","_renderNewRootComponent",function(a,b,d){"production"!==c.env.NODE_ENV?z(null==o.current,"_renderNewRootComponent(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate."):null;var e=w(a,null),f=L._registerComponent(e,b);return e.mountComponentIntoNode(f,b,d),"production"!==c.env.NODE_ENV&&(I[f]=v(b)),e}),render:function(a,b,e){"production"!==c.env.NODE_ENV?x(p.isValidElement(a),"renderComponent(): Invalid component element.%s","string"==typeof a?" Instead of passing an element string, make sure to instantiate it by passing it to React.createElement.":q.isValidFactory(a)?" Instead of passing a component class, make sure to instantiate it by passing it to React.createElement.":"undefined"!=typeof a.props?" This may be caused by unintentionally loading two independent copies of React.":""):x(p.isValidElement(a));var f=G[d(b)];if(f){var g=f._currentElement;if(y(g,a))return L._updateRootComponent(f,a,b,e);L.unmountComponentAtNode(b)}var h=v(b),i=h&&L.isRenderedByReact(h),j=i&&!f,k=L._renderNewRootComponent(a,b,j);return e&&e.call(k),k},constructAndRenderComponent:function(a,b,c){var d=A(a,b);return L.render(d,c)},constructAndRenderComponentByID:function(a,b,d){var e=document.getElementById(d);return"production"!==c.env.NODE_ENV?x(e,'Tried to get element with id of "%s" but it is not present on the page.',d):x(e),L.constructAndRenderComponent(a,b,e)},registerContainer:function(a){var b=d(a);return b&&(b=r.getReactRootIDFromNodeID(b)),b||(b=r.createReactRootID()),H[b]=a,b},unmountComponentAtNode:function(a){"production"!==c.env.NODE_ENV?z(null==o.current,"unmountComponentAtNode(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate."):null;
+var b=d(a),e=G[b];return e?(L.unmountComponentFromNode(e,a),delete G[b],delete H[b],"production"!==c.env.NODE_ENV&&delete I[b],!0):!1},unmountComponentFromNode:function(a,b){for(a.unmountComponent(),b.nodeType===F&&(b=b.documentElement);b.lastChild;)b.removeChild(b.lastChild)},findReactContainerForID:function(a){var b=r.getReactRootIDFromNodeID(a),d=H[b];if("production"!==c.env.NODE_ENV){var e=I[b];if(e&&e.parentNode!==d){"production"!==c.env.NODE_ENV?x(f(e)===b,"ReactMount: Root element ID differed from reactRootID."):x(f(e)===b);var g=d.firstChild;g&&b===f(g)?I[b]=g:console.warn("ReactMount: Root element has been removed from its original container. New container:",e.parentNode)}}return d},findReactNodeByID:function(a){var b=L.findReactContainerForID(a);return L.findComponentRoot(b,a)},isRenderedByReact:function(a){if(1!==a.nodeType)return!1;var b=L.getID(a);return b?b.charAt(0)===B:!1},getFirstReactDOM:function(a){for(var b=a;b&&b.parentNode!==b;){if(L.isRenderedByReact(b))return b;b=b.parentNode}return null},findComponentRoot:function(a,b){var d=J,e=0,f=l(b)||a;for(d[0]=f.firstChild,d.length=1;e<d.length;){for(var g,h=d[e++];h;){var i=L.getID(h);i?b===i?g=h:r.isAncestorIDOf(i,b)&&(d.length=e=0,d.push(h.firstChild)):d.push(h.firstChild),h=h.nextSibling}if(g)return d.length=0,g}d.length=0,"production"!==c.env.NODE_ENV?x(!1,"findComponentRoot(..., %s): Unable to find element. This probably means the DOM was unexpectedly mutated (e.g., by the browser), usually due to forgetting a <tbody> when using tables, nesting tags like <form>, <p>, or <a>, or using non-SVG elements in an <svg> parent. Try inspecting the child nodes of the element with React ID `%s`.",b,L.getID(a)):x(!1)},getReactRootID:d,getID:e,setID:g,getNode:h,purgeID:j};L.renderComponent=u("ReactMount","renderComponent","render",this,L.render),b.exports=L}).call(this,a("_process"))},{"./DOMProperty":118,"./ReactBrowserEventEmitter":139,"./ReactCurrentOwner":148,"./ReactElement":164,"./ReactInstanceHandles":172,"./ReactLegacyElement":173,"./ReactPerf":181,"./containsNode":221,"./deprecated":227,"./getReactRootElementInContainer":241,"./instantiateReactComponent":246,"./invariant":247,"./shouldUpdateReactComponent":263,"./warning":267,_process:91}],177:[function(a,b){"use strict";function c(a,b,c){o.push({parentID:a,parentNode:null,type:j.INSERT_MARKUP,markupIndex:p.push(b)-1,textContent:null,fromIndex:null,toIndex:c})}function d(a,b,c){o.push({parentID:a,parentNode:null,type:j.MOVE_EXISTING,markupIndex:null,textContent:null,fromIndex:b,toIndex:c})}function e(a,b){o.push({parentID:a,parentNode:null,type:j.REMOVE_NODE,markupIndex:null,textContent:null,fromIndex:b,toIndex:null})}function f(a,b){o.push({parentID:a,parentNode:null,type:j.TEXT_CONTENT,markupIndex:null,textContent:b,fromIndex:null,toIndex:null})}function g(){o.length&&(i.BackendIDOperations.dangerouslyProcessChildrenUpdates(o,p),h())}function h(){o.length=0,p.length=0}var i=a("./ReactComponent"),j=a("./ReactMultiChildUpdateTypes"),k=a("./flattenChildren"),l=a("./instantiateReactComponent"),m=a("./shouldUpdateReactComponent"),n=0,o=[],p=[],q={Mixin:{mountChildren:function(a,b){var c=k(a),d=[],e=0;this._renderedChildren=c;for(var f in c){var g=c[f];if(c.hasOwnProperty(f)){var h=l(g,null);c[f]=h;var i=this._rootNodeID+f,j=h.mountComponent(i,b,this._mountDepth+1);h._mountIndex=e,d.push(j),e++}}return d},updateTextContent:function(a){n++;var b=!0;try{var c=this._renderedChildren;for(var d in c)c.hasOwnProperty(d)&&this._unmountChildByName(c[d],d);this.setTextContent(a),b=!1}finally{n--,n||(b?h():g())}},updateChildren:function(a,b){n++;var c=!0;try{this._updateChildren(a,b),c=!1}finally{n--,n||(c?h():g())}},_updateChildren:function(a,b){var c=k(a),d=this._renderedChildren;if(c||d){var e,f=0,g=0;for(e in c)if(c.hasOwnProperty(e)){var h=d&&d[e],i=h&&h._currentElement,j=c[e];if(m(i,j))this.moveChild(h,g,f),f=Math.max(h._mountIndex,f),h.receiveComponent(j,b),h._mountIndex=g;else{h&&(f=Math.max(h._mountIndex,f),this._unmountChildByName(h,e));var n=l(j,null);this._mountChildByNameAtIndex(n,e,g,b)}g++}for(e in d)!d.hasOwnProperty(e)||c&&c[e]||this._unmountChildByName(d[e],e)}},unmountChildren:function(){var a=this._renderedChildren;for(var b in a){var c=a[b];c.unmountComponent&&c.unmountComponent()}this._renderedChildren=null},moveChild:function(a,b,c){a._mountIndex<c&&d(this._rootNodeID,a._mountIndex,b)},createChild:function(a,b){c(this._rootNodeID,b,a._mountIndex)},removeChild:function(a){e(this._rootNodeID,a._mountIndex)},setTextContent:function(a){f(this._rootNodeID,a)},_mountChildByNameAtIndex:function(a,b,c,d){var e=this._rootNodeID+b,f=a.mountComponent(e,d,this._mountDepth+1);a._mountIndex=c,this.createChild(a,f),this._renderedChildren=this._renderedChildren||{},this._renderedChildren[b]=a},_unmountChildByName:function(a,b){this.removeChild(a),a._mountIndex=null,a.unmountComponent(),delete this._renderedChildren[b]}}};b.exports=q},{"./ReactComponent":143,"./ReactMultiChildUpdateTypes":178,"./flattenChildren":231,"./instantiateReactComponent":246,"./shouldUpdateReactComponent":263}],178:[function(a,b){"use strict";var c=a("./keyMirror"),d=c({INSERT_MARKUP:null,MOVE_EXISTING:null,REMOVE_NODE:null,TEXT_CONTENT:null});b.exports=d},{"./keyMirror":253}],179:[function(a,b){(function(c){"use strict";function d(a,b,d){var e=h[a];return null==e?("production"!==c.env.NODE_ENV?f(g,"There is no registered component for the tag %s",a):f(g),new g(a,b)):d===a?("production"!==c.env.NODE_ENV?f(g,"There is no registered component for the tag %s",a):f(g),new g(a,b)):new e.type(b)}var e=a("./Object.assign"),f=a("./invariant"),g=null,h={},i={injectGenericComponentClass:function(a){g=a},injectComponentClasses:function(a){e(h,a)}},j={createInstanceForTag:d,injection:i};b.exports=j}).call(this,a("_process"))},{"./Object.assign":135,"./invariant":247,_process:91}],180:[function(a,b){(function(c){"use strict";var d=a("./emptyObject"),e=a("./invariant"),f={isValidOwner:function(a){return!(!a||"function"!=typeof a.attachRef||"function"!=typeof a.detachRef)},addComponentAsRefTo:function(a,b,d){"production"!==c.env.NODE_ENV?e(f.isValidOwner(d),"addComponentAsRefTo(...): Only a ReactOwner can have refs. This usually means that you're trying to add a ref to a component that doesn't have an owner (that is, was not created inside of another component's `render` method). Try rendering this component inside of a new top-level component which will hold the ref."):e(f.isValidOwner(d)),d.attachRef(b,a)},removeComponentAsRefFrom:function(a,b,d){"production"!==c.env.NODE_ENV?e(f.isValidOwner(d),"removeComponentAsRefFrom(...): Only a ReactOwner can have refs. This usually means that you're trying to remove a ref to a component that doesn't have an owner (that is, was not created inside of another component's `render` method). Try rendering this component inside of a new top-level component which will hold the ref."):e(f.isValidOwner(d)),d.refs[b]===a&&d.detachRef(b)},Mixin:{construct:function(){this.refs=d},attachRef:function(a,b){"production"!==c.env.NODE_ENV?e(b.isOwnedBy(this),"attachRef(%s, ...): Only a component's owner can store a ref to it.",a):e(b.isOwnedBy(this));var f=this.refs===d?this.refs={}:this.refs;f[a]=b},detachRef:function(a){delete this.refs[a]}}};b.exports=f}).call(this,a("_process"))},{"./emptyObject":229,"./invariant":247,_process:91}],181:[function(a,b){(function(a){"use strict";function c(a,b,c){return c}var d={enableMeasure:!1,storedMeasure:c,measure:function(b,c,e){if("production"!==a.env.NODE_ENV){var f=null,g=function(){return d.enableMeasure?(f||(f=d.storedMeasure(b,c,e)),f.apply(this,arguments)):e.apply(this,arguments)};return g.displayName=b+"_"+c,g}return e},injection:{injectMeasure:function(a){d.storedMeasure=a}}};b.exports=d}).call(this,a("_process"))},{_process:91}],182:[function(a,b){(function(c){"use strict";function d(a){return function(b,c,d){b[c]=b.hasOwnProperty(c)?a(b[c],d):d}}function e(a,b){for(var c in b)if(b.hasOwnProperty(c)){var d=m[c];d&&m.hasOwnProperty(c)?d(a,c,b[c]):a.hasOwnProperty(c)||(a[c]=b[c])}return a}var f=a("./Object.assign"),g=a("./emptyFunction"),h=a("./invariant"),i=a("./joinClasses"),j=a("./warning"),k=!1,l=d(function(a,b){return f({},b,a)}),m={children:g,className:d(i),style:l},n={TransferStrategies:m,mergeProps:function(a,b){return e(f({},a),b)},Mixin:{transferPropsTo:function(a){return"production"!==c.env.NODE_ENV?h(a._owner===this,"%s: You can't call transferPropsTo() on a component that you don't own, %s. This usually means you are calling transferPropsTo() on a component passed in as props or children.",this.constructor.displayName,"string"==typeof a.type?a.type:a.type.displayName):h(a._owner===this),"production"!==c.env.NODE_ENV&&(k||(k=!0,"production"!==c.env.NODE_ENV?j(!1,"transferPropsTo is deprecated. See http://fb.me/react-transferpropsto for more information."):null)),e(a.props,this.props),a}}};b.exports=n}).call(this,a("_process"))},{"./Object.assign":135,"./emptyFunction":228,"./invariant":247,"./joinClasses":252,"./warning":267,_process:91}],183:[function(a,b){(function(a){"use strict";var c={};"production"!==a.env.NODE_ENV&&(c={prop:"prop",context:"context",childContext:"child context"}),b.exports=c}).call(this,a("_process"))},{_process:91}],184:[function(a,b){"use strict";var c=a("./keyMirror"),d=c({prop:null,context:null,childContext:null});b.exports=d},{"./keyMirror":253}],185:[function(a,b){"use strict";function c(a){function b(b,c,d,e,f){if(e=e||u,null!=c[d])return a(c,d,e,f);var g=r[f];return b?new Error("Required "+g+" `"+d+"` was not specified in "+("`"+e+"`.")):void 0}var c=b.bind(null,!1);return c.isRequired=b.bind(null,!0),c}function d(a){function b(b,c,d,e){var f=b[c],g=o(f);if(g!==a){var h=r[e],i=p(f);return new Error("Invalid "+h+" `"+c+"` of type `"+i+"` "+("supplied to `"+d+"`, expected `"+a+"`."))}}return c(b)}function e(){return c(t.thatReturns())}function f(a){function b(b,c,d,e){var f=b[c];if(!Array.isArray(f)){var g=r[e],h=o(f);return new Error("Invalid "+g+" `"+c+"` of type "+("`"+h+"` supplied to `"+d+"`, expected an array."))}for(var i=0;i<f.length;i++){var j=a(f,i,d,e);if(j instanceof Error)return j}}return c(b)}function g(){function a(a,b,c,d){if(!q.isValidElement(a[b])){var e=r[d];return new Error("Invalid "+e+" `"+b+"` supplied to "+("`"+c+"`, expected a ReactElement."))}}return c(a)}function h(a){function b(b,c,d,e){if(!(b[c]instanceof a)){var f=r[e],g=a.name||u;return new Error("Invalid "+f+" `"+c+"` supplied to "+("`"+d+"`, expected instance of `"+g+"`."))}}return c(b)}function i(a){function b(b,c,d,e){for(var f=b[c],g=0;g<a.length;g++)if(f===a[g])return;var h=r[e],i=JSON.stringify(a);return new Error("Invalid "+h+" `"+c+"` of value `"+f+"` "+("supplied to `"+d+"`, expected one of "+i+"."))}return c(b)}function j(a){function b(b,c,d,e){var f=b[c],g=o(f);if("object"!==g){var h=r[e];return new Error("Invalid "+h+" `"+c+"` of type "+("`"+g+"` supplied to `"+d+"`, expected an object."))}for(var i in f)if(f.hasOwnProperty(i)){var j=a(f,i,d,e);if(j instanceof Error)return j}}return c(b)}function k(a){function b(b,c,d,e){for(var f=0;f<a.length;f++){var g=a[f];if(null==g(b,c,d,e))return}var h=r[e];return new Error("Invalid "+h+" `"+c+"` supplied to "+("`"+d+"`."))}return c(b)}function l(){function a(a,b,c,d){if(!n(a[b])){var e=r[d];return new Error("Invalid "+e+" `"+b+"` supplied to "+("`"+c+"`, expected a ReactNode."))}}return c(a)}function m(a){function b(b,c,d,e){var f=b[c],g=o(f);if("object"!==g){var h=r[e];return new Error("Invalid "+h+" `"+c+"` of type `"+g+"` "+("supplied to `"+d+"`, expected `object`."))}for(var i in a){var j=a[i];if(j){var k=j(f,i,d,e);if(k)return k}}}return c(b,"expected `object`")}function n(a){switch(typeof a){case"number":case"string":return!0;case"boolean":return!a;case"object":if(Array.isArray(a))return a.every(n);if(q.isValidElement(a))return!0;for(var b in a)if(!n(a[b]))return!1;return!0;default:return!1}}function o(a){var b=typeof a;return Array.isArray(a)?"array":a instanceof RegExp?"object":b}function p(a){var b=o(a);if("object"===b){if(a instanceof Date)return"date";if(a instanceof RegExp)return"regexp"}return b}var q=a("./ReactElement"),r=a("./ReactPropTypeLocationNames"),s=a("./deprecated"),t=a("./emptyFunction"),u="<<anonymous>>",v=g(),w=l(),x={array:d("array"),bool:d("boolean"),func:d("function"),number:d("number"),object:d("object"),string:d("string"),any:e(),arrayOf:f,element:v,instanceOf:h,node:w,objectOf:j,oneOf:i,oneOfType:k,shape:m,component:s("React.PropTypes","component","element",this,v),renderable:s("React.PropTypes","renderable","node",this,w)};b.exports=x},{"./ReactElement":164,"./ReactPropTypeLocationNames":183,"./deprecated":227,"./emptyFunction":228}],186:[function(a,b){"use strict";function c(){this.listenersToPut=[]}var d=a("./PooledClass"),e=a("./ReactBrowserEventEmitter"),f=a("./Object.assign");f(c.prototype,{enqueuePutListener:function(a,b,c){this.listenersToPut.push({rootNodeID:a,propKey:b,propValue:c})},putListeners:function(){for(var a=0;a<this.listenersToPut.length;a++){var b=this.listenersToPut[a];e.putListener(b.rootNodeID,b.propKey,b.propValue)}},reset:function(){this.listenersToPut.length=0},destructor:function(){this.reset()}}),d.addPoolingTo(c),b.exports=c},{"./Object.assign":135,"./PooledClass":136,"./ReactBrowserEventEmitter":139}],187:[function(a,b){"use strict";function c(){this.reinitializeTransaction(),this.renderToStaticMarkup=!1,this.reactMountReady=d.getPooled(null),this.putListenerQueue=h.getPooled()}var d=a("./CallbackQueue"),e=a("./PooledClass"),f=a("./ReactBrowserEventEmitter"),g=a("./ReactInputSelection"),h=a("./ReactPutListenerQueue"),i=a("./Transaction"),j=a("./Object.assign"),k={initialize:g.getSelectionInformation,close:g.restoreSelection},l={initialize:function(){var a=f.isEnabled();return f.setEnabled(!1),a},close:function(a){f.setEnabled(a)}},m={initialize:function(){this.reactMountReady.reset()},close:function(){this.reactMountReady.notifyAll()}},n={initialize:function(){this.putListenerQueue.reset()},close:function(){this.putListenerQueue.putListeners()}},o=[n,k,l,m],p={getTransactionWrappers:function(){return o},getReactMountReady:function(){return this.reactMountReady},getPutListenerQueue:function(){return this.putListenerQueue},destructor:function(){d.release(this.reactMountReady),this.reactMountReady=null,h.release(this.putListenerQueue),this.putListenerQueue=null}};j(c.prototype,i.Mixin,p),e.addPoolingTo(c),b.exports=c},{"./CallbackQueue":113,"./Object.assign":135,"./PooledClass":136,"./ReactBrowserEventEmitter":139,"./ReactInputSelection":171,"./ReactPutListenerQueue":186,"./Transaction":214}],188:[function(a,b){"use strict";var c={injectCreateReactRootIndex:function(a){d.createReactRootIndex=a}},d={createReactRootIndex:null,injection:c};b.exports=d},{}],189:[function(a,b){(function(c){"use strict";function d(a){"production"!==c.env.NODE_ENV?k(f.isValidElement(a),"renderToString(): You must pass a valid ReactElement."):k(f.isValidElement(a));var b;try{var d=g.createReactRootID();return b=i.getPooled(!1),b.perform(function(){var c=j(a,null),e=c.mountComponent(d,b,0);return h.addChecksumToMarkup(e)},null)}finally{i.release(b)}}function e(a){"production"!==c.env.NODE_ENV?k(f.isValidElement(a),"renderToStaticMarkup(): You must pass a valid ReactElement."):k(f.isValidElement(a));var b;try{var d=g.createReactRootID();return b=i.getPooled(!0),b.perform(function(){var c=j(a,null);return c.mountComponent(d,b,0)},null)}finally{i.release(b)}}var f=a("./ReactElement"),g=a("./ReactInstanceHandles"),h=a("./ReactMarkupChecksum"),i=a("./ReactServerRenderingTransaction"),j=a("./instantiateReactComponent"),k=a("./invariant");b.exports={renderToString:d,renderToStaticMarkup:e}}).call(this,a("_process"))},{"./ReactElement":164,"./ReactInstanceHandles":172,"./ReactMarkupChecksum":175,"./ReactServerRenderingTransaction":190,"./instantiateReactComponent":246,"./invariant":247,_process:91}],190:[function(a,b){"use strict";function c(a){this.reinitializeTransaction(),this.renderToStaticMarkup=a,this.reactMountReady=e.getPooled(null),this.putListenerQueue=f.getPooled()}var d=a("./PooledClass"),e=a("./CallbackQueue"),f=a("./ReactPutListenerQueue"),g=a("./Transaction"),h=a("./Object.assign"),i=a("./emptyFunction"),j={initialize:function(){this.reactMountReady.reset()},close:i},k={initialize:function(){this.putListenerQueue.reset()},close:i},l=[k,j],m={getTransactionWrappers:function(){return l},getReactMountReady:function(){return this.reactMountReady},getPutListenerQueue:function(){return this.putListenerQueue},destructor:function(){e.release(this.reactMountReady),this.reactMountReady=null,f.release(this.putListenerQueue),this.putListenerQueue=null}};h(c.prototype,g.Mixin,m),d.addPoolingTo(c),b.exports=c},{"./CallbackQueue":113,"./Object.assign":135,"./PooledClass":136,"./ReactPutListenerQueue":186,"./Transaction":214,"./emptyFunction":228}],191:[function(a,b){"use strict";function c(a,b){var c={};return function(d){c[b]=d,a.setState(c)}}var d={createStateSetter:function(a,b){return function(c,d,e,f,g,h){var i=b.call(a,c,d,e,f,g,h);i&&a.setState(i)}},createStateKeySetter:function(a,b){var d=a.__keySetters||(a.__keySetters={});return d[b]||(d[b]=c(a,b))}};d.Mixin={createStateSetter:function(a){return d.createStateSetter(this,a)},createStateKeySetter:function(a){return d.createStateKeySetter(this,a)}},b.exports=d},{}],192:[function(a,b){"use strict";function c(){}function d(a){return function(b,d){var e;s.isDOMComponent(b)?e=b.getDOMNode():b.tagName&&(e=b);var f=new c;f.target=e;var g=new p(l.eventNameDispatchConfigs[a],m.getID(e),f);q(g,d),i.accumulateTwoPhaseDispatches(g),o.batchedUpdates(function(){h.enqueueEvents(g),h.processEventQueue()})}}function e(){s.Simulate={};var a;for(a in l.eventNameDispatchConfigs)s.Simulate[a]=d(a)}function f(a){return function(b,d){var e=new c(a);q(e,d),s.isDOMComponent(b)?s.simulateNativeEventOnDOMComponent(a,b,e):b.tagName&&s.simulateNativeEventOnNode(a,b,e)}}var g=a("./EventConstants"),h=a("./EventPluginHub"),i=a("./EventPropagators"),j=a("./React"),k=a("./ReactElement"),l=a("./ReactBrowserEventEmitter"),m=a("./ReactMount"),n=a("./ReactTextComponent"),o=a("./ReactUpdates"),p=a("./SyntheticEvent"),q=a("./Object.assign"),r=g.topLevelTypes,s={renderIntoDocument:function(a){var b=document.createElement("div");return j.render(a,b)},isElement:function(a){return k.isValidElement(a)},isElementOfType:function(a,b){return k.isValidElement(a)&&a.type===b.type},isDOMComponent:function(a){return!!(a&&a.mountComponent&&a.tagName)},isDOMComponentElement:function(a){return!!(a&&k.isValidElement(a)&&a.tagName)},isCompositeComponent:function(a){return"function"==typeof a.render&&"function"==typeof a.setState},isCompositeComponentWithType:function(a,b){return!(!s.isCompositeComponent(a)||a.constructor!==b.type)},isCompositeComponentElement:function(a){if(!k.isValidElement(a))return!1;var b=a.type.prototype;return"function"==typeof b.render&&"function"==typeof b.setState},isCompositeComponentElementWithType:function(a,b){return!(!s.isCompositeComponentElement(a)||a.constructor!==b)},isTextComponent:function(a){return a instanceof n.type},findAllInRenderedTree:function(a,b){if(!a)return[];var c=b(a)?[a]:[];if(s.isDOMComponent(a)){var d,e=a._renderedChildren;for(d in e)e.hasOwnProperty(d)&&(c=c.concat(s.findAllInRenderedTree(e[d],b)))}else s.isCompositeComponent(a)&&(c=c.concat(s.findAllInRenderedTree(a._renderedComponent,b)));return c},scryRenderedDOMComponentsWithClass:function(a,b){return s.findAllInRenderedTree(a,function(a){var c=a.props.className;return s.isDOMComponent(a)&&c&&-1!==(" "+c+" ").indexOf(" "+b+" ")})},findRenderedDOMComponentWithClass:function(a,b){var c=s.scryRenderedDOMComponentsWithClass(a,b);if(1!==c.length)throw new Error("Did not find exactly one match for class:"+b);return c[0]},scryRenderedDOMComponentsWithTag:function(a,b){return s.findAllInRenderedTree(a,function(a){return s.isDOMComponent(a)&&a.tagName===b.toUpperCase()})},findRenderedDOMComponentWithTag:function(a,b){var c=s.scryRenderedDOMComponentsWithTag(a,b);if(1!==c.length)throw new Error("Did not find exactly one match for tag:"+b);return c[0]},scryRenderedComponentsWithType:function(a,b){return s.findAllInRenderedTree(a,function(a){return s.isCompositeComponentWithType(a,b)})},findRenderedComponentWithType:function(a,b){var c=s.scryRenderedComponentsWithType(a,b);if(1!==c.length)throw new Error("Did not find exactly one match for componentType:"+b);return c[0]},mockComponent:function(a,b){b=b||a.mockTagName||"div";var c=j.createClass({displayName:"ConvenienceConstructor",render:function(){return j.createElement(b,null,this.props.children)}});return a.mockImplementation(c),a.type=c.type,a.isReactLegacyFactory=!0,this},simulateNativeEventOnNode:function(a,b,c){c.target=b,l.ReactEventListener.dispatchEvent(a,c)},simulateNativeEventOnDOMComponent:function(a,b,c){s.simulateNativeEventOnNode(a,b.getDOMNode(),c)},nativeTouchData:function(a,b){return{touches:[{pageX:a,pageY:b}]}},Simulate:null,SimulateNative:{}},t=h.injection.injectEventPluginOrder;h.injection.injectEventPluginOrder=function(){t.apply(this,arguments),e()};var u=h.injection.injectEventPluginsByName;h.injection.injectEventPluginsByName=function(){u.apply(this,arguments),e()},e();var v;for(v in r){var w=0===v.indexOf("top")?v.charAt(3).toLowerCase()+v.substr(4):v;s.SimulateNative[w]=f(v)}b.exports=s},{"./EventConstants":123,"./EventPluginHub":125,"./EventPropagators":128,"./Object.assign":135,"./React":137,"./ReactBrowserEventEmitter":139,"./ReactElement":164,"./ReactMount":176,"./ReactTextComponent":193,"./ReactUpdates":197,"./SyntheticEvent":206}],193:[function(a,b){"use strict";var c=a("./DOMPropertyOperations"),d=a("./ReactComponent"),e=a("./ReactElement"),f=a("./Object.assign"),g=a("./escapeTextForBrowser"),h=function(){};f(h.prototype,d.Mixin,{mountComponent:function(a,b,e){d.Mixin.mountComponent.call(this,a,b,e);var f=g(this.props);return b.renderToStaticMarkup?f:"<span "+c.createMarkupForID(a)+">"+f+"</span>"},receiveComponent:function(a){var b=a.props;b!==this.props&&(this.props=b,d.BackendIDOperations.updateTextContentByID(this._rootNodeID,b))}});var i=function(a){return new e(h,null,null,null,null,a)};i.type=h,b.exports=i},{"./DOMPropertyOperations":119,"./Object.assign":135,"./ReactComponent":143,"./ReactElement":164,"./escapeTextForBrowser":230}],194:[function(a,b){"use strict";var c=a("./ReactChildren"),d={getChildMapping:function(a){return c.map(a,function(a){return a})},mergeChildMappings:function(a,b){function c(c){return b.hasOwnProperty(c)?b[c]:a[c]}a=a||{},b=b||{};var d={},e=[];for(var f in a)b.hasOwnProperty(f)?e.length&&(d[f]=e,e=[]):e.push(f);var g,h={};for(var i in b){if(d.hasOwnProperty(i))for(g=0;g<d[i].length;g++){var j=d[i][g];h[d[i][g]]=c(j)}h[i]=c(i)}for(g=0;g<e.length;g++)h[e[g]]=c(e[g]);return h}};b.exports=d},{"./ReactChildren":142}],195:[function(a,b){"use strict";function c(){var a=document.createElement("div"),b=a.style;"AnimationEvent"in window||delete g.animationend.animation,"TransitionEvent"in window||delete g.transitionend.transition;for(var c in g){var d=g[c];for(var e in d)if(e in b){h.push(d[e]);break}}}function d(a,b,c){a.addEventListener(b,c,!1)}function e(a,b,c){a.removeEventListener(b,c,!1)}var f=a("./ExecutionEnvironment"),g={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},h=[];f.canUseDOM&&c();var i={addEndEventListener:function(a,b){return 0===h.length?void window.setTimeout(b,0):void h.forEach(function(c){d(a,c,b)})},removeEndEventListener:function(a,b){0!==h.length&&h.forEach(function(c){e(a,c,b)})}};b.exports=i},{"./ExecutionEnvironment":129}],196:[function(a,b){"use strict";var c=a("./React"),d=a("./ReactTransitionChildMapping"),e=a("./Object.assign"),f=a("./cloneWithProps"),g=a("./emptyFunction"),h=c.createClass({displayName:"ReactTransitionGroup",propTypes:{component:c.PropTypes.any,childFactory:c.PropTypes.func},getDefaultProps:function(){return{component:"span",childFactory:g.thatReturnsArgument}},getInitialState:function(){return{children:d.getChildMapping(this.props.children)}},componentWillReceiveProps:function(a){var b=d.getChildMapping(a.children),c=this.state.children;this.setState({children:d.mergeChildMappings(c,b)});var e;for(e in b){var f=c&&c.hasOwnProperty(e);!b[e]||f||this.currentlyTransitioningKeys[e]||this.keysToEnter.push(e)}for(e in c){var g=b&&b.hasOwnProperty(e);!c[e]||g||this.currentlyTransitioningKeys[e]||this.keysToLeave.push(e)}},componentWillMount:function(){this.currentlyTransitioningKeys={},this.keysToEnter=[],this.keysToLeave=[]},componentDidUpdate:function(){var a=this.keysToEnter;this.keysToEnter=[],a.forEach(this.performEnter);var b=this.keysToLeave;this.keysToLeave=[],b.forEach(this.performLeave)},performEnter:function(a){this.currentlyTransitioningKeys[a]=!0;var b=this.refs[a];b.componentWillEnter?b.componentWillEnter(this._handleDoneEntering.bind(this,a)):this._handleDoneEntering(a)},_handleDoneEntering:function(a){var b=this.refs[a];b.componentDidEnter&&b.componentDidEnter(),delete this.currentlyTransitioningKeys[a];var c=d.getChildMapping(this.props.children);c&&c.hasOwnProperty(a)||this.performLeave(a)},performLeave:function(a){this.currentlyTransitioningKeys[a]=!0;var b=this.refs[a];b.componentWillLeave?b.componentWillLeave(this._handleDoneLeaving.bind(this,a)):this._handleDoneLeaving(a)},_handleDoneLeaving:function(a){var b=this.refs[a];b.componentDidLeave&&b.componentDidLeave(),delete this.currentlyTransitioningKeys[a];var c=d.getChildMapping(this.props.children);if(c&&c.hasOwnProperty(a))this.performEnter(a);else{var f=e({},this.state.children);delete f[a],this.setState({children:f})}},render:function(){var a={};for(var b in this.state.children){var d=this.state.children[b];d&&(a[b]=f(this.props.childFactory(d),{ref:b}))}return c.createElement(this.props.component,this.props,a)}});b.exports=h},{"./Object.assign":135,"./React":137,"./ReactTransitionChildMapping":194,"./cloneWithProps":220,"./emptyFunction":228}],197:[function(a,b){(function(c){"use strict";function d(){"production"!==c.env.NODE_ENV?q(B.ReactReconcileTransaction&&v,"ReactUpdates: must inject a reconcile transaction class and batching strategy"):q(B.ReactReconcileTransaction&&v)}function e(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=k.getPooled(),this.reconcileTransaction=B.ReactReconcileTransaction.getPooled()}function f(a,b,c){d(),v.batchedUpdates(a,b,c)}function g(a,b){return a._mountDepth-b._mountDepth}function h(a){var b=a.dirtyComponentsLength;"production"!==c.env.NODE_ENV?q(b===s.length,"Expected flush transaction's stored dirty-components length (%s) to match dirty-components array length (%s).",b,s.length):q(b===s.length),s.sort(g);for(var d=0;b>d;d++){var e=s[d];if(e.isMounted()){var f=e._pendingCallbacks;if(e._pendingCallbacks=null,e.performUpdateIfNecessary(a.reconcileTransaction),f)for(var h=0;h<f.length;h++)a.callbackQueue.enqueue(f[h],e)}}}function i(a,b){return"production"!==c.env.NODE_ENV?q(!b||"function"==typeof b,"enqueueUpdate(...): You called `setProps`, `replaceProps`, `setState`, `replaceState`, or `forceUpdate` with a callback that isn't callable."):q(!b||"function"==typeof b),d(),"production"!==c.env.NODE_ENV?r(null==m.current,"enqueueUpdate(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate."):null,v.isBatchingUpdates?(s.push(a),void(b&&(a._pendingCallbacks?a._pendingCallbacks.push(b):a._pendingCallbacks=[b]))):void v.batchedUpdates(i,a,b)}function j(a,b){"production"!==c.env.NODE_ENV?q(v.isBatchingUpdates,"ReactUpdates.asap: Can't enqueue an asap callback in a context whereupdates are not being batched."):q(v.isBatchingUpdates),t.enqueue(a,b),u=!0}var k=a("./CallbackQueue"),l=a("./PooledClass"),m=a("./ReactCurrentOwner"),n=a("./ReactPerf"),o=a("./Transaction"),p=a("./Object.assign"),q=a("./invariant"),r=a("./warning"),s=[],t=k.getPooled(),u=!1,v=null,w={initialize:function(){this.dirtyComponentsLength=s.length},close:function(){this.dirtyComponentsLength!==s.length?(s.splice(0,this.dirtyComponentsLength),z()):s.length=0}},x={initialize:function(){this.callbackQueue.reset()},close:function(){this.callbackQueue.notifyAll()}},y=[w,x];p(e.prototype,o.Mixin,{getTransactionWrappers:function(){return y},destructor:function(){this.dirtyComponentsLength=null,k.release(this.callbackQueue),this.callbackQueue=null,B.ReactReconcileTransaction.release(this.reconcileTransaction),this.reconcileTransaction=null},perform:function(a,b,c){return o.Mixin.perform.call(this,this.reconcileTransaction.perform,this.reconcileTransaction,a,b,c)}}),l.addPoolingTo(e);var z=n.measure("ReactUpdates","flushBatchedUpdates",function(){for(;s.length||u;){if(s.length){var a=e.getPooled();a.perform(h,null,a),e.release(a)}if(u){u=!1;var b=t;t=k.getPooled(),b.notifyAll(),k.release(b)}}}),A={injectReconcileTransaction:function(a){"production"!==c.env.NODE_ENV?q(a,"ReactUpdates: must provide a reconcile transaction class"):q(a),B.ReactReconcileTransaction=a},injectBatchingStrategy:function(a){"production"!==c.env.NODE_ENV?q(a,"ReactUpdates: must provide a batching strategy"):q(a),"production"!==c.env.NODE_ENV?q("function"==typeof a.batchedUpdates,"ReactUpdates: must provide a batchedUpdates() function"):q("function"==typeof a.batchedUpdates),"production"!==c.env.NODE_ENV?q("boolean"==typeof a.isBatchingUpdates,"ReactUpdates: must provide an isBatchingUpdates boolean attribute"):q("boolean"==typeof a.isBatchingUpdates),v=a}},B={ReactReconcileTransaction:null,batchedUpdates:f,enqueueUpdate:i,flushBatchedUpdates:z,injection:A,asap:j};b.exports=B}).call(this,a("_process"))},{"./CallbackQueue":113,"./Object.assign":135,"./PooledClass":136,"./ReactCurrentOwner":148,"./ReactPerf":181,"./Transaction":214,"./invariant":247,"./warning":267,_process:91}],198:[function(a,b){(function(c){"use strict";var d=a("./LinkedStateMixin"),e=a("./React"),f=a("./ReactComponentWithPureRenderMixin"),g=a("./ReactCSSTransitionGroup"),h=a("./ReactTransitionGroup"),i=a("./ReactUpdates"),j=a("./cx"),k=a("./cloneWithProps"),l=a("./update");e.addons={CSSTransitionGroup:g,LinkedStateMixin:d,PureRenderMixin:f,TransitionGroup:h,batchedUpdates:i.batchedUpdates,classSet:j,cloneWithProps:k,update:l},"production"!==c.env.NODE_ENV&&(e.addons.Perf=a("./ReactDefaultPerf"),e.addons.TestUtils=a("./ReactTestUtils")),b.exports=e}).call(this,a("_process"))},{"./LinkedStateMixin":131,"./React":137,"./ReactCSSTransitionGroup":140,"./ReactComponentWithPureRenderMixin":145,"./ReactDefaultPerf":162,"./ReactTestUtils":192,"./ReactTransitionGroup":196,"./ReactUpdates":197,"./cloneWithProps":220,"./cx":225,"./update":266,_process:91}],199:[function(a,b){"use strict";var c=a("./DOMProperty"),d=c.injection.MUST_USE_ATTRIBUTE,e={Properties:{cx:d,cy:d,d:d,dx:d,dy:d,fill:d,fillOpacity:d,fontFamily:d,fontSize:d,fx:d,fy:d,gradientTransform:d,gradientUnits:d,markerEnd:d,markerMid:d,markerStart:d,offset:d,opacity:d,patternContentUnits:d,patternUnits:d,points:d,preserveAspectRatio:d,r:d,rx:d,ry:d,spreadMethod:d,stopColor:d,stopOpacity:d,stroke:d,strokeDasharray:d,strokeLinecap:d,strokeOpacity:d,strokeWidth:d,textAnchor:d,transform:d,version:d,viewBox:d,x1:d,x2:d,x:d,y1:d,y2:d,y:d},DOMAttributeNames:{fillOpacity:"fill-opacity",fontFamily:"font-family",fontSize:"font-size",gradientTransform:"gradientTransform",gradientUnits:"gradientUnits",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",patternContentUnits:"patternContentUnits",patternUnits:"patternUnits",preserveAspectRatio:"preserveAspectRatio",spreadMethod:"spreadMethod",stopColor:"stop-color",stopOpacity:"stop-opacity",strokeDasharray:"stroke-dasharray",strokeLinecap:"stroke-linecap",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",textAnchor:"text-anchor",viewBox:"viewBox"}};
+b.exports=e},{"./DOMProperty":118}],200:[function(a,b){"use strict";function c(a){if("selectionStart"in a&&g.hasSelectionCapabilities(a))return{start:a.selectionStart,end:a.selectionEnd};if(window.getSelection){var b=window.getSelection();return{anchorNode:b.anchorNode,anchorOffset:b.anchorOffset,focusNode:b.focusNode,focusOffset:b.focusOffset}}if(document.selection){var c=document.selection.createRange();return{parentElement:c.parentElement(),text:c.text,top:c.boundingTop,left:c.boundingLeft}}}function d(a){if(!r&&null!=o&&o==i()){var b=c(o);if(!q||!l(q,b)){q=b;var d=h.getPooled(n.select,p,a);return d.type="select",d.target=o,f.accumulateTwoPhaseDispatches(d),d}}}var e=a("./EventConstants"),f=a("./EventPropagators"),g=a("./ReactInputSelection"),h=a("./SyntheticEvent"),i=a("./getActiveElement"),j=a("./isTextInputElement"),k=a("./keyOf"),l=a("./shallowEqual"),m=e.topLevelTypes,n={select:{phasedRegistrationNames:{bubbled:k({onSelect:null}),captured:k({onSelectCapture:null})},dependencies:[m.topBlur,m.topContextMenu,m.topFocus,m.topKeyDown,m.topMouseDown,m.topMouseUp,m.topSelectionChange]}},o=null,p=null,q=null,r=!1,s={eventTypes:n,extractEvents:function(a,b,c,e){switch(a){case m.topFocus:(j(b)||"true"===b.contentEditable)&&(o=b,p=c,q=null);break;case m.topBlur:o=null,p=null,q=null;break;case m.topMouseDown:r=!0;break;case m.topContextMenu:case m.topMouseUp:return r=!1,d(e);case m.topSelectionChange:case m.topKeyDown:case m.topKeyUp:return d(e)}}};b.exports=s},{"./EventConstants":123,"./EventPropagators":128,"./ReactInputSelection":171,"./SyntheticEvent":206,"./getActiveElement":234,"./isTextInputElement":250,"./keyOf":254,"./shallowEqual":262}],201:[function(a,b){"use strict";var c=Math.pow(2,53),d={createReactRootIndex:function(){return Math.ceil(Math.random()*c)}};b.exports=d},{}],202:[function(a,b){(function(c){"use strict";var d=a("./EventConstants"),e=a("./EventPluginUtils"),f=a("./EventPropagators"),g=a("./SyntheticClipboardEvent"),h=a("./SyntheticEvent"),i=a("./SyntheticFocusEvent"),j=a("./SyntheticKeyboardEvent"),k=a("./SyntheticMouseEvent"),l=a("./SyntheticDragEvent"),m=a("./SyntheticTouchEvent"),n=a("./SyntheticUIEvent"),o=a("./SyntheticWheelEvent"),p=a("./getEventCharCode"),q=a("./invariant"),r=a("./keyOf"),s=a("./warning"),t=d.topLevelTypes,u={blur:{phasedRegistrationNames:{bubbled:r({onBlur:!0}),captured:r({onBlurCapture:!0})}},click:{phasedRegistrationNames:{bubbled:r({onClick:!0}),captured:r({onClickCapture:!0})}},contextMenu:{phasedRegistrationNames:{bubbled:r({onContextMenu:!0}),captured:r({onContextMenuCapture:!0})}},copy:{phasedRegistrationNames:{bubbled:r({onCopy:!0}),captured:r({onCopyCapture:!0})}},cut:{phasedRegistrationNames:{bubbled:r({onCut:!0}),captured:r({onCutCapture:!0})}},doubleClick:{phasedRegistrationNames:{bubbled:r({onDoubleClick:!0}),captured:r({onDoubleClickCapture:!0})}},drag:{phasedRegistrationNames:{bubbled:r({onDrag:!0}),captured:r({onDragCapture:!0})}},dragEnd:{phasedRegistrationNames:{bubbled:r({onDragEnd:!0}),captured:r({onDragEndCapture:!0})}},dragEnter:{phasedRegistrationNames:{bubbled:r({onDragEnter:!0}),captured:r({onDragEnterCapture:!0})}},dragExit:{phasedRegistrationNames:{bubbled:r({onDragExit:!0}),captured:r({onDragExitCapture:!0})}},dragLeave:{phasedRegistrationNames:{bubbled:r({onDragLeave:!0}),captured:r({onDragLeaveCapture:!0})}},dragOver:{phasedRegistrationNames:{bubbled:r({onDragOver:!0}),captured:r({onDragOverCapture:!0})}},dragStart:{phasedRegistrationNames:{bubbled:r({onDragStart:!0}),captured:r({onDragStartCapture:!0})}},drop:{phasedRegistrationNames:{bubbled:r({onDrop:!0}),captured:r({onDropCapture:!0})}},focus:{phasedRegistrationNames:{bubbled:r({onFocus:!0}),captured:r({onFocusCapture:!0})}},input:{phasedRegistrationNames:{bubbled:r({onInput:!0}),captured:r({onInputCapture:!0})}},keyDown:{phasedRegistrationNames:{bubbled:r({onKeyDown:!0}),captured:r({onKeyDownCapture:!0})}},keyPress:{phasedRegistrationNames:{bubbled:r({onKeyPress:!0}),captured:r({onKeyPressCapture:!0})}},keyUp:{phasedRegistrationNames:{bubbled:r({onKeyUp:!0}),captured:r({onKeyUpCapture:!0})}},load:{phasedRegistrationNames:{bubbled:r({onLoad:!0}),captured:r({onLoadCapture:!0})}},error:{phasedRegistrationNames:{bubbled:r({onError:!0}),captured:r({onErrorCapture:!0})}},mouseDown:{phasedRegistrationNames:{bubbled:r({onMouseDown:!0}),captured:r({onMouseDownCapture:!0})}},mouseMove:{phasedRegistrationNames:{bubbled:r({onMouseMove:!0}),captured:r({onMouseMoveCapture:!0})}},mouseOut:{phasedRegistrationNames:{bubbled:r({onMouseOut:!0}),captured:r({onMouseOutCapture:!0})}},mouseOver:{phasedRegistrationNames:{bubbled:r({onMouseOver:!0}),captured:r({onMouseOverCapture:!0})}},mouseUp:{phasedRegistrationNames:{bubbled:r({onMouseUp:!0}),captured:r({onMouseUpCapture:!0})}},paste:{phasedRegistrationNames:{bubbled:r({onPaste:!0}),captured:r({onPasteCapture:!0})}},reset:{phasedRegistrationNames:{bubbled:r({onReset:!0}),captured:r({onResetCapture:!0})}},scroll:{phasedRegistrationNames:{bubbled:r({onScroll:!0}),captured:r({onScrollCapture:!0})}},submit:{phasedRegistrationNames:{bubbled:r({onSubmit:!0}),captured:r({onSubmitCapture:!0})}},touchCancel:{phasedRegistrationNames:{bubbled:r({onTouchCancel:!0}),captured:r({onTouchCancelCapture:!0})}},touchEnd:{phasedRegistrationNames:{bubbled:r({onTouchEnd:!0}),captured:r({onTouchEndCapture:!0})}},touchMove:{phasedRegistrationNames:{bubbled:r({onTouchMove:!0}),captured:r({onTouchMoveCapture:!0})}},touchStart:{phasedRegistrationNames:{bubbled:r({onTouchStart:!0}),captured:r({onTouchStartCapture:!0})}},wheel:{phasedRegistrationNames:{bubbled:r({onWheel:!0}),captured:r({onWheelCapture:!0})}}},v={topBlur:u.blur,topClick:u.click,topContextMenu:u.contextMenu,topCopy:u.copy,topCut:u.cut,topDoubleClick:u.doubleClick,topDrag:u.drag,topDragEnd:u.dragEnd,topDragEnter:u.dragEnter,topDragExit:u.dragExit,topDragLeave:u.dragLeave,topDragOver:u.dragOver,topDragStart:u.dragStart,topDrop:u.drop,topError:u.error,topFocus:u.focus,topInput:u.input,topKeyDown:u.keyDown,topKeyPress:u.keyPress,topKeyUp:u.keyUp,topLoad:u.load,topMouseDown:u.mouseDown,topMouseMove:u.mouseMove,topMouseOut:u.mouseOut,topMouseOver:u.mouseOver,topMouseUp:u.mouseUp,topPaste:u.paste,topReset:u.reset,topScroll:u.scroll,topSubmit:u.submit,topTouchCancel:u.touchCancel,topTouchEnd:u.touchEnd,topTouchMove:u.touchMove,topTouchStart:u.touchStart,topWheel:u.wheel};for(var w in v)v[w].dependencies=[w];var x={eventTypes:u,executeDispatch:function(a,b,d){var f=e.executeDispatch(a,b,d);"production"!==c.env.NODE_ENV?s("boolean"!=typeof f,"Returning `false` from an event handler is deprecated and will be ignored in a future release. Instead, manually call e.stopPropagation() or e.preventDefault(), as appropriate."):null,f===!1&&(a.stopPropagation(),a.preventDefault())},extractEvents:function(a,b,d,e){var r=v[a];if(!r)return null;var s;switch(a){case t.topInput:case t.topLoad:case t.topError:case t.topReset:case t.topSubmit:s=h;break;case t.topKeyPress:if(0===p(e))return null;case t.topKeyDown:case t.topKeyUp:s=j;break;case t.topBlur:case t.topFocus:s=i;break;case t.topClick:if(2===e.button)return null;case t.topContextMenu:case t.topDoubleClick:case t.topMouseDown:case t.topMouseMove:case t.topMouseOut:case t.topMouseOver:case t.topMouseUp:s=k;break;case t.topDrag:case t.topDragEnd:case t.topDragEnter:case t.topDragExit:case t.topDragLeave:case t.topDragOver:case t.topDragStart:case t.topDrop:s=l;break;case t.topTouchCancel:case t.topTouchEnd:case t.topTouchMove:case t.topTouchStart:s=m;break;case t.topScroll:s=n;break;case t.topWheel:s=o;break;case t.topCopy:case t.topCut:case t.topPaste:s=g}"production"!==c.env.NODE_ENV?q(s,"SimpleEventPlugin: Unhandled event type, `%s`.",a):q(s);var u=s.getPooled(r,d,e);return f.accumulateTwoPhaseDispatches(u),u}};b.exports=x}).call(this,a("_process"))},{"./EventConstants":123,"./EventPluginUtils":127,"./EventPropagators":128,"./SyntheticClipboardEvent":203,"./SyntheticDragEvent":205,"./SyntheticEvent":206,"./SyntheticFocusEvent":207,"./SyntheticKeyboardEvent":209,"./SyntheticMouseEvent":210,"./SyntheticTouchEvent":211,"./SyntheticUIEvent":212,"./SyntheticWheelEvent":213,"./getEventCharCode":235,"./invariant":247,"./keyOf":254,"./warning":267,_process:91}],203:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticEvent"),e={clipboardData:function(a){return"clipboardData"in a?a.clipboardData:window.clipboardData}};d.augmentClass(c,e),b.exports=c},{"./SyntheticEvent":206}],204:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticEvent"),e={data:null};d.augmentClass(c,e),b.exports=c},{"./SyntheticEvent":206}],205:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticMouseEvent"),e={dataTransfer:null};d.augmentClass(c,e),b.exports=c},{"./SyntheticMouseEvent":210}],206:[function(a,b){"use strict";function c(a,b,c){this.dispatchConfig=a,this.dispatchMarker=b,this.nativeEvent=c;var d=this.constructor.Interface;for(var e in d)if(d.hasOwnProperty(e)){var g=d[e];this[e]=g?g(c):c[e]}var h=null!=c.defaultPrevented?c.defaultPrevented:c.returnValue===!1;this.isDefaultPrevented=h?f.thatReturnsTrue:f.thatReturnsFalse,this.isPropagationStopped=f.thatReturnsFalse}var d=a("./PooledClass"),e=a("./Object.assign"),f=a("./emptyFunction"),g=a("./getEventTarget"),h={type:null,target:g,currentTarget:f.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};e(c.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a.preventDefault?a.preventDefault():a.returnValue=!1,this.isDefaultPrevented=f.thatReturnsTrue},stopPropagation:function(){var a=this.nativeEvent;a.stopPropagation?a.stopPropagation():a.cancelBubble=!0,this.isPropagationStopped=f.thatReturnsTrue},persist:function(){this.isPersistent=f.thatReturnsTrue},isPersistent:f.thatReturnsFalse,destructor:function(){var a=this.constructor.Interface;for(var b in a)this[b]=null;this.dispatchConfig=null,this.dispatchMarker=null,this.nativeEvent=null}}),c.Interface=h,c.augmentClass=function(a,b){var c=this,f=Object.create(c.prototype);e(f,a.prototype),a.prototype=f,a.prototype.constructor=a,a.Interface=e({},c.Interface,b),a.augmentClass=c.augmentClass,d.addPoolingTo(a,d.threeArgumentPooler)},d.addPoolingTo(c,d.threeArgumentPooler),b.exports=c},{"./Object.assign":135,"./PooledClass":136,"./emptyFunction":228,"./getEventTarget":238}],207:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticUIEvent"),e={relatedTarget:null};d.augmentClass(c,e),b.exports=c},{"./SyntheticUIEvent":212}],208:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticEvent"),e={data:null};d.augmentClass(c,e),b.exports=c},{"./SyntheticEvent":206}],209:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticUIEvent"),e=a("./getEventCharCode"),f=a("./getEventKey"),g=a("./getEventModifierState"),h={key:f,location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:g,charCode:function(a){return"keypress"===a.type?e(a):0},keyCode:function(a){return"keydown"===a.type||"keyup"===a.type?a.keyCode:0},which:function(a){return"keypress"===a.type?e(a):"keydown"===a.type||"keyup"===a.type?a.keyCode:0}};d.augmentClass(c,h),b.exports=c},{"./SyntheticUIEvent":212,"./getEventCharCode":235,"./getEventKey":236,"./getEventModifierState":237}],210:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticUIEvent"),e=a("./ViewportMetrics"),f=a("./getEventModifierState"),g={screenX:null,screenY:null,clientX:null,clientY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:f,button:function(a){var b=a.button;return"which"in a?b:2===b?2:4===b?1:0},buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},pageX:function(a){return"pageX"in a?a.pageX:a.clientX+e.currentScrollLeft},pageY:function(a){return"pageY"in a?a.pageY:a.clientY+e.currentScrollTop}};d.augmentClass(c,g),b.exports=c},{"./SyntheticUIEvent":212,"./ViewportMetrics":215,"./getEventModifierState":237}],211:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticUIEvent"),e=a("./getEventModifierState"),f={touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:e};d.augmentClass(c,f),b.exports=c},{"./SyntheticUIEvent":212,"./getEventModifierState":237}],212:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticEvent"),e=a("./getEventTarget"),f={view:function(a){if(a.view)return a.view;var b=e(a);if(null!=b&&b.window===b)return b;var c=b.ownerDocument;return c?c.defaultView||c.parentWindow:window},detail:function(a){return a.detail||0}};d.augmentClass(c,f),b.exports=c},{"./SyntheticEvent":206,"./getEventTarget":238}],213:[function(a,b){"use strict";function c(a,b,c){d.call(this,a,b,c)}var d=a("./SyntheticMouseEvent"),e={deltaX:function(a){return"deltaX"in a?a.deltaX:"wheelDeltaX"in a?-a.wheelDeltaX:0},deltaY:function(a){return"deltaY"in a?a.deltaY:"wheelDeltaY"in a?-a.wheelDeltaY:"wheelDelta"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null};d.augmentClass(c,e),b.exports=c},{"./SyntheticMouseEvent":210}],214:[function(a,b){(function(c){"use strict";var d=a("./invariant"),e={reinitializeTransaction:function(){this.transactionWrappers=this.getTransactionWrappers(),this.wrapperInitData?this.wrapperInitData.length=0:this.wrapperInitData=[],this._isInTransaction=!1},_isInTransaction:!1,getTransactionWrappers:null,isInTransaction:function(){return!!this._isInTransaction},perform:function(a,b,e,f,g,h,i,j){"production"!==c.env.NODE_ENV?d(!this.isInTransaction(),"Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction."):d(!this.isInTransaction());var k,l;try{this._isInTransaction=!0,k=!0,this.initializeAll(0),l=a.call(b,e,f,g,h,i,j),k=!1}finally{try{if(k)try{this.closeAll(0)}catch(m){}else this.closeAll(0)}finally{this._isInTransaction=!1}}return l},initializeAll:function(a){for(var b=this.transactionWrappers,c=a;c<b.length;c++){var d=b[c];try{this.wrapperInitData[c]=f.OBSERVED_ERROR,this.wrapperInitData[c]=d.initialize?d.initialize.call(this):null}finally{if(this.wrapperInitData[c]===f.OBSERVED_ERROR)try{this.initializeAll(c+1)}catch(e){}}}},closeAll:function(a){"production"!==c.env.NODE_ENV?d(this.isInTransaction(),"Transaction.closeAll(): Cannot close transaction when none are open."):d(this.isInTransaction());for(var b=this.transactionWrappers,e=a;e<b.length;e++){var g,h=b[e],i=this.wrapperInitData[e];try{g=!0,i!==f.OBSERVED_ERROR&&h.close&&h.close.call(this,i),g=!1}finally{if(g)try{this.closeAll(e+1)}catch(j){}}}this.wrapperInitData.length=0}},f={Mixin:e,OBSERVED_ERROR:{}};b.exports=f}).call(this,a("_process"))},{"./invariant":247,_process:91}],215:[function(a,b){"use strict";var c=a("./getUnboundedScrollPosition"),d={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(){var a=c(window);d.currentScrollLeft=a.x,d.currentScrollTop=a.y}};b.exports=d},{"./getUnboundedScrollPosition":243}],216:[function(a,b){(function(c){"use strict";function d(a,b){if("production"!==c.env.NODE_ENV?e(null!=b,"accumulateInto(...): Accumulated items must not be null or undefined."):e(null!=b),null==a)return b;var d=Array.isArray(a),f=Array.isArray(b);return d&&f?(a.push.apply(a,b),a):d?(a.push(b),a):f?[a].concat(b):[a,b]}var e=a("./invariant");b.exports=d}).call(this,a("_process"))},{"./invariant":247,_process:91}],217:[function(a,b){"use strict";function c(a){for(var b=1,c=0,e=0;e<a.length;e++)b=(b+a.charCodeAt(e))%d,c=(c+b)%d;return b|c<<16}var d=65521;b.exports=c},{}],218:[function(a,b){function c(a){return a.replace(d,function(a,b){return b.toUpperCase()})}var d=/-(.)/g;b.exports=c},{}],219:[function(a,b){"use strict";function c(a){return d(a.replace(e,"ms-"))}var d=a("./camelize"),e=/^-ms-/;b.exports=c},{"./camelize":218}],220:[function(a,b){(function(c){"use strict";function d(a,b){"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?h(!a.ref,"You are calling cloneWithProps() on a child with a ref. This is dangerous because you're creating a new child which will not be added as a ref to its parent."):null);var d=f.mergeProps(b,a.props);return!d.hasOwnProperty(i)&&a.props.hasOwnProperty(i)&&(d.children=a.props.children),e.createElement(a.type,d)}var e=a("./ReactElement"),f=a("./ReactPropTransferer"),g=a("./keyOf"),h=a("./warning"),i=g({children:null});b.exports=d}).call(this,a("_process"))},{"./ReactElement":164,"./ReactPropTransferer":182,"./keyOf":254,"./warning":267,_process:91}],221:[function(a,b){function c(a,b){return a&&b?a===b?!0:d(a)?!1:d(b)?c(a,b.parentNode):a.contains?a.contains(b):a.compareDocumentPosition?!!(16&a.compareDocumentPosition(b)):!1:!1}var d=a("./isTextNode");b.exports=c},{"./isTextNode":251}],222:[function(a,b){function c(a){return!!a&&("object"==typeof a||"function"==typeof a)&&"length"in a&&!("setInterval"in a)&&"number"!=typeof a.nodeType&&(Array.isArray(a)||"callee"in a||"item"in a)}function d(a){return c(a)?Array.isArray(a)?a.slice():e(a):[a]}var e=a("./toArray");b.exports=d},{"./toArray":264}],223:[function(a,b){(function(c){"use strict";function d(a){var b=f.createFactory(a),d=e.createClass({displayName:"ReactFullPageComponent"+a,componentWillUnmount:function(){"production"!==c.env.NODE_ENV?g(!1,"%s tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.",this.constructor.displayName):g(!1)},render:function(){return b(this.props)}});return d}var e=a("./ReactCompositeComponent"),f=a("./ReactElement"),g=a("./invariant");b.exports=d}).call(this,a("_process"))},{"./ReactCompositeComponent":146,"./ReactElement":164,"./invariant":247,_process:91}],224:[function(a,b){(function(c){function d(a){var b=a.match(k);return b&&b[1].toLowerCase()}function e(a,b){var e=j;"production"!==c.env.NODE_ENV?i(!!j,"createNodesFromMarkup dummy not initialized"):i(!!j);var f=d(a),k=f&&h(f);if(k){e.innerHTML=k[1]+a+k[2];for(var l=k[0];l--;)e=e.lastChild}else e.innerHTML=a;var m=e.getElementsByTagName("script");m.length&&("production"!==c.env.NODE_ENV?i(b,"createNodesFromMarkup(...): Unexpected <script> element rendered."):i(b),g(m).forEach(b));for(var n=g(e.childNodes);e.lastChild;)e.removeChild(e.lastChild);return n}var f=a("./ExecutionEnvironment"),g=a("./createArrayFrom"),h=a("./getMarkupWrap"),i=a("./invariant"),j=f.canUseDOM?document.createElement("div"):null,k=/^\s*<(\w+)/;b.exports=e}).call(this,a("_process"))},{"./ExecutionEnvironment":129,"./createArrayFrom":222,"./getMarkupWrap":239,"./invariant":247,_process:91}],225:[function(a,b){function c(a){return"object"==typeof a?Object.keys(a).filter(function(b){return a[b]}).join(" "):Array.prototype.join.call(arguments," ")}b.exports=c},{}],226:[function(a,b){"use strict";function c(a,b){var c=null==b||"boolean"==typeof b||""===b;if(c)return"";var d=isNaN(b);return d||0===b||e.hasOwnProperty(a)&&e[a]?""+b:("string"==typeof b&&(b=b.trim()),b+"px")}var d=a("./CSSProperty"),e=d.isUnitlessNumber;b.exports=c},{"./CSSProperty":111}],227:[function(a,b){(function(c){function d(a,b,d,g,h){var i=!1;if("production"!==c.env.NODE_ENV){var j=function(){return"production"!==c.env.NODE_ENV?f(i,a+"."+b+" will be deprecated in a future version. "+("Use "+a+"."+d+" instead.")):null,i=!0,h.apply(g,arguments)};return j.displayName=a+"_"+b,e(j,h)}return h}var e=a("./Object.assign"),f=a("./warning");b.exports=d}).call(this,a("_process"))},{"./Object.assign":135,"./warning":267,_process:91}],228:[function(a,b){function c(a){return function(){return a}}function d(){}d.thatReturns=c,d.thatReturnsFalse=c(!1),d.thatReturnsTrue=c(!0),d.thatReturnsNull=c(null),d.thatReturnsThis=function(){return this},d.thatReturnsArgument=function(a){return a},b.exports=d},{}],229:[function(a,b){(function(a){"use strict";var c={};"production"!==a.env.NODE_ENV&&Object.freeze(c),b.exports=c}).call(this,a("_process"))},{_process:91}],230:[function(a,b){"use strict";function c(a){return e[a]}function d(a){return(""+a).replace(f,c)}var e={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},f=/[&><"']/g;b.exports=d},{}],231:[function(a,b){(function(c){"use strict";function d(a,b,d){var e=a,g=!e.hasOwnProperty(d);if("production"!==c.env.NODE_ENV?h(g,"flattenChildren(...): Encountered two children with the same key, `%s`. Child keys must be unique; when two children share a key, only the first child will be used.",d):null,g&&null!=b){var i,j=typeof b;i="string"===j?f(b):"number"===j?f(""+b):b,e[d]=i}}function e(a){if(null==a)return a;var b={};return g(a,d,b),b}var f=a("./ReactTextComponent"),g=a("./traverseAllChildren"),h=a("./warning");b.exports=e}).call(this,a("_process"))},{"./ReactTextComponent":193,"./traverseAllChildren":265,"./warning":267,_process:91}],232:[function(a,b){"use strict";function c(a){try{a.focus()}catch(b){}}b.exports=c},{}],233:[function(a,b){"use strict";var c=function(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)};b.exports=c},{}],234:[function(a,b){function c(){try{return document.activeElement||document.body}catch(a){return document.body}}b.exports=c},{}],235:[function(a,b){"use strict";function c(a){var b,c=a.keyCode;return"charCode"in a?(b=a.charCode,0===b&&13===c&&(b=13)):b=c,b>=32||13===b?b:0}b.exports=c},{}],236:[function(a,b){"use strict";function c(a){if(a.key){var b=e[a.key]||a.key;if("Unidentified"!==b)return b}if("keypress"===a.type){var c=d(a);return 13===c?"Enter":String.fromCharCode(c)}return"keydown"===a.type||"keyup"===a.type?f[a.keyCode]||"Unidentified":""}var d=a("./getEventCharCode"),e={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},f={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"};b.exports=c},{"./getEventCharCode":235}],237:[function(a,b){"use strict";function c(a){var b=this,c=b.nativeEvent;if(c.getModifierState)return c.getModifierState(a);var d=e[a];return d?!!c[d]:!1}function d(){return c}var e={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};b.exports=d},{}],238:[function(a,b){"use strict";function c(a){var b=a.target||a.srcElement||window;return 3===b.nodeType?b.parentNode:b}b.exports=c},{}],239:[function(a,b){(function(c){function d(a){return"production"!==c.env.NODE_ENV?f(!!g,"Markup wrapping node not initialized"):f(!!g),m.hasOwnProperty(a)||(a="*"),h.hasOwnProperty(a)||(g.innerHTML="*"===a?"<link />":"<"+a+"></"+a+">",h[a]=!g.firstChild),h[a]?m[a]:null}var e=a("./ExecutionEnvironment"),f=a("./invariant"),g=e.canUseDOM?document.createElement("div"):null,h={circle:!0,defs:!0,ellipse:!0,g:!0,line:!0,linearGradient:!0,path:!0,polygon:!0,polyline:!0,radialGradient:!0,rect:!0,stop:!0,text:!0},i=[1,'<select multiple="true">',"</select>"],j=[1,"<table>","</table>"],k=[3,"<table><tbody><tr>","</tr></tbody></table>"],l=[1,"<svg>","</svg>"],m={"*":[1,"?<div>","</div>"],area:[1,"<map>","</map>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],legend:[1,"<fieldset>","</fieldset>"],param:[1,"<object>","</object>"],tr:[2,"<table><tbody>","</tbody></table>"],optgroup:i,option:i,caption:j,colgroup:j,tbody:j,tfoot:j,thead:j,td:k,th:k,circle:l,defs:l,ellipse:l,g:l,line:l,linearGradient:l,path:l,polygon:l,polyline:l,radialGradient:l,rect:l,stop:l,text:l};b.exports=d}).call(this,a("_process"))},{"./ExecutionEnvironment":129,"./invariant":247,_process:91}],240:[function(a,b){"use strict";function c(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function d(a){for(;a;){if(a.nextSibling)return a.nextSibling;a=a.parentNode}}function e(a,b){for(var e=c(a),f=0,g=0;e;){if(3==e.nodeType){if(g=f+e.textContent.length,b>=f&&g>=b)return{node:e,offset:b-f};f=g}e=c(d(e))}}b.exports=e},{}],241:[function(a,b){"use strict";function c(a){return a?a.nodeType===d?a.documentElement:a.firstChild:null}var d=9;b.exports=c},{}],242:[function(a,b){"use strict";function c(){return!e&&d.canUseDOM&&(e="textContent"in document.documentElement?"textContent":"innerText"),e}var d=a("./ExecutionEnvironment"),e=null;b.exports=c},{"./ExecutionEnvironment":129}],243:[function(a,b){"use strict";function c(a){return a===window?{x:window.pageXOffset||document.documentElement.scrollLeft,y:window.pageYOffset||document.documentElement.scrollTop}:{x:a.scrollLeft,y:a.scrollTop}}b.exports=c},{}],244:[function(a,b){function c(a){return a.replace(d,"-$1").toLowerCase()}var d=/([A-Z])/g;b.exports=c},{}],245:[function(a,b){"use strict";function c(a){return d(a).replace(e,"-ms-")}var d=a("./hyphenate"),e=/^ms-/;b.exports=c},{"./hyphenate":244}],246:[function(a,b){(function(c){"use strict";function d(a,b){var d;if("production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?e(a&&("function"==typeof a.type||"string"==typeof a.type),"Only functions or strings can be mounted as React components."):null,a.type._mockedReactClassConstructor)){g._isLegacyCallWarningEnabled=!1;try{d=new a.type._mockedReactClassConstructor(a.props)}finally{g._isLegacyCallWarningEnabled=!0}f.isValidElement(d)&&(d=new d.type(d.props));var j=d.render;if(j)return j._isMockFunction&&!j._getMockImplementation()&&j.mockImplementation(i.getEmptyComponent),d.construct(a),d;a=i.getEmptyComponent()}return d="string"==typeof a.type?h.createInstanceForTag(a.type,a.props,b):new a.type(a.props),"production"!==c.env.NODE_ENV&&("production"!==c.env.NODE_ENV?e("function"==typeof d.construct&&"function"==typeof d.mountComponent&&"function"==typeof d.receiveComponent,"Only React Components can be mounted."):null),d.construct(a),d}var e=a("./warning"),f=a("./ReactElement"),g=a("./ReactLegacyElement"),h=a("./ReactNativeComponent"),i=a("./ReactEmptyComponent");b.exports=d}).call(this,a("_process"))},{"./ReactElement":164,"./ReactEmptyComponent":166,"./ReactLegacyElement":173,"./ReactNativeComponent":179,"./warning":267,_process:91}],247:[function(a,b){(function(a){"use strict";var c=function(b,c,d,e,f,g,h,i){if("production"!==a.env.NODE_ENV&&void 0===c)throw new Error("invariant requires an error message argument");if(!b){var j;if(void 0===c)j=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var k=[d,e,f,g,h,i],l=0;j=new Error("Invariant Violation: "+c.replace(/%s/g,function(){return k[l++]}))}throw j.framesToPop=1,j}};b.exports=c}).call(this,a("_process"))},{_process:91}],248:[function(a,b){"use strict";function c(a,b){if(!e.canUseDOM||b&&!("addEventListener"in document))return!1;var c="on"+a,f=c in document;if(!f){var g=document.createElement("div");g.setAttribute(c,"return;"),f="function"==typeof g[c]}return!f&&d&&"wheel"===a&&(f=document.implementation.hasFeature("Events.wheel","3.0")),f}var d,e=a("./ExecutionEnvironment");e.canUseDOM&&(d=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0),b.exports=c},{"./ExecutionEnvironment":129}],249:[function(a,b){function c(a){return!(!a||!("function"==typeof Node?a instanceof Node:"object"==typeof a&&"number"==typeof a.nodeType&&"string"==typeof a.nodeName))}b.exports=c},{}],250:[function(a,b){"use strict";function c(a){return a&&("INPUT"===a.nodeName&&d[a.type]||"TEXTAREA"===a.nodeName)}var d={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};b.exports=c},{}],251:[function(a,b){function c(a){return d(a)&&3==a.nodeType}var d=a("./isNode");b.exports=c},{"./isNode":249}],252:[function(a,b){"use strict";function c(a){a||(a="");var b,c=arguments.length;if(c>1)for(var d=1;c>d;d++)b=arguments[d],b&&(a=(a?a+" ":"")+b);return a}b.exports=c},{}],253:[function(a,b){(function(c){"use strict";var d=a("./invariant"),e=function(a){var b,e={};"production"!==c.env.NODE_ENV?d(a instanceof Object&&!Array.isArray(a),"keyMirror(...): Argument must be an object."):d(a instanceof Object&&!Array.isArray(a));for(b in a)a.hasOwnProperty(b)&&(e[b]=b);return e};b.exports=e}).call(this,a("_process"))},{"./invariant":247,_process:91}],254:[function(a,b){var c=function(a){var b;for(b in a)if(a.hasOwnProperty(b))return b;return null};b.exports=c},{}],255:[function(a,b){"use strict";function c(a,b,c){if(!a)return null;var e={};for(var f in a)d.call(a,f)&&(e[f]=b.call(c,a[f],f,a));return e}var d=Object.prototype.hasOwnProperty;b.exports=c},{}],256:[function(a,b){"use strict";function c(a){var b={};return function(c){return b.hasOwnProperty(c)?b[c]:b[c]=a.call(this,c)}}b.exports=c},{}],257:[function(a,b){(function(c){"use strict";function d(a){"production"!==c.env.NODE_ENV?e(a&&!/[^a-z0-9_]/.test(a),"You must provide an eventName using only the characters [a-z0-9_]"):e(a&&!/[^a-z0-9_]/.test(a))}var e=a("./invariant");b.exports=d}).call(this,a("_process"))},{"./invariant":247,_process:91}],258:[function(a,b){(function(c){"use strict";function d(a){return"production"!==c.env.NODE_ENV?f(e.isValidElement(a),"onlyChild must be passed a children with exactly one child."):f(e.isValidElement(a)),a}var e=a("./ReactElement"),f=a("./invariant");b.exports=d}).call(this,a("_process"))},{"./ReactElement":164,"./invariant":247,_process:91}],259:[function(a,b){"use strict";var c,d=a("./ExecutionEnvironment");d.canUseDOM&&(c=window.performance||window.msPerformance||window.webkitPerformance),b.exports=c||{}},{"./ExecutionEnvironment":129}],260:[function(a,b){var c=a("./performance");c&&c.now||(c=Date);var d=c.now.bind(c);b.exports=d},{"./performance":259}],261:[function(a,b){"use strict";var c=a("./ExecutionEnvironment"),d=/^[ \r\n\t\f]/,e=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,f=function(a,b){a.innerHTML=b};if(c.canUseDOM){var g=document.createElement("div");g.innerHTML=" ",""===g.innerHTML&&(f=function(a,b){if(a.parentNode&&a.parentNode.replaceChild(a,a),d.test(b)||"<"===b[0]&&e.test(b)){a.innerHTML=""+b;var c=a.firstChild;1===c.data.length?a.removeChild(c):c.deleteData(0,1)}else a.innerHTML=b})}b.exports=f},{"./ExecutionEnvironment":129}],262:[function(a,b){"use strict";function c(a,b){if(a===b)return!0;var c;for(c in a)if(a.hasOwnProperty(c)&&(!b.hasOwnProperty(c)||a[c]!==b[c]))return!1;for(c in b)if(b.hasOwnProperty(c)&&!a.hasOwnProperty(c))return!1;return!0}b.exports=c},{}],263:[function(a,b){"use strict";function c(a,b){return a&&b&&a.type===b.type&&a.key===b.key&&a._owner===b._owner?!0:!1}b.exports=c},{}],264:[function(a,b){(function(c){function d(a){var b=a.length;if("production"!==c.env.NODE_ENV?e(!Array.isArray(a)&&("object"==typeof a||"function"==typeof a),"toArray: Array-like object expected"):e(!Array.isArray(a)&&("object"==typeof a||"function"==typeof a)),"production"!==c.env.NODE_ENV?e("number"==typeof b,"toArray: Object needs a length property"):e("number"==typeof b),"production"!==c.env.NODE_ENV?e(0===b||b-1 in a,"toArray: Object should have keys for indices"):e(0===b||b-1 in a),a.hasOwnProperty)try{return Array.prototype.slice.call(a)}catch(d){}for(var f=Array(b),g=0;b>g;g++)f[g]=a[g];return f}var e=a("./invariant");b.exports=d}).call(this,a("_process"))},{"./invariant":247,_process:91}],265:[function(a,b){(function(c){"use strict";function d(a){return n[a]}function e(a,b){return a&&null!=a.key?g(a.key):b.toString(36)}function f(a){return(""+a).replace(o,d)
+}function g(a){return"$"+f(a)}function h(a,b,c){return null==a?0:p(a,"",0,b,c)}var i=a("./ReactElement"),j=a("./ReactInstanceHandles"),k=a("./invariant"),l=j.SEPARATOR,m=":",n={"=":"=0",".":"=1",":":"=2"},o=/[=.:]/g,p=function(a,b,d,f,h){var j,n,o=0;if(Array.isArray(a))for(var q=0;q<a.length;q++){var r=a[q];j=b+(b?m:l)+e(r,q),n=d+o,o+=p(r,j,n,f,h)}else{var s=typeof a,t=""===b,u=t?l+e(a,0):b;if(null==a||"boolean"===s)f(h,null,u,d),o=1;else if("string"===s||"number"===s||i.isValidElement(a))f(h,a,u,d),o=1;else if("object"===s){"production"!==c.env.NODE_ENV?k(!a||1!==a.nodeType,"traverseAllChildren(...): Encountered an invalid child; DOM elements are not valid children of React components."):k(!a||1!==a.nodeType);for(var v in a)a.hasOwnProperty(v)&&(j=b+(b?m:l)+g(v)+m+e(a[v],0),n=d+o,o+=p(a[v],j,n,f,h))}}return o};b.exports=h}).call(this,a("_process"))},{"./ReactElement":164,"./ReactInstanceHandles":172,"./invariant":247,_process:91}],266:[function(a,b){(function(c){"use strict";function d(a){return Array.isArray(a)?a.concat():a&&"object"==typeof a?g(new a.constructor,a):a}function e(a,b,d){"production"!==c.env.NODE_ENV?i(Array.isArray(a),"update(): expected target of %s to be an array; got %s.",d,a):i(Array.isArray(a));var e=b[d];"production"!==c.env.NODE_ENV?i(Array.isArray(e),"update(): expected spec of %s to be an array; got %s. Did you forget to wrap your parameter in an array?",d,e):i(Array.isArray(e))}function f(a,b){if("production"!==c.env.NODE_ENV?i("object"==typeof b,"update(): You provided a key path to update() that did not contain one of %s. Did you forget to include {%s: ...}?",p.join(", "),m):i("object"==typeof b),b.hasOwnProperty(m))return"production"!==c.env.NODE_ENV?i(1===Object.keys(b).length,"Cannot have more than one key in an object with %s",m):i(1===Object.keys(b).length),b[m];var h=d(a);if(b.hasOwnProperty(n)){var r=b[n];"production"!==c.env.NODE_ENV?i(r&&"object"==typeof r,"update(): %s expects a spec of type 'object'; got %s",n,r):i(r&&"object"==typeof r),"production"!==c.env.NODE_ENV?i(h&&"object"==typeof h,"update(): %s expects a target of type 'object'; got %s",n,h):i(h&&"object"==typeof h),g(h,b[n])}b.hasOwnProperty(j)&&(e(a,b,j),b[j].forEach(function(a){h.push(a)})),b.hasOwnProperty(k)&&(e(a,b,k),b[k].forEach(function(a){h.unshift(a)})),b.hasOwnProperty(l)&&("production"!==c.env.NODE_ENV?i(Array.isArray(a),"Expected %s target to be an array; got %s",l,a):i(Array.isArray(a)),"production"!==c.env.NODE_ENV?i(Array.isArray(b[l]),"update(): expected spec of %s to be an array of arrays; got %s. Did you forget to wrap your parameters in an array?",l,b[l]):i(Array.isArray(b[l])),b[l].forEach(function(a){"production"!==c.env.NODE_ENV?i(Array.isArray(a),"update(): expected spec of %s to be an array of arrays; got %s. Did you forget to wrap your parameters in an array?",l,b[l]):i(Array.isArray(a)),h.splice.apply(h,a)})),b.hasOwnProperty(o)&&("production"!==c.env.NODE_ENV?i("function"==typeof b[o],"update(): expected spec of %s to be a function; got %s.",o,b[o]):i("function"==typeof b[o]),h=b[o](h));for(var s in b)q.hasOwnProperty(s)&&q[s]||(h[s]=f(a[s],b[s]));return h}var g=a("./Object.assign"),h=a("./keyOf"),i=a("./invariant"),j=h({$push:null}),k=h({$unshift:null}),l=h({$splice:null}),m=h({$set:null}),n=h({$merge:null}),o=h({$apply:null}),p=[j,k,l,m,n,o],q={};p.forEach(function(a){q[a]=!0}),b.exports=f}).call(this,a("_process"))},{"./Object.assign":135,"./invariant":247,"./keyOf":254,_process:91}],267:[function(a,b){(function(c){"use strict";var d=a("./emptyFunction"),e=d;"production"!==c.env.NODE_ENV&&(e=function(a,b){for(var c=[],d=2,e=arguments.length;e>d;d++)c.push(arguments[d]);if(void 0===b)throw new Error("`warning(condition, format, ...args)` requires a warning message argument");if(!a){var f=0;console.warn("Warning: "+b.replace(/%s/g,function(){return c[f++]}))}}),b.exports=e}).call(this,a("_process"))},{"./emptyFunction":228,_process:91}],268:[function(a){"use strict";a("lodash");var b=a("../src/reactTemplates");window.reactTemplates=b},{"../src/reactTemplates":271,lodash:107}],269:[function(a,b){"use strict";function c(a,b){if(!b)return{col:1,line:1};var c=a.substring(0,b.startIndex).split("\n");return{line:c.length,col:c[c.length-1].length+1}}function d(a,b,c,f,g){Error.captureStackTrace(this,d),this.name="RTCodeError",this.message=a||"",this.index=e(b),this.startOffset=e(b),this.endOffset=e(c),this.line=e(f),this.column=e(g)}function e(a){return void 0===a?-1:a}function f(a,b,e){var f,g=c(b.html,e);return f=e.data?e.startIndex+e.data.length:e.next?e.next.startIndex:b.html.length,new d(a,e.startIndex,f,g.line,g.col)}Object.defineProperty(Error.prototype,"message",{configurable:!0,enumerable:!0}),Object.defineProperty(Error.prototype,"stack",{configurable:!0,enumerable:!0}),d.prototype=Object.create(Error.prototype),d.build=f,d.norm=e,d.prototype.toIssue=function(){},b.exports={RTCodeError:d}},{}],270:[function(a,b){"use strict";var c=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","defs","ellipse","g","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"],d=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","defs","ellipse","g","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan","injection"],e=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","defs","ellipse","g","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan","injection"],f=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","defs","g","line","linearGradient","path","polygon","polyline","radialGradient","rect","stop","svg","text","injection"],g={"0.12.2":c,"0.12.1":c,"0.12.0":c,"0.11.2":d,"0.11.1":e,"0.11.0":e,"0.10.0":f};b.exports=g},{}],271:[function(a,b){"use strict";function c(a){switch(a.options.targetVersion){case"0.11.2":case"0.11.1":case"0.11.0":case"0.10.0":return!1;default:return!0}}function d(a){var b="";return t.forEach(a,function(a){b+=a&&0!==a.indexOf(" /*")?","+a:a},this),b}function e(a,b,c){for(var d="",e=!0,f="text"===a.type?",":"+";-1!==c.indexOf("{");){var g=c.indexOf("{"),h=c.substr(0,g);h&&(d+=(e?"":f)+JSON.stringify(h),e=!1);var i,j=1;for(i=g+1;i<c.length&&j>0;i++)j+=Y[c.charAt(i)]||0;if(0!==j)throw z.build("Failed to parse text '"+c+"'",b,a);var k=0!==g||i!==c.length-1;d+=(e?"":f)+(k?"(":"")+c.substr(g+1,i-g-2)+(k?")":""),e=!1,c=c.substr(i)}return c&&(d+=(e?"":f)+JSON.stringify(c)),""===d&&(d="true"),d}function f(a){return a=a.trim(),a.length&&"{"===a.charAt(0)&&"}"===a.charAt(a.length-1)}function g(a,b,c,d){d=d||a.boundParams;var e=b.replace(",","")+(a.injectedFunctions.length+1),f="function "+e+"("+d.join(",");return f+=") {\n"+c+"\n}\n",a.injectedFunctions.push(f),e}function h(a,b){var c={};return t.forOwn(a.attribs,function(d,h){var i=X[h.toLowerCase()]||h;if(c.hasOwnProperty(i))throw z.build("duplicate definition of "+i+" "+JSON.stringify(a.attribs),b,a);if(0!==h.indexOf("on")||f(d))if("style"!==h||f(d))h===S?c[i]=D({classSet:d}):0!==h.indexOf("rt-")&&(c[i]=e(a,b,d.trim()));else{var j=d.trim().split(";");j=t.compact(t.map(j,function(a){if(a=a.trim(),!a||-1===a.indexOf(":"))return null;var b=a.split(":");return b[0]=b[0].trim(),b[1]=b.slice(1).join(":").trim(),b}));var k=[];t.forEach(j,function(c){k.push(x.convertToCamelCase(c[0])+" : "+e(a,b,c[1].trim()))}),c[i]="{"+k.join(",")+"}"}else{var l=d.split("=>");if(2!==l.length)throw z.build("when using 'on' events, use lambda '(p1,p2)=>body' notation or use {} to return a callback function. error: ["+h+"='"+d+"']",b,a);var m=l[0].replace("(","").replace(")","").trim(),n=l[1].trim(),o=b.boundParams;""!==m.trim()&&(o=o.concat([m.trim()]));var p=g(b,h,n,o);c[i]=p+".bind("+["this"].concat(b.boundParams).join(",")+")"}}),"{"+t.map(c,function(a,b){return JSON.stringify(b)+" : "+a}).join(",")+"}"}function i(a,b){var d=t.contains(w[b.options.targetVersion],a);return c(b)?(d=d||a.match(/^\w+(-\w+)$/),d?"'"+a+"'":a):d?"React.DOM."+a:a}function j(a,b){return{boundParams:[],injectedFunctions:[],html:a,options:b}}function k(a){return t.any(a.children,function(a){return"tag"===a.type&&a.attribs[Q]})}function l(a,b){if("tag"===a.type||"style"===a.type){b={boundParams:t.clone(b.boundParams),injectedFunctions:b.injectedFunctions,html:b.html,options:b.options};var f={name:i(a.name,b)};if(a.attribs[T]&&(f.scopeMapping={},f.scopeName="",t.each(b.boundParams,function(a){f.scopeMapping[a]=a}),t.each(a.attribs[T].split(";"),function(c){var d=c.split(" as ");if(d.length<2)throw z.build("invalid scope part '"+c+"'",b,a);var e=d[1].trim();q(e,a,b),x.addIfNotThere(b.boundParams,e),f.scopeName+=x.capitalize(e),f.scopeMapping[e]=d[0].trim(),q(f.scopeMapping[e],a,b)})),a.attribs[Q]){var j=a.attribs[Q].split(" in ");if(2!==j.length)throw z.build("rt-repeat invalid 'in' expression '"+a.attribs[Q]+"'",b,a);f.item=j[0].trim(),f.collection=j[1].trim(),q(f.item,a,b),q(f.collection,a,b),x.addIfNotThere(b.boundParams,f.item),x.addIfNotThere(b.boundParams,f.item+"Index")}if(f.props=h(a,b),a.attribs[U]&&(f.props=C({generatedProps:f.props,rtProps:a.attribs[U]})),a.attribs[R]&&(f.condition=a.attribs[R].trim()),f.children=a.children?d(t.map(a.children,function(a){var c=l(a,b);return q(c,a,b),c})):"",f.body=k(a)?c(b)?H(f):F(f):c(b)?G(f):E(f),a.attribs[Q]&&(f.repeatFunction=g(b,"repeat"+x.capitalize(f.item),"return "+f.body),f.repeatBinds=["this"].concat(t.reject(b.boundParams,function(a){return a===f.item||a===f.item+"Index"})),f.body=A(f)),a.attribs[R]&&(f.body=B(f)),a.attribs[T]){var m=g(b,"scope"+f.scopeName,"return "+f.body,t.keys(f.scopeMapping));f.body=m+".apply(this, ["+t.values(f.scopeMapping).join(",")+"])"}return f.body}return"comment"===a.type?I(a):"text"===a.type?a.data.trim()?e(a,b,a.data):"":void 0}function m(a){return"tag"===a.type}function n(a){return t(a).map(function(a){var b=[];return a.children=n(a.children),"tag"===a.type&&t.contains(P,a.name)&&(b=t.filter(a.children,m),t.forEach(b,function(b){b.parent=a}),a.children=t.reject(a.children,m)),[a].concat(b)}).flatten().value()}function o(a,b){var c=s.load(a,{lowerCaseTags:!1,lowerCaseAttributeNames:!1,xmlMode:!0,withStartIndices:!0});b=t.defaults({},b,V);var d=b.defines?b.defines:{"react/addons":"React",lodash:"_"},e=j(a,b),f=t.filter(c.root()[0].children,{type:"tag"});if(f=n(f),!f||0===f.length)throw new z("Document should have a root element");var g=null;if(t.forEach(f,function(a){if("rt-require"===a.name){if(!a.attribs.dependency||!a.attribs.as)throw z.build("rt-require needs 'dependency' and 'as' attributes",e,a);if(a.children.length)throw z.build("rt-require may have no children",e,a);d[a.attribs.dependency]=a.attribs.as}else{if(null!==g)throw z.build("Document should have no more than a single root element",e,a);g=a}}),null===g)throw z.build("Document should have a single root element",e,c.root()[0]);var h,i=l(g,e),k=t(d).keys().map(function(a){return'"'+a+'"'}).value().join(","),m=t(d).values().value().join(",");h="typescript"===b.modules?t(d).map(function(a,b){return"import "+a+" = require('"+b+"');"}).join("\n"):"es6"===b.modules?t(d).map(function(a,b){return"import {"+a+"} from '"+b+"';"}).join("\n"):t(d).map(function(a,b){return"var "+a+" = require('"+b+"');"}).join("\n");var o={body:i,injectedFunctions:"",requireNames:m,requirePaths:k,vars:h,name:b.name};o.injectedFunctions=e.injectedFunctions.join("\n");var q=p(o,b);if("typescript"!==b.modules)try{var r=u.parse(q,{range:!0,tokens:!0,comment:!0});r=v.attachComments(r,r.comments,r.tokens),q=v.generate(r,{comment:!0})}catch(w){throw new z(w.message,w.index,-1)}return q}function p(a,b){var c=O[b.modules];return c(a)}function q(a,b,c){try{u.parse(a)}catch(d){throw z.build(d.description,c,b)}}function r(a){return a.replace(/-/g,"_")}var s=a("cheerio"),t=a("lodash"),u=a("esprima-harmony"),v=a("escodegen"),w=a("./reactDOMSupport"),x=a("./stringUtils"),y=a("./RTCodeError"),z=y.RTCodeError,A=t.template("_.map(<%= collection %>,<%= repeatFunction %>.bind(<%= repeatBinds %>))"),B=t.template("((<%= condition %>)?(<%= body %>):null)"),C=t.template("_.merge({}, <%= generatedProps %>, <%= rtProps %>)"),D=t.template("React.addons.classSet(<%= classSet %>)"),E=t.template("<%= name %>(<%= props %><%= children %>)"),F=t.template("<%= name %>.apply(this,_.flatten([<%= props %><%= children %>]))"),G=t.template("React.createElement(<%= name %>,<%= props %><%= children %>)"),H=t.template("React.createElement.apply(this,_.flatten([<%= name %>,<%= props %><%= children %>]))"),I=t.template(" /* <%= data %> */ "),J=t.template("define(<%= name ? '\"'+name + '\", ' : '' %>[<%= requirePaths %>], function (<%= requireNames %>) {\n'use strict';\n <%= injectedFunctions %>\nreturn function(){ return <%= body %>};\n});"),K=t.template("'use strict';\n<%= vars %>\n\n<%= injectedFunctions %>\nmodule.exports = function(){ return <%= body %>};\n"),L=t.template("<%= vars %>\n\n<%= injectedFunctions %>\nexport default function(){ return <%= body %>}\n"),M=t.template("var <%= name %> = function () {\n<%= injectedFunctions %>\nreturn <%= body %>\n};\n"),N=t.template("<%= vars %>\n\n<%= injectedFunctions %>\nvar fn = function() { return <%= body %> };\nexport = fn\n"),O={amd:J,commonjs:K,typescript:N,es6:L,none:M},P=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],Q="rt-repeat",R="rt-if",S="rt-class",T="rt-scope",U="rt-props",V={modules:"amd",version:!1,force:!1,format:"stylish",targetVersion:"0.12.2"},W=["accept","acceptCharset","accessKey","action","allowFullScreen","allowTransparency","alt","async","autoComplete","autoPlay","cellPadding","cellSpacing","charSet","checked","classID","className","cols","colSpan","content","contentEditable","contextMenu","controls","coords","crossOrigin","data","dateTime","defer","dir","disabled","download","draggable","encType","form","formNoValidate","frameBorder","height","hidden","href","hrefLang","htmlFor","httpEquiv","icon","id","label","lang","list","loop","manifest","max","maxLength","media","mediaGroup","method","min","multiple","muted","name","noValidate","open","pattern","placeholder","poster","preload","radioGroup","readOnly","rel","required","role","rows","rowSpan","sandbox","scope","scrolling","seamless","selected","shape","size","sizes","span","spellCheck","src","srcDoc","srcSet","start","step","style","tabIndex","target","title","type","useMap","value","width","wmode"],X={"class":"className","rt-class":"className"};t.forEach(W,function(a){a!==a.toLowerCase()&&(X[a.toLowerCase()]=a)});var Y={"{":1,"}":-1};b.exports={convertTemplateToReact:o,RTCodeError:z,normalizeName:r,_test:{convertText:e}}},{"./RTCodeError":269,"./reactDOMSupport":270,"./stringUtils":272,cheerio:1,escodegen:63,"esprima-harmony":81,lodash:107}],272:[function(a,b){"use strict";function c(a){return a.replace(/-([a-z])/g,function(a){return a[1].toUpperCase()})}function d(a){return a[0].toUpperCase()+a.slice(1)}function e(a,b){f.contains(a,b)||a.push(b)}var f=a("lodash");b.exports={convertToCamelCase:c,capitalize:d,addIfNotThere:e}},{lodash:107}],"react/addons":[function(a,b){b.exports=a("./lib/ReactWithAddons")},{"./lib/ReactWithAddons":198}]},{},[268]);
\ No newline at end of file