Comparing version 1.0.7 to 1.0.8
@@ -21,2 +21,5 @@ "use strict"; | ||
}}, | ||
parallel: {get: function() { | ||
return parallel; | ||
}}, | ||
__esModule: {value: true} | ||
@@ -206,2 +209,46 @@ }); | ||
} | ||
function parallel(promises) { | ||
var done, | ||
results, | ||
$__2, | ||
$__3; | ||
return $traceurRuntime.asyncWrap(function($ctx) { | ||
while (true) | ||
switch ($ctx.state) { | ||
case 0: | ||
done = Q.defer(); | ||
results = []; | ||
for ($__2 = promises[Symbol.iterator](); !($__3 = $__2.next()).done; ) { | ||
try { | ||
throw undefined; | ||
} catch (p) { | ||
{ | ||
p = $__3.value; | ||
{ | ||
p.then(function(res) { | ||
results.push(res); | ||
if (results.length === promises.length) { | ||
done.resolve(results); | ||
} | ||
}, function(err) { | ||
done.reject(err); | ||
}); | ||
} | ||
} | ||
} | ||
} | ||
$ctx.state = 5; | ||
break; | ||
case 5: | ||
$ctx.returnValue = done.promise; | ||
$ctx.state = 2; | ||
break; | ||
case 2: | ||
$ctx.state = -2; | ||
break; | ||
default: | ||
return $ctx.end(); | ||
} | ||
}, this); | ||
} | ||
function nodeify(promisey, cb) { | ||
@@ -259,2 +306,2 @@ promisey.then((function(res) { | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uanMiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvNyIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci81IiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzIiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMyIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci82IiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzEiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTgiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTIiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTciLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTUiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTMiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTQiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTYiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMjIiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvOSIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8yMyIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8xOSIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8xMSIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8yMCIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8yMSIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci84IiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzEwIl0sIm5hbWVzIjpbXSwibWFw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QUMsQ0FBSyxHQUFDLElBQUcsU0FBQyxHQUFFLENBQU07QUFDN0MsVUFBTSxNQUFNLEFBQUMsQ0FBQyxHQUFFLE1BQU0sQ0FBQyxDQUFDO0VBQzFCLEVBQUMsQ0FBQztBQUNKOztBQUdBIiwiZmlsZSI6Im1haW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUSBmcm9tICdxJztcbmltcG9ydCB7IG1hcGlmeSB9IGZyb20gJ2VzNi1tYXBpZnknO1xuaW1wb3J0ICd0cmFjZXVyL2Jpbi90cmFjZXVyLXJ1bnRpbWUnO1xuXG5hc3luYyBmdW5jdGlvbiBzbGVlcCAobXMpIHtcbiAgbGV0IG5vZGVTZXRUaW1lb3V0ID0gZnVuY3Rpb24gKG1zLCBjYikge1xuICAgIHJldHVybiBzZXRUaW1lb3V0KGNiLCBtcyk7XG4gIH07XG4gIHJldHVybiBhd2FpdCBRLm5mY2FsbChub2RlU2V0VGltZW91dCwgbXMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXRyeSAodGltZXMsIGZuLCAuLi5hcmdzKSB7XG4gIGxldCB0cmllcyA9IDA7XG4gIGxldCBkb25lID0gZmFsc2U7XG4gIGxldCByZXMgPSBudWxsO1xuICB3aGlsZSAoIWRvbmUgJiYgdHJpZXMgPCB0aW1lcykge1xuICAgIHRyaWVzKys7XG4gICAgdHJ5IHtcbiAgICAgIHJlcyA9IGF3YWl0IGZuKC4uLmFyZ3MpO1xuICAgICAgZG9uZSA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAodHJpZXMgPj0gdGltZXMpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXRyeUludGVydmFsICh0aW1lcywgc2xlZXBNcywgZm4sIC4uLmFyZ3MpIHtcbiAgbGV0IHdyYXBwZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgbGV0IHJlcztcbiAgICB0cnkge1xuICAgICAgcmVzID0gYXdhaXQgZm4oLi4uYXJncyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgc2xlZXAoc2xlZXBNcyk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuICByZXR1cm4gcmV0cnkodGltZXMsIHdyYXBwZWQpO1xufVxuXG5mdW5jdGlvbiBub2RlaWZ5IChwcm9taXNleSwgY2IpIHtcbiAgcHJvbWlzZXkudGhlbihyZXMgPT4geyBjYihudWxsLCByZXMpOyB9LCBjYik7XG59XG5cbmZ1bmN0aW9uIG5vZGVpZnlBbGwgKHByb21pc2V5TWFwKSB7XG4gIGxldCBjYk1hcCA9IHt9O1xuICBmb3IgKGxldCBbbmFtZSwgZm5dIG9mIG1hcGlmeShwcm9taXNleU1hcCkpIHtcbiAgICBjYk1hcFtuYW1lXSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICBsZXQgX2NiID0gYXJncy5zbGljZSgtMSlbMF07XG4gICAgICBhcmdzID0gYXJncy5zbGljZSgwLCAtMSk7XG4gICAgICBub2RlaWZ5KGZuKC4uLmFyZ3MpLCBfY2IpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGNiTWFwO1xufVxuXG5mdW5jdGlvbiBhc3luY2lmeSAoZm4sIC4uLmFyZ3MpIHtcbiAgZm4uY2FsbChudWxsLCAuLi5hcmdzKS50aGVuKCgpID0+IHt9LCAoZXJyKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihlcnIuc3RhY2spO1xuICB9KTtcbn1cblxuZXhwb3J0IHsgc2xlZXAsIHJldHJ5LCBub2RlaWZ5LCBub2RlaWZ5QWxsLCByZXRyeUludGVydmFsLCBhc3luY2lmeSB9O1xuIiwiT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZXhwb3J0cywgJF9fcGxhY2Vob2xkZXJfXzApOyIsIntnZXQ6ICRfX3BsYWNlaG9sZGVyX18wfSIsImdldCAkX19wbGFjZWhvbGRlcl9fMCgpIHsgcmV0dXJuICRfX3BsYWNlaG9sZGVyX18xOyB9IiwiX19lc01vZHVsZTogdHJ1ZSIsInt2YWx1ZTogJF9fcGxhY2Vob2xkZXJfXzB9IiwiKCRfX3BsYWNlaG9sZGVyX18wID0gcmVxdWlyZSgkX19wbGFjZWhvbGRlcl9fMSksIFxuICAgICAgICAkX19wbGFjZWhvbGRlcl9fMiAmJiAkX19wbGFjZWhvbGRlcl9fMy5fX2VzTW9kdWxlICYmICRfX3BsYWNlaG9sZGVyX180IHx8IHtkZWZhdWx0OiAkX19wbGFjZWhvbGRlcl9fNX0pIiwicmV0dXJuICRfX3BsYWNlaG9sZGVyX18wKFxuICAgICAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fMSwgdGhpcyk7IiwiJHRyYWNldXJSdW50aW1lLmFzeW5jV3JhcCIsImZ1bmN0aW9uKCRjdHgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSAkX19wbGFjZWhvbGRlcl9fMFxuICAgIH0iLCJQcm9taXNlLnJlc29sdmUoJF9fcGxhY2Vob2xkZXJfXzApLnRoZW4oXG4gICAgICAgICAgICAgICRjdHguY3JlYXRlQ2FsbGJhY2soJF9fcGxhY2Vob2xkZXJfXzEpLCAkY3R4LmVycmJhY2spO1xuICAgICAgICAgIHJldHVybiIsIiRjdHgudmFsdWUiLCIkY3R4LnJldHVyblZhbHVlID0gJF9fcGxhY2Vob2xkZXJfXzAiLCJyZXR1cm4gJGN0eC5lbmQoKSIsInZhciAkYXJndW1lbnRzID0gYXJndW1lbnRzOyIsIlxuICAgICAgICAgICAgZm9yICh2YXIgJF9fcGxhY2Vob2xkZXJfXzAgPSBbXSwgJF9fcGxhY2Vob2xkZXJfXzEgPSAkX19wbGFjZWhvbGRlcl9fMjtcbiAgICAgICAgICAgICAgICAgJF9fcGxhY2Vob2xkZXJfXzMgPCBhcmd1bWVudHMubGVuZ3RoOyAkX19wbGFjZWhvbGRlcl9fNCsrKVxuICAgICAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fNVskX19wbGFjZWhvbGRlcl9fNiAtICRfX3BsYWNlaG9sZGVyX183XSA9IGFyZ3VtZW50c1skX19wbGFjZWhvbGRlcl9fOF07IiwiJGN0eC5zdGF0ZSA9ICgkX19wbGFjZWhvbGRlcl9fMCkgPyAkX19wbGFjZWhvbGRlcl9fMSA6ICRfX3BsYWNlaG9sZGVyX18yO1xuICAgICAgICBicmVhayIsIiRjdHgucHVzaFRyeShcbiAgICAgICAgICAgICRfX3BsYWNlaG9sZGVyX18wLFxuICAgICAgICAgICAgJF9fcGxhY2Vob2xkZXJfXzEpOyIsIiR0cmFjZXVyUnVudGltZS5zcHJlYWQoJF9fcGxhY2Vob2xkZXJfXzApIiwiJGN0eC5wb3BUcnkoKTsiLCJcbiAgICAgICAgICAgICAgJGN0eC5wb3BUcnkoKTtcbiAgICAgICAgICAgICAgJF9fcGxhY2Vob2xkZXJfXzAgPSAkY3R4LnN0b3JlZEV4Y2VwdGlvbjsiLCJcbiAgICAgICAgZm9yICh2YXIgJF9fcGxhY2Vob2xkZXJfXzAgPVxuICAgICAgICAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fMVtTeW1ib2wuaXRlcmF0b3JdKCksXG4gICAgICAgICAgICAgICAgICRfX3BsYWNlaG9sZGVyX18yO1xuICAgICAgICAgICAgICEoJF9fcGxhY2Vob2xkZXJfXzMgPSAkX19wbGFjZWhvbGRlcl9fNC5uZXh0KCkpLmRvbmU7ICkge1xuICAgICAgICAgICRfX3BsYWNlaG9sZGVyX181O1xuICAgICAgICAgICRfX3BsYWNlaG9sZGVyX182O1xuICAgICAgICB9IiwiXG4gICAgICAgICAgICBmb3IgKHZhciAkX19wbGFjZWhvbGRlcl9fMCA9IFtdLCAkX19wbGFjZWhvbGRlcl9fMSA9IDA7XG4gICAgICAgICAgICAgICAgICRfX3BsYWNlaG9sZGVyX18yIDwgYXJndW1lbnRzLmxlbmd0aDsgJF9fcGxhY2Vob2xkZXJfXzMrKylcbiAgICAgICAgICAgICAgJF9fcGxhY2Vob2xkZXJfXzRbJF9fcGxhY2Vob2xkZXJfXzVdID0gYXJndW1lbnRzWyRfX3BsYWNlaG9sZGVyX182XTsiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uanMiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvNyIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci81IiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzIiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMyIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci82IiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzEiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTgiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTIiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTciLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTUiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTMiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTQiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTYiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMjIiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvOSIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8yMyIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8xOSIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8xMSIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8yMCIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8yMSIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci84IiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzEwIl0sIm5hbWVzIjpbXSwibWFw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aWZ5IH0gZnJvbSAnZXM2LW1hcGlmeSc7XG5pbXBvcnQgJ3RyYWNldXIvYmluL3RyYWNldXItcnVudGltZSc7XG5cbmFzeW5jIGZ1bmN0aW9uIHNsZWVwIChtcykge1xuICBsZXQgbm9kZVNldFRpbWVvdXQgPSBmdW5jdGlvbiAobXMsIGNiKSB7XG4gICAgcmV0dXJuIHNldFRpbWVvdXQoY2IsIG1zKTtcbiAgfTtcbiAgcmV0dXJuIGF3YWl0IFEubmZjYWxsKG5vZGVTZXRUaW1lb3V0LCBtcyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJ5ICh0aW1lcywgZm4sIC4uLmFyZ3MpIHtcbiAgbGV0IHRyaWVzID0gMDtcbiAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgbGV0IHJlcyA9IG51bGw7XG4gIHdoaWxlICghZG9uZSAmJiB0cmllcyA8IHRpbWVzKSB7XG4gICAgdHJpZXMrKztcbiAgICB0cnkge1xuICAgICAgcmVzID0gYXdhaXQgZm4oLi4uYXJncyk7XG4gICAgICBkb25lID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmICh0cmllcyA+PSB0aW1lcykge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJ5SW50ZXJ2YWwgKHRpbWVzLCBzbGVlcE1zLCBmbiwgLi4uYXJncykge1xuICBsZXQgd3JhcHBlZCA9IGFzeW5jICgpID0+IHtcbiAgICBsZXQgcmVzO1xuICAgIHRyeSB7XG4gICAgICByZXMgPSBhd2FpdCBmbiguLi5hcmdzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCBzbGVlcChzbGVlcE1zKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG4gIHJldHVybiByZXRyeSh0aW1lcywgd3JhcHBlZCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhcmFsbGVsIChwcm9taXNlcykge1xuICBsZXQgZG9uZSA9IFEuZGVmZXIoKTtcbiAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgZm9yIChsZXQgcCBvZiBwcm9taXNlcykge1xuICAgIHAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICByZXN1bHRzLnB1c2gocmVzKTtcbiAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gcHJvbWlzZXMubGVuZ3RoKSB7XG4gICAgICAgIGRvbmUucmVzb2x2ZShyZXN1bHRzKTtcbiAgICAgIH1cbiAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBkb25lLnJlamVjdChlcnIpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBkb25lLnByb21pc2U7XG59XG5cbmZ1bmN0aW9uIG5vZGVpZnkgKHByb21pc2V5LCBjYikge1xuICBwcm9taXNleS50aGVuKHJlcyA9PiB7IGNiKG51bGwsIHJlcyk7IH0sIGNiKTtcbn1cblxuZnVuY3Rpb24gbm9kZWlmeUFsbCAocHJvbWlzZXlNYXApIHtcbiAgbGV0IGNiTWFwID0ge307XG4gIGZvciAobGV0IFtuYW1lLCBmbl0gb2YgbWFwaWZ5KHByb21pc2V5TWFwKSkge1xuICAgIGNiTWFwW25hbWVdID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgIGxldCBfY2IgPSBhcmdzLnNsaWNlKC0xKVswXTtcbiAgICAgIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIC0xKTtcbiAgICAgIG5vZGVpZnkoZm4oLi4uYXJncyksIF9jYik7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gY2JNYXA7XG59XG5cbmZ1bmN0aW9uIGFzeW5jaWZ5IChmbiwgLi4uYXJncykge1xuICBmbi5jYWxsKG51bGwsIC4uLmFyZ3MpLnRoZW4oKCkgPT4ge30sIChlcnIpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayk7XG4gIH0pO1xufVxuXG5leHBvcnQgeyBzbGVlcCwgcmV0cnksIG5vZGVpZnksIG5vZGVpZnlBbGwsIHJldHJ5SW50ZXJ2YWwsIGFzeW5jaWZ5LCBwYXJhbGxlbCB9O1xuIiwiT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZXhwb3J0cywgJF9fcGxhY2Vob2xkZXJfXzApOyIsIntnZXQ6ICRfX3BsYWNlaG9sZGVyX18wfSIsImdldCAkX19wbGFjZWhvbGRlcl9fMCgpIHsgcmV0dXJuICRfX3BsYWNlaG9sZGVyX18xOyB9IiwiX19lc01vZHVsZTogdHJ1ZSIsInt2YWx1ZTogJF9fcGxhY2Vob2xkZXJfXzB9IiwiKCRfX3BsYWNlaG9sZGVyX18wID0gcmVxdWlyZSgkX19wbGFjZWhvbGRlcl9fMSksIFxuICAgICAgICAkX19wbGFjZWhvbGRlcl9fMiAmJiAkX19wbGFjZWhvbGRlcl9fMy5fX2VzTW9kdWxlICYmICRfX3BsYWNlaG9sZGVyX180IHx8IHtkZWZhdWx0OiAkX19wbGFjZWhvbGRlcl9fNX0pIiwicmV0dXJuICRfX3BsYWNlaG9sZGVyX18wKFxuICAgICAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fMSwgdGhpcyk7IiwiJHRyYWNldXJSdW50aW1lLmFzeW5jV3JhcCIsImZ1bmN0aW9uKCRjdHgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSAkX19wbGFjZWhvbGRlcl9fMFxuICAgIH0iLCJQcm9taXNlLnJlc29sdmUoJF9fcGxhY2Vob2xkZXJfXzApLnRoZW4oXG4gICAgICAgICAgICAgICRjdHguY3JlYXRlQ2FsbGJhY2soJF9fcGxhY2Vob2xkZXJfXzEpLCAkY3R4LmVycmJhY2spO1xuICAgICAgICAgIHJldHVybiIsIiRjdHgudmFsdWUiLCIkY3R4LnJldHVyblZhbHVlID0gJF9fcGxhY2Vob2xkZXJfXzAiLCJyZXR1cm4gJGN0eC5lbmQoKSIsInZhciAkYXJndW1lbnRzID0gYXJndW1lbnRzOyIsIlxuICAgICAgICAgICAgZm9yICh2YXIgJF9fcGxhY2Vob2xkZXJfXzAgPSBbXSwgJF9fcGxhY2Vob2xkZXJfXzEgPSAkX19wbGFjZWhvbGRlcl9fMjtcbiAgICAgICAgICAgICAgICAgJF9fcGxhY2Vob2xkZXJfXzMgPCBhcmd1bWVudHMubGVuZ3RoOyAkX19wbGFjZWhvbGRlcl9fNCsrKVxuICAgICAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fNVskX19wbGFjZWhvbGRlcl9fNiAtICRfX3BsYWNlaG9sZGVyX183XSA9IGFyZ3VtZW50c1skX19wbGFjZWhvbGRlcl9fOF07IiwiJGN0eC5zdGF0ZSA9ICgkX19wbGFjZWhvbGRlcl9fMCkgPyAkX19wbGFjZWhvbGRlcl9fMSA6ICRfX3BsYWNlaG9sZGVyX18yO1xuICAgICAgICBicmVhayIsIiRjdHgucHVzaFRyeShcbiAgICAgICAgICAgICRfX3BsYWNlaG9sZGVyX18wLFxuICAgICAgICAgICAgJF9fcGxhY2Vob2xkZXJfXzEpOyIsIiR0cmFjZXVyUnVudGltZS5zcHJlYWQoJF9fcGxhY2Vob2xkZXJfXzApIiwiJGN0eC5wb3BUcnkoKTsiLCJcbiAgICAgICAgICAgICAgJGN0eC5wb3BUcnkoKTtcbiAgICAgICAgICAgICAgJF9fcGxhY2Vob2xkZXJfXzAgPSAkY3R4LnN0b3JlZEV4Y2VwdGlvbjsiLCJcbiAgICAgICAgZm9yICh2YXIgJF9fcGxhY2Vob2xkZXJfXzAgPVxuICAgICAgICAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fMVtTeW1ib2wuaXRlcmF0b3JdKCksXG4gICAgICAgICAgICAgICAgICRfX3BsYWNlaG9sZGVyX18yO1xuICAgICAgICAgICAgICEoJF9fcGxhY2Vob2xkZXJfXzMgPSAkX19wbGFjZWhvbGRlcl9fNC5uZXh0KCkpLmRvbmU7ICkge1xuICAgICAgICAgICRfX3BsYWNlaG9sZGVyX181O1xuICAgICAgICAgICRfX3BsYWNlaG9sZGVyX182O1xuICAgICAgICB9IiwiXG4gICAgICAgICAgICBmb3IgKHZhciAkX19wbGFjZWhvbGRlcl9fMCA9IFtdLCAkX19wbGFjZWhvbGRlcl9fMSA9IDA7XG4gICAgICAgICAgICAgICAgICRfX3BsYWNlaG9sZGVyX18yIDwgYXJndW1lbnRzLmxlbmd0aDsgJF9fcGxhY2Vob2xkZXJfXzMrKylcbiAgICAgICAgICAgICAgJF9fcGxhY2Vob2xkZXJfXzRbJF9fcGxhY2Vob2xkZXJfXzVdID0gYXJndW1lbnRzWyRfX3BsYWNlaG9sZGVyX182XTsiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= |
@@ -44,2 +44,18 @@ import Q from 'q'; | ||
async function parallel (promises) { | ||
let done = Q.defer(); | ||
let results = []; | ||
for (let p of promises) { | ||
p.then(function (res) { | ||
results.push(res); | ||
if (results.length === promises.length) { | ||
done.resolve(results); | ||
} | ||
}, function (err) { | ||
done.reject(err); | ||
}); | ||
} | ||
return done.promise; | ||
} | ||
function nodeify (promisey, cb) { | ||
@@ -62,5 +78,7 @@ promisey.then(res => { cb(null, res); }, cb); | ||
function asyncify (fn, ...args) { | ||
fn.call(null, ...args).then((err) => { console.error(err.stack); }, () => {}); | ||
fn.call(null, ...args).then(() => {}, (err) => { | ||
console.error(err.stack); | ||
}); | ||
} | ||
export { sleep, retry, nodeify, nodeifyAll, retryInterval, asyncify }; | ||
export { sleep, retry, nodeify, nodeifyAll, retryInterval, asyncify, parallel }; |
@@ -9,3 +9,3 @@ { | ||
], | ||
"version": "1.0.7", | ||
"version": "1.0.8", | ||
"author": "jlipps@gmail.com", | ||
@@ -12,0 +12,0 @@ "licenses": [ |
@@ -15,3 +15,4 @@ "use strict"; | ||
nodeify = $__1.nodeify, | ||
nodeifyAll = $__1.nodeifyAll; | ||
nodeifyAll = $__1.nodeifyAll, | ||
parallel = $__1.parallel; | ||
describe('sleep', (function() { | ||
@@ -482,3 +483,155 @@ it('should work like setTimeout', (function() { | ||
})); | ||
describe('parallel', (function() { | ||
var asyncFn = (function(val) { | ||
return $traceurRuntime.asyncWrap(function($ctx) { | ||
while (true) | ||
switch ($ctx.state) { | ||
case 0: | ||
Promise.resolve(sleep(30)).then($ctx.createCallback(3), $ctx.errback); | ||
return; | ||
case 3: | ||
$ctx.returnValue = val; | ||
$ctx.state = 5; | ||
break; | ||
case 5: | ||
$ctx.state = -2; | ||
break; | ||
default: | ||
return $ctx.end(); | ||
} | ||
}, this); | ||
}); | ||
var badAsyncFn = (function() { | ||
return $traceurRuntime.asyncWrap(function($ctx) { | ||
while (true) | ||
switch ($ctx.state) { | ||
case 0: | ||
Promise.resolve(sleep(15)).then($ctx.createCallback(3), $ctx.errback); | ||
return; | ||
case 3: | ||
throw new Error("boo"); | ||
$ctx.state = -2; | ||
break; | ||
default: | ||
return $ctx.end(); | ||
} | ||
}, this); | ||
}); | ||
it('should perform tasks in parallel and return results', (function() { | ||
var vals, | ||
promises, | ||
start, | ||
$__2, | ||
$__3, | ||
res; | ||
return $traceurRuntime.asyncWrap(function($ctx) { | ||
while (true) | ||
switch ($ctx.state) { | ||
case 0: | ||
vals = [1, 2, 3]; | ||
promises = []; | ||
start = Date.now(); | ||
for ($__2 = vals[Symbol.iterator](); !($__3 = $__2.next()).done; ) { | ||
try { | ||
throw undefined; | ||
} catch (v) { | ||
{ | ||
v = $__3.value; | ||
{ | ||
promises.push(asyncFn(v)); | ||
} | ||
} | ||
} | ||
} | ||
$ctx.state = 5; | ||
break; | ||
case 5: | ||
Promise.resolve(parallel(promises)).then($ctx.createCallback(2), $ctx.errback); | ||
return; | ||
case 2: | ||
res = $ctx.value; | ||
$ctx.state = 3; | ||
break; | ||
case 3: | ||
(Date.now() - start).should.be.above(29); | ||
(Date.now() - start).should.be.below(45); | ||
res.sort().should.eql([1, 2, 3]); | ||
$ctx.state = -2; | ||
break; | ||
default: | ||
return $ctx.end(); | ||
} | ||
}, this); | ||
})); | ||
it('should error with first response', (function() { | ||
var vals, | ||
promises, | ||
start, | ||
$__2, | ||
$__3, | ||
err, | ||
res, | ||
e; | ||
return $traceurRuntime.asyncWrap(function($ctx) { | ||
while (true) | ||
switch ($ctx.state) { | ||
case 0: | ||
vals = [1, 2, 3]; | ||
promises = []; | ||
start = Date.now(); | ||
for ($__2 = vals[Symbol.iterator](); !($__3 = $__2.next()).done; ) { | ||
try { | ||
throw undefined; | ||
} catch (v) { | ||
{ | ||
v = $__3.value; | ||
{ | ||
promises.push(asyncFn(v)); | ||
} | ||
} | ||
} | ||
} | ||
promises.push(badAsyncFn()); | ||
err = null; | ||
res = []; | ||
$ctx.state = 14; | ||
break; | ||
case 14: | ||
$ctx.pushTry(4, null); | ||
$ctx.state = 7; | ||
break; | ||
case 7: | ||
Promise.resolve(parallel(promises)).then($ctx.createCallback(2), $ctx.errback); | ||
return; | ||
case 2: | ||
res = $ctx.value; | ||
$ctx.state = 3; | ||
break; | ||
case 3: | ||
$ctx.popTry(); | ||
$ctx.state = 9; | ||
break; | ||
case 4: | ||
$ctx.popTry(); | ||
e = $ctx.storedException; | ||
$ctx.state = 10; | ||
break; | ||
case 10: | ||
err = e; | ||
$ctx.state = 9; | ||
break; | ||
case 9: | ||
(Date.now() - start).should.be.above(14); | ||
(Date.now() - start).should.be.below(30); | ||
should.exist(err); | ||
res.should.eql([]); | ||
$ctx.state = -2; | ||
break; | ||
default: | ||
return $ctx.end(); | ||
} | ||
}, this); | ||
})); | ||
})); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNwZWNzLmpzIiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzEiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTgiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTIiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTciLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTUiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTYiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTQiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTMiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTkiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMjAiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0E7Ozs7O0FDREEsQUFBQywyREFBb0IsQ0FBQSxPQUFNLEFBQUMsK0JBQWtCLENBQ3RDLENBQUEsNERBQXFCLHFFQUEyQixDQUFBLDREQUFxQixHQUFLLEVBQUMsT0FBTSwyREFBbUIsQ0FEOUQsQUFDK0QsQ0FBQztFREMxRyxDQUFBLEtBQUksRUFBSSxHQUFDO0FDRmIsQUFBQyxnQkFBb0IsQ0FBQSxPQUFNLEFBQUMsYUFBa0IsQ0FDdEMsQ0FBQSxpQkFBcUIsMEJBQTJCLENBQUEsaUJBQXFCLEdBQUssRUFBQyxPQUFNLGdCQUFtQixDQUQ5RCxBQUMrRCxDQUFDO0VER3ZHLE9BQUssRUNKWixFQUFDLGFBQW9CLENBQUEsT0FBTSxBQUFDLFVBQWtCLENBQ3RDLENBQUEsY0FBcUIsdUJBQTJCLENBQUEsY0FBcUIsR0FBSyxFQUFDLE9BQU0sYUFBbUIsQ0FEOUQsQUFDK0QsQ0FBQztTQUQ5RyxFQUFDLGlEQUFvQixDQUFBLE9BQU0s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cnVlLCBpdDp0cnVlICovXG5pbXBvcnQgJ3RyYWNldXIvYmluL3RyYWNldXItcnVudGltZSc7XG5sZXQgcmVnSXQgPSBpdDtcbmltcG9ydCAnbW9jaGF3YWl0JztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IHNsZWVwLCByZXRyeSwgcmV0cnlJbnRlcnZhbCwgbm9kZWlmeSwgbm9kZWlmeUFsbCB9IGZyb20gJy4uLy4uL2xpYi9lczUvbWFpbic7XG5cbmRlc2NyaWJlKCdzbGVlcCcsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCB3b3JrIGxpa2Ugc2V0VGltZW91dCcsIGFzeW5jICgpID0+IHtcbiAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBhd2FpdCBzbGVlcCgyMCk7XG4gICAgKERhdGUubm93KCkgLSBub3cpLnNob3VsZC5iZS5hYm92ZSgxOSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdyZXRyeScsICgpID0+IHtcbiAgbGV0IG9rRm5DYWxscyA9IDA7XG4gIGxldCBva0ZuID0gYXN5bmMgKHZhbDEsIHZhbDIpID0+IHtcbiAgICBhd2FpdCBzbGVlcCgxNSk7XG4gICAgb2tGbkNhbGxzKys7XG4gICAgcmV0dXJuIHZhbDEgKiB2YWwyO1xuICB9O1xuICBsZXQgYmFkRm5DYWxscyA9IDA7XG4gIGxldCBiYWRGbiA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBzbGVlcCgxNSk7XG4gICAgYmFkRm5DYWxscysrO1xuICAgIHRocm93IG5ldyBFcnJvcihcImJhZFwiKTtcbiAgfTtcbiAgbGV0IGV2ZW50dWFsbHlPa0ZuQ2FsbHMgPSAwO1xuICBsZXQgZXZlbnR1YWxseU9rRm4gPSBhc3luYyAodGltZXMpID0+IHtcbiAgICBhd2FpdCBzbGVlcCgxNSk7XG4gICAgZXZlbnR1YWxseU9rRm5DYWxscysrO1xuICAgIGlmIChldmVudHVhbGx5T2tGbkNhbGxzIDwgdGltZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBvayB5ZXRcIik7XG4gICAgfVxuICAgIHJldHVybiB0aW1lcyAqIHRpbWVzO1xuICB9O1xuICBsZXQgZXZlbnR1YWxseU9rTm9TbGVlcEZuID0gYXN5bmMgKHRpbWVzKSA9PiB7XG4gICAgZXZlbnR1YWxseU9rRm5DYWxscysrO1xuICAgIGlmIChldmVudHVhbGx5T2tGbkNhbGxzIDwgdGltZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBvayB5ZXRcIik7XG4gICAgfVxuICAgIHJldHVybiB0aW1lcyAqIHRpbWVzO1xuICB9O1xuICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmVzdWx0IG9mIGEgcGFzc2luZyBmdW5jdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCByZXMgPSBhd2FpdCByZXRyeSgzLCBva0ZuLCA1LCA0KTtcbiAgICByZXMuc2hvdWxkLmVxdWFsKDIwKTtcbiAgICAoRGF0ZS5ub3coKSAtIHN0YXJ0KS5zaG91bGQuYmUuYWJvdmUoMTQpO1xuICAgIG9rRm5DYWxscy5zaG91bGQuZXF1YWwoMSk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHJldHJ5IGEgZmFpbGluZyBmdW5jdGlvbiBhbmQgZXZlbnR1YWxseSB0aHJvdyB0aGUgc2FtZSBlcnInLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IGVyciA9IG51bGw7XG4gICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcmV0cnkoMywgYmFkRm4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVyciA9IGU7XG4gICAgfVxuICAgIHNob3VsZC5leGlzdChlcnIpO1xuICAgIGVyci5tZXNzYWdlLnNob3VsZC5lcXVhbCgnYmFkJyk7XG4gICAgYmFkRm5DYWxscy5zaG91bGQuZXF1YWwoMyk7XG4gICAgKERhdGUubm93KCkgLSBzdGFydCkuc2hvdWxkLmJlLmFib3ZlKDQ0KTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIHdpdGggYSBmdW5jdGlvbiB0aGF0IGV2ZW50dWFsbHkgcGFzc2VzJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBlcnIgPSBudWxsO1xuICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJldHJ5KDMsIGV2ZW50dWFsbHlPa0ZuLCA0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnIgPSBlO1xuICAgIH1cbiAgICBzaG91bGQuZXhpc3QoZXJyKTtcbiAgICBlcnIubWVzc2FnZS5zaG91bGQuZXF1YWwoJ25vdCBvayB5ZXQnKTtcbiAgICBldmVudHVhbGx5T2tGbkNhbGxzLnNob3VsZC5lcXVhbCgzKTtcbiAgICAoRGF0ZS5ub3coKSAtIHN0YXJ0KS5zaG91bGQuYmUuYWJvdmUoMzUpO1xuXG4gICAgLy8gcmVydW4gd2l0aCBvayBudW1iZXIgb2YgY2FsbHNcbiAgICBzdGFydCA9IERhdGUubm93KCk7XG4gICAgZXZlbnR1YWxseU9rRm5DYWxscyA9IDA7XG4gICAgbGV0IHJlcyA9IGF3YWl0IHJldHJ5KDMsIGV2ZW50dWFsbHlPa0ZuLCAzKTtcbiAgICBldmVudHVhbGx5T2tGbkNhbGxzLnNob3VsZC5lcXVhbCgzKTtcbiAgICByZXMuc2hvdWxkLmVxdWFsKDkpO1xuICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5hYm92ZSgzNSk7XG4gIH0pO1xuICBpdCgnaW4gc2xlZXAgbW9kZSwgc2hvdWxkIHJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSB3aXRoIGEgZnVuY3Rpb24gdGhhdCBldmVudHVhbGx5IHBhc3NlcycsIGFzeW5jICgpID0+IHtcbiAgICBldmVudHVhbGx5T2tGbkNhbGxzID0gMDtcbiAgICBsZXQgZXJyID0gbnVsbDtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCByZXRyeUludGVydmFsKDMsIDE1LCBldmVudHVhbGx5T2tOb1NsZWVwRm4sIDQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVyciA9IGU7XG4gICAgfVxuICAgIHNob3VsZC5leGlzdChlcnIpO1xuICAgIGVyci5tZXNzYWdlLnNob3VsZC5lcXVhbCgnbm90IG9rIHlldCcpO1xuICAgIGV2ZW50dWFsbHlPa0ZuQ2FsbHMuc2hvdWxkLmVxdWFsKDMpO1xuICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5hYm92ZSgzMCk7XG5cbiAgICAvLyByZXJ1biB3aXRoIG9rIG51bWJlciBvZiBjYWxsc1xuICAgIHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBldmVudHVhbGx5T2tGbkNhbGxzID0gMDtcbiAgICBsZXQgcmVzID0gYXdhaXQgcmV0cnlJbnRlcnZhbCgzLCAxNSwgZXZlbnR1YWxseU9rTm9TbGVlcEZuLCAzKTtcbiAgICBldmVudHVhbGx5T2tGbkNhbGxzLnNob3VsZC5lcXVhbCgzKTtcbiAgICByZXMuc2hvdWxkLmVxdWFsKDkpO1xuICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5hYm92ZSgzMCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdub2RlaWZ5QWxsJywgKCkgPT4ge1xuICBsZXQgYXN5bmNGbiA9IGFzeW5jICh2YWwpID0+IHtcbiAgICBhd2FpdCBzbGVlcCgxNSk7XG4gICAgcmV0dXJuIHZhbDtcbiAgfTtcbiAgbGV0IGFzeW5jRm4yID0gYXN5bmMgKHZhbCkgPT4ge1xuICAgIGF3YWl0IHNsZWVwKDE1KTtcbiAgICByZXR1cm4gW3ZhbCwgdmFsICsgdmFsXTtcbiAgfTtcbiAgbGV0IGJhZEFzeW5jRm4gPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgc2xlZXAoMTUpO1xuICAgIHRocm93IG5ldyBFcnJvcignYm9vJyk7XG4gIH07XG4gIGxldCBjYk1hcCA9IG5vZGVpZnlBbGwoe2FzeW5jRm4sIGFzeW5jRm4yLCBiYWRBc3luY0ZufSk7XG4gIHJlZ0l0KCdzaG91bGQgdHVybiBhc3luYyBmdW5jdGlvbnMgaW50byBub2RleSB0aGluZ3MnLCBkb25lID0+IHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIG5vZGVpZnkoYXN5bmNGbignZm9vJyksIChlcnIsIHZhbCwgdmFsMikgPT4ge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh2YWwyKTtcbiAgICAgIHZhbC5zaG91bGQuZXF1YWwoJ2ZvbycpO1xuICAgICAgKERhdGUubm93KCkgLSBzdGFydCkuc2hvdWxkLmJlLmFib3ZlKDE0KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJlZ0l0KCdzaG91bGQgdHVybiBhc3luYyBmdW5jdGlvbnMgaW50byBub2RleSB0aGluZ3MgdmlhIG5vZGVpZnlBbGwnLCBkb25lID0+IHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNiTWFwLmFzeW5jRm4oJ2ZvbycsIChlcnIsIHZhbCwgdmFsMikgPT4ge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh2YWwyKTtcbiAgICAgIHZhbC5zaG91bGQuZXF1YWwoJ2ZvbycpO1xuICAgICAgKERhdGUubm93KCkgLSBzdGFydCkuc2hvdWxkLmJlLmFib3ZlKDE0KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJlZ0l0KCdzaG91bGQgdHVybiBhc3luYyBmdW5jdGlvbnMgaW50byBub2RleSB0aGluZ3Mgd2l0aCBtdWx0IHBhcmFtcycsIGRvbmUgPT4ge1xuICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbm9kZWlmeShhc3luY0ZuMignZm9vJyksIChlcnIsIHZhbCkgPT4ge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgdmFsLnNob3VsZC5lcWwoWydmb28nLCAnZm9vZm9vJ10pO1xuICAgICAgKERhdGUubm93KCkgLSBzdGFydCkuc2hvdWxkLmJlLmFib3ZlKDE0KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJlZ0l0KCdzaG91bGQgaGFuZGxlIGVycm9ycyBjb3JyZWN0bHknLCBkb25lID0+IHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIG5vZGVpZnkoYmFkQXN5bmNGbignZm9vJyksIChlcnIsIHZhbCkgPT4ge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh2YWwpO1xuICAgICAgZXJyLm1lc3NhZ2Uuc2hvdWxkLmVxdWFsKCdib28nKTtcbiAgICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5hYm92ZSgxNCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdub2RlaWZ5QWxsJywgKCkgPT4ge1xuICBsZXQgYXN5bmNGbiA9IGFzeW5jICh2YWwpID0+IHtcbiAgICBhd2FpdCBzbGVlcCgxNSk7XG4gICAgcmV0dXJuIHZhbDtcbiAgfTtcbiAgbGV0IGFzeW5jRm4yID0gYXN5bmMgKHZhbCkgPT4ge1xuICAgIGF3YWl0IHNsZWVwKDE1KTtcbiAgICByZXR1cm4gW3ZhbCwgdmFsICsgdmFsXTtcbiAgfTtcbiAgbGV0IGJhZEFzeW5jRm4gPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgc2xlZXAoMTUpO1xuICAgIHRocm93IG5ldyBFcnJvcignYm9vJyk7XG4gIH07XG59KTtcbiIsIigkX19wbGFjZWhvbGRlcl9fMCA9IHJlcXVpcmUoJF9fcGxhY2Vob2xkZXJfXzEpLCBcbiAgICAgICAgJF9fcGxhY2Vob2xkZXJfXzIgJiYgJF9fcGxhY2Vob2xkZXJfXzMuX19lc01vZHVsZSAmJiAkX19wbGFjZWhvbGRlcl9fNCB8fCB7ZGVmYXVsdDogJF9fcGxhY2Vob2xkZXJfXzV9KSIsInJldHVybiAkX19wbGFjZWhvbGRlcl9fMChcbiAgICAgICAgICAgICAgJF9fcGxhY2Vob2xkZXJfXzEsIHRoaXMpOyIsIiR0cmFjZXVyUnVudGltZS5hc3luY1dyYXAiLCJmdW5jdGlvbigkY3R4KSB7XG4gICAgICB3aGlsZSAodHJ1ZSkgJF9fcGxhY2Vob2xkZXJfXzBcbiAgICB9IiwiUHJvbWlzZS5yZXNvbHZlKCRfX3BsYWNlaG9sZGVyX18wKS50aGVuKFxuICAgICAgICAgICAgICAkY3R4LmNyZWF0ZUNhbGxiYWNrKCRfX3BsYWNlaG9sZGVyX18xKSwgJGN0eC5lcnJiYWNrKTtcbiAgICAgICAgICByZXR1cm4iLCJyZXR1cm4gJGN0eC5lbmQoKSIsIiRjdHgucmV0dXJuVmFsdWUgPSAkX19wbGFjZWhvbGRlcl9fMCIsIiRjdHgudmFsdWUiLCIkY3R4LnB1c2hUcnkoXG4gICAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fMCxcbiAgICAgICAgICAgICRfX3BsYWNlaG9sZGVyX18xKTsiLCIkY3R4LnBvcFRyeSgpOyIsIlxuICAgICAgICAgICAgICAkY3R4LnBvcFRyeSgpO1xuICAgICAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fMCA9ICRjdHguc3RvcmVkRXhjZXB0aW9uOyJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNwZWNzLmpzIiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzEiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTgiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTIiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTciLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTUiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTYiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTQiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTMiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTkiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMjAiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMjEiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7Ozs7QUNEQSxBQUFDLDJEQUFvQixDQUFBLE9BQU0sQUFBQywrQkFBa0IsQ0FDdEMsQ0FBQSw0REFBcUIscUVBQTJCLENBQUEsNERBQXFCLEdBQUssRUFBQyxPQUFNLDJEQUFtQixDQUQ5RCxBQUMrRCxDQUFDO0VEQzFHLENBQUEsS0FBSSxFQUFJLEdBQUM7QUNGYixBQUFDLGdCQUFvQixDQUFBLE9BQU0sQUFBQyxhQUFrQixDQUN0QyxDQUFBLGlCQUFxQiwwQkFBMkIsQ0FBQSxpQkFBcUIsR0FBSyxFQUFDLE9BQU0sZ0JBQW1CLENBRDlELEFBQytELENBQUM7RURHdkcsT0FBSyxFQ0paLEVBQUMsYUFBb0IsQ0FBQSxPQUFNLEFBQUMsVUFBa0IsQ0FDdEMsQ0FBQSxjQUFxQix1QkFBMkIsQ0FBQSxjQUFxQixHQUFLLEVBQUMsT0FBTSxhQUFtQixDQUQ5RCxBQUMrRCxDQUFDO1NBRDlHLEVBQUMsaURBQW9CLENBQUEsT0FBTSxBQUFDLHNCQUFrQixDQUN0QyxDQUFBLGtEQUFxQiwyREFBMkIsQ0FBQSxrREFBcUIsR0FBSyxFQUFDLE9BQU0saURBQW1CLENBRDlELEFBQytELENBQUM7QURJckcsUUFBSTtBQUFHLFFBQUk7QUFBRyxnQkFBWTtBQUFHLFVBQU07QUFBRyxhQUFTO0FBQy9DLFdBQU87QUFFaEIsT0FBTyxBQUFDLENBQUMsT0FBTSxHQUFHLFNBQUEsQUFBQztBQUNqQixHQUFDLEFBQUMsQ0FBQyw2QkFBNEIsR0FBRyxTQUFNLEFBQUM7O0FFVDNDLFNBQU8sQ0NBUCxlQUFjLFVBQVUsQ0NBeEIsU0FBUyxJQUFHLENBQUc7QUFDVCxZQUFPLElBQUc7OztnQkpTRixDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUM7Ozs7QUtWdkIsa0JBQU0sUUFBUSxBQUFDLENMV0wsS0FBSSxBQUFDLENBQUMsRUFBQyxDQUFDLENLWGUsS0FBSyxBQUFDLENBQ3pCLElBQUcsZUFBZSxBQUFDLEdBQWtCLENBQUcsQ0FBQSxJQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3pELGtCQUFLOztBTFVYLFlBQUMsSUFBRyxJQUFJLEFBQUMsRUFBQyxDQUFBLENBQUksSUFBRSxDQUFDLE9BQU8sR0FBRyxNQUFNLEFBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQzs7OztBTVoxQyxpQkFBTyxDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUMsQ0FBQTs7QUZDbUIsSUFDL0IsQ0ZENkIsS0FBRyxDQUFDLENBQUM7RUZZcEMsRUFBQyxDQUFDO0FBQ0osRUFBQyxDQUFDO0FBRUYsT0FBTyxBQUFDLENBQUMsT0FBTSxHQUFHLFNBQUEsQUFBQztJQUNiLENBQUEsU0FBUSxFQUFJLEVBQUE7SUFDWixDQUFBLElBQUcsSUFBSSxTQUFPLElBQUcsQ0FBRyxDQUFBLElBQUc7QUVsQjdCLFNBQU8sQ0NBUCxlQUFjLFVBQVUsQ0NBeEIsU0FBUyxJQUFHLENBQUc7QUFDVCxZQUFPLElBQUc7OztBQ0RoQixrQkFBTSxRQUFRLEFBQUMsQ0xtQkwsS0FBSSxBQUFDLENBQUMsRUFBQyxDQUFDLENLbkJlLEtBQUssQUFBQyxDQUN6QixJQUFHLGVBQWUsQUFBQyxHQUFrQixDQUFHLENBQUEsSUFBRyxRQUFRLENBQUMsQ0FBQztBQUN6RCxrQkFBSzs7QUxrQlgsb0JBQVEsRUFBRSxDQUFDOzs7O0FPcEJmLGVBQUcsWUFBWSxFUHFCSixDQUFBLElBQUcsRUFBSSxLT3JCaUIsQVBxQmQsQ09yQmM7Ozs7Ozs7QURBbkMsaUJBQU8sQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDLENBQUE7O0FGQ21CLElBQy9CLENGRDZCLEtBQUcsQ0FBQyxDQUFDO0VGcUJwQyxDQUFBO0lBQ0ksQ0FBQSxVQUFTLEVBQUksRUFBQTtJQUNiLENBQUEsS0FBSSxJQUFJLFNBQU0sQUFBQztBRXhCckIsU0FBTyxDQ0FQLGVBQWMsVUFBVSxDQ0F4QixTQUFTLElBQUcsQ0FBRztBQUNULFlBQU8sSUFBRzs7O0FDRGhCLGtCQUFNLFFBQVEsQUFBQyxDTHlCTCxLQUFJLEFBQUMsQ0FBQyxFQUFDLENBQUMsQ0t6QmUsS0FBSyxBQUFDLENBQ3pCLElBQUcsZUFBZSxBQUFDLEdBQWtCLENBQUcsQ0FBQSxJQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3pELGtCQUFLOztBTHdCWCxxQkFBUyxFQUFFLENBQUM7QUFDWixnQkFBTSxJQUFJLE1BQUksQUFBQyxDQUFDLEtBQUksQ0FBQyxDQUFDOzs7O0FNM0IxQixpQkFBTyxDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUMsQ0FBQTs7QUZDbUIsSUFDL0IsQ0ZENkIsS0FBRyxDQUFDLENBQUM7RUYyQnBDLENBQUE7SUFDSSxDQUFBLG1CQUFrQixFQUFJLEVBQUE7SUFDdEIsQ0FBQSxjQUFhLElBQUksU0FBTyxLQUFJO0FFOUJsQyxTQUFPLENDQVAsZUFBYyxVQUFVLENDQXhCLFNBQVMsSUFBRyxDQUFHO0FBQ1QsWUFBTyxJQUFHOzs7QUNEaEIsa0JBQU0sUUFBUSxBQUFDLENMK0JMLEtBQUksQUFBQyxDQUFDLEVBQUMsQ0FBQyxDSy9CZSxLQUFLLEFBQUMsQ0FDekIsSUFBRyxlQUFlLEFBQUMsR0FBa0IsQ0FBRyxDQUFBLElBQUcsUUFBUSxDQUFDLENBQUM7QUFDekQsa0JBQUs7O0FMOEJYLDhCQUFrQixFQUFFLENBQUM7QUFDckIsZUFBSSxtQkFBa0IsRUFBSSxNQUFJLENBQUc7QUFDL0Isa0JBQU0sSUFBSSxNQUFJLEFBQUMsQ0FBQyxZQUFXLENBQUMsQ0FBQztZQUMvQjtBQUFBOzs7QU9uQ0osZUFBRyxZQUFZLEVQb0NKLENBQUEsS0FBSSxFQUFJLE1PcENnQixBUG9DWixDT3BDWTs7Ozs7OztBREFuQyxpQkFBTyxDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUMsQ0FBQTs7QUZDbUIsSUFDL0IsQ0ZENkIsS0FBRyxDQUFDLENBQUM7RUZvQ3BDLENBQUE7SUFDSSxDQUFBLHFCQUFvQixJQUFJLFNBQU8sS0FBSTtBRXRDekMsU0FBTyxDQ0FQLGVBQWMsVUFBVSxDQ0F4QixTQUFTLElBQUcsQ0FBRztBQUNULFlBQU8sSUFBRzs7O0FKc0NaLDhCQUFrQixFQUFFLENBQUM7QUFDckIsZUFBSSxtQkFBa0IsRUFBSSxNQUFJLENBQUc7QUFDL0Isa0JBQU0sSUFBSSxNQUFJLEFBQUMsQ0FBQyxZQUFXLENBQUMsQ0FBQztZQUMvQjtBQUFBOzs7QU8xQ0osZUFBRyxZQUFZLEVQMkNKLENBQUEsS0FBSSxFQUFJLE1PM0NnQixBUDJDWixDTzNDWTs7Ozs7OztBREFuQyxpQkFBTyxDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUMsQ0FBQTs7QUZDbUIsSUFDL0IsQ0ZENkIsS0FBRyxDQUFDLENBQUM7RUYyQ3BDLENBQUE7QUFDQSxHQUFDLEFBQUMsQ0FBQyxnREFBK0MsR0FBRyxTQUFNLEFBQUM7OztBRTdDOUQsU0FBTyxDQ0FQLGVBQWMsVUFBVSxDQ0F4QixTQUFTLElBQUcsQ0FBRztBQUNULFlBQU8sSUFBRzs7O2tCSjZDQSxDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUM7Ozs7QUs5Q3pCLGtCQUFNLFFBQVEsQUFBQyxDTCtDSyxLQUFJLEFBQUMsQ0FBQyxDQUFBLENBQUcsS0FBRyxDQUFHLEVBQUEsQ0FBRyxFQUFBLENBQUMsQ0svQ04sS0FBSyxBQUFDLENBQ3pCLElBQUcsZUFBZSxBQUFDLEdBQWtCLENBQUcsQ0FBQSxJQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3pELGtCQUFLOztnQkdGZixDQUFBLElBQUcsTUFBTTs7OztBUmdETCxjQUFFLE9BQU8sTUFBTSxBQUFDLENBQUMsRUFBQyxDQUFDLENBQUM7QUFDcEIsWUFBQyxJQUFHLElBQUksQUFBQyxFQUFDLENBQUEsQ0FBSSxNQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO0FBQ3hDLG9CQUFRLE9BQU8sTUFBTSxBQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7Ozs7QU1sRDdCLGlCQUFPLENBQUEsSUFBRyxJQUFJLEFBQUMsRUFBQyxDQUFBOztBRkNtQixJQUMvQixDRkQ2QixLQUFHLENBQUMsQ0FBQztFRmtEcEMsRUFBQyxDQUFDO0FBQ0YsR0FBQyxBQUFDLENBQUMsbUVBQWtFLEdBQUcsU0FBTSxBQUFDOzs7O0FFcERqRixTQUFPLENDQVAsZUFBYyxVQUFVLENDQXhCLFNBQVMsSUFBRyxDQUFHO0FBQ1QsWUFBTyxJQUFHOzs7Z0JKb0RGLEtBQUc7a0JBQ0QsQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDOzs7O0FTdER6QixlQUFHLFFBQVEsQUFBQyxTQUVpQixDQUFDOzs7O0FKRjlCLGtCQUFNLFFBQVEsQUFBQyxDTHdESCxLQUFJLEFBQUMsQ0FBQyxDQUFBLENBQUcsTUFBSSxDQUFDLENLeERPLEtBQUssQUFBQyxDQUN6QixJQUFHLGVBQWUsQUFBQyxHQUFrQixDQUFHLENBQUEsSUFBRyxRQUFRLENBQUMsQ0FBQztBQUN6RCxrQkFBSzs7QUtGZixlQUFHLE9BQU8sQUFBQyxFQUFDLENBQUM7Ozs7QUNDQyxlQUFHLE9BQU8sQUFBQyxFQUFDLENBQUM7QUFDYixjQUFvQixDQUFBLElBQUcsZ0JBQWdCLENBQUM7Ozs7QVh3RGhELGNBQUUsRUFBSSxFQUFBLENBQUM7Ozs7QUFFVCxpQkFBSyxNQUFNLEFBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUNqQixjQUFFLFFBQVEsT0FBTyxNQUFNLEFBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQztBQUMvQixxQkFBUyxPQUFPLE1BQU0sQUFBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQzFCLFlBQUMsSUFBRyxJQUFJLEFBQUMsRUFBQyxDQUFBLENBQUksTUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLEFBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQzs7OztBTS9ENUMsaUJBQU8sQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDLENBQUE7O0FGQ21CLElBQy9CLENGRDZCLEtBQUcsQ0FBQyxDQUFDO0VGK0RwQyxFQUFDLENBQUM7QUFDRixHQUFDLEFBQUMsQ0FBQyx3RUFBdUUsR0FBRyxTQUFNLEFBQUM7Ozs7O0FFakV0RixTQUFPLENDQVAsZUFBYyxVQUFVLENDQXhCLFNBQVMsSUFBRyxDQUFHO0FBQ1QsWUFBTyxJQUFHOzs7Z0JKaUVGLEtBQUc7a0JBQ0QsQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDOzs7O0FTbkV6QixlQUFHLFFBQVEsQUFBQyxTQUVpQixDQUFDOzs7O0FKRjlCLGtCQUFNLFFBQVEsQUFBQyxDTHFFSCxLQUFJLEFBQUMsQ0FBQyxDQUFBLENBQUcsZUFBYSxDQUFHLEVBQUEsQ0FBQyxDS3JFTCxLQUFLLEFBQUMsQ0FDekIsSUFBRyxlQUFlLEFBQUMsR0FBa0IsQ0FBRyxDQUFBLElBQUcsUUFBUSxDQUFDLENBQUM7QUFDekQsa0JBQUs7O0FLRmYsZUFBRyxPQUFPLEFBQUMsRUFBQyxDQUFDOzs7O0FDQ0MsZUFBRyxPQUFPLEFBQUMsRUFBQyxDQUFDO0FBQ2IsY0FBb0IsQ0FBQSxJQUFHLGdCQUFnQixDQUFDOzs7O0FYcUVoRCxjQUFFLEVBQUksRUFBQSxDQUFDOzs7O0FBRVQsaUJBQUssTUFBTSxBQUFDLENBQUMsR0FBRSxDQUFDLENBQUM7QUFDakIsY0FBRSxRQUFRLE9BQU8sTUFBTSxBQUFDLENBQUMsWUFBVyxDQUFDLENBQUM7QUFDdEMsOEJBQWtCLE9BQU8sTUFBTSxBQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFDbkMsWUFBQyxJQUFHLElBQUksQUFBQyxFQUFDLENBQUEsQ0FBSSxNQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO0FBR3hDLGdCQUFJLEVBQUksQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDLENBQUM7QUFDbEIsOEJBQWtCLEVBQUksRUFBQSxDQUFDOzs7O0FLaEYzQixrQkFBTSxRQUFRLEFBQUMsQ0xpRkssS0FBSSxBQUFDLENBQUMsQ0FBQSxDQUFHLGVBQWEsQ0FBRyxFQUFBLENBQUMsQ0tqRmIsS0FBSyxBQUFDLENBQ3pCLElBQUcsZUFBZSxBQUFDLElBQWtCLENBQUcsQ0FBQSxJQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3pELGtCQUFLOztnQkdGZixDQUFBLElBQUcsTUFBTTs7OztBUmtGTCw4QkFBa0IsT0FBTyxNQUFNLEFBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUNuQyxjQUFFLE9BQU8sTUFBTSxBQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFDbkIsWUFBQyxJQUFHLElBQUksQUFBQyxFQUFDLENBQUEsQ0FBSSxNQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDOzs7O0FNcEY1QyxpQkFBTyxDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUMsQ0FBQTs7QUZDbUIsSUFDL0IsQ0ZENkIsS0FBRyxDQUFDLENBQUM7RUZvRnBDLEVBQUMsQ0FBQztBQUNGLEdBQUMsQUFBQyxDQUFDLHVGQUFzRixHQUFHLFNBQU0sQUFBQzs7Ozs7QUV0RnJHLFNBQU8sQ0NBUCxlQUFjLFVBQVUsQ0NBeEIsU0FBUyxJQUFHLENBQUc7QUFDVCxZQUFPLElBQUc7OztBSnNGWiw4QkFBa0IsRUFBSSxFQUFBLENBQUM7Z0JBQ2IsS0FBRztrQkFDRCxDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUM7Ozs7QVN6RnpCLGVBQUcsUUFBUSxBQUFDLFNBRWlCLENBQUM7Ozs7QUpGOUIsa0JBQU0sUUFBUSxBQUFDLENMMkZILGFBQVksQUFBQyxDQUFDLENBQUEsQ0FBRyxHQUFDLENBQUcsc0JBQW9CLENBQUcsRUFBQSxDQUFDLENLM0Z4QixLQUFLLEFBQUMsQ0FDekIsSUFBRyxlQUFlLEFBQUMsR0FBa0IsQ0FBRyxDQUFBLElBQUcsUUFBUSxDQUFDLENBQUM7QUFDekQsa0JBQUs7O0FLRmYsZUFBRyxPQUFPLEFBQUMsRUFBQyxDQUFDOzs7O0FDQ0MsZUFBRyxPQUFPLEFBQUMsRUFBQyxDQUFDO0FBQ2IsY0FBb0IsQ0FBQSxJQUFHLGdCQUFnQixDQUFDOzs7O0FYMkZoRCxjQUFFLEVBQUksRUFBQSxDQUFDOzs7O0FBRVQsaUJBQUssTUFBTSxBQUFDLENBQUMsR0FBRSxDQUFDLENBQUM7QUFDakIsY0FBRSxRQUFRLE9BQU8sTUFBTSxBQUFDLENBQUMsWUFBVyxDQUFDLENBQUM7QUFDdEMsOEJBQWtCLE9BQU8sTUFBTSxBQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFDbkMsWUFBQyxJQUFHLElBQUksQUFBQyxFQUFDLENBQUEsQ0FBSSxNQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO0FBR3hDLGdCQUFJLEVBQUksQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDLENBQUM7QUFDbEIsOEJBQWtCLEVBQUksRUFBQSxDQUFDOzs7O0FLdEczQixrQkFBTSxRQUFRLEFBQUMsQ0x1R0ssYUFBWSxBQUFDLENBQUMsQ0FBQSxDQUFHLEdBQUMsQ0FBRyxzQkFBb0IsQ0FBRyxFQUFBLENBQUMsQ0t2R2hDLEtBQUssQUFBQyxDQUN6QixJQUFHLGVBQWUsQUFBQyxJQUFrQixDQUFHLENBQUEsSUFBRyxRQUFRLENBQUMsQ0FBQztBQUN6RCxrQkFBSzs7Z0JHRmYsQ0FBQSxJQUFHLE1BQU07Ozs7QVJ3R0wsOEJBQWtCLE9BQU8sTUFBTSxBQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFDbkMsY0FBRSxPQUFPLE1BQU0sQUFBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQ25CLFlBQUMsSUFBRyxJQUFJLEFBQUMsRUFBQyxDQUFBLENBQUksTUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLEFBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQzs7OztBTTFHNUMsaUJBQU8sQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDLENBQUE7O0FGQ21CLElBQy9CLENGRDZCLEtBQUcsQ0FBQyxDQUFDO0VGMEdwQyxFQUFDLENBQUM7QUFDSixFQUFDLENBQUM7QUFFRixPQUFPLEFBQUMsQ0FBQyxZQUFXLEdBQUcsU0FBQSxBQUFDO0lBQ2xCLENBQUEsT0FBTSxJQUFJLFNBQU8sR0FBRTtBRS9HekIsU0FBTyxDQ0FQLGVBQWMsVUFBVSxDQ0F4QixTQUFTLElBQUcsQ0FBRztBQUNULFlBQU8sSUFBRzs7O0FDRGhCLGtCQUFNLFFBQVEsQUFBQyxDTGdITCxLQUFJLEFBQUMsQ0FBQyxFQUFDLENBQUMsQ0toSGUsS0FBSyxBQUFDLENBQ3pCLElBQUcsZUFBZSxBQUFDLEdBQWtCLENBQUcsQ0FBQSxJQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3pELGtCQUFLOztBRUZmLGVBQUcsWUFBWSxFUGlISixJT2pId0IsQVBpSHRCLENPakhzQjs7Ozs7OztBREFuQyxpQkFBTyxDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUMsQ0FBQTs7QUZDbUIsSUFDL0IsQ0ZENkIsS0FBRyxDQUFDLENBQUM7RUZpSHBDLENBQUE7SUFDSSxDQUFBLFFBQU8sSUFBSSxTQUFPLEdBQUU7QUVuSDFCLFNBQU8sQ0NBUCxlQUFjLFVBQVUsQ0NBeEIsU0FBUyxJQUFHLENBQUc7QUFDVCxZQUFPLElBQUc7OztBQ0RoQixrQkFBTSxRQUFRLEFBQUMsQ0xvSEwsS0FBSSxBQUFDLENBQUMsRUFBQyxDQUFDLENLcEhlLEtBQUssQUFBQyxDQUN6QixJQUFHLGVBQWUsQUFBQyxHQUFrQixDQUFHLENBQUEsSUFBRyxRQUFRLENBQUMsQ0FBQztBQUN6RCxrQkFBSzs7QUVGZixlQUFHLFlBQVksRVBxSEosRUFBQyxHQUFFLENBQUcsQ0FBQSxHQUFFLEVBQUksSUFBRSxDT3JIVSxBUHFIVCxDT3JIUzs7Ozs7OztBREFuQyxpQkFBTyxDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUMsQ0FBQTs7QUZDbUIsSUFDL0IsQ0ZENkIsS0FBRyxDQUFDLENBQUM7RUZxSHBDLENBQUE7SUFDSSxDQUFBLFVBQVMsSUFBSSxTQUFNLEFBQUM7QUV2SDFCLFNBQU8sQ0NBUCxlQUFjLFVBQVUsQ0NBeEIsU0FBUyxJQUFHLENBQUc7QUFDVCxZQUFPLElBQUc7OztBQ0RoQixrQkFBTSxRQUFRLEFBQUMsQ0x3SEwsS0FBSSxBQUFDLENBQUMsRUFBQyxDQUFDLENLeEhlLEtBQUssQUFBQyxDQUN6QixJQUFHLGVBQWUsQUFBQyxHQUFrQixDQUFHLENBQUEsSUFBRyxRQUFRLENBQUMsQ0FBQztBQUN6RCxrQkFBSzs7QUx1SFgsZ0JBQU0sSUFBSSxNQUFJLEFBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQzs7OztBTXpIMUIsaUJBQU8sQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDLENBQUE7O0FGQ21CLElBQy9CLENGRDZCLEtBQUcsQ0FBQyxDQUFDO0VGeUhwQyxDQUFBO0lBQ0ksQ0FBQSxLQUFJLEVBQUksQ0FBQSxVQUFTLEFBQUMsQ0FBQztBQUFDLFVBQU0sQ0FBTixRQUFNO0FBQUcsV0FBTyxDQUFQLFNBQU87QUFBRyxhQUFTLENBQVQsV0FBUztBQUFBLEVBQUMsQ0FBQztBQUN0RCxNQUFJLEFBQUMsQ0FBQywrQ0FBOEMsR0FBRyxTQUFBLElBQUc7TUFDcEQsQ0FBQSxLQUFJLEVBQUksQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDO0FBQ3JCLFVBQU0sQUFBQyxDQUFDLE9BQU0sQUFBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLFNBQUMsR0FBRSxDQUFHLENBQUEsR0FBRSxDQUFHLENBQUEsSUFBRyxDQUFNO0FBQzFDLFdBQUssSUFBSSxNQUFNLEFBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUNyQixXQUFLLElBQUksTUFBTSxBQUFDLENBQUMsSUFBRyxDQUFDLENBQUM7QUFDdEIsUUFBRSxPQUFPLE1BQU0sQUFBQyxDQUFDLEtBQUksQ0FBQyxDQUFDO0FBQ3ZCLE1BQUMsSUFBRyxJQUFJLEFBQUMsRUFBQyxDQUFBLENBQUksTUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLEFBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQztBQUN4QyxTQUFHLEFBQUMsRUFBQyxDQUFDO0lBQ1IsRUFBQyxDQUFDO0VBQ0osRUFBQyxDQUFDO0FBQ0YsTUFBSSxBQUFDLENBQUMsOERBQTZELEdBQUcsU0FBQSxJQUFHO01BQ25FLENBQUEsS0FBSSxFQUFJLENBQUEsSUFBRyxJQUFJLEFBQUMsRUFBQztBQUNyQixRQUFJLFFBQVEsQUFBQyxDQUFDLEtBQUksR0FBRyxTQUFDLEdBQUUsQ0FBRyxDQUFBLEdBQUUsQ0FBRyxDQUFBLElBQUcsQ0FBTTtBQUN2QyxXQUFLLElBQUksTUFBTSxBQUFDLENBQUMsR0FBRSxDQUFDLENBQUM7QUFDckIsV0FBSyxJQUFJLE1BQU0sQUFBQyxDQUFDLElBQUcsQ0FBQyxDQUFDO0FBQ3RCLFFBQUUsT0FBTyxNQUFNLEFBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQztBQUN2QixNQUFDLElBQUcsSUFBSSxBQUFDLEVBQUMsQ0FBQSxDQUFJLE1BQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxBQUFDLENBQUMsRUFBQyxDQUFDLENBQUM7QUFDeEMsU0FBRyxBQUFDLEVBQUMsQ0FBQztJQUNSLEVBQUMsQ0FBQztFQUNKLEVBQUMsQ0FBQztBQUNGLE1BQUksQUFBQyxDQUFDLGdFQUErRCxHQUFHLFNBQUEsSUFBRztNQUNyRSxDQUFBLEtBQUksRUFBSSxDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUM7QUFDckIsVUFBTSxBQUFDLENBQUMsUUFBTyxBQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsU0FBQyxHQUFFLENBQUcsQ0FBQSxHQUFFLENBQU07QUFDckMsV0FBSyxJQUFJLE1BQU0sQUFBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQ3JCLFFBQUUsT0FBTyxJQUFJLEFBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBRyxTQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLE1BQUMsSUFBRyxJQUFJLEFBQUMsRUFBQyxDQUFBLENBQUksTUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLEFBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQztBQUN4QyxTQUFHLEFBQUMsRUFBQyxDQUFDO0lBQ1IsRUFBQyxDQUFDO0VBQ0osRUFBQyxDQUFDO0FBQ0YsTUFBSSxBQUFDLENBQUMsZ0NBQStCLEdBQUcsU0FBQSxJQUFHO01BQ3JDLENBQUEsS0FBSSxFQUFJLENBQUEsSUFBRyxJQUFJLEFBQUMsRUFBQztBQUNyQixVQUFNLEFBQUMsQ0FBQyxVQUFTLEFBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxTQUFDLEdBQUUsQ0FBRyxDQUFBLEdBQUUsQ0FBTTtBQUN2QyxXQUFLLElBQUksTUFBTSxBQUFDLENBQUMsR0FBRSxDQUFDLENBQUM7QUFDckIsUUFBRSxRQUFRLE9BQU8sTUFBTSxBQUFDLENBQUMsS0FBSSxDQUFDLENBQUM7QUFDL0IsTUFBQyxJQUFHLElBQUksQUFBQyxFQUFDLENBQUEsQ0FBSSxNQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO0FBQ3hDLFNBQUcsQUFBQyxFQUFDLENBQUM7SUFDUixFQUFDLENBQUM7RUFDSixFQUFDLENBQUM7QUFDSixFQUFDLENBQUM7QUFFRixPQUFPLEFBQUMsQ0FBQyxZQUFXLEdBQUcsU0FBQSxBQUFDO0lBQ2xCLENBQUEsT0FBTSxJQUFJLFNBQU8sR0FBRTtBRXJLekIsU0FBTyxDQ0FQLGVBQWMsVUFBVSxDQ0F4QixTQUFTLElBQUcsQ0FBRztBQUNULFlBQU8sSUFBRzs7O0FDRGhCLGtCQUFNLFFBQVEsQUFBQyxDTHNLTCxLQUFJLEFBQUMsQ0FBQyxFQUFDLENBQUMsQ0t0S2UsS0FBSyxBQUFDLENBQ3pCLElBQUcsZUFBZSxBQUFDLEdBQWtCLENBQUcsQ0FBQSxJQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3pELGtCQUFLOztBRUZmLGVBQUcsWUFBWSxFUHVLSixJT3ZLd0IsQVB1S3RCLENPdktzQjs7Ozs7OztBREFuQyxpQkFBTyxDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUMsQ0FBQTs7QUZDbUIsSUFDL0IsQ0ZENkIsS0FBRyxDQUFDLENBQUM7RUZ1S3BDLENBQUE7SUFDSSxDQUFBLFFBQU8sSUFBSSxTQUFPLEdBQUU7QUV6SzFCLFNBQU8sQ0NBUCxlQUFjLFVBQVUsQ0NBeEIsU0FBUyxJQUFHLENBQUc7QUFDVCxZQUFPLElBQUc7OztBQ0RoQixrQkFBTSxRQUFRLEFBQUMsQ0wwS0wsS0FBSSxBQUFDLENBQUMsRUFBQyxDQUFDLENLMUtlLEtBQUssQUFBQyxDQUN6QixJQUFHLGVBQWUsQUFBQyxHQUFrQixDQUFHLENBQUEsSUFBRyxRQUFRLENBQUMsQ0FBQztBQUN6RCxrQkFBSzs7QUVGZixlQUFHLFlBQVksRVAyS0osRUFBQyxHQUFFLENBQUcsQ0FBQSxHQUFFLEVBQUksSUFBRSxDTzNLVSxBUDJLVCxDTzNLUzs7Ozs7OztBREFuQyxpQkFBTyxDQUFBLElBQUcsSUFBSSxBQUFDLEVBQUMsQ0FBQTs7QUZDbUIsSUFDL0IsQ0ZENkIsS0FBRyxDQUFDLENBQUM7RUYyS3BDLENBQUE7SUFDSSxDQUFBLFVBQVMsSUFBSSxTQUFNLEFBQUM7QUU3SzFCLFNBQU8sQ0NBUCxlQUFjLFVBQVUsQ0NBeEIsU0FBUyxJQUFHLENBQUc7QUFDVCxZQUFPLElBQUc7OztBQ0RoQixrQkFBTSxRQUFRLEFBQUMsQ0w4S0wsS0FBSSxBQUFDLENBQUMsRUFBQyxDQUFDLENLOUtlLEtBQUssQUFBQyxDQUN6QixJQUFHLGVBQWUsQUFBQyxHQUFrQixDQUFHLENBQUEsSUFBRyxRQUFRLENBQUMsQ0FBQztBQUN6RCxrQkFBSzs7QUw2S1gsZ0JBQU0sSUFBSSxNQUFJLEFBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQzs7OztBTS9LMUIsaUJBQU8sQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDLENBQUE7O0FGQ21CLElBQy9CLENGRDZCLEtBQUcsQ0FBQyxDQUFDO0VGK0twQyxDQUFBO0FBQ0YsRUFBQyxDQUFDO0FBRUYsT0FBTyxBQUFDLENBQUMsVUFBUyxHQUFHLFNBQUEsQUFBQztJQUNoQixDQUFBLE9BQU0sSUFBSSxTQUFPLEdBQUU7QUVwTHpCLFNBQU8sQ0NBUCxlQUFjLFVBQVUsQ0NBeEIsU0FBUyxJQUFHLENBQUc7QUFDVCxZQUFPLElBQUc7OztBQ0RoQixrQkFBTSxRQUFRLEFBQUMsQ0xxTEwsS0FBSSxBQUFDLENBQUMsRUFBQyxDQUFDLENLckxlLEtBQUssQUFBQyxDQUN6QixJQUFHLGVBQWUsQUFBQyxHQUFrQixDQUFHLENBQUEsSUFBRyxRQUFRLENBQUMsQ0FBQztBQUN6RCxrQkFBSzs7QUVGZixlQUFHLFlBQVksRVBzTEosSU90THdCLEFQc0x0QixDT3RMc0I7Ozs7Ozs7QURBbkMsaUJBQU8sQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDLENBQUE7O0FGQ21CLElBQy9CLENGRDZCLEtBQUcsQ0FBQyxDQUFDO0VGc0xwQyxDQUFBO0lBQ0ksQ0FBQSxVQUFTLElBQUksU0FBTSxBQUFDO0FFeEwxQixTQUFPLENDQVAsZUFBYyxVQUFVLENDQXhCLFNBQVMsSUFBRyxDQUFHO0FBQ1QsWUFBTyxJQUFHOzs7QUNEaEIsa0JBQU0sUUFBUSxBQUFDLENMeUxMLEtBQUksQUFBQyxDQUFDLEVBQUMsQ0FBQyxDS3pMZSxLQUFLLEFBQUMsQ0FDekIsSUFBRyxlQUFlLEFBQUMsR0FBa0IsQ0FBRyxDQUFBLElBQUcsUUFBUSxDQUFDLENBQUM7QUFDekQsa0JBQUs7O0FMd0xYLGdCQUFNLElBQUksTUFBSSxBQUFDLENBQUMsS0FBSSxDQUFDLENBQUM7Ozs7QU0xTDFCLGlCQUFPLENBQUEsSUFBRyxJQUFJLEFBQUMsRUFBQyxDQUFBOztBRkNtQixJQUMvQixDRkQ2QixLQUFHLENBQUMsQ0FBQztFRjBMcEMsQ0FBQTtBQUNBLEdBQUMsQUFBQyxDQUFDLHFEQUFvRCxHQUFHLFNBQU0sQUFBQzs7Ozs7OztBRTVMbkUsU0FBTyxDQ0FQLGVBQWMsVUFBVSxDQ0F4QixTQUFTLElBQUcsQ0FBRztBQUNULFlBQU8sSUFBRzs7O2lCSjRMRCxFQUFDLENBQUEsQ0FBRyxFQUFBLENBQUcsRUFBQSxDQUFDO3FCQUNKLEdBQUM7a0JBQ0osQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDO3NCWTdMUixDWjhMQyxJQUFHLENZOUxjLE1BQUssU0FBUyxDQUFDLEFBQUMsRUFBQyxDQUV2QyxFQUFDLENBQUMsTUFBb0IsQ0FBQSxTQUFxQixBQUFDLEVBQUMsQ0FBQyxLQUFLOzs7Ozs7QVo0THhDO0FBQ2xCLDJCQUFPLEtBQUssQUFBQyxDQUFDLE9BQU0sQUFBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7a0JBQzNCOzs7Ozs7O0FLbE1KLGtCQUFNLFFBQVEsQUFBQyxDTG1NSyxRQUFPLEFBQUMsQ0FBQyxRQUFPLENBQUMsQ0tuTUosS0FBSyxBQUFDLENBQ3pCLElBQUcsZUFBZSxBQUFDLEdBQWtCLENBQUcsQ0FBQSxJQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3pELGtCQUFLOztnQkdGZixDQUFBLElBQUcsTUFBTTs7OztBUm9NTCxZQUFDLElBQUcsSUFBSSxBQUFDLEVBQUMsQ0FBQSxDQUFJLE1BQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxBQUFDLENBQUMsRUFBQyxDQUFDLENBQUM7QUFDeEMsWUFBQyxJQUFHLElBQUksQUFBQyxFQUFDLENBQUEsQ0FBSSxNQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO0FBQ3hDLGNBQUUsS0FBSyxBQUFDLEVBQUMsT0FBTyxJQUFJLEFBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRyxFQUFBLENBQUcsRUFBQSxDQUFDLENBQUMsQ0FBQzs7OztBTXRNcEMsaUJBQU8sQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDLENBQUE7O0FGQ21CLElBQy9CLENGRDZCLEtBQUcsQ0FBQyxDQUFDO0VGc01wQyxFQUFDLENBQUM7QUFDRixHQUFDLEFBQUMsQ0FBQyxrQ0FBaUMsR0FBRyxTQUFNLEFBQUM7Ozs7Ozs7OztBRXhNaEQsU0FBTyxDQ0FQLGVBQWMsVUFBVSxDQ0F4QixTQUFTLElBQUcsQ0FBRztBQUNULFlBQU8sSUFBRzs7O2lCSndNRCxFQUFDLENBQUEsQ0FBRyxFQUFBLENBQUcsRUFBQSxDQUFDO3FCQUNKLEdBQUM7a0JBQ0osQ0FBQSxJQUFHLElBQUksQUFBQyxFQUFDO3NCWXpNUixDWjBNQyxJQUFHLENZMU1jLE1BQUssU0FBUyxDQUFDLEFBQUMsRUFBQyxDQUV2QyxFQUFDLENBQUMsTUFBb0IsQ0FBQSxTQUFxQixBQUFDLEVBQUMsQ0FBQyxLQUFLOzs7Ozs7QVp3TXhDO0FBQ2xCLDJCQUFPLEtBQUssQUFBQyxDQUFDLE9BQU0sQUFBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7a0JBQzNCOzs7O0FBQ0EsbUJBQU8sS0FBSyxBQUFDLENBQUMsVUFBUyxBQUFDLEVBQUMsQ0FBQyxDQUFDO2dCQUNqQixLQUFHO2dCQUNILEdBQUM7Ozs7QVNqTmYsZUFBRyxRQUFRLEFBQUMsU0FFaUIsQ0FBQzs7OztBSkY5QixrQkFBTSxRQUFRLEFBQUMsQ0xtTkcsUUFBTyxBQUFDLENBQUMsUUFBTyxDQUFDLENLbk5GLEtBQUssQUFBQyxDQUN6QixJQUFHLGVBQWUsQUFBQyxHQUFrQixDQUFHLENBQUEsSUFBRyxRQUFRLENBQUMsQ0FBQztBQUN6RCxrQkFBSzs7QUxpTlQsY0FBRSxFUW5OUixDQUFBLElBQUcsTUFBTSxBUm1OMEIsQ0FBQTs7OztBVW5ObkMsZUFBRyxPQUFPLEFBQUMsRUFBQyxDQUFDOzs7O0FDQ0MsZUFBRyxPQUFPLEFBQUMsRUFBQyxDQUFDO0FBQ2IsY0FBb0IsQ0FBQSxJQUFHLGdCQUFnQixDQUFDOzs7O0FYbU5oRCxjQUFFLEVBQUksRUFBQSxDQUFDOzs7O0FBRVQsWUFBQyxJQUFHLElBQUksQUFBQyxFQUFDLENBQUEsQ0FBSSxNQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO0FBQ3hDLFlBQUMsSUFBRyxJQUFJLEFBQUMsRUFBQyxDQUFBLENBQUksTUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLEFBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQztBQUN4QyxpQkFBSyxNQUFNLEFBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUNqQixjQUFFLE9BQU8sSUFBSSxBQUFDLENBQUMsRUFBQyxDQUFDLENBQUM7Ozs7QU0xTnRCLGlCQUFPLENBQUEsSUFBRyxJQUFJLEFBQUMsRUFBQyxDQUFBOztBRkNtQixJQUMvQixDRkQ2QixLQUFHLENBQUMsQ0FBQztFRjBOcEMsRUFBQyxDQUFDO0FBQ0osRUFBQyxDQUFDO0FBQ0YiLCJmaWxlIjoic3BlY3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgZGVzY3JpYmU6dHJ1ZSwgaXQ6dHJ1ZSAqL1xuaW1wb3J0ICd0cmFjZXVyL2Jpbi90cmFjZXVyLXJ1bnRpbWUnO1xubGV0IHJlZ0l0ID0gaXQ7XG5pbXBvcnQgJ21vY2hhd2FpdCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBzbGVlcCwgcmV0cnksIHJldHJ5SW50ZXJ2YWwsIG5vZGVpZnksIG5vZGVpZnlBbGwsXG4gICAgICAgICBwYXJhbGxlbCB9IGZyb20gJy4uLy4uL2xpYi9lczUvbWFpbic7XG5cbmRlc2NyaWJlKCdzbGVlcCcsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCB3b3JrIGxpa2Ugc2V0VGltZW91dCcsIGFzeW5jICgpID0+IHtcbiAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBhd2FpdCBzbGVlcCgyMCk7XG4gICAgKERhdGUubm93KCkgLSBub3cpLnNob3VsZC5iZS5hYm92ZSgxOSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdyZXRyeScsICgpID0+IHtcbiAgbGV0IG9rRm5DYWxscyA9IDA7XG4gIGxldCBva0ZuID0gYXN5bmMgKHZhbDEsIHZhbDIpID0+IHtcbiAgICBhd2FpdCBzbGVlcCgxNSk7XG4gICAgb2tGbkNhbGxzKys7XG4gICAgcmV0dXJuIHZhbDEgKiB2YWwyO1xuICB9O1xuICBsZXQgYmFkRm5DYWxscyA9IDA7XG4gIGxldCBiYWRGbiA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBzbGVlcCgxNSk7XG4gICAgYmFkRm5DYWxscysrO1xuICAgIHRocm93IG5ldyBFcnJvcihcImJhZFwiKTtcbiAgfTtcbiAgbGV0IGV2ZW50dWFsbHlPa0ZuQ2FsbHMgPSAwO1xuICBsZXQgZXZlbnR1YWxseU9rRm4gPSBhc3luYyAodGltZXMpID0+IHtcbiAgICBhd2FpdCBzbGVlcCgxNSk7XG4gICAgZXZlbnR1YWxseU9rRm5DYWxscysrO1xuICAgIGlmIChldmVudHVhbGx5T2tGbkNhbGxzIDwgdGltZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBvayB5ZXRcIik7XG4gICAgfVxuICAgIHJldHVybiB0aW1lcyAqIHRpbWVzO1xuICB9O1xuICBsZXQgZXZlbnR1YWxseU9rTm9TbGVlcEZuID0gYXN5bmMgKHRpbWVzKSA9PiB7XG4gICAgZXZlbnR1YWxseU9rRm5DYWxscysrO1xuICAgIGlmIChldmVudHVhbGx5T2tGbkNhbGxzIDwgdGltZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBvayB5ZXRcIik7XG4gICAgfVxuICAgIHJldHVybiB0aW1lcyAqIHRpbWVzO1xuICB9O1xuICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmVzdWx0IG9mIGEgcGFzc2luZyBmdW5jdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCByZXMgPSBhd2FpdCByZXRyeSgzLCBva0ZuLCA1LCA0KTtcbiAgICByZXMuc2hvdWxkLmVxdWFsKDIwKTtcbiAgICAoRGF0ZS5ub3coKSAtIHN0YXJ0KS5zaG91bGQuYmUuYWJvdmUoMTQpO1xuICAgIG9rRm5DYWxscy5zaG91bGQuZXF1YWwoMSk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHJldHJ5IGEgZmFpbGluZyBmdW5jdGlvbiBhbmQgZXZlbnR1YWxseSB0aHJvdyB0aGUgc2FtZSBlcnInLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IGVyciA9IG51bGw7XG4gICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcmV0cnkoMywgYmFkRm4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVyciA9IGU7XG4gICAgfVxuICAgIHNob3VsZC5leGlzdChlcnIpO1xuICAgIGVyci5tZXNzYWdlLnNob3VsZC5lcXVhbCgnYmFkJyk7XG4gICAgYmFkRm5DYWxscy5zaG91bGQuZXF1YWwoMyk7XG4gICAgKERhdGUubm93KCkgLSBzdGFydCkuc2hvdWxkLmJlLmFib3ZlKDQ0KTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIHdpdGggYSBmdW5jdGlvbiB0aGF0IGV2ZW50dWFsbHkgcGFzc2VzJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBlcnIgPSBudWxsO1xuICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJldHJ5KDMsIGV2ZW50dWFsbHlPa0ZuLCA0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnIgPSBlO1xuICAgIH1cbiAgICBzaG91bGQuZXhpc3QoZXJyKTtcbiAgICBlcnIubWVzc2FnZS5zaG91bGQuZXF1YWwoJ25vdCBvayB5ZXQnKTtcbiAgICBldmVudHVhbGx5T2tGbkNhbGxzLnNob3VsZC5lcXVhbCgzKTtcbiAgICAoRGF0ZS5ub3coKSAtIHN0YXJ0KS5zaG91bGQuYmUuYWJvdmUoMzUpO1xuXG4gICAgLy8gcmVydW4gd2l0aCBvayBudW1iZXIgb2YgY2FsbHNcbiAgICBzdGFydCA9IERhdGUubm93KCk7XG4gICAgZXZlbnR1YWxseU9rRm5DYWxscyA9IDA7XG4gICAgbGV0IHJlcyA9IGF3YWl0IHJldHJ5KDMsIGV2ZW50dWFsbHlPa0ZuLCAzKTtcbiAgICBldmVudHVhbGx5T2tGbkNhbGxzLnNob3VsZC5lcXVhbCgzKTtcbiAgICByZXMuc2hvdWxkLmVxdWFsKDkpO1xuICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5hYm92ZSgzNSk7XG4gIH0pO1xuICBpdCgnaW4gc2xlZXAgbW9kZSwgc2hvdWxkIHJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSB3aXRoIGEgZnVuY3Rpb24gdGhhdCBldmVudHVhbGx5IHBhc3NlcycsIGFzeW5jICgpID0+IHtcbiAgICBldmVudHVhbGx5T2tGbkNhbGxzID0gMDtcbiAgICBsZXQgZXJyID0gbnVsbDtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCByZXRyeUludGVydmFsKDMsIDE1LCBldmVudHVhbGx5T2tOb1NsZWVwRm4sIDQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVyciA9IGU7XG4gICAgfVxuICAgIHNob3VsZC5leGlzdChlcnIpO1xuICAgIGVyci5tZXNzYWdlLnNob3VsZC5lcXVhbCgnbm90IG9rIHlldCcpO1xuICAgIGV2ZW50dWFsbHlPa0ZuQ2FsbHMuc2hvdWxkLmVxdWFsKDMpO1xuICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5hYm92ZSgzMCk7XG5cbiAgICAvLyByZXJ1biB3aXRoIG9rIG51bWJlciBvZiBjYWxsc1xuICAgIHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBldmVudHVhbGx5T2tGbkNhbGxzID0gMDtcbiAgICBsZXQgcmVzID0gYXdhaXQgcmV0cnlJbnRlcnZhbCgzLCAxNSwgZXZlbnR1YWxseU9rTm9TbGVlcEZuLCAzKTtcbiAgICBldmVudHVhbGx5T2tGbkNhbGxzLnNob3VsZC5lcXVhbCgzKTtcbiAgICByZXMuc2hvdWxkLmVxdWFsKDkpO1xuICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5hYm92ZSgzMCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdub2RlaWZ5QWxsJywgKCkgPT4ge1xuICBsZXQgYXN5bmNGbiA9IGFzeW5jICh2YWwpID0+IHtcbiAgICBhd2FpdCBzbGVlcCgxNSk7XG4gICAgcmV0dXJuIHZhbDtcbiAgfTtcbiAgbGV0IGFzeW5jRm4yID0gYXN5bmMgKHZhbCkgPT4ge1xuICAgIGF3YWl0IHNsZWVwKDE1KTtcbiAgICByZXR1cm4gW3ZhbCwgdmFsICsgdmFsXTtcbiAgfTtcbiAgbGV0IGJhZEFzeW5jRm4gPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgc2xlZXAoMTUpO1xuICAgIHRocm93IG5ldyBFcnJvcignYm9vJyk7XG4gIH07XG4gIGxldCBjYk1hcCA9IG5vZGVpZnlBbGwoe2FzeW5jRm4sIGFzeW5jRm4yLCBiYWRBc3luY0ZufSk7XG4gIHJlZ0l0KCdzaG91bGQgdHVybiBhc3luYyBmdW5jdGlvbnMgaW50byBub2RleSB0aGluZ3MnLCBkb25lID0+IHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIG5vZGVpZnkoYXN5bmNGbignZm9vJyksIChlcnIsIHZhbCwgdmFsMikgPT4ge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh2YWwyKTtcbiAgICAgIHZhbC5zaG91bGQuZXF1YWwoJ2ZvbycpO1xuICAgICAgKERhdGUubm93KCkgLSBzdGFydCkuc2hvdWxkLmJlLmFib3ZlKDE0KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJlZ0l0KCdzaG91bGQgdHVybiBhc3luYyBmdW5jdGlvbnMgaW50byBub2RleSB0aGluZ3MgdmlhIG5vZGVpZnlBbGwnLCBkb25lID0+IHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNiTWFwLmFzeW5jRm4oJ2ZvbycsIChlcnIsIHZhbCwgdmFsMikgPT4ge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh2YWwyKTtcbiAgICAgIHZhbC5zaG91bGQuZXF1YWwoJ2ZvbycpO1xuICAgICAgKERhdGUubm93KCkgLSBzdGFydCkuc2hvdWxkLmJlLmFib3ZlKDE0KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJlZ0l0KCdzaG91bGQgdHVybiBhc3luYyBmdW5jdGlvbnMgaW50byBub2RleSB0aGluZ3Mgd2l0aCBtdWx0IHBhcmFtcycsIGRvbmUgPT4ge1xuICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbm9kZWlmeShhc3luY0ZuMignZm9vJyksIChlcnIsIHZhbCkgPT4ge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgdmFsLnNob3VsZC5lcWwoWydmb28nLCAnZm9vZm9vJ10pO1xuICAgICAgKERhdGUubm93KCkgLSBzdGFydCkuc2hvdWxkLmJlLmFib3ZlKDE0KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJlZ0l0KCdzaG91bGQgaGFuZGxlIGVycm9ycyBjb3JyZWN0bHknLCBkb25lID0+IHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIG5vZGVpZnkoYmFkQXN5bmNGbignZm9vJyksIChlcnIsIHZhbCkgPT4ge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh2YWwpO1xuICAgICAgZXJyLm1lc3NhZ2Uuc2hvdWxkLmVxdWFsKCdib28nKTtcbiAgICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5hYm92ZSgxNCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdub2RlaWZ5QWxsJywgKCkgPT4ge1xuICBsZXQgYXN5bmNGbiA9IGFzeW5jICh2YWwpID0+IHtcbiAgICBhd2FpdCBzbGVlcCgxNSk7XG4gICAgcmV0dXJuIHZhbDtcbiAgfTtcbiAgbGV0IGFzeW5jRm4yID0gYXN5bmMgKHZhbCkgPT4ge1xuICAgIGF3YWl0IHNsZWVwKDE1KTtcbiAgICByZXR1cm4gW3ZhbCwgdmFsICsgdmFsXTtcbiAgfTtcbiAgbGV0IGJhZEFzeW5jRm4gPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgc2xlZXAoMTUpO1xuICAgIHRocm93IG5ldyBFcnJvcignYm9vJyk7XG4gIH07XG59KTtcblxuZGVzY3JpYmUoJ3BhcmFsbGVsJywgKCkgPT4ge1xuICBsZXQgYXN5bmNGbiA9IGFzeW5jICh2YWwpID0+IHtcbiAgICBhd2FpdCBzbGVlcCgzMCk7XG4gICAgcmV0dXJuIHZhbDtcbiAgfTtcbiAgbGV0IGJhZEFzeW5jRm4gPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgc2xlZXAoMTUpO1xuICAgIHRocm93IG5ldyBFcnJvcihcImJvb1wiKTtcbiAgfTtcbiAgaXQoJ3Nob3VsZCBwZXJmb3JtIHRhc2tzIGluIHBhcmFsbGVsIGFuZCByZXR1cm4gcmVzdWx0cycsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgdmFscyA9IFsxLCAyLCAzXTtcbiAgICBsZXQgcHJvbWlzZXMgPSBbXTtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGZvciAobGV0IHYgb2YgdmFscykge1xuICAgICAgcHJvbWlzZXMucHVzaChhc3luY0ZuKHYpKTtcbiAgICB9XG4gICAgbGV0IHJlcyA9IGF3YWl0IHBhcmFsbGVsKHByb21pc2VzKTtcbiAgICAoRGF0ZS5ub3coKSAtIHN0YXJ0KS5zaG91bGQuYmUuYWJvdmUoMjkpO1xuICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5iZWxvdyg0NSk7XG4gICAgcmVzLnNvcnQoKS5zaG91bGQuZXFsKFsxLCAyLCAzXSk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIGVycm9yIHdpdGggZmlyc3QgcmVzcG9uc2UnLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IHZhbHMgPSBbMSwgMiwgM107XG4gICAgbGV0IHByb21pc2VzID0gW107XG4gICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBmb3IgKGxldCB2IG9mIHZhbHMpIHtcbiAgICAgIHByb21pc2VzLnB1c2goYXN5bmNGbih2KSk7XG4gICAgfVxuICAgIHByb21pc2VzLnB1c2goYmFkQXN5bmNGbigpKTtcbiAgICBsZXQgZXJyID0gbnVsbDtcbiAgICBsZXQgcmVzID0gW107XG4gICAgdHJ5IHtcbiAgICAgIHJlcyA9IGF3YWl0IHBhcmFsbGVsKHByb21pc2VzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnIgPSBlO1xuICAgIH1cbiAgICAoRGF0ZS5ub3coKSAtIHN0YXJ0KS5zaG91bGQuYmUuYWJvdmUoMTQpO1xuICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5iZWxvdygzMCk7XG4gICAgc2hvdWxkLmV4aXN0KGVycik7XG4gICAgcmVzLnNob3VsZC5lcWwoW10pO1xuICB9KTtcbn0pO1xuIiwiKCRfX3BsYWNlaG9sZGVyX18wID0gcmVxdWlyZSgkX19wbGFjZWhvbGRlcl9fMSksIFxuICAgICAgICAkX19wbGFjZWhvbGRlcl9fMiAmJiAkX19wbGFjZWhvbGRlcl9fMy5fX2VzTW9kdWxlICYmICRfX3BsYWNlaG9sZGVyX180IHx8IHtkZWZhdWx0OiAkX19wbGFjZWhvbGRlcl9fNX0pIiwicmV0dXJuICRfX3BsYWNlaG9sZGVyX18wKFxuICAgICAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fMSwgdGhpcyk7IiwiJHRyYWNldXJSdW50aW1lLmFzeW5jV3JhcCIsImZ1bmN0aW9uKCRjdHgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSAkX19wbGFjZWhvbGRlcl9fMFxuICAgIH0iLCJQcm9taXNlLnJlc29sdmUoJF9fcGxhY2Vob2xkZXJfXzApLnRoZW4oXG4gICAgICAgICAgICAgICRjdHguY3JlYXRlQ2FsbGJhY2soJF9fcGxhY2Vob2xkZXJfXzEpLCAkY3R4LmVycmJhY2spO1xuICAgICAgICAgIHJldHVybiIsInJldHVybiAkY3R4LmVuZCgpIiwiJGN0eC5yZXR1cm5WYWx1ZSA9ICRfX3BsYWNlaG9sZGVyX18wIiwiJGN0eC52YWx1ZSIsIiRjdHgucHVzaFRyeShcbiAgICAgICAgICAgICRfX3BsYWNlaG9sZGVyX18wLFxuICAgICAgICAgICAgJF9fcGxhY2Vob2xkZXJfXzEpOyIsIiRjdHgucG9wVHJ5KCk7IiwiXG4gICAgICAgICAgICAgICRjdHgucG9wVHJ5KCk7XG4gICAgICAgICAgICAgICRfX3BsYWNlaG9sZGVyX18wID0gJGN0eC5zdG9yZWRFeGNlcHRpb247IiwiXG4gICAgICAgIGZvciAodmFyICRfX3BsYWNlaG9sZGVyX18wID1cbiAgICAgICAgICAgICAgICAgJF9fcGxhY2Vob2xkZXJfXzFbU3ltYm9sLml0ZXJhdG9yXSgpLFxuICAgICAgICAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fMjtcbiAgICAgICAgICAgICAhKCRfX3BsYWNlaG9sZGVyX18zID0gJF9fcGxhY2Vob2xkZXJfXzQubmV4dCgpKS5kb25lOyApIHtcbiAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fNTtcbiAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fNjtcbiAgICAgICAgfSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== |
@@ -6,3 +6,4 @@ /* global describe:true, it:true */ | ||
import should from 'should'; | ||
import { sleep, retry, retryInterval, nodeify, nodeifyAll } from '../../lib/es5/main'; | ||
import { sleep, retry, retryInterval, nodeify, nodeifyAll, | ||
parallel } from '../../lib/es5/main'; | ||
@@ -179,1 +180,44 @@ describe('sleep', () => { | ||
}); | ||
describe('parallel', () => { | ||
let asyncFn = async (val) => { | ||
await sleep(30); | ||
return val; | ||
}; | ||
let badAsyncFn = async () => { | ||
await sleep(15); | ||
throw new Error("boo"); | ||
}; | ||
it('should perform tasks in parallel and return results', async () => { | ||
let vals = [1, 2, 3]; | ||
let promises = []; | ||
let start = Date.now(); | ||
for (let v of vals) { | ||
promises.push(asyncFn(v)); | ||
} | ||
let res = await parallel(promises); | ||
(Date.now() - start).should.be.above(29); | ||
(Date.now() - start).should.be.below(45); | ||
res.sort().should.eql([1, 2, 3]); | ||
}); | ||
it('should error with first response', async () => { | ||
let vals = [1, 2, 3]; | ||
let promises = []; | ||
let start = Date.now(); | ||
for (let v of vals) { | ||
promises.push(asyncFn(v)); | ||
} | ||
promises.push(badAsyncFn()); | ||
let err = null; | ||
let res = []; | ||
try { | ||
res = await parallel(promises); | ||
} catch (e) { | ||
err = e; | ||
} | ||
(Date.now() - start).should.be.above(14); | ||
(Date.now() - start).should.be.below(30); | ||
should.exist(err); | ||
res.should.eql([]); | ||
}); | ||
}); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
404928
1255