From d8855cdbb06cf471066e5e5ad857a5825440c79a Mon Sep 17 00:00:00 2001 From: Brandon Tilley Date: Sun, 18 May 2014 15:46:12 -0700 Subject: [PATCH] v1.0.1 --- build/fluxbox.min.js | 4 ++-- build/fluxbox.min.js.map | 2 +- examples/carousel/app/bundle.js | 4 ++-- examples/carousel/app/bundle.js.map | 2 +- examples/todo-basic/app/bundle.js | 12 ++++++------ examples/todo-basic/app/bundle.js.map | 2 +- package.json | 2 +- site/contents/examples/carousel/carousel-bundle.js | 4 ++-- site/contents/getting-started/todo-bundle.js | 12 ++++++------ 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/build/fluxbox.min.js b/build/fluxbox.min.js index 42f317c..1a5aed1 100644 --- a/build/fluxbox.min.js +++ b/build/fluxbox.min.js @@ -1,5 +1,5 @@ -!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):"object"==typeof exports?exports.Fluxbox=n():t.Fluxbox=n()}(this,function(){return function(t){function n(r){if(e[r])return e[r].exports;var i=e[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}var e={};return n.m=t,n.c=e,n.p="",n(0)}([function(t,n,e){var r=e(2),i=e(5),o=e(6),a=e(8),u=e(4),s={Dispatcher:r,Flux:i,FluxMixin:o,StoreWatchMixin:a,createStore:u,version:e(9).version};t.exports=s},function(t,n,e){var r;(function(t,i){(function(){function o(t,n,e){for(var r=(e||0)-1,i=t?t.length:0;++r-1?0:-1:t?0:-1}function u(t){var n=this.cache,e=typeof t;if("boolean"==e||null==t)n[t]=!0;else{"number"!=e&&"string"!=e&&(e="object");var r="number"==e?t:C+t,i=n[e]||(n[e]={});"object"==e?(i[r]||(i[r]=[])).push(t):i[r]=!0}}function s(t){return t.charCodeAt(0)}function l(t,n){for(var e=t.criteria,r=n.criteria,i=-1,o=e.length;++iu||"undefined"==typeof a)return 1;if(u>a||"undefined"==typeof u)return-1}}return t.index-n.index}function c(t){var n=-1,e=t.length,r=t[0],i=t[e/2|0],o=t[e-1];if(r&&"object"==typeof r&&i&&"object"==typeof i&&o&&"object"==typeof o)return!1;var a=h();a["false"]=a["null"]=a["true"]=a.undefined=!1;var s=h();for(s.array=t,s.cache=a,s.push=u;++ni?0:i);++r=E&&r===o,s=[];if(u){var l=c(n);l?(r=a,n=l):u=!1}for(;++e-1:void 0});return i.pop(),o.pop(),b&&(v(i),v(o)),a}function sn(t,n,e,r,i){(fi(n)?ie:Ci)(n,function(n,o){var a,u,s=n,l=t[o];if(n&&((u=fi(n))||Ei(n))){for(var c=r.length;c--;)if(a=r[c]==n){l=i[c];break}if(!a){var f;e&&(s=e(l,n),(f="undefined"!=typeof s)&&(l=s)),f||(l=u?fi(l)?l:[]:Ei(l)?l:{}),r.push(n),i.push(l),f||sn(l,n,e,r,i)}}else e&&(s=e(l,n),"undefined"==typeof s&&(s=n)),"undefined"!=typeof s&&(l=s);t[o]=l})}function ln(t,n){return t+Br(oi()*(n-t+1))}function fn(t,n,e){var r=-1,i=dn(),u=t?t.length:0,s=[],l=!n&&u>=E&&i===o,f=e||l?p():s;if(l){var h=c(f);i=a,f=h}for(;++r3&&"function"==typeof n[e-2])var r=_(n[--e-1],n[e--],2);else e>2&&"function"==typeof n[e-1]&&(r=n[--e]);for(var i=y(arguments,1,e),o=-1,a=p(),u=p();++oe?ei(0,o+e):e)||0,fi(t)?a=i(t,n,e)>-1:"number"==typeof o?a=(Hn(t)?t.indexOf(n,e):i(t,n,e))>-1:wi(t,function(t){return++r>=e?!(a=t===n):void 0}),a}function te(t,e,r){var i=!0;if(e=n.createCallback(e,r,3),fi(t))for(var o=-1,a=t.length;++oo&&(o=l)}else e=null==e&&Hn(t)?s:n.createCallback(e,r,3),wi(t,function(t,n,r){var a=e(t,n,r);a>i&&(i=a,o=t)});return o}function le(t,e,r){var i=1/0,o=i;if("function"!=typeof e&&r&&r[e]===t&&(e=null),null==e&&fi(t))for(var a=-1,u=t.length;++al&&(o=l)}else e=null==e&&Hn(t)?s:n.createCallback(e,r,3),wi(t,function(t,n,r){var a=e(t,n,r);i>a&&(i=a,o=t)});return o}function ce(t,e,r,i){var o=arguments.length<3;if(e=n.createCallback(e,i,4),fi(t)){var a=-1,u=t.length;for(o&&(r=t[++a]);++ae?ei(0,r+e):e||0}else if(e){var i=Fe(t,n);return t[i]===n?i:-1}return o(t,n,e)}function Ee(t,e,r){var i=0,o=t?t.length:0;if("number"!=typeof e&&null!=e){var a=o;for(e=n.createCallback(e,r,3);a--&&e(t[a],a,t);)i++}else i=null==e||r?1:e||i;return y(t,0,ri(ei(0,o-i),o))}function Oe(){for(var t=[],n=-1,e=arguments.length,r=p(),i=dn(),u=i===o,s=p();++n=E&&c(n?t[n]:s)))}var f=t[0],h=-1,g=f?f.length:0,y=[];t:for(;++he?ei(0,r+e):ri(e,r-1))+1);r--;)if(t[r]===n)return r;return-1}function Pe(t){for(var n=arguments,e=0,r=n.length,i=t?t.length:0;++eo;){var u=o+a>>>1;r(t[u])1?arguments:arguments[0],n=-1,e=t?se(Pi(t,"length")):0,r=wr(0>e?0:e);++n2?hn(t,17,y(arguments,2),null,n):hn(t,1,null,null,n)}function He(t){for(var n=arguments.length>1?on(arguments,!0,!1,1):Sn(t),e=-1,r=n.length;++e2?hn(n,19,y(arguments,2),null,t):hn(n,3,null,null,t)}function qe(){for(var t=arguments,n=t.length;n--;)if(!Nn(t[n]))throw new Dr;return function(){for(var n=arguments,e=t.length;e--;)n=[t[e].apply(this,n)];return n[0]}}function Je(t,n){return n="number"==typeof n?n:+n||t.length,hn(t,4,null,null,null,n)}function Ke(t,n,e){var r,i,o,a,u,s,l,c=0,f=!1,p=!0;if(!Nn(t))throw new Dr;if(n=ei(0,n)||0,e===!0){var h=!0;p=!1}else Rn(e)&&(h=e.leading,f="maxWait"in e&&(ei(n,e.maxWait)||0),p="trailing"in e?e.trailing:p);var g=function(){var e=n-(Ai()-a);if(0>=e){i&&$r(i);var f=l;i=s=l=b,f&&(c=Ai(),o=t.apply(u,r),s||i||(r=u=null))}else s=Kr(g,e)},v=function(){s&&$r(s),i=s=l=b,(p||f!==n)&&(c=Ai(),o=t.apply(u,r),s||i||(r=u=null))};return function(){if(r=arguments,a=Ai(),u=this,l=p&&(s||!h),f===!1)var e=h&&!s;else{i||h||(c=a);var d=f-(a-c),y=0>=d;y?(i&&(i=$r(i)),c=a,o=t.apply(u,r)):i||(i=Kr(v,d))}return y&&s?s=$r(s):s||n===f||(s=Kr(g,n)),e&&(y=!0,o=t.apply(u,r)),!y||s||i||(r=u=null),o}}function Ge(t){if(!Nn(t))throw new Dr;var n=y(arguments,1);return Kr(function(){t.apply(b,n)},1)}function Ve(t,n){if(!Nn(t))throw new Dr;var e=y(arguments,2);return Kr(function(){t.apply(b,e)},n)}function Ze(t,n){if(!Nn(t))throw new Dr;var e=function(){var r=e.cache,i=n?n.apply(this,arguments):C+arguments[0];return Wr.call(r,i)?r[i]:r[i]=t.apply(this,arguments)};return e.cache={},e}function Qe(t){var n,e;if(!Nn(t))throw new Dr;return function(){return n?e:(n=!0,e=t.apply(this,arguments),t=null,e)}}function Xe(t){return hn(t,16,y(arguments,1))}function Ye(t){return hn(t,32,null,y(arguments,1))}function tr(t,n,e){var r=!0,i=!0;if(!Nn(t))throw new Dr;return e===!1?r=!1:Rn(e)&&(r="leading"in e?e.leading:r,i="trailing"in e?e.trailing:i),tn.leading=r,tn.maxWait=n,tn.trailing=i,Ke(t,n,tn)}function nr(t,n){return hn(n,16,[t])}function er(t){return function(){return t}}function rr(t,n,e){var r=typeof t;if(null==t||"function"==r)return _(t,n,e);if("object"!=r)return lr(t);var i=hi(t),o=i[0],a=t[o];return 1!=i.length||a!==a||Rn(a)?function(n){for(var e=i.length,r=!1;e--&&(r=un(n[i[e]],t[i[e]],null,!0)););return r}:function(t){var n=t[o];return a===n&&(0!==a||1/a==1/n)}}function ir(t){return null==t?"":Pr(t).replace(_i,vn)}function or(t){return t}function ar(t,r,i){var o=!0,a=r&&Sn(r);r&&(i||a.length)||(null==i&&(i=r),u=e,r=t,t=n,a=Sn(r)),i===!1?o=!1:Rn(i)&&"chain"in i&&(o=i.chain);var u=t,s=Nn(u);ie(a,function(n){var e=t[n]=r[n];s&&(u.prototype[n]=function(){var n=this.__chain__,r=this.__wrapped__,i=[r];qr.apply(i,arguments);var a=e.apply(t,i);if(o||n){if(r===a&&Rn(a))return this;a=new u(a),a.__chain__=n}return a})})}function ur(){return t._=zr,this}function sr(){}function lr(t){return function(n){return n[t]}}function cr(t,n,e){var r=null==t,i=null==n;if(null==e&&("boolean"==typeof t&&i?(e=t,t=1):i||"boolean"!=typeof n||(e=n,i=!0)),r&&i&&(n=1),t=+t||0,i?(n=t,t=0):n=+n||0,e||t%1||n%1){var o=oi();return ri(t+o*(n-t+parseFloat("1e-"+((o+"").length-1))),n)}return ln(t,n)}function fr(t,n){if(t){var e=t[n];return Nn(e)?t[n]():e}}function pr(t,e,r){var i=n.templateSettings;t=Pr(t||""),r=ji({},r,i);var o,a=ji({},r.imports,i.imports),u=hi(a),s=Qn(a),l=0,c=r.interpolate||N,p="__p += '",h=Lr((r.escape||N).source+"|"+c.source+"|"+(c===I?A:N).source+"|"+(r.evaluate||N).source+"|$","g");t.replace(h,function(n,e,r,i,a,u){return r||(r=i),p+=t.slice(l,u).replace(M,f),e&&(p+="' +\n__e("+e+") +\n'"),a&&(o=!0,p+="';\n"+a+";\n__p += '"),r&&(p+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),l=u+n.length,n}),p+="';\n";var g=r.variable,v=g;v||(g="obj",p="with ("+g+") {\n"+p+"\n}\n"),p=(o?p.replace(L,""):p).replace(P,"$1").replace(D,"$1;"),p="function("+g+") {\n"+(v?"":g+" || ("+g+" = {});\n")+"var __t, __p = '', __e = _.escape"+(o?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var d="\n/*\n//# sourceURL="+(r.sourceURL||"/lodash/template/source["+U++ +"]")+"\n*/";try{var y=Cr(u,"return "+p+d).apply(b,s)}catch(m){throw m.source=p,m}return e?y(e):(y.source=p,y)}function hr(t,n,e){t=(t=+t)>-1?t:0;var r=-1,i=wr(t);for(n=_(n,e,1);++r/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:I,variable:"",imports:{_:n}};var li=function(t){var n="var index, iterable = "+t.firstArg+", result = "+t.init+";\nif (!iterable) return result;\n"+t.top+";";t.array?(n+="\nvar length = iterable.length; index = -1;\nif ("+t.array+") { ",si.unindexedChars&&(n+="\n if (isString(iterable)) {\n iterable = iterable.split('')\n } "),n+="\n while (++index < length) {\n "+t.loop+";\n }\n}\nelse { "):si.nonEnumArgs&&(n+="\n var length = iterable.length; index = -1;\n if (length && isArguments(iterable)) {\n while (++index < length) {\n index += '';\n "+t.loop+";\n }\n } else { "),si.enumPrototypes&&(n+="\n var skipProto = typeof iterable == 'function';\n "),si.enumErrorProps&&(n+="\n var skipErrorProps = iterable === errorProto || iterable instanceof Error;\n ");var e=[];if(si.enumPrototypes&&e.push('!(skipProto && index == "prototype")'),si.enumErrorProps&&e.push('!(skipErrorProps && (index == "message" || index == "name"))'),t.useHas&&t.keys)n+="\n var ownIndex = -1,\n ownProps = objectTypes[typeof iterable] && keys(iterable),\n length = ownProps ? ownProps.length : 0;\n\n while (++ownIndex < length) {\n index = ownProps[ownIndex];\n",e.length&&(n+=" if ("+e.join(" && ")+") {\n "),n+=t.loop+"; ",e.length&&(n+="\n }"),n+="\n } ";else if(n+="\n for (index in iterable) {\n",t.useHas&&e.push("hasOwnProperty.call(iterable, index)"),e.length&&(n+=" if ("+e.join(" && ")+") {\n "),n+=t.loop+"; ",e.length&&(n+="\n }"),n+="\n } ",si.nonEnumShadows){for(n+="\n\n if (iterable !== objectProto) {\n var ctor = iterable.constructor,\n isProto = iterable === (ctor && ctor.prototype),\n className = iterable === stringProto ? stringClass : iterable === errorProto ? errorClass : toString.call(iterable),\n nonEnum = nonEnumProps[className];\n ",k=0;7>k;k++)n+="\n index = '"+t.shadowedProps[k]+"';\n if ((!(isProto && nonEnum[index]) && hasOwnProperty.call(iterable, index))",t.useHas||(n+=" || (!nonEnum[index] && iterable[index] !== objectProto[index])"),n+=") {\n "+t.loop+";\n } ";n+="\n } "}return(t.array||si.nonEnumArgs)&&(n+="\n}"),n+=t.bottom+";\nreturn result"};Qr||(u=function(){function n(){}return function(e){if(Rn(e)){n.prototype=e;var r=new n;n.prototype=null}return r||t.Object()}}());var ci=Zr?function(t,n){nn.value=n,Zr(t,"__bindData__",nn)}:sr;si.argsClass||(_n=function(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Wr.call(t,"callee")&&!Jr.call(t,"callee")||!1});var fi=Xr||function(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Nr.call(t)==W||!1},pi=gn({args:"object",init:"[]",top:"if (!(objectTypes[typeof object])) return result",loop:"result.push(index)"}),hi=ni?function(t){return Rn(t)?si.enumPrototypes&&"function"==typeof t||si.nonEnumArgs&&t.length&&_n(t)?pi(t):ni(t):[]}:pi,gi={args:"collection, callback, thisArg",top:"callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3)",array:"typeof length == 'number'",keys:hi,loop:"if (callback(iterable[index], index, collection) === false) return result"},vi={args:"object, source, guard",top:"var args = arguments,\n argsIndex = 0,\n argsLength = typeof guard == 'number' ? 2 : args.length;\nwhile (++argsIndex < argsLength) {\n iterable = args[argsIndex];\n if (iterable && objectTypes[typeof iterable]) {",keys:hi,loop:"if (typeof result[index] == 'undefined') result[index] = iterable[index]",bottom:" }\n}"},di={top:"if (!objectTypes[typeof iterable]) return result;\n"+gi.top,array:!1},yi={"&":"&","<":"<",">":">",'"':""","'":"'"},mi=Pn(yi),bi=Lr("("+hi(mi).join("|")+")","g"),_i=Lr("["+hi(yi).join("")+"]","g"),wi=gn(gi),xi=gn(vi,{top:vi.top.replace(";",";\nif (argsLength > 3 && typeof args[argsLength - 2] == 'function') {\n var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2);\n} else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') {\n callback = args[--argsLength];\n}"),loop:"result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]"}),ji=gn(vi),ki=gn(gi,di,{useHas:!1}),Ci=gn(gi,di);Nn(/x/)&&(Nn=function(t){return"function"==typeof t&&Nr.call(t)==G});var Ei=Hr?function(t){if(!t||Nr.call(t)!=Z||!si.argsClass&&_n(t))return!1;var n=t.valueOf,e=yn(n)&&(e=Hr(n))&&Hr(e);return e?t==e||Hr(t)==e:mn(t)}:mn,Oi=pn(function(t,n,e){Wr.call(t,e)?t[e]++:t[e]=1}),Si=pn(function(t,n,e){(Wr.call(t,e)?t[e]:t[e]=[]).push(n)}),Li=pn(function(t,n,e){t[e]=n}),Pi=ue,Di=ne,Ai=yn(Ai=jr.now)&&Ai||function(){return(new jr).getTime()},Ti=8==ii(S+"08")?ii:function(t,n){return ii(Hn(t)?t.replace(z,""):t,n||0)};return n.after=Be,n.assign=xi,n.at=Xn,n.bind=Ue,n.bindAll=He,n.bindKey=We,n.chain=dr,n.compact=be,n.compose=qe,n.constant=er,n.countBy=Oi,n.create=jn,n.createCallback=rr,n.curry=Je,n.debounce=Ke,n.defaults=ji,n.defer=Ge,n.delay=Ve,n.difference=_e,n.filter=ne,n.flatten=ke,n.forEach=ie,n.forEachRight=oe,n.forIn=ki,n.forInRight=En,n.forOwn=Ci,n.forOwnRight=On,n.functions=Sn,n.groupBy=Si,n.indexBy=Li,n.initial=Ee,n.intersection=Oe,n.invert=Pn,n.invoke=ae,n.keys=hi,n.map=ue,n.mapValues=qn,n.max=se,n.memoize=Ze,n.merge=Jn,n.min=le,n.omit=Kn,n.once=Qe,n.pairs=Gn,n.partial=Xe,n.partialRight=Ye,n.pick=Vn,n.pluck=Pi,n.property=lr,n.pull=Pe,n.range=De,n.reject=pe,n.remove=Ae,n.rest=Te,n.shuffle=ge,n.sortBy=ye,n.tap=yr,n.throttle=tr,n.times=hr,n.toArray=me,n.transform=Zn,n.union=Ie,n.uniq=ze,n.values=Qn,n.where=Di,n.without=Ne,n.wrap=nr,n.xor=Re,n.zip=Me,n.zipObject=$e,n.collect=ue,n.drop=Te,n.each=ie,n.eachRight=oe,n.extend=xi,n.methods=Sn,n.object=$e,n.select=ne,n.tail=Te,n.unique=ze,n.unzip=Me,ar(n),n.clone=wn,n.cloneDeep=xn,n.contains=Yn,n.escape=ir,n.every=te,n.find=ee,n.findIndex=we,n.findKey=kn,n.findLast=re,n.findLastIndex=xe,n.findLastKey=Cn,n.has=Ln,n.identity=or,n.indexOf=Ce,n.isArguments=_n,n.isArray=fi,n.isBoolean=Dn,n.isDate=An,n.isElement=Tn,n.isEmpty=Fn,n.isEqual=In,n.isFinite=zn,n.isFunction=Nn,n.isNaN=Mn,n.isNull=$n,n.isNumber=Bn,n.isObject=Rn,n.isPlainObject=Ei,n.isRegExp=Un,n.isString=Hn,n.isUndefined=Wn,n.lastIndexOf=Le,n.mixin=ar,n.noConflict=ur,n.noop=sr,n.now=Ai,n.parseInt=Ti,n.random=cr,n.reduce=ce,n.reduceRight=fe,n.result=fr,n.runInContext=m,n.size=ve,n.some=de,n.sortedIndex=Fe,n.template=pr,n.unescape=gr,n.uniqueId=vr,n.all=te,n.any=de,n.detect=ee,n.findWhere=ee,n.foldl=ce,n.foldr=fe,n.include=Yn,n.inject=ce,ar(function(){var t={};return Ci(n,function(e,r){n.prototype[r]||(t[r]=e)}),t}(),!1),n.first=je,n.last=Se,n.sample=he,n.take=je,n.head=je,Ci(n,function(t,r){var i="sample"!==r;n.prototype[r]||(n.prototype[r]=function(n,r){var o=this.__chain__,a=t(this.__wrapped__,n,r);return o||null!=n&&(!r||i&&"function"==typeof n)?new e(a,o):a})}),n.VERSION="2.4.1",n.prototype.chain=mr,n.prototype.toString=br,n.prototype.value=_r,n.prototype.valueOf=_r,wi(["join","pop","shift"],function(t){var r=Ar[t];n.prototype[t]=function(){var t=this.__chain__,n=r.apply(this.__wrapped__,arguments); -return t?new e(n,t):n}}),wi(["push","reverse","sort","unshift"],function(t){var e=Ar[t];n.prototype[t]=function(){return e.apply(this.__wrapped__,arguments),this}}),wi(["concat","slice","splice"],function(t){var r=Ar[t];n.prototype[t]=function(){return new e(r.apply(this.__wrapped__,arguments),this.__chain__)}}),si.spliceObjects||wi(["pop","shift","splice"],function(t){var r=Ar[t],i="splice"==t;n.prototype[t]=function(){var t=this.__chain__,n=this.__wrapped__,o=r.apply(n,arguments);return 0===n.length&&delete n[0],t||i?new e(o,t):o}}),n}var b,_=[],w=[],x=0,j={},C=+new Date+"",E=75,O=40,S=" \f \n\r\u2028\u2029 ᠎              ",L=/\b__p \+= '';/g,P=/\b(__p \+=) '' \+/g,D=/(__e\(.*?\)|\b__t\)) \+\n'';/g,A=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,T=/\w*$/,F=/^\s*function[ \n\r\t]+\w/,I=/<%=([\s\S]+?)%>/g,z=RegExp("^["+S+"]*0+(?=.$)"),N=/($^)/,R=/\bthis\b/,M=/['\n\r\t\u2028\u2029\\]/g,$=["Array","Boolean","Date","Error","Function","Math","Number","Object","RegExp","String","_","attachEvent","clearTimeout","isFinite","isNaN","parseInt","setTimeout"],B=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],U=0,H="[object Arguments]",W="[object Array]",q="[object Boolean]",J="[object Date]",K="[object Error]",G="[object Function]",V="[object Number]",Z="[object Object]",Q="[object RegExp]",X="[object String]",Y={};Y[G]=!1,Y[H]=Y[W]=Y[q]=Y[J]=Y[V]=Y[Z]=Y[Q]=Y[X]=!0;var tn={leading:!1,maxWait:0,trailing:!1},nn={configurable:!1,enumerable:!1,value:null,writable:!1},en={args:"",array:null,bottom:"",firstArg:"",init:"",keys:null,loop:"",shadowedProps:null,support:null,top:"",useHas:!1},rn={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},on={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"},an=rn[typeof window]&&window||this,un=rn[typeof n]&&n&&!n.nodeType&&n,sn=rn[typeof t]&&t&&!t.nodeType&&t,ln=(sn&&sn.exports===un&&un,rn[typeof i]&&i);!ln||ln.global!==ln&&ln.window!==ln||(an=ln);var cn=m();an._=cn,r=function(){return cn}.call(n,e,n,t),!(r!==b&&(t.exports=r))}).call(this)}).call(n,e(10)(t),function(){return this}())},function(t,n,e){var r=e(1),i=function(t){this.stores=t,this.currentDispatch=null,this.waitingToDispatch=[];for(var n in t)t[n].dispatcher=this};i.prototype.dispatch=function(t){if(this.currentDispatch)throw new Error("Cannot dispatch an action while another action is being dispatched");this.waitingToDispatch=r.clone(this.stores),this.currentDispatch=r.mapValues(this.stores,function(){return{resolved:!1,waitingOn:[],waitCallback:null}}),this.doDispatchLoop(t),setTimeout(function(){this.currentDispatch=null}.bind(this))},i.prototype.doDispatchLoop=function(t){var n,e,i=[],o=[];if(r.forOwn(this.waitingToDispatch,function(a,u){if(n=this.currentDispatch[u],e=!n.waitingOn.length||!r.intersection(n.waitingOn,r.keys(this.waitingToDispatch)).length){if(n.waitCallback){var s=r.map(n.waitingOn,function(t){return this.stores[t]},this),l=n.waitCallback;n.waitCallback=null,n.waitingOn=[],n.resolved=!0,l.apply(null,s)}else n.resolved=!0,this.stores[u].__handleAction__(t);o.push(u),this.currentDispatch[u].resolved&&i.push(u)}},this),!o.length){var a=r.keys(this.waitingToDispatch).join(", ");throw new Error("Indirect circular wait detected among: "+a)}r.each(i,function(t){delete this.waitingToDispatch[t]},this),r.size(this.waitingToDispatch)&&this.doDispatchLoop(t)},i.prototype.waitForStores=function(t,n,e){if(!this.currentDispatch)throw new Error("Cannot wait unless an action is being dispatched");var i=r.findKey(this.stores,function(n){return n===t});if(n.indexOf(i)>-1)throw new Error("A store cannot wait on itself");var o=this.currentDispatch[i];if(o.waitingOn.length)throw new Error(i+" already waiting on stores");r.each(n,function(t){var n=this.currentDispatch[t];if(!this.stores[t])throw new Error("Cannot wait for non-existant store "+t);if(n.waitingOn.indexOf(i)>-1)throw new Error("Circular wait detected between "+i+" and "+t)},this),o.resolved=!1,o.waitingOn=r.uniq(o.waitingOn.concat(n)),o.waitCallback=e},t.exports=i},function(t,n,e){(function(t,r){function i(t,e){var r={seen:[],stylize:a};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),v(e)?r.showHidden=e:e&&n._extend(r,e),w(r.showHidden)&&(r.showHidden=!1),w(r.depth)&&(r.depth=2),w(r.colors)&&(r.colors=!1),w(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=o),s(r,t,r.depth)}function o(t,n){var e=i.styles[n];return e?"["+i.colors[e][0]+"m"+t+"["+i.colors[e][1]+"m":t}function a(t){return t}function u(t){var n={};return t.forEach(function(t){n[t]=!0}),n}function s(t,e,r){if(t.customInspect&&e&&E(e.inspect)&&e.inspect!==n.inspect&&(!e.constructor||e.constructor.prototype!==e)){var i=e.inspect(r,t);return b(i)||(i=s(t,i,r)),i}var o=l(t,e);if(o)return o;var a=Object.keys(e),v=u(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(e)),C(e)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return c(e);if(0===a.length){if(E(e)){var d=e.name?": "+e.name:"";return t.stylize("[Function"+d+"]","special")}if(x(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(k(e))return t.stylize(Date.prototype.toString.call(e),"date");if(C(e))return c(e)}var y="",m=!1,_=["{","}"];if(g(e)&&(m=!0,_=["[","]"]),E(e)){var w=e.name?": "+e.name:"";y=" [Function"+w+"]"}if(x(e)&&(y=" "+RegExp.prototype.toString.call(e)),k(e)&&(y=" "+Date.prototype.toUTCString.call(e)),C(e)&&(y=" "+c(e)),0===a.length&&(!m||0==e.length))return _[0]+y+_[1];if(0>r)return x(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special");t.seen.push(e);var j;return j=m?f(t,e,r,v,a):a.map(function(n){return p(t,e,r,v,n,m)}),t.seen.pop(),h(j,y,_)}function l(t,n){if(w(n))return t.stylize("undefined","undefined");if(b(n)){var e="'"+JSON.stringify(n).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(e,"string")}return m(n)?t.stylize(""+n,"number"):v(n)?t.stylize(""+n,"boolean"):d(n)?t.stylize("null","null"):void 0}function c(t){return"["+Error.prototype.toString.call(t)+"]"}function f(t,n,e,r,i){for(var o=[],a=0,u=n.length;u>a;++a)o.push(D(n,String(a))?p(t,n,e,r,String(a),!0):"");return i.forEach(function(i){i.match(/^\d+$/)||o.push(p(t,n,e,r,i,!0))}),o}function p(t,n,e,r,i,o){var a,u,l;if(l=Object.getOwnPropertyDescriptor(n,i)||{value:n[i]},l.get?u=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(u=t.stylize("[Setter]","special")),D(r,i)||(a="["+i+"]"),u||(t.seen.indexOf(l.value)<0?(u=d(e)?s(t,l.value,null):s(t,l.value,e-1),u.indexOf("\n")>-1&&(u=o?u.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+u.split("\n").map(function(t){return" "+t}).join("\n"))):u=t.stylize("[Circular]","special")),w(a)){if(o&&i.match(/^\d+$/))return u;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+u}function h(t,n,e){var r=0,i=t.reduce(function(t,n){return r++,n.indexOf("\n")>=0&&r++,t+n.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?e[0]+(""===n?"":n+"\n ")+" "+t.join(",\n ")+" "+e[1]:e[0]+n+" "+t.join(", ")+" "+e[1]}function g(t){return Array.isArray(t)}function v(t){return"boolean"==typeof t}function d(t){return null===t}function y(t){return null==t}function m(t){return"number"==typeof t}function b(t){return"string"==typeof t}function _(t){return"symbol"==typeof t}function w(t){return void 0===t}function x(t){return j(t)&&"[object RegExp]"===S(t)}function j(t){return"object"==typeof t&&null!==t}function k(t){return j(t)&&"[object Date]"===S(t)}function C(t){return j(t)&&("[object Error]"===S(t)||t instanceof Error)}function E(t){return"function"==typeof t}function O(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||"undefined"==typeof t}function S(t){return Object.prototype.toString.call(t)}function L(t){return 10>t?"0"+t.toString(10):t.toString(10)}function P(){var t=new Date,n=[L(t.getHours()),L(t.getMinutes()),L(t.getSeconds())].join(":");return[t.getDate(),I[t.getMonth()],n].join(" ")}function D(t,n){return Object.prototype.hasOwnProperty.call(t,n)}var A=/%[sdj%]/g;n.format=function(t){if(!b(t)){for(var n=[],e=0;e=o)return t;switch(t){case"%s":return String(r[e++]);case"%d":return Number(r[e++]);case"%j":try{return JSON.stringify(r[e++])}catch(n){return"[Circular]"}default:return t}}),u=r[e];o>e;u=r[++e])a+=d(u)||!j(u)?" "+u:" "+i(u);return a},n.deprecate=function(e,i){function o(){if(!a){if(r.throwDeprecation)throw new Error(i);r.traceDeprecation?console.trace(i):console.error(i),a=!0}return e.apply(this,arguments)}if(w(t.process))return function(){return n.deprecate(e,i).apply(this,arguments)};if(r.noDeprecation===!0)return e;var a=!1;return o};var T,F={};n.debuglog=function(t){if(w(T)&&(T=r.env.NODE_DEBUG||""),t=t.toUpperCase(),!F[t])if(new RegExp("\\b"+t+"\\b","i").test(T)){var e=r.pid;F[t]=function(){var r=n.format.apply(n,arguments);console.error("%s %d: %s",t,e,r)}}else F[t]=function(){};return F[t]},n.inspect=i,i.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]},i.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},n.isArray=g,n.isBoolean=v,n.isNull=d,n.isNullOrUndefined=y,n.isNumber=m,n.isString=b,n.isSymbol=_,n.isUndefined=w,n.isRegExp=x,n.isObject=j,n.isDate=k,n.isError=C,n.isFunction=E,n.isPrimitive=O,n.isBuffer=e(14);var I=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];n.log=function(){console.log("%s - %s",P(),n.format.apply(n,arguments))},n.inherits=e(13),n._extend=function(t,n){if(!n||!j(n))return t;for(var e=Object.keys(n),r=e.length;r--;)t[e[r]]=n[e[r]];return t}}).call(n,function(){return this}(),e(12))},function(t,n,e){var r=e(1),i=e(7),o=e(3),a=["flux","waitFor"],u=function(t){r.each(a,function(n){if(t[n])throw new Error("Reserved key '"+n+"' found in store definition")});var n=function(n){n=n||{},i.call(this);for(var e in t)"actions"===e?this.__actions__=t[e]:"initialize"===e||(this[e]="function"==typeof t[e]?t[e].bind(this):t[e]);t.initialize&&t.initialize.call(this,n)};return o.inherits(n,i),n};t.exports=u},function(t,n,e){var r=e(2),i=function(t,n){var e=new r(t),i={dispatch:function(t,n){e.dispatch({type:t,payload:n})}};this.dispatcher=e,this.actions={};for(var o in n)this.actions[o]=n[o].bind(i);for(o in t)t[o].flux=this};i.prototype.store=function(t){return this.dispatcher.stores[t]},t.exports=i},function(t){var n=function(t){return{propTypes:{flux:t.PropTypes.object.isRequired},childContextTypes:{flux:t.PropTypes.object},getChildContext:function(){return{flux:this.props.flux}}}};n.componentWillMount=function(){throw new Error("Fluxbox.FluxMixin is a function that takes React as a parameter and returns the mixin, e.g.: mixins[Fluxbox.FluxMixin(React)]")},t.exports=n},function(t,n,e){function r(t){this.dispatcher=t,this.__actions__={},i.call(this)}var i=e(11).EventEmitter,o=e(3);o.inherits(r,i),r.prototype.__handleAction__=function(t){var n;(n=this.__actions__[t.type])&&("function"==typeof n?n.call(this,t.payload,t.type):n&&"function"==typeof this[n]&&this[n].call(this,t.payload,t.type))},r.prototype.bindActions=function(){var t=Array.prototype.slice.call(arguments);if(t.length%2!==0)throw new Error("bindActions must take an even number of arguments.");for(var n=0;n",license:"MIT",devDependencies:{chai:"^1.9.1","css-loader":"^0.6.12",envify:"^1.2.1",jsdom:"^0.10.5","json-loader":"^0.5.0","jsx-loader":"^0.10.2",jsxhint:"^0.4.9",less:"^1.7.0","less-loader":"^0.7.3",mocha:"^1.18.2",react:"^0.10.0",sinon:"^1.9.1","sinon-chai":"^2.5.0","style-loader":"^0.6.3",webpack:"^1.1.11","webpack-dev-server":"^1.2.7",wintersmith:"^2.0.10","wintersmith-ejs":"^0.1.4","wintersmith-less":"^0.2.2"},dependencies:{lodash:"^2.4.1"}}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function e(t){return"function"==typeof t}function r(t){return"number"==typeof t}function i(t){return"object"==typeof t&&null!==t}function o(t){return void 0===t}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(t){if(!r(t)||0>t||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},n.prototype.emit=function(t){var n,r,a,u,s,l;if(this._events||(this._events={}),"error"===t&&(!this._events.error||i(this._events.error)&&!this._events.error.length))throw n=arguments[1],n instanceof Error?n:TypeError('Uncaught, unspecified "error" event.');if(r=this._events[t],o(r))return!1;if(e(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:for(a=arguments.length,u=new Array(a-1),s=1;a>s;s++)u[s-1]=arguments[s];r.apply(this,u)}else if(i(r)){for(a=arguments.length,u=new Array(a-1),s=1;a>s;s++)u[s-1]=arguments[s];for(l=r.slice(),a=l.length,s=0;a>s;s++)l[s].apply(this,u)}return!0},n.prototype.addListener=function(t,r){var a;if(!e(r))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,e(r.listener)?r.listener:r),this._events[t]?i(this._events[t])?this._events[t].push(r):this._events[t]=[this._events[t],r]:this._events[t]=r,i(this._events[t])&&!this._events[t].warned){var a;a=o(this._maxListeners)?n.defaultMaxListeners:this._maxListeners,a&&a>0&&this._events[t].length>a&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace())}return this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,n){function r(){this.removeListener(t,r),i||(i=!0,n.apply(this,arguments))}if(!e(n))throw TypeError("listener must be a function");var i=!1;return r.listener=n,this.on(t,r),this},n.prototype.removeListener=function(t,n){var r,o,a,u;if(!e(n))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(r=this._events[t],a=r.length,o=-1,r===n||e(r.listener)&&r.listener===n)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,n);else if(i(r)){for(u=a;u-->0;)if(r[u]===n||r[u].listener&&r[u].listener===n){o=u;break}if(0>o)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(o,1),this._events.removeListener&&this.emit("removeListener",t,n)}return this},n.prototype.removeAllListeners=function(t){var n,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(n in this._events)"removeListener"!==n&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[t],e(r))this.removeListener(t,r);else for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){var n;return n=this._events&&this._events[t]?e(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.listenerCount=function(t,n){var r;return r=t._events&&t._events[n]?e(t._events[n])?1:t._events[n].length:0}},function(t){function n(){}var e=t.exports={};e.nextTick=function(){var t="undefined"!=typeof window&&window.setImmediate,n="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(t)return function(t){return window.setImmediate(t)};if(n){var e=[];return window.addEventListener("message",function(t){var n=t.source;if((n===window||null===n)&&"process-tick"===t.data&&(t.stopPropagation(),e.length>0)){var r=e.shift();r()}},!0),function(t){e.push(t),window.postMessage("process-tick","*")}}return function(t){setTimeout(t,0)}}(),e.title="browser",e.browser=!0,e.env={},e.argv=[],e.on=n,e.once=n,e.off=n,e.emit=n,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")}},function(t){t.exports="function"==typeof Object.create?function(t,n){t.super_=n,t.prototype=Object.create(n.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,n){t.super_=n;var e=function(){};e.prototype=n.prototype,t.prototype=new e,t.prototype.constructor=t}},function(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}}])}); +!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):"object"==typeof exports?exports.Fluxbox=n():t.Fluxbox=n()}(this,function(){return function(t){function n(r){if(e[r])return e[r].exports;var i=e[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}var e={};return n.m=t,n.c=e,n.p="",n(0)}([function(t,n,e){var r=e(2),i=e(5),o=e(6),a=e(8),u=e(4),s={Dispatcher:r,Flux:i,FluxMixin:o,StoreWatchMixin:a,createStore:u,version:e(9).version};t.exports=s},function(t,n,e){var r;(function(t,i){(function(){function o(t,n,e){for(var r=(e||0)-1,i=t?t.length:0;++r-1?0:-1:t?0:-1}function u(t){var n=this.cache,e=typeof t;if("boolean"==e||null==t)n[t]=!0;else{"number"!=e&&"string"!=e&&(e="object");var r="number"==e?t:E+t,i=n[e]||(n[e]={});"object"==e?(i[r]||(i[r]=[])).push(t):i[r]=!0}}function s(t){return t.charCodeAt(0)}function l(t,n){for(var e=t.criteria,r=n.criteria,i=-1,o=e.length;++iu||"undefined"==typeof a)return 1;if(u>a||"undefined"==typeof u)return-1}}return t.index-n.index}function c(t){var n=-1,e=t.length,r=t[0],i=t[e/2|0],o=t[e-1];if(r&&"object"==typeof r&&i&&"object"==typeof i&&o&&"object"==typeof o)return!1;var a=h();a["false"]=a["null"]=a["true"]=a.undefined=!1;var s=h();for(s.array=t,s.cache=a,s.push=u;++ni?0:i);++r=C&&r===o,s=[];if(u){var l=c(n);l?(r=a,n=l):u=!1}for(;++e-1:void 0});return i.pop(),o.pop(),b&&(v(i),v(o)),a}function sn(t,n,e,r,i){(fi(n)?ie:Ei)(n,function(n,o){var a,u,s=n,l=t[o];if(n&&((u=fi(n))||Ci(n))){for(var c=r.length;c--;)if(a=r[c]==n){l=i[c];break}if(!a){var f;e&&(s=e(l,n),(f="undefined"!=typeof s)&&(l=s)),f||(l=u?fi(l)?l:[]:Ci(l)?l:{}),r.push(n),i.push(l),f||sn(l,n,e,r,i)}}else e&&(s=e(l,n),"undefined"==typeof s&&(s=n)),"undefined"!=typeof s&&(l=s);t[o]=l})}function ln(t,n){return t+Br(oi()*(n-t+1))}function fn(t,n,e){var r=-1,i=dn(),u=t?t.length:0,s=[],l=!n&&u>=C&&i===o,f=e||l?p():s;if(l){var h=c(f);i=a,f=h}for(;++r3&&"function"==typeof n[e-2])var r=_(n[--e-1],n[e--],2);else e>2&&"function"==typeof n[e-1]&&(r=n[--e]);for(var i=y(arguments,1,e),o=-1,a=p(),u=p();++oe?ei(0,o+e):e)||0,fi(t)?a=i(t,n,e)>-1:"number"==typeof o?a=(Un(t)?t.indexOf(n,e):i(t,n,e))>-1:wi(t,function(t){return++r>=e?!(a=t===n):void 0}),a}function te(t,e,r){var i=!0;if(e=n.createCallback(e,r,3),fi(t))for(var o=-1,a=t.length;++oo&&(o=l)}else e=null==e&&Un(t)?s:n.createCallback(e,r,3),wi(t,function(t,n,r){var a=e(t,n,r);a>i&&(i=a,o=t)});return o}function le(t,e,r){var i=1/0,o=i;if("function"!=typeof e&&r&&r[e]===t&&(e=null),null==e&&fi(t))for(var a=-1,u=t.length;++al&&(o=l)}else e=null==e&&Un(t)?s:n.createCallback(e,r,3),wi(t,function(t,n,r){var a=e(t,n,r);i>a&&(i=a,o=t)});return o}function ce(t,e,r,i){var o=arguments.length<3;if(e=n.createCallback(e,i,4),fi(t)){var a=-1,u=t.length;for(o&&(r=t[++a]);++ae?ei(0,r+e):e||0}else if(e){var i=Te(t,n);return t[i]===n?i:-1}return o(t,n,e)}function Ce(t,e,r){var i=0,o=t?t.length:0;if("number"!=typeof e&&null!=e){var a=o;for(e=n.createCallback(e,r,3);a--&&e(t[a],a,t);)i++}else i=null==e||r?1:e||i;return y(t,0,ri(ei(0,o-i),o))}function Oe(){for(var t=[],n=-1,e=arguments.length,r=p(),i=dn(),u=i===o,s=p();++n=C&&c(n?t[n]:s)))}var f=t[0],h=-1,g=f?f.length:0,y=[];t:for(;++he?ei(0,r+e):ri(e,r-1))+1);r--;)if(t[r]===n)return r;return-1}function Pe(t){for(var n=arguments,e=0,r=n.length,i=t?t.length:0;++eo;){var u=o+a>>>1;r(t[u])1?arguments:arguments[0],n=-1,e=t?se(Pi(t,"length")):0,r=wr(0>e?0:e);++n2?hn(t,17,y(arguments,2),null,n):hn(t,1,null,null,n)}function Ue(t){for(var n=arguments.length>1?on(arguments,!0,!1,1):Sn(t),e=-1,r=n.length;++e2?hn(n,19,y(arguments,2),null,t):hn(n,3,null,null,t)}function qe(){for(var t=arguments,n=t.length;n--;)if(!Nn(t[n]))throw new Dr;return function(){for(var n=arguments,e=t.length;e--;)n=[t[e].apply(this,n)];return n[0]}}function Je(t,n){return n="number"==typeof n?n:+n||t.length,hn(t,4,null,null,null,n)}function Ke(t,n,e){var r,i,o,a,u,s,l,c=0,f=!1,p=!0;if(!Nn(t))throw new Dr;if(n=ei(0,n)||0,e===!0){var h=!0;p=!1}else Rn(e)&&(h=e.leading,f="maxWait"in e&&(ei(n,e.maxWait)||0),p="trailing"in e?e.trailing:p);var g=function(){var e=n-(Ai()-a);if(0>=e){i&&$r(i);var f=l;i=s=l=b,f&&(c=Ai(),o=t.apply(u,r),s||i||(r=u=null))}else s=Kr(g,e)},v=function(){s&&$r(s),i=s=l=b,(p||f!==n)&&(c=Ai(),o=t.apply(u,r),s||i||(r=u=null))};return function(){if(r=arguments,a=Ai(),u=this,l=p&&(s||!h),f===!1)var e=h&&!s;else{i||h||(c=a);var d=f-(a-c),y=0>=d;y?(i&&(i=$r(i)),c=a,o=t.apply(u,r)):i||(i=Kr(v,d))}return y&&s?s=$r(s):s||n===f||(s=Kr(g,n)),e&&(y=!0,o=t.apply(u,r)),!y||s||i||(r=u=null),o}}function Ge(t){if(!Nn(t))throw new Dr;var n=y(arguments,1);return Kr(function(){t.apply(b,n)},1)}function Ve(t,n){if(!Nn(t))throw new Dr;var e=y(arguments,2);return Kr(function(){t.apply(b,e)},n)}function Ze(t,n){if(!Nn(t))throw new Dr;var e=function(){var r=e.cache,i=n?n.apply(this,arguments):E+arguments[0];return Hr.call(r,i)?r[i]:r[i]=t.apply(this,arguments)};return e.cache={},e}function Qe(t){var n,e;if(!Nn(t))throw new Dr;return function(){return n?e:(n=!0,e=t.apply(this,arguments),t=null,e)}}function Xe(t){return hn(t,16,y(arguments,1))}function Ye(t){return hn(t,32,null,y(arguments,1))}function tr(t,n,e){var r=!0,i=!0;if(!Nn(t))throw new Dr;return e===!1?r=!1:Rn(e)&&(r="leading"in e?e.leading:r,i="trailing"in e?e.trailing:i),tn.leading=r,tn.maxWait=n,tn.trailing=i,Ke(t,n,tn)}function nr(t,n){return hn(n,16,[t])}function er(t){return function(){return t}}function rr(t,n,e){var r=typeof t;if(null==t||"function"==r)return _(t,n,e);if("object"!=r)return lr(t);var i=hi(t),o=i[0],a=t[o];return 1!=i.length||a!==a||Rn(a)?function(n){for(var e=i.length,r=!1;e--&&(r=un(n[i[e]],t[i[e]],null,!0)););return r}:function(t){var n=t[o];return a===n&&(0!==a||1/a==1/n)}}function ir(t){return null==t?"":Pr(t).replace(_i,vn)}function or(t){return t}function ar(t,r,i){var o=!0,a=r&&Sn(r);r&&(i||a.length)||(null==i&&(i=r),u=e,r=t,t=n,a=Sn(r)),i===!1?o=!1:Rn(i)&&"chain"in i&&(o=i.chain);var u=t,s=Nn(u);ie(a,function(n){var e=t[n]=r[n];s&&(u.prototype[n]=function(){var n=this.__chain__,r=this.__wrapped__,i=[r];qr.apply(i,arguments);var a=e.apply(t,i);if(o||n){if(r===a&&Rn(a))return this;a=new u(a),a.__chain__=n}return a})})}function ur(){return t._=zr,this}function sr(){}function lr(t){return function(n){return n[t]}}function cr(t,n,e){var r=null==t,i=null==n;if(null==e&&("boolean"==typeof t&&i?(e=t,t=1):i||"boolean"!=typeof n||(e=n,i=!0)),r&&i&&(n=1),t=+t||0,i?(n=t,t=0):n=+n||0,e||t%1||n%1){var o=oi();return ri(t+o*(n-t+parseFloat("1e-"+((o+"").length-1))),n)}return ln(t,n)}function fr(t,n){if(t){var e=t[n];return Nn(e)?t[n]():e}}function pr(t,e,r){var i=n.templateSettings;t=Pr(t||""),r=ji({},r,i);var o,a=ji({},r.imports,i.imports),u=hi(a),s=Qn(a),l=0,c=r.interpolate||N,p="__p += '",h=Lr((r.escape||N).source+"|"+c.source+"|"+(c===I?A:N).source+"|"+(r.evaluate||N).source+"|$","g");t.replace(h,function(n,e,r,i,a,u){return r||(r=i),p+=t.slice(l,u).replace(M,f),e&&(p+="' +\n__e("+e+") +\n'"),a&&(o=!0,p+="';\n"+a+";\n__p += '"),r&&(p+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),l=u+n.length,n}),p+="';\n";var g=r.variable,v=g;v||(g="obj",p="with ("+g+") {\n"+p+"\n}\n"),p=(o?p.replace(L,""):p).replace(P,"$1").replace(D,"$1;"),p="function("+g+") {\n"+(v?"":g+" || ("+g+" = {});\n")+"var __t, __p = '', __e = _.escape"+(o?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var d="\n/*\n//# sourceURL="+(r.sourceURL||"/lodash/template/source["+W++ +"]")+"\n*/";try{var y=Er(u,"return "+p+d).apply(b,s)}catch(m){throw m.source=p,m}return e?y(e):(y.source=p,y)}function hr(t,n,e){t=(t=+t)>-1?t:0;var r=-1,i=wr(t);for(n=_(n,e,1);++r/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:I,variable:"",imports:{_:n}};var li=function(t){var n="var index, iterable = "+t.firstArg+", result = "+t.init+";\nif (!iterable) return result;\n"+t.top+";";t.array?(n+="\nvar length = iterable.length; index = -1;\nif ("+t.array+") { ",si.unindexedChars&&(n+="\n if (isString(iterable)) {\n iterable = iterable.split('')\n } "),n+="\n while (++index < length) {\n "+t.loop+";\n }\n}\nelse { "):si.nonEnumArgs&&(n+="\n var length = iterable.length; index = -1;\n if (length && isArguments(iterable)) {\n while (++index < length) {\n index += '';\n "+t.loop+";\n }\n } else { "),si.enumPrototypes&&(n+="\n var skipProto = typeof iterable == 'function';\n "),si.enumErrorProps&&(n+="\n var skipErrorProps = iterable === errorProto || iterable instanceof Error;\n ");var e=[];if(si.enumPrototypes&&e.push('!(skipProto && index == "prototype")'),si.enumErrorProps&&e.push('!(skipErrorProps && (index == "message" || index == "name"))'),t.useHas&&t.keys)n+="\n var ownIndex = -1,\n ownProps = objectTypes[typeof iterable] && keys(iterable),\n length = ownProps ? ownProps.length : 0;\n\n while (++ownIndex < length) {\n index = ownProps[ownIndex];\n",e.length&&(n+=" if ("+e.join(" && ")+") {\n "),n+=t.loop+"; ",e.length&&(n+="\n }"),n+="\n } ";else if(n+="\n for (index in iterable) {\n",t.useHas&&e.push("hasOwnProperty.call(iterable, index)"),e.length&&(n+=" if ("+e.join(" && ")+") {\n "),n+=t.loop+"; ",e.length&&(n+="\n }"),n+="\n } ",si.nonEnumShadows){for(n+="\n\n if (iterable !== objectProto) {\n var ctor = iterable.constructor,\n isProto = iterable === (ctor && ctor.prototype),\n className = iterable === stringProto ? stringClass : iterable === errorProto ? errorClass : toString.call(iterable),\n nonEnum = nonEnumProps[className];\n ",k=0;7>k;k++)n+="\n index = '"+t.shadowedProps[k]+"';\n if ((!(isProto && nonEnum[index]) && hasOwnProperty.call(iterable, index))",t.useHas||(n+=" || (!nonEnum[index] && iterable[index] !== objectProto[index])"),n+=") {\n "+t.loop+";\n } ";n+="\n } "}return(t.array||si.nonEnumArgs)&&(n+="\n}"),n+=t.bottom+";\nreturn result"};Qr||(u=function(){function n(){}return function(e){if(Rn(e)){n.prototype=e;var r=new n;n.prototype=null}return r||t.Object()}}());var ci=Zr?function(t,n){nn.value=n,Zr(t,"__bindData__",nn)}:sr;si.argsClass||(_n=function(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Hr.call(t,"callee")&&!Jr.call(t,"callee")||!1});var fi=Xr||function(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Nr.call(t)==H||!1},pi=gn({args:"object",init:"[]",top:"if (!(objectTypes[typeof object])) return result",loop:"result.push(index)"}),hi=ni?function(t){return Rn(t)?si.enumPrototypes&&"function"==typeof t||si.nonEnumArgs&&t.length&&_n(t)?pi(t):ni(t):[]}:pi,gi={args:"collection, callback, thisArg",top:"callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3)",array:"typeof length == 'number'",keys:hi,loop:"if (callback(iterable[index], index, collection) === false) return result"},vi={args:"object, source, guard",top:"var args = arguments,\n argsIndex = 0,\n argsLength = typeof guard == 'number' ? 2 : args.length;\nwhile (++argsIndex < argsLength) {\n iterable = args[argsIndex];\n if (iterable && objectTypes[typeof iterable]) {",keys:hi,loop:"if (typeof result[index] == 'undefined') result[index] = iterable[index]",bottom:" }\n}"},di={top:"if (!objectTypes[typeof iterable]) return result;\n"+gi.top,array:!1},yi={"&":"&","<":"<",">":">",'"':""","'":"'"},mi=Pn(yi),bi=Lr("("+hi(mi).join("|")+")","g"),_i=Lr("["+hi(yi).join("")+"]","g"),wi=gn(gi),xi=gn(vi,{top:vi.top.replace(";",";\nif (argsLength > 3 && typeof args[argsLength - 2] == 'function') {\n var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2);\n} else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') {\n callback = args[--argsLength];\n}"),loop:"result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]"}),ji=gn(vi),ki=gn(gi,di,{useHas:!1}),Ei=gn(gi,di);Nn(/x/)&&(Nn=function(t){return"function"==typeof t&&Nr.call(t)==G});var Ci=Ur?function(t){if(!t||Nr.call(t)!=Z||!si.argsClass&&_n(t))return!1;var n=t.valueOf,e=yn(n)&&(e=Ur(n))&&Ur(e);return e?t==e||Ur(t)==e:mn(t)}:mn,Oi=pn(function(t,n,e){Hr.call(t,e)?t[e]++:t[e]=1}),Si=pn(function(t,n,e){(Hr.call(t,e)?t[e]:t[e]=[]).push(n)}),Li=pn(function(t,n,e){t[e]=n}),Pi=ue,Di=ne,Ai=yn(Ai=jr.now)&&Ai||function(){return(new jr).getTime()},Fi=8==ii(S+"08")?ii:function(t,n){return ii(Un(t)?t.replace(z,""):t,n||0)};return n.after=Be,n.assign=xi,n.at=Xn,n.bind=We,n.bindAll=Ue,n.bindKey=He,n.chain=dr,n.compact=be,n.compose=qe,n.constant=er,n.countBy=Oi,n.create=jn,n.createCallback=rr,n.curry=Je,n.debounce=Ke,n.defaults=ji,n.defer=Ge,n.delay=Ve,n.difference=_e,n.filter=ne,n.flatten=ke,n.forEach=ie,n.forEachRight=oe,n.forIn=ki,n.forInRight=Cn,n.forOwn=Ei,n.forOwnRight=On,n.functions=Sn,n.groupBy=Si,n.indexBy=Li,n.initial=Ce,n.intersection=Oe,n.invert=Pn,n.invoke=ae,n.keys=hi,n.map=ue,n.mapValues=qn,n.max=se,n.memoize=Ze,n.merge=Jn,n.min=le,n.omit=Kn,n.once=Qe,n.pairs=Gn,n.partial=Xe,n.partialRight=Ye,n.pick=Vn,n.pluck=Pi,n.property=lr,n.pull=Pe,n.range=De,n.reject=pe,n.remove=Ae,n.rest=Fe,n.shuffle=ge,n.sortBy=ye,n.tap=yr,n.throttle=tr,n.times=hr,n.toArray=me,n.transform=Zn,n.union=Ie,n.uniq=ze,n.values=Qn,n.where=Di,n.without=Ne,n.wrap=nr,n.xor=Re,n.zip=Me,n.zipObject=$e,n.collect=ue,n.drop=Fe,n.each=ie,n.eachRight=oe,n.extend=xi,n.methods=Sn,n.object=$e,n.select=ne,n.tail=Fe,n.unique=ze,n.unzip=Me,ar(n),n.clone=wn,n.cloneDeep=xn,n.contains=Yn,n.escape=ir,n.every=te,n.find=ee,n.findIndex=we,n.findKey=kn,n.findLast=re,n.findLastIndex=xe,n.findLastKey=En,n.has=Ln,n.identity=or,n.indexOf=Ee,n.isArguments=_n,n.isArray=fi,n.isBoolean=Dn,n.isDate=An,n.isElement=Fn,n.isEmpty=Tn,n.isEqual=In,n.isFinite=zn,n.isFunction=Nn,n.isNaN=Mn,n.isNull=$n,n.isNumber=Bn,n.isObject=Rn,n.isPlainObject=Ci,n.isRegExp=Wn,n.isString=Un,n.isUndefined=Hn,n.lastIndexOf=Le,n.mixin=ar,n.noConflict=ur,n.noop=sr,n.now=Ai,n.parseInt=Fi,n.random=cr,n.reduce=ce,n.reduceRight=fe,n.result=fr,n.runInContext=m,n.size=ve,n.some=de,n.sortedIndex=Te,n.template=pr,n.unescape=gr,n.uniqueId=vr,n.all=te,n.any=de,n.detect=ee,n.findWhere=ee,n.foldl=ce,n.foldr=fe,n.include=Yn,n.inject=ce,ar(function(){var t={};return Ei(n,function(e,r){n.prototype[r]||(t[r]=e)}),t}(),!1),n.first=je,n.last=Se,n.sample=he,n.take=je,n.head=je,Ei(n,function(t,r){var i="sample"!==r;n.prototype[r]||(n.prototype[r]=function(n,r){var o=this.__chain__,a=t(this.__wrapped__,n,r);return o||null!=n&&(!r||i&&"function"==typeof n)?new e(a,o):a})}),n.VERSION="2.4.1",n.prototype.chain=mr,n.prototype.toString=br,n.prototype.value=_r,n.prototype.valueOf=_r,wi(["join","pop","shift"],function(t){var r=Ar[t];n.prototype[t]=function(){var t=this.__chain__,n=r.apply(this.__wrapped__,arguments); +return t?new e(n,t):n}}),wi(["push","reverse","sort","unshift"],function(t){var e=Ar[t];n.prototype[t]=function(){return e.apply(this.__wrapped__,arguments),this}}),wi(["concat","slice","splice"],function(t){var r=Ar[t];n.prototype[t]=function(){return new e(r.apply(this.__wrapped__,arguments),this.__chain__)}}),si.spliceObjects||wi(["pop","shift","splice"],function(t){var r=Ar[t],i="splice"==t;n.prototype[t]=function(){var t=this.__chain__,n=this.__wrapped__,o=r.apply(n,arguments);return 0===n.length&&delete n[0],t||i?new e(o,t):o}}),n}var b,_=[],w=[],x=0,j={},E=+new Date+"",C=75,O=40,S=" \f \n\r\u2028\u2029 ᠎              ",L=/\b__p \+= '';/g,P=/\b(__p \+=) '' \+/g,D=/(__e\(.*?\)|\b__t\)) \+\n'';/g,A=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,F=/\w*$/,T=/^\s*function[ \n\r\t]+\w/,I=/<%=([\s\S]+?)%>/g,z=RegExp("^["+S+"]*0+(?=.$)"),N=/($^)/,R=/\bthis\b/,M=/['\n\r\t\u2028\u2029\\]/g,$=["Array","Boolean","Date","Error","Function","Math","Number","Object","RegExp","String","_","attachEvent","clearTimeout","isFinite","isNaN","parseInt","setTimeout"],B=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],W=0,U="[object Arguments]",H="[object Array]",q="[object Boolean]",J="[object Date]",K="[object Error]",G="[object Function]",V="[object Number]",Z="[object Object]",Q="[object RegExp]",X="[object String]",Y={};Y[G]=!1,Y[U]=Y[H]=Y[q]=Y[J]=Y[V]=Y[Z]=Y[Q]=Y[X]=!0;var tn={leading:!1,maxWait:0,trailing:!1},nn={configurable:!1,enumerable:!1,value:null,writable:!1},en={args:"",array:null,bottom:"",firstArg:"",init:"",keys:null,loop:"",shadowedProps:null,support:null,top:"",useHas:!1},rn={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},on={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"},an=rn[typeof window]&&window||this,un=rn[typeof n]&&n&&!n.nodeType&&n,sn=rn[typeof t]&&t&&!t.nodeType&&t,ln=(sn&&sn.exports===un&&un,rn[typeof i]&&i);!ln||ln.global!==ln&&ln.window!==ln||(an=ln);var cn=m();an._=cn,r=function(){return cn}.call(n,e,n,t),!(r!==b&&(t.exports=r))}).call(this)}).call(n,e(10)(t),function(){return this}())},function(t,n,e){var r=e(1),i=function(t){this.stores=t,this.currentDispatch=null,this.waitingToDispatch=[];for(var n in t)t[n].dispatcher=this};i.prototype.dispatch=function(t){if(this.currentDispatch)throw new Error("Cannot dispatch an action while another action is being dispatched");this.waitingToDispatch=r.clone(this.stores),this.currentDispatch=r.mapValues(this.stores,function(){return{resolved:!1,waitingOn:[],waitCallback:null}}),this.doDispatchLoop(t),setTimeout(function(){this.currentDispatch=null}.bind(this))},i.prototype.doDispatchLoop=function(t){var n,e,i=[],o=[];if(r.forOwn(this.waitingToDispatch,function(a,u){if(n=this.currentDispatch[u],e=!n.waitingOn.length||!r.intersection(n.waitingOn,r.keys(this.waitingToDispatch)).length){if(n.waitCallback){var s=r.map(n.waitingOn,function(t){return this.stores[t]},this),l=n.waitCallback;n.waitCallback=null,n.waitingOn=[],n.resolved=!0,l.apply(null,s)}else n.resolved=!0,this.stores[u].__handleAction__(t);o.push(u),this.currentDispatch[u].resolved&&i.push(u)}},this),!o.length){var a=r.keys(this.waitingToDispatch).join(", ");throw new Error("Indirect circular wait detected among: "+a)}r.each(i,function(t){delete this.waitingToDispatch[t]},this),r.size(this.waitingToDispatch)&&this.doDispatchLoop(t)},i.prototype.waitForStores=function(t,n,e){if(!this.currentDispatch)throw new Error("Cannot wait unless an action is being dispatched");var i=r.findKey(this.stores,function(n){return n===t});if(n.indexOf(i)>-1)throw new Error("A store cannot wait on itself");var o=this.currentDispatch[i];if(o.waitingOn.length)throw new Error(i+" already waiting on stores");r.each(n,function(t){var n=this.currentDispatch[t];if(!this.stores[t])throw new Error("Cannot wait for non-existant store "+t);if(n.waitingOn.indexOf(i)>-1)throw new Error("Circular wait detected between "+i+" and "+t)},this),o.resolved=!1,o.waitingOn=r.uniq(o.waitingOn.concat(n)),o.waitCallback=e},t.exports=i},function(t,n,e){(function(t,r){function i(t,e){var r={seen:[],stylize:a};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),v(e)?r.showHidden=e:e&&n._extend(r,e),w(r.showHidden)&&(r.showHidden=!1),w(r.depth)&&(r.depth=2),w(r.colors)&&(r.colors=!1),w(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=o),s(r,t,r.depth)}function o(t,n){var e=i.styles[n];return e?"["+i.colors[e][0]+"m"+t+"["+i.colors[e][1]+"m":t}function a(t){return t}function u(t){var n={};return t.forEach(function(t){n[t]=!0}),n}function s(t,e,r){if(t.customInspect&&e&&C(e.inspect)&&e.inspect!==n.inspect&&(!e.constructor||e.constructor.prototype!==e)){var i=e.inspect(r,t);return b(i)||(i=s(t,i,r)),i}var o=l(t,e);if(o)return o;var a=Object.keys(e),v=u(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(e)),E(e)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return c(e);if(0===a.length){if(C(e)){var d=e.name?": "+e.name:"";return t.stylize("[Function"+d+"]","special")}if(x(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(k(e))return t.stylize(Date.prototype.toString.call(e),"date");if(E(e))return c(e)}var y="",m=!1,_=["{","}"];if(g(e)&&(m=!0,_=["[","]"]),C(e)){var w=e.name?": "+e.name:"";y=" [Function"+w+"]"}if(x(e)&&(y=" "+RegExp.prototype.toString.call(e)),k(e)&&(y=" "+Date.prototype.toUTCString.call(e)),E(e)&&(y=" "+c(e)),0===a.length&&(!m||0==e.length))return _[0]+y+_[1];if(0>r)return x(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special");t.seen.push(e);var j;return j=m?f(t,e,r,v,a):a.map(function(n){return p(t,e,r,v,n,m)}),t.seen.pop(),h(j,y,_)}function l(t,n){if(w(n))return t.stylize("undefined","undefined");if(b(n)){var e="'"+JSON.stringify(n).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(e,"string")}return m(n)?t.stylize(""+n,"number"):v(n)?t.stylize(""+n,"boolean"):d(n)?t.stylize("null","null"):void 0}function c(t){return"["+Error.prototype.toString.call(t)+"]"}function f(t,n,e,r,i){for(var o=[],a=0,u=n.length;u>a;++a)o.push(D(n,String(a))?p(t,n,e,r,String(a),!0):"");return i.forEach(function(i){i.match(/^\d+$/)||o.push(p(t,n,e,r,i,!0))}),o}function p(t,n,e,r,i,o){var a,u,l;if(l=Object.getOwnPropertyDescriptor(n,i)||{value:n[i]},l.get?u=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(u=t.stylize("[Setter]","special")),D(r,i)||(a="["+i+"]"),u||(t.seen.indexOf(l.value)<0?(u=d(e)?s(t,l.value,null):s(t,l.value,e-1),u.indexOf("\n")>-1&&(u=o?u.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+u.split("\n").map(function(t){return" "+t}).join("\n"))):u=t.stylize("[Circular]","special")),w(a)){if(o&&i.match(/^\d+$/))return u;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+u}function h(t,n,e){var r=0,i=t.reduce(function(t,n){return r++,n.indexOf("\n")>=0&&r++,t+n.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?e[0]+(""===n?"":n+"\n ")+" "+t.join(",\n ")+" "+e[1]:e[0]+n+" "+t.join(", ")+" "+e[1]}function g(t){return Array.isArray(t)}function v(t){return"boolean"==typeof t}function d(t){return null===t}function y(t){return null==t}function m(t){return"number"==typeof t}function b(t){return"string"==typeof t}function _(t){return"symbol"==typeof t}function w(t){return void 0===t}function x(t){return j(t)&&"[object RegExp]"===S(t)}function j(t){return"object"==typeof t&&null!==t}function k(t){return j(t)&&"[object Date]"===S(t)}function E(t){return j(t)&&("[object Error]"===S(t)||t instanceof Error)}function C(t){return"function"==typeof t}function O(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||"undefined"==typeof t}function S(t){return Object.prototype.toString.call(t)}function L(t){return 10>t?"0"+t.toString(10):t.toString(10)}function P(){var t=new Date,n=[L(t.getHours()),L(t.getMinutes()),L(t.getSeconds())].join(":");return[t.getDate(),I[t.getMonth()],n].join(" ")}function D(t,n){return Object.prototype.hasOwnProperty.call(t,n)}var A=/%[sdj%]/g;n.format=function(t){if(!b(t)){for(var n=[],e=0;e=o)return t;switch(t){case"%s":return String(r[e++]);case"%d":return Number(r[e++]);case"%j":try{return JSON.stringify(r[e++])}catch(n){return"[Circular]"}default:return t}}),u=r[e];o>e;u=r[++e])a+=d(u)||!j(u)?" "+u:" "+i(u);return a},n.deprecate=function(e,i){function o(){if(!a){if(r.throwDeprecation)throw new Error(i);r.traceDeprecation?console.trace(i):console.error(i),a=!0}return e.apply(this,arguments)}if(w(t.process))return function(){return n.deprecate(e,i).apply(this,arguments)};if(r.noDeprecation===!0)return e;var a=!1;return o};var F,T={};n.debuglog=function(t){if(w(F)&&(F=r.env.NODE_DEBUG||""),t=t.toUpperCase(),!T[t])if(new RegExp("\\b"+t+"\\b","i").test(F)){var e=r.pid;T[t]=function(){var r=n.format.apply(n,arguments);console.error("%s %d: %s",t,e,r)}}else T[t]=function(){};return T[t]},n.inspect=i,i.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]},i.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},n.isArray=g,n.isBoolean=v,n.isNull=d,n.isNullOrUndefined=y,n.isNumber=m,n.isString=b,n.isSymbol=_,n.isUndefined=w,n.isRegExp=x,n.isObject=j,n.isDate=k,n.isError=E,n.isFunction=C,n.isPrimitive=O,n.isBuffer=e(14);var I=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];n.log=function(){console.log("%s - %s",P(),n.format.apply(n,arguments))},n.inherits=e(13),n._extend=function(t,n){if(!n||!j(n))return t;for(var e=Object.keys(n),r=e.length;r--;)t[e[r]]=n[e[r]];return t}}).call(n,function(){return this}(),e(12))},function(t,n,e){var r=e(1),i=e(7),o=e(3),a=["flux","waitFor"],u=function(t){r.each(a,function(n){if(t[n])throw new Error("Reserved key '"+n+"' found in store definition")});var n=function(n){n=n||{},i.call(this);for(var e in t)"actions"===e?this.__actions__=t[e]:"initialize"===e||(this[e]="function"==typeof t[e]?t[e].bind(this):t[e]);t.initialize&&t.initialize.call(this,n)};return o.inherits(n,i),n};t.exports=u},function(t,n,e){var r=e(2),i=function(t,n){var e=new r(t),i={dispatch:function(t,n){e.dispatch({type:t,payload:n})}};this.dispatcher=e,this.actions={};for(var o in n)this.actions[o]=n[o].bind(i);for(o in t)t[o].flux=this};i.prototype.store=function(t){return this.dispatcher.stores[t]},t.exports=i},function(t){var n=function(t){return{propTypes:{flux:t.PropTypes.object.isRequired},childContextTypes:{flux:t.PropTypes.object},getChildContext:function(){return{flux:this.props.flux}}}};n.componentWillMount=function(){throw new Error("Fluxbox.FluxMixin is a function that takes React as a parameter and returns the mixin, e.g.: mixins[Fluxbox.FluxMixin(React)]")},t.exports=n},function(t,n,e){function r(t){this.dispatcher=t,this.__actions__={},i.call(this)}var i=e(11).EventEmitter,o=e(3);o.inherits(r,i),r.prototype.__handleAction__=function(t){var n;(n=this.__actions__[t.type])&&("function"==typeof n?n.call(this,t.payload,t.type):n&&"function"==typeof this[n]&&this[n].call(this,t.payload,t.type))},r.prototype.bindActions=function(){var t=Array.prototype.slice.call(arguments);if(t.length%2!==0)throw new Error("bindActions must take an even number of arguments.");for(var n=0;n",license:"MIT",devDependencies:{chai:"^1.9.1","css-loader":"^0.6.12",envify:"^1.2.1",jsdom:"^0.10.5","json-loader":"^0.5.0","jsx-loader":"^0.10.2",jsxhint:"^0.4.9",less:"^1.7.0","less-loader":"^0.7.3",mocha:"^1.18.2",react:"^0.10.0",sinon:"^1.9.1","sinon-chai":"^2.5.0","style-loader":"^0.6.3",webpack:"^1.1.11","webpack-dev-server":"^1.2.7",wintersmith:"^2.0.10","wintersmith-ejs":"^0.1.4","wintersmith-less":"^0.2.2"},dependencies:{lodash:"^2.4.1"}}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function e(t){return"function"==typeof t}function r(t){return"number"==typeof t}function i(t){return"object"==typeof t&&null!==t}function o(t){return void 0===t}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(t){if(!r(t)||0>t||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},n.prototype.emit=function(t){var n,r,a,u,s,l;if(this._events||(this._events={}),"error"===t&&(!this._events.error||i(this._events.error)&&!this._events.error.length))throw n=arguments[1],n instanceof Error?n:TypeError('Uncaught, unspecified "error" event.');if(r=this._events[t],o(r))return!1;if(e(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:for(a=arguments.length,u=new Array(a-1),s=1;a>s;s++)u[s-1]=arguments[s];r.apply(this,u)}else if(i(r)){for(a=arguments.length,u=new Array(a-1),s=1;a>s;s++)u[s-1]=arguments[s];for(l=r.slice(),a=l.length,s=0;a>s;s++)l[s].apply(this,u)}return!0},n.prototype.addListener=function(t,r){var a;if(!e(r))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,e(r.listener)?r.listener:r),this._events[t]?i(this._events[t])?this._events[t].push(r):this._events[t]=[this._events[t],r]:this._events[t]=r,i(this._events[t])&&!this._events[t].warned){var a;a=o(this._maxListeners)?n.defaultMaxListeners:this._maxListeners,a&&a>0&&this._events[t].length>a&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace())}return this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,n){function r(){this.removeListener(t,r),i||(i=!0,n.apply(this,arguments))}if(!e(n))throw TypeError("listener must be a function");var i=!1;return r.listener=n,this.on(t,r),this},n.prototype.removeListener=function(t,n){var r,o,a,u;if(!e(n))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(r=this._events[t],a=r.length,o=-1,r===n||e(r.listener)&&r.listener===n)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,n);else if(i(r)){for(u=a;u-->0;)if(r[u]===n||r[u].listener&&r[u].listener===n){o=u;break}if(0>o)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(o,1),this._events.removeListener&&this.emit("removeListener",t,n)}return this},n.prototype.removeAllListeners=function(t){var n,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(n in this._events)"removeListener"!==n&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[t],e(r))this.removeListener(t,r);else for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){var n;return n=this._events&&this._events[t]?e(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.listenerCount=function(t,n){var r;return r=t._events&&t._events[n]?e(t._events[n])?1:t._events[n].length:0}},function(t){function n(){}var e=t.exports={};e.nextTick=function(){var t="undefined"!=typeof window&&window.setImmediate,n="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(t)return function(t){return window.setImmediate(t)};if(n){var e=[];return window.addEventListener("message",function(t){var n=t.source;if((n===window||null===n)&&"process-tick"===t.data&&(t.stopPropagation(),e.length>0)){var r=e.shift();r()}},!0),function(t){e.push(t),window.postMessage("process-tick","*")}}return function(t){setTimeout(t,0)}}(),e.title="browser",e.browser=!0,e.env={},e.argv=[],e.on=n,e.once=n,e.off=n,e.emit=n,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")}},function(t){t.exports="function"==typeof Object.create?function(t,n){t.super_=n,t.prototype=Object.create(n.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,n){t.super_=n;var e=function(){};e.prototype=n.prototype,t.prototype=new e,t.prototype.constructor=t}},function(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}}])}); /* //@ sourceMappingURL=fluxbox.min.js.map */ \ No newline at end of file diff --git a/build/fluxbox.min.js.map b/build/fluxbox.min.js.map index c4c8509..23886b8 100644 --- a/build/fluxbox.min.js.map +++ b/build/fluxbox.min.js.map @@ -1 +1 @@ -{"version":3,"file":"fluxbox.min.js","sources":["webpack/universalModuleDefinition","fluxbox.min.js","webpack/bootstrap 54b4cb0f1364ded0df90*","./index.js","./~/lodash/dist/lodash.compat.js","./lib/dispatcher.js","(webpack)/~/node-libs-browser/~/util/util.js","./lib/create_store.js","./lib/flux.js","./lib/flux_mixin.js","./lib/store.js","./lib/store_watch_mixin.js","./package.json","(webpack)/buildin/module.js","(webpack)/~/node-libs-browser/~/events/events.js","(webpack)/~/node-libs-browser/~/process/browser.js","(webpack)/~/node-libs-browser/~/util/~/inherits/inherits_browser.js","(webpack)/~/node-libs-browser/~/util/support/isBufferBrowser.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","Dispatcher","Flux","FluxMixin","StoreWatchMixin","createStore","Fluxbox","version","__WEBPACK_AMD_DEFINE_RESULT__","global","baseIndexOf","array","value","fromIndex","index","length","cacheIndexOf","cache","type","key","keyPrefix","cachePush","typeCache","push","charAtCallback","charCodeAt","compareAscending","a","b","ac","criteria","bc","other","createCache","first","mid","last","getObject","result","escapeStringChar","match","stringEscapes","getArray","arrayPool","pop","objectPool","false","null","number","object","string","true","undefined","isNode","toString","releaseArray","maxPoolSize","releaseObject","slice","start","end","Array","runInContext","context","lodash","isArray","hasOwnProperty","lodashWrapper","chainAll","__chain__","__wrapped__","baseBind","bindData","bound","partialArgs","args","apply","arguments","thisBinding","baseCreate","func","prototype","isObject","thisArg","setBindData","baseClone","isDeep","callback","stackA","stackB","isObj","className","cloneableClasses","support","nodeClass","ctor","ctorByClass","boolClass","dateClass","numberClass","stringClass","regexpClass","source","reFlags","exec","lastIndex","isArr","initedStack","assign","input","baseEach","forOwn","objValue","nativeCreate","baseCreateCallback","argCount","identity","__bindData__","funcNames","name","funcDecomp","fnToString","reFuncName","test","reThis","collection","accumulator","bind","baseCreateWrapper","isBind","partialRightArgs","isCurry","arity","bitmask","isCurryBound","isBindKey","baseDifference","values","indexOf","getIndexOf","isLarge","largeArraySize","baseFlatten","isShallow","isStrict","isArguments","valIndex","valLength","resIndex","baseIsEqual","isWhere","otherType","objectTypes","otherClass","argsClass","objectClass","String","arrayClass","aWrapped","bWrapped","ctorA","argsObject","Object","constructor","ctorB","isFunction","size","forIn","baseMerge","forEach","found","isPlainObject","stackLength","baseRandom","min","max","floor","nativeRandom","baseUniq","isSorted","seen","computed","createAggregator","setter","createCallback","createWrapper","isPartial","isPartialRight","TypeError","unshift","creater","createIterator","iteratorData","shadowedProps","bottom","loop","top","init","useHas","firstArg","Function","iteratorTemplate","errorClass","errorProto","indicatorObject","isString","keys","objectProto","nonEnumProps","stringProto","escapeHtmlChar","htmlEscapes","isNative","reNative","shimIsPlainObject","ownLast","unescapeHtmlChar","htmlUnescapes","clone","cloneDeep","create","properties","findKey","findLastKey","forOwnRight","forInRight","pairs","props","functions","sort","has","invert","isBoolean","isDate","isElement","nodeType","isEmpty","splice","isEqual","isFinite","nativeIsFinite","nativeIsNaN","parseFloat","isNaN","isNumber","isNull","isRegExp","isUndefined","mapValues","merge","sources","omit","pick","transform","proto","at","unindexedChars","split","contains","target","nativeMax","every","filter","find","findLast","forEachRight","iterable","invoke","methodName","isFunc","map","Infinity","current","reduce","noaccum","reduceRight","reject","sample","n","guard","shuffle","nativeMin","rand","some","sortBy","toArray","compact","difference","findIndex","findLastIndex","flatten","sortedIndex","initial","intersection","argsIndex","argsLength","caches","trustIndexOf","outer","lastIndexOf","pull","range","step","ceil","remove","rest","low","high","union","uniq","without","xor","concat","zip","pluck","zipObject","after","bindAll","funcs","bindKey","compose","curry","debounce","wait","options","maxTimeoutId","stamp","timeoutId","trailingCall","lastCalled","maxWait","trailing","leading","delayed","remaining","now","clearTimeout","isCalled","setTimeout","maxDelayed","leadingCall","defer","delay","memoize","resolver","memoized","once","ran","partial","partialRight","throttle","debounceOptions","wrap","wrapper","constant","property","escape","replace","reUnescapedHtml","mixin","chain","methodNames","noConflict","_","oldDash","noop","random","floating","noMin","noMax","template","text","data","settings","templateSettings","defaults","isEvaluating","imports","importsKeys","importsValues","interpolate","reNoMatch","reDelimiters","RegExp","reInterpolate","reEsTemplate","evaluate","escapeValue","interpolateValue","esTemplateValue","evaluateValue","offset","reUnescapedString","variable","hasVariable","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","sourceURL","templateCounter","e","times","unescape","reEscapedHtml","uniqueId","prefix","idCounter","tap","interceptor","wrapperChain","wrapperToString","wrapperValueOf","contextProps","Boolean","Date","Error","Math","Number","arrayRef","getPrototypeOf","propertyIsEnumerable","defineProperty","o","nativeIsArray","nativeKeys","nativeParseInt","parseInt","funcClass","toLocaleString","valueOf","x","0","y","enumErrorProps","enumPrototypes","WinRTError","nonEnumArgs","nonEnumShadows","spliceObjects","document","obj","__p","conditions","join","k","descriptor","shimKeys","eachIteratorOptions","defaultsIteratorOptions","forOwnIteratorOptions","&","<",">","\"","'","objProto","countBy","groupBy","indexBy","where","getTime","whitespace","radix","reLeadingSpacesAndZeros","collect","drop","each","eachRight","extend","methods","select","tail","unique","unzip","all","any","detect","findWhere","foldl","foldr","include","inject","take","head","callbackable","VERSION","isSplice","configurable","enumerable","writable","boolean","function","\\","\n","\r","\t","
","
","window","freeExports","freeModule","freeGlobal","stores","currentDispatch","waitingToDispatch","dispatcher","dispatch","action","resolved","waitingOn","waitCallback","doDispatchLoop","canBeDispatchedTo","removeFromDispatchQueue","dispatchedThisLoop","fn","__handleAction__","storesWithCircularWaits","waitForStores","store","waitingStoreName","val","storeName","storeDispatch","process","inspect","opts","ctx","stylize","stylizeNoColor","depth","colors","showHidden","_extend","customInspect","stylizeWithColor","formatValue","str","styleType","style","styles","arrayToHash","hash","recurseTimes","ret","primitive","formatPrimitive","visibleKeys","getOwnPropertyNames","isError","formatError","base","braces","toUTCString","output","formatArray","formatProperty","reduceToSingleString","simple","JSON","stringify","i","l","desc","getOwnPropertyDescriptor","get","set","line","substr","numLinesEst","prev","cur","ar","arg","isNullOrUndefined","isSymbol","re","objectToString","d","isPrimitive","pad","timestamp","time","getHours","getMinutes","getSeconds","getDate","months","getMonth","prop","formatRegExp","format","f","objects","len","deprecate","msg","deprecated","warned","throwDeprecation","traceDeprecation","console","trace","error","noDeprecation","debugEnviron","debugs","debuglog","env","NODE_DEBUG","toUpperCase","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","date","regexp","isBuffer","log","inherits","origin","add","Store","util","RESERVED_KEYS","spec","__actions__","initialize","actions","dispatchBinder","payload","flux","React","propTypes","PropTypes","isRequired","childContextTypes","getChildContext","componentWillMount","EventEmitter","handler","bindActions","waitFor","storeNames","on","_setStateFromFlux","componentWillUnmount","removeListener","setState","getStateFromFlux","getInitialState","description","repository","url","main","scripts","jshint","build","preview-site","build-site","keywords","author","license","devDependencies","chai","css-loader","envify","jsdom","json-loader","jsx-loader","jsxhint","less","less-loader","mocha","react","sinon","sinon-chai","style-loader","webpack","webpack-dev-server","wintersmith","wintersmith-ejs","wintersmith-less","dependencies","webpackPolyfill","paths","children","_events","_maxListeners","defaultMaxListeners","setMaxListeners","emit","er","listeners","addListener","listener","newListener","g","fired","list","position","removeAllListeners","listenerCount","emitter","nextTick","canSetImmediate","setImmediate","canPost","postMessage","addEventListener","queue","ev","stopPropagation","shift","title","browser","argv","off","binding","cwd","chdir","superCtor","super_","TempCtor","copy","fill","readUInt8"],"mappings":"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","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Fluxbox\"] = factory();\n\telse\n\t\troot[\"Fluxbox\"] = factory();\n})(this, function() {\nreturn ","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Fluxbox\"] = factory();\n\telse\n\t\troot[\"Fluxbox\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/ \t\t\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\t\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/ \t\t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/******/ \t\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/ \t\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/ \t\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/ \t\n/******/ \t\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Dispatcher = __webpack_require__(2),\n\t Flux = __webpack_require__(5),\n\t FluxMixin = __webpack_require__(6),\n\t StoreWatchMixin = __webpack_require__(8),\n\t createStore = __webpack_require__(4);\n\t\n\tvar Fluxbox = {\n\t Dispatcher: Dispatcher,\n\t Flux: Flux,\n\t FluxMixin: FluxMixin,\n\t StoreWatchMixin: StoreWatchMixin,\n\t createStore: createStore,\n\t version: __webpack_require__(9).version\n\t};\n\t\n\tmodule.exports = Fluxbox;\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/**\n\t * @license\n\t * Lo-Dash 2.4.1 (Custom Build) \n\t * Build: `lodash -o ./dist/lodash.compat.js`\n\t * Copyright 2012-2013 The Dojo Foundation \n\t * Based on Underscore.js 1.5.2 \n\t * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t * Available under MIT license \n\t */\n\t;(function() {\n\t\n\t /** Used as a safe reference for `undefined` in pre ES5 environments */\n\t var undefined;\n\t\n\t /** Used to pool arrays and objects used internally */\n\t var arrayPool = [],\n\t objectPool = [];\n\t\n\t /** Used to generate unique IDs */\n\t var idCounter = 0;\n\t\n\t /** Used internally to indicate various things */\n\t var indicatorObject = {};\n\t\n\t /** Used to prefix keys to avoid issues with `__proto__` and properties on `Object.prototype` */\n\t var keyPrefix = +new Date + '';\n\t\n\t /** Used as the size when optimizations are enabled for large arrays */\n\t var largeArraySize = 75;\n\t\n\t /** Used as the max size of the `arrayPool` and `objectPool` */\n\t var maxPoolSize = 40;\n\t\n\t /** Used to detect and test whitespace */\n\t var whitespace = (\n\t // whitespace\n\t ' \\t\\x0B\\f\\xA0\\ufeff' +\n\t\n\t // line terminators\n\t '\\n\\r\\u2028\\u2029' +\n\t\n\t // unicode category \"Zs\" space separators\n\t '\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000'\n\t );\n\t\n\t /** Used to match empty string literals in compiled template source */\n\t var reEmptyStringLeading = /\\b__p \\+= '';/g,\n\t reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n\t reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\t\n\t /**\n\t * Used to match ES6 template delimiters\n\t * http://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-string-literals\n\t */\n\t var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\t\n\t /** Used to match regexp flags from their coerced string values */\n\t var reFlags = /\\w*$/;\n\t\n\t /** Used to detected named functions */\n\t var reFuncName = /^\\s*function[ \\n\\r\\t]+\\w/;\n\t\n\t /** Used to match \"interpolate\" template delimiters */\n\t var reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\t\n\t /** Used to match leading whitespace and zeros to be removed */\n\t var reLeadingSpacesAndZeros = RegExp('^[' + whitespace + ']*0+(?=.$)');\n\t\n\t /** Used to ensure capturing order of template delimiters */\n\t var reNoMatch = /($^)/;\n\t\n\t /** Used to detect functions containing a `this` reference */\n\t var reThis = /\\bthis\\b/;\n\t\n\t /** Used to match unescaped characters in compiled string literals */\n\t var reUnescapedString = /['\\n\\r\\t\\u2028\\u2029\\\\]/g;\n\t\n\t /** Used to assign default `context` object properties */\n\t var contextProps = [\n\t 'Array', 'Boolean', 'Date', 'Error', 'Function', 'Math', 'Number', 'Object',\n\t 'RegExp', 'String', '_', 'attachEvent', 'clearTimeout', 'isFinite', 'isNaN',\n\t 'parseInt', 'setTimeout'\n\t ];\n\t\n\t /** Used to fix the JScript [[DontEnum]] bug */\n\t var shadowedProps = [\n\t 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n\t 'toLocaleString', 'toString', 'valueOf'\n\t ];\n\t\n\t /** Used to make template sourceURLs easier to identify */\n\t var templateCounter = 0;\n\t\n\t /** `Object#toString` result shortcuts */\n\t var argsClass = '[object Arguments]',\n\t arrayClass = '[object Array]',\n\t boolClass = '[object Boolean]',\n\t dateClass = '[object Date]',\n\t errorClass = '[object Error]',\n\t funcClass = '[object Function]',\n\t numberClass = '[object Number]',\n\t objectClass = '[object Object]',\n\t regexpClass = '[object RegExp]',\n\t stringClass = '[object String]';\n\t\n\t /** Used to identify object classifications that `_.clone` supports */\n\t var cloneableClasses = {};\n\t cloneableClasses[funcClass] = false;\n\t cloneableClasses[argsClass] = cloneableClasses[arrayClass] =\n\t cloneableClasses[boolClass] = cloneableClasses[dateClass] =\n\t cloneableClasses[numberClass] = cloneableClasses[objectClass] =\n\t cloneableClasses[regexpClass] = cloneableClasses[stringClass] = true;\n\t\n\t /** Used as an internal `_.debounce` options object */\n\t var debounceOptions = {\n\t 'leading': false,\n\t 'maxWait': 0,\n\t 'trailing': false\n\t };\n\t\n\t /** Used as the property descriptor for `__bindData__` */\n\t var descriptor = {\n\t 'configurable': false,\n\t 'enumerable': false,\n\t 'value': null,\n\t 'writable': false\n\t };\n\t\n\t /** Used as the data object for `iteratorTemplate` */\n\t var iteratorData = {\n\t 'args': '',\n\t 'array': null,\n\t 'bottom': '',\n\t 'firstArg': '',\n\t 'init': '',\n\t 'keys': null,\n\t 'loop': '',\n\t 'shadowedProps': null,\n\t 'support': null,\n\t 'top': '',\n\t 'useHas': false\n\t };\n\t\n\t /** Used to determine if values are of the language type Object */\n\t var objectTypes = {\n\t 'boolean': false,\n\t 'function': true,\n\t 'object': true,\n\t 'number': false,\n\t 'string': false,\n\t 'undefined': false\n\t };\n\t\n\t /** Used to escape characters for inclusion in compiled string literals */\n\t var stringEscapes = {\n\t '\\\\': '\\\\',\n\t \"'\": \"'\",\n\t '\\n': 'n',\n\t '\\r': 'r',\n\t '\\t': 't',\n\t '\\u2028': 'u2028',\n\t '\\u2029': 'u2029'\n\t };\n\t\n\t /** Used as a reference to the global object */\n\t var root = (objectTypes[typeof window] && window) || this;\n\t\n\t /** Detect free variable `exports` */\n\t var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;\n\t\n\t /** Detect free variable `module` */\n\t var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\t\n\t /** Detect the popular CommonJS extension `module.exports` */\n\t var moduleExports = freeModule && freeModule.exports === freeExports && freeExports;\n\t\n\t /** Detect free variable `global` from Node.js or Browserified code and use it as `root` */\n\t var freeGlobal = objectTypes[typeof global] && global;\n\t if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) {\n\t root = freeGlobal;\n\t }\n\t\n\t /*--------------------------------------------------------------------------*/\n\t\n\t /**\n\t * The base implementation of `_.indexOf` without support for binary searches\n\t * or `fromIndex` constraints.\n\t *\n\t * @private\n\t * @param {Array} array The array to search.\n\t * @param {*} value The value to search for.\n\t * @param {number} [fromIndex=0] The index to search from.\n\t * @returns {number} Returns the index of the matched value or `-1`.\n\t */\n\t function baseIndexOf(array, value, fromIndex) {\n\t var index = (fromIndex || 0) - 1,\n\t length = array ? array.length : 0;\n\t\n\t while (++index < length) {\n\t if (array[index] === value) {\n\t return index;\n\t }\n\t }\n\t return -1;\n\t }\n\t\n\t /**\n\t * An implementation of `_.contains` for cache objects that mimics the return\n\t * signature of `_.indexOf` by returning `0` if the value is found, else `-1`.\n\t *\n\t * @private\n\t * @param {Object} cache The cache object to inspect.\n\t * @param {*} value The value to search for.\n\t * @returns {number} Returns `0` if `value` is found, else `-1`.\n\t */\n\t function cacheIndexOf(cache, value) {\n\t var type = typeof value;\n\t cache = cache.cache;\n\t\n\t if (type == 'boolean' || value == null) {\n\t return cache[value] ? 0 : -1;\n\t }\n\t if (type != 'number' && type != 'string') {\n\t type = 'object';\n\t }\n\t var key = type == 'number' ? value : keyPrefix + value;\n\t cache = (cache = cache[type]) && cache[key];\n\t\n\t return type == 'object'\n\t ? (cache && baseIndexOf(cache, value) > -1 ? 0 : -1)\n\t : (cache ? 0 : -1);\n\t }\n\t\n\t /**\n\t * Adds a given value to the corresponding cache object.\n\t *\n\t * @private\n\t * @param {*} value The value to add to the cache.\n\t */\n\t function cachePush(value) {\n\t var cache = this.cache,\n\t type = typeof value;\n\t\n\t if (type == 'boolean' || value == null) {\n\t cache[value] = true;\n\t } else {\n\t if (type != 'number' && type != 'string') {\n\t type = 'object';\n\t }\n\t var key = type == 'number' ? value : keyPrefix + value,\n\t typeCache = cache[type] || (cache[type] = {});\n\t\n\t if (type == 'object') {\n\t (typeCache[key] || (typeCache[key] = [])).push(value);\n\t } else {\n\t typeCache[key] = true;\n\t }\n\t }\n\t }\n\t\n\t /**\n\t * Used by `_.max` and `_.min` as the default callback when a given\n\t * collection is a string value.\n\t *\n\t * @private\n\t * @param {string} value The character to inspect.\n\t * @returns {number} Returns the code unit of given character.\n\t */\n\t function charAtCallback(value) {\n\t return value.charCodeAt(0);\n\t }\n\t\n\t /**\n\t * Used by `sortBy` to compare transformed `collection` elements, stable sorting\n\t * them in ascending order.\n\t *\n\t * @private\n\t * @param {Object} a The object to compare to `b`.\n\t * @param {Object} b The object to compare to `a`.\n\t * @returns {number} Returns the sort order indicator of `1` or `-1`.\n\t */\n\t function compareAscending(a, b) {\n\t var ac = a.criteria,\n\t bc = b.criteria,\n\t index = -1,\n\t length = ac.length;\n\t\n\t while (++index < length) {\n\t var value = ac[index],\n\t other = bc[index];\n\t\n\t if (value !== other) {\n\t if (value > other || typeof value == 'undefined') {\n\t return 1;\n\t }\n\t if (value < other || typeof other == 'undefined') {\n\t return -1;\n\t }\n\t }\n\t }\n\t // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n\t // that causes it, under certain circumstances, to return the same value for\n\t // `a` and `b`. See https://github.com/jashkenas/underscore/pull/1247\n\t //\n\t // This also ensures a stable sort in V8 and other engines.\n\t // See http://code.google.com/p/v8/issues/detail?id=90\n\t return a.index - b.index;\n\t }\n\t\n\t /**\n\t * Creates a cache object to optimize linear searches of large arrays.\n\t *\n\t * @private\n\t * @param {Array} [array=[]] The array to search.\n\t * @returns {null|Object} Returns the cache object or `null` if caching should not be used.\n\t */\n\t function createCache(array) {\n\t var index = -1,\n\t length = array.length,\n\t first = array[0],\n\t mid = array[(length / 2) | 0],\n\t last = array[length - 1];\n\t\n\t if (first && typeof first == 'object' &&\n\t mid && typeof mid == 'object' && last && typeof last == 'object') {\n\t return false;\n\t }\n\t var cache = getObject();\n\t cache['false'] = cache['null'] = cache['true'] = cache['undefined'] = false;\n\t\n\t var result = getObject();\n\t result.array = array;\n\t result.cache = cache;\n\t result.push = cachePush;\n\t\n\t while (++index < length) {\n\t result.push(array[index]);\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Used by `template` to escape characters for inclusion in compiled\n\t * string literals.\n\t *\n\t * @private\n\t * @param {string} match The matched character to escape.\n\t * @returns {string} Returns the escaped character.\n\t */\n\t function escapeStringChar(match) {\n\t return '\\\\' + stringEscapes[match];\n\t }\n\t\n\t /**\n\t * Gets an array from the array pool or creates a new one if the pool is empty.\n\t *\n\t * @private\n\t * @returns {Array} The array from the pool.\n\t */\n\t function getArray() {\n\t return arrayPool.pop() || [];\n\t }\n\t\n\t /**\n\t * Gets an object from the object pool or creates a new one if the pool is empty.\n\t *\n\t * @private\n\t * @returns {Object} The object from the pool.\n\t */\n\t function getObject() {\n\t return objectPool.pop() || {\n\t 'array': null,\n\t 'cache': null,\n\t 'criteria': null,\n\t 'false': false,\n\t 'index': 0,\n\t 'null': false,\n\t 'number': null,\n\t 'object': null,\n\t 'push': null,\n\t 'string': null,\n\t 'true': false,\n\t 'undefined': false,\n\t 'value': null\n\t };\n\t }\n\t\n\t /**\n\t * Checks if `value` is a DOM node in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is a DOM node, else `false`.\n\t */\n\t function isNode(value) {\n\t // IE < 9 presents DOM nodes as `Object` objects except they have `toString`\n\t // methods that are `typeof` \"string\" and still can coerce nodes to strings\n\t return typeof value.toString != 'function' && typeof (value + '') == 'string';\n\t }\n\t\n\t /**\n\t * Releases the given array back to the array pool.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to release.\n\t */\n\t function releaseArray(array) {\n\t array.length = 0;\n\t if (arrayPool.length < maxPoolSize) {\n\t arrayPool.push(array);\n\t }\n\t }\n\t\n\t /**\n\t * Releases the given object back to the object pool.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to release.\n\t */\n\t function releaseObject(object) {\n\t var cache = object.cache;\n\t if (cache) {\n\t releaseObject(cache);\n\t }\n\t object.array = object.cache = object.criteria = object.object = object.number = object.string = object.value = null;\n\t if (objectPool.length < maxPoolSize) {\n\t objectPool.push(object);\n\t }\n\t }\n\t\n\t /**\n\t * Slices the `collection` from the `start` index up to, but not including,\n\t * the `end` index.\n\t *\n\t * Note: This function is used instead of `Array#slice` to support node lists\n\t * in IE < 9 and to ensure dense arrays are returned.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to slice.\n\t * @param {number} start The start index.\n\t * @param {number} end The end index.\n\t * @returns {Array} Returns the new array.\n\t */\n\t function slice(array, start, end) {\n\t start || (start = 0);\n\t if (typeof end == 'undefined') {\n\t end = array ? array.length : 0;\n\t }\n\t var index = -1,\n\t length = end - start || 0,\n\t result = Array(length < 0 ? 0 : length);\n\t\n\t while (++index < length) {\n\t result[index] = array[start + index];\n\t }\n\t return result;\n\t }\n\t\n\t /*--------------------------------------------------------------------------*/\n\t\n\t /**\n\t * Create a new `lodash` function using the given context object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @param {Object} [context=root] The context object.\n\t * @returns {Function} Returns the `lodash` function.\n\t */\n\t function runInContext(context) {\n\t // Avoid issues with some ES3 environments that attempt to use values, named\n\t // after built-in constructors like `Object`, for the creation of literals.\n\t // ES5 clears this up by stating that literals must use built-in constructors.\n\t // See http://es5.github.io/#x11.1.5.\n\t context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root;\n\t\n\t /** Native constructor references */\n\t var Array = context.Array,\n\t Boolean = context.Boolean,\n\t Date = context.Date,\n\t Error = context.Error,\n\t Function = context.Function,\n\t Math = context.Math,\n\t Number = context.Number,\n\t Object = context.Object,\n\t RegExp = context.RegExp,\n\t String = context.String,\n\t TypeError = context.TypeError;\n\t\n\t /**\n\t * Used for `Array` method references.\n\t *\n\t * Normally `Array.prototype` would suffice, however, using an array literal\n\t * avoids issues in Narwhal.\n\t */\n\t var arrayRef = [];\n\t\n\t /** Used for native method references */\n\t var errorProto = Error.prototype,\n\t objectProto = Object.prototype,\n\t stringProto = String.prototype;\n\t\n\t /** Used to restore the original `_` reference in `noConflict` */\n\t var oldDash = context._;\n\t\n\t /** Used to resolve the internal [[Class]] of values */\n\t var toString = objectProto.toString;\n\t\n\t /** Used to detect if a method is native */\n\t var reNative = RegExp('^' +\n\t String(toString)\n\t .replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\t .replace(/toString| for [^\\]]+/g, '.*?') + '$'\n\t );\n\t\n\t /** Native method shortcuts */\n\t var ceil = Math.ceil,\n\t clearTimeout = context.clearTimeout,\n\t floor = Math.floor,\n\t fnToString = Function.prototype.toString,\n\t getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf,\n\t hasOwnProperty = objectProto.hasOwnProperty,\n\t push = arrayRef.push,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t setTimeout = context.setTimeout,\n\t splice = arrayRef.splice,\n\t unshift = arrayRef.unshift;\n\t\n\t /** Used to set meta data on functions */\n\t var defineProperty = (function() {\n\t // IE 8 only accepts DOM elements\n\t try {\n\t var o = {},\n\t func = isNative(func = Object.defineProperty) && func,\n\t result = func(o, o, o) && func;\n\t } catch(e) { }\n\t return result;\n\t }());\n\t\n\t /* Native method shortcuts for methods with the same name as other `lodash` methods */\n\t var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate,\n\t nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray,\n\t nativeIsFinite = context.isFinite,\n\t nativeIsNaN = context.isNaN,\n\t nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys,\n\t nativeMax = Math.max,\n\t nativeMin = Math.min,\n\t nativeParseInt = context.parseInt,\n\t nativeRandom = Math.random;\n\t\n\t /** Used to lookup a built-in constructor by [[Class]] */\n\t var ctorByClass = {};\n\t ctorByClass[arrayClass] = Array;\n\t ctorByClass[boolClass] = Boolean;\n\t ctorByClass[dateClass] = Date;\n\t ctorByClass[funcClass] = Function;\n\t ctorByClass[objectClass] = Object;\n\t ctorByClass[numberClass] = Number;\n\t ctorByClass[regexpClass] = RegExp;\n\t ctorByClass[stringClass] = String;\n\t\n\t /** Used to avoid iterating non-enumerable properties in IE < 9 */\n\t var nonEnumProps = {};\n\t nonEnumProps[arrayClass] = nonEnumProps[dateClass] = nonEnumProps[numberClass] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\n\t nonEnumProps[boolClass] = nonEnumProps[stringClass] = { 'constructor': true, 'toString': true, 'valueOf': true };\n\t nonEnumProps[errorClass] = nonEnumProps[funcClass] = nonEnumProps[regexpClass] = { 'constructor': true, 'toString': true };\n\t nonEnumProps[objectClass] = { 'constructor': true };\n\t\n\t (function() {\n\t var length = shadowedProps.length;\n\t while (length--) {\n\t var key = shadowedProps[length];\n\t for (var className in nonEnumProps) {\n\t if (hasOwnProperty.call(nonEnumProps, className) && !hasOwnProperty.call(nonEnumProps[className], key)) {\n\t nonEnumProps[className][key] = false;\n\t }\n\t }\n\t }\n\t }());\n\t\n\t /*--------------------------------------------------------------------------*/\n\t\n\t /**\n\t * Creates a `lodash` object which wraps the given value to enable intuitive\n\t * method chaining.\n\t *\n\t * In addition to Lo-Dash methods, wrappers also have the following `Array` methods:\n\t * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, `splice`,\n\t * and `unshift`\n\t *\n\t * Chaining is supported in custom builds as long as the `value` method is\n\t * implicitly or explicitly included in the build.\n\t *\n\t * The chainable wrapper functions are:\n\t * `after`, `assign`, `bind`, `bindAll`, `bindKey`, `chain`, `compact`,\n\t * `compose`, `concat`, `countBy`, `create`, `createCallback`, `curry`,\n\t * `debounce`, `defaults`, `defer`, `delay`, `difference`, `filter`, `flatten`,\n\t * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`,\n\t * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`,\n\t * `invoke`, `keys`, `map`, `max`, `memoize`, `merge`, `min`, `object`, `omit`,\n\t * `once`, `pairs`, `partial`, `partialRight`, `pick`, `pluck`, `pull`, `push`,\n\t * `range`, `reject`, `remove`, `rest`, `reverse`, `shuffle`, `slice`, `sort`,\n\t * `sortBy`, `splice`, `tap`, `throttle`, `times`, `toArray`, `transform`,\n\t * `union`, `uniq`, `unshift`, `unzip`, `values`, `where`, `without`, `wrap`,\n\t * and `zip`\n\t *\n\t * The non-chainable wrapper functions are:\n\t * `clone`, `cloneDeep`, `contains`, `escape`, `every`, `find`, `findIndex`,\n\t * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `has`, `identity`,\n\t * `indexOf`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`,\n\t * `isEmpty`, `isEqual`, `isFinite`, `isFunction`, `isNaN`, `isNull`, `isNumber`,\n\t * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, `join`,\n\t * `lastIndexOf`, `mixin`, `noConflict`, `parseInt`, `pop`, `random`, `reduce`,\n\t * `reduceRight`, `result`, `shift`, `size`, `some`, `sortedIndex`, `runInContext`,\n\t * `template`, `unescape`, `uniqueId`, and `value`\n\t *\n\t * The wrapper functions `first` and `last` return wrapped values when `n` is\n\t * provided, otherwise they return unwrapped values.\n\t *\n\t * Explicit chaining can be enabled by using the `_.chain` method.\n\t *\n\t * @name _\n\t * @constructor\n\t * @category Chaining\n\t * @param {*} value The value to wrap in a `lodash` instance.\n\t * @returns {Object} Returns a `lodash` instance.\n\t * @example\n\t *\n\t * var wrapped = _([1, 2, 3]);\n\t *\n\t * // returns an unwrapped value\n\t * wrapped.reduce(function(sum, num) {\n\t * return sum + num;\n\t * });\n\t * // => 6\n\t *\n\t * // returns a wrapped value\n\t * var squares = wrapped.map(function(num) {\n\t * return num * num;\n\t * });\n\t *\n\t * _.isArray(squares);\n\t * // => false\n\t *\n\t * _.isArray(squares.value());\n\t * // => true\n\t */\n\t function lodash(value) {\n\t // don't wrap if already wrapped, even if wrapped by a different `lodash` constructor\n\t return (value && typeof value == 'object' && !isArray(value) && hasOwnProperty.call(value, '__wrapped__'))\n\t ? value\n\t : new lodashWrapper(value);\n\t }\n\t\n\t /**\n\t * A fast path for creating `lodash` wrapper objects.\n\t *\n\t * @private\n\t * @param {*} value The value to wrap in a `lodash` instance.\n\t * @param {boolean} chainAll A flag to enable chaining for all methods\n\t * @returns {Object} Returns a `lodash` instance.\n\t */\n\t function lodashWrapper(value, chainAll) {\n\t this.__chain__ = !!chainAll;\n\t this.__wrapped__ = value;\n\t }\n\t // ensure `new lodashWrapper` is an instance of `lodash`\n\t lodashWrapper.prototype = lodash.prototype;\n\t\n\t /**\n\t * An object used to flag environments features.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Object\n\t */\n\t var support = lodash.support = {};\n\t\n\t (function() {\n\t var ctor = function() { this.x = 1; },\n\t object = { '0': 1, 'length': 1 },\n\t props = [];\n\t\n\t ctor.prototype = { 'valueOf': 1, 'y': 1 };\n\t for (var key in new ctor) { props.push(key); }\n\t for (key in arguments) { }\n\t\n\t /**\n\t * Detect if an `arguments` object's [[Class]] is resolvable (all but Firefox < 4, IE < 9).\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.argsClass = toString.call(arguments) == argsClass;\n\t\n\t /**\n\t * Detect if `arguments` objects are `Object` objects (all but Narwhal and Opera < 10.5).\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.argsObject = arguments.constructor == Object && !(arguments instanceof Array);\n\t\n\t /**\n\t * Detect if `name` or `message` properties of `Error.prototype` are\n\t * enumerable by default. (IE < 9, Safari < 5.1)\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') || propertyIsEnumerable.call(errorProto, 'name');\n\t\n\t /**\n\t * Detect if `prototype` properties are enumerable by default.\n\t *\n\t * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n\t * (if the prototype or a property on the prototype has been set)\n\t * incorrectly sets a function's `prototype` property [[Enumerable]]\n\t * value to `true`.\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.enumPrototypes = propertyIsEnumerable.call(ctor, 'prototype');\n\t\n\t /**\n\t * Detect if functions can be decompiled by `Function#toString`\n\t * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps).\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.funcDecomp = !isNative(context.WinRTError) && reThis.test(runInContext);\n\t\n\t /**\n\t * Detect if `Function#name` is supported (all but IE).\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.funcNames = typeof Function.name == 'string';\n\t\n\t /**\n\t * Detect if `arguments` object indexes are non-enumerable\n\t * (Firefox < 4, IE < 9, PhantomJS, Safari < 5.1).\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.nonEnumArgs = key != 0;\n\t\n\t /**\n\t * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n\t *\n\t * In IE < 9 an objects own properties, shadowing non-enumerable ones, are\n\t * made non-enumerable as well (a.k.a the JScript [[DontEnum]] bug).\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.nonEnumShadows = !/valueOf/.test(props);\n\t\n\t /**\n\t * Detect if own properties are iterated after inherited properties (all but IE < 9).\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.ownLast = props[0] != 'x';\n\t\n\t /**\n\t * Detect if `Array#shift` and `Array#splice` augment array-like objects correctly.\n\t *\n\t * Firefox < 10, IE compatibility mode, and IE < 9 have buggy Array `shift()`\n\t * and `splice()` functions that fail to remove the last element, `value[0]`,\n\t * of array-like objects even though the `length` property is set to `0`.\n\t * The `shift()` method is buggy in IE 8 compatibility mode, while `splice()`\n\t * is buggy regardless of mode in IE < 9 and buggy in compatibility mode in IE 9.\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.spliceObjects = (arrayRef.splice.call(object, 0, 1), !object[0]);\n\t\n\t /**\n\t * Detect lack of support for accessing string characters by index.\n\t *\n\t * IE < 8 can't access characters by index and IE 8 can only access\n\t * characters by index on string literals.\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n\t\n\t /**\n\t * Detect if a DOM node's [[Class]] is resolvable (all but IE < 9)\n\t * and that the JS engine errors when attempting to coerce an object to\n\t * a string without a `toString` function.\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t try {\n\t support.nodeClass = !(toString.call(document) == objectClass && !({ 'toString': 0 } + ''));\n\t } catch(e) {\n\t support.nodeClass = true;\n\t }\n\t }(1));\n\t\n\t /**\n\t * By default, the template delimiters used by Lo-Dash are similar to those in\n\t * embedded Ruby (ERB). Change the following template settings to use alternative\n\t * delimiters.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Object\n\t */\n\t lodash.templateSettings = {\n\t\n\t /**\n\t * Used to detect `data` property values to be HTML-escaped.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type RegExp\n\t */\n\t 'escape': /<%-([\\s\\S]+?)%>/g,\n\t\n\t /**\n\t * Used to detect code to be evaluated.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type RegExp\n\t */\n\t 'evaluate': /<%([\\s\\S]+?)%>/g,\n\t\n\t /**\n\t * Used to detect `data` property values to inject.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type RegExp\n\t */\n\t 'interpolate': reInterpolate,\n\t\n\t /**\n\t * Used to reference the data object in the template text.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type string\n\t */\n\t 'variable': '',\n\t\n\t /**\n\t * Used to import variables into the compiled template.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type Object\n\t */\n\t 'imports': {\n\t\n\t /**\n\t * A reference to the `lodash` function.\n\t *\n\t * @memberOf _.templateSettings.imports\n\t * @type Function\n\t */\n\t '_': lodash\n\t }\n\t };\n\t\n\t /*--------------------------------------------------------------------------*/\n\t\n\t /**\n\t * The template used to create iterator functions.\n\t *\n\t * @private\n\t * @param {Object} data The data object used to populate the text.\n\t * @returns {string} Returns the interpolated text.\n\t */\n\t var iteratorTemplate = function(obj) {\n\t\n\t var __p = 'var index, iterable = ' +\n\t (obj.firstArg) +\n\t ', result = ' +\n\t (obj.init) +\n\t ';\\nif (!iterable) return result;\\n' +\n\t (obj.top) +\n\t ';';\n\t if (obj.array) {\n\t __p += '\\nvar length = iterable.length; index = -1;\\nif (' +\n\t (obj.array) +\n\t ') { ';\n\t if (support.unindexedChars) {\n\t __p += '\\n if (isString(iterable)) {\\n iterable = iterable.split(\\'\\')\\n } ';\n\t }\n\t __p += '\\n while (++index < length) {\\n ' +\n\t (obj.loop) +\n\t ';\\n }\\n}\\nelse { ';\n\t } else if (support.nonEnumArgs) {\n\t __p += '\\n var length = iterable.length; index = -1;\\n if (length && isArguments(iterable)) {\\n while (++index < length) {\\n index += \\'\\';\\n ' +\n\t (obj.loop) +\n\t ';\\n }\\n } else { ';\n\t }\n\t\n\t if (support.enumPrototypes) {\n\t __p += '\\n var skipProto = typeof iterable == \\'function\\';\\n ';\n\t }\n\t\n\t if (support.enumErrorProps) {\n\t __p += '\\n var skipErrorProps = iterable === errorProto || iterable instanceof Error;\\n ';\n\t }\n\t\n\t var conditions = []; if (support.enumPrototypes) { conditions.push('!(skipProto && index == \"prototype\")'); } if (support.enumErrorProps) { conditions.push('!(skipErrorProps && (index == \"message\" || index == \"name\"))'); }\n\t\n\t if (obj.useHas && obj.keys) {\n\t __p += '\\n var ownIndex = -1,\\n ownProps = objectTypes[typeof iterable] && keys(iterable),\\n length = ownProps ? ownProps.length : 0;\\n\\n while (++ownIndex < length) {\\n index = ownProps[ownIndex];\\n';\n\t if (conditions.length) {\n\t __p += ' if (' +\n\t (conditions.join(' && ')) +\n\t ') {\\n ';\n\t }\n\t __p +=\n\t (obj.loop) +\n\t '; ';\n\t if (conditions.length) {\n\t __p += '\\n }';\n\t }\n\t __p += '\\n } ';\n\t } else {\n\t __p += '\\n for (index in iterable) {\\n';\n\t if (obj.useHas) { conditions.push(\"hasOwnProperty.call(iterable, index)\"); } if (conditions.length) {\n\t __p += ' if (' +\n\t (conditions.join(' && ')) +\n\t ') {\\n ';\n\t }\n\t __p +=\n\t (obj.loop) +\n\t '; ';\n\t if (conditions.length) {\n\t __p += '\\n }';\n\t }\n\t __p += '\\n } ';\n\t if (support.nonEnumShadows) {\n\t __p += '\\n\\n if (iterable !== objectProto) {\\n var ctor = iterable.constructor,\\n isProto = iterable === (ctor && ctor.prototype),\\n className = iterable === stringProto ? stringClass : iterable === errorProto ? errorClass : toString.call(iterable),\\n nonEnum = nonEnumProps[className];\\n ';\n\t for (k = 0; k < 7; k++) {\n\t __p += '\\n index = \\'' +\n\t (obj.shadowedProps[k]) +\n\t '\\';\\n if ((!(isProto && nonEnum[index]) && hasOwnProperty.call(iterable, index))';\n\t if (!obj.useHas) {\n\t __p += ' || (!nonEnum[index] && iterable[index] !== objectProto[index])';\n\t }\n\t __p += ') {\\n ' +\n\t (obj.loop) +\n\t ';\\n } ';\n\t }\n\t __p += '\\n } ';\n\t }\n\t\n\t }\n\t\n\t if (obj.array || support.nonEnumArgs) {\n\t __p += '\\n}';\n\t }\n\t __p +=\n\t (obj.bottom) +\n\t ';\\nreturn result';\n\t\n\t return __p\n\t };\n\t\n\t /*--------------------------------------------------------------------------*/\n\t\n\t /**\n\t * The base implementation of `_.bind` that creates the bound function and\n\t * sets its meta data.\n\t *\n\t * @private\n\t * @param {Array} bindData The bind data array.\n\t * @returns {Function} Returns the new bound function.\n\t */\n\t function baseBind(bindData) {\n\t var func = bindData[0],\n\t partialArgs = bindData[2],\n\t thisArg = bindData[4];\n\t\n\t function bound() {\n\t // `Function#bind` spec\n\t // http://es5.github.io/#x15.3.4.5\n\t if (partialArgs) {\n\t // avoid `arguments` object deoptimizations by using `slice` instead\n\t // of `Array.prototype.slice.call` and not assigning `arguments` to a\n\t // variable as a ternary expression\n\t var args = slice(partialArgs);\n\t push.apply(args, arguments);\n\t }\n\t // mimic the constructor's `return` behavior\n\t // http://es5.github.io/#x13.2.2\n\t if (this instanceof bound) {\n\t // ensure `new bound` is an instance of `func`\n\t var thisBinding = baseCreate(func.prototype),\n\t result = func.apply(thisBinding, args || arguments);\n\t return isObject(result) ? result : thisBinding;\n\t }\n\t return func.apply(thisArg, args || arguments);\n\t }\n\t setBindData(bound, bindData);\n\t return bound;\n\t }\n\t\n\t /**\n\t * The base implementation of `_.clone` without argument juggling or support\n\t * for `thisArg` binding.\n\t *\n\t * @private\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep=false] Specify a deep clone.\n\t * @param {Function} [callback] The function to customize cloning values.\n\t * @param {Array} [stackA=[]] Tracks traversed source objects.\n\t * @param {Array} [stackB=[]] Associates clones with source counterparts.\n\t * @returns {*} Returns the cloned value.\n\t */\n\t function baseClone(value, isDeep, callback, stackA, stackB) {\n\t if (callback) {\n\t var result = callback(value);\n\t if (typeof result != 'undefined') {\n\t return result;\n\t }\n\t }\n\t // inspect [[Class]]\n\t var isObj = isObject(value);\n\t if (isObj) {\n\t var className = toString.call(value);\n\t if (!cloneableClasses[className] || (!support.nodeClass && isNode(value))) {\n\t return value;\n\t }\n\t var ctor = ctorByClass[className];\n\t switch (className) {\n\t case boolClass:\n\t case dateClass:\n\t return new ctor(+value);\n\t\n\t case numberClass:\n\t case stringClass:\n\t return new ctor(value);\n\t\n\t case regexpClass:\n\t result = ctor(value.source, reFlags.exec(value));\n\t result.lastIndex = value.lastIndex;\n\t return result;\n\t }\n\t } else {\n\t return value;\n\t }\n\t var isArr = isArray(value);\n\t if (isDeep) {\n\t // check for circular references and return corresponding clone\n\t var initedStack = !stackA;\n\t stackA || (stackA = getArray());\n\t stackB || (stackB = getArray());\n\t\n\t var length = stackA.length;\n\t while (length--) {\n\t if (stackA[length] == value) {\n\t return stackB[length];\n\t }\n\t }\n\t result = isArr ? ctor(value.length) : {};\n\t }\n\t else {\n\t result = isArr ? slice(value) : assign({}, value);\n\t }\n\t // add array properties assigned by `RegExp#exec`\n\t if (isArr) {\n\t if (hasOwnProperty.call(value, 'index')) {\n\t result.index = value.index;\n\t }\n\t if (hasOwnProperty.call(value, 'input')) {\n\t result.input = value.input;\n\t }\n\t }\n\t // exit for shallow clone\n\t if (!isDeep) {\n\t return result;\n\t }\n\t // add the source value to the stack of traversed objects\n\t // and associate it with its clone\n\t stackA.push(value);\n\t stackB.push(result);\n\t\n\t // recursively populate clone (susceptible to call stack limits)\n\t (isArr ? baseEach : forOwn)(value, function(objValue, key) {\n\t result[key] = baseClone(objValue, isDeep, callback, stackA, stackB);\n\t });\n\t\n\t if (initedStack) {\n\t releaseArray(stackA);\n\t releaseArray(stackB);\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * The base implementation of `_.create` without support for assigning\n\t * properties to the created object.\n\t *\n\t * @private\n\t * @param {Object} prototype The object to inherit from.\n\t * @returns {Object} Returns the new object.\n\t */\n\t function baseCreate(prototype, properties) {\n\t return isObject(prototype) ? nativeCreate(prototype) : {};\n\t }\n\t // fallback for browsers without `Object.create`\n\t if (!nativeCreate) {\n\t baseCreate = (function() {\n\t function Object() {}\n\t return function(prototype) {\n\t if (isObject(prototype)) {\n\t Object.prototype = prototype;\n\t var result = new Object;\n\t Object.prototype = null;\n\t }\n\t return result || context.Object();\n\t };\n\t }());\n\t }\n\t\n\t /**\n\t * The base implementation of `_.createCallback` without support for creating\n\t * \"_.pluck\" or \"_.where\" style callbacks.\n\t *\n\t * @private\n\t * @param {*} [func=identity] The value to convert to a callback.\n\t * @param {*} [thisArg] The `this` binding of the created callback.\n\t * @param {number} [argCount] The number of arguments the callback accepts.\n\t * @returns {Function} Returns a callback function.\n\t */\n\t function baseCreateCallback(func, thisArg, argCount) {\n\t if (typeof func != 'function') {\n\t return identity;\n\t }\n\t // exit early for no `thisArg` or already bound by `Function#bind`\n\t if (typeof thisArg == 'undefined' || !('prototype' in func)) {\n\t return func;\n\t }\n\t var bindData = func.__bindData__;\n\t if (typeof bindData == 'undefined') {\n\t if (support.funcNames) {\n\t bindData = !func.name;\n\t }\n\t bindData = bindData || !support.funcDecomp;\n\t if (!bindData) {\n\t var source = fnToString.call(func);\n\t if (!support.funcNames) {\n\t bindData = !reFuncName.test(source);\n\t }\n\t if (!bindData) {\n\t // checks if `func` references the `this` keyword and stores the result\n\t bindData = reThis.test(source);\n\t setBindData(func, bindData);\n\t }\n\t }\n\t }\n\t // exit early if there are no `this` references or `func` is bound\n\t if (bindData === false || (bindData !== true && bindData[1] & 1)) {\n\t return func;\n\t }\n\t switch (argCount) {\n\t case 1: return function(value) {\n\t return func.call(thisArg, value);\n\t };\n\t case 2: return function(a, b) {\n\t return func.call(thisArg, a, b);\n\t };\n\t case 3: return function(value, index, collection) {\n\t return func.call(thisArg, value, index, collection);\n\t };\n\t case 4: return function(accumulator, value, index, collection) {\n\t return func.call(thisArg, accumulator, value, index, collection);\n\t };\n\t }\n\t return bind(func, thisArg);\n\t }\n\t\n\t /**\n\t * The base implementation of `createWrapper` that creates the wrapper and\n\t * sets its meta data.\n\t *\n\t * @private\n\t * @param {Array} bindData The bind data array.\n\t * @returns {Function} Returns the new function.\n\t */\n\t function baseCreateWrapper(bindData) {\n\t var func = bindData[0],\n\t bitmask = bindData[1],\n\t partialArgs = bindData[2],\n\t partialRightArgs = bindData[3],\n\t thisArg = bindData[4],\n\t arity = bindData[5];\n\t\n\t var isBind = bitmask & 1,\n\t isBindKey = bitmask & 2,\n\t isCurry = bitmask & 4,\n\t isCurryBound = bitmask & 8,\n\t key = func;\n\t\n\t function bound() {\n\t var thisBinding = isBind ? thisArg : this;\n\t if (partialArgs) {\n\t var args = slice(partialArgs);\n\t push.apply(args, arguments);\n\t }\n\t if (partialRightArgs || isCurry) {\n\t args || (args = slice(arguments));\n\t if (partialRightArgs) {\n\t push.apply(args, partialRightArgs);\n\t }\n\t if (isCurry && args.length < arity) {\n\t bitmask |= 16 & ~32;\n\t return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]);\n\t }\n\t }\n\t args || (args = arguments);\n\t if (isBindKey) {\n\t func = thisBinding[key];\n\t }\n\t if (this instanceof bound) {\n\t thisBinding = baseCreate(func.prototype);\n\t var result = func.apply(thisBinding, args);\n\t return isObject(result) ? result : thisBinding;\n\t }\n\t return func.apply(thisBinding, args);\n\t }\n\t setBindData(bound, bindData);\n\t return bound;\n\t }\n\t\n\t /**\n\t * The base implementation of `_.difference` that accepts a single array\n\t * of values to exclude.\n\t *\n\t * @private\n\t * @param {Array} array The array to process.\n\t * @param {Array} [values] The array of values to exclude.\n\t * @returns {Array} Returns a new array of filtered values.\n\t */\n\t function baseDifference(array, values) {\n\t var index = -1,\n\t indexOf = getIndexOf(),\n\t length = array ? array.length : 0,\n\t isLarge = length >= largeArraySize && indexOf === baseIndexOf,\n\t result = [];\n\t\n\t if (isLarge) {\n\t var cache = createCache(values);\n\t if (cache) {\n\t indexOf = cacheIndexOf;\n\t values = cache;\n\t } else {\n\t isLarge = false;\n\t }\n\t }\n\t while (++index < length) {\n\t var value = array[index];\n\t if (indexOf(values, value) < 0) {\n\t result.push(value);\n\t }\n\t }\n\t if (isLarge) {\n\t releaseObject(values);\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * The base implementation of `_.flatten` without support for callback\n\t * shorthands or `thisArg` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to flatten.\n\t * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level.\n\t * @param {boolean} [isStrict=false] A flag to restrict flattening to arrays and `arguments` objects.\n\t * @param {number} [fromIndex=0] The index to start from.\n\t * @returns {Array} Returns a new flattened array.\n\t */\n\t function baseFlatten(array, isShallow, isStrict, fromIndex) {\n\t var index = (fromIndex || 0) - 1,\n\t length = array ? array.length : 0,\n\t result = [];\n\t\n\t while (++index < length) {\n\t var value = array[index];\n\t\n\t if (value && typeof value == 'object' && typeof value.length == 'number'\n\t && (isArray(value) || isArguments(value))) {\n\t // recursively flatten arrays (susceptible to call stack limits)\n\t if (!isShallow) {\n\t value = baseFlatten(value, isShallow, isStrict);\n\t }\n\t var valIndex = -1,\n\t valLength = value.length,\n\t resIndex = result.length;\n\t\n\t result.length += valLength;\n\t while (++valIndex < valLength) {\n\t result[resIndex++] = value[valIndex];\n\t }\n\t } else if (!isStrict) {\n\t result.push(value);\n\t }\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * The base implementation of `_.isEqual`, without support for `thisArg` binding,\n\t * that allows partial \"_.where\" style comparisons.\n\t *\n\t * @private\n\t * @param {*} a The value to compare.\n\t * @param {*} b The other value to compare.\n\t * @param {Function} [callback] The function to customize comparing values.\n\t * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons.\n\t * @param {Array} [stackA=[]] Tracks traversed `a` objects.\n\t * @param {Array} [stackB=[]] Tracks traversed `b` objects.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t */\n\t function baseIsEqual(a, b, callback, isWhere, stackA, stackB) {\n\t // used to indicate that when comparing objects, `a` has at least the properties of `b`\n\t if (callback) {\n\t var result = callback(a, b);\n\t if (typeof result != 'undefined') {\n\t return !!result;\n\t }\n\t }\n\t // exit early for identical values\n\t if (a === b) {\n\t // treat `+0` vs. `-0` as not equal\n\t return a !== 0 || (1 / a == 1 / b);\n\t }\n\t var type = typeof a,\n\t otherType = typeof b;\n\t\n\t // exit early for unlike primitive values\n\t if (a === a &&\n\t !(a && objectTypes[type]) &&\n\t !(b && objectTypes[otherType])) {\n\t return false;\n\t }\n\t // exit early for `null` and `undefined` avoiding ES3's Function#call behavior\n\t // http://es5.github.io/#x15.3.4.4\n\t if (a == null || b == null) {\n\t return a === b;\n\t }\n\t // compare [[Class]] names\n\t var className = toString.call(a),\n\t otherClass = toString.call(b);\n\t\n\t if (className == argsClass) {\n\t className = objectClass;\n\t }\n\t if (otherClass == argsClass) {\n\t otherClass = objectClass;\n\t }\n\t if (className != otherClass) {\n\t return false;\n\t }\n\t switch (className) {\n\t case boolClass:\n\t case dateClass:\n\t // coerce dates and booleans to numbers, dates to milliseconds and booleans\n\t // to `1` or `0` treating invalid dates coerced to `NaN` as not equal\n\t return +a == +b;\n\t\n\t case numberClass:\n\t // treat `NaN` vs. `NaN` as equal\n\t return (a != +a)\n\t ? b != +b\n\t // but treat `+0` vs. `-0` as not equal\n\t : (a == 0 ? (1 / a == 1 / b) : a == +b);\n\t\n\t case regexpClass:\n\t case stringClass:\n\t // coerce regexes to strings (http://es5.github.io/#x15.10.6.4)\n\t // treat string primitives and their corresponding object instances as equal\n\t return a == String(b);\n\t }\n\t var isArr = className == arrayClass;\n\t if (!isArr) {\n\t // unwrap any `lodash` wrapped values\n\t var aWrapped = hasOwnProperty.call(a, '__wrapped__'),\n\t bWrapped = hasOwnProperty.call(b, '__wrapped__');\n\t\n\t if (aWrapped || bWrapped) {\n\t return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB);\n\t }\n\t // exit for functions and DOM nodes\n\t if (className != objectClass || (!support.nodeClass && (isNode(a) || isNode(b)))) {\n\t return false;\n\t }\n\t // in older versions of Opera, `arguments` objects have `Array` constructors\n\t var ctorA = !support.argsObject && isArguments(a) ? Object : a.constructor,\n\t ctorB = !support.argsObject && isArguments(b) ? Object : b.constructor;\n\t\n\t // non `Object` object instances with different constructors are not equal\n\t if (ctorA != ctorB &&\n\t !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) &&\n\t ('constructor' in a && 'constructor' in b)\n\t ) {\n\t return false;\n\t }\n\t }\n\t // assume cyclic structures are equal\n\t // the algorithm for detecting cyclic structures is adapted from ES 5.1\n\t // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3)\n\t var initedStack = !stackA;\n\t stackA || (stackA = getArray());\n\t stackB || (stackB = getArray());\n\t\n\t var length = stackA.length;\n\t while (length--) {\n\t if (stackA[length] == a) {\n\t return stackB[length] == b;\n\t }\n\t }\n\t var size = 0;\n\t result = true;\n\t\n\t // add `a` and `b` to the stack of traversed objects\n\t stackA.push(a);\n\t stackB.push(b);\n\t\n\t // recursively compare objects and arrays (susceptible to call stack limits)\n\t if (isArr) {\n\t // compare lengths to determine if a deep comparison is necessary\n\t length = a.length;\n\t size = b.length;\n\t result = size == length;\n\t\n\t if (result || isWhere) {\n\t // deep compare the contents, ignoring non-numeric properties\n\t while (size--) {\n\t var index = length,\n\t value = b[size];\n\t\n\t if (isWhere) {\n\t while (index--) {\n\t if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) {\n\t break;\n\t }\n\t }\n\t } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) {\n\t break;\n\t }\n\t }\n\t }\n\t }\n\t else {\n\t // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys`\n\t // which, in this case, is more costly\n\t forIn(b, function(value, key, b) {\n\t if (hasOwnProperty.call(b, key)) {\n\t // count the number of properties.\n\t size++;\n\t // deep compare each property value.\n\t return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB));\n\t }\n\t });\n\t\n\t if (result && !isWhere) {\n\t // ensure both objects have the same number of properties\n\t forIn(a, function(value, key, a) {\n\t if (hasOwnProperty.call(a, key)) {\n\t // `size` will be `-1` if `a` has more properties than `b`\n\t return (result = --size > -1);\n\t }\n\t });\n\t }\n\t }\n\t stackA.pop();\n\t stackB.pop();\n\t\n\t if (initedStack) {\n\t releaseArray(stackA);\n\t releaseArray(stackB);\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * The base implementation of `_.merge` without argument juggling or support\n\t * for `thisArg` binding.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @param {Function} [callback] The function to customize merging properties.\n\t * @param {Array} [stackA=[]] Tracks traversed source objects.\n\t * @param {Array} [stackB=[]] Associates values with source counterparts.\n\t */\n\t function baseMerge(object, source, callback, stackA, stackB) {\n\t (isArray(source) ? forEach : forOwn)(source, function(source, key) {\n\t var found,\n\t isArr,\n\t result = source,\n\t value = object[key];\n\t\n\t if (source && ((isArr = isArray(source)) || isPlainObject(source))) {\n\t // avoid merging previously merged cyclic sources\n\t var stackLength = stackA.length;\n\t while (stackLength--) {\n\t if ((found = stackA[stackLength] == source)) {\n\t value = stackB[stackLength];\n\t break;\n\t }\n\t }\n\t if (!found) {\n\t var isShallow;\n\t if (callback) {\n\t result = callback(value, source);\n\t if ((isShallow = typeof result != 'undefined')) {\n\t value = result;\n\t }\n\t }\n\t if (!isShallow) {\n\t value = isArr\n\t ? (isArray(value) ? value : [])\n\t : (isPlainObject(value) ? value : {});\n\t }\n\t // add `source` and associated `value` to the stack of traversed objects\n\t stackA.push(source);\n\t stackB.push(value);\n\t\n\t // recursively merge objects and arrays (susceptible to call stack limits)\n\t if (!isShallow) {\n\t baseMerge(value, source, callback, stackA, stackB);\n\t }\n\t }\n\t }\n\t else {\n\t if (callback) {\n\t result = callback(value, source);\n\t if (typeof result == 'undefined') {\n\t result = source;\n\t }\n\t }\n\t if (typeof result != 'undefined') {\n\t value = result;\n\t }\n\t }\n\t object[key] = value;\n\t });\n\t }\n\t\n\t /**\n\t * The base implementation of `_.random` without argument juggling or support\n\t * for returning floating-point numbers.\n\t *\n\t * @private\n\t * @param {number} min The minimum possible value.\n\t * @param {number} max The maximum possible value.\n\t * @returns {number} Returns a random number.\n\t */\n\t function baseRandom(min, max) {\n\t return min + floor(nativeRandom() * (max - min + 1));\n\t }\n\t\n\t /**\n\t * The base implementation of `_.uniq` without support for callback shorthands\n\t * or `thisArg` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to process.\n\t * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted.\n\t * @param {Function} [callback] The function called per iteration.\n\t * @returns {Array} Returns a duplicate-value-free array.\n\t */\n\t function baseUniq(array, isSorted, callback) {\n\t var index = -1,\n\t indexOf = getIndexOf(),\n\t length = array ? array.length : 0,\n\t result = [];\n\t\n\t var isLarge = !isSorted && length >= largeArraySize && indexOf === baseIndexOf,\n\t seen = (callback || isLarge) ? getArray() : result;\n\t\n\t if (isLarge) {\n\t var cache = createCache(seen);\n\t indexOf = cacheIndexOf;\n\t seen = cache;\n\t }\n\t while (++index < length) {\n\t var value = array[index],\n\t computed = callback ? callback(value, index, array) : value;\n\t\n\t if (isSorted\n\t ? !index || seen[seen.length - 1] !== computed\n\t : indexOf(seen, computed) < 0\n\t ) {\n\t if (callback || isLarge) {\n\t seen.push(computed);\n\t }\n\t result.push(value);\n\t }\n\t }\n\t if (isLarge) {\n\t releaseArray(seen.array);\n\t releaseObject(seen);\n\t } else if (callback) {\n\t releaseArray(seen);\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Creates a function that aggregates a collection, creating an object composed\n\t * of keys generated from the results of running each element of the collection\n\t * through a callback. The given `setter` function sets the keys and values\n\t * of the composed object.\n\t *\n\t * @private\n\t * @param {Function} setter The setter function.\n\t * @returns {Function} Returns the new aggregator function.\n\t */\n\t function createAggregator(setter) {\n\t return function(collection, callback, thisArg) {\n\t var result = {};\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t\n\t if (isArray(collection)) {\n\t var index = -1,\n\t length = collection.length;\n\t\n\t while (++index < length) {\n\t var value = collection[index];\n\t setter(result, value, callback(value, index, collection), collection);\n\t }\n\t } else {\n\t baseEach(collection, function(value, key, collection) {\n\t setter(result, value, callback(value, key, collection), collection);\n\t });\n\t }\n\t return result;\n\t };\n\t }\n\t\n\t /**\n\t * Creates a function that, when called, either curries or invokes `func`\n\t * with an optional `this` binding and partially applied arguments.\n\t *\n\t * @private\n\t * @param {Function|string} func The function or method name to reference.\n\t * @param {number} bitmask The bitmask of method flags to compose.\n\t * The bitmask may be composed of the following flags:\n\t * 1 - `_.bind`\n\t * 2 - `_.bindKey`\n\t * 4 - `_.curry`\n\t * 8 - `_.curry` (bound)\n\t * 16 - `_.partial`\n\t * 32 - `_.partialRight`\n\t * @param {Array} [partialArgs] An array of arguments to prepend to those\n\t * provided to the new function.\n\t * @param {Array} [partialRightArgs] An array of arguments to append to those\n\t * provided to the new function.\n\t * @param {*} [thisArg] The `this` binding of `func`.\n\t * @param {number} [arity] The arity of `func`.\n\t * @returns {Function} Returns the new function.\n\t */\n\t function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) {\n\t var isBind = bitmask & 1,\n\t isBindKey = bitmask & 2,\n\t isCurry = bitmask & 4,\n\t isCurryBound = bitmask & 8,\n\t isPartial = bitmask & 16,\n\t isPartialRight = bitmask & 32;\n\t\n\t if (!isBindKey && !isFunction(func)) {\n\t throw new TypeError;\n\t }\n\t if (isPartial && !partialArgs.length) {\n\t bitmask &= ~16;\n\t isPartial = partialArgs = false;\n\t }\n\t if (isPartialRight && !partialRightArgs.length) {\n\t bitmask &= ~32;\n\t isPartialRight = partialRightArgs = false;\n\t }\n\t var bindData = func && func.__bindData__;\n\t if (bindData && bindData !== true) {\n\t // clone `bindData`\n\t bindData = slice(bindData);\n\t if (bindData[2]) {\n\t bindData[2] = slice(bindData[2]);\n\t }\n\t if (bindData[3]) {\n\t bindData[3] = slice(bindData[3]);\n\t }\n\t // set `thisBinding` is not previously bound\n\t if (isBind && !(bindData[1] & 1)) {\n\t bindData[4] = thisArg;\n\t }\n\t // set if previously bound but not currently (subsequent curried functions)\n\t if (!isBind && bindData[1] & 1) {\n\t bitmask |= 8;\n\t }\n\t // set curried arity if not yet set\n\t if (isCurry && !(bindData[1] & 4)) {\n\t bindData[5] = arity;\n\t }\n\t // append partial left arguments\n\t if (isPartial) {\n\t push.apply(bindData[2] || (bindData[2] = []), partialArgs);\n\t }\n\t // append partial right arguments\n\t if (isPartialRight) {\n\t unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs);\n\t }\n\t // merge flags\n\t bindData[1] |= bitmask;\n\t return createWrapper.apply(null, bindData);\n\t }\n\t // fast path for `_.bind`\n\t var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper;\n\t return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]);\n\t }\n\t\n\t /**\n\t * Creates compiled iteration functions.\n\t *\n\t * @private\n\t * @param {...Object} [options] The compile options object(s).\n\t * @param {string} [options.array] Code to determine if the iterable is an array or array-like.\n\t * @param {boolean} [options.useHas] Specify using `hasOwnProperty` checks in the object loop.\n\t * @param {Function} [options.keys] A reference to `_.keys` for use in own property iteration.\n\t * @param {string} [options.args] A comma separated string of iteration function arguments.\n\t * @param {string} [options.top] Code to execute before the iteration branches.\n\t * @param {string} [options.loop] Code to execute in the object loop.\n\t * @param {string} [options.bottom] Code to execute after the iteration branches.\n\t * @returns {Function} Returns the compiled function.\n\t */\n\t function createIterator() {\n\t // data properties\n\t iteratorData.shadowedProps = shadowedProps;\n\t\n\t // iterator options\n\t iteratorData.array = iteratorData.bottom = iteratorData.loop = iteratorData.top = '';\n\t iteratorData.init = 'iterable';\n\t iteratorData.useHas = true;\n\t\n\t // merge options into a template data object\n\t for (var object, index = 0; object = arguments[index]; index++) {\n\t for (var key in object) {\n\t iteratorData[key] = object[key];\n\t }\n\t }\n\t var args = iteratorData.args;\n\t iteratorData.firstArg = /^[^,]+/.exec(args)[0];\n\t\n\t // create the function factory\n\t var factory = Function(\n\t 'baseCreateCallback, errorClass, errorProto, hasOwnProperty, ' +\n\t 'indicatorObject, isArguments, isArray, isString, keys, objectProto, ' +\n\t 'objectTypes, nonEnumProps, stringClass, stringProto, toString',\n\t 'return function(' + args + ') {\\n' + iteratorTemplate(iteratorData) + '\\n}'\n\t );\n\t\n\t // return the compiled function\n\t return factory(\n\t baseCreateCallback, errorClass, errorProto, hasOwnProperty,\n\t indicatorObject, isArguments, isArray, isString, iteratorData.keys, objectProto,\n\t objectTypes, nonEnumProps, stringClass, stringProto, toString\n\t );\n\t }\n\t\n\t /**\n\t * Used by `escape` to convert characters to HTML entities.\n\t *\n\t * @private\n\t * @param {string} match The matched character to escape.\n\t * @returns {string} Returns the escaped character.\n\t */\n\t function escapeHtmlChar(match) {\n\t return htmlEscapes[match];\n\t }\n\t\n\t /**\n\t * Gets the appropriate \"indexOf\" function. If the `_.indexOf` method is\n\t * customized, this method returns the custom method, otherwise it returns\n\t * the `baseIndexOf` function.\n\t *\n\t * @private\n\t * @returns {Function} Returns the \"indexOf\" function.\n\t */\n\t function getIndexOf() {\n\t var result = (result = lodash.indexOf) === indexOf ? baseIndexOf : result;\n\t return result;\n\t }\n\t\n\t /**\n\t * Checks if `value` is a native function.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is a native function, else `false`.\n\t */\n\t function isNative(value) {\n\t return typeof value == 'function' && reNative.test(value);\n\t }\n\t\n\t /**\n\t * Sets `this` binding data on a given function.\n\t *\n\t * @private\n\t * @param {Function} func The function to set data on.\n\t * @param {Array} value The data array to set.\n\t */\n\t var setBindData = !defineProperty ? noop : function(func, value) {\n\t descriptor.value = value;\n\t defineProperty(func, '__bindData__', descriptor);\n\t };\n\t\n\t /**\n\t * A fallback implementation of `isPlainObject` which checks if a given value\n\t * is an object created by the `Object` constructor, assuming objects created\n\t * by the `Object` constructor have no inherited enumerable properties and that\n\t * there are no `Object.prototype` extensions.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n\t */\n\t function shimIsPlainObject(value) {\n\t var ctor,\n\t result;\n\t\n\t // avoid non Object objects, `arguments` objects, and DOM elements\n\t if (!(value && toString.call(value) == objectClass) ||\n\t (ctor = value.constructor, isFunction(ctor) && !(ctor instanceof ctor)) ||\n\t (!support.argsClass && isArguments(value)) ||\n\t (!support.nodeClass && isNode(value))) {\n\t return false;\n\t }\n\t // IE < 9 iterates inherited properties before own properties. If the first\n\t // iterated property is an object's own property then there are no inherited\n\t // enumerable properties.\n\t if (support.ownLast) {\n\t forIn(value, function(value, key, object) {\n\t result = hasOwnProperty.call(object, key);\n\t return false;\n\t });\n\t return result !== false;\n\t }\n\t // In most environments an object's own properties are iterated before\n\t // its inherited properties. If the last iterated property is an object's\n\t // own property then there are no inherited enumerable properties.\n\t forIn(value, function(value, key) {\n\t result = key;\n\t });\n\t return typeof result == 'undefined' || hasOwnProperty.call(value, result);\n\t }\n\t\n\t /**\n\t * Used by `unescape` to convert HTML entities to characters.\n\t *\n\t * @private\n\t * @param {string} match The matched character to unescape.\n\t * @returns {string} Returns the unescaped character.\n\t */\n\t function unescapeHtmlChar(match) {\n\t return htmlUnescapes[match];\n\t }\n\t\n\t /*--------------------------------------------------------------------------*/\n\t\n\t /**\n\t * Checks if `value` is an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is an `arguments` object, else `false`.\n\t * @example\n\t *\n\t * (function() { return _.isArguments(arguments); })(1, 2, 3);\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\t function isArguments(value) {\n\t return value && typeof value == 'object' && typeof value.length == 'number' &&\n\t toString.call(value) == argsClass || false;\n\t }\n\t // fallback for browsers that can't detect `arguments` objects by [[Class]]\n\t if (!support.argsClass) {\n\t isArguments = function(value) {\n\t return value && typeof value == 'object' && typeof value.length == 'number' &&\n\t hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee') || false;\n\t };\n\t }\n\t\n\t /**\n\t * Checks if `value` is an array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is an array, else `false`.\n\t * @example\n\t *\n\t * (function() { return _.isArray(arguments); })();\n\t * // => false\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t */\n\t var isArray = nativeIsArray || function(value) {\n\t return value && typeof value == 'object' && typeof value.length == 'number' &&\n\t toString.call(value) == arrayClass || false;\n\t };\n\t\n\t /**\n\t * A fallback implementation of `Object.keys` which produces an array of the\n\t * given object's own enumerable property names.\n\t *\n\t * @private\n\t * @type Function\n\t * @param {Object} object The object to inspect.\n\t * @returns {Array} Returns an array of property names.\n\t */\n\t var shimKeys = createIterator({\n\t 'args': 'object',\n\t 'init': '[]',\n\t 'top': 'if (!(objectTypes[typeof object])) return result',\n\t 'loop': 'result.push(index)'\n\t });\n\t\n\t /**\n\t * Creates an array composed of the own enumerable property names of an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The object to inspect.\n\t * @returns {Array} Returns an array of property names.\n\t * @example\n\t *\n\t * _.keys({ 'one': 1, 'two': 2, 'three': 3 });\n\t * // => ['one', 'two', 'three'] (property order is not guaranteed across environments)\n\t */\n\t var keys = !nativeKeys ? shimKeys : function(object) {\n\t if (!isObject(object)) {\n\t return [];\n\t }\n\t if ((support.enumPrototypes && typeof object == 'function') ||\n\t (support.nonEnumArgs && object.length && isArguments(object))) {\n\t return shimKeys(object);\n\t }\n\t return nativeKeys(object);\n\t };\n\t\n\t /** Reusable iterator options shared by `each`, `forIn`, and `forOwn` */\n\t var eachIteratorOptions = {\n\t 'args': 'collection, callback, thisArg',\n\t 'top': \"callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3)\",\n\t 'array': \"typeof length == 'number'\",\n\t 'keys': keys,\n\t 'loop': 'if (callback(iterable[index], index, collection) === false) return result'\n\t };\n\t\n\t /** Reusable iterator options for `assign` and `defaults` */\n\t var defaultsIteratorOptions = {\n\t 'args': 'object, source, guard',\n\t 'top':\n\t 'var args = arguments,\\n' +\n\t ' argsIndex = 0,\\n' +\n\t \" argsLength = typeof guard == 'number' ? 2 : args.length;\\n\" +\n\t 'while (++argsIndex < argsLength) {\\n' +\n\t ' iterable = args[argsIndex];\\n' +\n\t ' if (iterable && objectTypes[typeof iterable]) {',\n\t 'keys': keys,\n\t 'loop': \"if (typeof result[index] == 'undefined') result[index] = iterable[index]\",\n\t 'bottom': ' }\\n}'\n\t };\n\t\n\t /** Reusable iterator options for `forIn` and `forOwn` */\n\t var forOwnIteratorOptions = {\n\t 'top': 'if (!objectTypes[typeof iterable]) return result;\\n' + eachIteratorOptions.top,\n\t 'array': false\n\t };\n\t\n\t /**\n\t * Used to convert characters to HTML entities:\n\t *\n\t * Though the `>` character is escaped for symmetry, characters like `>` and `/`\n\t * don't require escaping in HTML and have no special meaning unless they're part\n\t * of a tag or an unquoted attribute value.\n\t * http://mathiasbynens.be/notes/ambiguous-ampersands (under \"semi-related fun fact\")\n\t */\n\t var htmlEscapes = {\n\t '&': '&',\n\t '<': '<',\n\t '>': '>',\n\t '\"': '"',\n\t \"'\": '''\n\t };\n\t\n\t /** Used to convert HTML entities to characters */\n\t var htmlUnescapes = invert(htmlEscapes);\n\t\n\t /** Used to match HTML entities and HTML characters */\n\t var reEscapedHtml = RegExp('(' + keys(htmlUnescapes).join('|') + ')', 'g'),\n\t reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g');\n\t\n\t /**\n\t * A function compiled to iterate `arguments` objects, arrays, objects, and\n\t * strings consistenly across environments, executing the callback for each\n\t * element in the collection. The callback is bound to `thisArg` and invoked\n\t * with three arguments; (value, index|key, collection). Callbacks may exit\n\t * iteration early by explicitly returning `false`.\n\t *\n\t * @private\n\t * @type Function\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [callback=identity] The function called per iteration.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array|Object|string} Returns `collection`.\n\t */\n\t var baseEach = createIterator(eachIteratorOptions);\n\t\n\t /*--------------------------------------------------------------------------*/\n\t\n\t /**\n\t * Assigns own enumerable properties of source object(s) to the destination\n\t * object. Subsequent sources will overwrite property assignments of previous\n\t * sources. If a callback is provided it will be executed to produce the\n\t * assigned values. The callback is bound to `thisArg` and invoked with two\n\t * arguments; (objectValue, sourceValue).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @alias extend\n\t * @category Objects\n\t * @param {Object} object The destination object.\n\t * @param {...Object} [source] The source objects.\n\t * @param {Function} [callback] The function to customize assigning values.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Object} Returns the destination object.\n\t * @example\n\t *\n\t * _.assign({ 'name': 'fred' }, { 'employer': 'slate' });\n\t * // => { 'name': 'fred', 'employer': 'slate' }\n\t *\n\t * var defaults = _.partialRight(_.assign, function(a, b) {\n\t * return typeof a == 'undefined' ? b : a;\n\t * });\n\t *\n\t * var object = { 'name': 'barney' };\n\t * defaults(object, { 'name': 'fred', 'employer': 'slate' });\n\t * // => { 'name': 'barney', 'employer': 'slate' }\n\t */\n\t var assign = createIterator(defaultsIteratorOptions, {\n\t 'top':\n\t defaultsIteratorOptions.top.replace(';',\n\t ';\\n' +\n\t \"if (argsLength > 3 && typeof args[argsLength - 2] == 'function') {\\n\" +\n\t ' var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2);\\n' +\n\t \"} else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') {\\n\" +\n\t ' callback = args[--argsLength];\\n' +\n\t '}'\n\t ),\n\t 'loop': 'result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]'\n\t });\n\t\n\t /**\n\t * Creates a clone of `value`. If `isDeep` is `true` nested objects will also\n\t * be cloned, otherwise they will be assigned by reference. If a callback\n\t * is provided it will be executed to produce the cloned values. If the\n\t * callback returns `undefined` cloning will be handled by the method instead.\n\t * The callback is bound to `thisArg` and invoked with one argument; (value).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep=false] Specify a deep clone.\n\t * @param {Function} [callback] The function to customize cloning values.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {*} Returns the cloned value.\n\t * @example\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36 },\n\t * { 'name': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * var shallow = _.clone(characters);\n\t * shallow[0] === characters[0];\n\t * // => true\n\t *\n\t * var deep = _.clone(characters, true);\n\t * deep[0] === characters[0];\n\t * // => false\n\t *\n\t * _.mixin({\n\t * 'clone': _.partialRight(_.clone, function(value) {\n\t * return _.isElement(value) ? value.cloneNode(false) : undefined;\n\t * })\n\t * });\n\t *\n\t * var clone = _.clone(document.body);\n\t * clone.childNodes.length;\n\t * // => 0\n\t */\n\t function clone(value, isDeep, callback, thisArg) {\n\t // allows working with \"Collections\" methods without using their `index`\n\t // and `collection` arguments for `isDeep` and `callback`\n\t if (typeof isDeep != 'boolean' && isDeep != null) {\n\t thisArg = callback;\n\t callback = isDeep;\n\t isDeep = false;\n\t }\n\t return baseClone(value, isDeep, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1));\n\t }\n\t\n\t /**\n\t * Creates a deep clone of `value`. If a callback is provided it will be\n\t * executed to produce the cloned values. If the callback returns `undefined`\n\t * cloning will be handled by the method instead. The callback is bound to\n\t * `thisArg` and invoked with one argument; (value).\n\t *\n\t * Note: This method is loosely based on the structured clone algorithm. Functions\n\t * and DOM nodes are **not** cloned. The enumerable properties of `arguments` objects and\n\t * objects created by constructors other than `Object` are cloned to plain `Object` objects.\n\t * See http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to deep clone.\n\t * @param {Function} [callback] The function to customize cloning values.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {*} Returns the deep cloned value.\n\t * @example\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36 },\n\t * { 'name': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * var deep = _.cloneDeep(characters);\n\t * deep[0] === characters[0];\n\t * // => false\n\t *\n\t * var view = {\n\t * 'label': 'docs',\n\t * 'node': element\n\t * };\n\t *\n\t * var clone = _.cloneDeep(view, function(value) {\n\t * return _.isElement(value) ? value.cloneNode(true) : undefined;\n\t * });\n\t *\n\t * clone.node == view.node;\n\t * // => false\n\t */\n\t function cloneDeep(value, callback, thisArg) {\n\t return baseClone(value, true, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1));\n\t }\n\t\n\t /**\n\t * Creates an object that inherits from the given `prototype` object. If a\n\t * `properties` object is provided its own enumerable properties are assigned\n\t * to the created object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} prototype The object to inherit from.\n\t * @param {Object} [properties] The properties to assign to the object.\n\t * @returns {Object} Returns the new object.\n\t * @example\n\t *\n\t * function Shape() {\n\t * this.x = 0;\n\t * this.y = 0;\n\t * }\n\t *\n\t * function Circle() {\n\t * Shape.call(this);\n\t * }\n\t *\n\t * Circle.prototype = _.create(Shape.prototype, { 'constructor': Circle });\n\t *\n\t * var circle = new Circle;\n\t * circle instanceof Circle;\n\t * // => true\n\t *\n\t * circle instanceof Shape;\n\t * // => true\n\t */\n\t function create(prototype, properties) {\n\t var result = baseCreate(prototype);\n\t return properties ? assign(result, properties) : result;\n\t }\n\t\n\t /**\n\t * Assigns own enumerable properties of source object(s) to the destination\n\t * object for all destination properties that resolve to `undefined`. Once a\n\t * property is set, additional defaults of the same property will be ignored.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Objects\n\t * @param {Object} object The destination object.\n\t * @param {...Object} [source] The source objects.\n\t * @param- {Object} [guard] Allows working with `_.reduce` without using its\n\t * `key` and `object` arguments as sources.\n\t * @returns {Object} Returns the destination object.\n\t * @example\n\t *\n\t * var object = { 'name': 'barney' };\n\t * _.defaults(object, { 'name': 'fred', 'employer': 'slate' });\n\t * // => { 'name': 'barney', 'employer': 'slate' }\n\t */\n\t var defaults = createIterator(defaultsIteratorOptions);\n\t\n\t /**\n\t * This method is like `_.findIndex` except that it returns the key of the\n\t * first element that passes the callback check, instead of the element itself.\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The object to search.\n\t * @param {Function|Object|string} [callback=identity] The function called per\n\t * iteration. If a property name or object is provided it will be used to\n\t * create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {string|undefined} Returns the key of the found element, else `undefined`.\n\t * @example\n\t *\n\t * var characters = {\n\t * 'barney': { 'age': 36, 'blocked': false },\n\t * 'fred': { 'age': 40, 'blocked': true },\n\t * 'pebbles': { 'age': 1, 'blocked': false }\n\t * };\n\t *\n\t * _.findKey(characters, function(chr) {\n\t * return chr.age < 40;\n\t * });\n\t * // => 'barney' (property order is not guaranteed across environments)\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.findKey(characters, { 'age': 1 });\n\t * // => 'pebbles'\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.findKey(characters, 'blocked');\n\t * // => 'fred'\n\t */\n\t function findKey(object, callback, thisArg) {\n\t var result;\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t forOwn(object, function(value, key, object) {\n\t if (callback(value, key, object)) {\n\t result = key;\n\t return false;\n\t }\n\t });\n\t return result;\n\t }\n\t\n\t /**\n\t * This method is like `_.findKey` except that it iterates over elements\n\t * of a `collection` in the opposite order.\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The object to search.\n\t * @param {Function|Object|string} [callback=identity] The function called per\n\t * iteration. If a property name or object is provided it will be used to\n\t * create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {string|undefined} Returns the key of the found element, else `undefined`.\n\t * @example\n\t *\n\t * var characters = {\n\t * 'barney': { 'age': 36, 'blocked': true },\n\t * 'fred': { 'age': 40, 'blocked': false },\n\t * 'pebbles': { 'age': 1, 'blocked': true }\n\t * };\n\t *\n\t * _.findLastKey(characters, function(chr) {\n\t * return chr.age < 40;\n\t * });\n\t * // => returns `pebbles`, assuming `_.findKey` returns `barney`\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.findLastKey(characters, { 'age': 40 });\n\t * // => 'fred'\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.findLastKey(characters, 'blocked');\n\t * // => 'pebbles'\n\t */\n\t function findLastKey(object, callback, thisArg) {\n\t var result;\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t forOwnRight(object, function(value, key, object) {\n\t if (callback(value, key, object)) {\n\t result = key;\n\t return false;\n\t }\n\t });\n\t return result;\n\t }\n\t\n\t /**\n\t * Iterates over own and inherited enumerable properties of an object,\n\t * executing the callback for each property. The callback is bound to `thisArg`\n\t * and invoked with three arguments; (value, key, object). Callbacks may exit\n\t * iteration early by explicitly returning `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Objects\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} [callback=identity] The function called per iteration.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * function Shape() {\n\t * this.x = 0;\n\t * this.y = 0;\n\t * }\n\t *\n\t * Shape.prototype.move = function(x, y) {\n\t * this.x += x;\n\t * this.y += y;\n\t * };\n\t *\n\t * _.forIn(new Shape, function(value, key) {\n\t * console.log(key);\n\t * });\n\t * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments)\n\t */\n\t var forIn = createIterator(eachIteratorOptions, forOwnIteratorOptions, {\n\t 'useHas': false\n\t });\n\t\n\t /**\n\t * This method is like `_.forIn` except that it iterates over elements\n\t * of a `collection` in the opposite order.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} [callback=identity] The function called per iteration.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * function Shape() {\n\t * this.x = 0;\n\t * this.y = 0;\n\t * }\n\t *\n\t * Shape.prototype.move = function(x, y) {\n\t * this.x += x;\n\t * this.y += y;\n\t * };\n\t *\n\t * _.forInRight(new Shape, function(value, key) {\n\t * console.log(key);\n\t * });\n\t * // => logs 'move', 'y', and 'x' assuming `_.forIn ` logs 'x', 'y', and 'move'\n\t */\n\t function forInRight(object, callback, thisArg) {\n\t var pairs = [];\n\t\n\t forIn(object, function(value, key) {\n\t pairs.push(key, value);\n\t });\n\t\n\t var length = pairs.length;\n\t callback = baseCreateCallback(callback, thisArg, 3);\n\t while (length--) {\n\t if (callback(pairs[length--], pairs[length], object) === false) {\n\t break;\n\t }\n\t }\n\t return object;\n\t }\n\t\n\t /**\n\t * Iterates over own enumerable properties of an object, executing the callback\n\t * for each property. The callback is bound to `thisArg` and invoked with three\n\t * arguments; (value, key, object). Callbacks may exit iteration early by\n\t * explicitly returning `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Objects\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} [callback=identity] The function called per iteration.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) {\n\t * console.log(key);\n\t * });\n\t * // => logs '0', '1', and 'length' (property order is not guaranteed across environments)\n\t */\n\t var forOwn = createIterator(eachIteratorOptions, forOwnIteratorOptions);\n\t\n\t /**\n\t * This method is like `_.forOwn` except that it iterates over elements\n\t * of a `collection` in the opposite order.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} [callback=identity] The function called per iteration.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * _.forOwnRight({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) {\n\t * console.log(key);\n\t * });\n\t * // => logs 'length', '1', and '0' assuming `_.forOwn` logs '0', '1', and 'length'\n\t */\n\t function forOwnRight(object, callback, thisArg) {\n\t var props = keys(object),\n\t length = props.length;\n\t\n\t callback = baseCreateCallback(callback, thisArg, 3);\n\t while (length--) {\n\t var key = props[length];\n\t if (callback(object[key], key, object) === false) {\n\t break;\n\t }\n\t }\n\t return object;\n\t }\n\t\n\t /**\n\t * Creates a sorted array of property names of all enumerable properties,\n\t * own and inherited, of `object` that have function values.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias methods\n\t * @category Objects\n\t * @param {Object} object The object to inspect.\n\t * @returns {Array} Returns an array of property names that have function values.\n\t * @example\n\t *\n\t * _.functions(_);\n\t * // => ['all', 'any', 'bind', 'bindAll', 'clone', 'compact', 'compose', ...]\n\t */\n\t function functions(object) {\n\t var result = [];\n\t forIn(object, function(value, key) {\n\t if (isFunction(value)) {\n\t result.push(key);\n\t }\n\t });\n\t return result.sort();\n\t }\n\t\n\t /**\n\t * Checks if the specified property name exists as a direct property of `object`,\n\t * instead of an inherited property.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The object to inspect.\n\t * @param {string} key The name of the property to check.\n\t * @returns {boolean} Returns `true` if key is a direct property, else `false`.\n\t * @example\n\t *\n\t * _.has({ 'a': 1, 'b': 2, 'c': 3 }, 'b');\n\t * // => true\n\t */\n\t function has(object, key) {\n\t return object ? hasOwnProperty.call(object, key) : false;\n\t }\n\t\n\t /**\n\t * Creates an object composed of the inverted keys and values of the given object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The object to invert.\n\t * @returns {Object} Returns the created inverted object.\n\t * @example\n\t *\n\t * _.invert({ 'first': 'fred', 'second': 'barney' });\n\t * // => { 'fred': 'first', 'barney': 'second' }\n\t */\n\t function invert(object) {\n\t var index = -1,\n\t props = keys(object),\n\t length = props.length,\n\t result = {};\n\t\n\t while (++index < length) {\n\t var key = props[index];\n\t result[object[key]] = key;\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Checks if `value` is a boolean value.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is a boolean value, else `false`.\n\t * @example\n\t *\n\t * _.isBoolean(null);\n\t * // => false\n\t */\n\t function isBoolean(value) {\n\t return value === true || value === false ||\n\t value && typeof value == 'object' && toString.call(value) == boolClass || false;\n\t }\n\t\n\t /**\n\t * Checks if `value` is a date.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is a date, else `false`.\n\t * @example\n\t *\n\t * _.isDate(new Date);\n\t * // => true\n\t */\n\t function isDate(value) {\n\t return value && typeof value == 'object' && toString.call(value) == dateClass || false;\n\t }\n\t\n\t /**\n\t * Checks if `value` is a DOM element.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is a DOM element, else `false`.\n\t * @example\n\t *\n\t * _.isElement(document.body);\n\t * // => true\n\t */\n\t function isElement(value) {\n\t return value && value.nodeType === 1 || false;\n\t }\n\t\n\t /**\n\t * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a\n\t * length of `0` and objects with no own enumerable properties are considered\n\t * \"empty\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Array|Object|string} value The value to inspect.\n\t * @returns {boolean} Returns `true` if the `value` is empty, else `false`.\n\t * @example\n\t *\n\t * _.isEmpty([1, 2, 3]);\n\t * // => false\n\t *\n\t * _.isEmpty({});\n\t * // => true\n\t *\n\t * _.isEmpty('');\n\t * // => true\n\t */\n\t function isEmpty(value) {\n\t var result = true;\n\t if (!value) {\n\t return result;\n\t }\n\t var className = toString.call(value),\n\t length = value.length;\n\t\n\t if ((className == arrayClass || className == stringClass ||\n\t (support.argsClass ? className == argsClass : isArguments(value))) ||\n\t (className == objectClass && typeof length == 'number' && isFunction(value.splice))) {\n\t return !length;\n\t }\n\t forOwn(value, function() {\n\t return (result = false);\n\t });\n\t return result;\n\t }\n\t\n\t /**\n\t * Performs a deep comparison between two values to determine if they are\n\t * equivalent to each other. If a callback is provided it will be executed\n\t * to compare values. If the callback returns `undefined` comparisons will\n\t * be handled by the method instead. The callback is bound to `thisArg` and\n\t * invoked with two arguments; (a, b).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} a The value to compare.\n\t * @param {*} b The other value to compare.\n\t * @param {Function} [callback] The function to customize comparing values.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'name': 'fred' };\n\t * var copy = { 'name': 'fred' };\n\t *\n\t * object == copy;\n\t * // => false\n\t *\n\t * _.isEqual(object, copy);\n\t * // => true\n\t *\n\t * var words = ['hello', 'goodbye'];\n\t * var otherWords = ['hi', 'goodbye'];\n\t *\n\t * _.isEqual(words, otherWords, function(a, b) {\n\t * var reGreet = /^(?:hello|hi)$/i,\n\t * aGreet = _.isString(a) && reGreet.test(a),\n\t * bGreet = _.isString(b) && reGreet.test(b);\n\t *\n\t * return (aGreet || bGreet) ? (aGreet == bGreet) : undefined;\n\t * });\n\t * // => true\n\t */\n\t function isEqual(a, b, callback, thisArg) {\n\t return baseIsEqual(a, b, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 2));\n\t }\n\t\n\t /**\n\t * Checks if `value` is, or can be coerced to, a finite number.\n\t *\n\t * Note: This is not the same as native `isFinite` which will return true for\n\t * booleans and empty strings. See http://es5.github.io/#x15.1.2.5.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is finite, else `false`.\n\t * @example\n\t *\n\t * _.isFinite(-101);\n\t * // => true\n\t *\n\t * _.isFinite('10');\n\t * // => true\n\t *\n\t * _.isFinite(true);\n\t * // => false\n\t *\n\t * _.isFinite('');\n\t * // => false\n\t *\n\t * _.isFinite(Infinity);\n\t * // => false\n\t */\n\t function isFinite(value) {\n\t return nativeIsFinite(value) && !nativeIsNaN(parseFloat(value));\n\t }\n\t\n\t /**\n\t * Checks if `value` is a function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t */\n\t function isFunction(value) {\n\t return typeof value == 'function';\n\t }\n\t // fallback for older versions of Chrome and Safari\n\t if (isFunction(/x/)) {\n\t isFunction = function(value) {\n\t return typeof value == 'function' && toString.call(value) == funcClass;\n\t };\n\t }\n\t\n\t /**\n\t * Checks if `value` is the language type of Object.\n\t * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(1);\n\t * // => false\n\t */\n\t function isObject(value) {\n\t // check if the value is the ECMAScript language type of Object\n\t // http://es5.github.io/#x8\n\t // and avoid a V8 bug\n\t // http://code.google.com/p/v8/issues/detail?id=2291\n\t return !!(value && objectTypes[typeof value]);\n\t }\n\t\n\t /**\n\t * Checks if `value` is `NaN`.\n\t *\n\t * Note: This is not the same as native `isNaN` which will return `true` for\n\t * `undefined` and other non-numeric values. See http://es5.github.io/#x15.1.2.4.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is `NaN`, else `false`.\n\t * @example\n\t *\n\t * _.isNaN(NaN);\n\t * // => true\n\t *\n\t * _.isNaN(new Number(NaN));\n\t * // => true\n\t *\n\t * isNaN(undefined);\n\t * // => true\n\t *\n\t * _.isNaN(undefined);\n\t * // => false\n\t */\n\t function isNaN(value) {\n\t // `NaN` as a primitive is the only value that is not equal to itself\n\t // (perform the [[Class]] check first to avoid errors with some host objects in IE)\n\t return isNumber(value) && value != +value;\n\t }\n\t\n\t /**\n\t * Checks if `value` is `null`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is `null`, else `false`.\n\t * @example\n\t *\n\t * _.isNull(null);\n\t * // => true\n\t *\n\t * _.isNull(undefined);\n\t * // => false\n\t */\n\t function isNull(value) {\n\t return value === null;\n\t }\n\t\n\t /**\n\t * Checks if `value` is a number.\n\t *\n\t * Note: `NaN` is considered a number. See http://es5.github.io/#x8.5.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is a number, else `false`.\n\t * @example\n\t *\n\t * _.isNumber(8.4 * 5);\n\t * // => true\n\t */\n\t function isNumber(value) {\n\t return typeof value == 'number' ||\n\t value && typeof value == 'object' && toString.call(value) == numberClass || false;\n\t }\n\t\n\t /**\n\t * Checks if `value` is an object created by the `Object` constructor.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n\t * @example\n\t *\n\t * function Shape() {\n\t * this.x = 0;\n\t * this.y = 0;\n\t * }\n\t *\n\t * _.isPlainObject(new Shape);\n\t * // => false\n\t *\n\t * _.isPlainObject([1, 2, 3]);\n\t * // => false\n\t *\n\t * _.isPlainObject({ 'x': 0, 'y': 0 });\n\t * // => true\n\t */\n\t var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {\n\t if (!(value && toString.call(value) == objectClass) || (!support.argsClass && isArguments(value))) {\n\t return false;\n\t }\n\t var valueOf = value.valueOf,\n\t objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);\n\t\n\t return objProto\n\t ? (value == objProto || getPrototypeOf(value) == objProto)\n\t : shimIsPlainObject(value);\n\t };\n\t\n\t /**\n\t * Checks if `value` is a regular expression.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is a regular expression, else `false`.\n\t * @example\n\t *\n\t * _.isRegExp(/fred/);\n\t * // => true\n\t */\n\t function isRegExp(value) {\n\t return value && objectTypes[typeof value] && toString.call(value) == regexpClass || false;\n\t }\n\t\n\t /**\n\t * Checks if `value` is a string.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is a string, else `false`.\n\t * @example\n\t *\n\t * _.isString('fred');\n\t * // => true\n\t */\n\t function isString(value) {\n\t return typeof value == 'string' ||\n\t value && typeof value == 'object' && toString.call(value) == stringClass || false;\n\t }\n\t\n\t /**\n\t * Checks if `value` is `undefined`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if the `value` is `undefined`, else `false`.\n\t * @example\n\t *\n\t * _.isUndefined(void 0);\n\t * // => true\n\t */\n\t function isUndefined(value) {\n\t return typeof value == 'undefined';\n\t }\n\t\n\t /**\n\t * Creates an object with the same keys as `object` and values generated by\n\t * running each own enumerable property of `object` through the callback.\n\t * The callback is bound to `thisArg` and invoked with three arguments;\n\t * (value, key, object).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array} Returns a new object with values of the results of each `callback` execution.\n\t * @example\n\t *\n\t * _.mapValues({ 'a': 1, 'b': 2, 'c': 3} , function(num) { return num * 3; });\n\t * // => { 'a': 3, 'b': 6, 'c': 9 }\n\t *\n\t * var characters = {\n\t * 'fred': { 'name': 'fred', 'age': 40 },\n\t * 'pebbles': { 'name': 'pebbles', 'age': 1 }\n\t * };\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.mapValues(characters, 'age');\n\t * // => { 'fred': 40, 'pebbles': 1 }\n\t */\n\t function mapValues(object, callback, thisArg) {\n\t var result = {};\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t\n\t forOwn(object, function(value, key, object) {\n\t result[key] = callback(value, key, object);\n\t });\n\t return result;\n\t }\n\t\n\t /**\n\t * Recursively merges own enumerable properties of the source object(s), that\n\t * don't resolve to `undefined` into the destination object. Subsequent sources\n\t * will overwrite property assignments of previous sources. If a callback is\n\t * provided it will be executed to produce the merged values of the destination\n\t * and source properties. If the callback returns `undefined` merging will\n\t * be handled by the method instead. The callback is bound to `thisArg` and\n\t * invoked with two arguments; (objectValue, sourceValue).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The destination object.\n\t * @param {...Object} [source] The source objects.\n\t * @param {Function} [callback] The function to customize merging properties.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Object} Returns the destination object.\n\t * @example\n\t *\n\t * var names = {\n\t * 'characters': [\n\t * { 'name': 'barney' },\n\t * { 'name': 'fred' }\n\t * ]\n\t * };\n\t *\n\t * var ages = {\n\t * 'characters': [\n\t * { 'age': 36 },\n\t * { 'age': 40 }\n\t * ]\n\t * };\n\t *\n\t * _.merge(names, ages);\n\t * // => { 'characters': [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] }\n\t *\n\t * var food = {\n\t * 'fruits': ['apple'],\n\t * 'vegetables': ['beet']\n\t * };\n\t *\n\t * var otherFood = {\n\t * 'fruits': ['banana'],\n\t * 'vegetables': ['carrot']\n\t * };\n\t *\n\t * _.merge(food, otherFood, function(a, b) {\n\t * return _.isArray(a) ? a.concat(b) : undefined;\n\t * });\n\t * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot] }\n\t */\n\t function merge(object) {\n\t var args = arguments,\n\t length = 2;\n\t\n\t if (!isObject(object)) {\n\t return object;\n\t }\n\t // allows working with `_.reduce` and `_.reduceRight` without using\n\t // their `index` and `collection` arguments\n\t if (typeof args[2] != 'number') {\n\t length = args.length;\n\t }\n\t if (length > 3 && typeof args[length - 2] == 'function') {\n\t var callback = baseCreateCallback(args[--length - 1], args[length--], 2);\n\t } else if (length > 2 && typeof args[length - 1] == 'function') {\n\t callback = args[--length];\n\t }\n\t var sources = slice(arguments, 1, length),\n\t index = -1,\n\t stackA = getArray(),\n\t stackB = getArray();\n\t\n\t while (++index < length) {\n\t baseMerge(object, sources[index], callback, stackA, stackB);\n\t }\n\t releaseArray(stackA);\n\t releaseArray(stackB);\n\t return object;\n\t }\n\t\n\t /**\n\t * Creates a shallow clone of `object` excluding the specified properties.\n\t * Property names may be specified as individual arguments or as arrays of\n\t * property names. If a callback is provided it will be executed for each\n\t * property of `object` omitting the properties the callback returns truey\n\t * for. The callback is bound to `thisArg` and invoked with three arguments;\n\t * (value, key, object).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The source object.\n\t * @param {Function|...string|string[]} [callback] The properties to omit or the\n\t * function called per iteration.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Object} Returns an object without the omitted properties.\n\t * @example\n\t *\n\t * _.omit({ 'name': 'fred', 'age': 40 }, 'age');\n\t * // => { 'name': 'fred' }\n\t *\n\t * _.omit({ 'name': 'fred', 'age': 40 }, function(value) {\n\t * return typeof value == 'number';\n\t * });\n\t * // => { 'name': 'fred' }\n\t */\n\t function omit(object, callback, thisArg) {\n\t var result = {};\n\t if (typeof callback != 'function') {\n\t var props = [];\n\t forIn(object, function(value, key) {\n\t props.push(key);\n\t });\n\t props = baseDifference(props, baseFlatten(arguments, true, false, 1));\n\t\n\t var index = -1,\n\t length = props.length;\n\t\n\t while (++index < length) {\n\t var key = props[index];\n\t result[key] = object[key];\n\t }\n\t } else {\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t forIn(object, function(value, key, object) {\n\t if (!callback(value, key, object)) {\n\t result[key] = value;\n\t }\n\t });\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Creates a two dimensional array of an object's key-value pairs,\n\t * i.e. `[[key1, value1], [key2, value2]]`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The object to inspect.\n\t * @returns {Array} Returns new array of key-value pairs.\n\t * @example\n\t *\n\t * _.pairs({ 'barney': 36, 'fred': 40 });\n\t * // => [['barney', 36], ['fred', 40]] (property order is not guaranteed across environments)\n\t */\n\t function pairs(object) {\n\t var index = -1,\n\t props = keys(object),\n\t length = props.length,\n\t result = Array(length);\n\t\n\t while (++index < length) {\n\t var key = props[index];\n\t result[index] = [key, object[key]];\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Creates a shallow clone of `object` composed of the specified properties.\n\t * Property names may be specified as individual arguments or as arrays of\n\t * property names. If a callback is provided it will be executed for each\n\t * property of `object` picking the properties the callback returns truey\n\t * for. The callback is bound to `thisArg` and invoked with three arguments;\n\t * (value, key, object).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The source object.\n\t * @param {Function|...string|string[]} [callback] The function called per\n\t * iteration or property names to pick, specified as individual property\n\t * names or arrays of property names.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Object} Returns an object composed of the picked properties.\n\t * @example\n\t *\n\t * _.pick({ 'name': 'fred', '_userid': 'fred1' }, 'name');\n\t * // => { 'name': 'fred' }\n\t *\n\t * _.pick({ 'name': 'fred', '_userid': 'fred1' }, function(value, key) {\n\t * return key.charAt(0) != '_';\n\t * });\n\t * // => { 'name': 'fred' }\n\t */\n\t function pick(object, callback, thisArg) {\n\t var result = {};\n\t if (typeof callback != 'function') {\n\t var index = -1,\n\t props = baseFlatten(arguments, true, false, 1),\n\t length = isObject(object) ? props.length : 0;\n\t\n\t while (++index < length) {\n\t var key = props[index];\n\t if (key in object) {\n\t result[key] = object[key];\n\t }\n\t }\n\t } else {\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t forIn(object, function(value, key, object) {\n\t if (callback(value, key, object)) {\n\t result[key] = value;\n\t }\n\t });\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * An alternative to `_.reduce` this method transforms `object` to a new\n\t * `accumulator` object which is the result of running each of its own\n\t * enumerable properties through a callback, with each callback execution\n\t * potentially mutating the `accumulator` object. The callback is bound to\n\t * `thisArg` and invoked with four arguments; (accumulator, value, key, object).\n\t * Callbacks may exit iteration early by explicitly returning `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Array|Object} object The object to iterate over.\n\t * @param {Function} [callback=identity] The function called per iteration.\n\t * @param {*} [accumulator] The custom accumulator value.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {*} Returns the accumulated value.\n\t * @example\n\t *\n\t * var squares = _.transform([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], function(result, num) {\n\t * num *= num;\n\t * if (num % 2) {\n\t * return result.push(num) < 3;\n\t * }\n\t * });\n\t * // => [1, 9, 25]\n\t *\n\t * var mapped = _.transform({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) {\n\t * result[key] = num * 3;\n\t * });\n\t * // => { 'a': 3, 'b': 6, 'c': 9 }\n\t */\n\t function transform(object, callback, accumulator, thisArg) {\n\t var isArr = isArray(object);\n\t if (accumulator == null) {\n\t if (isArr) {\n\t accumulator = [];\n\t } else {\n\t var ctor = object && object.constructor,\n\t proto = ctor && ctor.prototype;\n\t\n\t accumulator = baseCreate(proto);\n\t }\n\t }\n\t if (callback) {\n\t callback = lodash.createCallback(callback, thisArg, 4);\n\t (isArr ? baseEach : forOwn)(object, function(value, index, object) {\n\t return callback(accumulator, value, index, object);\n\t });\n\t }\n\t return accumulator;\n\t }\n\t\n\t /**\n\t * Creates an array composed of the own enumerable property values of `object`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Objects\n\t * @param {Object} object The object to inspect.\n\t * @returns {Array} Returns an array of property values.\n\t * @example\n\t *\n\t * _.values({ 'one': 1, 'two': 2, 'three': 3 });\n\t * // => [1, 2, 3] (property order is not guaranteed across environments)\n\t */\n\t function values(object) {\n\t var index = -1,\n\t props = keys(object),\n\t length = props.length,\n\t result = Array(length);\n\t\n\t while (++index < length) {\n\t result[index] = object[props[index]];\n\t }\n\t return result;\n\t }\n\t\n\t /*--------------------------------------------------------------------------*/\n\t\n\t /**\n\t * Creates an array of elements from the specified indexes, or keys, of the\n\t * `collection`. Indexes may be specified as individual arguments or as arrays\n\t * of indexes.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {...(number|number[]|string|string[])} [index] The indexes of `collection`\n\t * to retrieve, specified as individual indexes or arrays of indexes.\n\t * @returns {Array} Returns a new array of elements corresponding to the\n\t * provided indexes.\n\t * @example\n\t *\n\t * _.at(['a', 'b', 'c', 'd', 'e'], [0, 2, 4]);\n\t * // => ['a', 'c', 'e']\n\t *\n\t * _.at(['fred', 'barney', 'pebbles'], 0, 2);\n\t * // => ['fred', 'pebbles']\n\t */\n\t function at(collection) {\n\t var args = arguments,\n\t index = -1,\n\t props = baseFlatten(args, true, false, 1),\n\t length = (args[2] && args[2][args[1]] === collection) ? 1 : props.length,\n\t result = Array(length);\n\t\n\t if (support.unindexedChars && isString(collection)) {\n\t collection = collection.split('');\n\t }\n\t while(++index < length) {\n\t result[index] = collection[props[index]];\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Checks if a given value is present in a collection using strict equality\n\t * for comparisons, i.e. `===`. If `fromIndex` is negative, it is used as the\n\t * offset from the end of the collection.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias include\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {*} target The value to check for.\n\t * @param {number} [fromIndex=0] The index to search from.\n\t * @returns {boolean} Returns `true` if the `target` element is found, else `false`.\n\t * @example\n\t *\n\t * _.contains([1, 2, 3], 1);\n\t * // => true\n\t *\n\t * _.contains([1, 2, 3], 1, 2);\n\t * // => false\n\t *\n\t * _.contains({ 'name': 'fred', 'age': 40 }, 'fred');\n\t * // => true\n\t *\n\t * _.contains('pebbles', 'eb');\n\t * // => true\n\t */\n\t function contains(collection, target, fromIndex) {\n\t var index = -1,\n\t indexOf = getIndexOf(),\n\t length = collection ? collection.length : 0,\n\t result = false;\n\t\n\t fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex) || 0;\n\t if (isArray(collection)) {\n\t result = indexOf(collection, target, fromIndex) > -1;\n\t } else if (typeof length == 'number') {\n\t result = (isString(collection) ? collection.indexOf(target, fromIndex) : indexOf(collection, target, fromIndex)) > -1;\n\t } else {\n\t baseEach(collection, function(value) {\n\t if (++index >= fromIndex) {\n\t return !(result = value === target);\n\t }\n\t });\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Creates an object composed of keys generated from the results of running\n\t * each element of `collection` through the callback. The corresponding value\n\t * of each key is the number of times the key was returned by the callback.\n\t * The callback is bound to `thisArg` and invoked with three arguments;\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Object} Returns the composed aggregate object.\n\t * @example\n\t *\n\t * _.countBy([4.3, 6.1, 6.4], function(num) { return Math.floor(num); });\n\t * // => { '4': 1, '6': 2 }\n\t *\n\t * _.countBy([4.3, 6.1, 6.4], function(num) { return this.floor(num); }, Math);\n\t * // => { '4': 1, '6': 2 }\n\t *\n\t * _.countBy(['one', 'two', 'three'], 'length');\n\t * // => { '3': 2, '5': 1 }\n\t */\n\t var countBy = createAggregator(function(result, value, key) {\n\t (hasOwnProperty.call(result, key) ? result[key]++ : result[key] = 1);\n\t });\n\t\n\t /**\n\t * Checks if the given callback returns truey value for **all** elements of\n\t * a collection. The callback is bound to `thisArg` and invoked with three\n\t * arguments; (value, index|key, collection).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias all\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {boolean} Returns `true` if all elements passed the callback check,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.every([true, 1, null, 'yes']);\n\t * // => false\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36 },\n\t * { 'name': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.every(characters, 'age');\n\t * // => true\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.every(characters, { 'age': 36 });\n\t * // => false\n\t */\n\t function every(collection, callback, thisArg) {\n\t var result = true;\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t\n\t if (isArray(collection)) {\n\t var index = -1,\n\t length = collection.length;\n\t\n\t while (++index < length) {\n\t if (!(result = !!callback(collection[index], index, collection))) {\n\t break;\n\t }\n\t }\n\t } else {\n\t baseEach(collection, function(value, index, collection) {\n\t return (result = !!callback(value, index, collection));\n\t });\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Iterates over elements of a collection, returning an array of all elements\n\t * the callback returns truey for. The callback is bound to `thisArg` and\n\t * invoked with three arguments; (value, index|key, collection).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias select\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array} Returns a new array of elements that passed the callback check.\n\t * @example\n\t *\n\t * var evens = _.filter([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; });\n\t * // => [2, 4, 6]\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36, 'blocked': false },\n\t * { 'name': 'fred', 'age': 40, 'blocked': true }\n\t * ];\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.filter(characters, 'blocked');\n\t * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }]\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.filter(characters, { 'age': 36 });\n\t * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }]\n\t */\n\t function filter(collection, callback, thisArg) {\n\t var result = [];\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t\n\t if (isArray(collection)) {\n\t var index = -1,\n\t length = collection.length;\n\t\n\t while (++index < length) {\n\t var value = collection[index];\n\t if (callback(value, index, collection)) {\n\t result.push(value);\n\t }\n\t }\n\t } else {\n\t baseEach(collection, function(value, index, collection) {\n\t if (callback(value, index, collection)) {\n\t result.push(value);\n\t }\n\t });\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Iterates over elements of a collection, returning the first element that\n\t * the callback returns truey for. The callback is bound to `thisArg` and\n\t * invoked with three arguments; (value, index|key, collection).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias detect, findWhere\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {*} Returns the found element, else `undefined`.\n\t * @example\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36, 'blocked': false },\n\t * { 'name': 'fred', 'age': 40, 'blocked': true },\n\t * { 'name': 'pebbles', 'age': 1, 'blocked': false }\n\t * ];\n\t *\n\t * _.find(characters, function(chr) {\n\t * return chr.age < 40;\n\t * });\n\t * // => { 'name': 'barney', 'age': 36, 'blocked': false }\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.find(characters, { 'age': 1 });\n\t * // => { 'name': 'pebbles', 'age': 1, 'blocked': false }\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.find(characters, 'blocked');\n\t * // => { 'name': 'fred', 'age': 40, 'blocked': true }\n\t */\n\t function find(collection, callback, thisArg) {\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t\n\t if (isArray(collection)) {\n\t var index = -1,\n\t length = collection.length;\n\t\n\t while (++index < length) {\n\t var value = collection[index];\n\t if (callback(value, index, collection)) {\n\t return value;\n\t }\n\t }\n\t } else {\n\t var result;\n\t baseEach(collection, function(value, index, collection) {\n\t if (callback(value, index, collection)) {\n\t result = value;\n\t return false;\n\t }\n\t });\n\t return result;\n\t }\n\t }\n\t\n\t /**\n\t * This method is like `_.find` except that it iterates over elements\n\t * of a `collection` from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {*} Returns the found element, else `undefined`.\n\t * @example\n\t *\n\t * _.findLast([1, 2, 3, 4], function(num) {\n\t * return num % 2 == 1;\n\t * });\n\t * // => 3\n\t */\n\t function findLast(collection, callback, thisArg) {\n\t var result;\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t forEachRight(collection, function(value, index, collection) {\n\t if (callback(value, index, collection)) {\n\t result = value;\n\t return false;\n\t }\n\t });\n\t return result;\n\t }\n\t\n\t /**\n\t * Iterates over elements of a collection, executing the callback for each\n\t * element. The callback is bound to `thisArg` and invoked with three arguments;\n\t * (value, index|key, collection). Callbacks may exit iteration early by\n\t * explicitly returning `false`.\n\t *\n\t * Note: As with other \"Collections\" methods, objects with a `length` property\n\t * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`\n\t * may be used for object iteration.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias each\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [callback=identity] The function called per iteration.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array|Object|string} Returns `collection`.\n\t * @example\n\t *\n\t * _([1, 2, 3]).forEach(function(num) { console.log(num); }).join(',');\n\t * // => logs each number and returns '1,2,3'\n\t *\n\t * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { console.log(num); });\n\t * // => logs each number and returns the object (property order is not guaranteed across environments)\n\t */\n\t function forEach(collection, callback, thisArg) {\n\t if (callback && typeof thisArg == 'undefined' && isArray(collection)) {\n\t var index = -1,\n\t length = collection.length;\n\t\n\t while (++index < length) {\n\t if (callback(collection[index], index, collection) === false) {\n\t break;\n\t }\n\t }\n\t } else {\n\t baseEach(collection, callback, thisArg);\n\t }\n\t return collection;\n\t }\n\t\n\t /**\n\t * This method is like `_.forEach` except that it iterates over elements\n\t * of a `collection` from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias eachRight\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [callback=identity] The function called per iteration.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array|Object|string} Returns `collection`.\n\t * @example\n\t *\n\t * _([1, 2, 3]).forEachRight(function(num) { console.log(num); }).join(',');\n\t * // => logs each number from right to left and returns '3,2,1'\n\t */\n\t function forEachRight(collection, callback, thisArg) {\n\t var iterable = collection,\n\t length = collection ? collection.length : 0;\n\t\n\t callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);\n\t if (isArray(collection)) {\n\t while (length--) {\n\t if (callback(collection[length], length, collection) === false) {\n\t break;\n\t }\n\t }\n\t } else {\n\t if (typeof length != 'number') {\n\t var props = keys(collection);\n\t length = props.length;\n\t } else if (support.unindexedChars && isString(collection)) {\n\t iterable = collection.split('');\n\t }\n\t baseEach(collection, function(value, key, collection) {\n\t key = props ? props[--length] : --length;\n\t return callback(iterable[key], key, collection);\n\t });\n\t }\n\t return collection;\n\t }\n\t\n\t /**\n\t * Creates an object composed of keys generated from the results of running\n\t * each element of a collection through the callback. The corresponding value\n\t * of each key is an array of the elements responsible for generating the key.\n\t * The callback is bound to `thisArg` and invoked with three arguments;\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Object} Returns the composed aggregate object.\n\t * @example\n\t *\n\t * _.groupBy([4.2, 6.1, 6.4], function(num) { return Math.floor(num); });\n\t * // => { '4': [4.2], '6': [6.1, 6.4] }\n\t *\n\t * _.groupBy([4.2, 6.1, 6.4], function(num) { return this.floor(num); }, Math);\n\t * // => { '4': [4.2], '6': [6.1, 6.4] }\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.groupBy(['one', 'two', 'three'], 'length');\n\t * // => { '3': ['one', 'two'], '5': ['three'] }\n\t */\n\t var groupBy = createAggregator(function(result, value, key) {\n\t (hasOwnProperty.call(result, key) ? result[key] : result[key] = []).push(value);\n\t });\n\t\n\t /**\n\t * Creates an object composed of keys generated from the results of running\n\t * each element of the collection through the given callback. The corresponding\n\t * value of each key is the last element responsible for generating the key.\n\t * The callback is bound to `thisArg` and invoked with three arguments;\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Object} Returns the composed aggregate object.\n\t * @example\n\t *\n\t * var keys = [\n\t * { 'dir': 'left', 'code': 97 },\n\t * { 'dir': 'right', 'code': 100 }\n\t * ];\n\t *\n\t * _.indexBy(keys, 'dir');\n\t * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n\t *\n\t * _.indexBy(keys, function(key) { return String.fromCharCode(key.code); });\n\t * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n\t *\n\t * _.indexBy(characters, function(key) { this.fromCharCode(key.code); }, String);\n\t * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n\t */\n\t var indexBy = createAggregator(function(result, value, key) {\n\t result[key] = value;\n\t });\n\t\n\t /**\n\t * Invokes the method named by `methodName` on each element in the `collection`\n\t * returning an array of the results of each invoked method. Additional arguments\n\t * will be provided to each invoked method. If `methodName` is a function it\n\t * will be invoked for, and `this` bound to, each element in the `collection`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|string} methodName The name of the method to invoke or\n\t * the function invoked per iteration.\n\t * @param {...*} [arg] Arguments to invoke the method with.\n\t * @returns {Array} Returns a new array of the results of each invoked method.\n\t * @example\n\t *\n\t * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort');\n\t * // => [[1, 5, 7], [1, 2, 3]]\n\t *\n\t * _.invoke([123, 456], String.prototype.split, '');\n\t * // => [['1', '2', '3'], ['4', '5', '6']]\n\t */\n\t function invoke(collection, methodName) {\n\t var args = slice(arguments, 2),\n\t index = -1,\n\t isFunc = typeof methodName == 'function',\n\t length = collection ? collection.length : 0,\n\t result = Array(typeof length == 'number' ? length : 0);\n\t\n\t forEach(collection, function(value) {\n\t result[++index] = (isFunc ? methodName : value[methodName]).apply(value, args);\n\t });\n\t return result;\n\t }\n\t\n\t /**\n\t * Creates an array of values by running each element in the collection\n\t * through the callback. The callback is bound to `thisArg` and invoked with\n\t * three arguments; (value, index|key, collection).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias collect\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array} Returns a new array of the results of each `callback` execution.\n\t * @example\n\t *\n\t * _.map([1, 2, 3], function(num) { return num * 3; });\n\t * // => [3, 6, 9]\n\t *\n\t * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { return num * 3; });\n\t * // => [3, 6, 9] (property order is not guaranteed across environments)\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36 },\n\t * { 'name': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.map(characters, 'name');\n\t * // => ['barney', 'fred']\n\t */\n\t function map(collection, callback, thisArg) {\n\t var index = -1,\n\t length = collection ? collection.length : 0,\n\t result = Array(typeof length == 'number' ? length : 0);\n\t\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t if (isArray(collection)) {\n\t while (++index < length) {\n\t result[index] = callback(collection[index], index, collection);\n\t }\n\t } else {\n\t baseEach(collection, function(value, key, collection) {\n\t result[++index] = callback(value, key, collection);\n\t });\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Retrieves the maximum value of a collection. If the collection is empty or\n\t * falsey `-Infinity` is returned. If a callback is provided it will be executed\n\t * for each value in the collection to generate the criterion by which the value\n\t * is ranked. The callback is bound to `thisArg` and invoked with three\n\t * arguments; (value, index, collection).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {*} Returns the maximum value.\n\t * @example\n\t *\n\t * _.max([4, 2, 8, 6]);\n\t * // => 8\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36 },\n\t * { 'name': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * _.max(characters, function(chr) { return chr.age; });\n\t * // => { 'name': 'fred', 'age': 40 };\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.max(characters, 'age');\n\t * // => { 'name': 'fred', 'age': 40 };\n\t */\n\t function max(collection, callback, thisArg) {\n\t var computed = -Infinity,\n\t result = computed;\n\t\n\t // allows working with functions like `_.map` without using\n\t // their `index` argument as a callback\n\t if (typeof callback != 'function' && thisArg && thisArg[callback] === collection) {\n\t callback = null;\n\t }\n\t if (callback == null && isArray(collection)) {\n\t var index = -1,\n\t length = collection.length;\n\t\n\t while (++index < length) {\n\t var value = collection[index];\n\t if (value > result) {\n\t result = value;\n\t }\n\t }\n\t } else {\n\t callback = (callback == null && isString(collection))\n\t ? charAtCallback\n\t : lodash.createCallback(callback, thisArg, 3);\n\t\n\t baseEach(collection, function(value, index, collection) {\n\t var current = callback(value, index, collection);\n\t if (current > computed) {\n\t computed = current;\n\t result = value;\n\t }\n\t });\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Retrieves the minimum value of a collection. If the collection is empty or\n\t * falsey `Infinity` is returned. If a callback is provided it will be executed\n\t * for each value in the collection to generate the criterion by which the value\n\t * is ranked. The callback is bound to `thisArg` and invoked with three\n\t * arguments; (value, index, collection).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {*} Returns the minimum value.\n\t * @example\n\t *\n\t * _.min([4, 2, 8, 6]);\n\t * // => 2\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36 },\n\t * { 'name': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * _.min(characters, function(chr) { return chr.age; });\n\t * // => { 'name': 'barney', 'age': 36 };\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.min(characters, 'age');\n\t * // => { 'name': 'barney', 'age': 36 };\n\t */\n\t function min(collection, callback, thisArg) {\n\t var computed = Infinity,\n\t result = computed;\n\t\n\t // allows working with functions like `_.map` without using\n\t // their `index` argument as a callback\n\t if (typeof callback != 'function' && thisArg && thisArg[callback] === collection) {\n\t callback = null;\n\t }\n\t if (callback == null && isArray(collection)) {\n\t var index = -1,\n\t length = collection.length;\n\t\n\t while (++index < length) {\n\t var value = collection[index];\n\t if (value < result) {\n\t result = value;\n\t }\n\t }\n\t } else {\n\t callback = (callback == null && isString(collection))\n\t ? charAtCallback\n\t : lodash.createCallback(callback, thisArg, 3);\n\t\n\t baseEach(collection, function(value, index, collection) {\n\t var current = callback(value, index, collection);\n\t if (current < computed) {\n\t computed = current;\n\t result = value;\n\t }\n\t });\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Retrieves the value of a specified property from all elements in the collection.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {string} property The name of the property to pluck.\n\t * @returns {Array} Returns a new array of property values.\n\t * @example\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36 },\n\t * { 'name': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * _.pluck(characters, 'name');\n\t * // => ['barney', 'fred']\n\t */\n\t var pluck = map;\n\t\n\t /**\n\t * Reduces a collection to a value which is the accumulated result of running\n\t * each element in the collection through the callback, where each successive\n\t * callback execution consumes the return value of the previous execution. If\n\t * `accumulator` is not provided the first element of the collection will be\n\t * used as the initial `accumulator` value. The callback is bound to `thisArg`\n\t * and invoked with four arguments; (accumulator, value, index|key, collection).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias foldl, inject\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [callback=identity] The function called per iteration.\n\t * @param {*} [accumulator] Initial value of the accumulator.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {*} Returns the accumulated value.\n\t * @example\n\t *\n\t * var sum = _.reduce([1, 2, 3], function(sum, num) {\n\t * return sum + num;\n\t * });\n\t * // => 6\n\t *\n\t * var mapped = _.reduce({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) {\n\t * result[key] = num * 3;\n\t * return result;\n\t * }, {});\n\t * // => { 'a': 3, 'b': 6, 'c': 9 }\n\t */\n\t function reduce(collection, callback, accumulator, thisArg) {\n\t var noaccum = arguments.length < 3;\n\t callback = lodash.createCallback(callback, thisArg, 4);\n\t\n\t if (isArray(collection)) {\n\t var index = -1,\n\t length = collection.length;\n\t\n\t if (noaccum) {\n\t accumulator = collection[++index];\n\t }\n\t while (++index < length) {\n\t accumulator = callback(accumulator, collection[index], index, collection);\n\t }\n\t } else {\n\t baseEach(collection, function(value, index, collection) {\n\t accumulator = noaccum\n\t ? (noaccum = false, value)\n\t : callback(accumulator, value, index, collection)\n\t });\n\t }\n\t return accumulator;\n\t }\n\t\n\t /**\n\t * This method is like `_.reduce` except that it iterates over elements\n\t * of a `collection` from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias foldr\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [callback=identity] The function called per iteration.\n\t * @param {*} [accumulator] Initial value of the accumulator.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {*} Returns the accumulated value.\n\t * @example\n\t *\n\t * var list = [[0, 1], [2, 3], [4, 5]];\n\t * var flat = _.reduceRight(list, function(a, b) { return a.concat(b); }, []);\n\t * // => [4, 5, 2, 3, 0, 1]\n\t */\n\t function reduceRight(collection, callback, accumulator, thisArg) {\n\t var noaccum = arguments.length < 3;\n\t callback = lodash.createCallback(callback, thisArg, 4);\n\t forEachRight(collection, function(value, index, collection) {\n\t accumulator = noaccum\n\t ? (noaccum = false, value)\n\t : callback(accumulator, value, index, collection);\n\t });\n\t return accumulator;\n\t }\n\t\n\t /**\n\t * The opposite of `_.filter` this method returns the elements of a\n\t * collection that the callback does **not** return truey for.\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array} Returns a new array of elements that failed the callback check.\n\t * @example\n\t *\n\t * var odds = _.reject([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; });\n\t * // => [1, 3, 5]\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36, 'blocked': false },\n\t * { 'name': 'fred', 'age': 40, 'blocked': true }\n\t * ];\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.reject(characters, 'blocked');\n\t * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }]\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.reject(characters, { 'age': 36 });\n\t * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }]\n\t */\n\t function reject(collection, callback, thisArg) {\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t return filter(collection, function(value, index, collection) {\n\t return !callback(value, index, collection);\n\t });\n\t }\n\t\n\t /**\n\t * Retrieves a random element or `n` random elements from a collection.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to sample.\n\t * @param {number} [n] The number of elements to sample.\n\t * @param- {Object} [guard] Allows working with functions like `_.map`\n\t * without using their `index` arguments as `n`.\n\t * @returns {Array} Returns the random sample(s) of `collection`.\n\t * @example\n\t *\n\t * _.sample([1, 2, 3, 4]);\n\t * // => 2\n\t *\n\t * _.sample([1, 2, 3, 4], 2);\n\t * // => [3, 1]\n\t */\n\t function sample(collection, n, guard) {\n\t if (collection && typeof collection.length != 'number') {\n\t collection = values(collection);\n\t } else if (support.unindexedChars && isString(collection)) {\n\t collection = collection.split('');\n\t }\n\t if (n == null || guard) {\n\t return collection ? collection[baseRandom(0, collection.length - 1)] : undefined;\n\t }\n\t var result = shuffle(collection);\n\t result.length = nativeMin(nativeMax(0, n), result.length);\n\t return result;\n\t }\n\t\n\t /**\n\t * Creates an array of shuffled values, using a version of the Fisher-Yates\n\t * shuffle. See http://en.wikipedia.org/wiki/Fisher-Yates_shuffle.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to shuffle.\n\t * @returns {Array} Returns a new shuffled collection.\n\t * @example\n\t *\n\t * _.shuffle([1, 2, 3, 4, 5, 6]);\n\t * // => [4, 1, 6, 3, 5, 2]\n\t */\n\t function shuffle(collection) {\n\t var index = -1,\n\t length = collection ? collection.length : 0,\n\t result = Array(typeof length == 'number' ? length : 0);\n\t\n\t forEach(collection, function(value) {\n\t var rand = baseRandom(0, ++index);\n\t result[index] = result[rand];\n\t result[rand] = value;\n\t });\n\t return result;\n\t }\n\t\n\t /**\n\t * Gets the size of the `collection` by returning `collection.length` for arrays\n\t * and array-like objects or the number of own enumerable properties for objects.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to inspect.\n\t * @returns {number} Returns `collection.length` or number of own enumerable properties.\n\t * @example\n\t *\n\t * _.size([1, 2]);\n\t * // => 2\n\t *\n\t * _.size({ 'one': 1, 'two': 2, 'three': 3 });\n\t * // => 3\n\t *\n\t * _.size('pebbles');\n\t * // => 7\n\t */\n\t function size(collection) {\n\t var length = collection ? collection.length : 0;\n\t return typeof length == 'number' ? length : keys(collection).length;\n\t }\n\t\n\t /**\n\t * Checks if the callback returns a truey value for **any** element of a\n\t * collection. The function returns as soon as it finds a passing value and\n\t * does not iterate over the entire collection. The callback is bound to\n\t * `thisArg` and invoked with three arguments; (value, index|key, collection).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias any\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {boolean} Returns `true` if any element passed the callback check,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.some([null, 0, 'yes', false], Boolean);\n\t * // => true\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36, 'blocked': false },\n\t * { 'name': 'fred', 'age': 40, 'blocked': true }\n\t * ];\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.some(characters, 'blocked');\n\t * // => true\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.some(characters, { 'age': 1 });\n\t * // => false\n\t */\n\t function some(collection, callback, thisArg) {\n\t var result;\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t\n\t if (isArray(collection)) {\n\t var index = -1,\n\t length = collection.length;\n\t\n\t while (++index < length) {\n\t if ((result = callback(collection[index], index, collection))) {\n\t break;\n\t }\n\t }\n\t } else {\n\t baseEach(collection, function(value, index, collection) {\n\t return !(result = callback(value, index, collection));\n\t });\n\t }\n\t return !!result;\n\t }\n\t\n\t /**\n\t * Creates an array of elements, sorted in ascending order by the results of\n\t * running each element in a collection through the callback. This method\n\t * performs a stable sort, that is, it will preserve the original sort order\n\t * of equal elements. The callback is bound to `thisArg` and invoked with\n\t * three arguments; (value, index|key, collection).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an array of property names is provided for `callback` the collection\n\t * will be sorted by each property value.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Array|Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array} Returns a new array of sorted elements.\n\t * @example\n\t *\n\t * _.sortBy([1, 2, 3], function(num) { return Math.sin(num); });\n\t * // => [3, 1, 2]\n\t *\n\t * _.sortBy([1, 2, 3], function(num) { return this.sin(num); }, Math);\n\t * // => [3, 1, 2]\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36 },\n\t * { 'name': 'fred', 'age': 40 },\n\t * { 'name': 'barney', 'age': 26 },\n\t * { 'name': 'fred', 'age': 30 }\n\t * ];\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.map(_.sortBy(characters, 'age'), _.values);\n\t * // => [['barney', 26], ['fred', 30], ['barney', 36], ['fred', 40]]\n\t *\n\t * // sorting by multiple properties\n\t * _.map(_.sortBy(characters, ['name', 'age']), _.values);\n\t * // = > [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]]\n\t */\n\t function sortBy(collection, callback, thisArg) {\n\t var index = -1,\n\t isArr = isArray(callback),\n\t length = collection ? collection.length : 0,\n\t result = Array(typeof length == 'number' ? length : 0);\n\t\n\t if (!isArr) {\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t }\n\t forEach(collection, function(value, key, collection) {\n\t var object = result[++index] = getObject();\n\t if (isArr) {\n\t object.criteria = map(callback, function(key) { return value[key]; });\n\t } else {\n\t (object.criteria = getArray())[0] = callback(value, key, collection);\n\t }\n\t object.index = index;\n\t object.value = value;\n\t });\n\t\n\t length = result.length;\n\t result.sort(compareAscending);\n\t while (length--) {\n\t var object = result[length];\n\t result[length] = object.value;\n\t if (!isArr) {\n\t releaseArray(object.criteria);\n\t }\n\t releaseObject(object);\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Converts the `collection` to an array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to convert.\n\t * @returns {Array} Returns the new converted array.\n\t * @example\n\t *\n\t * (function() { return _.toArray(arguments).slice(1); })(1, 2, 3, 4);\n\t * // => [2, 3, 4]\n\t */\n\t function toArray(collection) {\n\t if (collection && typeof collection.length == 'number') {\n\t return (support.unindexedChars && isString(collection))\n\t ? collection.split('')\n\t : slice(collection);\n\t }\n\t return values(collection);\n\t }\n\t\n\t /**\n\t * Performs a deep comparison of each element in a `collection` to the given\n\t * `properties` object, returning an array of all elements that have equivalent\n\t * property values.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Collections\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Object} props The object of property values to filter by.\n\t * @returns {Array} Returns a new array of elements that have the given properties.\n\t * @example\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36, 'pets': ['hoppy'] },\n\t * { 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] }\n\t * ];\n\t *\n\t * _.where(characters, { 'age': 36 });\n\t * // => [{ 'name': 'barney', 'age': 36, 'pets': ['hoppy'] }]\n\t *\n\t * _.where(characters, { 'pets': ['dino'] });\n\t * // => [{ 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] }]\n\t */\n\t var where = filter;\n\t\n\t /*--------------------------------------------------------------------------*/\n\t\n\t /**\n\t * Creates an array with all falsey values removed. The values `false`, `null`,\n\t * `0`, `\"\"`, `undefined`, and `NaN` are all falsey.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to compact.\n\t * @returns {Array} Returns a new array of filtered values.\n\t * @example\n\t *\n\t * _.compact([0, 1, false, 2, '', 3]);\n\t * // => [1, 2, 3]\n\t */\n\t function compact(array) {\n\t var index = -1,\n\t length = array ? array.length : 0,\n\t result = [];\n\t\n\t while (++index < length) {\n\t var value = array[index];\n\t if (value) {\n\t result.push(value);\n\t }\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Creates an array excluding all values of the provided arrays using strict\n\t * equality for comparisons, i.e. `===`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to process.\n\t * @param {...Array} [values] The arrays of values to exclude.\n\t * @returns {Array} Returns a new array of filtered values.\n\t * @example\n\t *\n\t * _.difference([1, 2, 3, 4, 5], [5, 2, 10]);\n\t * // => [1, 3, 4]\n\t */\n\t function difference(array) {\n\t return baseDifference(array, baseFlatten(arguments, true, true, 1));\n\t }\n\t\n\t /**\n\t * This method is like `_.find` except that it returns the index of the first\n\t * element that passes the callback check, instead of the element itself.\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to search.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {number} Returns the index of the found element, else `-1`.\n\t * @example\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36, 'blocked': false },\n\t * { 'name': 'fred', 'age': 40, 'blocked': true },\n\t * { 'name': 'pebbles', 'age': 1, 'blocked': false }\n\t * ];\n\t *\n\t * _.findIndex(characters, function(chr) {\n\t * return chr.age < 20;\n\t * });\n\t * // => 2\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.findIndex(characters, { 'age': 36 });\n\t * // => 0\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.findIndex(characters, 'blocked');\n\t * // => 1\n\t */\n\t function findIndex(array, callback, thisArg) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\t\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t while (++index < length) {\n\t if (callback(array[index], index, array)) {\n\t return index;\n\t }\n\t }\n\t return -1;\n\t }\n\t\n\t /**\n\t * This method is like `_.findIndex` except that it iterates over elements\n\t * of a `collection` from right to left.\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to search.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {number} Returns the index of the found element, else `-1`.\n\t * @example\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36, 'blocked': true },\n\t * { 'name': 'fred', 'age': 40, 'blocked': false },\n\t * { 'name': 'pebbles', 'age': 1, 'blocked': true }\n\t * ];\n\t *\n\t * _.findLastIndex(characters, function(chr) {\n\t * return chr.age > 30;\n\t * });\n\t * // => 1\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.findLastIndex(characters, { 'age': 36 });\n\t * // => 0\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.findLastIndex(characters, 'blocked');\n\t * // => 2\n\t */\n\t function findLastIndex(array, callback, thisArg) {\n\t var length = array ? array.length : 0;\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t while (length--) {\n\t if (callback(array[length], length, array)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t }\n\t\n\t /**\n\t * Gets the first element or first `n` elements of an array. If a callback\n\t * is provided elements at the beginning of the array are returned as long\n\t * as the callback returns truey. The callback is bound to `thisArg` and\n\t * invoked with three arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias head, take\n\t * @category Arrays\n\t * @param {Array} array The array to query.\n\t * @param {Function|Object|number|string} [callback] The function called\n\t * per element or the number of elements to return. If a property name or\n\t * object is provided it will be used to create a \"_.pluck\" or \"_.where\"\n\t * style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {*} Returns the first element(s) of `array`.\n\t * @example\n\t *\n\t * _.first([1, 2, 3]);\n\t * // => 1\n\t *\n\t * _.first([1, 2, 3], 2);\n\t * // => [1, 2]\n\t *\n\t * _.first([1, 2, 3], function(num) {\n\t * return num < 3;\n\t * });\n\t * // => [1, 2]\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'blocked': true, 'employer': 'slate' },\n\t * { 'name': 'fred', 'blocked': false, 'employer': 'slate' },\n\t * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' }\n\t * ];\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.first(characters, 'blocked');\n\t * // => [{ 'name': 'barney', 'blocked': true, 'employer': 'slate' }]\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.pluck(_.first(characters, { 'employer': 'slate' }), 'name');\n\t * // => ['barney', 'fred']\n\t */\n\t function first(array, callback, thisArg) {\n\t var n = 0,\n\t length = array ? array.length : 0;\n\t\n\t if (typeof callback != 'number' && callback != null) {\n\t var index = -1;\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t while (++index < length && callback(array[index], index, array)) {\n\t n++;\n\t }\n\t } else {\n\t n = callback;\n\t if (n == null || thisArg) {\n\t return array ? array[0] : undefined;\n\t }\n\t }\n\t return slice(array, 0, nativeMin(nativeMax(0, n), length));\n\t }\n\t\n\t /**\n\t * Flattens a nested array (the nesting can be to any depth). If `isShallow`\n\t * is truey, the array will only be flattened a single level. If a callback\n\t * is provided each element of the array is passed through the callback before\n\t * flattening. The callback is bound to `thisArg` and invoked with three\n\t * arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to flatten.\n\t * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array} Returns a new flattened array.\n\t * @example\n\t *\n\t * _.flatten([1, [2], [3, [[4]]]]);\n\t * // => [1, 2, 3, 4];\n\t *\n\t * _.flatten([1, [2], [3, [[4]]]], true);\n\t * // => [1, 2, 3, [[4]]];\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 30, 'pets': ['hoppy'] },\n\t * { 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] }\n\t * ];\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.flatten(characters, 'pets');\n\t * // => ['hoppy', 'baby puss', 'dino']\n\t */\n\t function flatten(array, isShallow, callback, thisArg) {\n\t // juggle arguments\n\t if (typeof isShallow != 'boolean' && isShallow != null) {\n\t thisArg = callback;\n\t callback = (typeof isShallow != 'function' && thisArg && thisArg[isShallow] === array) ? null : isShallow;\n\t isShallow = false;\n\t }\n\t if (callback != null) {\n\t array = map(array, callback, thisArg);\n\t }\n\t return baseFlatten(array, isShallow);\n\t }\n\t\n\t /**\n\t * Gets the index at which the first occurrence of `value` is found using\n\t * strict equality for comparisons, i.e. `===`. If the array is already sorted\n\t * providing `true` for `fromIndex` will run a faster binary search.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to search.\n\t * @param {*} value The value to search for.\n\t * @param {boolean|number} [fromIndex=0] The index to search from or `true`\n\t * to perform a binary search on a sorted array.\n\t * @returns {number} Returns the index of the matched value or `-1`.\n\t * @example\n\t *\n\t * _.indexOf([1, 2, 3, 1, 2, 3], 2);\n\t * // => 1\n\t *\n\t * _.indexOf([1, 2, 3, 1, 2, 3], 2, 3);\n\t * // => 4\n\t *\n\t * _.indexOf([1, 1, 2, 2, 3, 3], 2, true);\n\t * // => 2\n\t */\n\t function indexOf(array, value, fromIndex) {\n\t if (typeof fromIndex == 'number') {\n\t var length = array ? array.length : 0;\n\t fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex || 0);\n\t } else if (fromIndex) {\n\t var index = sortedIndex(array, value);\n\t return array[index] === value ? index : -1;\n\t }\n\t return baseIndexOf(array, value, fromIndex);\n\t }\n\t\n\t /**\n\t * Gets all but the last element or last `n` elements of an array. If a\n\t * callback is provided elements at the end of the array are excluded from\n\t * the result as long as the callback returns truey. The callback is bound\n\t * to `thisArg` and invoked with three arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to query.\n\t * @param {Function|Object|number|string} [callback=1] The function called\n\t * per element or the number of elements to exclude. If a property name or\n\t * object is provided it will be used to create a \"_.pluck\" or \"_.where\"\n\t * style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array} Returns a slice of `array`.\n\t * @example\n\t *\n\t * _.initial([1, 2, 3]);\n\t * // => [1, 2]\n\t *\n\t * _.initial([1, 2, 3], 2);\n\t * // => [1]\n\t *\n\t * _.initial([1, 2, 3], function(num) {\n\t * return num > 1;\n\t * });\n\t * // => [1]\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'blocked': false, 'employer': 'slate' },\n\t * { 'name': 'fred', 'blocked': true, 'employer': 'slate' },\n\t * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' }\n\t * ];\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.initial(characters, 'blocked');\n\t * // => [{ 'name': 'barney', 'blocked': false, 'employer': 'slate' }]\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.pluck(_.initial(characters, { 'employer': 'na' }), 'name');\n\t * // => ['barney', 'fred']\n\t */\n\t function initial(array, callback, thisArg) {\n\t var n = 0,\n\t length = array ? array.length : 0;\n\t\n\t if (typeof callback != 'number' && callback != null) {\n\t var index = length;\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t while (index-- && callback(array[index], index, array)) {\n\t n++;\n\t }\n\t } else {\n\t n = (callback == null || thisArg) ? 1 : callback || n;\n\t }\n\t return slice(array, 0, nativeMin(nativeMax(0, length - n), length));\n\t }\n\t\n\t /**\n\t * Creates an array of unique values present in all provided arrays using\n\t * strict equality for comparisons, i.e. `===`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {...Array} [array] The arrays to inspect.\n\t * @returns {Array} Returns an array of shared values.\n\t * @example\n\t *\n\t * _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]);\n\t * // => [1, 2]\n\t */\n\t function intersection() {\n\t var args = [],\n\t argsIndex = -1,\n\t argsLength = arguments.length,\n\t caches = getArray(),\n\t indexOf = getIndexOf(),\n\t trustIndexOf = indexOf === baseIndexOf,\n\t seen = getArray();\n\t\n\t while (++argsIndex < argsLength) {\n\t var value = arguments[argsIndex];\n\t if (isArray(value) || isArguments(value)) {\n\t args.push(value);\n\t caches.push(trustIndexOf && value.length >= largeArraySize &&\n\t createCache(argsIndex ? args[argsIndex] : seen));\n\t }\n\t }\n\t var array = args[0],\n\t index = -1,\n\t length = array ? array.length : 0,\n\t result = [];\n\t\n\t outer:\n\t while (++index < length) {\n\t var cache = caches[0];\n\t value = array[index];\n\t\n\t if ((cache ? cacheIndexOf(cache, value) : indexOf(seen, value)) < 0) {\n\t argsIndex = argsLength;\n\t (cache || seen).push(value);\n\t while (--argsIndex) {\n\t cache = caches[argsIndex];\n\t if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value)) < 0) {\n\t continue outer;\n\t }\n\t }\n\t result.push(value);\n\t }\n\t }\n\t while (argsLength--) {\n\t cache = caches[argsLength];\n\t if (cache) {\n\t releaseObject(cache);\n\t }\n\t }\n\t releaseArray(caches);\n\t releaseArray(seen);\n\t return result;\n\t }\n\t\n\t /**\n\t * Gets the last element or last `n` elements of an array. If a callback is\n\t * provided elements at the end of the array are returned as long as the\n\t * callback returns truey. The callback is bound to `thisArg` and invoked\n\t * with three arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to query.\n\t * @param {Function|Object|number|string} [callback] The function called\n\t * per element or the number of elements to return. If a property name or\n\t * object is provided it will be used to create a \"_.pluck\" or \"_.where\"\n\t * style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {*} Returns the last element(s) of `array`.\n\t * @example\n\t *\n\t * _.last([1, 2, 3]);\n\t * // => 3\n\t *\n\t * _.last([1, 2, 3], 2);\n\t * // => [2, 3]\n\t *\n\t * _.last([1, 2, 3], function(num) {\n\t * return num > 1;\n\t * });\n\t * // => [2, 3]\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'blocked': false, 'employer': 'slate' },\n\t * { 'name': 'fred', 'blocked': true, 'employer': 'slate' },\n\t * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' }\n\t * ];\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.pluck(_.last(characters, 'blocked'), 'name');\n\t * // => ['fred', 'pebbles']\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.last(characters, { 'employer': 'na' });\n\t * // => [{ 'name': 'pebbles', 'blocked': true, 'employer': 'na' }]\n\t */\n\t function last(array, callback, thisArg) {\n\t var n = 0,\n\t length = array ? array.length : 0;\n\t\n\t if (typeof callback != 'number' && callback != null) {\n\t var index = length;\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t while (index-- && callback(array[index], index, array)) {\n\t n++;\n\t }\n\t } else {\n\t n = callback;\n\t if (n == null || thisArg) {\n\t return array ? array[length - 1] : undefined;\n\t }\n\t }\n\t return slice(array, nativeMax(0, length - n));\n\t }\n\t\n\t /**\n\t * Gets the index at which the last occurrence of `value` is found using strict\n\t * equality for comparisons, i.e. `===`. If `fromIndex` is negative, it is used\n\t * as the offset from the end of the collection.\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to search.\n\t * @param {*} value The value to search for.\n\t * @param {number} [fromIndex=array.length-1] The index to search from.\n\t * @returns {number} Returns the index of the matched value or `-1`.\n\t * @example\n\t *\n\t * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2);\n\t * // => 4\n\t *\n\t * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2, 3);\n\t * // => 1\n\t */\n\t function lastIndexOf(array, value, fromIndex) {\n\t var index = array ? array.length : 0;\n\t if (typeof fromIndex == 'number') {\n\t index = (fromIndex < 0 ? nativeMax(0, index + fromIndex) : nativeMin(fromIndex, index - 1)) + 1;\n\t }\n\t while (index--) {\n\t if (array[index] === value) {\n\t return index;\n\t }\n\t }\n\t return -1;\n\t }\n\t\n\t /**\n\t * Removes all provided values from the given array using strict equality for\n\t * comparisons, i.e. `===`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to modify.\n\t * @param {...*} [value] The values to remove.\n\t * @returns {Array} Returns `array`.\n\t * @example\n\t *\n\t * var array = [1, 2, 3, 1, 2, 3];\n\t * _.pull(array, 2, 3);\n\t * console.log(array);\n\t * // => [1, 1]\n\t */\n\t function pull(array) {\n\t var args = arguments,\n\t argsIndex = 0,\n\t argsLength = args.length,\n\t length = array ? array.length : 0;\n\t\n\t while (++argsIndex < argsLength) {\n\t var index = -1,\n\t value = args[argsIndex];\n\t while (++index < length) {\n\t if (array[index] === value) {\n\t splice.call(array, index--, 1);\n\t length--;\n\t }\n\t }\n\t }\n\t return array;\n\t }\n\t\n\t /**\n\t * Creates an array of numbers (positive and/or negative) progressing from\n\t * `start` up to but not including `end`. If `start` is less than `stop` a\n\t * zero-length range is created unless a negative `step` is specified.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {number} [start=0] The start of the range.\n\t * @param {number} end The end of the range.\n\t * @param {number} [step=1] The value to increment or decrement by.\n\t * @returns {Array} Returns a new range array.\n\t * @example\n\t *\n\t * _.range(4);\n\t * // => [0, 1, 2, 3]\n\t *\n\t * _.range(1, 5);\n\t * // => [1, 2, 3, 4]\n\t *\n\t * _.range(0, 20, 5);\n\t * // => [0, 5, 10, 15]\n\t *\n\t * _.range(0, -4, -1);\n\t * // => [0, -1, -2, -3]\n\t *\n\t * _.range(1, 4, 0);\n\t * // => [1, 1, 1]\n\t *\n\t * _.range(0);\n\t * // => []\n\t */\n\t function range(start, end, step) {\n\t start = +start || 0;\n\t step = typeof step == 'number' ? step : (+step || 1);\n\t\n\t if (end == null) {\n\t end = start;\n\t start = 0;\n\t }\n\t // use `Array(length)` so engines like Chakra and V8 avoid slower modes\n\t // http://youtu.be/XAqIpGU8ZZk#t=17m25s\n\t var index = -1,\n\t length = nativeMax(0, ceil((end - start) / (step || 1))),\n\t result = Array(length);\n\t\n\t while (++index < length) {\n\t result[index] = start;\n\t start += step;\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Removes all elements from an array that the callback returns truey for\n\t * and returns an array of removed elements. The callback is bound to `thisArg`\n\t * and invoked with three arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to modify.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array} Returns a new array of removed elements.\n\t * @example\n\t *\n\t * var array = [1, 2, 3, 4, 5, 6];\n\t * var evens = _.remove(array, function(num) { return num % 2 == 0; });\n\t *\n\t * console.log(array);\n\t * // => [1, 3, 5]\n\t *\n\t * console.log(evens);\n\t * // => [2, 4, 6]\n\t */\n\t function remove(array, callback, thisArg) {\n\t var index = -1,\n\t length = array ? array.length : 0,\n\t result = [];\n\t\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t while (++index < length) {\n\t var value = array[index];\n\t if (callback(value, index, array)) {\n\t result.push(value);\n\t splice.call(array, index--, 1);\n\t length--;\n\t }\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * The opposite of `_.initial` this method gets all but the first element or\n\t * first `n` elements of an array. If a callback function is provided elements\n\t * at the beginning of the array are excluded from the result as long as the\n\t * callback returns truey. The callback is bound to `thisArg` and invoked\n\t * with three arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias drop, tail\n\t * @category Arrays\n\t * @param {Array} array The array to query.\n\t * @param {Function|Object|number|string} [callback=1] The function called\n\t * per element or the number of elements to exclude. If a property name or\n\t * object is provided it will be used to create a \"_.pluck\" or \"_.where\"\n\t * style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array} Returns a slice of `array`.\n\t * @example\n\t *\n\t * _.rest([1, 2, 3]);\n\t * // => [2, 3]\n\t *\n\t * _.rest([1, 2, 3], 2);\n\t * // => [3]\n\t *\n\t * _.rest([1, 2, 3], function(num) {\n\t * return num < 3;\n\t * });\n\t * // => [3]\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'blocked': true, 'employer': 'slate' },\n\t * { 'name': 'fred', 'blocked': false, 'employer': 'slate' },\n\t * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' }\n\t * ];\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.pluck(_.rest(characters, 'blocked'), 'name');\n\t * // => ['fred', 'pebbles']\n\t *\n\t * // using \"_.where\" callback shorthand\n\t * _.rest(characters, { 'employer': 'slate' });\n\t * // => [{ 'name': 'pebbles', 'blocked': true, 'employer': 'na' }]\n\t */\n\t function rest(array, callback, thisArg) {\n\t if (typeof callback != 'number' && callback != null) {\n\t var n = 0,\n\t index = -1,\n\t length = array ? array.length : 0;\n\t\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t while (++index < length && callback(array[index], index, array)) {\n\t n++;\n\t }\n\t } else {\n\t n = (callback == null || thisArg) ? 1 : nativeMax(0, callback);\n\t }\n\t return slice(array, n);\n\t }\n\t\n\t /**\n\t * Uses a binary search to determine the smallest index at which a value\n\t * should be inserted into a given sorted array in order to maintain the sort\n\t * order of the array. If a callback is provided it will be executed for\n\t * `value` and each element of `array` to compute their sort ranking. The\n\t * callback is bound to `thisArg` and invoked with one argument; (value).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to inspect.\n\t * @param {*} value The value to evaluate.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {number} Returns the index at which `value` should be inserted\n\t * into `array`.\n\t * @example\n\t *\n\t * _.sortedIndex([20, 30, 50], 40);\n\t * // => 2\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.sortedIndex([{ 'x': 20 }, { 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');\n\t * // => 2\n\t *\n\t * var dict = {\n\t * 'wordToNumber': { 'twenty': 20, 'thirty': 30, 'fourty': 40, 'fifty': 50 }\n\t * };\n\t *\n\t * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) {\n\t * return dict.wordToNumber[word];\n\t * });\n\t * // => 2\n\t *\n\t * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) {\n\t * return this.wordToNumber[word];\n\t * }, dict);\n\t * // => 2\n\t */\n\t function sortedIndex(array, value, callback, thisArg) {\n\t var low = 0,\n\t high = array ? array.length : low;\n\t\n\t // explicitly reference `identity` for better inlining in Firefox\n\t callback = callback ? lodash.createCallback(callback, thisArg, 1) : identity;\n\t value = callback(value);\n\t\n\t while (low < high) {\n\t var mid = (low + high) >>> 1;\n\t (callback(array[mid]) < value)\n\t ? low = mid + 1\n\t : high = mid;\n\t }\n\t return low;\n\t }\n\t\n\t /**\n\t * Creates an array of unique values, in order, of the provided arrays using\n\t * strict equality for comparisons, i.e. `===`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {...Array} [array] The arrays to inspect.\n\t * @returns {Array} Returns an array of combined values.\n\t * @example\n\t *\n\t * _.union([1, 2, 3], [5, 2, 1, 4], [2, 1]);\n\t * // => [1, 2, 3, 5, 4]\n\t */\n\t function union() {\n\t return baseUniq(baseFlatten(arguments, true, true));\n\t }\n\t\n\t /**\n\t * Creates a duplicate-value-free version of an array using strict equality\n\t * for comparisons, i.e. `===`. If the array is sorted, providing\n\t * `true` for `isSorted` will use a faster algorithm. If a callback is provided\n\t * each element of `array` is passed through the callback before uniqueness\n\t * is computed. The callback is bound to `thisArg` and invoked with three\n\t * arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `callback` the created \"_.pluck\" style\n\t * callback will return the property value of the given element.\n\t *\n\t * If an object is provided for `callback` the created \"_.where\" style callback\n\t * will return `true` for elements that have the properties of the given object,\n\t * else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias unique\n\t * @category Arrays\n\t * @param {Array} array The array to process.\n\t * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted.\n\t * @param {Function|Object|string} [callback=identity] The function called\n\t * per iteration. If a property name or object is provided it will be used\n\t * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n\t * @param {*} [thisArg] The `this` binding of `callback`.\n\t * @returns {Array} Returns a duplicate-value-free array.\n\t * @example\n\t *\n\t * _.uniq([1, 2, 1, 3, 1]);\n\t * // => [1, 2, 3]\n\t *\n\t * _.uniq([1, 1, 2, 2, 3], true);\n\t * // => [1, 2, 3]\n\t *\n\t * _.uniq(['A', 'b', 'C', 'a', 'B', 'c'], function(letter) { return letter.toLowerCase(); });\n\t * // => ['A', 'b', 'C']\n\t *\n\t * _.uniq([1, 2.5, 3, 1.5, 2, 3.5], function(num) { return this.floor(num); }, Math);\n\t * // => [1, 2.5, 3]\n\t *\n\t * // using \"_.pluck\" callback shorthand\n\t * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n\t * // => [{ 'x': 1 }, { 'x': 2 }]\n\t */\n\t function uniq(array, isSorted, callback, thisArg) {\n\t // juggle arguments\n\t if (typeof isSorted != 'boolean' && isSorted != null) {\n\t thisArg = callback;\n\t callback = (typeof isSorted != 'function' && thisArg && thisArg[isSorted] === array) ? null : isSorted;\n\t isSorted = false;\n\t }\n\t if (callback != null) {\n\t callback = lodash.createCallback(callback, thisArg, 3);\n\t }\n\t return baseUniq(array, isSorted, callback);\n\t }\n\t\n\t /**\n\t * Creates an array excluding all provided values using strict equality for\n\t * comparisons, i.e. `===`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {Array} array The array to filter.\n\t * @param {...*} [value] The values to exclude.\n\t * @returns {Array} Returns a new array of filtered values.\n\t * @example\n\t *\n\t * _.without([1, 2, 1, 0, 3, 1, 4], 0, 1);\n\t * // => [2, 3, 4]\n\t */\n\t function without(array) {\n\t return baseDifference(array, slice(arguments, 1));\n\t }\n\t\n\t /**\n\t * Creates an array that is the symmetric difference of the provided arrays.\n\t * See http://en.wikipedia.org/wiki/Symmetric_difference.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Arrays\n\t * @param {...Array} [array] The arrays to inspect.\n\t * @returns {Array} Returns an array of values.\n\t * @example\n\t *\n\t * _.xor([1, 2, 3], [5, 2, 1, 4]);\n\t * // => [3, 5, 4]\n\t *\n\t * _.xor([1, 2, 5], [2, 3, 5], [3, 4, 5]);\n\t * // => [1, 4, 5]\n\t */\n\t function xor() {\n\t var index = -1,\n\t length = arguments.length;\n\t\n\t while (++index < length) {\n\t var array = arguments[index];\n\t if (isArray(array) || isArguments(array)) {\n\t var result = result\n\t ? baseUniq(baseDifference(result, array).concat(baseDifference(array, result)))\n\t : array;\n\t }\n\t }\n\t return result || [];\n\t }\n\t\n\t /**\n\t * Creates an array of grouped elements, the first of which contains the first\n\t * elements of the given arrays, the second of which contains the second\n\t * elements of the given arrays, and so on.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias unzip\n\t * @category Arrays\n\t * @param {...Array} [array] Arrays to process.\n\t * @returns {Array} Returns a new array of grouped elements.\n\t * @example\n\t *\n\t * _.zip(['fred', 'barney'], [30, 40], [true, false]);\n\t * // => [['fred', 30, true], ['barney', 40, false]]\n\t */\n\t function zip() {\n\t var array = arguments.length > 1 ? arguments : arguments[0],\n\t index = -1,\n\t length = array ? max(pluck(array, 'length')) : 0,\n\t result = Array(length < 0 ? 0 : length);\n\t\n\t while (++index < length) {\n\t result[index] = pluck(array, index);\n\t }\n\t return result;\n\t }\n\t\n\t /**\n\t * Creates an object composed from arrays of `keys` and `values`. Provide\n\t * either a single two dimensional array, i.e. `[[key1, value1], [key2, value2]]`\n\t * or two arrays, one of `keys` and one of corresponding `values`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias object\n\t * @category Arrays\n\t * @param {Array} keys The array of keys.\n\t * @param {Array} [values=[]] The array of values.\n\t * @returns {Object} Returns an object composed of the given keys and\n\t * corresponding values.\n\t * @example\n\t *\n\t * _.zipObject(['fred', 'barney'], [30, 40]);\n\t * // => { 'fred': 30, 'barney': 40 }\n\t */\n\t function zipObject(keys, values) {\n\t var index = -1,\n\t length = keys ? keys.length : 0,\n\t result = {};\n\t\n\t if (!values && length && !isArray(keys[0])) {\n\t values = [];\n\t }\n\t while (++index < length) {\n\t var key = keys[index];\n\t if (values) {\n\t result[key] = values[index];\n\t } else if (key) {\n\t result[key[0]] = key[1];\n\t }\n\t }\n\t return result;\n\t }\n\t\n\t /*--------------------------------------------------------------------------*/\n\t\n\t /**\n\t * Creates a function that executes `func`, with the `this` binding and\n\t * arguments of the created function, only after being called `n` times.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {number} n The number of times the function must be called before\n\t * `func` is executed.\n\t * @param {Function} func The function to restrict.\n\t * @returns {Function} Returns the new restricted function.\n\t * @example\n\t *\n\t * var saves = ['profile', 'settings'];\n\t *\n\t * var done = _.after(saves.length, function() {\n\t * console.log('Done saving!');\n\t * });\n\t *\n\t * _.forEach(saves, function(type) {\n\t * asyncSave({ 'type': type, 'complete': done });\n\t * });\n\t * // => logs 'Done saving!', after all saves have completed\n\t */\n\t function after(n, func) {\n\t if (!isFunction(func)) {\n\t throw new TypeError;\n\t }\n\t return function() {\n\t if (--n < 1) {\n\t return func.apply(this, arguments);\n\t }\n\t };\n\t }\n\t\n\t /**\n\t * Creates a function that, when called, invokes `func` with the `this`\n\t * binding of `thisArg` and prepends any additional `bind` arguments to those\n\t * provided to the bound function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {Function} func The function to bind.\n\t * @param {*} [thisArg] The `this` binding of `func`.\n\t * @param {...*} [arg] Arguments to be partially applied.\n\t * @returns {Function} Returns the new bound function.\n\t * @example\n\t *\n\t * var func = function(greeting) {\n\t * return greeting + ' ' + this.name;\n\t * };\n\t *\n\t * func = _.bind(func, { 'name': 'fred' }, 'hi');\n\t * func();\n\t * // => 'hi fred'\n\t */\n\t function bind(func, thisArg) {\n\t return arguments.length > 2\n\t ? createWrapper(func, 17, slice(arguments, 2), null, thisArg)\n\t : createWrapper(func, 1, null, null, thisArg);\n\t }\n\t\n\t /**\n\t * Binds methods of an object to the object itself, overwriting the existing\n\t * method. Method names may be specified as individual arguments or as arrays\n\t * of method names. If no method names are provided all the function properties\n\t * of `object` will be bound.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {Object} object The object to bind and assign the bound methods to.\n\t * @param {...string} [methodName] The object method names to\n\t * bind, specified as individual method names or arrays of method names.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * var view = {\n\t * 'label': 'docs',\n\t * 'onClick': function() { console.log('clicked ' + this.label); }\n\t * };\n\t *\n\t * _.bindAll(view);\n\t * jQuery('#docs').on('click', view.onClick);\n\t * // => logs 'clicked docs', when the button is clicked\n\t */\n\t function bindAll(object) {\n\t var funcs = arguments.length > 1 ? baseFlatten(arguments, true, false, 1) : functions(object),\n\t index = -1,\n\t length = funcs.length;\n\t\n\t while (++index < length) {\n\t var key = funcs[index];\n\t object[key] = createWrapper(object[key], 1, null, null, object);\n\t }\n\t return object;\n\t }\n\t\n\t /**\n\t * Creates a function that, when called, invokes the method at `object[key]`\n\t * and prepends any additional `bindKey` arguments to those provided to the bound\n\t * function. This method differs from `_.bind` by allowing bound functions to\n\t * reference methods that will be redefined or don't yet exist.\n\t * See http://michaux.ca/articles/lazy-function-definition-pattern.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {Object} object The object the method belongs to.\n\t * @param {string} key The key of the method.\n\t * @param {...*} [arg] Arguments to be partially applied.\n\t * @returns {Function} Returns the new bound function.\n\t * @example\n\t *\n\t * var object = {\n\t * 'name': 'fred',\n\t * 'greet': function(greeting) {\n\t * return greeting + ' ' + this.name;\n\t * }\n\t * };\n\t *\n\t * var func = _.bindKey(object, 'greet', 'hi');\n\t * func();\n\t * // => 'hi fred'\n\t *\n\t * object.greet = function(greeting) {\n\t * return greeting + 'ya ' + this.name + '!';\n\t * };\n\t *\n\t * func();\n\t * // => 'hiya fred!'\n\t */\n\t function bindKey(object, key) {\n\t return arguments.length > 2\n\t ? createWrapper(key, 19, slice(arguments, 2), null, object)\n\t : createWrapper(key, 3, null, null, object);\n\t }\n\t\n\t /**\n\t * Creates a function that is the composition of the provided functions,\n\t * where each function consumes the return value of the function that follows.\n\t * For example, composing the functions `f()`, `g()`, and `h()` produces `f(g(h()))`.\n\t * Each function is executed with the `this` binding of the composed function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {...Function} [func] Functions to compose.\n\t * @returns {Function} Returns the new composed function.\n\t * @example\n\t *\n\t * var realNameMap = {\n\t * 'pebbles': 'penelope'\n\t * };\n\t *\n\t * var format = function(name) {\n\t * name = realNameMap[name.toLowerCase()] || name;\n\t * return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();\n\t * };\n\t *\n\t * var greet = function(formatted) {\n\t * return 'Hiya ' + formatted + '!';\n\t * };\n\t *\n\t * var welcome = _.compose(greet, format);\n\t * welcome('pebbles');\n\t * // => 'Hiya Penelope!'\n\t */\n\t function compose() {\n\t var funcs = arguments,\n\t length = funcs.length;\n\t\n\t while (length--) {\n\t if (!isFunction(funcs[length])) {\n\t throw new TypeError;\n\t }\n\t }\n\t return function() {\n\t var args = arguments,\n\t length = funcs.length;\n\t\n\t while (length--) {\n\t args = [funcs[length].apply(this, args)];\n\t }\n\t return args[0];\n\t };\n\t }\n\t\n\t /**\n\t * Creates a function which accepts one or more arguments of `func` that when\n\t * invoked either executes `func` returning its result, if all `func` arguments\n\t * have been provided, or returns a function that accepts one or more of the\n\t * remaining `func` arguments, and so on. The arity of `func` can be specified\n\t * if `func.length` is not sufficient.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {Function} func The function to curry.\n\t * @param {number} [arity=func.length] The arity of `func`.\n\t * @returns {Function} Returns the new curried function.\n\t * @example\n\t *\n\t * var curried = _.curry(function(a, b, c) {\n\t * console.log(a + b + c);\n\t * });\n\t *\n\t * curried(1)(2)(3);\n\t * // => 6\n\t *\n\t * curried(1, 2)(3);\n\t * // => 6\n\t *\n\t * curried(1, 2, 3);\n\t * // => 6\n\t */\n\t function curry(func, arity) {\n\t arity = typeof arity == 'number' ? arity : (+arity || func.length);\n\t return createWrapper(func, 4, null, null, null, arity);\n\t }\n\t\n\t /**\n\t * Creates a function that will delay the execution of `func` until after\n\t * `wait` milliseconds have elapsed since the last time it was invoked.\n\t * Provide an options object to indicate that `func` should be invoked on\n\t * the leading and/or trailing edge of the `wait` timeout. Subsequent calls\n\t * to the debounced function will return the result of the last `func` call.\n\t *\n\t * Note: If `leading` and `trailing` options are `true` `func` will be called\n\t * on the trailing edge of the timeout only if the the debounced function is\n\t * invoked more than once during the `wait` timeout.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {Function} func The function to debounce.\n\t * @param {number} wait The number of milliseconds to delay.\n\t * @param {Object} [options] The options object.\n\t * @param {boolean} [options.leading=false] Specify execution on the leading edge of the timeout.\n\t * @param {number} [options.maxWait] The maximum time `func` is allowed to be delayed before it's called.\n\t * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout.\n\t * @returns {Function} Returns the new debounced function.\n\t * @example\n\t *\n\t * // avoid costly calculations while the window size is in flux\n\t * var lazyLayout = _.debounce(calculateLayout, 150);\n\t * jQuery(window).on('resize', lazyLayout);\n\t *\n\t * // execute `sendMail` when the click event is fired, debouncing subsequent calls\n\t * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n\t * 'leading': true,\n\t * 'trailing': false\n\t * });\n\t *\n\t * // ensure `batchLog` is executed once after 1 second of debounced calls\n\t * var source = new EventSource('/stream');\n\t * source.addEventListener('message', _.debounce(batchLog, 250, {\n\t * 'maxWait': 1000\n\t * }, false);\n\t */\n\t function debounce(func, wait, options) {\n\t var args,\n\t maxTimeoutId,\n\t result,\n\t stamp,\n\t thisArg,\n\t timeoutId,\n\t trailingCall,\n\t lastCalled = 0,\n\t maxWait = false,\n\t trailing = true;\n\t\n\t if (!isFunction(func)) {\n\t throw new TypeError;\n\t }\n\t wait = nativeMax(0, wait) || 0;\n\t if (options === true) {\n\t var leading = true;\n\t trailing = false;\n\t } else if (isObject(options)) {\n\t leading = options.leading;\n\t maxWait = 'maxWait' in options && (nativeMax(wait, options.maxWait) || 0);\n\t trailing = 'trailing' in options ? options.trailing : trailing;\n\t }\n\t var delayed = function() {\n\t var remaining = wait - (now() - stamp);\n\t if (remaining <= 0) {\n\t if (maxTimeoutId) {\n\t clearTimeout(maxTimeoutId);\n\t }\n\t var isCalled = trailingCall;\n\t maxTimeoutId = timeoutId = trailingCall = undefined;\n\t if (isCalled) {\n\t lastCalled = now();\n\t result = func.apply(thisArg, args);\n\t if (!timeoutId && !maxTimeoutId) {\n\t args = thisArg = null;\n\t }\n\t }\n\t } else {\n\t timeoutId = setTimeout(delayed, remaining);\n\t }\n\t };\n\t\n\t var maxDelayed = function() {\n\t if (timeoutId) {\n\t clearTimeout(timeoutId);\n\t }\n\t maxTimeoutId = timeoutId = trailingCall = undefined;\n\t if (trailing || (maxWait !== wait)) {\n\t lastCalled = now();\n\t result = func.apply(thisArg, args);\n\t if (!timeoutId && !maxTimeoutId) {\n\t args = thisArg = null;\n\t }\n\t }\n\t };\n\t\n\t return function() {\n\t args = arguments;\n\t stamp = now();\n\t thisArg = this;\n\t trailingCall = trailing && (timeoutId || !leading);\n\t\n\t if (maxWait === false) {\n\t var leadingCall = leading && !timeoutId;\n\t } else {\n\t if (!maxTimeoutId && !leading) {\n\t lastCalled = stamp;\n\t }\n\t var remaining = maxWait - (stamp - lastCalled),\n\t isCalled = remaining <= 0;\n\t\n\t if (isCalled) {\n\t if (maxTimeoutId) {\n\t maxTimeoutId = clearTimeout(maxTimeoutId);\n\t }\n\t lastCalled = stamp;\n\t result = func.apply(thisArg, args);\n\t }\n\t else if (!maxTimeoutId) {\n\t maxTimeoutId = setTimeout(maxDelayed, remaining);\n\t }\n\t }\n\t if (isCalled && timeoutId) {\n\t timeoutId = clearTimeout(timeoutId);\n\t }\n\t else if (!timeoutId && wait !== maxWait) {\n\t timeoutId = setTimeout(delayed, wait);\n\t }\n\t if (leadingCall) {\n\t isCalled = true;\n\t result = func.apply(thisArg, args);\n\t }\n\t if (isCalled && !timeoutId && !maxTimeoutId) {\n\t args = thisArg = null;\n\t }\n\t return result;\n\t };\n\t }\n\t\n\t /**\n\t * Defers executing the `func` function until the current call stack has cleared.\n\t * Additional arguments will be provided to `func` when it is invoked.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {Function} func The function to defer.\n\t * @param {...*} [arg] Arguments to invoke the function with.\n\t * @returns {number} Returns the timer id.\n\t * @example\n\t *\n\t * _.defer(function(text) { console.log(text); }, 'deferred');\n\t * // logs 'deferred' after one or more milliseconds\n\t */\n\t function defer(func) {\n\t if (!isFunction(func)) {\n\t throw new TypeError;\n\t }\n\t var args = slice(arguments, 1);\n\t return setTimeout(function() { func.apply(undefined, args); }, 1);\n\t }\n\t\n\t /**\n\t * Executes the `func` function after `wait` milliseconds. Additional arguments\n\t * will be provided to `func` when it is invoked.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {Function} func The function to delay.\n\t * @param {number} wait The number of milliseconds to delay execution.\n\t * @param {...*} [arg] Arguments to invoke the function with.\n\t * @returns {number} Returns the timer id.\n\t * @example\n\t *\n\t * _.delay(function(text) { console.log(text); }, 1000, 'later');\n\t * // => logs 'later' after one second\n\t */\n\t function delay(func, wait) {\n\t if (!isFunction(func)) {\n\t throw new TypeError;\n\t }\n\t var args = slice(arguments, 2);\n\t return setTimeout(function() { func.apply(undefined, args); }, wait);\n\t }\n\t\n\t /**\n\t * Creates a function that memoizes the result of `func`. If `resolver` is\n\t * provided it will be used to determine the cache key for storing the result\n\t * based on the arguments provided to the memoized function. By default, the\n\t * first argument provided to the memoized function is used as the cache key.\n\t * The `func` is executed with the `this` binding of the memoized function.\n\t * The result cache is exposed as the `cache` property on the memoized function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {Function} func The function to have its output memoized.\n\t * @param {Function} [resolver] A function used to resolve the cache key.\n\t * @returns {Function} Returns the new memoizing function.\n\t * @example\n\t *\n\t * var fibonacci = _.memoize(function(n) {\n\t * return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);\n\t * });\n\t *\n\t * fibonacci(9)\n\t * // => 34\n\t *\n\t * var data = {\n\t * 'fred': { 'name': 'fred', 'age': 40 },\n\t * 'pebbles': { 'name': 'pebbles', 'age': 1 }\n\t * };\n\t *\n\t * // modifying the result cache\n\t * var get = _.memoize(function(name) { return data[name]; }, _.identity);\n\t * get('pebbles');\n\t * // => { 'name': 'pebbles', 'age': 1 }\n\t *\n\t * get.cache.pebbles.name = 'penelope';\n\t * get('pebbles');\n\t * // => { 'name': 'penelope', 'age': 1 }\n\t */\n\t function memoize(func, resolver) {\n\t if (!isFunction(func)) {\n\t throw new TypeError;\n\t }\n\t var memoized = function() {\n\t var cache = memoized.cache,\n\t key = resolver ? resolver.apply(this, arguments) : keyPrefix + arguments[0];\n\t\n\t return hasOwnProperty.call(cache, key)\n\t ? cache[key]\n\t : (cache[key] = func.apply(this, arguments));\n\t }\n\t memoized.cache = {};\n\t return memoized;\n\t }\n\t\n\t /**\n\t * Creates a function that is restricted to execute `func` once. Repeat calls to\n\t * the function will return the value of the first call. The `func` is executed\n\t * with the `this` binding of the created function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {Function} func The function to restrict.\n\t * @returns {Function} Returns the new restricted function.\n\t * @example\n\t *\n\t * var initialize = _.once(createApplication);\n\t * initialize();\n\t * initialize();\n\t * // `initialize` executes `createApplication` once\n\t */\n\t function once(func) {\n\t var ran,\n\t result;\n\t\n\t if (!isFunction(func)) {\n\t throw new TypeError;\n\t }\n\t return function() {\n\t if (ran) {\n\t return result;\n\t }\n\t ran = true;\n\t result = func.apply(this, arguments);\n\t\n\t // clear the `func` variable so the function may be garbage collected\n\t func = null;\n\t return result;\n\t };\n\t }\n\t\n\t /**\n\t * Creates a function that, when called, invokes `func` with any additional\n\t * `partial` arguments prepended to those provided to the new function. This\n\t * method is similar to `_.bind` except it does **not** alter the `this` binding.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {Function} func The function to partially apply arguments to.\n\t * @param {...*} [arg] Arguments to be partially applied.\n\t * @returns {Function} Returns the new partially applied function.\n\t * @example\n\t *\n\t * var greet = function(greeting, name) { return greeting + ' ' + name; };\n\t * var hi = _.partial(greet, 'hi');\n\t * hi('fred');\n\t * // => 'hi fred'\n\t */\n\t function partial(func) {\n\t return createWrapper(func, 16, slice(arguments, 1));\n\t }\n\t\n\t /**\n\t * This method is like `_.partial` except that `partial` arguments are\n\t * appended to those provided to the new function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {Function} func The function to partially apply arguments to.\n\t * @param {...*} [arg] Arguments to be partially applied.\n\t * @returns {Function} Returns the new partially applied function.\n\t * @example\n\t *\n\t * var defaultsDeep = _.partialRight(_.merge, _.defaults);\n\t *\n\t * var options = {\n\t * 'variable': 'data',\n\t * 'imports': { 'jq': $ }\n\t * };\n\t *\n\t * defaultsDeep(options, _.templateSettings);\n\t *\n\t * options.variable\n\t * // => 'data'\n\t *\n\t * options.imports\n\t * // => { '_': _, 'jq': $ }\n\t */\n\t function partialRight(func) {\n\t return createWrapper(func, 32, null, slice(arguments, 1));\n\t }\n\t\n\t /**\n\t * Creates a function that, when executed, will only call the `func` function\n\t * at most once per every `wait` milliseconds. Provide an options object to\n\t * indicate that `func` should be invoked on the leading and/or trailing edge\n\t * of the `wait` timeout. Subsequent calls to the throttled function will\n\t * return the result of the last `func` call.\n\t *\n\t * Note: If `leading` and `trailing` options are `true` `func` will be called\n\t * on the trailing edge of the timeout only if the the throttled function is\n\t * invoked more than once during the `wait` timeout.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {Function} func The function to throttle.\n\t * @param {number} wait The number of milliseconds to throttle executions to.\n\t * @param {Object} [options] The options object.\n\t * @param {boolean} [options.leading=true] Specify execution on the leading edge of the timeout.\n\t * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout.\n\t * @returns {Function} Returns the new throttled function.\n\t * @example\n\t *\n\t * // avoid excessively updating the position while scrolling\n\t * var throttled = _.throttle(updatePosition, 100);\n\t * jQuery(window).on('scroll', throttled);\n\t *\n\t * // execute `renewToken` when the click event is fired, but not more than once every 5 minutes\n\t * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n\t * 'trailing': false\n\t * }));\n\t */\n\t function throttle(func, wait, options) {\n\t var leading = true,\n\t trailing = true;\n\t\n\t if (!isFunction(func)) {\n\t throw new TypeError;\n\t }\n\t if (options === false) {\n\t leading = false;\n\t } else if (isObject(options)) {\n\t leading = 'leading' in options ? options.leading : leading;\n\t trailing = 'trailing' in options ? options.trailing : trailing;\n\t }\n\t debounceOptions.leading = leading;\n\t debounceOptions.maxWait = wait;\n\t debounceOptions.trailing = trailing;\n\t\n\t return debounce(func, wait, debounceOptions);\n\t }\n\t\n\t /**\n\t * Creates a function that provides `value` to the wrapper function as its\n\t * first argument. Additional arguments provided to the function are appended\n\t * to those provided to the wrapper function. The wrapper is executed with\n\t * the `this` binding of the created function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Functions\n\t * @param {*} value The value to wrap.\n\t * @param {Function} wrapper The wrapper function.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * var p = _.wrap(_.escape, function(func, text) {\n\t * return '

' + func(text) + '

';\n\t * });\n\t *\n\t * p('Fred, Wilma, & Pebbles');\n\t * // => '

Fred, Wilma, & Pebbles

'\n\t */\n\t function wrap(value, wrapper) {\n\t return createWrapper(wrapper, 16, [value]);\n\t }\n\t\n\t /*--------------------------------------------------------------------------*/\n\t\n\t /**\n\t * Creates a function that returns `value`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @param {*} value The value to return from the new function.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * var object = { 'name': 'fred' };\n\t * var getter = _.constant(object);\n\t * getter() === object;\n\t * // => true\n\t */\n\t function constant(value) {\n\t return function() {\n\t return value;\n\t };\n\t }\n\t\n\t /**\n\t * Produces a callback bound to an optional `thisArg`. If `func` is a property\n\t * name the created callback will return the property value for a given element.\n\t * If `func` is an object the created callback will return `true` for elements\n\t * that contain the equivalent object properties, otherwise it will return `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @param {*} [func=identity] The value to convert to a callback.\n\t * @param {*} [thisArg] The `this` binding of the created callback.\n\t * @param {number} [argCount] The number of arguments the callback accepts.\n\t * @returns {Function} Returns a callback function.\n\t * @example\n\t *\n\t * var characters = [\n\t * { 'name': 'barney', 'age': 36 },\n\t * { 'name': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * // wrap to create custom callback shorthands\n\t * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) {\n\t * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback);\n\t * return !match ? func(callback, thisArg) : function(object) {\n\t * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3];\n\t * };\n\t * });\n\t *\n\t * _.filter(characters, 'age__gt38');\n\t * // => [{ 'name': 'fred', 'age': 40 }]\n\t */\n\t function createCallback(func, thisArg, argCount) {\n\t var type = typeof func;\n\t if (func == null || type == 'function') {\n\t return baseCreateCallback(func, thisArg, argCount);\n\t }\n\t // handle \"_.pluck\" style callback shorthands\n\t if (type != 'object') {\n\t return property(func);\n\t }\n\t var props = keys(func),\n\t key = props[0],\n\t a = func[key];\n\t\n\t // handle \"_.where\" style callback shorthands\n\t if (props.length == 1 && a === a && !isObject(a)) {\n\t // fast path the common case of providing an object with a single\n\t // property containing a primitive value\n\t return function(object) {\n\t var b = object[key];\n\t return a === b && (a !== 0 || (1 / a == 1 / b));\n\t };\n\t }\n\t return function(object) {\n\t var length = props.length,\n\t result = false;\n\t\n\t while (length--) {\n\t if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) {\n\t break;\n\t }\n\t }\n\t return result;\n\t };\n\t }\n\t\n\t /**\n\t * Converts the characters `&`, `<`, `>`, `\"`, and `'` in `string` to their\n\t * corresponding HTML entities.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @param {string} string The string to escape.\n\t * @returns {string} Returns the escaped string.\n\t * @example\n\t *\n\t * _.escape('Fred, Wilma, & Pebbles');\n\t * // => 'Fred, Wilma, & Pebbles'\n\t */\n\t function escape(string) {\n\t return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar);\n\t }\n\t\n\t /**\n\t * This method returns the first argument provided to it.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @param {*} value Any value.\n\t * @returns {*} Returns `value`.\n\t * @example\n\t *\n\t * var object = { 'name': 'fred' };\n\t * _.identity(object) === object;\n\t * // => true\n\t */\n\t function identity(value) {\n\t return value;\n\t }\n\t\n\t /**\n\t * Adds function properties of a source object to the destination object.\n\t * If `object` is a function methods will be added to its prototype as well.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @param {Function|Object} [object=lodash] object The destination object.\n\t * @param {Object} source The object of functions to add.\n\t * @param {Object} [options] The options object.\n\t * @param {boolean} [options.chain=true] Specify whether the functions added are chainable.\n\t * @example\n\t *\n\t * function capitalize(string) {\n\t * return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n\t * }\n\t *\n\t * _.mixin({ 'capitalize': capitalize });\n\t * _.capitalize('fred');\n\t * // => 'Fred'\n\t *\n\t * _('fred').capitalize().value();\n\t * // => 'Fred'\n\t *\n\t * _.mixin({ 'capitalize': capitalize }, { 'chain': false });\n\t * _('fred').capitalize();\n\t * // => 'Fred'\n\t */\n\t function mixin(object, source, options) {\n\t var chain = true,\n\t methodNames = source && functions(source);\n\t\n\t if (!source || (!options && !methodNames.length)) {\n\t if (options == null) {\n\t options = source;\n\t }\n\t ctor = lodashWrapper;\n\t source = object;\n\t object = lodash;\n\t methodNames = functions(source);\n\t }\n\t if (options === false) {\n\t chain = false;\n\t } else if (isObject(options) && 'chain' in options) {\n\t chain = options.chain;\n\t }\n\t var ctor = object,\n\t isFunc = isFunction(ctor);\n\t\n\t forEach(methodNames, function(methodName) {\n\t var func = object[methodName] = source[methodName];\n\t if (isFunc) {\n\t ctor.prototype[methodName] = function() {\n\t var chainAll = this.__chain__,\n\t value = this.__wrapped__,\n\t args = [value];\n\t\n\t push.apply(args, arguments);\n\t var result = func.apply(object, args);\n\t if (chain || chainAll) {\n\t if (value === result && isObject(result)) {\n\t return this;\n\t }\n\t result = new ctor(result);\n\t result.__chain__ = chainAll;\n\t }\n\t return result;\n\t };\n\t }\n\t });\n\t }\n\t\n\t /**\n\t * Reverts the '_' variable to its previous value and returns a reference to\n\t * the `lodash` function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @returns {Function} Returns the `lodash` function.\n\t * @example\n\t *\n\t * var lodash = _.noConflict();\n\t */\n\t function noConflict() {\n\t context._ = oldDash;\n\t return this;\n\t }\n\t\n\t /**\n\t * A no-operation function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @example\n\t *\n\t * var object = { 'name': 'fred' };\n\t * _.noop(object) === undefined;\n\t * // => true\n\t */\n\t function noop() {\n\t // no operation performed\n\t }\n\t\n\t /**\n\t * Gets the number of milliseconds that have elapsed since the Unix epoch\n\t * (1 January 1970 00:00:00 UTC).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @example\n\t *\n\t * var stamp = _.now();\n\t * _.defer(function() { console.log(_.now() - stamp); });\n\t * // => logs the number of milliseconds it took for the deferred function to be called\n\t */\n\t var now = isNative(now = Date.now) && now || function() {\n\t return new Date().getTime();\n\t };\n\t\n\t /**\n\t * Converts the given value into an integer of the specified radix.\n\t * If `radix` is `undefined` or `0` a `radix` of `10` is used unless the\n\t * `value` is a hexadecimal, in which case a `radix` of `16` is used.\n\t *\n\t * Note: This method avoids differences in native ES3 and ES5 `parseInt`\n\t * implementations. See http://es5.github.io/#E.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @param {string} value The value to parse.\n\t * @param {number} [radix] The radix used to interpret the value to parse.\n\t * @returns {number} Returns the new integer value.\n\t * @example\n\t *\n\t * _.parseInt('08');\n\t * // => 8\n\t */\n\t var parseInt = nativeParseInt(whitespace + '08') == 8 ? nativeParseInt : function(value, radix) {\n\t // Firefox < 21 and Opera < 15 follow the ES3 specified implementation of `parseInt`\n\t return nativeParseInt(isString(value) ? value.replace(reLeadingSpacesAndZeros, '') : value, radix || 0);\n\t };\n\t\n\t /**\n\t * Creates a \"_.pluck\" style function, which returns the `key` value of a\n\t * given object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @param {string} key The name of the property to retrieve.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * var characters = [\n\t * { 'name': 'fred', 'age': 40 },\n\t * { 'name': 'barney', 'age': 36 }\n\t * ];\n\t *\n\t * var getName = _.property('name');\n\t *\n\t * _.map(characters, getName);\n\t * // => ['barney', 'fred']\n\t *\n\t * _.sortBy(characters, getName);\n\t * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }]\n\t */\n\t function property(key) {\n\t return function(object) {\n\t return object[key];\n\t };\n\t }\n\t\n\t /**\n\t * Produces a random number between `min` and `max` (inclusive). If only one\n\t * argument is provided a number between `0` and the given number will be\n\t * returned. If `floating` is truey or either `min` or `max` are floats a\n\t * floating-point number will be returned instead of an integer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @param {number} [min=0] The minimum possible value.\n\t * @param {number} [max=1] The maximum possible value.\n\t * @param {boolean} [floating=false] Specify returning a floating-point number.\n\t * @returns {number} Returns a random number.\n\t * @example\n\t *\n\t * _.random(0, 5);\n\t * // => an integer between 0 and 5\n\t *\n\t * _.random(5);\n\t * // => also an integer between 0 and 5\n\t *\n\t * _.random(5, true);\n\t * // => a floating-point number between 0 and 5\n\t *\n\t * _.random(1.2, 5.2);\n\t * // => a floating-point number between 1.2 and 5.2\n\t */\n\t function random(min, max, floating) {\n\t var noMin = min == null,\n\t noMax = max == null;\n\t\n\t if (floating == null) {\n\t if (typeof min == 'boolean' && noMax) {\n\t floating = min;\n\t min = 1;\n\t }\n\t else if (!noMax && typeof max == 'boolean') {\n\t floating = max;\n\t noMax = true;\n\t }\n\t }\n\t if (noMin && noMax) {\n\t max = 1;\n\t }\n\t min = +min || 0;\n\t if (noMax) {\n\t max = min;\n\t min = 0;\n\t } else {\n\t max = +max || 0;\n\t }\n\t if (floating || min % 1 || max % 1) {\n\t var rand = nativeRandom();\n\t return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand +'').length - 1)))), max);\n\t }\n\t return baseRandom(min, max);\n\t }\n\t\n\t /**\n\t * Resolves the value of property `key` on `object`. If `key` is a function\n\t * it will be invoked with the `this` binding of `object` and its result returned,\n\t * else the property value is returned. If `object` is falsey then `undefined`\n\t * is returned.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @param {Object} object The object to inspect.\n\t * @param {string} key The name of the property to resolve.\n\t * @returns {*} Returns the resolved value.\n\t * @example\n\t *\n\t * var object = {\n\t * 'cheese': 'crumpets',\n\t * 'stuff': function() {\n\t * return 'nonsense';\n\t * }\n\t * };\n\t *\n\t * _.result(object, 'cheese');\n\t * // => 'crumpets'\n\t *\n\t * _.result(object, 'stuff');\n\t * // => 'nonsense'\n\t */\n\t function result(object, key) {\n\t if (object) {\n\t var value = object[key];\n\t return isFunction(value) ? object[key]() : value;\n\t }\n\t }\n\t\n\t /**\n\t * A micro-templating method that handles arbitrary delimiters, preserves\n\t * whitespace, and correctly escapes quotes within interpolated code.\n\t *\n\t * Note: In the development build, `_.template` utilizes sourceURLs for easier\n\t * debugging. See http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl\n\t *\n\t * For more information on precompiling templates see:\n\t * http://lodash.com/custom-builds\n\t *\n\t * For more information on Chrome extension sandboxes see:\n\t * http://developer.chrome.com/stable/extensions/sandboxingEval.html\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utilities\n\t * @param {string} text The template text.\n\t * @param {Object} data The data object used to populate the text.\n\t * @param {Object} [options] The options object.\n\t * @param {RegExp} [options.escape] The \"escape\" delimiter.\n\t * @param {RegExp} [options.evaluate] The \"evaluate\" delimiter.\n\t * @param {Object} [options.imports] An object to import into the template as local variables.\n\t * @param {RegExp} [options.interpolate] The \"interpolate\" delimiter.\n\t * @param {string} [sourceURL] The sourceURL of the template's compiled source.\n\t * @param {string} [variable] The data object variable name.\n\t * @returns {Function|string} Returns a compiled function when no `data` object\n\t * is given, else it returns the interpolated text.\n\t * @example\n\t *\n\t * // using the \"interpolate\" delimiter to create a compiled template\n\t * var compiled = _.template('hello <%= name %>');\n\t * compiled({ 'name': 'fred' });\n\t * // => 'hello fred'\n\t *\n\t * // using the \"escape\" delimiter to escape HTML in data property values\n\t * _.template('<%- value %>', { 'value': '