From 80e0e3fcd70deee6967fd6019b83c1493acf7ed4 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Sat, 23 Mar 2013 12:21:43 -0700 Subject: [PATCH] Optimize `_.pluck` for modern environments. Former-commit-id: 1a6bbb9866b8ac20faaa707be5f33814579e1df8 --- build.js | 16 ++++++++ dist/lodash.js | 13 ++++++- dist/lodash.min.js | 69 ++++++++++++++++++----------------- dist/lodash.underscore.js | 13 ++++++- dist/lodash.underscore.min.js | 55 ++++++++++++++-------------- 5 files changed, 103 insertions(+), 63 deletions(-) diff --git a/build.js b/build.js index 7fd346845..072a243e8 100755 --- a/build.js +++ b/build.js @@ -1895,6 +1895,22 @@ '}' ].join('\n')); + // replace `_.pluck` + source = replaceFunction(source, 'pluck', [ + 'function pluck(collection, property) {', + ' var index = -1,', + ' length = collection ? collection.length : 0;', + '', + " if (typeof length == 'number') {", + ' var result = Array(length);', + ' while (++index < length) {', + ' result[index] = collection[index][property]', + ' }', + ' }', + ' return result || map(collection, property);', + '}' + ].join('\n')); + // replace `isArray(collection)` checks in "Collections" methods with simpler type checks _.each(['every', 'filter', 'find', 'max', 'min', 'reduce', 'some'], function(methodName) { source = source.replace(matchFunction(source, methodName), function(match) { diff --git a/dist/lodash.js b/dist/lodash.js index 86dce35e5..0afd1dec0 100644 --- a/dist/lodash.js +++ b/dist/lodash.js @@ -2667,7 +2667,18 @@ * _.pluck(stooges, 'name'); * // => ['moe', 'larry'] */ - var pluck = map; + function pluck(collection, property) { + var index = -1, + length = collection ? collection.length : 0; + + if (typeof length == 'number') { + var result = Array(length); + while (++index < length) { + result[index] = collection[index][property] + } + } + return result || map(collection, property); + } /** * Reduces a `collection` to a value that is the accumulated result of running diff --git a/dist/lodash.min.js b/dist/lodash.min.js index 90582b40b..e5e479c79 100644 --- a/dist/lodash.min.js +++ b/dist/lodash.min.js @@ -4,38 +4,39 @@ * Build: `lodash modern -o ./dist/lodash.js` * Underscore.js 1.4.4 underscorejs.org/LICENSE */ -;(function(n){function t(r){function a(n){return n&&typeof n=="object"&&!ue(n)&&Mt.call(n,"__wrapped__")?n:new z(n)}function $(n,t,e){var r=n.length,u=r-t>=e;if(u){var a={};for(e=t-1;++et||typeof n=="undefined")return 1;if(ne?0:e);++re?Yt(0,u+e):e)||0,typeof u=="number"?a=-1<(Y(n)?n.indexOf(t,e):vt(n,t,e)):pe(n,function(n){return++ru&&(u=i) -}}else t=!t&&Y(n)?q:a.createCallback(t,e),at(n,function(n,e,a){e=t(n,e,a),e>r&&(r=e,u=n)});return u}function ft(n,t,e,r){if(!n)return e;var u=3>arguments.length;t=a.createCallback(t,r,4);var o=-1,i=n.length;if(typeof i=="number")for(u&&(e=n[++o]);++oarguments.length;if(typeof u!="number")var i=ae(n),u=i.length;return t=a.createCallback(t,r,4),at(n,function(r,a,f){a=i?i[--u]:--u,e=o?(o=!1,n[a]):t(e,n[a],a,f) -}),e}function lt(n,t,e){var r;t=a.createCallback(t,e),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++ee?Yt(0,u+e):e||0)-1;else if(e)return r=ht(n,t),n[r]===t?r:-1;for(;++r>>1,e(n[r])vt(f,p))&&((e||c)&&f.push(p),i.push(r))}return i}function mt(n,t){for(var e=-1,r=n?n.length:0,u={};++e/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:g,variable:"",imports:{_:a}},Ct={a:"q,w,g",h:"var a=arguments,b=0,c=typeof g=='number'?2:a.length;while(++b":">",'"':""","'":"'"},ie=J(oe),fe=R(Ct,{h:Ct.h.replace(";",";if(c>3&&typeof a[c-2]=='function'){var d=p.createCallback(a[--c-1],a[c--],2);}else if(c>2&&typeof a[c-1]=='function'){d=a[--c];}"),f:"u[i]=d?d(u[i],m[i]):m[i]"}),ce=R(Ct),le=R(It,Nt,{i:!1}),pe=R(It,Nt),se=function(n){if(!n||Ht.call(n)!=x)return!1; -var t=n.valueOf,e=typeof t=="function"&&(e=Kt(t))&&Kt(e);return e?n==e||Kt(n)==e:K(n)};return Et&&u&&typeof Vt=="function"&&(dt=bt(Vt,r)),Vt=8==ne("08")?ne:function(n,t){return ne(Y(n)?n.replace(h,""):n,t||0)},a.after=function(n,t){return 1>n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},a.assign=fe,a.at=function(n){for(var t=-1,e=zt.apply(qt,M(arguments,1)),r=e.length,u=jt(r);++tvt(f,c)){o&&f.push(c);for(var p=e;--p;)if(!(r[p]||(r[p]=$(t[p],0,100)))(c))continue n;i.push(c)}}return i},a.invert=J,a.invoke=function(n,t){var e=M(arguments,2),r=-1,u=typeof t=="function",a=n?n.length:0,o=jt(typeof a=="number"?a:0); -return at(n,function(n){o[++r]=(u?t:n[t]).apply(n,e)}),o},a.keys=ae,a.map=ot,a.max=it,a.memoize=function(n,t){var e={};return function(){var r=At(t?t.apply(this,arguments):arguments[0]);return Mt.call(e,r)?e[r]:e[r]=n.apply(this,arguments)}},a.merge=Z,a.min=function(n,t,e){var r=1/0,u=r;if(!t&&ue(n)){e=-1;for(var o=n.length;++evt(o,e,1))&&(u[e]=n)}),u},a.once=function(n){var t,e;return function(){return t?e:(t=!0,e=n.apply(this,arguments),n=null,e)}},a.pairs=function(n){for(var t=-1,e=ae(n),r=e.length,u=jt(r);++te?Yt(0,r+e):Zt(e,r-1))+1);r--;)if(n[r]===t)return r;return-1},a.mixin=kt,a.noConflict=function(){return r._=Ft,this},a.parseInt=Vt,a.random=function(n,t){return null==n&&null==t&&(t=1),n=+n||0,null==t&&(t=n,n=0),n+Pt(te()*((+t||0)-n+1))},a.reduce=ft,a.reduceRight=ct,a.result=function(n,t){var r=n?n[t]:e;return Q(r)?n[t]():r},a.runInContext=t,a.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:ae(n).length -},a.some=lt,a.sortedIndex=ht,a.template=function(n,t,r){var u=a.templateSettings;n||(n=""),r=ce({},r,u);var o,i=ce({},r.imports,u.imports),u=ae(i),i=nt(i),p=0,v=r.interpolate||y,h="__p+='",v=St((r.escape||y).source+"|"+v.source+"|"+(v===g?s:y).source+"|"+(r.evaluate||y).source+"|$","g");n.replace(v,function(t,e,r,u,a,i){return r||(r=u),h+=n.slice(p,i).replace(b,T),e&&(h+="'+__e("+e+")+'"),a&&(o=!0,h+="';"+a+";__p+='"),r&&(h+="'+((__t=("+r+"))==null?'':__t)+'"),p=i+t.length,t}),h+="';\n",v=r=r.variable,v||(r="obj",h="with("+r+"){"+h+"}"),h=(o?h.replace(f,""):h).replace(c,"$1").replace(l,"$1;"),h="function("+r+"){"+(v?"":r+"||("+r+"={});")+"var __t,__p='',__e=_.escape"+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+h+"return __p}"; -try{var m=Ot(u,"return "+h).apply(e,i)}catch(d){throw d.source=h,d}return t?m(t):(m.source=h,m)},a.unescape=function(n){return null==n?"":At(n).replace(p,U)},a.uniqueId=function(n){var t=++o;return At(null==n?"":n)+t},a.all=et,a.any=lt,a.detect=ut,a.foldl=ft,a.foldr=ct,a.include=tt,a.inject=ft,pe(a,function(n,t){a.prototype[t]||(a.prototype[t]=function(){var t=[this.__wrapped__];return Ut.apply(t,arguments),n.apply(a,t)})}),a.first=pt,a.last=function(n,t,e){if(n){var r=0,u=n.length;if(typeof t!="number"&&null!=t){var o=u; -for(t=a.createCallback(t,e);o--&&t(n[o],o,n);)r++}else if(r=t,null==r||e)return n[u-1];return M(n,Yt(0,u-r))}},a.take=pt,a.head=pt,pe(a,function(n,t){a.prototype[t]||(a.prototype[t]=function(t,e){var r=n(this.__wrapped__,t,e);return null==t||e&&typeof t!="function"?r:new z(r)})}),a.VERSION="1.0.1",a.prototype.toString=function(){return At(this.__wrapped__)},a.prototype.value=wt,a.prototype.valueOf=wt,at(["join","pop","shift"],function(n){var t=qt[n];a.prototype[n]=function(){return t.apply(this.__wrapped__,arguments) -}}),at(["push","reverse","sort","unshift"],function(n){var t=qt[n];a.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),at(["concat","slice","splice"],function(n){var t=qt[n];a.prototype[n]=function(){return new z(t.apply(this.__wrapped__,arguments))}}),a}var e,r=typeof exports=="object"&&exports,u=typeof module=="object"&&module&&module.exports==r&&module,a=typeof global=="object"&&global;a.global===a&&(n=a);var o=0,i={},f=/\b__p\+='';/g,c=/\b(__p\+=)''\+/g,l=/(__e\(.*?\)|\b__t\))\+'';/g,p=/&(?:amp|lt|gt|quot|#39);/g,s=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,v=/\w*$/,g=/<%=([\s\S]+?)%>/g,h=/^0+(?=.$)/,y=/($^)/,m=/[&<>"']/g,b=/['\n\r\t\u2028\u2029\\]/g,d="Array Boolean Date Function Math Number Object RegExp String _ attachEvent clearTimeout isFinite isNaN parseInt setImmediate setTimeout".split(" "),_="[object Arguments]",k="[object Array]",w="[object Boolean]",j="[object Date]",C="[object Number]",x="[object Object]",O="[object RegExp]",E="[object String]",I={"[object Function]":!1}; +;(function(n){function t(r){function a(n){return n&&typeof n=="object"&&!ae(n)&&Ut.call(n,"__wrapped__")?n:new z(n)}function $(n,t,e){var r=n.length,u=r-t>=e;if(u){var a={};for(e=t-1;++et||typeof n=="undefined")return 1;if(ne?0:e);++re?Zt(0,u+e):e)||0,typeof u=="number"?a=-1<(Y(n)?n.indexOf(t,e):gt(n,t,e)):se(n,function(n){return++ru&&(u=i) +}}else t=!t&&Y(n)?q:a.createCallback(t,e),at(n,function(n,e,a){e=t(n,e,a),e>r&&(r=e,u=n)});return u}function ft(n,t){var e=-1,r=n?n.length:0;if(typeof r=="number")for(var u=Ct(r);++earguments.length;t=a.createCallback(t,r,4);var o=-1,i=n.length;if(typeof i=="number")for(u&&(e=n[++o]);++oarguments.length; +if(typeof u!="number")var i=oe(n),u=i.length;return t=a.createCallback(t,r,4),at(n,function(r,a,f){a=i?i[--u]:--u,e=o?(o=!1,n[a]):t(e,n[a],a,f)}),e}function pt(n,t,e){var r;t=a.createCallback(t,e),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++ee?Zt(0,u+e):e||0)-1;else if(e)return r=yt(n,t),n[r]===t?r:-1;for(;++r>>1,e(n[r])gt(f,p))&&((e||c)&&f.push(p),i.push(r)) +}return i}function bt(n,t){for(var e=-1,r=n?n.length:0,u={};++e/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:g,variable:"",imports:{_:a}},xt={a:"q,w,g",h:"var a=arguments,b=0,c=typeof g=='number'?2:a.length;while(++b":">",'"':""","'":"'"},fe=J(ie),ce=R(xt,{h:xt.h.replace(";",";if(c>3&&typeof a[c-2]=='function'){var d=p.createCallback(a[--c-1],a[c--],2);}else if(c>2&&typeof a[c-1]=='function'){d=a[--c];}"),f:"u[i]=d?d(u[i],m[i]):m[i]"}),le=R(xt),pe=R(Nt,St,{i:!1}),se=R(Nt,St),ve=function(n){if(!n||Jt.call(n)!=x)return!1; +var t=n.valueOf,e=typeof t=="function"&&(e=Mt(t))&&Mt(e);return e?n==e||Mt(n)==e:K(n)};return It&&u&&typeof Gt=="function"&&(_t=dt(Gt,r)),Gt=8==te("08")?te:function(n,t){return te(Y(n)?n.replace(h,""):n,t||0)},a.after=function(n,t){return 1>n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},a.assign=ce,a.at=function(n){for(var t=-1,e=Pt.apply(Bt,M(arguments,1)),r=e.length,u=Ct(r);++tgt(f,c)){o&&f.push(c);for(var p=e;--p;)if(!(r[p]||(r[p]=$(t[p],0,100)))(c))continue n;i.push(c)}}return i},a.invert=J,a.invoke=function(n,t){var e=M(arguments,2),r=-1,u=typeof t=="function",a=n?n.length:0,o=Ct(typeof a=="number"?a:0); +return at(n,function(n){o[++r]=(u?t:n[t]).apply(n,e)}),o},a.keys=oe,a.map=ot,a.max=it,a.memoize=function(n,t){var e={};return function(){var r=$t(t?t.apply(this,arguments):arguments[0]);return Ut.call(e,r)?e[r]:e[r]=n.apply(this,arguments)}},a.merge=Z,a.min=function(n,t,e){var r=1/0,u=r;if(!t&&ae(n)){e=-1;for(var o=n.length;++egt(o,e,1))&&(u[e]=n)}),u},a.once=function(n){var t,e;return function(){return t?e:(t=!0,e=n.apply(this,arguments),n=null,e)}},a.pairs=function(n){for(var t=-1,e=oe(n),r=e.length,u=Ct(r);++te?Zt(0,r+e):ne(e,r-1))+1);r--;)if(n[r]===t)return r;return-1},a.mixin=wt,a.noConflict=function(){return r._=Rt,this},a.parseInt=Gt,a.random=function(n,t){return null==n&&null==t&&(t=1),n=+n||0,null==t&&(t=n,n=0),n+Kt(ee()*((+t||0)-n+1))},a.reduce=ct,a.reduceRight=lt,a.result=function(n,t){var r=n?n[t]:e;return Q(r)?n[t]():r},a.runInContext=t,a.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:oe(n).length +},a.some=pt,a.sortedIndex=yt,a.template=function(n,t,r){var u=a.templateSettings;n||(n=""),r=le({},r,u);var o,i=le({},r.imports,u.imports),u=oe(i),i=nt(i),p=0,v=r.interpolate||y,h="__p+='",v=At((r.escape||y).source+"|"+v.source+"|"+(v===g?s:y).source+"|"+(r.evaluate||y).source+"|$","g");n.replace(v,function(t,e,r,u,a,i){return r||(r=u),h+=n.slice(p,i).replace(b,T),e&&(h+="'+__e("+e+")+'"),a&&(o=!0,h+="';"+a+";__p+='"),r&&(h+="'+((__t=("+r+"))==null?'':__t)+'"),p=i+t.length,t}),h+="';\n",v=r=r.variable,v||(r="obj",h="with("+r+"){"+h+"}"),h=(o?h.replace(f,""):h).replace(c,"$1").replace(l,"$1;"),h="function("+r+"){"+(v?"":r+"||("+r+"={});")+"var __t,__p='',__e=_.escape"+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+h+"return __p}"; +try{var m=Et(u,"return "+h).apply(e,i)}catch(d){throw d.source=h,d}return t?m(t):(m.source=h,m)},a.unescape=function(n){return null==n?"":$t(n).replace(p,U)},a.uniqueId=function(n){var t=++o;return $t(null==n?"":n)+t},a.all=et,a.any=pt,a.detect=ut,a.foldl=ct,a.foldr=lt,a.include=tt,a.inject=ct,se(a,function(n,t){a.prototype[t]||(a.prototype[t]=function(){var t=[this.__wrapped__];return Vt.apply(t,arguments),n.apply(a,t)})}),a.first=st,a.last=function(n,t,e){if(n){var r=0,u=n.length;if(typeof t!="number"&&null!=t){var o=u; +for(t=a.createCallback(t,e);o--&&t(n[o],o,n);)r++}else if(r=t,null==r||e)return n[u-1];return M(n,Zt(0,u-r))}},a.take=st,a.head=st,se(a,function(n,t){a.prototype[t]||(a.prototype[t]=function(t,e){var r=n(this.__wrapped__,t,e);return null==t||e&&typeof t!="function"?r:new z(r)})}),a.VERSION="1.0.1",a.prototype.toString=function(){return $t(this.__wrapped__)},a.prototype.value=jt,a.prototype.valueOf=jt,at(["join","pop","shift"],function(n){var t=Bt[n];a.prototype[n]=function(){return t.apply(this.__wrapped__,arguments) +}}),at(["push","reverse","sort","unshift"],function(n){var t=Bt[n];a.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),at(["concat","slice","splice"],function(n){var t=Bt[n];a.prototype[n]=function(){return new z(t.apply(this.__wrapped__,arguments))}}),a}var e,r=typeof exports=="object"&&exports,u=typeof module=="object"&&module&&module.exports==r&&module,a=typeof global=="object"&&global;a.global===a&&(n=a);var o=0,i={},f=/\b__p\+='';/g,c=/\b(__p\+=)''\+/g,l=/(__e\(.*?\)|\b__t\))\+'';/g,p=/&(?:amp|lt|gt|quot|#39);/g,s=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,v=/\w*$/,g=/<%=([\s\S]+?)%>/g,h=/^0+(?=.$)/,y=/($^)/,m=/[&<>"']/g,b=/['\n\r\t\u2028\u2029\\]/g,d="Array Boolean Date Function Math Number Object RegExp String _ attachEvent clearTimeout isFinite isNaN parseInt setImmediate setTimeout".split(" "),_="[object Arguments]",k="[object Array]",w="[object Boolean]",j="[object Date]",C="[object Number]",x="[object Object]",O="[object RegExp]",E="[object String]",I={"[object Function]":!1}; I[_]=I[k]=I[w]=I[j]=I[C]=I[x]=I[O]=I[E]=!0;var N={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},S={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"},A=t();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(n._=A,define(function(){return A})):r&&!r.nodeType?u?(u.exports=A)._=A:r._=A:n._=A})(this); \ No newline at end of file diff --git a/dist/lodash.underscore.js b/dist/lodash.underscore.js index 557007222..ff4d7bf73 100644 --- a/dist/lodash.underscore.js +++ b/dist/lodash.underscore.js @@ -2057,7 +2057,18 @@ * _.pluck(stooges, 'name'); * // => ['moe', 'larry'] */ - var pluck = map; + function pluck(collection, property) { + var index = -1, + length = collection ? collection.length : 0; + + if (typeof length == 'number') { + var result = Array(length); + while (++index < length) { + result[index] = collection[index][property] + } + } + return result || map(collection, property); + } /** * Reduces a `collection` to a value that is the accumulated result of running diff --git a/dist/lodash.underscore.min.js b/dist/lodash.underscore.min.js index 550aeff42..2daf3df45 100644 --- a/dist/lodash.underscore.min.js +++ b/dist/lodash.underscore.min.js @@ -5,30 +5,31 @@ * Underscore.js 1.4.4 underscorejs.org/LICENSE */ ;(function(n){function r(n){return n instanceof r?n:new i(n)}function t(n,r){var t=n.b,e=r.b;if(n=n.a,r=r.a,n!==r){if(n>r||typeof n=="undefined")return 1;if(nt?0:t);++ee&&(e=t,u=n) -});else for(;++ou&&(u=t);return u}function B(n,r,t,e){if(!n)return t;var u=3>arguments.length;r=C(r,e,4);var o=-1,i=n.length;if(typeof i=="number")for(u&&(t=n[++o]);++oarguments.length;if(typeof u!="number")var i=Fr(n),u=i.length;return r=C(r,e,4),E(n,function(e,f,a){f=i?i[--u]:--u,t=o?(o=!1,n[f]):r(t,n[f],f,a)}),t}function R(n,r,t){var e;r=C(r,t),t=-1;var u=n?n.length:0; -if(typeof u=="number")for(;++tt?xr(0,u+t):t||0)-1;else if(t)return e=$(n,r),n[e]===r?e:-1;for(;++e>>1,t(n[e])M(f,a))&&(t&&f.push(a),i.push(e))}return i}function z(n,r){return Nr.fastBind||dr&&2"']/g,X=/['\n\r\t\u2028\u2029\\]/g,Y="[object Arguments]",Z="[object Array]",nr="[object Boolean]",rr="[object Date]",tr="[object Number]",er="[object Object]",ur="[object RegExp]",or="[object String]",ir={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},fr={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"},ar=[],G={},cr=n._,lr=RegExp("^"+(G.valueOf+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),pr=Math.ceil,sr=n.clearTimeout,vr=ar.concat,gr=Math.floor,hr=G.hasOwnProperty,yr=ar.push,mr=n.setTimeout,_r=G.toString,dr=lr.test(dr=a.bind)&&dr,br=lr.test(br=Array.isArray)&&br,jr=n.isFinite,wr=n.isNaN,Ar=lr.test(Ar=Object.keys)&&Ar,xr=Math.max,Or=Math.min,Er=Math.random,G=lr.test(n.attachEvent),Sr=dr&&!/\n|true/.test(dr+G),Nr={}; -(function(){var n={0:1,length:1};Nr.argsObject=arguments.constructor==Object,Nr.fastBind=dr&&!Sr,Nr.spliceObjects=(ar.splice.call(n,0,1),!n[0])})(1),r.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},i.prototype=r.prototype,G=function(n){var r,t=[];if(!n||!ir[typeof n])return t;for(r in n)hr.call(n,r)&&t.push(r);return t},l(arguments)||(l=function(n){return n?hr.call(n,"callee"):!1});var Br=br||function(n){return Nr.argsObject&&n instanceof Array||_r.call(n)==Z -},Fr=Ar?function(n){return _(n)?Ar(n):[]}:G,Rr={"&":"&","<":"<",">":">",'"':""","'":"'"},kr=g(Rr),qr=function(n,r){var t;if(!n||!ir[typeof n])return n;r||(r=P);for(t in n)if(r(n[t],t,n)===J)break;return n},Dr=function(n,r){var t;if(!n||!ir[typeof n])return n;r||(r=P);for(t in n)if(hr.call(n,t)&&r(n[t],t,n)===J)break;return n};m(/x/)&&(m=function(n){return n instanceof Function||"[object Function]"==_r.call(n)});var Mr=S;r.after=function(n,r){return 1>n?r():function(){return 1>--n?r.apply(this,arguments):void 0 -}},r.bind=z,r.bindAll=function(n){for(var r=vr.apply(ar,arguments),t=1M(e,o,t)&&u.push(o)}return u},r.filter=x,r.flatten=D,r.forEach=E,r.functions=v,r.groupBy=function(n,r,t){var e={}; -return r=C(r,t),E(n,function(n,t,u){t=r(n,t,u)+"",(hr.call(e,t)?e[t]:e[t]=[]).push(n)}),e},r.initial=function(n,r,t){if(!n)return[];var e=0,u=n.length;if(typeof r!="number"&&null!=r){var o=u;for(r=C(r,t);o--&&r(n[o],o,n);)e++}else e=null==r||t?1:r||e;return a(n,0,Or(xr(0,u-e),u))},r.intersection=function(n){var r=arguments,t=r.length,e=-1,u=n?n.length:0,o=[];n:for(;++eM(o,i)){for(var f=t;--f;)if(0>M(r[f],i))continue n;o.push(i)}}return o},r.invert=g,r.invoke=function(n,r){var t=a(arguments,2),e=-1,u=typeof r=="function",o=n?n.length:0,i=Array(typeof o=="number"?o:0); -return E(n,function(n){i[++e]=(u?r:n[r]).apply(n,t)}),i},r.keys=Fr,r.map=S,r.max=N,r.memoize=function(n,r){var t={};return function(){var e=(r?r.apply(this,arguments):arguments[0])+"";return hr.call(t,e)?t[e]:t[e]=n.apply(this,arguments)}},r.min=function(n,r,t){var e=1/0,u=e,o=-1,i=n?n.length:0;if(r||typeof i!="number")r=C(r,t),E(n,function(n,t,o){t=r(n,t,o),tM(r,e,1)&&(t[e]=n) -}),t},r.once=function(n){var r,t;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},r.pairs=function(n){for(var r=-1,t=Fr(n),e=t.length,u=Array(e);++rM(arguments,u,1)&&e.push(u)}return e},r.wrap=function(n,r){return function(){var t=[n]; -return yr.apply(t,arguments),r.apply(this,t)}},r.zip=function(n){for(var r=-1,t=n?N(Mr(arguments,"length")):0,e=Array(t);++rt?xr(0,e+t):Or(t,e-1))+1);e--;)if(n[e]===r)return e;return-1},r.mixin=U,r.noConflict=function(){return n._=cr,this},r.random=function(n,r){return null==n&&null==r&&(r=1),n=+n||0,null==r&&(r=n,n=0),n+gr(Er()*((+r||0)-n+1))},r.reduce=B,r.reduceRight=F,r.result=function(n,r){var t=n?n[r]:null;return m(t)?n[r]():t},r.size=function(n){var r=n?n.length:0;return typeof r=="number"?r:Fr(n).length -},r.some=R,r.sortedIndex=$,r.template=function(n,t,e){n||(n=""),e=s({},e,r.templateSettings);var o=0,i="__p+='",f=e.variable;n.replace(RegExp((e.escape||L).source+"|"+(e.interpolate||L).source+"|"+(e.evaluate||L).source+"|$","g"),function(r,t,e,f,a){return i+=n.slice(o,a).replace(X,u),t&&(i+="'+_['escape']("+t+")+'"),f&&(i+="';"+f+";__p+='"),e&&(i+="'+((__t=("+e+"))==null?'':__t)+'"),o=a+r.length,r}),i+="';\n",f||(f="obj",i="with("+f+"||{}){"+i+"}"),i="function("+f+"){var __t,__p='',__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}"+i+"return __p}"; -try{var a=Function("_","return "+i)(r)}catch(c){throw c.source=i,c}return t?a(t):(a.source=i,a)},r.unescape=function(n){return null==n?"":(n+"").replace(K,c)},r.uniqueId=function(n){var r=++H+"";return n?n+r:r},r.all=A,r.any=R,r.detect=O,r.foldl=B,r.foldr=F,r.include=w,r.inject=B,r.first=q,r.last=function(n,r,t){if(n){var e=0,u=n.length;if(typeof r!="number"&&null!=r){var o=u;for(r=C(r,t);o--&&r(n[o],o,n);)e++}else if(e=r,null==e||t)return n[u-1];return a(n,xr(0,u-e))}},r.take=q,r.head=q,r.chain=function(n){return n=new i(n),n.__chain__=!0,n -},r.VERSION="1.0.1",U(r),r.prototype.chain=function(){return this.__chain__=!0,this},r.prototype.value=function(){return this.__wrapped__},E("pop push reverse shift sort splice unshift".split(" "),function(n){var t=ar[n];r.prototype[n]=function(){var n=this.__wrapped__;return t.apply(n,arguments),!Nr.spliceObjects&&0===n.length&&delete n[0],this}}),E(["concat","join","slice"],function(n){var t=ar[n];r.prototype[n]=function(){var n=t.apply(this.__wrapped__,arguments);return this.__chain__&&(n=new i(n),n.__chain__=!0),n -}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(n._=r,define(function(){return r})):V&&!V.nodeType?W?(W.exports=r)._=r:V._=r:n._=r})(this); \ No newline at end of file +r=n}return u}function u(n){return"\\"+ar[n]}function o(n){return kr[n]}function i(n){this.__wrapped__=n}function f(){}function a(n,r,t){r||(r=0),typeof t=="undefined"&&(t=n?n.length:0);var e=-1;t=t-r||0;for(var u=Array(0>t?0:t);++ee&&(e=t,u=n) +});else for(;++ou&&(u=t);return u}function B(n,r){var t=-1,e=n?n.length:0;if(typeof e=="number")for(var u=Array(e);++targuments.length;r=P(r,e,4);var o=-1,i=n.length;if(typeof i=="number")for(u&&(t=n[++o]);++oarguments.length;if(typeof u!="number")var i=Rr(n),u=i.length;return r=P(r,e,4),E(n,function(e,f,a){f=i?i[--u]:--u,t=o?(o=!1,n[f]):r(t,n[f],f,a) +}),t}function k(n,r,t){var e;r=P(r,t),t=-1;var u=n?n.length:0;if(typeof u=="number")for(;++tt?Or(0,u+t):t||0)-1;else if(t)return e=I(n,r),n[e]===r?e:-1;for(;++e>>1,t(n[e])T(f,a))&&(t&&f.push(a),i.push(e))}return i}function C(n,r){return Br.fastBind||dr&&2"']/g,Y=/['\n\r\t\u2028\u2029\\]/g,Z="[object Arguments]",nr="[object Array]",rr="[object Boolean]",tr="[object Date]",er="[object Number]",ur="[object Object]",or="[object RegExp]",ir="[object String]",fr={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},ar={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"},cr=[],H={},lr=n._,pr=RegExp("^"+(H.valueOf+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),sr=Math.ceil,vr=n.clearTimeout,gr=cr.concat,hr=Math.floor,yr=H.hasOwnProperty,mr=cr.push,_r=n.setTimeout,br=H.toString,dr=pr.test(dr=a.bind)&&dr,jr=pr.test(jr=Array.isArray)&&jr,wr=n.isFinite,Ar=n.isNaN,xr=pr.test(xr=Object.keys)&&xr,Or=Math.max,Er=Math.min,Sr=Math.random,H=pr.test(n.attachEvent),Nr=dr&&!/\n|true/.test(dr+H),Br={}; +(function(){var n={0:1,length:1};Br.argsObject=arguments.constructor==Object,Br.fastBind=dr&&!Nr,Br.spliceObjects=(cr.splice.call(n,0,1),!n[0])})(1),r.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},i.prototype=r.prototype,H=function(n){var r,t=[];if(!n||!fr[typeof n])return t;for(r in n)yr.call(n,r)&&t.push(r);return t},l(arguments)||(l=function(n){return n?yr.call(n,"callee"):!1});var Fr=jr||function(n){return Br.argsObject&&n instanceof Array||br.call(n)==nr +},Rr=xr?function(n){return _(n)?xr(n):[]}:H,kr={"&":"&","<":"<",">":">",'"':""","'":"'"},qr=g(kr),Dr=function(n,r){var t;if(!n||!fr[typeof n])return n;r||(r=U);for(t in n)if(r(n[t],t,n)===K)break;return n},Mr=function(n,r){var t;if(!n||!fr[typeof n])return n;r||(r=U);for(t in n)if(yr.call(n,t)&&r(n[t],t,n)===K)break;return n};m(/x/)&&(m=function(n){return n instanceof Function||"[object Function]"==br.call(n)}),r.after=function(n,r){return 1>n?r():function(){return 1>--n?r.apply(this,arguments):void 0 +}},r.bind=C,r.bindAll=function(n){for(var r=gr.apply(cr,arguments),t=1T(e,o,t)&&u.push(o)}return u},r.filter=x,r.flatten=M,r.forEach=E,r.functions=v,r.groupBy=function(n,r,t){var e={}; +return r=P(r,t),E(n,function(n,t,u){t=r(n,t,u)+"",(yr.call(e,t)?e[t]:e[t]=[]).push(n)}),e},r.initial=function(n,r,t){if(!n)return[];var e=0,u=n.length;if(typeof r!="number"&&null!=r){var o=u;for(r=P(r,t);o--&&r(n[o],o,n);)e++}else e=null==r||t?1:r||e;return a(n,0,Er(Or(0,u-e),u))},r.intersection=function(n){var r=arguments,t=r.length,e=-1,u=n?n.length:0,o=[];n:for(;++eT(o,i)){for(var f=t;--f;)if(0>T(r[f],i))continue n;o.push(i)}}return o},r.invert=g,r.invoke=function(n,r){var t=a(arguments,2),e=-1,u=typeof r=="function",o=n?n.length:0,i=Array(typeof o=="number"?o:0); +return E(n,function(n){i[++e]=(u?r:n[r]).apply(n,t)}),i},r.keys=Rr,r.map=S,r.max=N,r.memoize=function(n,r){var t={};return function(){var e=(r?r.apply(this,arguments):arguments[0])+"";return yr.call(t,e)?t[e]:t[e]=n.apply(this,arguments)}},r.min=function(n,r,t){var e=1/0,u=e,o=-1,i=n?n.length:0;if(r||typeof i!="number")r=P(r,t),E(n,function(n,t,o){t=r(n,t,o),tT(r,e,1)&&(t[e]=n) +}),t},r.once=function(n){var r,t;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},r.pairs=function(n){for(var r=-1,t=Rr(n),e=t.length,u=Array(e);++rT(arguments,u,1)&&e.push(u)}return e},r.wrap=function(n,r){return function(){var t=[n]; +return mr.apply(t,arguments),r.apply(this,t)}},r.zip=function(n){for(var r=-1,t=n?N(B(arguments,"length")):0,e=Array(t);++rt?Or(0,e+t):Er(t,e-1))+1);e--;)if(n[e]===r)return e;return-1},r.mixin=V,r.noConflict=function(){return n._=lr,this},r.random=function(n,r){return null==n&&null==r&&(r=1),n=+n||0,null==r&&(r=n,n=0),n+hr(Sr()*((+r||0)-n+1))},r.reduce=F,r.reduceRight=R,r.result=function(n,r){var t=n?n[r]:null;return m(t)?n[r]():t},r.size=function(n){var r=n?n.length:0;return typeof r=="number"?r:Rr(n).length +},r.some=k,r.sortedIndex=I,r.template=function(n,t,e){n||(n=""),e=s({},e,r.templateSettings);var o=0,i="__p+='",f=e.variable;n.replace(RegExp((e.escape||Q).source+"|"+(e.interpolate||Q).source+"|"+(e.evaluate||Q).source+"|$","g"),function(r,t,e,f,a){return i+=n.slice(o,a).replace(Y,u),t&&(i+="'+_['escape']("+t+")+'"),f&&(i+="';"+f+";__p+='"),e&&(i+="'+((__t=("+e+"))==null?'':__t)+'"),o=a+r.length,r}),i+="';\n",f||(f="obj",i="with("+f+"||{}){"+i+"}"),i="function("+f+"){var __t,__p='',__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}"+i+"return __p}"; +try{var a=Function("_","return "+i)(r)}catch(c){throw c.source=i,c}return t?a(t):(a.source=i,a)},r.unescape=function(n){return null==n?"":(n+"").replace(L,c)},r.uniqueId=function(n){var r=++J+"";return n?n+r:r},r.all=A,r.any=k,r.detect=O,r.foldl=F,r.foldr=R,r.include=w,r.inject=F,r.first=D,r.last=function(n,r,t){if(n){var e=0,u=n.length;if(typeof r!="number"&&null!=r){var o=u;for(r=P(r,t);o--&&r(n[o],o,n);)e++}else if(e=r,null==e||t)return n[u-1];return a(n,Or(0,u-e))}},r.take=D,r.head=D,r.chain=function(n){return n=new i(n),n.__chain__=!0,n +},r.VERSION="1.0.1",V(r),r.prototype.chain=function(){return this.__chain__=!0,this},r.prototype.value=function(){return this.__wrapped__},E("pop push reverse shift sort splice unshift".split(" "),function(n){var t=cr[n];r.prototype[n]=function(){var n=this.__wrapped__;return t.apply(n,arguments),!Br.spliceObjects&&0===n.length&&delete n[0],this}}),E(["concat","join","slice"],function(n){var t=cr[n];r.prototype[n]=function(){var n=t.apply(this.__wrapped__,arguments);return this.__chain__&&(n=new i(n),n.__chain__=!0),n +}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(n._=r,define(function(){return r})):W&&!W.nodeType?G?(G.exports=r)._=r:W._=r:n._=r})(this); \ No newline at end of file