//! mingo.js 2.5.3 //! Copyright (c) 2020 Francis Asante //! MIT !function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n=n||self).mingo=t()}(this,function(){"use strict";function e(n){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(n)}function o(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}function u(n,t){for(var r=0;rn.length)&&(t=n.length);for(var r=0,e=new Array(t);r>>0;if(0==e)return!1;var u,i,o=0|t,a=Math.max(0<=o?o:e-Math.abs(o),0);for(;a>>0}function on(n,t){return n>6*t)+Ot[t-1]];0>6*--t&63);return r}var Mt=Object.freeze({__proto__:null,$abs:function(n,t){var r=Sn(n,t);return null==r?null:Math.abs(r)},$add:function(n,t){var r=Sn(n,t),e=!1,u=X(r,function(n,t){return F(t)&&(M(!e,"'$add' can only have one date value"),e=!0,t=t.getTime()),n+=t},0);return e?new Date(u):u},$ceil:function(n,t){var r=Sn(n,t);return R(r)?null:(M(P(r)||isNaN(r),"$ceil expression must resolve to a number."),Math.ceil(r))},$divide:function(n,t){var r=Sn(n,t);return r[0]/r[1]},$exp:function(n,t){var r=Sn(n,t);return R(r)?null:(M(P(r)||isNaN(r),"$exp expression must resolve to a number."),Math.exp(r))},$floor:function(n,t){var r=Sn(n,t);return R(r)?null:(M(P(r)||isNaN(r),"$floor expression must resolve to a number."),Math.floor(r))},$ln:function(n,t){var r=Sn(n,t);return R(r)?null:(M(P(r)||isNaN(r),"$ln expression must resolve to a number."),Math.log(r))},$log:function(n,t){var r=Sn(n,t),e="$log expression must resolve to array(2) of numbers";return M(C(r)&&2===r.length,e),r.some(R)?null:(M(r.some(isNaN)||r.every(P),e),Math.log10(r[0])/Math.log10(r[1]))},$log10:function(n,t){var r=Sn(n,t);return R(r)?null:(M(P(r)||isNaN(r),"$log10 expression must resolve to a number."),Math.log10(r))},$mod:function(n,t){var r=Sn(n,t);return r[0]%r[1]},$multiply:function(n,t){return X(Sn(n,t),function(n,t){return n*t},1)},$pow:function(n,t){var r=Sn(n,t);return M(C(r)&&2===r.length&&r.every(P),"$pow expression must resolve to array(2) of numbers"),M(!(0===r[0]&&r[1]<0),"$pow cannot raise 0 to a negative exponent"),Math.pow(r[0],r[1])},$round:function(n,t){var r=Sn(n,t),e=r[0],u=r[1];return R(e)||isNaN(e)||Math.abs(e)===1/0?e:(M(P(e),"$round expression must resolve to a number."),Pn(e,u,!0))},$sqrt:function(n,t){var r=Sn(n,t);return R(r)?null:(M(P(r)&&0r[1]?1:r[0]u.default||sn[u]))return u;r=u+1}}return r}(i,t),e=i[Math.max(0,r-1)];l[e].push(n)}}),i.pop(),R(o)||i.push(o),v=Cn(i).map(function(n){var t=En(l[n],null,r);return Object.assign(t,{_id:n})})),v.next()})},$bucketAuto:function(n,t,r){var d=t.output||{count:{$sum:1}},g=t.groupBy,m=t.buckets;return M(0