Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@gmod/bbi

Package Overview
Dependencies
Maintainers
5
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@gmod/bbi - npm Package Compare versions

Comparing version 1.0.23 to 1.0.24

7

CHANGELOG.md

@@ -0,5 +1,10 @@

## [1.0.24](https://github.com/GMOD/bbi-js/compare/v1.0.23...v1.0.24) (2019-10-29)
- Fix the uniqueIds generated via the bigbed features
## [1.0.23](https://github.com/GMOD/bbi-js/compare/v1.0.22...v1.0.23) (2019-10-06)
- Small refactor of `filehandle.read()` to make it more robust

@@ -6,0 +11,0 @@

9

dist/blockView.js

@@ -368,3 +368,3 @@ "use strict";

key: "parseBigBedBlock",
value: function parseBigBedBlock(data, startOffset, request) {
value: function parseBigBedBlock(data, startOffset, offset, request) {
var items = [];

@@ -375,3 +375,3 @@ var currOffset = startOffset;

var res = this.bigBedParser.parse(data.slice(currOffset));
res.result.uniqueId = "bb-".concat(startOffset + currOffset);
res.result.uniqueId = "bb-".concat(offset + currOffset);
items.push(res.result);

@@ -478,3 +478,4 @@ currOffset += res.offset;

case 'bigbed':
observer.next(_this2.parseBigBedBlock(resultData, blockOffset, request));
// eslint-disable-next-line no-bitwise
observer.next(_this2.parseBigBedBlock(resultData, blockOffset, block.offset * (1 << 8), request));
break;

@@ -534,2 +535,2 @@

exports.BlockView = BlockView;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ibG9ja1ZpZXcudHMiXSwibmFtZXMiOlsiQklHX1dJR19UWVBFX0dSQVBIIiwiQklHX1dJR19UWVBFX1ZTVEVQIiwiQklHX1dJR19UWVBFX0ZTVEVQIiwiZ2V0UGFyc2VycyIsImlzQmlnRW5kaWFuIiwibGUiLCJzdW1tYXJ5UGFyc2VyIiwiUGFyc2VyIiwiZW5kaWFuZXNzIiwidWludDMyIiwiZmxvYXQiLCJsZWFmUGFyc2VyIiwidWludDgiLCJza2lwIiwidWludDE2IiwiY2hvaWNlIiwidGFnIiwiY2hvaWNlcyIsImFycmF5IiwibGVuZ3RoIiwidHlwZSIsInVpbnQ2NCIsImJpZ0JlZFBhcnNlciIsImludDMyIiwic3RyaW5nIiwiemVyb1Rlcm1pbmF0ZWQiLCJiaWdXaWdQYXJzZXIiLCJCbG9ja1ZpZXciLCJiYmkiLCJyZWZzQnlOYW1lIiwiY2lyVHJlZU9mZnNldCIsImNpclRyZWVMZW5ndGgiLCJpc0NvbXByZXNzZWQiLCJibG9ja1R5cGUiLCJFcnJvciIsIk9iamVjdCIsImFzc2lnbiIsImZlYXR1cmVDYWNoZSIsIkFib3J0YWJsZVByb21pc2VDYWNoZSIsImNhY2hlIiwiUXVpY2tMUlUiLCJtYXhTaXplIiwiZmlsbCIsInJlcXVlc3REYXRhIiwic2lnbmFsIiwib2Zmc2V0IiwicmVhZCIsIkJ1ZmZlciIsImFsbG9jIiwiYnVmZmVyIiwiY2hyTmFtZSIsInN0YXJ0IiwiZW5kIiwib2JzZXJ2ZXIiLCJvcHRzIiwiY2hySWQiLCJ1bmRlZmluZWQiLCJjb21wbGV0ZSIsInJlcXVlc3QiLCJjaXJUcmVlUHJvbWlzZSIsImNpckJsb2NrU2l6ZSIsInJlYWRVSW50MzJCRSIsInJlYWRVSW50MzJMRSIsImJsb2Nrc1RvRmV0Y2giLCJvdXRzdGFuZGluZyIsImZpbHRlckZlYXRzIiwiYiIsInN0YXJ0Q2hyb20iLCJzdGFydEJhc2UiLCJlbmRDaHJvbSIsImVuZEJhc2UiLCJjaXJGb2JTdGFydEZldGNoIiwib2ZmIiwiZnIiLCJsZXZlbCIsIm1heCIsIm1pbiIsImdldCIsInJlc3VsdEJ1ZmZlciIsImkiLCJjb250YWlucyIsImNpckZvYlJlY3VyMiIsInJlYWRGZWF0dXJlcyIsImVycm9yIiwiY2lyRm9iUmVjdXIiLCJtYXhDaXJCbG9ja1NwYW4iLCJzcGFucyIsIlJhbmdlIiwiYmxvY2tTcGFuIiwidW5pb24iLCJnZXRSYW5nZXMiLCJtYXAiLCJlIiwiY2lyQmxvY2tEYXRhIiwiZGF0YSIsInNsaWNlIiwicCIsInBhcnNlIiwicmVzdWx0IiwiY29uY2F0IiwiZmlsdGVyIiwibCIsImJsb2NrT2Zmc2V0IiwiYmxvY2tTaXplIiwicmVjdXJPZmZzZXRzIiwic3RhcnRPZmZzZXQiLCJmZWF0dXJlcyIsImN1cnJPZmZzZXQiLCJieXRlTGVuZ3RoIiwicmVzIiwicHVzaCIsIml0ZW1zIiwiZWx0IiwiY2hyb21JZCIsIm1heFNjb3JlIiwibWluU2NvcmUiLCJzY29yZSIsInN1bURhdGEiLCJ2YWxpZENudCIsInN1bW1hcnkiLCJmIiwiY29vcmRGaWx0ZXIiLCJ1bmlxdWVJZCIsImJ5dGVzIiwicmVzdWx0cyIsInN0ZXAiLCJpdGVtU3RlcCIsInNwYW4iLCJpdGVtU3BhbiIsImJsb2NrcyIsImJsb2NrR3JvdXBzVG9GZXRjaCIsIlByb21pc2UiLCJhbGwiLCJibG9ja0dyb3VwIiwiZm9yRWFjaCIsImJsb2NrIiwicmVzdWx0RGF0YSIsInpsaWIiLCJpbmZsYXRlU3luYyIsIm5leHQiLCJwYXJzZVN1bW1hcnlCbG9jayIsInBhcnNlQmlnV2lnQmxvY2siLCJwYXJzZUJpZ0JlZEJsb2NrIiwiY29uc29sZSIsIndhcm4iLCJyYW5nZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7QUFzQ0EsSUFBTUEsa0JBQWtCLEdBQUcsQ0FBM0I7QUFDQSxJQUFNQyxrQkFBa0IsR0FBRyxDQUEzQjtBQUNBLElBQU1DLGtCQUFrQixHQUFHLENBQTNCOztBQUVBLFNBQVNDLFVBQVQsQ0FB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QUFMLENBQVdPLFdBQVgsQ0FBakIsQ0FBYjtBQUNBQSxnQ0FBQUEsV0FBVyxHQUFHLENBQWQ7QUFDRDs7QUFDRCwwREFBaUIxRCxNQUFqQjs7QUFFQSxzQ0FBUVgsU0FBUjtBQUNFLHFDQUFLLFNBQUw7QUFDRW9CLGtDQUFBQSxRQUFRLENBQUNzRixJQUFULENBQWMsTUFBSSxDQUFDQyxpQkFBTCxDQUF1QkosVUFBdkIsRUFBbUNsQyxXQUFuQyxFQUFnRDVDLE9BQWhELENBQWQ7QUFDQTs7QUFDRixxQ0FBSyxRQUFMO0FBQ0VMLGtDQUFBQSxRQUFRLENBQUNzRixJQUFULENBQWMsTUFBSSxDQUFDRSxnQkFBTCxDQUFzQkwsVUFBdEIsRUFBa0NsQyxXQUFsQyxFQUErQzVDLE9BQS9DLENBQWQ7QUFDQTs7QUFDRixxQ0FBSyxRQUFMO0FBQ0VMLGtDQUFBQSxRQUFRLENBQUNzRixJQUFULENBQWMsTUFBSSxDQUFDRyxnQkFBTCxDQUFzQk4sVUFBdEIsRUFBa0NsQyxXQUFsQyxFQUErQzVDLE9BQS9DLENBQWQ7QUFDQTs7QUFDRjtBQUNFcUYsa0NBQUFBLE9BQU8sQ0FBQ0MsSUFBUixzQ0FBMkMvRyxTQUEzQztBQVhKO0FBYUQsNkJBdkJEOztBQUpxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBdkI7O0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JBREksQzs7O0FBK0JOb0IsZ0JBQUFBLFFBQVEsQ0FBQ0ksUUFBVDs7Ozs7OztBQUVBSixnQkFBQUEsUUFBUSxDQUFDOEIsS0FBVDs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDQTNDdUJxQyxDLEVBQVl5QixLLEVBQThCO0FBQ25FLGFBQU96QixDQUFDLENBQUNyRSxLQUFGLEdBQVU4RixLQUFLLENBQUM3RixHQUFoQixJQUF1Qm9FLENBQUMsQ0FBQ3BFLEdBQUYsSUFBUzZGLEtBQUssQ0FBQzlGLEtBQTdDO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tYml0d2lzZTogW1wiZXJyb3JcIiwgeyBcImFsbG93XCI6IFtcInxcIl0gfV0gKi9cbmltcG9ydCB7IE9ic2VydmVyIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gJ0BnbW9kL2JpbmFyeS1wYXJzZXInXG5pbXBvcnQgQWJvcnRhYmxlUHJvbWlzZUNhY2hlIGZyb20gJ2Fib3J0YWJsZS1wcm9taXNlLWNhY2hlJ1xuaW1wb3J0IHsgR2VuZXJpY0ZpbGVoYW5kbGUgfSBmcm9tICdnZW5lcmljLWZpbGVoYW5kbGUnXG5pbXBvcnQgemxpYiBmcm9tICd6bGliJ1xuaW1wb3J0IFF1aWNrTFJVIGZyb20gJ3F1aWNrLWxydSdcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuL2JiaSdcbmltcG9ydCBSYW5nZSBmcm9tICcuL3JhbmdlJ1xuaW1wb3J0IHsgZ3JvdXBCbG9ja3MsIGNoZWNrQWJvcnRTaWduYWwgfSBmcm9tICcuL3V0aWwnXG5cbmludGVyZmFjZSBDb29yZFJlcXVlc3Qge1xuICBjaHJJZDogbnVtYmVyXG4gIHN0YXJ0OiBudW1iZXJcbiAgZW5kOiBudW1iZXJcbn1cbmludGVyZmFjZSBEYXRhQmxvY2sge1xuICBzdGFydENocm9tOiBudW1iZXJcbiAgZW5kQ2hyb206IG51bWJlclxuICBzdGFydEJhc2U6IG51bWJlclxuICBlbmRCYXNlOiBudW1iZXJcbiAgdmFsaWRDbnQ6IG51bWJlclxuICBtaW5WYWw6IG51bWJlclxuICBtYXhWYWw6IG51bWJlclxuICBzdW1EYXRhOiBudW1iZXJcbiAgc3VtU3FEYXRhOiBudW1iZXJcbn1cbmludGVyZmFjZSBSZWFkRGF0YSB7XG4gIG9mZnNldDogbnVtYmVyXG4gIGxlbmd0aDogbnVtYmVyXG59XG5cbmludGVyZmFjZSBTdW1tYXJ5QmxvY2sge1xuICBjaHJvbUlkOiBudW1iZXJcbiAgc3RhcnQ6IG51bWJlclxuICBlbmQ6IG51bWJlclxuICB2YWxpZENudDogbnVtYmVyXG4gIG1pblNjb3JlOiBudW1iZXJcbiAgbWF4U2NvcmU6IG51bWJlclxuICBzdW1EYXRhOiBudW1iZXJcbiAgc3VtU3FEYXRhOiBudW1iZXJcbn1cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgc2lnbmFsPzogQWJvcnRTaWduYWxcbiAgcmVxdWVzdD86IENvb3JkUmVxdWVzdFxufVxuXG5jb25zdCBCSUdfV0lHX1RZUEVfR1JBUEggPSAxXG5jb25zdCBCSUdfV0lHX1RZUEVfVlNURVAgPSAyXG5jb25zdCBCSUdfV0lHX1RZUEVfRlNURVAgPSAzXG5cbmZ1bmN0aW9uIGdldFBhcnNlcnMoaXNCaWdFbmRpYW46IGJvb2xlYW4pOiBhbnkge1xuICBjb25zdCBsZSA9IGlzQmlnRW5kaWFuID8gJ2JpZycgOiAnbGl0dGxlJ1xuICBjb25zdCBzdW1tYXJ5UGFyc2VyID0gbmV3IFBhcnNlcigpXG4gICAgLmVuZGlhbmVzcyhsZSlcbiAgICAudWludDMyKCdjaHJvbUlkJylcbiAgICAudWludDMyKCdzdGFydCcpXG4gICAgLnVpbnQzMignZW5kJylcbiAgICAudWludDMyKCd2YWxpZENudCcpXG4gICAgLmZsb2F0KCdtaW5TY29yZScpXG4gICAgLmZsb2F0KCdtYXhTY29yZScpXG4gICAgLmZsb2F0KCdzdW1EYXRhJylcbiAgICAuZmxvYXQoJ3N1bVNxRGF0YScpXG5cbiAgY29uc3QgbGVhZlBhcnNlciA9IG5ldyBQYXJzZXIoKVxuICAgIC5lbmRpYW5lc3MobGUpXG4gICAgLnVpbnQ4KCdpc0xlYWYnKVxuICAgIC5za2lwKDEpXG4gICAgLnVpbnQxNignY250JylcbiAgICAuY2hvaWNlKHtcbiAgICAgIHRhZzogJ2lzTGVhZicsXG4gICAgICBjaG9pY2VzOiB7XG4gICAgICAgIDE6IG5ldyBQYXJzZXIoKS5hcnJheSgnYmxvY2tzVG9GZXRjaCcsIHtcbiAgICAgICAgICBsZW5ndGg6ICdjbnQnLFxuICAgICAgICAgIHR5cGU6IG5ldyBQYXJzZXIoKVxuICAgICAgICAgICAgLnVpbnQzMignc3RhcnRDaHJvbScpXG4gICAgICAgICAgICAudWludDMyKCdzdGFydEJhc2UnKVxuICAgICAgICAgICAgLnVpbnQzMignZW5kQ2hyb20nKVxuICAgICAgICAgICAgLnVpbnQzMignZW5kQmFzZScpXG4gICAgICAgICAgICAudWludDY0KCdibG9ja09mZnNldCcpXG4gICAgICAgICAgICAudWludDY0KCdibG9ja1NpemUnKSxcbiAgICAgICAgfSksXG4gICAgICAgIDA6IG5ldyBQYXJzZXIoKS5hcnJheSgncmVjdXJPZmZzZXRzJywge1xuICAgICAgICAgIGxlbmd0aDogJ2NudCcsXG4gICAgICAgICAgdHlwZTogbmV3IFBhcnNlcigpXG4gICAgICAgICAgICAudWludDMyKCdzdGFydENocm9tJylcbiAgICAgICAgICAgIC51aW50MzIoJ3N0YXJ0QmFzZScpXG4gICAgICAgICAgICAudWludDMyKCdlbmRDaHJvbScpXG4gICAgICAgICAgICAudWludDMyKCdlbmRCYXNlJylcbiAgICAgICAgICAgIC51aW50NjQoJ2Jsb2NrT2Zmc2V0JyksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KVxuICBjb25zdCBiaWdCZWRQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC51aW50MzIoJ2Nocm9tSWQnKVxuICAgIC5pbnQzMignc3RhcnQnKVxuICAgIC5pbnQzMignZW5kJylcbiAgICAuc3RyaW5nKCdyZXN0Jywge1xuICAgICAgemVyb1Rlcm1pbmF0ZWQ6IHRydWUsXG4gICAgfSlcblxuICBjb25zdCBiaWdXaWdQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC5za2lwKDQpXG4gICAgLmludDMyKCdibG9ja1N0YXJ0JylcbiAgICAuc2tpcCg0KVxuICAgIC51aW50MzIoJ2l0ZW1TdGVwJylcbiAgICAudWludDMyKCdpdGVtU3BhbicpXG4gICAgLnVpbnQ4KCdibG9ja1R5cGUnKVxuICAgIC5za2lwKDEpXG4gICAgLnVpbnQxNignaXRlbUNvdW50JylcbiAgICAuY2hvaWNlKHtcbiAgICAgIHRhZzogJ2Jsb2NrVHlwZScsXG4gICAgICBjaG9pY2VzOiB7XG4gICAgICAgIFtCSUdfV0lHX1RZUEVfRlNURVBdOiBuZXcgUGFyc2VyKCkuYXJyYXkoJ2l0ZW1zJywge1xuICAgICAgICAgIGxlbmd0aDogJ2l0ZW1Db3VudCcsXG4gICAgICAgICAgdHlwZTogbmV3IFBhcnNlcigpLmZsb2F0KCdzY29yZScpLFxuICAgICAgICB9KSxcbiAgICAgICAgW0JJR19XSUdfVFlQRV9WU1RFUF06IG5ldyBQYXJzZXIoKS5hcnJheSgnaXRlbXMnLCB7XG4gICAgICAgICAgbGVuZ3RoOiAnaXRlbUNvdW50JyxcbiAgICAgICAgICB0eXBlOiBuZXcgUGFyc2VyKCkuaW50MzIoJ3N0YXJ0JykuZmxvYXQoJ3Njb3JlJyksXG4gICAgICAgIH0pLFxuICAgICAgICBbQklHX1dJR19UWVBFX0dSQVBIXTogbmV3IFBhcnNlcigpLmFycmF5KCdpdGVtcycsIHtcbiAgICAgICAgICBsZW5ndGg6ICdpdGVtQ291bnQnLFxuICAgICAgICAgIHR5cGU6IG5ldyBQYXJzZXIoKVxuICAgICAgICAgICAgLmludDMyKCdzdGFydCcpXG4gICAgICAgICAgICAuaW50MzIoJ2VuZCcpXG4gICAgICAgICAgICAuZmxvYXQoJ3Njb3JlJyksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KVxuICByZXR1cm4ge1xuICAgIGJpZ1dpZ1BhcnNlcixcbiAgICBiaWdCZWRQYXJzZXIsXG4gICAgc3VtbWFyeVBhcnNlcixcbiAgICBsZWFmUGFyc2VyLFxuICB9XG59XG5cbi8qKlxuICogVmlldyBpbnRvIGEgc3Vic2V0IG9mIHRoZSBkYXRhIGluIGEgQmlnV2lnIGZpbGUuXG4gKlxuICogQWRhcHRlZCBieSBSb2JlcnQgQnVlbHMgYW5kIENvbGluIERpZXNoIGZyb20gYmlnd2lnLmpzIGluIHRoZSBEYWxsaWFuY2UgR2Vub21lXG4gKiBFeHBsb3JlciBieSBUaG9tYXMgRG93bi5cbiAqIEBjb25zdHJ1Y3RzXG4gKi9cblxuZXhwb3J0IGNsYXNzIEJsb2NrVmlldyB7XG4gIHByaXZhdGUgY2lyVHJlZU9mZnNldDogbnVtYmVyXG5cbiAgcHJpdmF0ZSBjaXJUcmVlTGVuZ3RoOiBudW1iZXJcblxuICBwcml2YXRlIGJiaTogR2VuZXJpY0ZpbGVoYW5kbGVcblxuICBwcml2YXRlIGlzQ29tcHJlc3NlZDogYm9vbGVhblxuXG4gIHByaXZhdGUgaXNCaWdFbmRpYW46IGJvb2xlYW5cblxuICBwcml2YXRlIHJlZnNCeU5hbWU6IGFueVxuXG4gIHByaXZhdGUgYmxvY2tUeXBlOiBzdHJpbmdcblxuICBwcml2YXRlIGNpclRyZWVQcm9taXNlPzogUHJvbWlzZTx7IGJ5dGVzUmVhZDogbnVtYmVyOyBidWZmZXI6IEJ1ZmZlciB9PlxuXG4gIHByaXZhdGUgZmVhdHVyZUNhY2hlOiBhbnlcblxuICBwcml2YXRlIGxlYWZQYXJzZXI6IGFueVxuXG4gIHByaXZhdGUgYmlnV2lnUGFyc2VyOiBhbnlcblxuICBwcml2YXRlIGJpZ0JlZFBhcnNlcjogYW55XG5cbiAgcHJpdmF0ZSBzdW1tYXJ5UGFyc2VyOiBhbnlcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgYmJpOiBhbnksXG4gICAgcmVmc0J5TmFtZTogYW55LFxuICAgIGNpclRyZWVPZmZzZXQ6IG51bWJlcixcbiAgICBjaXJUcmVlTGVuZ3RoOiBudW1iZXIsXG4gICAgaXNCaWdFbmRpYW46IGJvb2xlYW4sXG4gICAgaXNDb21wcmVzc2VkOiBib29sZWFuLFxuICAgIGJsb2NrVHlwZTogc3RyaW5nLFxuICApIHtcbiAgICBpZiAoIShjaXJUcmVlT2Zmc2V0ID49IDApKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgY2lyVHJlZU9mZnNldCEnKVxuICAgIGlmICghKGNpclRyZWVMZW5ndGggPiAwKSkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGNpclRyZWVMZW5ndGghJylcblxuICAgIHRoaXMuY2lyVHJlZU9mZnNldCA9IGNpclRyZWVPZmZzZXRcbiAgICB0aGlzLmNpclRyZWVMZW5ndGggPSBjaXJUcmVlTGVuZ3RoXG4gICAgdGhpcy5pc0NvbXByZXNzZWQgPSBpc0NvbXByZXNzZWRcbiAgICB0aGlzLnJlZnNCeU5hbWUgPSByZWZzQnlOYW1lXG4gICAgdGhpcy5pc0JpZ0VuZGlhbiA9IGlzQmlnRW5kaWFuXG4gICAgdGhpcy5iYmkgPSBiYmlcbiAgICB0aGlzLmJsb2NrVHlwZSA9IGJsb2NrVHlwZVxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgZ2V0UGFyc2Vycyhpc0JpZ0VuZGlhbikpXG5cbiAgICB0aGlzLmZlYXR1cmVDYWNoZSA9IG5ldyBBYm9ydGFibGVQcm9taXNlQ2FjaGUoe1xuICAgICAgY2FjaGU6IG5ldyBRdWlja0xSVSh7IG1heFNpemU6IDEwMDAgfSksXG5cbiAgICAgIGFzeW5jIGZpbGwocmVxdWVzdERhdGE6IFJlYWREYXRhLCBzaWduYWw6IEFib3J0U2lnbmFsKSB7XG4gICAgICAgIGNvbnN0IHsgbGVuZ3RoLCBvZmZzZXQgfSA9IHJlcXVlc3REYXRhXG4gICAgICAgIGNvbnN0IHsgYnVmZmVyIH0gPSBhd2FpdCBiYmkucmVhZChCdWZmZXIuYWxsb2MobGVuZ3RoKSwgMCwgbGVuZ3RoLCBvZmZzZXQsIHsgc2lnbmFsIH0pXG4gICAgICAgIHJldHVybiBidWZmZXJcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWFkV2lnRGF0YShcbiAgICBjaHJOYW1lOiBzdHJpbmcsXG4gICAgc3RhcnQ6IG51bWJlcixcbiAgICBlbmQ6IG51bWJlcixcbiAgICBvYnNlcnZlcjogT2JzZXJ2ZXI8RmVhdHVyZVtdPixcbiAgICBvcHRzOiBPcHRpb25zLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyByZWZzQnlOYW1lLCBiYmksIGNpclRyZWVPZmZzZXQsIGlzQmlnRW5kaWFuIH0gPSB0aGlzXG4gICAgICBjb25zdCB7IHNpZ25hbCB9ID0gb3B0c1xuICAgICAgY29uc3QgY2hySWQgPSByZWZzQnlOYW1lW2Nock5hbWVdXG4gICAgICBpZiAoY2hySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXG4gICAgICB9XG4gICAgICBjb25zdCByZXF1ZXN0ID0geyBjaHJJZCwgc3RhcnQsIGVuZCB9XG4gICAgICBpZiAoIXRoaXMuY2lyVHJlZVByb21pc2UpIHtcbiAgICAgICAgdGhpcy5jaXJUcmVlUHJvbWlzZSA9IGJiaS5yZWFkKEJ1ZmZlci5hbGxvYyg0OCksIDAsIDQ4LCBjaXJUcmVlT2Zmc2V0LCB7IHNpZ25hbCB9KVxuICAgICAgfVxuICAgICAgY29uc3QgeyBidWZmZXIgfSA9IGF3YWl0IHRoaXMuY2lyVHJlZVByb21pc2VcbiAgICAgIGNvbnN0IGNpckJsb2NrU2l6ZSA9IGlzQmlnRW5kaWFuID8gYnVmZmVyLnJlYWRVSW50MzJCRSg0KSA6IGJ1ZmZlci5yZWFkVUludDMyTEUoNClcbiAgICAgIGxldCBibG9ja3NUb0ZldGNoOiBhbnlbXSA9IFtdXG4gICAgICBsZXQgb3V0c3RhbmRpbmcgPSAwXG5cbiAgICAgIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgbGV0IGNpckZvYlJlY3VyMjogRnVuY3Rpb25cblxuICAgICAgY29uc3QgZmlsdGVyRmVhdHMgPSAoYjogRGF0YUJsb2NrKTogYm9vbGVhbiA9PlxuICAgICAgICAoYi5zdGFydENocm9tIDwgY2hySWQgfHwgKGIuc3RhcnRDaHJvbSA9PT0gY2hySWQgJiYgYi5zdGFydEJhc2UgPD0gZW5kKSkgJiZcbiAgICAgICAgKGIuZW5kQ2hyb20gPiBjaHJJZCB8fCAoYi5lbmRDaHJvbSA9PT0gY2hySWQgJiYgYi5lbmRCYXNlID49IHN0YXJ0KSlcblxuICAgICAgY29uc3QgY2lyRm9iU3RhcnRGZXRjaCA9IGFzeW5jIChvZmY6IGFueSwgZnI6IGFueSwgbGV2ZWw6IG51bWJlcik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IGZyLm1heCgpIC0gZnIubWluKClcbiAgICAgICAgICBjb25zdCBvZmZzZXQgPSBmci5taW4oKVxuICAgICAgICAgIGNvbnN0IHJlc3VsdEJ1ZmZlciA9IGF3YWl0IHRoaXMuZmVhdHVyZUNhY2hlLmdldChgJHtsZW5ndGh9XyR7b2Zmc2V0fWAsIHsgbGVuZ3RoLCBvZmZzZXQgfSwgc2lnbmFsKVxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2ZmLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBpZiAoZnIuY29udGFpbnMob2ZmW2ldKSkge1xuICAgICAgICAgICAgICBjaXJGb2JSZWN1cjIocmVzdWx0QnVmZmVyLCBvZmZbaV0gLSBvZmZzZXQsIGxldmVsLCBvYnNlcnZlciwgb3B0cylcbiAgICAgICAgICAgICAgb3V0c3RhbmRpbmcgLT0gMVxuICAgICAgICAgICAgICBpZiAob3V0c3RhbmRpbmcgPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWRGZWF0dXJlcyhvYnNlcnZlciwgYmxvY2tzVG9GZXRjaCwgeyAuLi5vcHRzLCByZXF1ZXN0IH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBjaXJGb2JSZWN1ciA9IChvZmZzZXQ6IGFueSwgbGV2ZWw6IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG91dHN0YW5kaW5nICs9IG9mZnNldC5sZW5ndGhcblxuICAgICAgICAgIGNvbnN0IG1heENpckJsb2NrU3BhbiA9IDQgKyBjaXJCbG9ja1NpemUgKiAzMiAvLyBVcHBlciBib3VuZCBvbiBzaXplLCBiYXNlZCBvbiBhIGNvbXBsZXRlbHkgZnVsbCBsZWFmIG5vZGUuXG4gICAgICAgICAgbGV0IHNwYW5zID0gbmV3IFJhbmdlKG9mZnNldFswXSwgb2Zmc2V0WzBdICsgbWF4Q2lyQmxvY2tTcGFuKVxuICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgb2Zmc2V0Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBibG9ja1NwYW4gPSBuZXcgUmFuZ2Uob2Zmc2V0W2ldLCBvZmZzZXRbaV0gKyBtYXhDaXJCbG9ja1NwYW4pXG4gICAgICAgICAgICBzcGFucyA9IHNwYW5zLnVuaW9uKGJsb2NrU3BhbilcbiAgICAgICAgICB9XG4gICAgICAgICAgc3BhbnMuZ2V0UmFuZ2VzKCkubWFwKChmcjogUmFuZ2UpID0+IGNpckZvYlN0YXJ0RmV0Y2gob2Zmc2V0LCBmciwgbGV2ZWwpKVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjaXJGb2JSZWN1cjIgPSAoY2lyQmxvY2tEYXRhOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBsZXZlbDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IGNpckJsb2NrRGF0YS5zbGljZShvZmZzZXQpXG5cbiAgICAgICAgICBjb25zdCBwID0gdGhpcy5sZWFmUGFyc2VyLnBhcnNlKGRhdGEpLnJlc3VsdFxuICAgICAgICAgIGlmIChwLmJsb2Nrc1RvRmV0Y2gpIHtcbiAgICAgICAgICAgIGJsb2Nrc1RvRmV0Y2ggPSBibG9ja3NUb0ZldGNoLmNvbmNhdChcbiAgICAgICAgICAgICAgcC5ibG9ja3NUb0ZldGNoXG4gICAgICAgICAgICAgICAgLmZpbHRlcihmaWx0ZXJGZWF0cylcbiAgICAgICAgICAgICAgICAubWFwKChsOiBhbnkpOiBhbnkgPT4gKHsgb2Zmc2V0OiBsLmJsb2NrT2Zmc2V0LCBsZW5ndGg6IGwuYmxvY2tTaXplIH0pKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHAucmVjdXJPZmZzZXRzKSB7XG4gICAgICAgICAgICBjb25zdCByZWN1ck9mZnNldHMgPSBwLnJlY3VyT2Zmc2V0cy5maWx0ZXIoZmlsdGVyRmVhdHMpLm1hcCgobDogYW55KTogYW55ID0+IGwuYmxvY2tPZmZzZXQpXG4gICAgICAgICAgICBpZiAocmVjdXJPZmZzZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgY2lyRm9iUmVjdXIocmVjdXJPZmZzZXRzLCBsZXZlbCArIDEpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2lyRm9iUmVjdXIoW2NpclRyZWVPZmZzZXQgKyA0OF0sIDEpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlU3VtbWFyeUJsb2NrKGRhdGE6IEJ1ZmZlciwgc3RhcnRPZmZzZXQ6IG51bWJlciwgcmVxdWVzdD86IENvb3JkUmVxdWVzdCk6IEZlYXR1cmVbXSB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSBbXVxuICAgIGxldCBjdXJyT2Zmc2V0ID0gc3RhcnRPZmZzZXRcbiAgICB3aGlsZSAoY3Vyck9mZnNldCA8IGRhdGEuYnl0ZUxlbmd0aCkge1xuICAgICAgY29uc3QgcmVzID0gdGhpcy5zdW1tYXJ5UGFyc2VyLnBhcnNlKGRhdGEuc2xpY2UoY3Vyck9mZnNldCkpXG4gICAgICBmZWF0dXJlcy5wdXNoKHJlcy5yZXN1bHQpXG4gICAgICBjdXJyT2Zmc2V0ICs9IHJlcy5vZmZzZXRcbiAgICB9XG4gICAgbGV0IGl0ZW1zID0gZmVhdHVyZXNcbiAgICBpZiAocmVxdWVzdCkgaXRlbXMgPSBpdGVtcy5maWx0ZXIoKGVsdDogU3VtbWFyeUJsb2NrKTogYm9vbGVhbiA9PiBlbHQuY2hyb21JZCA9PT0gcmVxdWVzdC5jaHJJZClcbiAgICBpdGVtcyA9IGl0ZW1zLm1hcChcbiAgICAgIChlbHQ6IFN1bW1hcnlCbG9jayk6IEZlYXR1cmUgPT4gKHtcbiAgICAgICAgc3RhcnQ6IGVsdC5zdGFydCxcbiAgICAgICAgZW5kOiBlbHQuZW5kLFxuICAgICAgICBtYXhTY29yZTogZWx0Lm1heFNjb3JlLFxuICAgICAgICBtaW5TY29yZTogZWx0Lm1pblNjb3JlLFxuICAgICAgICBzY29yZTogZWx0LnN1bURhdGEgLyAoZWx0LnZhbGlkQ250IHx8IDEpLFxuICAgICAgICBzdW1tYXJ5OiB0cnVlLFxuICAgICAgfSksXG4gICAgKVxuICAgIHJldHVybiByZXF1ZXN0ID8gaXRlbXMuZmlsdGVyKGYgPT4gQmxvY2tWaWV3LmNvb3JkRmlsdGVyKGYsIHJlcXVlc3QpKSA6IGl0ZW1zXG4gIH1cblxuICBwcml2YXRlIHBhcnNlQmlnQmVkQmxvY2soZGF0YTogQnVmZmVyLCBzdGFydE9mZnNldDogbnVtYmVyLCByZXF1ZXN0PzogQ29vcmRSZXF1ZXN0KTogRmVhdHVyZVtdIHtcbiAgICBjb25zdCBpdGVtcyA9IFtdXG4gICAgbGV0IGN1cnJPZmZzZXQgPSBzdGFydE9mZnNldFxuICAgIHdoaWxlIChjdXJyT2Zmc2V0IDwgZGF0YS5ieXRlTGVuZ3RoKSB7XG4gICAgICBjb25zdCByZXMgPSB0aGlzLmJpZ0JlZFBhcnNlci5wYXJzZShkYXRhLnNsaWNlKGN1cnJPZmZzZXQpKVxuICAgICAgcmVzLnJlc3VsdC51bmlxdWVJZCA9IGBiYi0ke3N0YXJ0T2Zmc2V0ICsgY3Vyck9mZnNldH1gXG4gICAgICBpdGVtcy5wdXNoKHJlcy5yZXN1bHQpXG4gICAgICBjdXJyT2Zmc2V0ICs9IHJlcy5vZmZzZXRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxdWVzdCA/IGl0ZW1zLmZpbHRlcigoZjogYW55KSA9PiBCbG9ja1ZpZXcuY29vcmRGaWx0ZXIoZiwgcmVxdWVzdCkpIDogaXRlbXNcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VCaWdXaWdCbG9jayhieXRlczogQnVmZmVyLCBzdGFydE9mZnNldDogbnVtYmVyLCByZXF1ZXN0PzogQ29vcmRSZXF1ZXN0KTogRmVhdHVyZVtdIHtcbiAgICBjb25zdCBkYXRhID0gYnl0ZXMuc2xpY2Uoc3RhcnRPZmZzZXQpXG4gICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuYmlnV2lnUGFyc2VyLnBhcnNlKGRhdGEpLnJlc3VsdFxuICAgIGNvbnN0IHsgaXRlbXMgfSA9IHJlc3VsdHNcbiAgICBpZiAocmVzdWx0cy5ibG9ja1R5cGUgPT09IEJJR19XSUdfVFlQRV9GU1RFUCkge1xuICAgICAgY29uc3QgeyBpdGVtU3RlcDogc3RlcCwgaXRlbVNwYW46IHNwYW4gfSA9IHJlc3VsdHNcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaXRlbXNbaV0uc3RhcnQgPSBpICogc3RlcFxuICAgICAgICBpdGVtc1tpXS5lbmQgPSBpICogc3RlcCArIHNwYW5cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJlc3VsdHMuYmxvY2tUeXBlID09PSBCSUdfV0lHX1RZUEVfVlNURVApIHtcbiAgICAgIGNvbnN0IHsgaXRlbVNwYW46IHNwYW4gfSA9IHJlc3VsdHNcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaXRlbXNbaV0uZW5kID0gaXRlbXNbaV0uc3RhcnQgKyBzcGFuXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXF1ZXN0ID8gaXRlbXMuZmlsdGVyKChmOiBhbnkpID0+IEJsb2NrVmlldy5jb29yZEZpbHRlcihmLCByZXF1ZXN0KSkgOiBpdGVtc1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY29vcmRGaWx0ZXIoZjogRmVhdHVyZSwgcmFuZ2U6IENvb3JkUmVxdWVzdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmLnN0YXJ0IDwgcmFuZ2UuZW5kICYmIGYuZW5kID49IHJhbmdlLnN0YXJ0XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVhZEZlYXR1cmVzKG9ic2VydmVyOiBPYnNlcnZlcjxGZWF0dXJlW10+LCBibG9ja3M6IGFueSwgb3B0czogT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgYmxvY2tUeXBlLCBpc0NvbXByZXNzZWQgfSA9IHRoaXNcbiAgICAgIGNvbnN0IHsgc2lnbmFsLCByZXF1ZXN0IH0gPSBvcHRzXG4gICAgICBjb25zdCBibG9ja0dyb3Vwc1RvRmV0Y2ggPSBncm91cEJsb2NrcyhibG9ja3MpXG4gICAgICBjaGVja0Fib3J0U2lnbmFsKHNpZ25hbClcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBibG9ja0dyb3Vwc1RvRmV0Y2gubWFwKGFzeW5jIChibG9ja0dyb3VwOiBhbnkpID0+IHtcbiAgICAgICAgICBjaGVja0Fib3J0U2lnbmFsKHNpZ25hbClcbiAgICAgICAgICBjb25zdCB7IGxlbmd0aCwgb2Zmc2V0IH0gPSBibG9ja0dyb3VwXG4gICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmVhdHVyZUNhY2hlLmdldChgJHtsZW5ndGh9XyR7b2Zmc2V0fWAsIGJsb2NrR3JvdXAsIHNpZ25hbClcbiAgICAgICAgICBibG9ja0dyb3VwLmJsb2Nrcy5mb3JFYWNoKChibG9jazogYW55KSA9PiB7XG4gICAgICAgICAgICBjaGVja0Fib3J0U2lnbmFsKHNpZ25hbClcbiAgICAgICAgICAgIGxldCBibG9ja09mZnNldCA9IGJsb2NrLm9mZnNldCAtIGJsb2NrR3JvdXAub2Zmc2V0XG4gICAgICAgICAgICBsZXQgcmVzdWx0RGF0YSA9IGRhdGFcbiAgICAgICAgICAgIGlmIChpc0NvbXByZXNzZWQpIHtcbiAgICAgICAgICAgICAgcmVzdWx0RGF0YSA9IHpsaWIuaW5mbGF0ZVN5bmMoZGF0YS5zbGljZShibG9ja09mZnNldCkpXG4gICAgICAgICAgICAgIGJsb2NrT2Zmc2V0ID0gMFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2hlY2tBYm9ydFNpZ25hbChzaWduYWwpXG5cbiAgICAgICAgICAgIHN3aXRjaCAoYmxvY2tUeXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ3N1bW1hcnknOlxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodGhpcy5wYXJzZVN1bW1hcnlCbG9jayhyZXN1bHREYXRhLCBibG9ja09mZnNldCwgcmVxdWVzdCkpXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgY2FzZSAnYmlnd2lnJzpcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHRoaXMucGFyc2VCaWdXaWdCbG9jayhyZXN1bHREYXRhLCBibG9ja09mZnNldCwgcmVxdWVzdCkpXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgY2FzZSAnYmlnYmVkJzpcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHRoaXMucGFyc2VCaWdCZWRCbG9jayhyZXN1bHREYXRhLCBibG9ja09mZnNldCwgcmVxdWVzdCkpXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYERvbid0IGtub3cgd2hhdCB0byBkbyB3aXRoICR7YmxvY2tUeXBlfWApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSlcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ibG9ja1ZpZXcudHMiXSwibmFtZXMiOlsiQklHX1dJR19UWVBFX0dSQVBIIiwiQklHX1dJR19UWVBFX1ZTVEVQIiwiQklHX1dJR19UWVBFX0ZTVEVQIiwiZ2V0UGFyc2VycyIsImlzQmlnRW5kaWFuIiwibGUiLCJzdW1tYXJ5UGFyc2VyIiwiUGFyc2VyIiwiZW5kaWFuZXNzIiwidWludDMyIiwiZmxvYXQiLCJsZWFmUGFyc2VyIiwidWludDgiLCJza2lwIiwidWludDE2IiwiY2hvaWNlIiwidGFnIiwiY2hvaWNlcyIsImFycmF5IiwibGVuZ3RoIiwidHlwZSIsInVpbnQ2NCIsImJpZ0JlZFBhcnNlciIsImludDMyIiwic3RyaW5nIiwiemVyb1Rlcm1pbmF0ZWQiLCJiaWdXaWdQYXJzZXIiLCJCbG9ja1ZpZXciLCJiYmkiLCJyZWZzQnlOYW1lIiwiY2lyVHJlZU9mZnNldCIsImNpclRyZWVMZW5ndGgiLCJpc0NvbXByZXNzZWQiLCJibG9ja1R5cGUiLCJFcnJvciIsIk9iamVjdCIsImFzc2lnbiIsImZlYXR1cmVDYWNoZSIsIkFib3J0YWJsZVByb21pc2VDYWNoZSIsImNhY2hlIiwiUXVpY2tMUlUiLCJtYXhTaXplIiwiZmlsbCIsInJlcXVlc3REYXRhIiwic2lnbmFsIiwib2Zmc2V0IiwicmVhZCIsIkJ1ZmZlciIsImFsbG9jIiwiYnVmZmVyIiwiY2hyTmFtZSIsInN0YXJ0IiwiZW5kIiwib2JzZXJ2ZXIiLCJvcHRzIiwiY2hySWQiLCJ1bmRlZmluZWQiLCJjb21wbGV0ZSIsInJlcXVlc3QiLCJjaXJUcmVlUHJvbWlzZSIsImNpckJsb2NrU2l6ZSIsInJlYWRVSW50MzJCRSIsInJlYWRVSW50MzJMRSIsImJsb2Nrc1RvRmV0Y2giLCJvdXRzdGFuZGluZyIsImZpbHRlckZlYXRzIiwiYiIsInN0YXJ0Q2hyb20iLCJzdGFydEJhc2UiLCJlbmRDaHJvbSIsImVuZEJhc2UiLCJjaXJGb2JTdGFydEZldGNoIiwib2ZmIiwiZnIiLCJsZXZlbCIsIm1heCIsIm1pbiIsImdldCIsInJlc3VsdEJ1ZmZlciIsImkiLCJjb250YWlucyIsImNpckZvYlJlY3VyMiIsInJlYWRGZWF0dXJlcyIsImVycm9yIiwiY2lyRm9iUmVjdXIiLCJtYXhDaXJCbG9ja1NwYW4iLCJzcGFucyIsIlJhbmdlIiwiYmxvY2tTcGFuIiwidW5pb24iLCJnZXRSYW5nZXMiLCJtYXAiLCJlIiwiY2lyQmxvY2tEYXRhIiwiZGF0YSIsInNsaWNlIiwicCIsInBhcnNlIiwicmVzdWx0IiwiY29uY2F0IiwiZmlsdGVyIiwibCIsImJsb2NrT2Zmc2V0IiwiYmxvY2tTaXplIiwicmVjdXJPZmZzZXRzIiwic3RhcnRPZmZzZXQiLCJmZWF0dXJlcyIsImN1cnJPZmZzZXQiLCJieXRlTGVuZ3RoIiwicmVzIiwicHVzaCIsIml0ZW1zIiwiZWx0IiwiY2hyb21JZCIsIm1heFNjb3JlIiwibWluU2NvcmUiLCJzY29yZSIsInN1bURhdGEiLCJ2YWxpZENudCIsInN1bW1hcnkiLCJmIiwiY29vcmRGaWx0ZXIiLCJ1bmlxdWVJZCIsImJ5dGVzIiwicmVzdWx0cyIsInN0ZXAiLCJpdGVtU3RlcCIsInNwYW4iLCJpdGVtU3BhbiIsImJsb2NrcyIsImJsb2NrR3JvdXBzVG9GZXRjaCIsIlByb21pc2UiLCJhbGwiLCJibG9ja0dyb3VwIiwiZm9yRWFjaCIsImJsb2NrIiwicmVzdWx0RGF0YSIsInpsaWIiLCJpbmZsYXRlU3luYyIsIm5leHQiLCJwYXJzZVN1bW1hcnlCbG9jayIsInBhcnNlQmlnV2lnQmxvY2siLCJwYXJzZUJpZ0JlZEJsb2NrIiwiY29uc29sZSIsIndhcm4iLCJyYW5nZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7QUFzQ0EsSUFBTUEsa0JBQWtCLEdBQUcsQ0FBM0I7QUFDQSxJQUFNQyxrQkFBa0IsR0FBRyxDQUEzQjtBQUNBLElBQU1DLGtCQUFrQixHQUFHLENBQTNCOztBQUVBLFNBQVNDLFVBQVQsQ0FB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IjpbIi8qIGVzbGludCBuby1iaXR3aXNlOiBbXCJlcnJvclwiLCB7IFwiYWxsb3dcIjogW1wifFwiXSB9XSAqL1xuaW1wb3J0IHsgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSAnQGdtb2QvYmluYXJ5LXBhcnNlcidcbmltcG9ydCBBYm9ydGFibGVQcm9taXNlQ2FjaGUgZnJvbSAnYWJvcnRhYmxlLXByb21pc2UtY2FjaGUnXG5pbXBvcnQgeyBHZW5lcmljRmlsZWhhbmRsZSB9IGZyb20gJ2dlbmVyaWMtZmlsZWhhbmRsZSdcbmltcG9ydCB6bGliIGZyb20gJ3psaWInXG5pbXBvcnQgUXVpY2tMUlUgZnJvbSAncXVpY2stbHJ1J1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4vYmJpJ1xuaW1wb3J0IFJhbmdlIGZyb20gJy4vcmFuZ2UnXG5pbXBvcnQgeyBncm91cEJsb2NrcywgY2hlY2tBYm9ydFNpZ25hbCB9IGZyb20gJy4vdXRpbCdcblxuaW50ZXJmYWNlIENvb3JkUmVxdWVzdCB7XG4gIGNocklkOiBudW1iZXJcbiAgc3RhcnQ6IG51bWJlclxuICBlbmQ6IG51bWJlclxufVxuaW50ZXJmYWNlIERhdGFCbG9jayB7XG4gIHN0YXJ0Q2hyb206IG51bWJlclxuICBlbmRDaHJvbTogbnVtYmVyXG4gIHN0YXJ0QmFzZTogbnVtYmVyXG4gIGVuZEJhc2U6IG51bWJlclxuICB2YWxpZENudDogbnVtYmVyXG4gIG1pblZhbDogbnVtYmVyXG4gIG1heFZhbDogbnVtYmVyXG4gIHN1bURhdGE6IG51bWJlclxuICBzdW1TcURhdGE6IG51bWJlclxufVxuaW50ZXJmYWNlIFJlYWREYXRhIHtcbiAgb2Zmc2V0OiBudW1iZXJcbiAgbGVuZ3RoOiBudW1iZXJcbn1cblxuaW50ZXJmYWNlIFN1bW1hcnlCbG9jayB7XG4gIGNocm9tSWQ6IG51bWJlclxuICBzdGFydDogbnVtYmVyXG4gIGVuZDogbnVtYmVyXG4gIHZhbGlkQ250OiBudW1iZXJcbiAgbWluU2NvcmU6IG51bWJlclxuICBtYXhTY29yZTogbnVtYmVyXG4gIHN1bURhdGE6IG51bWJlclxuICBzdW1TcURhdGE6IG51bWJlclxufVxuaW50ZXJmYWNlIE9wdGlvbnMge1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbFxuICByZXF1ZXN0PzogQ29vcmRSZXF1ZXN0XG59XG5cbmNvbnN0IEJJR19XSUdfVFlQRV9HUkFQSCA9IDFcbmNvbnN0IEJJR19XSUdfVFlQRV9WU1RFUCA9IDJcbmNvbnN0IEJJR19XSUdfVFlQRV9GU1RFUCA9IDNcblxuZnVuY3Rpb24gZ2V0UGFyc2Vycyhpc0JpZ0VuZGlhbjogYm9vbGVhbik6IGFueSB7XG4gIGNvbnN0IGxlID0gaXNCaWdFbmRpYW4gPyAnYmlnJyA6ICdsaXR0bGUnXG4gIGNvbnN0IHN1bW1hcnlQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC51aW50MzIoJ2Nocm9tSWQnKVxuICAgIC51aW50MzIoJ3N0YXJ0JylcbiAgICAudWludDMyKCdlbmQnKVxuICAgIC51aW50MzIoJ3ZhbGlkQ250JylcbiAgICAuZmxvYXQoJ21pblNjb3JlJylcbiAgICAuZmxvYXQoJ21heFNjb3JlJylcbiAgICAuZmxvYXQoJ3N1bURhdGEnKVxuICAgIC5mbG9hdCgnc3VtU3FEYXRhJylcblxuICBjb25zdCBsZWFmUGFyc2VyID0gbmV3IFBhcnNlcigpXG4gICAgLmVuZGlhbmVzcyhsZSlcbiAgICAudWludDgoJ2lzTGVhZicpXG4gICAgLnNraXAoMSlcbiAgICAudWludDE2KCdjbnQnKVxuICAgIC5jaG9pY2Uoe1xuICAgICAgdGFnOiAnaXNMZWFmJyxcbiAgICAgIGNob2ljZXM6IHtcbiAgICAgICAgMTogbmV3IFBhcnNlcigpLmFycmF5KCdibG9ja3NUb0ZldGNoJywge1xuICAgICAgICAgIGxlbmd0aDogJ2NudCcsXG4gICAgICAgICAgdHlwZTogbmV3IFBhcnNlcigpXG4gICAgICAgICAgICAudWludDMyKCdzdGFydENocm9tJylcbiAgICAgICAgICAgIC51aW50MzIoJ3N0YXJ0QmFzZScpXG4gICAgICAgICAgICAudWludDMyKCdlbmRDaHJvbScpXG4gICAgICAgICAgICAudWludDMyKCdlbmRCYXNlJylcbiAgICAgICAgICAgIC51aW50NjQoJ2Jsb2NrT2Zmc2V0JylcbiAgICAgICAgICAgIC51aW50NjQoJ2Jsb2NrU2l6ZScpLFxuICAgICAgICB9KSxcbiAgICAgICAgMDogbmV3IFBhcnNlcigpLmFycmF5KCdyZWN1ck9mZnNldHMnLCB7XG4gICAgICAgICAgbGVuZ3RoOiAnY250JyxcbiAgICAgICAgICB0eXBlOiBuZXcgUGFyc2VyKClcbiAgICAgICAgICAgIC51aW50MzIoJ3N0YXJ0Q2hyb20nKVxuICAgICAgICAgICAgLnVpbnQzMignc3RhcnRCYXNlJylcbiAgICAgICAgICAgIC51aW50MzIoJ2VuZENocm9tJylcbiAgICAgICAgICAgIC51aW50MzIoJ2VuZEJhc2UnKVxuICAgICAgICAgICAgLnVpbnQ2NCgnYmxvY2tPZmZzZXQnKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pXG4gIGNvbnN0IGJpZ0JlZFBhcnNlciA9IG5ldyBQYXJzZXIoKVxuICAgIC5lbmRpYW5lc3MobGUpXG4gICAgLnVpbnQzMignY2hyb21JZCcpXG4gICAgLmludDMyKCdzdGFydCcpXG4gICAgLmludDMyKCdlbmQnKVxuICAgIC5zdHJpbmcoJ3Jlc3QnLCB7XG4gICAgICB6ZXJvVGVybWluYXRlZDogdHJ1ZSxcbiAgICB9KVxuXG4gIGNvbnN0IGJpZ1dpZ1BhcnNlciA9IG5ldyBQYXJzZXIoKVxuICAgIC5lbmRpYW5lc3MobGUpXG4gICAgLnNraXAoNClcbiAgICAuaW50MzIoJ2Jsb2NrU3RhcnQnKVxuICAgIC5za2lwKDQpXG4gICAgLnVpbnQzMignaXRlbVN0ZXAnKVxuICAgIC51aW50MzIoJ2l0ZW1TcGFuJylcbiAgICAudWludDgoJ2Jsb2NrVHlwZScpXG4gICAgLnNraXAoMSlcbiAgICAudWludDE2KCdpdGVtQ291bnQnKVxuICAgIC5jaG9pY2Uoe1xuICAgICAgdGFnOiAnYmxvY2tUeXBlJyxcbiAgICAgIGNob2ljZXM6IHtcbiAgICAgICAgW0JJR19XSUdfVFlQRV9GU1RFUF06IG5ldyBQYXJzZXIoKS5hcnJheSgnaXRlbXMnLCB7XG4gICAgICAgICAgbGVuZ3RoOiAnaXRlbUNvdW50JyxcbiAgICAgICAgICB0eXBlOiBuZXcgUGFyc2VyKCkuZmxvYXQoJ3Njb3JlJyksXG4gICAgICAgIH0pLFxuICAgICAgICBbQklHX1dJR19UWVBFX1ZTVEVQXTogbmV3IFBhcnNlcigpLmFycmF5KCdpdGVtcycsIHtcbiAgICAgICAgICBsZW5ndGg6ICdpdGVtQ291bnQnLFxuICAgICAgICAgIHR5cGU6IG5ldyBQYXJzZXIoKS5pbnQzMignc3RhcnQnKS5mbG9hdCgnc2NvcmUnKSxcbiAgICAgICAgfSksXG4gICAgICAgIFtCSUdfV0lHX1RZUEVfR1JBUEhdOiBuZXcgUGFyc2VyKCkuYXJyYXkoJ2l0ZW1zJywge1xuICAgICAgICAgIGxlbmd0aDogJ2l0ZW1Db3VudCcsXG4gICAgICAgICAgdHlwZTogbmV3IFBhcnNlcigpXG4gICAgICAgICAgICAuaW50MzIoJ3N0YXJ0JylcbiAgICAgICAgICAgIC5pbnQzMignZW5kJylcbiAgICAgICAgICAgIC5mbG9hdCgnc2NvcmUnKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pXG4gIHJldHVybiB7XG4gICAgYmlnV2lnUGFyc2VyLFxuICAgIGJpZ0JlZFBhcnNlcixcbiAgICBzdW1tYXJ5UGFyc2VyLFxuICAgIGxlYWZQYXJzZXIsXG4gIH1cbn1cblxuLyoqXG4gKiBWaWV3IGludG8gYSBzdWJzZXQgb2YgdGhlIGRhdGEgaW4gYSBCaWdXaWcgZmlsZS5cbiAqXG4gKiBBZGFwdGVkIGJ5IFJvYmVydCBCdWVscyBhbmQgQ29saW4gRGllc2ggZnJvbSBiaWd3aWcuanMgaW4gdGhlIERhbGxpYW5jZSBHZW5vbWVcbiAqIEV4cGxvcmVyIGJ5IFRob21hcyBEb3duLlxuICogQGNvbnN0cnVjdHNcbiAqL1xuXG5leHBvcnQgY2xhc3MgQmxvY2tWaWV3IHtcbiAgcHJpdmF0ZSBjaXJUcmVlT2Zmc2V0OiBudW1iZXJcblxuICBwcml2YXRlIGNpclRyZWVMZW5ndGg6IG51bWJlclxuXG4gIHByaXZhdGUgYmJpOiBHZW5lcmljRmlsZWhhbmRsZVxuXG4gIHByaXZhdGUgaXNDb21wcmVzc2VkOiBib29sZWFuXG5cbiAgcHJpdmF0ZSBpc0JpZ0VuZGlhbjogYm9vbGVhblxuXG4gIHByaXZhdGUgcmVmc0J5TmFtZTogYW55XG5cbiAgcHJpdmF0ZSBibG9ja1R5cGU6IHN0cmluZ1xuXG4gIHByaXZhdGUgY2lyVHJlZVByb21pc2U/OiBQcm9taXNlPHsgYnl0ZXNSZWFkOiBudW1iZXI7IGJ1ZmZlcjogQnVmZmVyIH0+XG5cbiAgcHJpdmF0ZSBmZWF0dXJlQ2FjaGU6IGFueVxuXG4gIHByaXZhdGUgbGVhZlBhcnNlcjogYW55XG5cbiAgcHJpdmF0ZSBiaWdXaWdQYXJzZXI6IGFueVxuXG4gIHByaXZhdGUgYmlnQmVkUGFyc2VyOiBhbnlcblxuICBwcml2YXRlIHN1bW1hcnlQYXJzZXI6IGFueVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBiYmk6IGFueSxcbiAgICByZWZzQnlOYW1lOiBhbnksXG4gICAgY2lyVHJlZU9mZnNldDogbnVtYmVyLFxuICAgIGNpclRyZWVMZW5ndGg6IG51bWJlcixcbiAgICBpc0JpZ0VuZGlhbjogYm9vbGVhbixcbiAgICBpc0NvbXByZXNzZWQ6IGJvb2xlYW4sXG4gICAgYmxvY2tUeXBlOiBzdHJpbmcsXG4gICkge1xuICAgIGlmICghKGNpclRyZWVPZmZzZXQgPj0gMCkpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBjaXJUcmVlT2Zmc2V0IScpXG4gICAgaWYgKCEoY2lyVHJlZUxlbmd0aCA+IDApKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgY2lyVHJlZUxlbmd0aCEnKVxuXG4gICAgdGhpcy5jaXJUcmVlT2Zmc2V0ID0gY2lyVHJlZU9mZnNldFxuICAgIHRoaXMuY2lyVHJlZUxlbmd0aCA9IGNpclRyZWVMZW5ndGhcbiAgICB0aGlzLmlzQ29tcHJlc3NlZCA9IGlzQ29tcHJlc3NlZFxuICAgIHRoaXMucmVmc0J5TmFtZSA9IHJlZnNCeU5hbWVcbiAgICB0aGlzLmlzQmlnRW5kaWFuID0gaXNCaWdFbmRpYW5cbiAgICB0aGlzLmJiaSA9IGJiaVxuICAgIHRoaXMuYmxvY2tUeXBlID0gYmxvY2tUeXBlXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBnZXRQYXJzZXJzKGlzQmlnRW5kaWFuKSlcblxuICAgIHRoaXMuZmVhdHVyZUNhY2hlID0gbmV3IEFib3J0YWJsZVByb21pc2VDYWNoZSh7XG4gICAgICBjYWNoZTogbmV3IFF1aWNrTFJVKHsgbWF4U2l6ZTogMTAwMCB9KSxcblxuICAgICAgYXN5bmMgZmlsbChyZXF1ZXN0RGF0YTogUmVhZERhdGEsIHNpZ25hbDogQWJvcnRTaWduYWwpIHtcbiAgICAgICAgY29uc3QgeyBsZW5ndGgsIG9mZnNldCB9ID0gcmVxdWVzdERhdGFcbiAgICAgICAgY29uc3QgeyBidWZmZXIgfSA9IGF3YWl0IGJiaS5yZWFkKEJ1ZmZlci5hbGxvYyhsZW5ndGgpLCAwLCBsZW5ndGgsIG9mZnNldCwgeyBzaWduYWwgfSlcbiAgICAgICAgcmV0dXJuIGJ1ZmZlclxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlYWRXaWdEYXRhKFxuICAgIGNock5hbWU6IHN0cmluZyxcbiAgICBzdGFydDogbnVtYmVyLFxuICAgIGVuZDogbnVtYmVyLFxuICAgIG9ic2VydmVyOiBPYnNlcnZlcjxGZWF0dXJlW10+LFxuICAgIG9wdHM6IE9wdGlvbnMsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHJlZnNCeU5hbWUsIGJiaSwgY2lyVHJlZU9mZnNldCwgaXNCaWdFbmRpYW4gfSA9IHRoaXNcbiAgICAgIGNvbnN0IHsgc2lnbmFsIH0gPSBvcHRzXG4gICAgICBjb25zdCBjaHJJZCA9IHJlZnNCeU5hbWVbY2hyTmFtZV1cbiAgICAgIGlmIChjaHJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKClcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB7IGNocklkLCBzdGFydCwgZW5kIH1cbiAgICAgIGlmICghdGhpcy5jaXJUcmVlUHJvbWlzZSkge1xuICAgICAgICB0aGlzLmNpclRyZWVQcm9taXNlID0gYmJpLnJlYWQoQnVmZmVyLmFsbG9jKDQ4KSwgMCwgNDgsIGNpclRyZWVPZmZzZXQsIHsgc2lnbmFsIH0pXG4gICAgICB9XG4gICAgICBjb25zdCB7IGJ1ZmZlciB9ID0gYXdhaXQgdGhpcy5jaXJUcmVlUHJvbWlzZVxuICAgICAgY29uc3QgY2lyQmxvY2tTaXplID0gaXNCaWdFbmRpYW4gPyBidWZmZXIucmVhZFVJbnQzMkJFKDQpIDogYnVmZmVyLnJlYWRVSW50MzJMRSg0KVxuICAgICAgbGV0IGJsb2Nrc1RvRmV0Y2g6IGFueVtdID0gW11cbiAgICAgIGxldCBvdXRzdGFuZGluZyA9IDBcblxuICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBsZXQgY2lyRm9iUmVjdXIyOiBGdW5jdGlvblxuXG4gICAgICBjb25zdCBmaWx0ZXJGZWF0cyA9IChiOiBEYXRhQmxvY2spOiBib29sZWFuID0+XG4gICAgICAgIChiLnN0YXJ0Q2hyb20gPCBjaHJJZCB8fCAoYi5zdGFydENocm9tID09PSBjaHJJZCAmJiBiLnN0YXJ0QmFzZSA8PSBlbmQpKSAmJlxuICAgICAgICAoYi5lbmRDaHJvbSA+IGNocklkIHx8IChiLmVuZENocm9tID09PSBjaHJJZCAmJiBiLmVuZEJhc2UgPj0gc3RhcnQpKVxuXG4gICAgICBjb25zdCBjaXJGb2JTdGFydEZldGNoID0gYXN5bmMgKG9mZjogYW55LCBmcjogYW55LCBsZXZlbDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgbGVuZ3RoID0gZnIubWF4KCkgLSBmci5taW4oKVxuICAgICAgICAgIGNvbnN0IG9mZnNldCA9IGZyLm1pbigpXG4gICAgICAgICAgY29uc3QgcmVzdWx0QnVmZmVyID0gYXdhaXQgdGhpcy5mZWF0dXJlQ2FjaGUuZ2V0KGAke2xlbmd0aH1fJHtvZmZzZXR9YCwgeyBsZW5ndGgsIG9mZnNldCB9LCBzaWduYWwpXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvZmYubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChmci5jb250YWlucyhvZmZbaV0pKSB7XG4gICAgICAgICAgICAgIGNpckZvYlJlY3VyMihyZXN1bHRCdWZmZXIsIG9mZltpXSAtIG9mZnNldCwgbGV2ZWwsIG9ic2VydmVyLCBvcHRzKVxuICAgICAgICAgICAgICBvdXRzdGFuZGluZyAtPSAxXG4gICAgICAgICAgICAgIGlmIChvdXRzdGFuZGluZyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhZEZlYXR1cmVzKG9ic2VydmVyLCBibG9ja3NUb0ZldGNoLCB7IC4uLm9wdHMsIHJlcXVlc3QgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIG9ic2VydmVyLmVycm9yKGUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGNpckZvYlJlY3VyID0gKG9mZnNldDogYW55LCBsZXZlbDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgb3V0c3RhbmRpbmcgKz0gb2Zmc2V0Lmxlbmd0aFxuXG4gICAgICAgICAgY29uc3QgbWF4Q2lyQmxvY2tTcGFuID0gNCArIGNpckJsb2NrU2l6ZSAqIDMyIC8vIFVwcGVyIGJvdW5kIG9uIHNpemUsIGJhc2VkIG9uIGEgY29tcGxldGVseSBmdWxsIGxlYWYgbm9kZS5cbiAgICAgICAgICBsZXQgc3BhbnMgPSBuZXcgUmFuZ2Uob2Zmc2V0WzBdLCBvZmZzZXRbMF0gKyBtYXhDaXJCbG9ja1NwYW4pXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBvZmZzZXQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrU3BhbiA9IG5ldyBSYW5nZShvZmZzZXRbaV0sIG9mZnNldFtpXSArIG1heENpckJsb2NrU3BhbilcbiAgICAgICAgICAgIHNwYW5zID0gc3BhbnMudW5pb24oYmxvY2tTcGFuKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzcGFucy5nZXRSYW5nZXMoKS5tYXAoKGZyOiBSYW5nZSkgPT4gY2lyRm9iU3RhcnRGZXRjaChvZmZzZXQsIGZyLCBsZXZlbCkpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNpckZvYlJlY3VyMiA9IChjaXJCbG9ja0RhdGE6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGxldmVsOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gY2lyQmxvY2tEYXRhLnNsaWNlKG9mZnNldClcblxuICAgICAgICAgIGNvbnN0IHAgPSB0aGlzLmxlYWZQYXJzZXIucGFyc2UoZGF0YSkucmVzdWx0XG4gICAgICAgICAgaWYgKHAuYmxvY2tzVG9GZXRjaCkge1xuICAgICAgICAgICAgYmxvY2tzVG9GZXRjaCA9IGJsb2Nrc1RvRmV0Y2guY29uY2F0KFxuICAgICAgICAgICAgICBwLmJsb2Nrc1RvRmV0Y2hcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGZpbHRlckZlYXRzKVxuICAgICAgICAgICAgICAgIC5tYXAoKGw6IGFueSk6IGFueSA9PiAoeyBvZmZzZXQ6IGwuYmxvY2tPZmZzZXQsIGxlbmd0aDogbC5ibG9ja1NpemUgfSkpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocC5yZWN1ck9mZnNldHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlY3VyT2Zmc2V0cyA9IHAucmVjdXJPZmZzZXRzLmZpbHRlcihmaWx0ZXJGZWF0cykubWFwKChsOiBhbnkpOiBhbnkgPT4gbC5ibG9ja09mZnNldClcbiAgICAgICAgICAgIGlmIChyZWN1ck9mZnNldHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBjaXJGb2JSZWN1cihyZWN1ck9mZnNldHMsIGxldmVsICsgMSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjaXJGb2JSZWN1cihbY2lyVHJlZU9mZnNldCArIDQ4XSwgMSlcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvYnNlcnZlci5lcnJvcihlKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VTdW1tYXJ5QmxvY2soZGF0YTogQnVmZmVyLCBzdGFydE9mZnNldDogbnVtYmVyLCByZXF1ZXN0PzogQ29vcmRSZXF1ZXN0KTogRmVhdHVyZVtdIHtcbiAgICBjb25zdCBmZWF0dXJlcyA9IFtdXG4gICAgbGV0IGN1cnJPZmZzZXQgPSBzdGFydE9mZnNldFxuICAgIHdoaWxlIChjdXJyT2Zmc2V0IDwgZGF0YS5ieXRlTGVuZ3RoKSB7XG4gICAgICBjb25zdCByZXMgPSB0aGlzLnN1bW1hcnlQYXJzZXIucGFyc2UoZGF0YS5zbGljZShjdXJyT2Zmc2V0KSlcbiAgICAgIGZlYXR1cmVzLnB1c2gocmVzLnJlc3VsdClcbiAgICAgIGN1cnJPZmZzZXQgKz0gcmVzLm9mZnNldFxuICAgIH1cbiAgICBsZXQgaXRlbXMgPSBmZWF0dXJlc1xuICAgIGlmIChyZXF1ZXN0KSBpdGVtcyA9IGl0ZW1zLmZpbHRlcigoZWx0OiBTdW1tYXJ5QmxvY2spOiBib29sZWFuID0+IGVsdC5jaHJvbUlkID09PSByZXF1ZXN0LmNocklkKVxuICAgIGl0ZW1zID0gaXRlbXMubWFwKFxuICAgICAgKGVsdDogU3VtbWFyeUJsb2NrKTogRmVhdHVyZSA9PiAoe1xuICAgICAgICBzdGFydDogZWx0LnN0YXJ0LFxuICAgICAgICBlbmQ6IGVsdC5lbmQsXG4gICAgICAgIG1heFNjb3JlOiBlbHQubWF4U2NvcmUsXG4gICAgICAgIG1pblNjb3JlOiBlbHQubWluU2NvcmUsXG4gICAgICAgIHNjb3JlOiBlbHQuc3VtRGF0YSAvIChlbHQudmFsaWRDbnQgfHwgMSksXG4gICAgICAgIHN1bW1hcnk6IHRydWUsXG4gICAgICB9KSxcbiAgICApXG4gICAgcmV0dXJuIHJlcXVlc3QgPyBpdGVtcy5maWx0ZXIoZiA9PiBCbG9ja1ZpZXcuY29vcmRGaWx0ZXIoZiwgcmVxdWVzdCkpIDogaXRlbXNcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VCaWdCZWRCbG9jayhkYXRhOiBCdWZmZXIsIHN0YXJ0T2Zmc2V0OiBudW1iZXIsIG9mZnNldDogbnVtYmVyLCByZXF1ZXN0PzogQ29vcmRSZXF1ZXN0KTogRmVhdHVyZVtdIHtcbiAgICBjb25zdCBpdGVtcyA9IFtdXG4gICAgbGV0IGN1cnJPZmZzZXQgPSBzdGFydE9mZnNldFxuICAgIHdoaWxlIChjdXJyT2Zmc2V0IDwgZGF0YS5ieXRlTGVuZ3RoKSB7XG4gICAgICBjb25zdCByZXMgPSB0aGlzLmJpZ0JlZFBhcnNlci5wYXJzZShkYXRhLnNsaWNlKGN1cnJPZmZzZXQpKVxuICAgICAgcmVzLnJlc3VsdC51bmlxdWVJZCA9IGBiYi0ke29mZnNldCArIGN1cnJPZmZzZXR9YFxuICAgICAgaXRlbXMucHVzaChyZXMucmVzdWx0KVxuICAgICAgY3Vyck9mZnNldCArPSByZXMub2Zmc2V0XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3QgPyBpdGVtcy5maWx0ZXIoKGY6IGFueSkgPT4gQmxvY2tWaWV3LmNvb3JkRmlsdGVyKGYsIHJlcXVlc3QpKSA6IGl0ZW1zXG4gIH1cblxuICBwcml2YXRlIHBhcnNlQmlnV2lnQmxvY2soYnl0ZXM6IEJ1ZmZlciwgc3RhcnRPZmZzZXQ6IG51bWJlciwgcmVxdWVzdD86IENvb3JkUmVxdWVzdCk6IEZlYXR1cmVbXSB7XG4gICAgY29uc3QgZGF0YSA9IGJ5dGVzLnNsaWNlKHN0YXJ0T2Zmc2V0KVxuICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLmJpZ1dpZ1BhcnNlci5wYXJzZShkYXRhKS5yZXN1bHRcbiAgICBjb25zdCB7IGl0ZW1zIH0gPSByZXN1bHRzXG4gICAgaWYgKHJlc3VsdHMuYmxvY2tUeXBlID09PSBCSUdfV0lHX1RZUEVfRlNURVApIHtcbiAgICAgIGNvbnN0IHsgaXRlbVN0ZXA6IHN0ZXAsIGl0ZW1TcGFuOiBzcGFuIH0gPSByZXN1bHRzXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGl0ZW1zW2ldLnN0YXJ0ID0gaSAqIHN0ZXBcbiAgICAgICAgaXRlbXNbaV0uZW5kID0gaSAqIHN0ZXAgKyBzcGFuXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyZXN1bHRzLmJsb2NrVHlwZSA9PT0gQklHX1dJR19UWVBFX1ZTVEVQKSB7XG4gICAgICBjb25zdCB7IGl0ZW1TcGFuOiBzcGFuIH0gPSByZXN1bHRzXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGl0ZW1zW2ldLmVuZCA9IGl0ZW1zW2ldLnN0YXJ0ICsgc3BhblxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVxdWVzdCA/IGl0ZW1zLmZpbHRlcigoZjogYW55KSA9PiBCbG9ja1ZpZXcuY29vcmRGaWx0ZXIoZiwgcmVxdWVzdCkpIDogaXRlbXNcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvb3JkRmlsdGVyKGY6IEZlYXR1cmUsIHJhbmdlOiBDb29yZFJlcXVlc3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZi5zdGFydCA8IHJhbmdlLmVuZCAmJiBmLmVuZCA+PSByYW5nZS5zdGFydFxuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlYWRGZWF0dXJlcyhvYnNlcnZlcjogT2JzZXJ2ZXI8RmVhdHVyZVtdPiwgYmxvY2tzOiBhbnksIG9wdHM6IE9wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGJsb2NrVHlwZSwgaXNDb21wcmVzc2VkIH0gPSB0aGlzXG4gICAgICBjb25zdCB7IHNpZ25hbCwgcmVxdWVzdCB9ID0gb3B0c1xuICAgICAgY29uc3QgYmxvY2tHcm91cHNUb0ZldGNoID0gZ3JvdXBCbG9ja3MoYmxvY2tzKVxuICAgICAgY2hlY2tBYm9ydFNpZ25hbChzaWduYWwpXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgYmxvY2tHcm91cHNUb0ZldGNoLm1hcChhc3luYyAoYmxvY2tHcm91cDogYW55KSA9PiB7XG4gICAgICAgICAgY2hlY2tBYm9ydFNpZ25hbChzaWduYWwpXG4gICAgICAgICAgY29uc3QgeyBsZW5ndGgsIG9mZnNldCB9ID0gYmxvY2tHcm91cFxuICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZlYXR1cmVDYWNoZS5nZXQoYCR7bGVuZ3RofV8ke29mZnNldH1gLCBibG9ja0dyb3VwLCBzaWduYWwpXG4gICAgICAgICAgYmxvY2tHcm91cC5ibG9ja3MuZm9yRWFjaCgoYmxvY2s6IGFueSkgPT4ge1xuICAgICAgICAgICAgY2hlY2tBYm9ydFNpZ25hbChzaWduYWwpXG4gICAgICAgICAgICBsZXQgYmxvY2tPZmZzZXQgPSBibG9jay5vZmZzZXQgLSBibG9ja0dyb3VwLm9mZnNldFxuICAgICAgICAgICAgbGV0IHJlc3VsdERhdGEgPSBkYXRhXG4gICAgICAgICAgICBpZiAoaXNDb21wcmVzc2VkKSB7XG4gICAgICAgICAgICAgIHJlc3VsdERhdGEgPSB6bGliLmluZmxhdGVTeW5jKGRhdGEuc2xpY2UoYmxvY2tPZmZzZXQpKVxuICAgICAgICAgICAgICBibG9ja09mZnNldCA9IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoZWNrQWJvcnRTaWduYWwoc2lnbmFsKVxuXG4gICAgICAgICAgICBzd2l0Y2ggKGJsb2NrVHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICdzdW1tYXJ5JzpcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHRoaXMucGFyc2VTdW1tYXJ5QmxvY2socmVzdWx0RGF0YSwgYmxvY2tPZmZzZXQsIHJlcXVlc3QpKVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgJ2JpZ3dpZyc6XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0aGlzLnBhcnNlQmlnV2lnQmxvY2socmVzdWx0RGF0YSwgYmxvY2tPZmZzZXQsIHJlcXVlc3QpKVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgJ2JpZ2JlZCc6XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHRoaXMucGFyc2VCaWdCZWRCbG9jayhyZXN1bHREYXRhLCBibG9ja09mZnNldCwgYmxvY2sub2Zmc2V0ICogKDEgPDwgOCksIHJlcXVlc3QpKVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBEb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCAke2Jsb2NrVHlwZX1gKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9ic2VydmVyLmVycm9yKGUpXG4gICAgfVxuICB9XG59XG4iXX0=

@@ -98,3 +98,2 @@ "use strict";

if (typeof DOMException !== 'undefined') {
// eslint-disable-next-line no-undef
throw new DOMException('aborted', 'AbortError');

@@ -143,2 +142,2 @@ } else {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbIkFib3J0RXJyb3IiLCJtZXNzYWdlIiwiY29kZSIsIkVycm9yIiwiZ3JvdXBCbG9ja3MiLCJibG9ja3MiLCJzb3J0IiwiYjAiLCJiMSIsIm9mZnNldCIsImJsb2NrR3JvdXBzIiwibGFzdEJsb2NrIiwibGFzdEJsb2NrRW5kIiwiaSIsImxlbmd0aCIsInB1c2giLCJjaGVja0Fib3J0U2lnbmFsIiwic2lnbmFsIiwiYWJvcnRlZCIsIkRPTUV4Y2VwdGlvbiIsImUiLCJhYm9ydEJyZWFrUG9pbnQiLCJQcm9taXNlIiwicmVzb2x2ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7SUFDYUEsVTs7Ozs7QUFHWCxzQkFBbUJDLE9BQW5CLEVBQW9DO0FBQUE7O0FBQUE7QUFDbEMsZ0hBQU1BLE9BQU47QUFEa0M7QUFFbEMsVUFBS0MsSUFBTCxHQUFZLGFBQVo7QUFGa0M7QUFHbkM7OztpQ0FONkJDLEssSUFRaEM7QUFDQTs7Ozs7QUFDTyxTQUFTQyxXQUFULENBQXFCQyxNQUFyQixFQUEyQztBQUNoREEsRUFBQUEsTUFBTSxDQUFDQyxJQUFQLENBQVksVUFBQ0MsRUFBRCxFQUFLQyxFQUFMO0FBQUEsV0FBWSxDQUFDRCxFQUFFLENBQUNFLE1BQUgsR0FBWSxDQUFiLEtBQW1CRCxFQUFFLENBQUNDLE1BQUgsR0FBWSxDQUEvQixDQUFaO0FBQUEsR0FBWjtBQUVBLE1BQU1DLFdBQVcsR0FBRyxFQUFwQjtBQUNBLE1BQUlDLFNBQUo7QUFDQSxNQUFJQyxZQUFKOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR1IsTUFBTSxDQUFDUyxNQUEzQixFQUFtQ0QsQ0FBQyxJQUFJLENBQXhDLEVBQTJDO0FBQ3pDLFFBQUlGLFNBQVMsSUFBSU4sTUFBTSxDQUFDUSxDQUFELENBQU4sQ0FBVUosTUFBVixHQUFtQkcsWUFBbkIsSUFBbUMsSUFBcEQsRUFBMEQ7QUFDeERELE1BQUFBLFNBQVMsQ0FBQ0csTUFBVixJQUFvQlQsTUFBTSxDQUFDUSxDQUFELENBQU4sQ0FBVUMsTUFBVixHQUFtQkYsWUFBbkIsR0FBa0NQLE1BQU0sQ0FBQ1EsQ0FBRCxDQUFOLENBQVVKLE1BQWhFO0FBQ0FFLE1BQUFBLFNBQVMsQ0FBQ04sTUFBVixDQUFpQlUsSUFBakIsQ0FBc0JWLE1BQU0sQ0FBQ1EsQ0FBRCxDQUE1QjtBQUNELEtBSEQsTUFHTztBQUNMSCxNQUFBQSxXQUFXLENBQUNLLElBQVosQ0FDR0osU0FBUyxHQUFHO0FBQ1hOLFFBQUFBLE1BQU0sRUFBRSxDQUFDQSxNQUFNLENBQUNRLENBQUQsQ0FBUCxDQURHO0FBRVhDLFFBQUFBLE1BQU0sRUFBRVQsTUFBTSxDQUFDUSxDQUFELENBQU4sQ0FBVUMsTUFGUDtBQUdYTCxRQUFBQSxNQUFNLEVBQUVKLE1BQU0sQ0FBQ1EsQ0FBRCxDQUFOLENBQVVKO0FBSFAsT0FEZjtBQU9EOztBQUNERyxJQUFBQSxZQUFZLEdBQUdELFNBQVMsQ0FBQ0YsTUFBVixHQUFtQkUsU0FBUyxDQUFDRyxNQUE1QztBQUNEOztBQUVELFNBQU9KLFdBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7O0FBV08sU0FBU00sZ0JBQVQsQ0FBMEJDLE1BQTFCLEVBQXNEO0FBQzNELE1BQUksQ0FBQ0EsTUFBTCxFQUFhOztBQUViLE1BQUlBLE1BQU0sQ0FBQ0MsT0FBWCxFQUFvQjtBQUNsQjtBQUNBLFFBQUksT0FBT0MsWUFBUCxLQUF3QixXQUE1QixFQUF5QztBQUN2QztBQUNBLFlBQU0sSUFBSUEsWUFBSixDQUFpQixTQUFqQixFQUE0QixZQUE1QixDQUFOO0FBQ0QsS0FIRCxNQUdPO0FBQ0wsVUFBTUMsQ0FBQyxHQUFHLElBQUlwQixVQUFKLENBQWUsU0FBZixDQUFWO0FBQ0FvQixNQUFBQSxDQUFDLENBQUNsQixJQUFGLEdBQVMsYUFBVDtBQUNBLFlBQU1rQixDQUFOO0FBQ0Q7QUFDRjtBQUNGO0FBRUQ7Ozs7Ozs7O1NBTXNCQyxlOzs7Ozs7OzRCQUFmLGlCQUErQkosTUFBL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQ0NLLE9BQU8sQ0FBQ0MsT0FBUixFQUREOztBQUFBO0FBRUxQLFlBQUFBLGdCQUFnQixDQUFDQyxNQUFELENBQWhCOztBQUZLO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEciLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tYml0d2lzZTogW1wiZXJyb3JcIiwgeyBcImFsbG93XCI6IFtcInxcIl0gfV0gKi9cbmV4cG9ydCBjbGFzcyBBYm9ydEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgY29kZTogc3RyaW5nXG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgdGhpcy5jb2RlID0gJ0VSUl9BQk9SVEVEJ1xuICB9XG59XG4vLyBzb3J0IGJsb2NrcyBieSBmaWxlIG9mZnNldCBhbmRcbi8vIGdyb3VwIGJsb2NrcyB0aGF0IGFyZSB3aXRoaW4gMktCIG9mIGVhY2hvdGhlclxuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwQmxvY2tzKGJsb2NrczogYW55W10pOiBhbnlbXSB7XG4gIGJsb2Nrcy5zb3J0KChiMCwgYjEpID0+IChiMC5vZmZzZXQgfCAwKSAtIChiMS5vZmZzZXQgfCAwKSlcblxuICBjb25zdCBibG9ja0dyb3VwcyA9IFtdXG4gIGxldCBsYXN0QmxvY2tcbiAgbGV0IGxhc3RCbG9ja0VuZFxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJsb2Nrcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmIChsYXN0QmxvY2sgJiYgYmxvY2tzW2ldLm9mZnNldCAtIGxhc3RCbG9ja0VuZCA8PSAyMDAwKSB7XG4gICAgICBsYXN0QmxvY2subGVuZ3RoICs9IGJsb2Nrc1tpXS5sZW5ndGggLSBsYXN0QmxvY2tFbmQgKyBibG9ja3NbaV0ub2Zmc2V0XG4gICAgICBsYXN0QmxvY2suYmxvY2tzLnB1c2goYmxvY2tzW2ldKVxuICAgIH0gZWxzZSB7XG4gICAgICBibG9ja0dyb3Vwcy5wdXNoKFxuICAgICAgICAobGFzdEJsb2NrID0ge1xuICAgICAgICAgIGJsb2NrczogW2Jsb2Nrc1tpXV0sXG4gICAgICAgICAgbGVuZ3RoOiBibG9ja3NbaV0ubGVuZ3RoLFxuICAgICAgICAgIG9mZnNldDogYmxvY2tzW2ldLm9mZnNldCxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfVxuICAgIGxhc3RCbG9ja0VuZCA9IGxhc3RCbG9jay5vZmZzZXQgKyBsYXN0QmxvY2subGVuZ3RoXG4gIH1cblxuICByZXR1cm4gYmxvY2tHcm91cHNcbn1cblxuLyoqXG4gKiBQcm9wZXJseSBjaGVjayBpZiB0aGUgZ2l2ZW4gQWJvcnRTaWduYWwgaXMgYWJvcnRlZC5cbiAqIFBlciB0aGUgc3RhbmRhcmQsIGlmIHRoZSBzaWduYWwgcmVhZHMgYXMgYWJvcnRlZCxcbiAqIHRoaXMgZnVuY3Rpb24gdGhyb3dzIGVpdGhlciBhIERPTUV4Y2VwdGlvbiBBYm9ydEVycm9yLCBvciBhIHJlZ3VsYXIgZXJyb3JcbiAqIHdpdGggYSBgY29kZWAgYXR0cmlidXRlIHNldCB0byBgRVJSX0FCT1JURURgLlxuICpcbiAqIEZvciBjb252ZW5pZW5jZSwgcGFzc2luZyBgdW5kZWZpbmVkYCBpcyBhIG5vLW9wXG4gKlxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW3NpZ25hbF0gYW4gQWJvcnRTaWduYWwsIG9yIGFueXRoaW5nIHdpdGggYW4gYGFib3J0ZWRgIGF0dHJpYnV0ZVxuICogQHJldHVybnMgbm90aGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tBYm9ydFNpZ25hbChzaWduYWw/OiBBYm9ydFNpZ25hbCk6IHZvaWQge1xuICBpZiAoIXNpZ25hbCkgcmV0dXJuXG5cbiAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2JhbSBhYm9ydGVkIScpXG4gICAgaWYgKHR5cGVvZiBET01FeGNlcHRpb24gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIG5vLXVuZGVmXG4gICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCdhYm9ydGVkJywgJ0Fib3J0RXJyb3InKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlID0gbmV3IEFib3J0RXJyb3IoJ2Fib3J0ZWQnKVxuICAgICAgZS5jb2RlID0gJ0VSUl9BQk9SVEVEJ1xuICAgICAgdGhyb3cgZVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFNraXBzIHRvIHRoZSBuZXh0IHRpY2ssIHRoZW4gcnVucyBgY2hlY2tBYm9ydFNpZ25hbGAuXG4gKiBBd2FpdCB0aGlzIHRvIGluc2lkZSBhbiBvdGhlcndpc2Ugc3luY2hyb25vdXMgbG9vcCB0b1xuICogcHJvdmlkZSBhIHBsYWNlIHRvIGJyZWFrIHdoZW4gYW4gYWJvcnQgc2lnbmFsIGlzIHJlY2VpdmVkLlxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gc2lnbmFsXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhYm9ydEJyZWFrUG9pbnQoc2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKClcbiAgY2hlY2tBYm9ydFNpZ25hbChzaWduYWwpXG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbIkFib3J0RXJyb3IiLCJtZXNzYWdlIiwiY29kZSIsIkVycm9yIiwiZ3JvdXBCbG9ja3MiLCJibG9ja3MiLCJzb3J0IiwiYjAiLCJiMSIsIm9mZnNldCIsImJsb2NrR3JvdXBzIiwibGFzdEJsb2NrIiwibGFzdEJsb2NrRW5kIiwiaSIsImxlbmd0aCIsInB1c2giLCJjaGVja0Fib3J0U2lnbmFsIiwic2lnbmFsIiwiYWJvcnRlZCIsIkRPTUV4Y2VwdGlvbiIsImUiLCJhYm9ydEJyZWFrUG9pbnQiLCJQcm9taXNlIiwicmVzb2x2ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7SUFDYUEsVTs7Ozs7QUFHWCxzQkFBbUJDLE9BQW5CLEVBQW9DO0FBQUE7O0FBQUE7QUFDbEMsZ0hBQU1BLE9BQU47QUFEa0M7QUFFbEMsVUFBS0MsSUFBTCxHQUFZLGFBQVo7QUFGa0M7QUFHbkM7OztpQ0FONkJDLEssSUFRaEM7QUFDQTs7Ozs7QUFDTyxTQUFTQyxXQUFULENBQXFCQyxNQUFyQixFQUEyQztBQUNoREEsRUFBQUEsTUFBTSxDQUFDQyxJQUFQLENBQVksVUFBQ0MsRUFBRCxFQUFLQyxFQUFMO0FBQUEsV0FBWSxDQUFDRCxFQUFFLENBQUNFLE1BQUgsR0FBWSxDQUFiLEtBQW1CRCxFQUFFLENBQUNDLE1BQUgsR0FBWSxDQUEvQixDQUFaO0FBQUEsR0FBWjtBQUVBLE1BQU1DLFdBQVcsR0FBRyxFQUFwQjtBQUNBLE1BQUlDLFNBQUo7QUFDQSxNQUFJQyxZQUFKOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR1IsTUFBTSxDQUFDUyxNQUEzQixFQUFtQ0QsQ0FBQyxJQUFJLENBQXhDLEVBQTJDO0FBQ3pDLFFBQUlGLFNBQVMsSUFBSU4sTUFBTSxDQUFDUSxDQUFELENBQU4sQ0FBVUosTUFBVixHQUFtQkcsWUFBbkIsSUFBbUMsSUFBcEQsRUFBMEQ7QUFDeERELE1BQUFBLFNBQVMsQ0FBQ0csTUFBVixJQUFvQlQsTUFBTSxDQUFDUSxDQUFELENBQU4sQ0FBVUMsTUFBVixHQUFtQkYsWUFBbkIsR0FBa0NQLE1BQU0sQ0FBQ1EsQ0FBRCxDQUFOLENBQVVKLE1BQWhFO0FBQ0FFLE1BQUFBLFNBQVMsQ0FBQ04sTUFBVixDQUFpQlUsSUFBakIsQ0FBc0JWLE1BQU0sQ0FBQ1EsQ0FBRCxDQUE1QjtBQUNELEtBSEQsTUFHTztBQUNMSCxNQUFBQSxXQUFXLENBQUNLLElBQVosQ0FDR0osU0FBUyxHQUFHO0FBQ1hOLFFBQUFBLE1BQU0sRUFBRSxDQUFDQSxNQUFNLENBQUNRLENBQUQsQ0FBUCxDQURHO0FBRVhDLFFBQUFBLE1BQU0sRUFBRVQsTUFBTSxDQUFDUSxDQUFELENBQU4sQ0FBVUMsTUFGUDtBQUdYTCxRQUFBQSxNQUFNLEVBQUVKLE1BQU0sQ0FBQ1EsQ0FBRCxDQUFOLENBQVVKO0FBSFAsT0FEZjtBQU9EOztBQUNERyxJQUFBQSxZQUFZLEdBQUdELFNBQVMsQ0FBQ0YsTUFBVixHQUFtQkUsU0FBUyxDQUFDRyxNQUE1QztBQUNEOztBQUVELFNBQU9KLFdBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7O0FBV08sU0FBU00sZ0JBQVQsQ0FBMEJDLE1BQTFCLEVBQXNEO0FBQzNELE1BQUksQ0FBQ0EsTUFBTCxFQUFhOztBQUViLE1BQUlBLE1BQU0sQ0FBQ0MsT0FBWCxFQUFvQjtBQUNsQjtBQUNBLFFBQUksT0FBT0MsWUFBUCxLQUF3QixXQUE1QixFQUF5QztBQUN2QyxZQUFNLElBQUlBLFlBQUosQ0FBaUIsU0FBakIsRUFBNEIsWUFBNUIsQ0FBTjtBQUNELEtBRkQsTUFFTztBQUNMLFVBQU1DLENBQUMsR0FBRyxJQUFJcEIsVUFBSixDQUFlLFNBQWYsQ0FBVjtBQUNBb0IsTUFBQUEsQ0FBQyxDQUFDbEIsSUFBRixHQUFTLGFBQVQ7QUFDQSxZQUFNa0IsQ0FBTjtBQUNEO0FBQ0Y7QUFDRjtBQUVEOzs7Ozs7OztTQU1zQkMsZTs7Ozs7Ozs0QkFBZixpQkFBK0JKLE1BQS9CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUNDSyxPQUFPLENBQUNDLE9BQVIsRUFERDs7QUFBQTtBQUVMUCxZQUFBQSxnQkFBZ0IsQ0FBQ0MsTUFBRCxDQUFoQjs7QUFGSztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLWJpdHdpc2U6IFtcImVycm9yXCIsIHsgXCJhbGxvd1wiOiBbXCJ8XCJdIH1dICovXG5leHBvcnQgY2xhc3MgQWJvcnRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGNvZGU6IHN0cmluZ1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIHRoaXMuY29kZSA9ICdFUlJfQUJPUlRFRCdcbiAgfVxufVxuLy8gc29ydCBibG9ja3MgYnkgZmlsZSBvZmZzZXQgYW5kXG4vLyBncm91cCBibG9ja3MgdGhhdCBhcmUgd2l0aGluIDJLQiBvZiBlYWNob3RoZXJcbmV4cG9ydCBmdW5jdGlvbiBncm91cEJsb2NrcyhibG9ja3M6IGFueVtdKTogYW55W10ge1xuICBibG9ja3Muc29ydCgoYjAsIGIxKSA9PiAoYjAub2Zmc2V0IHwgMCkgLSAoYjEub2Zmc2V0IHwgMCkpXG5cbiAgY29uc3QgYmxvY2tHcm91cHMgPSBbXVxuICBsZXQgbGFzdEJsb2NrXG4gIGxldCBsYXN0QmxvY2tFbmRcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBibG9ja3MubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAobGFzdEJsb2NrICYmIGJsb2Nrc1tpXS5vZmZzZXQgLSBsYXN0QmxvY2tFbmQgPD0gMjAwMCkge1xuICAgICAgbGFzdEJsb2NrLmxlbmd0aCArPSBibG9ja3NbaV0ubGVuZ3RoIC0gbGFzdEJsb2NrRW5kICsgYmxvY2tzW2ldLm9mZnNldFxuICAgICAgbGFzdEJsb2NrLmJsb2Nrcy5wdXNoKGJsb2Nrc1tpXSlcbiAgICB9IGVsc2Uge1xuICAgICAgYmxvY2tHcm91cHMucHVzaChcbiAgICAgICAgKGxhc3RCbG9jayA9IHtcbiAgICAgICAgICBibG9ja3M6IFtibG9ja3NbaV1dLFxuICAgICAgICAgIGxlbmd0aDogYmxvY2tzW2ldLmxlbmd0aCxcbiAgICAgICAgICBvZmZzZXQ6IGJsb2Nrc1tpXS5vZmZzZXQsXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIH1cbiAgICBsYXN0QmxvY2tFbmQgPSBsYXN0QmxvY2sub2Zmc2V0ICsgbGFzdEJsb2NrLmxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIGJsb2NrR3JvdXBzXG59XG5cbi8qKlxuICogUHJvcGVybHkgY2hlY2sgaWYgdGhlIGdpdmVuIEFib3J0U2lnbmFsIGlzIGFib3J0ZWQuXG4gKiBQZXIgdGhlIHN0YW5kYXJkLCBpZiB0aGUgc2lnbmFsIHJlYWRzIGFzIGFib3J0ZWQsXG4gKiB0aGlzIGZ1bmN0aW9uIHRocm93cyBlaXRoZXIgYSBET01FeGNlcHRpb24gQWJvcnRFcnJvciwgb3IgYSByZWd1bGFyIGVycm9yXG4gKiB3aXRoIGEgYGNvZGVgIGF0dHJpYnV0ZSBzZXQgdG8gYEVSUl9BQk9SVEVEYC5cbiAqXG4gKiBGb3IgY29udmVuaWVuY2UsIHBhc3NpbmcgYHVuZGVmaW5lZGAgaXMgYSBuby1vcFxuICpcbiAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IFtzaWduYWxdIGFuIEFib3J0U2lnbmFsLCBvciBhbnl0aGluZyB3aXRoIGFuIGBhYm9ydGVkYCBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIG5vdGhpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQWJvcnRTaWduYWwoc2lnbmFsPzogQWJvcnRTaWduYWwpOiB2b2lkIHtcbiAgaWYgKCFzaWduYWwpIHJldHVyblxuXG4gIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdiYW0gYWJvcnRlZCEnKVxuICAgIGlmICh0eXBlb2YgRE9NRXhjZXB0aW9uICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbignYWJvcnRlZCcsICdBYm9ydEVycm9yJylcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZSA9IG5ldyBBYm9ydEVycm9yKCdhYm9ydGVkJylcbiAgICAgIGUuY29kZSA9ICdFUlJfQUJPUlRFRCdcbiAgICAgIHRocm93IGVcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBTa2lwcyB0byB0aGUgbmV4dCB0aWNrLCB0aGVuIHJ1bnMgYGNoZWNrQWJvcnRTaWduYWxgLlxuICogQXdhaXQgdGhpcyB0byBpbnNpZGUgYW4gb3RoZXJ3aXNlIHN5bmNocm9ub3VzIGxvb3AgdG9cbiAqIHByb3ZpZGUgYSBwbGFjZSB0byBicmVhayB3aGVuIGFuIGFib3J0IHNpZ25hbCBpcyByZWNlaXZlZC5cbiAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IHNpZ25hbFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWJvcnRCcmVha1BvaW50KHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpXG4gIGNoZWNrQWJvcnRTaWduYWwoc2lnbmFsKVxufVxuIl19
{
"name": "@gmod/bbi",
"version": "1.0.23",
"version": "1.0.24",
"description": "Parser for BigWig/BigBed files",

@@ -22,3 +22,3 @@ "license": "MIT",

"coverage": "npm test -- --coverage",
"lint": "eslint --ext .ts src test",
"lint": "eslint --report-unused-disable-directives --max-warnings 0 --ext .js,.ts src",
"clean": "rimraf dist",

@@ -25,0 +25,0 @@ "prebuild": "npm run clean",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc