occam-languages 3.0.36 → 3.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,6 +18,9 @@ _export(exports, {
18
18
  get backwardsForEach () {
19
19
  return backwardsForEach;
20
20
  },
21
+ get cut () {
22
+ return cut;
23
+ },
21
24
  get default () {
22
25
  return _default;
23
26
  },
@@ -70,6 +73,12 @@ _export(exports, {
70
73
  return some;
71
74
  }
72
75
  });
76
+ function cut(forward, back) {
77
+ return (...forwardArguments)=>{
78
+ forwardArguments.pop(); ///
79
+ return forward(...forwardArguments, back);
80
+ };
81
+ }
73
82
  function one(array, callback, ...initialArguments) {
74
83
  const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
75
84
  function next(index, count, ...nextArguments) {
@@ -287,14 +296,14 @@ function resolve(array, callback, ...initialArguments) {
287
296
  return find(arrayA, (element, ...callbackArguments)=>{
288
297
  const index = callbackArguments.pop(), back = callbackArguments.pop(), forward = callbackArguments.pop();
289
298
  return callback(element, ...callbackArguments, (...forwardArguments)=>{
290
- const success = true;
291
- return forward(success, ...forwardArguments);
299
+ const passed = true;
300
+ return forward(passed, ...forwardArguments);
292
301
  }, (exception)=>{
293
302
  if (exception) {
294
303
  return back(exception);
295
304
  }
296
- const success = false;
297
- return forward(success, ...callbackArguments, back);
305
+ const passed = false;
306
+ return forward(passed, ...callbackArguments, back);
298
307
  }, index);
299
308
  }, ...nextArguments, (elements, ...forwardArguments)=>{
300
309
  const elementsLength = elements.length;
@@ -398,6 +407,7 @@ function exists(callbacks, ...initialArguments) {
398
407
  }, ...initialArguments);
399
408
  }
400
409
  const _default = {
410
+ cut,
401
411
  one,
402
412
  some,
403
413
  each,
@@ -419,4 +429,4 @@ const _default = {
419
429
  exists
420
430
  };
421
431
 
422
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gb25lKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCBjb3VudCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5pbml0aWFsQXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcndhcmRBcmd1bWVudHMucG9wKCk7IC8vL1xuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgY291bnQgKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCBjb3VudCwgLi4ubmV4dEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwLFxuICAgICAgICBjb3VudCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGNvdW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLmluaXRpYWxBcmd1bWVudHMsXG4gICAgICBmb3J3YXJkLFxuICAgICAgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSk7XG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIGNvdW50LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgaWYgKGNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgY291bnQgKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwLFxuICAgICAgICBjb3VudCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGNvdW50LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBhcnJheUEgPSBhcnJheSwgLy8vXG4gICAgICAgIGFycmF5QiA9IFtdLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgYXJyYXlCLCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoYXJyYXlCLCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5QVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50QSxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoZWxlbWVudEIsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCBbIC4uLmFycmF5QiwgZWxlbWVudEIgXSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgYXJyYXlCLCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZShhcnJheSwgaW5pdGlhbFZhbHVlLCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCB2YWx1ZSwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHZhbHVlLCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIHZhbHVlLFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICh2YWx1ZSwgLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIHZhbHVlLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCBpbml0aWFsVmFsdWUsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXIoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gW10sXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChkZWxldGVkRWxlbWVudHMsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgIChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaW5kZXgsIC8vL1xuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgICBkZWxldGVkRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xuXG4gICAgICAgICAgYXJyYXkuc3BsaWNlKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50KTtcblxuICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cy51bnNoaWZ0KGRlbGV0ZWRFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4IC0gMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gbGVuZ3RoIC0gMTtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIGNvbnN0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChkZWxldGVkRWxlbWVudCwgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKHBhc3NlZCwgLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpbmRleCwgLy8vXG4gICAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZWxlbWVudDsgLy8vXG5cbiAgICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3QoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBkZWxldGVkRWxlbWVudCA9IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgIChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpbmRleCwgLy8vXG4gICAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZWxlbWVudDsgLy8vXG5cbiAgICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmQoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZWxlbWVudHMgPSBbXSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIGVsZW1lbnRzLCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoZWxlbWVudHMsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgIChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgWyAuLi5lbGVtZW50cywgZWxlbWVudCBdLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgZWxlbWVudHMsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGVsZW1lbnRzLCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgYXJyYXlBID0gYXJyYXksIC8vL1xuICAgICAgICBhcnJheUIgPSBbXTtcblxuICBmdW5jdGlvbiBuZXh0KGFycmF5QSwgYXJyYXlCLCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCksXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXlBLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGFycmF5QiwgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbmQoXG4gICAgICBhcnJheUEsXG4gICAgICAoZWxlbWVudCwgLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBjYWxsYmFja0FyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgICAgICAgYmFjayA9IGNhbGxiYWNrQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICAgICAgICBmb3J3YXJkID0gY2FsbGJhY2tBcmd1bWVudHMucG9wKCk7XG5cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgLi4uY2FsbGJhY2tBcmd1bWVudHMsXG4gICAgICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChzdWNjZXNzLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChzdWNjZXNzLCAuLi5jYWxsYmFja0FyZ3VtZW50cywgYmFjayk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbmRleFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoZWxlbWVudHMsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHNMZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGVsZW1lbnRzTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KFxuICAgICAgICAgIGFycmF5QS5maWx0ZXIoKGVsZW1lbnQpID0+ICFlbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSksXG4gICAgICAgICAgWyAuLi5hcnJheUIsIC4uLmVsZW1lbnRzIF0sXG4gICAgICAgICAgLi4uZm9yd2FyZEFyZ3VtZW50c1xuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGJhY2tcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoYXJyYXlBLCBhcnJheUIsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2goYXJyYXlBLCBhcnJheUIsIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgYXJyYXlBTGVuZ3RoID0gYXJyYXlBLmxlbmd0aCxcbiAgICAgICAgYXJyYXlCTGVuZ3RoID0gYXJyYXlCLmxlbmd0aCxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXlBTGVuZ3RoOyAgLy8vXG5cbiAgaWYgKGFycmF5QUxlbmd0aCAhPT0gYXJyYXlCTGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5QVtpbmRleF0sXG4gICAgICAgICAgZWxlbWVudEIgPSBhcnJheUJbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudEEsXG4gICAgICBlbGVtZW50QixcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggLSAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSBsZW5ndGggLSAxO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCAtIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsKGNhbGxiYWNrcywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICByZXR1cm4gZXZlcnkoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGlzdHMoY2FsbGJhY2tzLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIHJldHVybiBzb21lKGNhbGxiYWNrcywgKGNhbGxiYWNrLCAuLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gIH0sIC4uLmluaXRpYWxBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG9uZSxcbiAgc29tZSxcbiAgZWFjaCxcbiAgZXZlcnksXG4gIG1hcCxcbiAgcmVkdWNlLFxuICBmb3JFYWNoLFxuICBmaWx0ZXIsXG4gIHBydW5lLFxuICBleHRyYWN0LFxuICBmaW5kLFxuICByZXNvbHZlLFxuICBtYXRjaCxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaCxcbiAgYWxsLFxuICBleGlzdHNcbn07XG4iXSwibmFtZXMiOlsiYWxsIiwiYmFja3dhcmRzRXZlcnkiLCJiYWNrd2FyZHNGb3JFYWNoIiwiZWFjaCIsImV2ZXJ5IiwiZXhpc3RzIiwiZXh0cmFjdCIsImZpbHRlciIsImZpbmQiLCJmb3JFYWNoIiwiZm9yd2FyZHNFdmVyeSIsImZvcndhcmRzRm9yRWFjaCIsIm1hcCIsIm1hdGNoIiwib25lIiwicHJ1bmUiLCJyZWR1Y2UiLCJyZXNvbHZlIiwic29tZSIsImFycmF5IiwiY2FsbGJhY2siLCJpbml0aWFsQXJndW1lbnRzIiwiYmFjayIsInBvcCIsImZvcndhcmQiLCJsZW5ndGgiLCJuZXh0IiwiaW5kZXgiLCJjb3VudCIsIm5leHRBcmd1bWVudHMiLCJlbGVtZW50IiwiZm9yd2FyZEFyZ3VtZW50cyIsImV4Y2VwdGlvbiIsImFycmF5QSIsImFycmF5QiIsImVsZW1lbnRBIiwiZWxlbWVudEIiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSIsImRlbGV0ZWRFbGVtZW50cyIsInBhc3NlZCIsInN0YXJ0SW5kZXgiLCJkZWxldGVDb3VudCIsImRlbGV0ZWRFbGVtZW50Iiwic3BsaWNlIiwidW5zaGlmdCIsInVuZGVmaW5lZCIsImVsZW1lbnRzIiwiY2FsbGJhY2tBcmd1bWVudHMiLCJzdWNjZXNzIiwiZWxlbWVudHNMZW5ndGgiLCJpbmNsdWRlcyIsImFycmF5QUxlbmd0aCIsImFycmF5Qkxlbmd0aCIsImNhbGxiYWNrcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBeW1CZ0JBO2VBQUFBOztRQTFGQUM7ZUFBQUE7O1FBNERBQztlQUFBQTs7UUEwQ2hCO2VBQUE7O1FBdGlCZ0JDO2VBQUFBOztRQW1DQUM7ZUFBQUE7O1FBNmZBQztlQUFBQTs7UUEvU0FDO2VBQUFBOztRQW5GQUM7ZUFBQUE7O1FBNkhBQztlQUFBQTs7UUEzSkFDO2VBQUFBOztRQWtTQUM7ZUFBQUE7O1FBNERBQztlQUFBQTs7UUE3WkFDO2VBQUFBOztRQTJUQUM7ZUFBQUE7O1FBemNBQztlQUFBQTs7UUFvUkFDO2VBQUFBOztRQXRHQUM7ZUFBQUE7O1FBNk5BQztlQUFBQTs7UUE5VkFDO2VBQUFBOzs7QUE3Q1QsU0FBU0osSUFBSUssS0FBSyxFQUFFQyxRQUFRLEVBQUUsR0FBR0MsZ0JBQWdCO0lBQ3RELE1BQU1DLE9BQU9ELGlCQUFpQkUsR0FBRyxJQUMzQkMsVUFBVUgsaUJBQWlCRSxHQUFHLElBQzlCRSxTQUFTTixNQUFNTSxNQUFNO0lBRTNCLFNBQVNDLEtBQUtDLEtBQUssRUFBRUMsS0FBSyxFQUFFLEdBQUdDLGFBQWE7UUFDMUMsSUFBSUYsVUFBVUYsUUFBUTtZQUNwQixJQUFJRyxVQUFVLEdBQUc7Z0JBQ2YsT0FBT047WUFDVDtZQUVBLE9BQU9F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
432
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3V0KGZvcndhcmQsIGJhY2spIHtcbiAgcmV0dXJuICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgZm9yd2FyZEFyZ3VtZW50cy5wb3AoKTsgLy8vXG5cbiAgICByZXR1cm4gZm9yd2FyZCguLi5mb3J3YXJkQXJndW1lbnRzLCBiYWNrKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uZShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgY291bnQsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgaWYgKGNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4uaW5pdGlhbEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3J3YXJkQXJndW1lbnRzLnBvcCgpOyAvLy9cblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIGNvdW50ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgY291bnQsIC4uLm5leHRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMCxcbiAgICAgICAgY291bnQgPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCBjb3VudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb21lKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4KSB7XG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5pbml0aWFsQXJndW1lbnRzLFxuICAgICAgZm9yd2FyZCxcbiAgICAgIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEpO1xuICAgICAgfSxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCBjb3VudCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIGlmIChjb3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIGNvdW50ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMCxcbiAgICAgICAgY291bnQgPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCBjb3VudCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXAoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgYXJyYXlBID0gYXJyYXksIC8vL1xuICAgICAgICBhcnJheUIgPSBbXSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIGFycmF5QiwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGFycmF5QiwgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudEEgPSBhcnJheUFbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudEEsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKGVsZW1lbnRCLCAuLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgWyAuLi5hcnJheUIsIGVsZW1lbnRCIF0sIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGFycmF5QiwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2UoYXJyYXksIGluaXRpYWxWYWx1ZSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgdmFsdWUsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCh2YWx1ZSwgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICB2YWx1ZSxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAodmFsdWUsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCB2YWx1ZSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgaW5pdGlhbFZhbHVlLCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvckVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IFtdLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnRzLCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAocGFzc2VkLCAuLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IGluZGV4LCAvLy9cbiAgICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnQgPSBlbGVtZW50OyAvLy9cblxuICAgICAgICAgIGFycmF5LnNwbGljZShzdGFydEluZGV4LCBkZWxldGVDb3VudCk7XG5cbiAgICAgICAgICBkZWxldGVkRWxlbWVudHMudW5zaGlmdChkZWxldGVkRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCAtIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBkZWxldGVkRWxlbWVudCA9IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgIChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaW5kZXgsIC8vL1xuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgICBkZWxldGVkRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xuXG4gICAgICAgICAgYXJyYXkuc3BsaWNlKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGRlbGV0ZWRFbGVtZW50LCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgY29uc3QgZGVsZXRlZEVsZW1lbnQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGRlbGV0ZWRFbGVtZW50LCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAocGFzc2VkLCAuLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaW5kZXgsIC8vL1xuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgICBkZWxldGVkRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xuXG4gICAgICAgICAgYXJyYXkuc3BsaWNlKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGRlbGV0ZWRFbGVtZW50LCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGVsZW1lbnRzID0gW10sXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCBlbGVtZW50cywgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGVsZW1lbnRzLCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAocGFzc2VkLCAuLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIFsgLi4uZWxlbWVudHMsIGVsZW1lbnQgXSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIGVsZW1lbnRzLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCBlbGVtZW50cywgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGFycmF5QSA9IGFycmF5LCAvLy9cbiAgICAgICAgYXJyYXlCID0gW107XG5cbiAgZnVuY3Rpb24gbmV4dChhcnJheUEsIGFycmF5QiwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5QS5sZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChhcnJheUIsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiBmaW5kKFxuICAgICAgYXJyYXlBLFxuICAgICAgKGVsZW1lbnQsIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gY2FsbGJhY2tBcmd1bWVudHMucG9wKCksXG4gICAgICAgICAgICAgIGJhY2sgPSBjYWxsYmFja0FyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgICAgICAgZm9yd2FyZCA9IGNhbGxiYWNrQXJndW1lbnRzLnBvcCgpO1xuXG4gICAgICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIC4uLmNhbGxiYWNrQXJndW1lbnRzLFxuICAgICAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXNzZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwYXNzZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuIGZvcndhcmQocGFzc2VkLCAuLi5jYWxsYmFja0FyZ3VtZW50cywgYmFjayk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbmRleFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoZWxlbWVudHMsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHNMZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGVsZW1lbnRzTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KFxuICAgICAgICAgIGFycmF5QS5maWx0ZXIoKGVsZW1lbnQpID0+ICFlbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSksXG4gICAgICAgICAgWyAuLi5hcnJheUIsIC4uLmVsZW1lbnRzIF0sXG4gICAgICAgICAgLi4uZm9yd2FyZEFyZ3VtZW50c1xuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGJhY2tcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoYXJyYXlBLCBhcnJheUIsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2goYXJyYXlBLCBhcnJheUIsIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgYXJyYXlBTGVuZ3RoID0gYXJyYXlBLmxlbmd0aCxcbiAgICAgICAgYXJyYXlCTGVuZ3RoID0gYXJyYXlCLmxlbmd0aCxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXlBTGVuZ3RoOyAgLy8vXG5cbiAgaWYgKGFycmF5QUxlbmd0aCAhPT0gYXJyYXlCTGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5QVtpbmRleF0sXG4gICAgICAgICAgZWxlbWVudEIgPSBhcnJheUJbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudEEsXG4gICAgICBlbGVtZW50QixcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggLSAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSBsZW5ndGggLSAxO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCAtIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsKGNhbGxiYWNrcywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICByZXR1cm4gZXZlcnkoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGlzdHMoY2FsbGJhY2tzLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIHJldHVybiBzb21lKGNhbGxiYWNrcywgKGNhbGxiYWNrLCAuLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gIH0sIC4uLmluaXRpYWxBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGN1dCxcbiAgb25lLFxuICBzb21lLFxuICBlYWNoLFxuICBldmVyeSxcbiAgbWFwLFxuICByZWR1Y2UsXG4gIGZvckVhY2gsXG4gIGZpbHRlcixcbiAgcHJ1bmUsXG4gIGV4dHJhY3QsXG4gIGZpbmQsXG4gIHJlc29sdmUsXG4gIG1hdGNoLFxuICBmb3J3YXJkc0V2ZXJ5LFxuICBiYWNrd2FyZHNFdmVyeSxcbiAgZm9yd2FyZHNGb3JFYWNoLFxuICBiYWNrd2FyZHNGb3JFYWNoLFxuICBhbGwsXG4gIGV4aXN0c1xufTtcbiJdLCJuYW1lcyI6WyJhbGwiLCJiYWNrd2FyZHNFdmVyeSIsImJhY2t3YXJkc0ZvckVhY2giLCJjdXQiLCJlYWNoIiwiZXZlcnkiLCJleGlzdHMiLCJleHRyYWN0IiwiZmlsdGVyIiwiZmluZCIsImZvckVhY2giLCJmb3J3YXJkc0V2ZXJ5IiwiZm9yd2FyZHNGb3JFYWNoIiwibWFwIiwibWF0Y2giLCJvbmUiLCJwcnVuZSIsInJlZHVjZSIsInJlc29sdmUiLCJzb21lIiwiZm9yd2FyZCIsImJhY2siLCJmb3J3YXJkQXJndW1lbnRzIiwicG9wIiwiYXJyYXkiLCJjYWxsYmFjayIsImluaXRpYWxBcmd1bWVudHMiLCJsZW5ndGgiLCJuZXh0IiwiaW5kZXgiLCJjb3VudCIsIm5leHRBcmd1bWVudHMiLCJlbGVtZW50IiwiZXhjZXB0aW9uIiwiYXJyYXlBIiwiYXJyYXlCIiwiZWxlbWVudEEiLCJlbGVtZW50QiIsImluaXRpYWxWYWx1ZSIsInZhbHVlIiwiZGVsZXRlZEVsZW1lbnRzIiwicGFzc2VkIiwic3RhcnRJbmRleCIsImRlbGV0ZUNvdW50IiwiZGVsZXRlZEVsZW1lbnQiLCJzcGxpY2UiLCJ1bnNoaWZ0IiwidW5kZWZpbmVkIiwiZWxlbWVudHMiLCJjYWxsYmFja0FyZ3VtZW50cyIsImVsZW1lbnRzTGVuZ3RoIiwiaW5jbHVkZXMiLCJhcnJheUFMZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJjYWxsYmFja3MiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWluQmdCQTtlQUFBQTs7UUExRkFDO2VBQUFBOztRQTREQUM7ZUFBQUE7O1FBamxCQUM7ZUFBQUE7O1FBMm5CaEI7ZUFBQTs7UUF0aUJnQkM7ZUFBQUE7O1FBbUNBQztlQUFBQTs7UUE2ZkFDO2VBQUFBOztRQS9TQUM7ZUFBQUE7O1FBbkZBQztlQUFBQTs7UUE2SEFDO2VBQUFBOztRQTNKQUM7ZUFBQUE7O1FBa1NBQztlQUFBQTs7UUE0REFDO2VBQUFBOztRQTdaQUM7ZUFBQUE7O1FBMlRBQztlQUFBQTs7UUF6Y0FDO2VBQUFBOztRQW9SQUM7ZUFBQUE7O1FBdEdBQztlQUFBQTs7UUE2TkFDO2VBQUFBOztRQTlWQUM7ZUFBQUE7OztBQXJEVCxTQUFTaEIsSUFBSWlCLE9BQU8sRUFBRUMsSUFBSTtJQUMvQixPQUFPLENBQUMsR0FBR0M7UUFDVEEsaUJBQWlC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
@@ -21,7 +21,7 @@ const _continuation = require("../utilities/continuation");
21
21
  const { first, filter, compress } = _necessary.arrayUtilities;
22
22
  function verifyFileContexts(fileContexts, forward, back) {
23
23
  return (0, _continuation.resolve)(fileContexts, (fileContext, forward, back)=>{
24
- return fileContext.verify(forward, back);
24
+ return fileContext.verify((0, _continuation.cut)(forward, back), back);
25
25
  }, forward, back);
26
26
  }
27
27
  function verifyTypePrefixes(typePrefixes, releaseContext) {
@@ -50,4 +50,4 @@ function verifyTypePrefixes(typePrefixes, releaseContext) {
50
50
  return typePrefixesVerify;
51
51
  }
52
52
 
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5cbmNvbnN0IHsgZmlyc3QsIGZpbHRlciwgY29tcHJlc3MgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5RmlsZUNvbnRleHRzKGZpbGVDb250ZXh0cywgZm9yd2FyZCwgYmFjaykge1xuICByZXR1cm4gcmVzb2x2ZShmaWxlQ29udGV4dHMsIChmaWxlQ29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgIHJldHVybiBmaWxlQ29udGV4dC52ZXJpZnkoZm9yd2FyZCwgYmFjayk7XG4gIH0sIGZvcndhcmQsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5VHlwZVByZWZpeGVzKHR5cGVQcmVmaXhlcywgcmVsZWFzZUNvbnRleHQpIHtcbiAgbGV0IHR5cGVQcmVmaXhlc1ZlcmlmeSA9IHRydWU7XG5cbiAgY29uc3QgdHlwZVByZWZpeGVzTGVuZ3RoID0gdHlwZVByZWZpeGVzLmxlbmd0aCxcbiAgICAgICAgY29tcHJlc3NlZFR5cGVQcmVmaXhlcyA9IFsgIC8vL1xuICAgICAgICAgIC4uLnR5cGVQcmVmaXhlcyxcbiAgICAgICAgXTtcblxuICBjb21wcmVzcyhjb21wcmVzc2VkVHlwZVByZWZpeGVzLCAodHlwZVByZWZpeEEsIHR5cGVQcmVmaXhCKSA9PiB7XG4gICAgY29uc3QgdHlwZVByZWZpeEFOYW1lID0gdHlwZVByZWZpeEEuZ2V0TmFtZSgpLFxuICAgICAgICAgIHR5cGVQcmVmaXhCTmFtZSA9IHR5cGVQcmVmaXhCLmdldE5hbWUoKTtcblxuICAgIGlmICh0eXBlUHJlZml4QU5hbWUgIT09IHR5cGVQcmVmaXhCTmFtZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBjb21wcmVzc1R5cGVQcmVmaXhlc0xlbmd0aCA9IGNvbXByZXNzZWRUeXBlUHJlZml4ZXMubGVuZ3RoO1xuXG4gIGlmICh0eXBlUHJlZml4ZXNMZW5ndGggPiBjb21wcmVzc1R5cGVQcmVmaXhlc0xlbmd0aCkge1xuICAgIGZpbHRlcihjb21wcmVzc2VkVHlwZVByZWZpeGVzLCAodHlwZVByZWZpeCkgPT4ge1xuICAgICAgY29uc3QgdHlwZVByZWZpeGVzSW5jbHVkZXNUeXBlUHJlZml4ID0gdHlwZVByZWZpeGVzLmluY2x1ZGVzKHR5cGVQcmVmaXgpO1xuXG4gICAgICBpZiAoIXR5cGVQcmVmaXhlc0luY2x1ZGVzVHlwZVByZWZpeCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGZpcnN0VHlwZVByZWZpeCA9IGZpcnN0KHR5cGVQcmVmaXhlcyksXG4gICAgICAgICAgdHlwZVByZWZpeCA9IGZpcnN0VHlwZVByZWZpeCwgLy8vXG4gICAgICAgICAgdHlwZVByZWZpeFN0cmluZyA9IHR5cGVQcmVmaXguZ2V0U3RyaW5nKCk7XG5cbiAgICByZWxlYXNlQ29udGV4dC5pbmZvKGBUaGUgJyR7dHlwZVByZWZpeFN0cmluZ30nIHR5cGUgcHJlZml4IGlzIGR1cGxpY2F0ZWQuYClcblxuICAgIHR5cGVQcmVmaXhlc1ZlcmlmeSA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVQcmVmaXhlc1ZlcmlmeTtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlGaWxlQ29udGV4dHMiLCJ2ZXJpZnlUeXBlUHJlZml4ZXMiLCJmaXJzdCIsImZpbHRlciIsImNvbXByZXNzIiwiYXJyYXlVdGlsaXRpZXMiLCJmaWxlQ29udGV4dHMiLCJmb3J3YXJkIiwiYmFjayIsInJlc29sdmUiLCJmaWxlQ29udGV4dCIsInZlcmlmeSIsInR5cGVQcmVmaXhlcyIsInJlbGVhc2VDb250ZXh0IiwidHlwZVByZWZpeGVzVmVyaWZ5IiwidHlwZVByZWZpeGVzTGVuZ3RoIiwibGVuZ3RoIiwiY29tcHJlc3NlZFR5cGVQcmVmaXhlcyIsInR5cGVQcmVmaXhBIiwidHlwZVByZWZpeEIiLCJ0eXBlUHJlZml4QU5hbWUiLCJnZXROYW1lIiwidHlwZVByZWZpeEJOYW1lIiwiY29tcHJlc3NUeXBlUHJlZml4ZXNMZW5ndGgiLCJ0eXBlUHJlZml4IiwidHlwZVByZWZpeGVzSW5jbHVkZXNUeXBlUHJlZml4IiwiaW5jbHVkZXMiLCJmaXJzdFR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4U3RyaW5nIiwiZ2V0U3RyaW5nIiwiaW5mbyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBUWdCQTtlQUFBQTs7UUFNQUM7ZUFBQUE7OzsyQkFaZTs4QkFFUDtBQUV4QixNQUFNLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUUsR0FBR0MseUJBQWM7QUFFM0MsU0FBU0wsbUJBQW1CTSxZQUFZLEVBQUVDLE9BQU8sRUFBRUMsSUFBSTtJQUM1RCxPQUFPQyxJQUFBQSxxQkFBTyxFQUFDSCxjQUFjLENBQUNJLGFBQWFILFNBQVNDO1FBQ2xELE9BQU9FLFlBQVlDLE1BQU0sQ0FBQ0osU0FBU0M7SUFDckMsR0FBR0QsU0FBU0M7QUFDZDtBQUVPLFNBQVNQLG1CQUFtQlcsWUFBWSxFQUFFQyxjQUFjO0lBQzdELElBQUlDLHFCQUFxQjtJQUV6QixNQUFNQyxxQkFBcUJILGFBQWFJLE1BQU0sRUFDeENDLHlCQUF5QjtXQUNwQkw7S0FDSjtJQUVQUixTQUFTYSx3QkFBd0IsQ0FBQ0MsYUFBYUM7UUFDN0MsTUFBTUMsa0JBQWtCRixZQUFZRyxPQUFPLElBQ3JDQyxrQkFBa0JILFlBQVlFLE9BQU87UUFFM0MsSUFBSUQsb0JBQW9CRSxpQkFBaUI7WUFDdkMsT0FBTztRQUNUO0lBQ0Y7SUFFQSxNQUFNQyw2QkFBNkJOLHVCQUF1QkQsTUFBTTtJQUVoRSxJQUFJRCxxQkFBcUJRLDRCQUE0QjtRQUNuRHBCLE9BQU9jLHdCQUF3QixDQUFDTztZQUM5QixNQUFNQyxpQ0FBaUNiLGFBQWFjLFFBQVEsQ0FBQ0Y7WUFFN0QsSUFBSSxDQUFDQyxnQ0FBZ0M7Z0JBQ25DLE9BQU87WUFDVDtRQUNGO1FBRUEsTUFBTUUsa0JBQWtCekIsTUFBTVUsZUFDeEJZLGFBQWFHLGlCQUNiQyxtQkFBbUJKLFdBQVdLLFNBQVM7UUFFN0NoQixlQUFlaUIsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFRixpQkFBaUIsNEJBQTRCLENBQUM7UUFFMUVkLHFCQUFxQjtJQUN2QjtJQUVBLE9BQU9BO0FBQ1QifQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgY3V0LCByZXNvbHZlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcblxuY29uc3QgeyBmaXJzdCwgZmlsdGVyLCBjb21wcmVzcyB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlGaWxlQ29udGV4dHMoZmlsZUNvbnRleHRzLCBmb3J3YXJkLCBiYWNrKSB7XG4gIHJldHVybiByZXNvbHZlKGZpbGVDb250ZXh0cywgKGZpbGVDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgcmV0dXJuIGZpbGVDb250ZXh0LnZlcmlmeShjdXQoZm9yd2FyZCwgYmFjayksIGJhY2spO1xuICB9LCBmb3J3YXJkLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVR5cGVQcmVmaXhlcyh0eXBlUHJlZml4ZXMsIHJlbGVhc2VDb250ZXh0KSB7XG4gIGxldCB0eXBlUHJlZml4ZXNWZXJpZnkgPSB0cnVlO1xuXG4gIGNvbnN0IHR5cGVQcmVmaXhlc0xlbmd0aCA9IHR5cGVQcmVmaXhlcy5sZW5ndGgsXG4gICAgICAgIGNvbXByZXNzZWRUeXBlUHJlZml4ZXMgPSBbICAvLy9cbiAgICAgICAgICAuLi50eXBlUHJlZml4ZXMsXG4gICAgICAgIF07XG5cbiAgY29tcHJlc3MoY29tcHJlc3NlZFR5cGVQcmVmaXhlcywgKHR5cGVQcmVmaXhBLCB0eXBlUHJlZml4QikgPT4ge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhBTmFtZSA9IHR5cGVQcmVmaXhBLmdldE5hbWUoKSxcbiAgICAgICAgICB0eXBlUHJlZml4Qk5hbWUgPSB0eXBlUHJlZml4Qi5nZXROYW1lKCk7XG5cbiAgICBpZiAodHlwZVByZWZpeEFOYW1lICE9PSB0eXBlUHJlZml4Qk5hbWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgY29tcHJlc3NUeXBlUHJlZml4ZXNMZW5ndGggPSBjb21wcmVzc2VkVHlwZVByZWZpeGVzLmxlbmd0aDtcblxuICBpZiAodHlwZVByZWZpeGVzTGVuZ3RoID4gY29tcHJlc3NUeXBlUHJlZml4ZXNMZW5ndGgpIHtcbiAgICBmaWx0ZXIoY29tcHJlc3NlZFR5cGVQcmVmaXhlcywgKHR5cGVQcmVmaXgpID0+IHtcbiAgICAgIGNvbnN0IHR5cGVQcmVmaXhlc0luY2x1ZGVzVHlwZVByZWZpeCA9IHR5cGVQcmVmaXhlcy5pbmNsdWRlcyh0eXBlUHJlZml4KTtcblxuICAgICAgaWYgKCF0eXBlUHJlZml4ZXNJbmNsdWRlc1R5cGVQcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBmaXJzdFR5cGVQcmVmaXggPSBmaXJzdCh0eXBlUHJlZml4ZXMpLFxuICAgICAgICAgIHR5cGVQcmVmaXggPSBmaXJzdFR5cGVQcmVmaXgsIC8vL1xuICAgICAgICAgIHR5cGVQcmVmaXhTdHJpbmcgPSB0eXBlUHJlZml4LmdldFN0cmluZygpO1xuXG4gICAgcmVsZWFzZUNvbnRleHQuaW5mbyhgVGhlICcke3R5cGVQcmVmaXhTdHJpbmd9JyB0eXBlIHByZWZpeCBpcyBkdXBsaWNhdGVkLmApXG5cbiAgICB0eXBlUHJlZml4ZXNWZXJpZnkgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0eXBlUHJlZml4ZXNWZXJpZnk7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5RmlsZUNvbnRleHRzIiwidmVyaWZ5VHlwZVByZWZpeGVzIiwiZmlyc3QiLCJmaWx0ZXIiLCJjb21wcmVzcyIsImFycmF5VXRpbGl0aWVzIiwiZmlsZUNvbnRleHRzIiwiZm9yd2FyZCIsImJhY2siLCJyZXNvbHZlIiwiZmlsZUNvbnRleHQiLCJ2ZXJpZnkiLCJjdXQiLCJ0eXBlUHJlZml4ZXMiLCJyZWxlYXNlQ29udGV4dCIsInR5cGVQcmVmaXhlc1ZlcmlmeSIsInR5cGVQcmVmaXhlc0xlbmd0aCIsImxlbmd0aCIsImNvbXByZXNzZWRUeXBlUHJlZml4ZXMiLCJ0eXBlUHJlZml4QSIsInR5cGVQcmVmaXhCIiwidHlwZVByZWZpeEFOYW1lIiwiZ2V0TmFtZSIsInR5cGVQcmVmaXhCTmFtZSIsImNvbXByZXNzVHlwZVByZWZpeGVzTGVuZ3RoIiwidHlwZVByZWZpeCIsInR5cGVQcmVmaXhlc0luY2x1ZGVzVHlwZVByZWZpeCIsImluY2x1ZGVzIiwiZmlyc3RUeXBlUHJlZml4IiwidHlwZVByZWZpeFN0cmluZyIsImdldFN0cmluZyIsImluZm8iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVFnQkE7ZUFBQUE7O1FBTUFDO2VBQUFBOzs7MkJBWmU7OEJBRUY7QUFFN0IsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUdDLHlCQUFjO0FBRTNDLFNBQVNMLG1CQUFtQk0sWUFBWSxFQUFFQyxPQUFPLEVBQUVDLElBQUk7SUFDNUQsT0FBT0MsSUFBQUEscUJBQU8sRUFBQ0gsY0FBYyxDQUFDSSxhQUFhSCxTQUFTQztRQUNsRCxPQUFPRSxZQUFZQyxNQUFNLENBQUNDLElBQUFBLGlCQUFHLEVBQUNMLFNBQVNDLE9BQU9BO0lBQ2hELEdBQUdELFNBQVNDO0FBQ2Q7QUFFTyxTQUFTUCxtQkFBbUJZLFlBQVksRUFBRUMsY0FBYztJQUM3RCxJQUFJQyxxQkFBcUI7SUFFekIsTUFBTUMscUJBQXFCSCxhQUFhSSxNQUFNLEVBQ3hDQyx5QkFBeUI7V0FDcEJMO0tBQ0o7SUFFUFQsU0FBU2Msd0JBQXdCLENBQUNDLGFBQWFDO1FBQzdDLE1BQU1DLGtCQUFrQkYsWUFBWUcsT0FBTyxJQUNyQ0Msa0JBQWtCSCxZQUFZRSxPQUFPO1FBRTNDLElBQUlELG9CQUFvQkUsaUJBQWlCO1lBQ3ZDLE9BQU87UUFDVDtJQUNGO0lBRUEsTUFBTUMsNkJBQTZCTix1QkFBdUJELE1BQU07SUFFaEUsSUFBSUQscUJBQXFCUSw0QkFBNEI7UUFDbkRyQixPQUFPZSx3QkFBd0IsQ0FBQ087WUFDOUIsTUFBTUMsaUNBQWlDYixhQUFhYyxRQUFRLENBQUNGO1lBRTdELElBQUksQ0FBQ0MsZ0NBQWdDO2dCQUNuQyxPQUFPO1lBQ1Q7UUFDRjtRQUVBLE1BQU1FLGtCQUFrQjFCLE1BQU1XLGVBQ3hCWSxhQUFhRyxpQkFDYkMsbUJBQW1CSixXQUFXSyxTQUFTO1FBRTdDaEIsZUFBZWlCLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRUYsaUJBQWlCLDRCQUE0QixDQUFDO1FBRTFFZCxxQkFBcUI7SUFDdkI7SUFFQSxPQUFPQTtBQUNUIn0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-languages",
3
3
  "author": "James Smith",
4
- "version": "3.0.36",
4
+ "version": "3.0.38",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-languages",
7
7
  "description": "Occam's common language functionality.",
@@ -1,5 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ export function cut(forward, back) {
4
+ return (...forwardArguments) => {
5
+ forwardArguments.pop(); ///
6
+
7
+ return forward(...forwardArguments, back);
8
+ };
9
+ }
10
+
3
11
  export function one(array, callback, ...initialArguments) {
4
12
  const back = initialArguments.pop(),
5
13
  forward = initialArguments.pop(),
@@ -420,18 +428,18 @@ export function resolve(array, callback, ...initialArguments) {
420
428
  element,
421
429
  ...callbackArguments,
422
430
  (...forwardArguments) => {
423
- const success = true;
431
+ const passed = true;
424
432
 
425
- return forward(success, ...forwardArguments);
433
+ return forward(passed, ...forwardArguments);
426
434
  },
427
435
  (exception) => {
428
436
  if (exception) {
429
437
  return back(exception);
430
438
  }
431
439
 
432
- const success = false;
440
+ const passed = false;
433
441
 
434
- return forward(success, ...callbackArguments, back);
442
+ return forward(passed, ...callbackArguments, back);
435
443
  },
436
444
  index
437
445
  );
@@ -628,6 +636,7 @@ export function exists(callbacks, ...initialArguments) {
628
636
  }
629
637
 
630
638
  export default {
639
+ cut,
631
640
  one,
632
641
  some,
633
642
  each,
@@ -2,13 +2,13 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
- import { resolve } from "../utilities/continuation";
5
+ import { cut, resolve } from "../utilities/continuation";
6
6
 
7
7
  const { first, filter, compress } = arrayUtilities;
8
8
 
9
9
  export function verifyFileContexts(fileContexts, forward, back) {
10
10
  return resolve(fileContexts, (fileContext, forward, back) => {
11
- return fileContext.verify(forward, back);
11
+ return fileContext.verify(cut(forward, back), back);
12
12
  }, forward, back);
13
13
  }
14
14