Comparing version 1.0.18 to 1.0.19
@@ -0,1 +1,7 @@ | ||
## [1.0.19](https://github.com/GMOD/bbi-js/compare/v1.0.18...v1.0.19) (2019-05-02) | ||
- Add regression fix since 1.0.16 for uncompressed files. Thanks to @lidaof for reporting! | ||
## [1.0.18](https://github.com/GMOD/bbi-js/compare/v1.0.17...v1.0.18) (2019-05-02) | ||
@@ -2,0 +8,0 @@ |
@@ -467,5 +467,9 @@ "use strict"; | ||
var blockOffset = block.offset - blockGroup.offset; | ||
var resultData = isCompressed ? zlib.inflateSync(data.slice(blockOffset)) : data; | ||
blockOffset = isCompressed ? 0 : offset; | ||
var resultData = data; | ||
if (isCompressed) { | ||
resultData = zlib.inflateSync(data.slice(blockOffset)); | ||
blockOffset = 0; | ||
} | ||
switch (blockType) { | ||
@@ -536,2 +540,2 @@ case 'summary': | ||
exports.BlockView = BlockView; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ibG9ja1ZpZXcudHMiXSwibmFtZXMiOlsiQklHX1dJR19UWVBFX0dSQVBIIiwiQklHX1dJR19UWVBFX1ZTVEVQIiwiQklHX1dJR19UWVBFX0ZTVEVQIiwiZ2V0UGFyc2VycyIsImlzQmlnRW5kaWFuIiwibGUiLCJzdW1tYXJ5UGFyc2VyIiwiUGFyc2VyIiwiZW5kaWFuZXNzIiwidWludDMyIiwiZmxvYXQiLCJsZWFmUGFyc2VyIiwidWludDgiLCJza2lwIiwidWludDE2IiwiY2hvaWNlIiwidGFnIiwiY2hvaWNlcyIsImFycmF5IiwibGVuZ3RoIiwidHlwZSIsInVpbnQ2NCIsImJpZ0JlZFBhcnNlciIsImludDMyIiwic3RyaW5nIiwiemVyb1Rlcm1pbmF0ZWQiLCJiaWdXaWdQYXJzZXIiLCJCbG9ja1ZpZXciLCJiYmkiLCJyZWZzQnlOYW1lIiwiY2lyVHJlZU9mZnNldCIsImNpclRyZWVMZW5ndGgiLCJpc0NvbXByZXNzZWQiLCJibG9ja1R5cGUiLCJFcnJvciIsImNpclRyZWVCdWZmZXIiLCJCdWZmZXIiLCJhbGxvYyIsIk9iamVjdCIsImFzc2lnbiIsImZlYXR1cmVDYWNoZSIsIkFib3J0YWJsZVByb21pc2VDYWNoZSIsImNhY2hlIiwiUXVpY2tMUlUiLCJtYXhTaXplIiwiZmlsbCIsInJlcXVlc3REYXRhIiwic2lnbmFsIiwib2Zmc2V0IiwicmVzdWx0QnVmZmVyIiwicmVhZCIsImNock5hbWUiLCJzdGFydCIsImVuZCIsIm9ic2VydmVyIiwib3B0cyIsImNocklkIiwidW5kZWZpbmVkIiwiY29tcGxldGUiLCJyZXF1ZXN0IiwiY2lyVHJlZVByb21pc2UiLCJidWZmZXIiLCJjaXJCbG9ja1NpemUiLCJyZWFkVUludDMyQkUiLCJyZWFkVUludDMyTEUiLCJibG9ja3NUb0ZldGNoIiwib3V0c3RhbmRpbmciLCJmaWx0ZXJGZWF0cyIsImIiLCJzdGFydENocm9tIiwic3RhcnRCYXNlIiwiZW5kQ2hyb20iLCJlbmRCYXNlIiwiY2lyRm9iU3RhcnRGZXRjaCIsIm9mZiIsImZyIiwibGV2ZWwiLCJtYXgiLCJtaW4iLCJnZXQiLCJpIiwiY29udGFpbnMiLCJjaXJGb2JSZWN1cjIiLCJyZWFkRmVhdHVyZXMiLCJlcnJvciIsImNpckZvYlJlY3VyIiwibWF4Q2lyQmxvY2tTcGFuIiwic3BhbnMiLCJSYW5nZSIsImJsb2NrU3BhbiIsInVuaW9uIiwiZ2V0UmFuZ2VzIiwibWFwIiwiZSIsImNpckJsb2NrRGF0YSIsImRhdGEiLCJzbGljZSIsInAiLCJwYXJzZSIsInJlc3VsdCIsImNvbmNhdCIsImZpbHRlciIsImwiLCJibG9ja09mZnNldCIsImJsb2NrU2l6ZSIsInJlY3VyT2Zmc2V0cyIsInN0YXJ0T2Zmc2V0IiwiZmVhdHVyZXMiLCJjdXJyT2Zmc2V0IiwiYnl0ZUxlbmd0aCIsInJlcyIsInB1c2giLCJpdGVtcyIsImVsdCIsImNocm9tSWQiLCJtYXhTY29yZSIsIm1pblNjb3JlIiwic2NvcmUiLCJzdW1EYXRhIiwidmFsaWRDbnQiLCJzdW1tYXJ5IiwiZiIsImNvb3JkRmlsdGVyIiwidW5pcXVlSWQiLCJieXRlcyIsInJlc3VsdHMiLCJzdGVwIiwiaXRlbVN0ZXAiLCJzcGFuIiwiaXRlbVNwYW4iLCJmZWF0dXJlIiwiaW5kZXgiLCJibG9ja3MiLCJibG9ja0dyb3Vwc1RvRmV0Y2giLCJQcm9taXNlIiwiYWxsIiwiYmxvY2tHcm91cCIsImZvckVhY2giLCJibG9jayIsInJlc3VsdERhdGEiLCJ6bGliIiwiaW5mbGF0ZVN5bmMiLCJuZXh0IiwicGFyc2VTdW1tYXJ5QmxvY2siLCJwYXJzZUJpZ1dpZ0Jsb2NrIiwicGFyc2VCaWdCZWRCbG9jayIsImNvbnNvbGUiLCJ3YXJuIiwicmFuZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBUkE7QUE4Q0EsSUFBTUEsa0JBQWtCLEdBQUcsQ0FBM0I7QUFDQSxJQUFNQyxrQkFBa0IsR0FBRyxDQUEzQjtBQUNBLElBQU1D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Q0FBQ0MsaUJBQUwsQ0FBdUJKLFVBQXZCLEVBQW1DcEMsV0FBbkMsRUFBZ0Q1QyxPQUFoRCxDQUFkO0FBQ0E7O0FBQ0YscUNBQUssUUFBTDtBQUNFTCxrQ0FBQUEsUUFBUSxDQUFDd0YsSUFBVCxDQUFjLE1BQUksQ0FBQ0UsZ0JBQUwsQ0FBc0JMLFVBQXRCLEVBQWtDcEMsV0FBbEMsRUFBK0M1QyxPQUEvQyxDQUFkO0FBQ0E7O0FBQ0YscUNBQUssUUFBTDtBQUNFTCxrQ0FBQUEsUUFBUSxDQUFDd0YsSUFBVCxDQUFjLE1BQUksQ0FBQ0csZ0JBQUwsQ0FBc0JOLFVBQXRCLEVBQWtDcEMsV0FBbEMsRUFBK0M1QyxPQUEvQyxDQUFkO0FBQ0E7O0FBQ0Y7QUFDRXVGLGtDQUFBQSxPQUFPLENBQUNDLElBQVIsc0NBQTJDbEgsU0FBM0M7QUFYSjtBQWFELDZCQWxCRDs7QUFIcUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQXZCOztBQUFBO0FBQUE7QUFBQTtBQUFBLG9CQURJLEM7OztBQXlCTnFCLGdCQUFBQSxRQUFRLENBQUNJLFFBQVQ7Ozs7Ozs7QUFFQUosZ0JBQUFBLFFBQVEsQ0FBQzhCLEtBQVQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQ0FwQ3VCcUMsQyxFQUFZMkIsSyxFQUE4QjtBQUNuRSxhQUFPM0IsQ0FBQyxDQUFDckUsS0FBRixHQUFVZ0csS0FBSyxDQUFDL0YsR0FBaEIsSUFBdUJvRSxDQUFDLENBQUNwRSxHQUFGLElBQVMrRixLQUFLLENBQUNoRyxLQUE3QztBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLWJpdHdpc2U6IFtcImVycm9yXCIsIHsgXCJhbGxvd1wiOiBbXCJ8XCJdIH1dICovXG5pbXBvcnQgeyBPYnNlcnZlciB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tICdAZ21vZC9iaW5hcnktcGFyc2VyJ1xuaW1wb3J0IEFib3J0YWJsZVByb21pc2VDYWNoZSBmcm9tICdhYm9ydGFibGUtcHJvbWlzZS1jYWNoZSdcbmltcG9ydCAqIGFzIHpsaWIgZnJvbSAnemxpYidcbmltcG9ydCBRdWlja0xSVSBmcm9tICdxdWljay1scnUnXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi9iYmknXG5pbXBvcnQgUmFuZ2UgZnJvbSAnLi9yYW5nZSdcbmltcG9ydCB7IGdyb3VwQmxvY2tzIH0gZnJvbSAnLi91dGlsJ1xuXG5pbnRlcmZhY2UgQ29vcmRSZXF1ZXN0IHtcbiAgY2hySWQ6IG51bWJlclxuICBzdGFydDogbnVtYmVyXG4gIGVuZDogbnVtYmVyXG59XG5pbnRlcmZhY2UgRGF0YUJsb2NrIHtcbiAgc3RhcnRDaHJvbTogbnVtYmVyXG4gIGVuZENocm9tOiBudW1iZXJcbiAgc3RhcnRCYXNlOiBudW1iZXJcbiAgZW5kQmFzZTogbnVtYmVyXG4gIHZhbGlkQ250OiBudW1iZXJcbiAgbWluVmFsOiBudW1iZXJcbiAgbWF4VmFsOiBudW1iZXJcbiAgc3VtRGF0YTogbnVtYmVyXG4gIHN1bVNxRGF0YTogbnVtYmVyXG59XG5pbnRlcmZhY2UgUmVhZERhdGEge1xuICBvZmZzZXQ6IG51bWJlclxuICBsZW5ndGg6IG51bWJlclxufVxuXG5pbnRlcmZhY2UgU3VtbWFyeUJsb2NrIHtcbiAgY2hyb21JZDogbnVtYmVyXG4gIHN0YXJ0OiBudW1iZXJcbiAgZW5kOiBudW1iZXJcbiAgdmFsaWRDbnQ6IG51bWJlclxuICBtaW5TY29yZTogbnVtYmVyXG4gIG1heFNjb3JlOiBudW1iZXJcbiAgc3VtRGF0YTogbnVtYmVyXG4gIHN1bVNxRGF0YTogbnVtYmVyXG59XG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIHNpZ25hbD86IEFib3J0U2lnbmFsXG4gIHJlcXVlc3Q/OiBDb29yZFJlcXVlc3Rcbn1cblxuY29uc3QgQklHX1dJR19UWVBFX0dSQVBIID0gMVxuY29uc3QgQklHX1dJR19UWVBFX1ZTVEVQID0gMlxuY29uc3QgQklHX1dJR19UWVBFX0ZTVEVQID0gM1xuXG5mdW5jdGlvbiBnZXRQYXJzZXJzKGlzQmlnRW5kaWFuOiBib29sZWFuKTogYW55IHtcbiAgY29uc3QgbGUgPSBpc0JpZ0VuZGlhbiA/ICdiaWcnIDogJ2xpdHRsZSdcbiAgY29uc3Qgc3VtbWFyeVBhcnNlciA9IG5ldyBQYXJzZXIoKVxuICAgIC5lbmRpYW5lc3MobGUpXG4gICAgLnVpbnQzMignY2hyb21JZCcpXG4gICAgLnVpbnQzMignc3RhcnQnKVxuICAgIC51aW50MzIoJ2VuZCcpXG4gICAgLnVpbnQzMigndmFsaWRDbnQnKVxuICAgIC5mbG9hdCgnbWluU2NvcmUnKVxuICAgIC5mbG9hdCgnbWF4U2NvcmUnKVxuICAgIC5mbG9hdCgnc3VtRGF0YScpXG4gICAgLmZsb2F0KCdzdW1TcURhdGEnKVxuXG4gIGNvbnN0IGxlYWZQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC51aW50OCgnaXNMZWFmJylcbiAgICAuc2tpcCgxKVxuICAgIC51aW50MTYoJ2NudCcpXG4gICAgLmNob2ljZSh7XG4gICAgICB0YWc6ICdpc0xlYWYnLFxuICAgICAgY2hvaWNlczoge1xuICAgICAgICAxOiBuZXcgUGFyc2VyKCkuYXJyYXkoJ2Jsb2Nrc1RvRmV0Y2gnLCB7XG4gICAgICAgICAgbGVuZ3RoOiAnY250JyxcbiAgICAgICAgICB0eXBlOiBuZXcgUGFyc2VyKClcbiAgICAgICAgICAgIC51aW50MzIoJ3N0YXJ0Q2hyb20nKVxuICAgICAgICAgICAgLnVpbnQzMignc3RhcnRCYXNlJylcbiAgICAgICAgICAgIC51aW50MzIoJ2VuZENocm9tJylcbiAgICAgICAgICAgIC51aW50MzIoJ2VuZEJhc2UnKVxuICAgICAgICAgICAgLnVpbnQ2NCgnYmxvY2tPZmZzZXQnKVxuICAgICAgICAgICAgLnVpbnQ2NCgnYmxvY2tTaXplJyksXG4gICAgICAgIH0pLFxuICAgICAgICAwOiBuZXcgUGFyc2VyKCkuYXJyYXkoJ3JlY3VyT2Zmc2V0cycsIHtcbiAgICAgICAgICBsZW5ndGg6ICdjbnQnLFxuICAgICAgICAgIHR5cGU6IG5ldyBQYXJzZXIoKVxuICAgICAgICAgICAgLnVpbnQzMignc3RhcnRDaHJvbScpXG4gICAgICAgICAgICAudWludDMyKCdzdGFydEJhc2UnKVxuICAgICAgICAgICAgLnVpbnQzMignZW5kQ2hyb20nKVxuICAgICAgICAgICAgLnVpbnQzMignZW5kQmFzZScpXG4gICAgICAgICAgICAudWludDY0KCdibG9ja09mZnNldCcpLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSlcbiAgY29uc3QgYmlnQmVkUGFyc2VyID0gbmV3IFBhcnNlcigpXG4gICAgLmVuZGlhbmVzcyhsZSlcbiAgICAudWludDMyKCdjaHJvbUlkJylcbiAgICAuaW50MzIoJ3N0YXJ0JylcbiAgICAuaW50MzIoJ2VuZCcpXG4gICAgLnN0cmluZygncmVzdCcsIHtcbiAgICAgIHplcm9UZXJtaW5hdGVkOiB0cnVlLFxuICAgIH0pXG5cbiAgY29uc3QgYmlnV2lnUGFyc2VyID0gbmV3IFBhcnNlcigpXG4gICAgLmVuZGlhbmVzcyhsZSlcbiAgICAuc2tpcCg0KVxuICAgIC5pbnQzMignYmxvY2tTdGFydCcpXG4gICAgLnNraXAoNClcbiAgICAudWludDMyKCdpdGVtU3RlcCcpXG4gICAgLnVpbnQzMignaXRlbVNwYW4nKVxuICAgIC51aW50OCgnYmxvY2tUeXBlJylcbiAgICAuc2tpcCgxKVxuICAgIC51aW50MTYoJ2l0ZW1Db3VudCcpXG4gICAgLmNob2ljZSh7XG4gICAgICB0YWc6ICdibG9ja1R5cGUnLFxuICAgICAgY2hvaWNlczoge1xuICAgICAgICBbQklHX1dJR19UWVBFX0ZTVEVQXTogbmV3IFBhcnNlcigpLmFycmF5KCdpdGVtcycsIHtcbiAgICAgICAgICBsZW5ndGg6ICdpdGVtQ291bnQnLFxuICAgICAgICAgIHR5cGU6IG5ldyBQYXJzZXIoKS5mbG9hdCgnc2NvcmUnKSxcbiAgICAgICAgfSksXG4gICAgICAgIFtCSUdfV0lHX1RZUEVfVlNURVBdOiBuZXcgUGFyc2VyKCkuYXJyYXkoJ2l0ZW1zJywge1xuICAgICAgICAgIGxlbmd0aDogJ2l0ZW1Db3VudCcsXG4gICAgICAgICAgdHlwZTogbmV3IFBhcnNlcigpLmludDMyKCdzdGFydCcpLmZsb2F0KCdzY29yZScpLFxuICAgICAgICB9KSxcbiAgICAgICAgW0JJR19XSUdfVFlQRV9HUkFQSF06IG5ldyBQYXJzZXIoKS5hcnJheSgnaXRlbXMnLCB7XG4gICAgICAgICAgbGVuZ3RoOiAnaXRlbUNvdW50JyxcbiAgICAgICAgICB0eXBlOiBuZXcgUGFyc2VyKClcbiAgICAgICAgICAgIC5pbnQzMignc3RhcnQnKVxuICAgICAgICAgICAgLmludDMyKCdlbmQnKVxuICAgICAgICAgICAgLmZsb2F0KCdzY29yZScpLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSlcbiAgcmV0dXJuIHtcbiAgICBiaWdXaWdQYXJzZXIsXG4gICAgYmlnQmVkUGFyc2VyLFxuICAgIHN1bW1hcnlQYXJzZXIsXG4gICAgbGVhZlBhcnNlcixcbiAgfVxufVxuXG4vKipcbiAqIFZpZXcgaW50byBhIHN1YnNldCBvZiB0aGUgZGF0YSBpbiBhIEJpZ1dpZyBmaWxlLlxuICpcbiAqIEFkYXB0ZWQgYnkgUm9iZXJ0IEJ1ZWxzIGFuZCBDb2xpbiBEaWVzaCBmcm9tIGJpZ3dpZy5qcyBpbiB0aGUgRGFsbGlhbmNlIEdlbm9tZVxuICogRXhwbG9yZXIgYnkgVGhvbWFzIERvd24uXG4gKiBAY29uc3RydWN0c1xuICovXG5cbmV4cG9ydCBjbGFzcyBCbG9ja1ZpZXcge1xuICBwcml2YXRlIGNpclRyZWVPZmZzZXQ6IG51bWJlclxuXG4gIHByaXZhdGUgY2lyVHJlZUxlbmd0aDogbnVtYmVyXG5cbiAgcHJpdmF0ZSBiYmk6IGFueVxuXG4gIHByaXZhdGUgaXNDb21wcmVzc2VkOiBib29sZWFuXG5cbiAgcHJpdmF0ZSBpc0JpZ0VuZGlhbjogYm9vbGVhblxuXG4gIHByaXZhdGUgcmVmc0J5TmFtZTogYW55XG5cbiAgcHJpdmF0ZSBibG9ja1R5cGU6IHN0cmluZ1xuXG4gIHByaXZhdGUgY2lyVHJlZUJ1ZmZlcjogQnVmZmVyXG5cbiAgcHJpdmF0ZSBjaXJUcmVlUHJvbWlzZT86IFByb21pc2U8dm9pZD5cblxuICBwcml2YXRlIGZlYXR1cmVDYWNoZTogYW55XG5cbiAgcHJpdmF0ZSBsZWFmUGFyc2VyOiBhbnlcblxuICBwcml2YXRlIGJpZ1dpZ1BhcnNlcjogYW55XG5cbiAgcHJpdmF0ZSBiaWdCZWRQYXJzZXI6IGFueVxuXG4gIHByaXZhdGUgc3VtbWFyeVBhcnNlcjogYW55XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGJiaTogYW55LFxuICAgIHJlZnNCeU5hbWU6IGFueSxcbiAgICBjaXJUcmVlT2Zmc2V0OiBudW1iZXIsXG4gICAgY2lyVHJlZUxlbmd0aDogbnVtYmVyLFxuICAgIGlzQmlnRW5kaWFuOiBib29sZWFuLFxuICAgIGlzQ29tcHJlc3NlZDogYm9vbGVhbixcbiAgICBibG9ja1R5cGU6IHN0cmluZyxcbiAgKSB7XG4gICAgaWYgKCEoY2lyVHJlZU9mZnNldCA+PSAwKSkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGNpclRyZWVPZmZzZXQhJylcbiAgICBpZiAoIShjaXJUcmVlTGVuZ3RoID4gMCkpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBjaXJUcmVlTGVuZ3RoIScpXG5cbiAgICB0aGlzLmNpclRyZWVPZmZzZXQgPSBjaXJUcmVlT2Zmc2V0XG4gICAgdGhpcy5jaXJUcmVlTGVuZ3RoID0gY2lyVHJlZUxlbmd0aFxuICAgIHRoaXMuaXNDb21wcmVzc2VkID0gaXNDb21wcmVzc2VkXG4gICAgdGhpcy5yZWZzQnlOYW1lID0gcmVmc0J5TmFtZVxuICAgIHRoaXMuaXNCaWdFbmRpYW4gPSBpc0JpZ0VuZGlhblxuICAgIHRoaXMuYmJpID0gYmJpXG4gICAgdGhpcy5ibG9ja1R5cGUgPSBibG9ja1R5cGVcbiAgICB0aGlzLmNpclRyZWVCdWZmZXIgPSBCdWZmZXIuYWxsb2MoNDgpXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBnZXRQYXJzZXJzKGlzQmlnRW5kaWFuKSlcblxuICAgIHRoaXMuZmVhdHVyZUNhY2hlID0gbmV3IEFib3J0YWJsZVByb21pc2VDYWNoZSh7XG4gICAgICBjYWNoZTogbmV3IFF1aWNrTFJVKHsgbWF4U2l6ZTogMTAwMCB9KSxcblxuICAgICAgYXN5bmMgZmlsbChyZXF1ZXN0RGF0YTogUmVhZERhdGEsIHNpZ25hbDogQWJvcnRTaWduYWwpIHtcbiAgICAgICAgY29uc3QgeyBsZW5ndGgsIG9mZnNldCB9ID0gcmVxdWVzdERhdGFcbiAgICAgICAgY29uc3QgcmVzdWx0QnVmZmVyID0gQnVmZmVyLmFsbG9jKGxlbmd0aClcbiAgICAgICAgYXdhaXQgYmJpLnJlYWQocmVzdWx0QnVmZmVyLCAwLCBsZW5ndGgsIG9mZnNldCwgeyBzaWduYWwgfSlcbiAgICAgICAgcmV0dXJuIHJlc3VsdEJ1ZmZlclxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlYWRXaWdEYXRhKFxuICAgIGNock5hbWU6IHN0cmluZyxcbiAgICBzdGFydDogbnVtYmVyLFxuICAgIGVuZDogbnVtYmVyLFxuICAgIG9ic2VydmVyOiBPYnNlcnZlcjxGZWF0dXJlW10+LFxuICAgIG9wdHM6IE9wdGlvbnMsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHJlZnNCeU5hbWUsIGJiaSwgY2lyVHJlZU9mZnNldCwgaXNCaWdFbmRpYW4gfSA9IHRoaXNcbiAgICAgIGNvbnN0IHsgc2lnbmFsIH0gPSBvcHRzXG4gICAgICBjb25zdCBjaHJJZCA9IHJlZnNCeU5hbWVbY2hyTmFtZV1cbiAgICAgIGlmIChjaHJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKClcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB7IGNocklkLCBzdGFydCwgZW5kIH1cbiAgICAgIGlmICh0aGlzLmNpclRyZWVQcm9taXNlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY2lyVHJlZVByb21pc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2lyVHJlZVByb21pc2UgPSBhd2FpdCBiYmkucmVhZCh0aGlzLmNpclRyZWVCdWZmZXIsIDAsIDQ4LCBjaXJUcmVlT2Zmc2V0LCB7IHNpZ25hbCB9KVxuICAgICAgfVxuICAgICAgY29uc3QgYnVmZmVyID0gdGhpcy5jaXJUcmVlQnVmZmVyXG4gICAgICBjb25zdCBjaXJCbG9ja1NpemUgPSBpc0JpZ0VuZGlhbiA/IGJ1ZmZlci5yZWFkVUludDMyQkUoNCkgOiBidWZmZXIucmVhZFVJbnQzMkxFKDQpXG4gICAgICBsZXQgYmxvY2tzVG9GZXRjaDogYW55W10gPSBbXVxuICAgICAgbGV0IG91dHN0YW5kaW5nID0gMFxuXG4gICAgICBsZXQgY2lyRm9iUmVjdXIyOiBGdW5jdGlvblxuXG4gICAgICBjb25zdCBmaWx0ZXJGZWF0cyA9IChiOiBEYXRhQmxvY2spOiBib29sZWFuID0+XG4gICAgICAgIChiLnN0YXJ0Q2hyb20gPCBjaHJJZCB8fCAoYi5zdGFydENocm9tID09PSBjaHJJZCAmJiBiLnN0YXJ0QmFzZSA8PSBlbmQpKSAmJlxuICAgICAgICAoYi5lbmRDaHJvbSA+IGNocklkIHx8IChiLmVuZENocm9tID09PSBjaHJJZCAmJiBiLmVuZEJhc2UgPj0gc3RhcnQpKVxuXG4gICAgICBjb25zdCBjaXJGb2JTdGFydEZldGNoID0gYXN5bmMgKG9mZjogYW55LCBmcjogYW55LCBsZXZlbDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgbGVuZ3RoID0gZnIubWF4KCkgLSBmci5taW4oKVxuICAgICAgICAgIGNvbnN0IG9mZnNldCA9IGZyLm1pbigpXG4gICAgICAgICAgY29uc3QgcmVzdWx0QnVmZmVyID0gYXdhaXQgdGhpcy5mZWF0dXJlQ2FjaGUuZ2V0KGAke2xlbmd0aH1fJHtvZmZzZXR9YCwgeyBsZW5ndGgsIG9mZnNldCB9LCBzaWduYWwpXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvZmYubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChmci5jb250YWlucyhvZmZbaV0pKSB7XG4gICAgICAgICAgICAgIGNpckZvYlJlY3VyMihyZXN1bHRCdWZmZXIsIG9mZltpXSAtIG9mZnNldCwgbGV2ZWwsIG9ic2VydmVyLCBvcHRzKVxuICAgICAgICAgICAgICBvdXRzdGFuZGluZyAtPSAxXG4gICAgICAgICAgICAgIGlmIChvdXRzdGFuZGluZyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhZEZlYXR1cmVzKG9ic2VydmVyLCBibG9ja3NUb0ZldGNoLCB7IC4uLm9wdHMsIHJlcXVlc3QgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIG9ic2VydmVyLmVycm9yKGUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGNpckZvYlJlY3VyID0gKG9mZnNldDogYW55LCBsZXZlbDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgb3V0c3RhbmRpbmcgKz0gb2Zmc2V0Lmxlbmd0aFxuXG4gICAgICAgICAgY29uc3QgbWF4Q2lyQmxvY2tTcGFuID0gNCArIGNpckJsb2NrU2l6ZSAqIDMyIC8vIFVwcGVyIGJvdW5kIG9uIHNpemUsIGJhc2VkIG9uIGEgY29tcGxldGVseSBmdWxsIGxlYWYgbm9kZS5cbiAgICAgICAgICBsZXQgc3BhbnMgPSBuZXcgUmFuZ2Uob2Zmc2V0WzBdLCBvZmZzZXRbMF0gKyBtYXhDaXJCbG9ja1NwYW4pXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBvZmZzZXQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrU3BhbiA9IG5ldyBSYW5nZShvZmZzZXRbaV0sIG9mZnNldFtpXSArIG1heENpckJsb2NrU3BhbilcbiAgICAgICAgICAgIHNwYW5zID0gc3BhbnMudW5pb24oYmxvY2tTcGFuKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzcGFucy5nZXRSYW5nZXMoKS5tYXAoKGZyOiBSYW5nZSkgPT4gY2lyRm9iU3RhcnRGZXRjaChvZmZzZXQsIGZyLCBsZXZlbCkpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNpckZvYlJlY3VyMiA9IChjaXJCbG9ja0RhdGE6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGxldmVsOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gY2lyQmxvY2tEYXRhLnNsaWNlKG9mZnNldClcblxuICAgICAgICAgIGNvbnN0IHAgPSB0aGlzLmxlYWZQYXJzZXIucGFyc2UoZGF0YSkucmVzdWx0XG4gICAgICAgICAgaWYgKHAuYmxvY2tzVG9GZXRjaCkge1xuICAgICAgICAgICAgYmxvY2tzVG9GZXRjaCA9IGJsb2Nrc1RvRmV0Y2guY29uY2F0KFxuICAgICAgICAgICAgICBwLmJsb2Nrc1RvRmV0Y2hcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGZpbHRlckZlYXRzKVxuICAgICAgICAgICAgICAgIC5tYXAoKGw6IGFueSk6IGFueSA9PiAoeyBvZmZzZXQ6IGwuYmxvY2tPZmZzZXQsIGxlbmd0aDogbC5ibG9ja1NpemUgfSkpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocC5yZWN1ck9mZnNldHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlY3VyT2Zmc2V0cyA9IHAucmVjdXJPZmZzZXRzLmZpbHRlcihmaWx0ZXJGZWF0cykubWFwKChsOiBhbnkpOiBhbnkgPT4gbC5ibG9ja09mZnNldClcbiAgICAgICAgICAgIGlmIChyZWN1ck9mZnNldHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBjaXJGb2JSZWN1cihyZWN1ck9mZnNldHMsIGxldmVsICsgMSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjaXJGb2JSZWN1cihbY2lyVHJlZU9mZnNldCArIDQ4XSwgMSlcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvYnNlcnZlci5lcnJvcihlKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VTdW1tYXJ5QmxvY2soZGF0YTogQnVmZmVyLCBzdGFydE9mZnNldDogbnVtYmVyLCByZXF1ZXN0PzogQ29vcmRSZXF1ZXN0KTogRmVhdHVyZVtdIHtcbiAgICBjb25zdCBmZWF0dXJlcyA9IFtdXG4gICAgbGV0IGN1cnJPZmZzZXQgPSBzdGFydE9mZnNldFxuICAgIHdoaWxlIChjdXJyT2Zmc2V0IDwgZGF0YS5ieXRlTGVuZ3RoKSB7XG4gICAgICBjb25zdCByZXMgPSB0aGlzLnN1bW1hcnlQYXJzZXIucGFyc2UoZGF0YS5zbGljZShjdXJyT2Zmc2V0KSlcbiAgICAgIGZlYXR1cmVzLnB1c2gocmVzLnJlc3VsdClcbiAgICAgIGN1cnJPZmZzZXQgKz0gcmVzLm9mZnNldFxuICAgIH1cbiAgICBsZXQgaXRlbXMgPSBmZWF0dXJlc1xuICAgIGlmIChyZXF1ZXN0KSBpdGVtcyA9IGl0ZW1zLmZpbHRlcigoZWx0OiBTdW1tYXJ5QmxvY2spOiBib29sZWFuID0+IGVsdC5jaHJvbUlkID09PSByZXF1ZXN0LmNocklkKVxuICAgIGl0ZW1zID0gaXRlbXMubWFwKFxuICAgICAgKGVsdDogU3VtbWFyeUJsb2NrKTogRmVhdHVyZSA9PiAoe1xuICAgICAgICBzdGFydDogZWx0LnN0YXJ0LFxuICAgICAgICBlbmQ6IGVsdC5lbmQsXG4gICAgICAgIG1heFNjb3JlOiBlbHQubWF4U2NvcmUsXG4gICAgICAgIG1pblNjb3JlOiBlbHQubWluU2NvcmUsXG4gICAgICAgIHNjb3JlOiBlbHQuc3VtRGF0YSAvIChlbHQudmFsaWRDbnQgfHwgMSksXG4gICAgICAgIHN1bW1hcnk6IHRydWUsXG4gICAgICB9KSxcbiAgICApXG4gICAgcmV0dXJuIHJlcXVlc3QgPyBpdGVtcy5maWx0ZXIoZiA9PiBCbG9ja1ZpZXcuY29vcmRGaWx0ZXIoZiwgcmVxdWVzdCkpIDogaXRlbXNcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VCaWdCZWRCbG9jayhkYXRhOiBCdWZmZXIsIHN0YXJ0T2Zmc2V0OiBudW1iZXIsIHJlcXVlc3Q/OiBDb29yZFJlcXVlc3QpOiBGZWF0dXJlW10ge1xuICAgIGNvbnN0IGl0ZW1zID0gW11cbiAgICBsZXQgY3Vyck9mZnNldCA9IHN0YXJ0T2Zmc2V0XG4gICAgd2hpbGUgKGN1cnJPZmZzZXQgPCBkYXRhLmJ5dGVMZW5ndGgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IHRoaXMuYmlnQmVkUGFyc2VyLnBhcnNlKGRhdGEuc2xpY2UoY3Vyck9mZnNldCkpXG4gICAgICByZXMucmVzdWx0LnVuaXF1ZUlkID0gYGJiLSR7c3RhcnRPZmZzZXQgKyBjdXJyT2Zmc2V0fWBcbiAgICAgIGl0ZW1zLnB1c2gocmVzLnJlc3VsdClcbiAgICAgIGN1cnJPZmZzZXQgKz0gcmVzLm9mZnNldFxuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0ID8gaXRlbXMuZmlsdGVyKChmOiBhbnkpID0+IEJsb2NrVmlldy5jb29yZEZpbHRlcihmLCByZXF1ZXN0KSkgOiBpdGVtc1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUJpZ1dpZ0Jsb2NrKGJ5dGVzOiBCdWZmZXIsIHN0YXJ0T2Zmc2V0OiBudW1iZXIsIHJlcXVlc3Q/OiBDb29yZFJlcXVlc3QpOiBGZWF0dXJlW10ge1xuICAgIGNvbnN0IGRhdGEgPSBieXRlcy5zbGljZShzdGFydE9mZnNldClcbiAgICBjb25zdCByZXN1bHRzID0gdGhpcy5iaWdXaWdQYXJzZXIucGFyc2UoZGF0YSkucmVzdWx0XG4gICAgbGV0IHsgaXRlbXMgfSA9IHJlc3VsdHNcbiAgICBpZiAocmVzdWx0cy5ibG9ja1R5cGUgPT09IEJJR19XSUdfVFlQRV9GU1RFUCkge1xuICAgICAgY29uc3QgeyBpdGVtU3RlcDogc3RlcCwgaXRlbVNwYW46IHNwYW4gfSA9IHJlc3VsdHNcbiAgICAgIGl0ZW1zID0gaXRlbXMubWFwKChmZWF0dXJlOiBhbnksIGluZGV4OiBudW1iZXIpID0+ICh7XG4gICAgICAgIC4uLmZlYXR1cmUsXG4gICAgICAgIHN0YXJ0OiBpbmRleCAqIHN0ZXAsXG4gICAgICAgIGVuZDogaW5kZXggKiBzdGVwICsgc3BhbixcbiAgICAgIH0pKVxuICAgIH0gZWxzZSBpZiAocmVzdWx0cy5ibG9ja1R5cGUgPT09IEJJR19XSUdfVFlQRV9WU1RFUCkge1xuICAgICAgY29uc3QgeyBpdGVtU3Bhbjogc3BhbiB9ID0gcmVzdWx0c1xuICAgICAgaXRlbXMgPSBpdGVtcy5tYXAoKGZlYXR1cmU6IGFueSkgPT4gKHtcbiAgICAgICAgLi4uZmVhdHVyZSxcbiAgICAgICAgZW5kOiBmZWF0dXJlLnN0YXJ0ICsgc3BhbixcbiAgICAgIH0pKVxuICAgIH1cbiAgICByZXR1cm4gcmVxdWVzdCA/IGl0ZW1zLmZpbHRlcigoZjogYW55KSA9PiBCbG9ja1ZpZXcuY29vcmRGaWx0ZXIoZiwgcmVxdWVzdCkpIDogaXRlbXNcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvb3JkRmlsdGVyKGY6IEZlYXR1cmUsIHJhbmdlOiBDb29yZFJlcXVlc3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZi5zdGFydCA8IHJhbmdlLmVuZCAmJiBmLmVuZCA+PSByYW5nZS5zdGFydFxuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlYWRGZWF0dXJlcyhvYnNlcnZlcjogT2JzZXJ2ZXI8RmVhdHVyZVtdPiwgYmxvY2tzOiBhbnksIG9wdHM6IE9wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGJsb2NrVHlwZSwgaXNDb21wcmVzc2VkIH0gPSB0aGlzXG4gICAgICBjb25zdCB7IHNpZ25hbCwgcmVxdWVzdCB9ID0gb3B0c1xuICAgICAgY29uc3QgYmxvY2tHcm91cHNUb0ZldGNoID0gZ3JvdXBCbG9ja3MoYmxvY2tzKVxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGJsb2NrR3JvdXBzVG9GZXRjaC5tYXAoYXN5bmMgKGJsb2NrR3JvdXA6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgbGVuZ3RoLCBvZmZzZXQgfSA9IGJsb2NrR3JvdXBcbiAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZWF0dXJlQ2FjaGUuZ2V0KGAke2xlbmd0aH1fJHtvZmZzZXR9YCwgYmxvY2tHcm91cCwgc2lnbmFsKVxuICAgICAgICAgIGJsb2NrR3JvdXAuYmxvY2tzLmZvckVhY2goKGJsb2NrOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGxldCBibG9ja09mZnNldCA9IGJsb2NrLm9mZnNldCAtIGJsb2NrR3JvdXAub2Zmc2V0XG4gICAgICAgICAgICBjb25zdCByZXN1bHREYXRhID0gaXNDb21wcmVzc2VkID8gemxpYi5pbmZsYXRlU3luYyhkYXRhLnNsaWNlKGJsb2NrT2Zmc2V0KSkgOiBkYXRhXG4gICAgICAgICAgICBibG9ja09mZnNldCA9IGlzQ29tcHJlc3NlZCA/IDAgOiBvZmZzZXRcblxuICAgICAgICAgICAgc3dpdGNoIChibG9ja1R5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSAnc3VtbWFyeSc6XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0aGlzLnBhcnNlU3VtbWFyeUJsb2NrKHJlc3VsdERhdGEsIGJsb2NrT2Zmc2V0LCByZXF1ZXN0KSlcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICdiaWd3aWcnOlxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodGhpcy5wYXJzZUJpZ1dpZ0Jsb2NrKHJlc3VsdERhdGEsIGJsb2NrT2Zmc2V0LCByZXF1ZXN0KSlcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICdiaWdiZWQnOlxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodGhpcy5wYXJzZUJpZ0JlZEJsb2NrKHJlc3VsdERhdGEsIGJsb2NrT2Zmc2V0LCByZXF1ZXN0KSlcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgRG9uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJHtibG9ja1R5cGV9YClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvYnNlcnZlci5lcnJvcihlKVxuICAgIH1cbiAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ibG9ja1ZpZXcudHMiXSwibmFtZXMiOlsiQklHX1dJR19UWVBFX0dSQVBIIiwiQklHX1dJR19UWVBFX1ZTVEVQIiwiQklHX1dJR19UWVBFX0ZTVEVQIiwiZ2V0UGFyc2VycyIsImlzQmlnRW5kaWFuIiwibGUiLCJzdW1tYXJ5UGFyc2VyIiwiUGFyc2VyIiwiZW5kaWFuZXNzIiwidWludDMyIiwiZmxvYXQiLCJsZWFmUGFyc2VyIiwidWludDgiLCJza2lwIiwidWludDE2IiwiY2hvaWNlIiwidGFnIiwiY2hvaWNlcyIsImFycmF5IiwibGVuZ3RoIiwidHlwZSIsInVpbnQ2NCIsImJpZ0JlZFBhcnNlciIsImludDMyIiwic3RyaW5nIiwiemVyb1Rlcm1pbmF0ZWQiLCJiaWdXaWdQYXJzZXIiLCJCbG9ja1ZpZXciLCJiYmkiLCJyZWZzQnlOYW1lIiwiY2lyVHJlZU9mZnNldCIsImNpclRyZWVMZW5ndGgiLCJpc0NvbXByZXNzZWQiLCJibG9ja1R5cGUiLCJFcnJvciIsImNpclRyZWVCdWZmZXIiLCJCdWZmZXIiLCJhbGxvYyIsIk9iamVjdCIsImFzc2lnbiIsImZlYXR1cmVDYWNoZSIsIkFib3J0YWJsZVByb21pc2VDYWNoZSIsImNhY2hlIiwiUXVpY2tMUlUiLCJtYXhTaXplIiwiZmlsbCIsInJlcXVlc3REYXRhIiwic2lnbmFsIiwib2Zmc2V0IiwicmVzdWx0QnVmZmVyIiwicmVhZCIsImNock5hbWUiLCJzdGFydCIsImVuZCIsIm9ic2VydmVyIiwib3B0cyIsImNocklkIiwidW5kZWZpbmVkIiwiY29tcGxldGUiLCJyZXF1ZXN0IiwiY2lyVHJlZVByb21pc2UiLCJidWZmZXIiLCJjaXJCbG9ja1NpemUiLCJyZWFkVUludDMyQkUiLCJyZWFkVUludDMyTEUiLCJibG9ja3NUb0ZldGNoIiwib3V0c3RhbmRpbmciLCJmaWx0ZXJGZWF0cyIsImIiLCJzdGFydENocm9tIiwic3RhcnRCYXNlIiwiZW5kQ2hyb20iLCJlbmRCYXNlIiwiY2lyRm9iU3RhcnRGZXRjaCIsIm9mZiIsImZyIiwibGV2ZWwiLCJtYXgiLCJtaW4iLCJnZXQiLCJpIiwiY29udGFpbnMiLCJjaXJGb2JSZWN1cjIiLCJyZWFkRmVhdHVyZXMiLCJlcnJvciIsImNpckZvYlJlY3VyIiwibWF4Q2lyQmxvY2tTcGFuIiwic3BhbnMiLCJSYW5nZSIsImJsb2NrU3BhbiIsInVuaW9uIiwiZ2V0UmFuZ2VzIiwibWFwIiwiZSIsImNpckJsb2NrRGF0YSIsImRhdGEiLCJzbGljZSIsInAiLCJwYXJzZSIsInJlc3VsdCIsImNvbmNhdCIsImZpbHRlciIsImwiLCJibG9ja09mZnNldCIsImJsb2NrU2l6ZSIsInJlY3VyT2Zmc2V0cyIsInN0YXJ0T2Zmc2V0IiwiZmVhdHVyZXMiLCJjdXJyT2Zmc2V0IiwiYnl0ZUxlbmd0aCIsInJlcyIsInB1c2giLCJpdGVtcyIsImVsdCIsImNocm9tSWQiLCJtYXhTY29yZSIsIm1pblNjb3JlIiwic2NvcmUiLCJzdW1EYXRhIiwidmFsaWRDbnQiLCJzdW1tYXJ5IiwiZiIsImNvb3JkRmlsdGVyIiwidW5pcXVlSWQiLCJieXRlcyIsInJlc3VsdHMiLCJzdGVwIiwiaXRlbVN0ZXAiLCJzcGFuIiwiaXRlbVNwYW4iLCJmZWF0dXJlIiwiaW5kZXgiLCJibG9ja3MiLCJibG9ja0dyb3Vwc1RvRmV0Y2giLCJQcm9taXNlIiwiYWxsIiwiYmxvY2tHcm91cCIsImZvckVhY2giLCJibG9jayIsInJlc3VsdERhdGEiLCJ6bGliIiwiaW5mbGF0ZVN5bmMiLCJuZXh0IiwicGFyc2VTdW1tYXJ5QmxvY2siLCJwYXJzZUJpZ1dpZ0Jsb2NrIiwicGFyc2VCaWdCZWRCbG9jayIsImNvbnNvbGUiLCJ3YXJuIiwicmFuZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBUkE7QUE4Q0EsSUFBTUEsa0JBQWtCLEdBQUcsQ0FBM0I7QUFDQSxJQUFNQyxrQkFBa0IsR0FBRyxDQUEzQjtBQUNBLElBQU1D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QVQsQ0FBYyxNQUFJLENBQUNDLGlCQUFMLENBQXVCSixVQUF2QixFQUFtQ3BDLFdBQW5DLEVBQWdENUMsT0FBaEQsQ0FBZDtBQUNBOztBQUNGLHFDQUFLLFFBQUw7QUFDRUwsa0NBQUFBLFFBQVEsQ0FBQ3dGLElBQVQsQ0FBYyxNQUFJLENBQUNFLGdCQUFMLENBQXNCTCxVQUF0QixFQUFrQ3BDLFdBQWxDLEVBQStDNUMsT0FBL0MsQ0FBZDtBQUNBOztBQUNGLHFDQUFLLFFBQUw7QUFDRUwsa0NBQUFBLFFBQVEsQ0FBQ3dGLElBQVQsQ0FBYyxNQUFJLENBQUNHLGdCQUFMLENBQXNCTixVQUF0QixFQUFrQ3BDLFdBQWxDLEVBQStDNUMsT0FBL0MsQ0FBZDtBQUNBOztBQUNGO0FBQ0V1RixrQ0FBQUEsT0FBTyxDQUFDQyxJQUFSLHNDQUEyQ2xILFNBQTNDO0FBWEo7QUFhRCw2QkFyQkQ7O0FBSHFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUF2Qjs7QUFBQTtBQUFBO0FBQUE7QUFBQSxvQkFESSxDOzs7QUE0Qk5xQixnQkFBQUEsUUFBUSxDQUFDSSxRQUFUOzs7Ozs7O0FBRUFKLGdCQUFBQSxRQUFRLENBQUM4QixLQUFUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0NBdkN1QnFDLEMsRUFBWTJCLEssRUFBOEI7QUFDbkUsYUFBTzNCLENBQUMsQ0FBQ3JFLEtBQUYsR0FBVWdHLEtBQUssQ0FBQy9GLEdBQWhCLElBQXVCb0UsQ0FBQyxDQUFDcEUsR0FBRixJQUFTK0YsS0FBSyxDQUFDaEcsS0FBN0M7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBuby1iaXR3aXNlOiBbXCJlcnJvclwiLCB7IFwiYWxsb3dcIjogW1wifFwiXSB9XSAqL1xuaW1wb3J0IHsgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSAnQGdtb2QvYmluYXJ5LXBhcnNlcidcbmltcG9ydCBBYm9ydGFibGVQcm9taXNlQ2FjaGUgZnJvbSAnYWJvcnRhYmxlLXByb21pc2UtY2FjaGUnXG5pbXBvcnQgKiBhcyB6bGliIGZyb20gJ3psaWInXG5pbXBvcnQgUXVpY2tMUlUgZnJvbSAncXVpY2stbHJ1J1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4vYmJpJ1xuaW1wb3J0IFJhbmdlIGZyb20gJy4vcmFuZ2UnXG5pbXBvcnQgeyBncm91cEJsb2NrcyB9IGZyb20gJy4vdXRpbCdcblxuaW50ZXJmYWNlIENvb3JkUmVxdWVzdCB7XG4gIGNocklkOiBudW1iZXJcbiAgc3RhcnQ6IG51bWJlclxuICBlbmQ6IG51bWJlclxufVxuaW50ZXJmYWNlIERhdGFCbG9jayB7XG4gIHN0YXJ0Q2hyb206IG51bWJlclxuICBlbmRDaHJvbTogbnVtYmVyXG4gIHN0YXJ0QmFzZTogbnVtYmVyXG4gIGVuZEJhc2U6IG51bWJlclxuICB2YWxpZENudDogbnVtYmVyXG4gIG1pblZhbDogbnVtYmVyXG4gIG1heFZhbDogbnVtYmVyXG4gIHN1bURhdGE6IG51bWJlclxuICBzdW1TcURhdGE6IG51bWJlclxufVxuaW50ZXJmYWNlIFJlYWREYXRhIHtcbiAgb2Zmc2V0OiBudW1iZXJcbiAgbGVuZ3RoOiBudW1iZXJcbn1cblxuaW50ZXJmYWNlIFN1bW1hcnlCbG9jayB7XG4gIGNocm9tSWQ6IG51bWJlclxuICBzdGFydDogbnVtYmVyXG4gIGVuZDogbnVtYmVyXG4gIHZhbGlkQ250OiBudW1iZXJcbiAgbWluU2NvcmU6IG51bWJlclxuICBtYXhTY29yZTogbnVtYmVyXG4gIHN1bURhdGE6IG51bWJlclxuICBzdW1TcURhdGE6IG51bWJlclxufVxuaW50ZXJmYWNlIE9wdGlvbnMge1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbFxuICByZXF1ZXN0PzogQ29vcmRSZXF1ZXN0XG59XG5cbmNvbnN0IEJJR19XSUdfVFlQRV9HUkFQSCA9IDFcbmNvbnN0IEJJR19XSUdfVFlQRV9WU1RFUCA9IDJcbmNvbnN0IEJJR19XSUdfVFlQRV9GU1RFUCA9IDNcblxuZnVuY3Rpb24gZ2V0UGFyc2Vycyhpc0JpZ0VuZGlhbjogYm9vbGVhbik6IGFueSB7XG4gIGNvbnN0IGxlID0gaXNCaWdFbmRpYW4gPyAnYmlnJyA6ICdsaXR0bGUnXG4gIGNvbnN0IHN1bW1hcnlQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC51aW50MzIoJ2Nocm9tSWQnKVxuICAgIC51aW50MzIoJ3N0YXJ0JylcbiAgICAudWludDMyKCdlbmQnKVxuICAgIC51aW50MzIoJ3ZhbGlkQ250JylcbiAgICAuZmxvYXQoJ21pblNjb3JlJylcbiAgICAuZmxvYXQoJ21heFNjb3JlJylcbiAgICAuZmxvYXQoJ3N1bURhdGEnKVxuICAgIC5mbG9hdCgnc3VtU3FEYXRhJylcblxuICBjb25zdCBsZWFmUGFyc2VyID0gbmV3IFBhcnNlcigpXG4gICAgLmVuZGlhbmVzcyhsZSlcbiAgICAudWludDgoJ2lzTGVhZicpXG4gICAgLnNraXAoMSlcbiAgICAudWludDE2KCdjbnQnKVxuICAgIC5jaG9pY2Uoe1xuICAgICAgdGFnOiAnaXNMZWFmJyxcbiAgICAgIGNob2ljZXM6IHtcbiAgICAgICAgMTogbmV3IFBhcnNlcigpLmFycmF5KCdibG9ja3NUb0ZldGNoJywge1xuICAgICAgICAgIGxlbmd0aDogJ2NudCcsXG4gICAgICAgICAgdHlwZTogbmV3IFBhcnNlcigpXG4gICAgICAgICAgICAudWludDMyKCdzdGFydENocm9tJylcbiAgICAgICAgICAgIC51aW50MzIoJ3N0YXJ0QmFzZScpXG4gICAgICAgICAgICAudWludDMyKCdlbmRDaHJvbScpXG4gICAgICAgICAgICAudWludDMyKCdlbmRCYXNlJylcbiAgICAgICAgICAgIC51aW50NjQoJ2Jsb2NrT2Zmc2V0JylcbiAgICAgICAgICAgIC51aW50NjQoJ2Jsb2NrU2l6ZScpLFxuICAgICAgICB9KSxcbiAgICAgICAgMDogbmV3IFBhcnNlcigpLmFycmF5KCdyZWN1ck9mZnNldHMnLCB7XG4gICAgICAgICAgbGVuZ3RoOiAnY250JyxcbiAgICAgICAgICB0eXBlOiBuZXcgUGFyc2VyKClcbiAgICAgICAgICAgIC51aW50MzIoJ3N0YXJ0Q2hyb20nKVxuICAgICAgICAgICAgLnVpbnQzMignc3RhcnRCYXNlJylcbiAgICAgICAgICAgIC51aW50MzIoJ2VuZENocm9tJylcbiAgICAgICAgICAgIC51aW50MzIoJ2VuZEJhc2UnKVxuICAgICAgICAgICAgLnVpbnQ2NCgnYmxvY2tPZmZzZXQnKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pXG4gIGNvbnN0IGJpZ0JlZFBhcnNlciA9IG5ldyBQYXJzZXIoKVxuICAgIC5lbmRpYW5lc3MobGUpXG4gICAgLnVpbnQzMignY2hyb21JZCcpXG4gICAgLmludDMyKCdzdGFydCcpXG4gICAgLmludDMyKCdlbmQnKVxuICAgIC5zdHJpbmcoJ3Jlc3QnLCB7XG4gICAgICB6ZXJvVGVybWluYXRlZDogdHJ1ZSxcbiAgICB9KVxuXG4gIGNvbnN0IGJpZ1dpZ1BhcnNlciA9IG5ldyBQYXJzZXIoKVxuICAgIC5lbmRpYW5lc3MobGUpXG4gICAgLnNraXAoNClcbiAgICAuaW50MzIoJ2Jsb2NrU3RhcnQnKVxuICAgIC5za2lwKDQpXG4gICAgLnVpbnQzMignaXRlbVN0ZXAnKVxuICAgIC51aW50MzIoJ2l0ZW1TcGFuJylcbiAgICAudWludDgoJ2Jsb2NrVHlwZScpXG4gICAgLnNraXAoMSlcbiAgICAudWludDE2KCdpdGVtQ291bnQnKVxuICAgIC5jaG9pY2Uoe1xuICAgICAgdGFnOiAnYmxvY2tUeXBlJyxcbiAgICAgIGNob2ljZXM6IHtcbiAgICAgICAgW0JJR19XSUdfVFlQRV9GU1RFUF06IG5ldyBQYXJzZXIoKS5hcnJheSgnaXRlbXMnLCB7XG4gICAgICAgICAgbGVuZ3RoOiAnaXRlbUNvdW50JyxcbiAgICAgICAgICB0eXBlOiBuZXcgUGFyc2VyKCkuZmxvYXQoJ3Njb3JlJyksXG4gICAgICAgIH0pLFxuICAgICAgICBbQklHX1dJR19UWVBFX1ZTVEVQXTogbmV3IFBhcnNlcigpLmFycmF5KCdpdGVtcycsIHtcbiAgICAgICAgICBsZW5ndGg6ICdpdGVtQ291bnQnLFxuICAgICAgICAgIHR5cGU6IG5ldyBQYXJzZXIoKS5pbnQzMignc3RhcnQnKS5mbG9hdCgnc2NvcmUnKSxcbiAgICAgICAgfSksXG4gICAgICAgIFtCSUdfV0lHX1RZUEVfR1JBUEhdOiBuZXcgUGFyc2VyKCkuYXJyYXkoJ2l0ZW1zJywge1xuICAgICAgICAgIGxlbmd0aDogJ2l0ZW1Db3VudCcsXG4gICAgICAgICAgdHlwZTogbmV3IFBhcnNlcigpXG4gICAgICAgICAgICAuaW50MzIoJ3N0YXJ0JylcbiAgICAgICAgICAgIC5pbnQzMignZW5kJylcbiAgICAgICAgICAgIC5mbG9hdCgnc2NvcmUnKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pXG4gIHJldHVybiB7XG4gICAgYmlnV2lnUGFyc2VyLFxuICAgIGJpZ0JlZFBhcnNlcixcbiAgICBzdW1tYXJ5UGFyc2VyLFxuICAgIGxlYWZQYXJzZXIsXG4gIH1cbn1cblxuLyoqXG4gKiBWaWV3IGludG8gYSBzdWJzZXQgb2YgdGhlIGRhdGEgaW4gYSBCaWdXaWcgZmlsZS5cbiAqXG4gKiBBZGFwdGVkIGJ5IFJvYmVydCBCdWVscyBhbmQgQ29saW4gRGllc2ggZnJvbSBiaWd3aWcuanMgaW4gdGhlIERhbGxpYW5jZSBHZW5vbWVcbiAqIEV4cGxvcmVyIGJ5IFRob21hcyBEb3duLlxuICogQGNvbnN0cnVjdHNcbiAqL1xuXG5leHBvcnQgY2xhc3MgQmxvY2tWaWV3IHtcbiAgcHJpdmF0ZSBjaXJUcmVlT2Zmc2V0OiBudW1iZXJcblxuICBwcml2YXRlIGNpclRyZWVMZW5ndGg6IG51bWJlclxuXG4gIHByaXZhdGUgYmJpOiBhbnlcblxuICBwcml2YXRlIGlzQ29tcHJlc3NlZDogYm9vbGVhblxuXG4gIHByaXZhdGUgaXNCaWdFbmRpYW46IGJvb2xlYW5cblxuICBwcml2YXRlIHJlZnNCeU5hbWU6IGFueVxuXG4gIHByaXZhdGUgYmxvY2tUeXBlOiBzdHJpbmdcblxuICBwcml2YXRlIGNpclRyZWVCdWZmZXI6IEJ1ZmZlclxuXG4gIHByaXZhdGUgY2lyVHJlZVByb21pc2U/OiBQcm9taXNlPHZvaWQ+XG5cbiAgcHJpdmF0ZSBmZWF0dXJlQ2FjaGU6IGFueVxuXG4gIHByaXZhdGUgbGVhZlBhcnNlcjogYW55XG5cbiAgcHJpdmF0ZSBiaWdXaWdQYXJzZXI6IGFueVxuXG4gIHByaXZhdGUgYmlnQmVkUGFyc2VyOiBhbnlcblxuICBwcml2YXRlIHN1bW1hcnlQYXJzZXI6IGFueVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBiYmk6IGFueSxcbiAgICByZWZzQnlOYW1lOiBhbnksXG4gICAgY2lyVHJlZU9mZnNldDogbnVtYmVyLFxuICAgIGNpclRyZWVMZW5ndGg6IG51bWJlcixcbiAgICBpc0JpZ0VuZGlhbjogYm9vbGVhbixcbiAgICBpc0NvbXByZXNzZWQ6IGJvb2xlYW4sXG4gICAgYmxvY2tUeXBlOiBzdHJpbmcsXG4gICkge1xuICAgIGlmICghKGNpclRyZWVPZmZzZXQgPj0gMCkpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBjaXJUcmVlT2Zmc2V0IScpXG4gICAgaWYgKCEoY2lyVHJlZUxlbmd0aCA+IDApKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgY2lyVHJlZUxlbmd0aCEnKVxuXG4gICAgdGhpcy5jaXJUcmVlT2Zmc2V0ID0gY2lyVHJlZU9mZnNldFxuICAgIHRoaXMuY2lyVHJlZUxlbmd0aCA9IGNpclRyZWVMZW5ndGhcbiAgICB0aGlzLmlzQ29tcHJlc3NlZCA9IGlzQ29tcHJlc3NlZFxuICAgIHRoaXMucmVmc0J5TmFtZSA9IHJlZnNCeU5hbWVcbiAgICB0aGlzLmlzQmlnRW5kaWFuID0gaXNCaWdFbmRpYW5cbiAgICB0aGlzLmJiaSA9IGJiaVxuICAgIHRoaXMuYmxvY2tUeXBlID0gYmxvY2tUeXBlXG4gICAgdGhpcy5jaXJUcmVlQnVmZmVyID0gQnVmZmVyLmFsbG9jKDQ4KVxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgZ2V0UGFyc2Vycyhpc0JpZ0VuZGlhbikpXG5cbiAgICB0aGlzLmZlYXR1cmVDYWNoZSA9IG5ldyBBYm9ydGFibGVQcm9taXNlQ2FjaGUoe1xuICAgICAgY2FjaGU6IG5ldyBRdWlja0xSVSh7IG1heFNpemU6IDEwMDAgfSksXG5cbiAgICAgIGFzeW5jIGZpbGwocmVxdWVzdERhdGE6IFJlYWREYXRhLCBzaWduYWw6IEFib3J0U2lnbmFsKSB7XG4gICAgICAgIGNvbnN0IHsgbGVuZ3RoLCBvZmZzZXQgfSA9IHJlcXVlc3REYXRhXG4gICAgICAgIGNvbnN0IHJlc3VsdEJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhsZW5ndGgpXG4gICAgICAgIGF3YWl0IGJiaS5yZWFkKHJlc3VsdEJ1ZmZlciwgMCwgbGVuZ3RoLCBvZmZzZXQsIHsgc2lnbmFsIH0pXG4gICAgICAgIHJldHVybiByZXN1bHRCdWZmZXJcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWFkV2lnRGF0YShcbiAgICBjaHJOYW1lOiBzdHJpbmcsXG4gICAgc3RhcnQ6IG51bWJlcixcbiAgICBlbmQ6IG51bWJlcixcbiAgICBvYnNlcnZlcjogT2JzZXJ2ZXI8RmVhdHVyZVtdPixcbiAgICBvcHRzOiBPcHRpb25zLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyByZWZzQnlOYW1lLCBiYmksIGNpclRyZWVPZmZzZXQsIGlzQmlnRW5kaWFuIH0gPSB0aGlzXG4gICAgICBjb25zdCB7IHNpZ25hbCB9ID0gb3B0c1xuICAgICAgY29uc3QgY2hySWQgPSByZWZzQnlOYW1lW2Nock5hbWVdXG4gICAgICBpZiAoY2hySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXG4gICAgICB9XG4gICAgICBjb25zdCByZXF1ZXN0ID0geyBjaHJJZCwgc3RhcnQsIGVuZCB9XG4gICAgICBpZiAodGhpcy5jaXJUcmVlUHJvbWlzZSkge1xuICAgICAgICBhd2FpdCB0aGlzLmNpclRyZWVQcm9taXNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNpclRyZWVQcm9taXNlID0gYXdhaXQgYmJpLnJlYWQodGhpcy5jaXJUcmVlQnVmZmVyLCAwLCA0OCwgY2lyVHJlZU9mZnNldCwgeyBzaWduYWwgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJ1ZmZlciA9IHRoaXMuY2lyVHJlZUJ1ZmZlclxuICAgICAgY29uc3QgY2lyQmxvY2tTaXplID0gaXNCaWdFbmRpYW4gPyBidWZmZXIucmVhZFVJbnQzMkJFKDQpIDogYnVmZmVyLnJlYWRVSW50MzJMRSg0KVxuICAgICAgbGV0IGJsb2Nrc1RvRmV0Y2g6IGFueVtdID0gW11cbiAgICAgIGxldCBvdXRzdGFuZGluZyA9IDBcblxuICAgICAgbGV0IGNpckZvYlJlY3VyMjogRnVuY3Rpb25cblxuICAgICAgY29uc3QgZmlsdGVyRmVhdHMgPSAoYjogRGF0YUJsb2NrKTogYm9vbGVhbiA9PlxuICAgICAgICAoYi5zdGFydENocm9tIDwgY2hySWQgfHwgKGIuc3RhcnRDaHJvbSA9PT0gY2hySWQgJiYgYi5zdGFydEJhc2UgPD0gZW5kKSkgJiZcbiAgICAgICAgKGIuZW5kQ2hyb20gPiBjaHJJZCB8fCAoYi5lbmRDaHJvbSA9PT0gY2hySWQgJiYgYi5lbmRCYXNlID49IHN0YXJ0KSlcblxuICAgICAgY29uc3QgY2lyRm9iU3RhcnRGZXRjaCA9IGFzeW5jIChvZmY6IGFueSwgZnI6IGFueSwgbGV2ZWw6IG51bWJlcik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IGZyLm1heCgpIC0gZnIubWluKClcbiAgICAgICAgICBjb25zdCBvZmZzZXQgPSBmci5taW4oKVxuICAgICAgICAgIGNvbnN0IHJlc3VsdEJ1ZmZlciA9IGF3YWl0IHRoaXMuZmVhdHVyZUNhY2hlLmdldChgJHtsZW5ndGh9XyR7b2Zmc2V0fWAsIHsgbGVuZ3RoLCBvZmZzZXQgfSwgc2lnbmFsKVxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2ZmLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBpZiAoZnIuY29udGFpbnMob2ZmW2ldKSkge1xuICAgICAgICAgICAgICBjaXJGb2JSZWN1cjIocmVzdWx0QnVmZmVyLCBvZmZbaV0gLSBvZmZzZXQsIGxldmVsLCBvYnNlcnZlciwgb3B0cylcbiAgICAgICAgICAgICAgb3V0c3RhbmRpbmcgLT0gMVxuICAgICAgICAgICAgICBpZiAob3V0c3RhbmRpbmcgPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWRGZWF0dXJlcyhvYnNlcnZlciwgYmxvY2tzVG9GZXRjaCwgeyAuLi5vcHRzLCByZXF1ZXN0IH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBjaXJGb2JSZWN1ciA9IChvZmZzZXQ6IGFueSwgbGV2ZWw6IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG91dHN0YW5kaW5nICs9IG9mZnNldC5sZW5ndGhcblxuICAgICAgICAgIGNvbnN0IG1heENpckJsb2NrU3BhbiA9IDQgKyBjaXJCbG9ja1NpemUgKiAzMiAvLyBVcHBlciBib3VuZCBvbiBzaXplLCBiYXNlZCBvbiBhIGNvbXBsZXRlbHkgZnVsbCBsZWFmIG5vZGUuXG4gICAgICAgICAgbGV0IHNwYW5zID0gbmV3IFJhbmdlKG9mZnNldFswXSwgb2Zmc2V0WzBdICsgbWF4Q2lyQmxvY2tTcGFuKVxuICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgb2Zmc2V0Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBibG9ja1NwYW4gPSBuZXcgUmFuZ2Uob2Zmc2V0W2ldLCBvZmZzZXRbaV0gKyBtYXhDaXJCbG9ja1NwYW4pXG4gICAgICAgICAgICBzcGFucyA9IHNwYW5zLnVuaW9uKGJsb2NrU3BhbilcbiAgICAgICAgICB9XG4gICAgICAgICAgc3BhbnMuZ2V0UmFuZ2VzKCkubWFwKChmcjogUmFuZ2UpID0+IGNpckZvYlN0YXJ0RmV0Y2gob2Zmc2V0LCBmciwgbGV2ZWwpKVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjaXJGb2JSZWN1cjIgPSAoY2lyQmxvY2tEYXRhOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBsZXZlbDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IGNpckJsb2NrRGF0YS5zbGljZShvZmZzZXQpXG5cbiAgICAgICAgICBjb25zdCBwID0gdGhpcy5sZWFmUGFyc2VyLnBhcnNlKGRhdGEpLnJlc3VsdFxuICAgICAgICAgIGlmIChwLmJsb2Nrc1RvRmV0Y2gpIHtcbiAgICAgICAgICAgIGJsb2Nrc1RvRmV0Y2ggPSBibG9ja3NUb0ZldGNoLmNvbmNhdChcbiAgICAgICAgICAgICAgcC5ibG9ja3NUb0ZldGNoXG4gICAgICAgICAgICAgICAgLmZpbHRlcihmaWx0ZXJGZWF0cylcbiAgICAgICAgICAgICAgICAubWFwKChsOiBhbnkpOiBhbnkgPT4gKHsgb2Zmc2V0OiBsLmJsb2NrT2Zmc2V0LCBsZW5ndGg6IGwuYmxvY2tTaXplIH0pKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHAucmVjdXJPZmZzZXRzKSB7XG4gICAgICAgICAgICBjb25zdCByZWN1ck9mZnNldHMgPSBwLnJlY3VyT2Zmc2V0cy5maWx0ZXIoZmlsdGVyRmVhdHMpLm1hcCgobDogYW55KTogYW55ID0+IGwuYmxvY2tPZmZzZXQpXG4gICAgICAgICAgICBpZiAocmVjdXJPZmZzZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgY2lyRm9iUmVjdXIocmVjdXJPZmZzZXRzLCBsZXZlbCArIDEpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2lyRm9iUmVjdXIoW2NpclRyZWVPZmZzZXQgKyA0OF0sIDEpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlU3VtbWFyeUJsb2NrKGRhdGE6IEJ1ZmZlciwgc3RhcnRPZmZzZXQ6IG51bWJlciwgcmVxdWVzdD86IENvb3JkUmVxdWVzdCk6IEZlYXR1cmVbXSB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSBbXVxuICAgIGxldCBjdXJyT2Zmc2V0ID0gc3RhcnRPZmZzZXRcbiAgICB3aGlsZSAoY3Vyck9mZnNldCA8IGRhdGEuYnl0ZUxlbmd0aCkge1xuICAgICAgY29uc3QgcmVzID0gdGhpcy5zdW1tYXJ5UGFyc2VyLnBhcnNlKGRhdGEuc2xpY2UoY3Vyck9mZnNldCkpXG4gICAgICBmZWF0dXJlcy5wdXNoKHJlcy5yZXN1bHQpXG4gICAgICBjdXJyT2Zmc2V0ICs9IHJlcy5vZmZzZXRcbiAgICB9XG4gICAgbGV0IGl0ZW1zID0gZmVhdHVyZXNcbiAgICBpZiAocmVxdWVzdCkgaXRlbXMgPSBpdGVtcy5maWx0ZXIoKGVsdDogU3VtbWFyeUJsb2NrKTogYm9vbGVhbiA9PiBlbHQuY2hyb21JZCA9PT0gcmVxdWVzdC5jaHJJZClcbiAgICBpdGVtcyA9IGl0ZW1zLm1hcChcbiAgICAgIChlbHQ6IFN1bW1hcnlCbG9jayk6IEZlYXR1cmUgPT4gKHtcbiAgICAgICAgc3RhcnQ6IGVsdC5zdGFydCxcbiAgICAgICAgZW5kOiBlbHQuZW5kLFxuICAgICAgICBtYXhTY29yZTogZWx0Lm1heFNjb3JlLFxuICAgICAgICBtaW5TY29yZTogZWx0Lm1pblNjb3JlLFxuICAgICAgICBzY29yZTogZWx0LnN1bURhdGEgLyAoZWx0LnZhbGlkQ250IHx8IDEpLFxuICAgICAgICBzdW1tYXJ5OiB0cnVlLFxuICAgICAgfSksXG4gICAgKVxuICAgIHJldHVybiByZXF1ZXN0ID8gaXRlbXMuZmlsdGVyKGYgPT4gQmxvY2tWaWV3LmNvb3JkRmlsdGVyKGYsIHJlcXVlc3QpKSA6IGl0ZW1zXG4gIH1cblxuICBwcml2YXRlIHBhcnNlQmlnQmVkQmxvY2soZGF0YTogQnVmZmVyLCBzdGFydE9mZnNldDogbnVtYmVyLCByZXF1ZXN0PzogQ29vcmRSZXF1ZXN0KTogRmVhdHVyZVtdIHtcbiAgICBjb25zdCBpdGVtcyA9IFtdXG4gICAgbGV0IGN1cnJPZmZzZXQgPSBzdGFydE9mZnNldFxuICAgIHdoaWxlIChjdXJyT2Zmc2V0IDwgZGF0YS5ieXRlTGVuZ3RoKSB7XG4gICAgICBjb25zdCByZXMgPSB0aGlzLmJpZ0JlZFBhcnNlci5wYXJzZShkYXRhLnNsaWNlKGN1cnJPZmZzZXQpKVxuICAgICAgcmVzLnJlc3VsdC51bmlxdWVJZCA9IGBiYi0ke3N0YXJ0T2Zmc2V0ICsgY3Vyck9mZnNldH1gXG4gICAgICBpdGVtcy5wdXNoKHJlcy5yZXN1bHQpXG4gICAgICBjdXJyT2Zmc2V0ICs9IHJlcy5vZmZzZXRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxdWVzdCA/IGl0ZW1zLmZpbHRlcigoZjogYW55KSA9PiBCbG9ja1ZpZXcuY29vcmRGaWx0ZXIoZiwgcmVxdWVzdCkpIDogaXRlbXNcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VCaWdXaWdCbG9jayhieXRlczogQnVmZmVyLCBzdGFydE9mZnNldDogbnVtYmVyLCByZXF1ZXN0PzogQ29vcmRSZXF1ZXN0KTogRmVhdHVyZVtdIHtcbiAgICBjb25zdCBkYXRhID0gYnl0ZXMuc2xpY2Uoc3RhcnRPZmZzZXQpXG4gICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuYmlnV2lnUGFyc2VyLnBhcnNlKGRhdGEpLnJlc3VsdFxuICAgIGxldCB7IGl0ZW1zIH0gPSByZXN1bHRzXG4gICAgaWYgKHJlc3VsdHMuYmxvY2tUeXBlID09PSBCSUdfV0lHX1RZUEVfRlNURVApIHtcbiAgICAgIGNvbnN0IHsgaXRlbVN0ZXA6IHN0ZXAsIGl0ZW1TcGFuOiBzcGFuIH0gPSByZXN1bHRzXG4gICAgICBpdGVtcyA9IGl0ZW1zLm1hcCgoZmVhdHVyZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAuLi5mZWF0dXJlLFxuICAgICAgICBzdGFydDogaW5kZXggKiBzdGVwLFxuICAgICAgICBlbmQ6IGluZGV4ICogc3RlcCArIHNwYW4sXG4gICAgICB9KSlcbiAgICB9IGVsc2UgaWYgKHJlc3VsdHMuYmxvY2tUeXBlID09PSBCSUdfV0lHX1RZUEVfVlNURVApIHtcbiAgICAgIGNvbnN0IHsgaXRlbVNwYW46IHNwYW4gfSA9IHJlc3VsdHNcbiAgICAgIGl0ZW1zID0gaXRlbXMubWFwKChmZWF0dXJlOiBhbnkpID0+ICh7XG4gICAgICAgIC4uLmZlYXR1cmUsXG4gICAgICAgIGVuZDogZmVhdHVyZS5zdGFydCArIHNwYW4sXG4gICAgICB9KSlcbiAgICB9XG4gICAgcmV0dXJuIHJlcXVlc3QgPyBpdGVtcy5maWx0ZXIoKGY6IGFueSkgPT4gQmxvY2tWaWV3LmNvb3JkRmlsdGVyKGYsIHJlcXVlc3QpKSA6IGl0ZW1zXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb29yZEZpbHRlcihmOiBGZWF0dXJlLCByYW5nZTogQ29vcmRSZXF1ZXN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGYuc3RhcnQgPCByYW5nZS5lbmQgJiYgZi5lbmQgPj0gcmFuZ2Uuc3RhcnRcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWFkRmVhdHVyZXMob2JzZXJ2ZXI6IE9ic2VydmVyPEZlYXR1cmVbXT4sIGJsb2NrczogYW55LCBvcHRzOiBPcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBibG9ja1R5cGUsIGlzQ29tcHJlc3NlZCB9ID0gdGhpc1xuICAgICAgY29uc3QgeyBzaWduYWwsIHJlcXVlc3QgfSA9IG9wdHNcbiAgICAgIGNvbnN0IGJsb2NrR3JvdXBzVG9GZXRjaCA9IGdyb3VwQmxvY2tzKGJsb2NrcylcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBibG9ja0dyb3Vwc1RvRmV0Y2gubWFwKGFzeW5jIChibG9ja0dyb3VwOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB7IGxlbmd0aCwgb2Zmc2V0IH0gPSBibG9ja0dyb3VwXG4gICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmVhdHVyZUNhY2hlLmdldChgJHtsZW5ndGh9XyR7b2Zmc2V0fWAsIGJsb2NrR3JvdXAsIHNpZ25hbClcbiAgICAgICAgICBibG9ja0dyb3VwLmJsb2Nrcy5mb3JFYWNoKChibG9jazogYW55KSA9PiB7XG4gICAgICAgICAgICBsZXQgYmxvY2tPZmZzZXQgPSBibG9jay5vZmZzZXQgLSBibG9ja0dyb3VwLm9mZnNldFxuICAgICAgICAgICAgbGV0IHJlc3VsdERhdGEgPSBkYXRhXG4gICAgICAgICAgICBpZiAoaXNDb21wcmVzc2VkKSB7XG4gICAgICAgICAgICAgIHJlc3VsdERhdGEgPSB6bGliLmluZmxhdGVTeW5jKGRhdGEuc2xpY2UoYmxvY2tPZmZzZXQpKVxuICAgICAgICAgICAgICBibG9ja09mZnNldCA9IDBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoIChibG9ja1R5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSAnc3VtbWFyeSc6XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0aGlzLnBhcnNlU3VtbWFyeUJsb2NrKHJlc3VsdERhdGEsIGJsb2NrT2Zmc2V0LCByZXF1ZXN0KSlcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICdiaWd3aWcnOlxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodGhpcy5wYXJzZUJpZ1dpZ0Jsb2NrKHJlc3VsdERhdGEsIGJsb2NrT2Zmc2V0LCByZXF1ZXN0KSlcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICdiaWdiZWQnOlxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodGhpcy5wYXJzZUJpZ0JlZEJsb2NrKHJlc3VsdERhdGEsIGJsb2NrT2Zmc2V0LCByZXF1ZXN0KSlcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgRG9uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJHtibG9ja1R5cGV9YClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvYnNlcnZlci5lcnJvcihlKVxuICAgIH1cbiAgfVxufVxuIl19 |
{ | ||
"name": "@gmod/bbi", | ||
"version": "1.0.18", | ||
"version": "1.0.19", | ||
"description": "Parser for BigWig/BigBed files", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
195339
1983