New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@gmod/bbi

Package Overview
Dependencies
Maintainers
5
Versions
57
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.21 to 1.0.22

7

CHANGELOG.md

@@ -0,1 +1,8 @@

## [1.0.22](https://github.com/GMOD/bbi-js/compare/v1.0.21...v1.0.22) (2019-06-13)
- Bump generic-filehandle
- Add more checks for abort signal to allow early bailing
## [1.0.21](https://github.com/GMOD/bbi-js/compare/v1.0.20...v1.0.21) (2019-05-09)

@@ -2,0 +9,0 @@

2

dist/bbi.js

@@ -649,2 +649,2 @@ "use strict";

exports.BBI = BBI;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYmkudHMiXSwibmFtZXMiOlsiQklHX1dJR19NQUdJQyIsIkJJR19CRURfTUFHSUMiLCJBYm9ydEF3YXJlQ2FjaGUiLCJNYXAiLCJmbiIsImNhY2hlIiwiYWJvcnRhYmxlTWVtb2l6ZUZuIiwic2lnbmFsIiwiaGFzIiwiZm5SZXR1cm4iLCJzZXQiLCJjYXRjaCIsImFib3J0ZWQiLCJkZWxldGUiLCJnZXQiLCJlIiwiY29kZSIsIm5hbWUiLCJnZXRQYXJzZXJzIiwiaXNCRSIsImxlIiwiaGVhZGVyUGFyc2VyIiwiUGFyc2VyIiwiZW5kaWFuZXNzIiwiaW50MzIiLCJ1aW50MTYiLCJ1aW50NjQiLCJ1aW50MzIiLCJhcnJheSIsImxlbmd0aCIsInR5cGUiLCJ0b3RhbFN1bW1hcnlQYXJzZXIiLCJkb3VibGUiLCJjaHJvbVRyZWVQYXJzZXIiLCJpc0xlYWZOb2RlIiwidWludDgiLCJza2lwIiwiQkJJIiwib3B0aW9ucyIsImZpbGVoYW5kbGUiLCJyZW5hbWVSZWZTZXFzIiwicGF0aCIsInVybCIsInMiLCJoZWFkZXJDYWNoZSIsImJiaSIsIlJlbW90ZUZpbGUiLCJMb2NhbEZpbGUiLCJFcnJvciIsImdldEhlYWRlciIsImFib3J0YWJsZU1lbW9pemUiLCJfZ2V0SGVhZGVyIiwiYmluZCIsImFib3J0U2lnbmFsIiwiX2lzQmlnRW5kaWFuIiwiaXNCaWdFbmRpYW4iLCJfZ2V0TWFpbkhlYWRlciIsImhlYWRlciIsIl9yZWFkQ2hyb21UcmVlIiwiY2hyb21zIiwicmV0IiwiYnVmIiwiQnVmZmVyIiwiYWxsb2MiLCJyZWFkIiwicGFyc2UiLCJyZXN1bHQiLCJmaWxlVHlwZSIsIm1hZ2ljIiwiYXNPZmZzZXQiLCJhdXRvU3FsIiwic2xpY2UiLCJpbmRleE9mIiwidG9TdHJpbmciLCJ0b3RhbFN1bW1hcnlPZmZzZXQiLCJ0YWlsIiwidG90YWxTdW1tYXJ5IiwiYWxsb2NVbnNhZmUiLCJyZWFkSW50MzJMRSIsInJlYWRJbnQzMkJFIiwicmVmc0J5TnVtYmVyIiwicmVmc0J5TmFtZSIsImNocm9tVHJlZU9mZnNldCIsInVuem9vbWVkRGF0YU9mZnNldCIsImRhdGEiLCJwIiwia2V5U2l6ZSIsImxlYWZOb2RlUGFyc2VyIiwic3RyaW5nIiwic3RyaXBOdWxsIiwibm9ubGVhZk5vZGVQYXJzZXIiLCJyb290Tm9kZU9mZnNldCIsImJwdFJlYWROb2RlIiwiY3VycmVudE9mZnNldCIsIm9mZnNldCIsImNudCIsIm4iLCJsZWFmUmV0Iiwia2V5IiwicmVmSWQiLCJyZWZTaXplIiwicmVmUmVjIiwiaWQiLCJuZXh0Tm9kZXMiLCJub25sZWFmUmV0IiwiY2hpbGRPZmZzZXQiLCJwdXNoIiwiUHJvbWlzZSIsImFsbCIsInVuem9vbWVkSW5kZXhPZmZzZXQiLCJ6b29tTGV2ZWxzIiwidW5jb21wcmVzc0J1ZlNpemUiLCJuemwiLCJjaXJMZW4iLCJkYXRhT2Zmc2V0IiwiQmxvY2tWaWV3IiwicmVmTmFtZSIsInN0YXJ0IiwiZW5kIiwib3B0cyIsInNjYWxlIiwiY2hyTmFtZSIsImJhc2VzUGVyU3BhbiIsImdldFZpZXciLCJ2aWV3IiwiT2JzZXJ2YWJsZSIsIm9ic2VydmVyIiwicmVhZFdpZ0RhdGEiLCJnZXRGZWF0dXJlU3RyZWFtIiwib2IiLCJwaXBlIiwiYWNjIiwiY3VyciIsImNvbmNhdCIsInRvUHJvbWlzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUEsSUFBTUEsYUFBYSxHQUFHLENBQUMsVUFBdkI7QUFDQSxJQUFNQyxhQUFhLEdBQUcsQ0FBQyxVQUF2Qjs7QUErQ0E7SUFDTUMsZTs7Ozs7aURBQ3lDLElBQUlDLEdBQUosRTs7Ozs7O0FBRTdDOzs7Ozs7cUNBTXdCQyxFLEVBQW9GO0FBQUEsVUFDbEdDLEtBRGtHLEdBQ3hGLElBRHdGLENBQ2xHQSxLQURrRztBQUUxRyxhQUFPLFNBQVNDLGtCQUFULENBQTRCQyxNQUE1QixFQUFnRTtBQUNyRSxZQUFJLENBQUNGLEtBQUss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QUFoRDtBQUNELGlCQUhJLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrREFRUEgsTyxFQUNBQyxLLEVBQ0FDLEc7Ozs7Ozs7OztBQUNBQyxnQkFBQUEsSSw4REFBd0U7QUFBRUMsa0JBQUFBLEtBQUssRUFBRTtBQUFULGlCOzt1QkFFdkQsS0FBS1EsZ0JBQUwsQ0FBc0JaLE9BQXRCLEVBQStCQyxLQUEvQixFQUFzQ0MsR0FBdEMsRUFBMkNDLElBQTNDLEM7OztBQUFYVSxnQkFBQUEsRTs7dUJBQ1lBLEVBQUUsQ0FBQ0MsSUFBSCxDQUFRLHVCQUFPLFVBQUNDLEdBQUQsRUFBaUJDLElBQWpCO0FBQUEseUJBQWdERCxHQUFHLENBQUNFLE1BQUosQ0FBV0QsSUFBWCxDQUFoRDtBQUFBLGlCQUFQLENBQVIsRUFBa0ZFLFNBQWxGLEU7OztBQUFaMUUsZ0JBQUFBLEc7a0RBQ0NBLEdBQUcsSUFBSSxFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSAnQGdtb2QvYmluYXJ5LXBhcnNlcidcbmltcG9ydCB7IExvY2FsRmlsZSwgUmVtb3RlRmlsZSwgR2VuZXJpY0ZpbGVoYW5kbGUgfSBmcm9tICdnZW5lcmljLWZpbGVoYW5kbGUnXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPYnNlcnZlciB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyByZWR1Y2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgQmxvY2tWaWV3IH0gZnJvbSAnLi9ibG9ja1ZpZXcnXG5pbXBvcnQgeyBhYm9ydEJyZWFrUG9pbnQsIEFib3J0RXJyb3IgfSBmcm9tICcuL3V0aWwnXG5cbmNvbnN0IEJJR19XSUdfTUFHSUMgPSAtMjAwMzgyOTcyMlxuY29uc3QgQklHX0JFRF9NQUdJQyA9IC0yMDIxMDAyNTE3XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZSB7XG4gIHN0YXJ0OiBudW1iZXJcbiAgZW5kOiBudW1iZXJcbiAgc2NvcmU6IG51bWJlclxuICByZXN0Pzogc3RyaW5nIC8vIGZvciBiaWdiZWQgbGluZVxuICBtaW5TY29yZT86IG51bWJlciAvLyBmb3Igc3VtbWFyeSBsaW5lXG4gIG1heFNjb3JlPzogbnVtYmVyIC8vIGZvciBzdW1tYXJ5IGxpbmVcbiAgc3VtbWFyeT86IGJvb2xlYW4gLy8gaXMgc3VtbWFyeSBsaW5lXG4gIHVuaXF1ZUlkPzogc3RyaW5nIC8vIGZvciBiaWdiZWQgY29udGFpbnMgdW5pcXVlSWQgY2FsY3VsYXRlZCBmcm9tIGZpbGUgb2Zmc2V0XG4gIGZpZWxkPzogbnVtYmVyIC8vIHVzZWQgaW4gYmlnYmVkIHNlYXJjaGluZ1xufVxuaW50ZXJmYWNlIFN0YXRpc3RpY3Mge1xuICBzY29yZVN1bTogbnVtYmVyXG4gIGJhc2VzQ292ZXJlZDogbnVtYmVyXG4gIHNjb3JlU3VtU3F1YXJlczogbnVtYmVyXG59XG5cbmludGVyZmFjZSBSZWZJbmZvIHtcbiAgbmFtZTogc3RyaW5nXG4gIGlkOiBudW1iZXJcbiAgbGVuZ3RoOiBudW1iZXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyIHtcbiAgYXV0b1NxbDogc3RyaW5nXG4gIHRvdGFsU3VtbWFyeTogU3RhdGlzdGljc1xuICB6b29tTGV2ZWxzOiBhbnlcbiAgdW56b29tZWRJbmRleE9mZnNldDogbnVtYmVyXG4gIHVuem9vbWVkRGF0YU9mZnNldDogbnVtYmVyXG4gIHVuY29tcHJlc3NCdWZTaXplOiBudW1iZXJcbiAgY2hyb21UcmVlT2Zmc2V0OiBudW1iZXJcbiAgZmlsZVNpemU6IG51bWJlclxuICBleHRIZWFkZXJPZmZzZXQ6IG51bWJlclxuICBpc0JpZ0VuZGlhbjogYm9vbGVhblxuICBmaWxlVHlwZTogc3RyaW5nXG4gIHJlZnNCeU5hbWU6IE1hcDxzdHJpbmcsIG51bWJlcj5cbiAgcmVmc0J5TnVtYmVyOiBNYXA8bnVtYmVyLCBSZWZJbmZvPlxufVxuXG5pbnRlcmZhY2UgQ2hyb21UcmVlIHtcbiAgcmVmc0J5TmFtZTogTWFwPHN0cmluZywgbnVtYmVyPlxuICByZWZzQnlOdW1iZXI6IE1hcDxudW1iZXIsIFJlZkluZm8+XG59XG5cbnR5cGUgQWJvcnRhYmxlQ2FsbGJhY2sgPSAoc2lnbmFsOiBBYm9ydFNpZ25hbCkgPT4gUHJvbWlzZTxhbnk+XG5cbi8qIEEgY2xhc3MgdGhhdCBwcm92aWRlcyBtZW1vaXphdGlvbiBmb3IgYWJvcnRhYmxlIGNhbGxzICovXG5jbGFzcyBBYm9ydEF3YXJlQ2FjaGUge1xuICBwcml2YXRlIGNhY2hlOiBNYXA8QWJvcnRhYmxlQ2FsbGJhY2ssIGFueT4gPSBuZXcgTWFwKClcblxuICAvKlxuICAgKiBUYWtlcyBhIGZ1bmN0aW9uIHRoYXQgaGFzIG9uZSBhcmd1bWVudCwgYWJvcnRTaWduYWwsIHRoYXQgcmV0dXJucyBhIHByb21pc2VcbiAgICogYW5kIGl0IHdvcmtzIGJ5IHJldHJ5aW5nIHRoZSBmdW5jdGlvbiBpZiBhIHByZXZpb3VzIGF0dGVtcHQgdG8gaW5pdGlhbGl6ZSB0aGUgcGFyc2UgY2FjaGUgd2FzIGFib3J0ZWRcbiAgICogQHBhcmFtIGZuIC0gYW4gQWJvcnRhYmxlQ2FsbGJhY2tcbiAgICogQHJldHVybiBhIG1lbW9pemVkIHZlcnNpb24gb2YgdGhlIEFib3J0YWJsZUNhbGxiYWNrIHVzaW5nIHRoZSBBYm9ydEF3YXJlQ2FjaGVcbiAgICovXG4gIHB1YmxpYyBhYm9ydGFibGVNZW1vaXplKGZuOiAoc2lnbmFsPzogQWJvcnRTaWduYWwpID0+IFByb21pc2U8YW55Pik6IChzaWduYWw/OiBBYm9ydFNpZ25hbCkgPT4gUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB7IGNhY2hlIH0gPSB0aGlzXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGFib3J0YWJsZU1lbW9pemVGbihzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8YW55PiB7XG4gICAgICBpZiAoIWNhY2hlLmhhcyhmbikpIHtcbiAgICAgICAgY29uc3QgZm5SZXR1cm4gPSBmbihzaWduYWwpXG4gICAgICAgIGNhY2hlLnNldChmbiwgZm5SZXR1cm4pXG4gICAgICAgIGlmIChzaWduYWwpIHtcbiAgICAgICAgICBmblJldHVybi5jYXRjaChcbiAgICAgICAgICAgICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHNpZ25hbC5hYm9ydGVkKSBjYWNoZS5kZWxldGUoZm4pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGZuKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNhY2hlLmdldChmbikuY2F0Y2goXG4gICAgICAgIChlOiBBYm9ydEVycm9yIHwgRE9NRXhjZXB0aW9uKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICAgICAgICBpZiAoZS5jb2RlID09PSAnRVJSX0FCT1JURUQnIHx8IGUubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICAgICAgICByZXR1cm4gZm4oc2lnbmFsKVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfVxuICB9XG59XG5cbi8qIGdldCB0aGUgY29tcGlsZWQgcGFyc2VycyBmb3IgZGlmZmVyZW50IHNlY3Rpb25zIG9mIHRoZSBiaWd3aWcgZmlsZVxuICpcbiAqIEBwYXJhbSBpc0JFIC0gaXMgYmlnIGVuZGlhbiwgdHlwaWNhbGx5IGZhbHNlXG4gKiBAcmV0dXJuIGFuIG9iamVjdCB3aXRoIGNvbXBpbGVkIHBhcnNlcnNcbiAqL1xuZnVuY3Rpb24gZ2V0UGFyc2Vycyhpc0JFOiBib29sZWFuKTogYW55IHtcbiAgY29uc3QgbGUgPSBpc0JFID8gJ2JpZycgOiAnbGl0dGxlJ1xuICBjb25zdCBoZWFkZXJQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC5pbnQzMignbWFnaWMnKVxuICAgIC51aW50MTYoJ3ZlcnNpb24nKVxuICAgIC51aW50MTYoJ251bVpvb21MZXZlbHMnKVxuICAgIC51aW50NjQoJ2Nocm9tVHJlZU9mZnNldCcpXG4gICAgLnVpbnQ2NCgndW56b29tZWREYXRhT2Zmc2V0JylcbiAgICAudWludDY0KCd1bnpvb21lZEluZGV4T2Zmc2V0JylcbiAgICAudWludDE2KCdmaWVsZENvdW50JylcbiAgICAudWludDE2KCdkZWZpbmVkRmllbGRDb3VudCcpXG4gICAgLnVpbnQ2NCgnYXNPZmZzZXQnKSAvLyBhdXRvU3FsIG9mZnNldCwgdXNlZCBpbiBiaWdiZWRcbiAgICAudWludDY0KCd0b3RhbFN1bW1hcnlPZmZzZXQnKVxuICAgIC51aW50MzIoJ3VuY29tcHJlc3NCdWZTaXplJylcbiAgICAudWludDY0KCdleHRIZWFkZXJPZmZzZXQnKSAvLyBuYW1lIGluZGV4IG9mZnNldCwgdXNlZCBpbiBiaWdiZWRcbiAgICAuYXJyYXkoJ3pvb21MZXZlbHMnLCB7XG4gICAgICBsZW5ndGg6ICdudW1ab29tTGV2ZWxzJyxcbiAgICAgIHR5cGU6IG5ldyBQYXJzZXIoKVxuICAgICAgICAudWludDMyKCdyZWR1Y3Rpb25MZXZlbCcpXG4gICAgICAgIC51aW50MzIoJ3Jlc2VydmVkJylcbiAgICAgICAgLnVpbnQ2NCgnZGF0YU9mZnNldCcpXG4gICAgICAgIC51aW50NjQoJ2luZGV4T2Zmc2V0JyksXG4gICAgfSlcblxuICBjb25zdCB0b3RhbFN1bW1hcnlQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC51aW50NjQoJ2Jhc2VzQ292ZXJlZCcpXG4gICAgLmRvdWJsZSgnc2NvcmVNaW4nKVxuICAgIC5kb3VibGUoJ3Njb3JlTWF4JylcbiAgICAuZG91YmxlKCdzY29yZVN1bScpXG4gICAgLmRvdWJsZSgnc2NvcmVTdW1TcXVhcmVzJylcblxuICBjb25zdCBjaHJvbVRyZWVQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC51aW50MzIoJ21hZ2ljJylcbiAgICAudWludDMyKCdibG9ja1NpemUnKVxuICAgIC51aW50MzIoJ2tleVNpemUnKVxuICAgIC51aW50MzIoJ3ZhbFNpemUnKVxuICAgIC51aW50NjQoJ2l0ZW1Db3VudCcpXG5cbiAgY29uc3QgaXNMZWFmTm9kZSA9IG5ldyBQYXJzZXIoKVxuICAgIC5lbmRpYW5lc3MobGUpXG4gICAgLnVpbnQ4KCdpc0xlYWZOb2RlJylcbiAgICAuc2tpcCgxKVxuICAgIC51aW50MTYoJ2NudCcpXG5cbiAgcmV0dXJuIHtcbiAgICBjaHJvbVRyZWVQYXJzZXIsXG4gICAgdG90YWxTdW1tYXJ5UGFyc2VyLFxuICAgIGhlYWRlclBhcnNlcixcbiAgICBpc0xlYWZOb2RlLFxuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCQkkge1xuICBwcm90ZWN0ZWQgYmJpOiBHZW5lcmljRmlsZWhhbmRsZVxuXG4gIHByb3RlY3RlZCBoZWFkZXJDYWNoZTogQWJvcnRBd2FyZUNhY2hlXG5cbiAgcHJvdGVjdGVkIHJlbmFtZVJlZlNlcXM6IChhOiBzdHJpbmcpID0+IHN0cmluZ1xuXG4gIC8qIGZldGNoIGFuZCBwYXJzZSBoZWFkZXIgaW5mb3JtYXRpb24gZnJvbSBhIGJpZ3dpZyBvciBiaWdiZWQgZmlsZVxuICAgKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBhYm9ydCB0aGUgb3BlcmF0aW9uLCBjYW4gYmUgbnVsbFxuICAgKiBAcmV0dXJuIGEgSGVhZGVyIG9iamVjdFxuICAgKi9cbiAgcHVibGljIGdldEhlYWRlcjogKGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpID0+IFByb21pc2U8SGVhZGVyPlxuXG4gIC8qXG4gICAqIEBwYXJhbSBmaWxlaGFuZGxlIC0gYSBmaWxlaGFuZGxlIGZyb20gZ2VuZXJpYy1maWxlaGFuZGxlIG9yIGltcGxlbWVudGluZyBzb21ldGhpbmcgc2ltaWxhciB0byB0aGUgbm9kZTEwIGZzLnByb21pc2VzIEFQSVxuICAgKiBAcGFyYW0gcGF0aCAtIGEgTG9jYWwgZmlsZSBwYXRoIGFzIGEgc3RyaW5nXG4gICAqIEBwYXJhbSB1cmwgLSBhIFVSTCBzdHJpbmdcbiAgICogQHBhcmFtIHJlbmFtZVJlZlNlcXMgLSBhbiBvcHRpb25hbCBtZXRob2QgdG8gcmVuYW1lIHRoZSBpbnRlcm5hbCByZWZlcmVuY2Ugc2VxdWVuY2VzIHVzaW5nIGEgbWFwcGluZyBmdW5jdGlvblxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGZpbGVoYW5kbGU/OiBHZW5lcmljRmlsZWhhbmRsZVxuICAgICAgcGF0aD86IHN0cmluZ1xuICAgICAgdXJsPzogc3RyaW5nXG4gICAgICByZW5hbWVSZWZTZXFzPzogKGE6IHN0cmluZykgPT4gc3RyaW5nXG4gICAgfSA9IHt9LFxuICApIHtcbiAgICBjb25zdCB7IGZpbGVoYW5kbGUsIHJlbmFtZVJlZlNlcXMsIHBhdGgsIHVybCB9ID0gb3B0aW9uc1xuICAgIHRoaXMucmVuYW1lUmVmU2VxcyA9IHJlbmFtZVJlZlNlcXMgfHwgKChzOiBzdHJpbmcpOiBzdHJpbmcgPT4gcylcbiAgICB0aGlzLmhlYWRlckNhY2hlID0gbmV3IEFib3J0QXdhcmVDYWNoZSgpXG4gICAgaWYgKGZpbGVoYW5kbGUpIHtcbiAgICAgIHRoaXMuYmJpID0gZmlsZWhhbmRsZVxuICAgIH0gZWxzZSBpZiAodXJsKSB7XG4gICAgICB0aGlzLmJiaSA9IG5ldyBSZW1vdGVGaWxlKHVybClcbiAgICB9IGVsc2UgaWYgKHBhdGgpIHtcbiAgICAgIHRoaXMuYmJpID0gbmV3IExvY2FsRmlsZShwYXRoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vIGZpbGUgZ2l2ZW4nKVxuICAgIH1cbiAgICB0aGlzLmdldEhlYWRlciA9IHRoaXMuaGVhZGVyQ2FjaGUuYWJvcnRhYmxlTWVtb2l6ZSh0aGlzLl9nZXRIZWFkZXIuYmluZCh0aGlzKSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2dldEhlYWRlcihhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxIZWFkZXI+IHtcbiAgICBjb25zdCBpc0JpZ0VuZGlhbiA9IGF3YWl0IHRoaXMuX2lzQmlnRW5kaWFuKGFib3J0U2lnbmFsKVxuICAgIGNvbnN0IGhlYWRlciA9IGF3YWl0IHRoaXMuX2dldE1haW5IZWFkZXIoYWJvcnRTaWduYWwpXG4gICAgY29uc3QgY2hyb21zID0gYXdhaXQgdGhpcy5fcmVhZENocm9tVHJlZShhYm9ydFNpZ25hbClcbiAgICByZXR1cm4geyAuLi5oZWFkZXIsIC4uLmNocm9tcywgaXNCaWdFbmRpYW4gfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZ2V0TWFpbkhlYWRlcihhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxIZWFkZXI+IHtcbiAgICBjb25zdCByZXQgPSBnZXRQYXJzZXJzKGF3YWl0IHRoaXMuX2lzQmlnRW5kaWFuKCkpXG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDIwMDApXG4gICAgYXdhaXQgdGhpcy5iYmkucmVhZChidWYsIDAsIDIwMDAsIDAsIHsgc2lnbmFsOiBhYm9ydFNpZ25hbCB9KVxuICAgIGNvbnN0IGhlYWRlciA9IHJldC5oZWFkZXJQYXJzZXIucGFyc2UoYnVmKS5yZXN1bHRcbiAgICBoZWFkZXIuZmlsZVR5cGUgPSBoZWFkZXIubWFnaWMgPT09IEJJR19CRURfTUFHSUMgPyAnYmlnYmVkJyA6ICdiaWd3aWcnXG5cbiAgICBpZiAoaGVhZGVyLmFzT2Zmc2V0KSB7XG4gICAgICBoZWFkZXIuYXV0b1NxbCA9IGJ1Zi5zbGljZShoZWFkZXIuYXNPZmZzZXQsIGJ1Zi5pbmRleE9mKDAsIGhlYWRlci5hc09mZnNldCkpLnRvU3RyaW5nKCd1dGY4JylcbiAgICB9XG4gICAgaWYgKGhlYWRlci50b3RhbFN1bW1hcnlPZmZzZXQpIHtcbiAgICAgIGNvbnN0IHRhaWwgPSBidWYuc2xpY2UoaGVhZGVyLnRvdGFsU3VtbWFyeU9mZnNldClcbiAgICAgIGhlYWRlci50b3RhbFN1bW1hcnkgPSByZXQudG90YWxTdW1tYXJ5UGFyc2VyLnBhcnNlKHRhaWwpLnJlc3VsdFxuICAgIH1cbiAgICByZXR1cm4gaGVhZGVyXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9pc0JpZ0VuZGlhbihhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jVW5zYWZlKDQpXG4gICAgYXdhaXQgdGhpcy5iYmkucmVhZChidWYsIDAsIDQsIDAsIHsgc2lnbmFsOiBhYm9ydFNpZ25hbCB9KVxuICAgIGxldCByZXQgPSBidWYucmVhZEludDMyTEUoMClcbiAgICBpZiAocmV0ID09PSBCSUdfV0lHX01BR0lDIHx8IHJldCA9PT0gQklHX0JFRF9NQUdJQykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldCA9IGJ1Zi5yZWFkSW50MzJCRSgwKVxuICAgIGlmIChyZXQgPT09IEJJR19XSUdfTUFHSUMgfHwgcmV0ID09PSBCSUdfQkVEX01BR0lDKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBhIEJpZ1dpZy9CaWdCZWQgZmlsZScpXG4gIH1cblxuICAvLyB0b2RvOiBhZGQgcHJvZ3Jlc3MgaWYgbG9uZyBydW5uaW5nXG4gIHByaXZhdGUgYXN5bmMgX3JlYWRDaHJvbVRyZWUoYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8Q2hyb21UcmVlPiB7XG4gICAgY29uc3QgaGVhZGVyID0gYXdhaXQgdGhpcy5fZ2V0TWFpbkhlYWRlcihhYm9ydFNpZ25hbClcbiAgICBjb25zdCBpc0JFID0gYXdhaXQgdGhpcy5faXNCaWdFbmRpYW4oYWJvcnRTaWduYWwpXG4gICAgY29uc3QgbGUgPSBpc0JFID8gJ2JpZycgOiAnbGl0dGxlJ1xuICAgIGNvbnN0IHJlZnNCeU51bWJlcjogYW55ID0ge31cbiAgICBjb25zdCByZWZzQnlOYW1lOiBhbnkgPSB7fVxuICAgIGNvbnN0IHsgY2hyb21UcmVlT2Zmc2V0IH0gPSBoZWFkZXJcbiAgICBsZXQgeyB1bnpvb21lZERhdGFPZmZzZXQgfSA9IGhlYWRlclxuXG4gICAgd2hpbGUgKHVuem9vbWVkRGF0YU9mZnNldCAlIDQgIT09IDApIHtcbiAgICAgIHVuem9vbWVkRGF0YU9mZnNldCArPSAxXG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyh1bnpvb21lZERhdGFPZmZzZXQgLSBjaHJvbVRyZWVPZmZzZXQpXG4gICAgYXdhaXQgdGhpcy5iYmkucmVhZChkYXRhLCAwLCB1bnpvb21lZERhdGFPZmZzZXQgLSBjaHJvbVRyZWVPZmZzZXQsIGNocm9tVHJlZU9mZnNldCwgeyBzaWduYWw6IGFib3J0U2lnbmFsIH0pXG5cbiAgICBjb25zdCBwID0gZ2V0UGFyc2Vycyhpc0JFKVxuICAgIGNvbnN0IHsga2V5U2l6ZSB9ID0gcC5jaHJvbVRyZWVQYXJzZXIucGFyc2UoZGF0YSkucmVzdWx0XG4gICAgY29uc3QgbGVhZk5vZGVQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAgIC5lbmRpYW5lc3MobGUpXG4gICAgICAuc3RyaW5nKCdrZXknLCB7IHN0cmlwTnVsbDogdHJ1ZSwgbGVuZ3RoOiBrZXlTaXplIH0pXG4gICAgICAudWludDMyKCdyZWZJZCcpXG4gICAgICAudWludDMyKCdyZWZTaXplJylcbiAgICBjb25zdCBub25sZWFmTm9kZVBhcnNlciA9IG5ldyBQYXJzZXIoKVxuICAgICAgLmVuZGlhbmVzcyhsZSlcbiAgICAgIC5za2lwKGtleVNpemUpXG4gICAgICAudWludDY0KCdjaGlsZE9mZnNldCcpXG4gICAgY29uc3Qgcm9vdE5vZGVPZmZzZXQgPSAzMlxuICAgIGNvbnN0IGJwdFJlYWROb2RlID0gYXN5bmMgKGN1cnJlbnRPZmZzZXQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgbGV0IG9mZnNldCA9IGN1cnJlbnRPZmZzZXRcbiAgICAgIGlmIChvZmZzZXQgPj0gZGF0YS5sZW5ndGgpIHRocm93IG5ldyBFcnJvcigncmVhZGluZyBiZXlvbmQgZW5kIG9mIGJ1ZmZlcicpXG4gICAgICBjb25zdCByZXQgPSBwLmlzTGVhZk5vZGUucGFyc2UoZGF0YS5zbGljZShvZmZzZXQpKVxuICAgICAgY29uc3QgeyBpc0xlYWZOb2RlLCBjbnQgfSA9IHJldC5yZXN1bHRcbiAgICAgIG9mZnNldCArPSByZXQub2Zmc2V0XG4gICAgICBhd2FpdCBhYm9ydEJyZWFrUG9pbnQoYWJvcnRTaWduYWwpXG4gICAgICBpZiAoaXNMZWFmTm9kZSkge1xuICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGNudDsgbiArPSAxKSB7XG4gICAgICAgICAgY29uc3QgbGVhZlJldCA9IGxlYWZOb2RlUGFyc2VyLnBhcnNlKGRhdGEuc2xpY2Uob2Zmc2V0KSlcbiAgICAgICAgICBvZmZzZXQgKz0gbGVhZlJldC5vZmZzZXRcbiAgICAgICAgICBjb25zdCB7IGtleSwgcmVmSWQsIHJlZlNpemUgfSA9IGxlYWZSZXQucmVzdWx0XG4gICAgICAgICAgY29uc3QgcmVmUmVjID0geyBuYW1lOiBrZXksIGlkOiByZWZJZCwgbGVuZ3RoOiByZWZTaXplIH1cbiAgICAgICAgICByZWZzQnlOYW1lW3RoaXMucmVuYW1lUmVmU2VxcyhrZXkpXSA9IHJlZklkXG4gICAgICAgICAgcmVmc0J5TnVtYmVyW3JlZklkXSA9IHJlZlJlY1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwYXJzZSBpbmRleCBub2RlXG4gICAgICAgIGNvbnN0IG5leHROb2RlcyA9IFtdXG4gICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgY250OyBuICs9IDEpIHtcbiAgICAgICAgICBjb25zdCBub25sZWFmUmV0ID0gbm9ubGVhZk5vZGVQYXJzZXIucGFyc2UoZGF0YS5zbGljZShvZmZzZXQpKVxuICAgICAgICAgIGxldCB7IGNoaWxkT2Zmc2V0IH0gPSBub25sZWFmUmV0LnJlc3VsdFxuICAgICAgICAgIG9mZnNldCArPSBub25sZWFmUmV0Lm9mZnNldFxuICAgICAgICAgIGNoaWxkT2Zmc2V0IC09IGNocm9tVHJlZU9mZnNldFxuICAgICAgICAgIG5leHROb2Rlcy5wdXNoKGJwdFJlYWROb2RlKGNoaWxkT2Zmc2V0KSlcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChuZXh0Tm9kZXMpXG4gICAgICB9XG4gICAgfVxuICAgIGF3YWl0IGJwdFJlYWROb2RlKHJvb3ROb2RlT2Zmc2V0KVxuICAgIHJldHVybiB7XG4gICAgICByZWZzQnlOYW1lLFxuICAgICAgcmVmc0J5TnVtYmVyLFxuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIGZldGNoZXMgdGhlIFwidW56b29tZWRcIiB2aWV3IG9mIHRoZSBiaWd3aWcgZGF0YS4gdGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgYmlnYmVkXG4gICAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIGEgc2lnbmFsIHRvIG9wdGlvbmFsbHkgYWJvcnQgdGhpcyBvcGVyYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBnZXRVbnpvb21lZFZpZXcoYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8QmxvY2tWaWV3PiB7XG4gICAgY29uc3Qge1xuICAgICAgdW56b29tZWRJbmRleE9mZnNldCxcbiAgICAgIHpvb21MZXZlbHMsXG4gICAgICByZWZzQnlOYW1lLFxuICAgICAgdW5jb21wcmVzc0J1ZlNpemUsXG4gICAgICBpc0JpZ0VuZGlhbixcbiAgICAgIGZpbGVUeXBlLFxuICAgIH0gPSBhd2FpdCB0aGlzLmdldEhlYWRlcihhYm9ydFNpZ25hbClcbiAgICBjb25zdCBuemwgPSB6b29tTGV2ZWxzWzBdXG4gICAgY29uc3QgY2lyTGVuID0gbnpsID8gbnpsLmRhdGFPZmZzZXQgLSB1bnpvb21lZEluZGV4T2Zmc2V0IDogNDAwMFxuICAgIHJldHVybiBuZXcgQmxvY2tWaWV3KFxuICAgICAgdGhpcy5iYmksXG4gICAgICByZWZzQnlOYW1lLFxuICAgICAgdW56b29tZWRJbmRleE9mZnNldCxcbiAgICAgIGNpckxlbixcbiAgICAgIGlzQmlnRW5kaWFuLFxuICAgICAgdW5jb21wcmVzc0J1ZlNpemUgPiAwLFxuICAgICAgZmlsZVR5cGUsXG4gICAgKVxuICB9XG5cbiAgLypcbiAgICogYWJzdHJhY3QgbWV0aG9kIC0gZ2V0IHRoZSB2aWV3IGZvciBhIGdpdmVuIHNjYWxlXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYXN5bmMgZ2V0VmlldyhzY2FsZTogbnVtYmVyLCBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxCbG9ja1ZpZXc+XG5cbiAgLyoqXG4gICAqIEdldHMgZmVhdHVyZXMgZnJvbSBhIEJpZ1dpZyBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSByZWZOYW1lIC0gVGhlIGNocm9tb3NvbWUgbmFtZVxuICAgKiBAcGFyYW0gc3RhcnQgLSBUaGUgc3RhcnQgb2YgYSByZWdpb25cbiAgICogQHBhcmFtIGVuZCAtIFRoZSBlbmQgb2YgYSByZWdpb25cbiAgICogQHBhcmFtIG9wdHMgLSBBbiBvYmplY3QgY29udGFpbmluZyBiYXNlc1BlclNwYW4gKGUuZy4gcGl4ZWxzIHBlciBiYXNlcGFpcikgb3Igc2NhbGUgdXNlZCB0byBpbmZlciB0aGUgem9vbUxldmVsIHRvIHVzZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEZlYXR1cmVTdHJlYW0oXG4gICAgcmVmTmFtZTogc3RyaW5nLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgZW5kOiBudW1iZXIsXG4gICAgb3B0czogeyBiYXNlc1BlclNwYW4/OiBudW1iZXI7IHNjYWxlPzogbnVtYmVyOyBzaWduYWw/OiBBYm9ydFNpZ25hbCB9ID0geyBzY2FsZTogMSB9LFxuICApOiBQcm9taXNlPE9ic2VydmFibGU8RmVhdHVyZVtdPj4ge1xuICAgIGF3YWl0IHRoaXMuZ2V0SGVhZGVyKG9wdHMuc2lnbmFsKVxuICAgIGNvbnN0IGNock5hbWUgPSB0aGlzLnJlbmFtZVJlZlNlcXMocmVmTmFtZSlcbiAgICBsZXQgdmlldzogQmxvY2tWaWV3XG5cbiAgICBpZiAob3B0cy5iYXNlc1BlclNwYW4pIHtcbiAgICAgIHZpZXcgPSBhd2FpdCB0aGlzLmdldFZpZXcoMSAvIG9wdHMuYmFzZXNQZXJTcGFuLCBvcHRzLnNpZ25hbClcbiAgICB9IGVsc2UgaWYgKG9wdHMuc2NhbGUpIHtcbiAgICAgIHZpZXcgPSBhd2FpdCB0aGlzLmdldFZpZXcob3B0cy5zY2FsZSwgb3B0cy5zaWduYWwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHZpZXcgPSBhd2FpdCB0aGlzLmdldFZpZXcoMSwgb3B0cy5zaWduYWwpXG4gICAgfVxuXG4gICAgaWYgKCF2aWV3KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuYWJsZSB0byBnZXQgYmxvY2sgdmlldyBmb3IgZGF0YScpXG4gICAgfVxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShcbiAgICAgIChvYnNlcnZlcjogT2JzZXJ2ZXI8RmVhdHVyZVtdPik6IHZvaWQgPT4ge1xuICAgICAgICB2aWV3LnJlYWRXaWdEYXRhKGNock5hbWUsIHN0YXJ0LCBlbmQsIG9ic2VydmVyLCBvcHRzKVxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RmVhdHVyZXMoXG4gICAgcmVmTmFtZTogc3RyaW5nLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgZW5kOiBudW1iZXIsXG4gICAgb3B0czogeyBiYXNlc1BlclNwYW4/OiBudW1iZXI7IHNjYWxlPzogbnVtYmVyOyBzaWduYWw/OiBBYm9ydFNpZ25hbCB9ID0geyBzY2FsZTogMSB9LFxuICApOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xuICAgIGNvbnN0IG9iID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlU3RyZWFtKHJlZk5hbWUsIHN0YXJ0LCBlbmQsIG9wdHMpXG4gICAgY29uc3QgcmV0ID0gYXdhaXQgb2IucGlwZShyZWR1Y2UoKGFjYzogRmVhdHVyZVtdLCBjdXJyOiBGZWF0dXJlW10pOiBGZWF0dXJlW10gPT4gYWNjLmNvbmNhdChjdXJyKSkpLnRvUHJvbWlzZSgpXG4gICAgcmV0dXJuIHJldCB8fCBbXVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYmkudHMiXSwibmFtZXMiOlsiQklHX1dJR19NQUdJQyIsIkJJR19CRURfTUFHSUMiLCJBYm9ydEF3YXJlQ2FjaGUiLCJNYXAiLCJmbiIsImNhY2hlIiwiYWJvcnRhYmxlTWVtb2l6ZUZuIiwic2lnbmFsIiwiaGFzIiwiZm5SZXR1cm4iLCJzZXQiLCJjYXRjaCIsImFib3J0ZWQiLCJkZWxldGUiLCJnZXQiLCJlIiwiY29kZSIsIm5hbWUiLCJnZXRQYXJzZXJzIiwiaXNCRSIsImxlIiwiaGVhZGVyUGFyc2VyIiwiUGFyc2VyIiwiZW5kaWFuZXNzIiwiaW50MzIiLCJ1aW50MTYiLCJ1aW50NjQiLCJ1aW50MzIiLCJhcnJheSIsImxlbmd0aCIsInR5cGUiLCJ0b3RhbFN1bW1hcnlQYXJzZXIiLCJkb3VibGUiLCJjaHJvbVRyZWVQYXJzZXIiLCJpc0xlYWZOb2RlIiwidWludDgiLCJza2lwIiwiQkJJIiwib3B0aW9ucyIsImZpbGVoYW5kbGUiLCJyZW5hbWVSZWZTZXFzIiwicGF0aCIsInVybCIsInMiLCJoZWFkZXJDYWNoZSIsImJiaSIsIlJlbW90ZUZpbGUiLCJMb2NhbEZpbGUiLCJFcnJvciIsImdldEhlYWRlciIsImFib3J0YWJsZU1lbW9pemUiLCJfZ2V0SGVhZGVyIiwiYmluZCIsImFib3J0U2lnbmFsIiwiX2lzQmlnRW5kaWFuIiwiaXNCaWdFbmRpYW4iLCJfZ2V0TWFpbkhlYWRlciIsImhlYWRlciIsIl9yZWFkQ2hyb21UcmVlIiwiY2hyb21zIiwicmV0IiwiYnVmIiwiQnVmZmVyIiwiYWxsb2MiLCJyZWFkIiwicGFyc2UiLCJyZXN1bHQiLCJmaWxlVHlwZSIsIm1hZ2ljIiwiYXNPZmZzZXQiLCJhdXRvU3FsIiwic2xpY2UiLCJpbmRleE9mIiwidG9TdHJpbmciLCJ0b3RhbFN1bW1hcnlPZmZzZXQiLCJ0YWlsIiwidG90YWxTdW1tYXJ5IiwiYWxsb2NVbnNhZmUiLCJyZWFkSW50MzJMRSIsInJlYWRJbnQzMkJFIiwicmVmc0J5TnVtYmVyIiwicmVmc0J5TmFtZSIsImNocm9tVHJlZU9mZnNldCIsInVuem9vbWVkRGF0YU9mZnNldCIsImRhdGEiLCJwIiwia2V5U2l6ZSIsImxlYWZOb2RlUGFyc2VyIiwic3RyaW5nIiwic3RyaXBOdWxsIiwibm9ubGVhZk5vZGVQYXJzZXIiLCJyb290Tm9kZU9mZnNldCIsImJwdFJlYWROb2RlIiwiY3VycmVudE9mZnNldCIsIm9mZnNldCIsImNudCIsIm4iLCJsZWFmUmV0Iiwia2V5IiwicmVmSWQiLCJyZWZTaXplIiwicmVmUmVjIiwiaWQiLCJuZXh0Tm9kZXMiLCJub25sZWFmUmV0IiwiY2hpbGRPZmZzZXQiLCJwdXNoIiwiUHJvbWlzZSIsImFsbCIsInVuem9vbWVkSW5kZXhPZmZzZXQiLCJ6b29tTGV2ZWxzIiwidW5jb21wcmVzc0J1ZlNpemUiLCJuemwiLCJjaXJMZW4iLCJkYXRhT2Zmc2V0IiwiQmxvY2tWaWV3IiwicmVmTmFtZSIsInN0YXJ0IiwiZW5kIiwib3B0cyIsInNjYWxlIiwiY2hyTmFtZSIsImJhc2VzUGVyU3BhbiIsImdldFZpZXciLCJ2aWV3IiwiT2JzZXJ2YWJsZSIsIm9ic2VydmVyIiwicmVhZFdpZ0RhdGEiLCJnZXRGZWF0dXJlU3RyZWFtIiwib2IiLCJwaXBlIiwiYWNjIiwiY3VyciIsImNvbmNhdCIsInRvUHJvbWlzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUEsSUFBTUEsYUFBYSxHQUFHLENBQUMsVUFBdkI7QUFDQSxJQUFNQyxhQUFhLEdBQUcsQ0FBQyxVQUF2Qjs7QUErQ0E7SUFDTUMsZTs7Ozs7aURBQ3lDLElBQUlDLEdBQUosRTs7Ozs7O0FBRTdDOzs7Ozs7cUNBTXdCQyxFLEVBQW9GO0FBQUEsVUFDbEdDLEtBRGtHLEdBQ3hGLElBRHdGLENBQ2xHQSxLQURrRztBQUUxRyxhQUFPLFNBQVNDLGtCQUFULENBQTRCQyxNQUE1QixFQUFnRTtBQUNyRSxZQUFJLENBQUNGLEtBQUssQ0FBQ0csR0FBTixDQUFVSixFQUFWLENBQUwsRUFBb0I7QUFDbEIsY0FBTUssUUFBUSxHQUFHTCxFQUFFLENBQUNHLE1BQUQsQ0FBbkI7QUFDQUYsVUFBQUEsS0FBSyxDQUFDSyxHQUFOLENBQVVOLEVBQVYsRUFBY0ssUUFBZDs7QUFDQSxjQUFJRixNQUFKLEVBQVk7QUFDVkUsWUFBQUEsUUFBUSxDQUFDRSxLQUFULENBQWUsWUFBWTtBQUN6QixrQkFBSUosTUFBTSxDQUFDSyxPQUFYLEVBQW9CUCxLQUFLLENBQUNRLE1BQU4sQ0FBYVQsRUFBYjtBQUNyQixhQUZEO0FBR0Q7O0FBQ0QsaUJBQU9DLEtBQUssQ0FBQ1MsR0FBTixDQUFVVixFQUFWLENBQVA7QUFDRDs7QUFDRCxlQUFPQyxLQUFLLENBQUNTLEdBQU4sQ0FBVVYsRUFBVixFQUFjTyxLQUFkLENBQ0wsVUFBQ0ksQ0FBRCxFQUFnRDtBQUM5QyxjQUFJQSxDQUFDLENBQUNDLElBQUYsS0FBVyxhQUFYLElBQTRCRCxDQUFDLENBQUNFLElBQUYsS0FBVyxZQUEzQyxFQUF5RDtBQUN2RCxtQkFBT2IsRUFBRSxDQUFDRyxNQUFELENBQVQ7QUFDRDs7QUFDRCxnQkFBTVEsQ0FBTjtBQUNELFNBTkksQ0FBUDtBQVFELE9BbkJEO0FBb0JEOzs7O0FBR0g7Ozs7Ozs7QUFLQSxTQUFTRyxVQUFULENBQW9CQyxJQUFwQixFQUF3QztBQUN0QyxNQUFNQyxFQUFFLEdBQUdELElBQUksR0FBRyxLQUFILEdBQVcsUUFBMUI7QUFDQSxNQUFNRSxZQUFZLEdBQUcsSUFBSUMsb0JBQUosR0FDbEJDLFNBRGtCLENBQ1JILEVBRFEsRUFFbEJJLEtBRmtCLENBRVosT0FGWSxFQUdsQkMsTUFIa0IsQ0FHWCxTQUhXLEVBSWxCQSxNQUprQixDQUlYLGVBSlcsRUFLbEJDLE1BTGtCLENBS1gsaUJBTFcsRUFNbEJBLE1BTmtCLENBTVgsb0JBTlcsRUFPbEJBLE1BUGtCLENBT1gscUJBUFcsRUFRbEJELE1BUmtCLENBUVgsWUFSVyxFQVNsQkEsTUFUa0IsQ0FTWCxtQkFUVyxFQVVsQkMsTUFWa0IsQ0FVWCxVQVZXLEVBVUM7QUFWRCxHQVdsQkEsTUFYa0IsQ0FXWCxvQkFYVyxFQVlsQkMsTUFaa0IsQ0FZWCxtQkFaVyxFQWFsQkQsTUFia0IsQ0FhWCxpQkFiVyxFQWFRO0FBYlIsR0FjbEJFLEtBZGtCLENBY1osWUFkWSxFQWNFO0FBQ25CQyxJQUFBQSxNQUFNLEVBQUUsZUFEVztBQUVuQkMsSUFBQUEsSUFBSSxFQUFFLElBQUlSLG9CQUFKLEdBQ0hLLE1BREcsQ0FDSSxnQkFESixFQUVIQSxNQUZHLENBRUksVUFGSixFQUdIRCxNQUhHLENBR0ksWUFISixFQUlIQSxNQUpHLENBSUksYUFKSjtBQUZhLEdBZEYsQ0FBckI7QUF1QkEsTUFBTUssa0JBQWtCLEdBQUcsSUFBSVQsb0JBQUosR0FDeEJDLFNBRHdCLENBQ2RILEVBRGMsRUFFeEJNLE1BRndCLENBRWpCLGNBRmlCLEVBR3hCTSxNQUh3QixDQUdqQixVQUhpQixFQUl4QkEsTUFKd0IsQ0FJakIsVUFKaUIsRUFLeEJBLE1BTHdCLENBS2pCLFVBTGlCLEVBTXhCQSxNQU53QixDQU1qQixpQkFOaUIsQ0FBM0I7QUFRQSxNQUFNQyxlQUFlLEdBQUcsSUFBSVgsb0JBQUosR0FDckJDLFNBRHFCLENBQ1hILEVBRFcsRUFFckJPLE1BRnFCLENBRWQsT0FGYyxFQUdyQkEsTUFIcUIsQ0FHZCxXQUhjLEVBSXJCQSxNQUpxQixDQUlkLFNBSmMsRUFLckJBLE1BTHFCLENBS2QsU0FMYyxFQU1yQkQsTUFOcUIsQ0FNZCxXQU5jLENBQXhCO0FBUUEsTUFBTVEsVUFBVSxHQUFHLElBQUlaLG9CQUFKLEdBQ2hCQyxTQURnQixDQUNOSCxFQURNLEVBRWhCZSxLQUZnQixDQUVWLFlBRlUsRUFHaEJDLElBSGdCLENBR1gsQ0FIVyxFQUloQlgsTUFKZ0IsQ0FJVCxLQUpTLENBQW5CO0FBTUEsU0FBTztBQUNMUSxJQUFBQSxlQUFlLEVBQWZBLGVBREs7QUFFTEYsSUFBQUEsa0JBQWtCLEVBQWxCQSxrQkFGSztBQUdMVixJQUFBQSxZQUFZLEVBQVpBLFlBSEs7QUFJTGEsSUFBQUEsVUFBVSxFQUFWQTtBQUpLLEdBQVA7QUFNRDs7SUFFcUJHLEc7OztBQU9wQjs7Ozs7QUFNQTs7Ozs7O0FBTUEsaUJBT0U7QUFBQSxRQU5BQyxPQU1BLHVFQURJLEVBQ0o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFDUUMsVUFEUixHQUNpREQsT0FEakQsQ0FDUUMsVUFEUjtBQUFBLFFBQ29CQyxhQURwQixHQUNpREYsT0FEakQsQ0FDb0JFLGFBRHBCO0FBQUEsUUFDbUNDLElBRG5DLEdBQ2lESCxPQURqRCxDQUNtQ0csSUFEbkM7QUFBQSxRQUN5Q0MsR0FEekMsR0FDaURKLE9BRGpELENBQ3lDSSxHQUR6Qzs7QUFFQSxTQUFLRixhQUFMLEdBQXFCQSxhQUFhLElBQUssVUFBQ0csQ0FBRDtBQUFBLGFBQXVCQSxDQUF2QjtBQUFBLEtBQXZDOztBQUNBLFNBQUtDLFdBQUwsR0FBbUIsSUFBSTFDLGVBQUosRUFBbkI7O0FBQ0EsUUFBSXFDLFVBQUosRUFBZ0I7QUFDZCxXQUFLTSxHQUFMLEdBQVdOLFVBQVg7QUFDRCxLQUZELE1BRU8sSUFBSUcsR0FBSixFQUFTO0FBQ2QsV0FBS0csR0FBTCxHQUFXLElBQUlDLDZCQUFKLENBQWVKLEdBQWYsQ0FBWDtBQUNELEtBRk0sTUFFQSxJQUFJRCxJQUFKLEVBQVU7QUFDZixXQUFLSSxHQUFMLEdBQVcsSUFBSUUsNEJBQUosQ0FBY04sSUFBZCxDQUFYO0FBQ0QsS0FGTSxNQUVBO0FBQ0wsWUFBTSxJQUFJTyxLQUFKLENBQVUsZUFBVixDQUFOO0FBQ0Q7O0FBQ0QsU0FBS0MsU0FBTCxHQUFpQixLQUFLTCxXQUFMLENBQWlCTSxnQkFBakIsQ0FBa0MsS0FBS0MsVUFBTCxDQUFnQkMsSUFBaEIsQ0FBcUIsSUFBckIsQ0FBbEMsQ0FBakI7QUFDRDs7Ozs7OztpREFFd0JDLFc7Ozs7Ozs7dUJBQ0csS0FBS0MsWUFBTCxDQUFrQkQsV0FBbEIsQzs7O0FBQXBCRSxnQkFBQUEsVzs7dUJBQ2UsS0FBS0MsY0FBTCxDQUFvQkgsV0FBcEIsQzs7O0FBQWZJLGdCQUFBQSxNOzt1QkFDZSxLQUFLQyxjQUFMLENBQW9CTCxXQUFwQixDOzs7QUFBZk0sZ0JBQUFBLE07aUZBQ01GLE0sRUFBV0UsTTtBQUFRSixrQkFBQUEsV0FBVyxFQUFYQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrREFHSkYsVzs7Ozs7OytCQUNmbkMsVTs7dUJBQWlCLEtBQUtvQyxZQUFMLEU7Ozs7QUFBdkJNLGdCQUFBQSxHO0FBQ0FDLGdCQUFBQSxHLEdBQU1DLE1BQU0sQ0FBQ0MsS0FBUCxDQUFhLElBQWIsQzs7dUJBQ04sS0FBS2xCLEdBQUwsQ0FBU21CLElBQVQsQ0FBY0gsR0FBZCxFQUFtQixDQUFuQixFQUFzQixJQUF0QixFQUE0QixDQUE1QixFQUErQjtBQUFFdEQsa0JBQUFBLE1BQU0sRUFBRThDO0FBQVYsaUJBQS9CLEM7OztBQUNBSSxnQkFBQUEsTSxHQUFTRyxHQUFHLENBQUN2QyxZQUFKLENBQWlCNEMsS0FBakIsQ0FBdUJKLEdBQXZCLEVBQTRCSyxNO0FBQzNDVCxnQkFBQUEsTUFBTSxDQUFDVSxRQUFQLEdBQWtCVixNQUFNLENBQUNXLEtBQVAsS0FBaUJuRSxhQUFqQixHQUFpQyxRQUFqQyxHQUE0QyxRQUE5RDs7QUFFQSxvQkFBSXdELE1BQU0sQ0FBQ1ksUUFBWCxFQUFxQjtBQUNuQlosa0JBQUFBLE1BQU0sQ0FBQ2EsT0FBUCxHQUFpQlQsR0FBRyxDQUFDVSxLQUFKLENBQVVkLE1BQU0sQ0FBQ1ksUUFBakIsRUFBMkJSLEdBQUcsQ0FBQ1csT0FBSixDQUFZLENBQVosRUFBZWYsTUFBTSxDQUFDWSxRQUF0QixDQUEzQixFQUE0REksUUFBNUQsQ0FBcUUsTUFBckUsQ0FBakI7QUFDRDs7QUFDRCxvQkFBSWhCLE1BQU0sQ0FBQ2lCLGtCQUFYLEVBQStCO0FBQ3ZCQyxrQkFBQUEsSUFEdUIsR0FDaEJkLEdBQUcsQ0FBQ1UsS0FBSixDQUFVZCxNQUFNLENBQUNpQixrQkFBakIsQ0FEZ0I7QUFFN0JqQixrQkFBQUEsTUFBTSxDQUFDbUIsWUFBUCxHQUFzQmhCLEdBQUcsQ0FBQzdCLGtCQUFKLENBQXVCa0MsS0FBdkIsQ0FBNkJVLElBQTdCLEVBQW1DVCxNQUF6RDtBQUNEOztrREFDTVQsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tEQUdrQkosVzs7Ozs7O0FBQ25CUSxnQkFBQUEsRyxHQUFNQyxNQUFNLENBQUNlLFdBQVAsQ0FBbUIsQ0FBbkIsQzs7dUJBQ04sS0FBS2hDLEdBQUwsQ0FBU21CLElBQVQsQ0FBY0gsR0FBZCxFQUFtQixDQUFuQixFQUFzQixDQUF0QixFQUF5QixDQUF6QixFQUE0QjtBQUFFdEQsa0JBQUFBLE1BQU0sRUFBRThDO0FBQVYsaUJBQTVCLEM7OztBQUNGTyxnQkFBQUEsRyxHQUFNQyxHQUFHLENBQUNpQixXQUFKLENBQWdCLENBQWhCLEM7O3NCQUNObEIsR0FBRyxLQUFLNUQsYUFBUixJQUF5QjRELEdBQUcsS0FBSzNELGE7Ozs7O2tEQUM1QixLOzs7QUFFVDJELGdCQUFBQSxHQUFHLEdBQUdDLEdBQUcsQ0FBQ2tCLFdBQUosQ0FBZ0IsQ0FBaEIsQ0FBTjs7c0JBQ0luQixHQUFHLEtBQUs1RCxhQUFSLElBQXlCNEQsR0FBRyxLQUFLM0QsYTs7Ozs7a0RBQzVCLEk7OztzQkFFSCxJQUFJK0MsS0FBSixDQUFVLDBCQUFWLEM7Ozs7Ozs7Ozs7Ozs7OztRQUdSOzs7Ozs7O2tEQUM2QkssVzs7Ozs7Ozs7O3VCQUNOLEtBQUtHLGNBQUwsQ0FBb0JILFdBQXBCLEM7OztBQUFmSSxnQkFBQUEsTTs7dUJBQ2EsS0FBS0gsWUFBTCxDQUFrQkQsV0FBbEIsQzs7O0FBQWJsQyxnQkFBQUEsSTtBQUNBQyxnQkFBQUEsRSxHQUFLRCxJQUFJLEdBQUcsS0FBSCxHQUFXLFE7QUFDcEI2RCxnQkFBQUEsWSxHQUFvQixFO0FBQ3BCQyxnQkFBQUEsVSxHQUFrQixFO0FBQ2hCQyxnQkFBQUEsZSxHQUFvQnpCLE0sQ0FBcEJ5QixlO0FBQ0ZDLGdCQUFBQSxrQixHQUF1QjFCLE0sQ0FBdkIwQixrQjs7QUFFTix1QkFBT0Esa0JBQWtCLEdBQUcsQ0FBckIsS0FBMkIsQ0FBbEMsRUFBcUM7QUFDbkNBLGtCQUFBQSxrQkFBa0IsSUFBSSxDQUF0QjtBQUNEOztBQUVLQyxnQkFBQUEsSSxHQUFPdEIsTUFBTSxDQUFDQyxLQUFQLENBQWFvQixrQkFBa0IsR0FBR0QsZUFBbEMsQzs7dUJBQ1AsS0FBS3JDLEdBQUwsQ0FBU21CLElBQVQsQ0FBY29CLElBQWQsRUFBb0IsQ0FBcEIsRUFBdUJELGtCQUFrQixHQUFHRCxlQUE1QyxFQUE2REEsZUFBN0QsRUFBOEU7QUFBRTNFLGtCQUFBQSxNQUFNLEVBQUU4QztBQUFWLGlCQUE5RSxDOzs7QUFFQWdDLGdCQUFBQSxDLEdBQUluRSxVQUFVLENBQUNDLElBQUQsQztBQUNabUUsZ0JBQUFBLE8sR0FBWUQsQ0FBQyxDQUFDcEQsZUFBRixDQUFrQmdDLEtBQWxCLENBQXdCbUIsSUFBeEIsRUFBOEJsQixNLENBQTFDb0IsTztBQUNGQyxnQkFBQUEsYyxHQUFpQixJQUFJakUsb0JBQUosR0FDcEJDLFNBRG9CLENBQ1ZILEVBRFUsRUFFcEJvRSxNQUZvQixDQUViLEtBRmEsRUFFTjtBQUFFQyxrQkFBQUEsU0FBUyxFQUFFLElBQWI7QUFBbUI1RCxrQkFBQUEsTUFBTSxFQUFFeUQ7QUFBM0IsaUJBRk0sRUFHcEIzRCxNQUhvQixDQUdiLE9BSGEsRUFJcEJBLE1BSm9CLENBSWIsU0FKYSxDO0FBS2pCK0QsZ0JBQUFBLGlCLEdBQW9CLElBQUlwRSxvQkFBSixHQUN2QkMsU0FEdUIsQ0FDYkgsRUFEYSxFQUV2QmdCLElBRnVCLENBRWxCa0QsT0FGa0IsRUFHdkI1RCxNQUh1QixDQUdoQixhQUhnQixDO0FBSXBCaUUsZ0JBQUFBLGMsR0FBaUIsRTs7QUFDakJDLGdCQUFBQSxXOzs7Ozs0Q0FBYyxrQkFBT0MsYUFBUDtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ2RDLDRCQUFBQSxNQURjLEdBQ0xELGFBREs7O0FBQUEsa0NBRWRDLE1BQU0sSUFBSVYsSUFBSSxDQUFDdkQsTUFGRDtBQUFBO0FBQUE7QUFBQTs7QUFBQSxrQ0FFZSxJQUFJbUIsS0FBSixDQUFVLDhCQUFWLENBRmY7O0FBQUE7QUFHWlksNEJBQUFBLEdBSFksR0FHTnlCLENBQUMsQ0FBQ25ELFVBQUYsQ0FBYStCLEtBQWIsQ0FBbUJtQixJQUFJLENBQUNiLEtBQUwsQ0FBV3VCLE1BQVgsQ0FBbkIsQ0FITTtBQUFBLDBDQUlVbEMsR0FBRyxDQUFDTSxNQUpkLEVBSVZoQyxVQUpVLGVBSVZBLFVBSlUsRUFJRTZELEdBSkYsZUFJRUEsR0FKRjtBQUtsQkQsNEJBQUFBLE1BQU0sSUFBSWxDLEdBQUcsQ0FBQ2tDLE1BQWQ7QUFMa0I7QUFBQSxtQ0FNWiwyQkFBZ0J6QyxXQUFoQixDQU5ZOztBQUFBO0FBQUEsaUNBT2RuQixVQVBjO0FBQUE7QUFBQTtBQUFBOztBQVFoQixpQ0FBUzhELENBQVQsR0FBYSxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELEdBQXBCLEVBQXlCQyxDQUFDLElBQUksQ0FBOUIsRUFBaUM7QUFDekJDLDhCQUFBQSxPQUR5QixHQUNmVixjQUFjLENBQUN0QixLQUFmLENBQXFCbUIsSUFBSSxDQUFDYixLQUFMLENBQVd1QixNQUFYLENBQXJCLENBRGU7QUFFL0JBLDhCQUFBQSxNQUFNLElBQUlHLE9BQU8sQ0FBQ0gsTUFBbEI7QUFGK0IsZ0RBR0NHLE9BQU8sQ0FBQy9CLE1BSFQsRUFHdkJnQyxHQUh1QixtQkFHdkJBLEdBSHVCLEVBR2xCQyxLQUhrQixtQkFHbEJBLEtBSGtCLEVBR1hDLE9BSFcsbUJBR1hBLE9BSFc7QUFJekJDLDhCQUFBQSxNQUp5QixHQUloQjtBQUFFcEYsZ0NBQUFBLElBQUksRUFBRWlGLEdBQVI7QUFBYUksZ0NBQUFBLEVBQUUsRUFBRUgsS0FBakI7QUFBd0J0RSxnQ0FBQUEsTUFBTSxFQUFFdUU7QUFBaEMsK0JBSmdCO0FBSy9CbkIsOEJBQUFBLFVBQVUsQ0FBQyxLQUFJLENBQUN6QyxhQUFMLENBQW1CMEQsR0FBbkIsQ0FBRCxDQUFWLEdBQXNDQyxLQUF0QztBQUNBbkIsOEJBQUFBLFlBQVksQ0FBQ21CLEtBQUQsQ0FBWixHQUFzQkUsTUFBdEI7QUFDRDs7QUFmZTtBQUFBOztBQUFBO0FBaUJoQjtBQUNNRSw0QkFBQUEsU0FsQlUsR0FrQkUsRUFsQkY7O0FBbUJoQixpQ0FBU1AsRUFBVCxHQUFhLENBQWIsRUFBZ0JBLEVBQUMsR0FBR0QsR0FBcEIsRUFBeUJDLEVBQUMsSUFBSSxDQUE5QixFQUFpQztBQUN6QlEsOEJBQUFBLFVBRHlCLEdBQ1pkLGlCQUFpQixDQUFDekIsS0FBbEIsQ0FBd0JtQixJQUFJLENBQUNiLEtBQUwsQ0FBV3VCLE1BQVgsQ0FBeEIsQ0FEWTtBQUV6QlcsOEJBQUFBLFdBRnlCLEdBRVRELFVBQVUsQ0FBQ3RDLE1BRkYsQ0FFekJ1QyxXQUZ5QjtBQUcvQlgsOEJBQUFBLE1BQU0sSUFBSVUsVUFBVSxDQUFDVixNQUFyQjtBQUNBVyw4QkFBQUEsV0FBVyxJQUFJdkIsZUFBZjtBQUNBcUIsOEJBQUFBLFNBQVMsQ0FBQ0csSUFBVixDQUFlZCxXQUFXLENBQUNhLFdBQUQsQ0FBMUI7QUFDRDs7QUF6QmU7QUFBQSxtQ0EwQlZFLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxTQUFaLENBMUJVOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1COztrQ0FBZFgsVzs7Ozs7O3VCQTZCQUEsV0FBVyxDQUFDRCxjQUFELEM7OztrREFDVjtBQUNMVixrQkFBQUEsVUFBVSxFQUFWQSxVQURLO0FBRUxELGtCQUFBQSxZQUFZLEVBQVpBO0FBRkssaUI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNVDs7Ozs7Ozs7OztrREFJZ0MzQixXOzs7Ozs7Ozt1QkFRcEIsS0FBS0osU0FBTCxDQUFlSSxXQUFmLEM7Ozs7QUFOUndELGdCQUFBQSxtQixTQUFBQSxtQjtBQUNBQyxnQkFBQUEsVSxTQUFBQSxVO0FBQ0E3QixnQkFBQUEsVSxTQUFBQSxVO0FBQ0E4QixnQkFBQUEsaUIsU0FBQUEsaUI7QUFDQXhELGdCQUFBQSxXLFNBQUFBLFc7QUFDQVksZ0JBQUFBLFEsU0FBQUEsUTtBQUVJNkMsZ0JBQUFBLEcsR0FBTUYsVUFBVSxDQUFDLENBQUQsQztBQUNoQkcsZ0JBQUFBLE0sR0FBU0QsR0FBRyxHQUFHQSxHQUFHLENBQUNFLFVBQUosR0FBaUJMLG1CQUFwQixHQUEwQyxJO2tEQUNyRCxJQUFJTSxvQkFBSixDQUNMLEtBQUt0RSxHQURBLEVBRUxvQyxVQUZLLEVBR0w0QixtQkFISyxFQUlMSSxNQUpLLEVBS0wxRCxXQUxLLEVBTUx3RCxpQkFBaUIsR0FBRyxDQU5mLEVBT0w1QyxRQVBLLEM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXVDs7Ozs7OztBQUtBOzs7Ozs7Ozs7OztrREFTRWlELE8sRUFDQUMsSyxFQUNBQyxHOzs7Ozs7Ozs7QUFDQUMsZ0JBQUFBLEksOERBQXdFO0FBQUVDLGtCQUFBQSxLQUFLLEVBQUU7QUFBVCxpQjs7dUJBRWxFLEtBQUt2RSxTQUFMLENBQWVzRSxJQUFJLENBQUNoSCxNQUFwQixDOzs7QUFDQWtILGdCQUFBQSxPLEdBQVUsS0FBS2pGLGFBQUwsQ0FBbUI0RSxPQUFuQixDOztxQkFHWkcsSUFBSSxDQUFDRyxZOzs7Ozs7dUJBQ00sS0FBS0MsT0FBTCxDQUFhLElBQUlKLElBQUksQ0FBQ0csWUFBdEIsRUFBb0NILElBQUksQ0FBQ2hILE1BQXpDLEM7OztBQUFicUgsZ0JBQUFBLEk7Ozs7O3FCQUNTTCxJQUFJLENBQUNDLEs7Ozs7Ozt1QkFDRCxLQUFLRyxPQUFMLENBQWFKLElBQUksQ0FBQ0MsS0FBbEIsRUFBeUJELElBQUksQ0FBQ2hILE1BQTlCLEM7OztBQUFicUgsZ0JBQUFBLEk7Ozs7Ozt1QkFFYSxLQUFLRCxPQUFMLENBQWEsQ0FBYixFQUFnQkosSUFBSSxDQUFDaEgsTUFBckIsQzs7O0FBQWJxSCxnQkFBQUEsSTs7O29CQUdHQSxJOzs7OztzQkFDRyxJQUFJNUUsS0FBSixDQUFVLG1DQUFWLEM7OztrREFFRCxJQUFJNkUsZ0JBQUosQ0FBZSxVQUFDQyxRQUFELEVBQXlDO0FBQzdERixrQkFBQUEsSUFBSSxDQUFDRyxXQUFMLENBQWlCTixPQUFqQixFQUEwQkosS0FBMUIsRUFBaUNDLEdBQWpDLEVBQXNDUSxRQUF0QyxFQUFnRFAsSUFBaEQ7QUFDRCxpQkFGTSxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0RBTVBILE8sRUFDQUMsSyxFQUNBQyxHOzs7Ozs7Ozs7QUFDQUMsZ0JBQUFBLEksOERBQXdFO0FBQUVDLGtCQUFBQSxLQUFLLEVBQUU7QUFBVCxpQjs7dUJBRXZELEtBQUtRLGdCQUFMLENBQXNCWixPQUF0QixFQUErQkMsS0FBL0IsRUFBc0NDLEdBQXRDLEVBQTJDQyxJQUEzQyxDOzs7QUFBWFUsZ0JBQUFBLEU7O3VCQUNZQSxFQUFFLENBQUNDLElBQUgsQ0FBUSx1QkFBTyxVQUFDQyxHQUFELEVBQWlCQyxJQUFqQjtBQUFBLHlCQUFnREQsR0FBRyxDQUFDRSxNQUFKLENBQVdELElBQVgsQ0FBaEQ7QUFBQSxpQkFBUCxDQUFSLEVBQWtGRSxTQUFsRixFOzs7QUFBWjFFLGdCQUFBQSxHO2tEQUNDQSxHQUFHLElBQUksRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlciB9IGZyb20gJ0BnbW9kL2JpbmFyeS1wYXJzZXInXG5pbXBvcnQgeyBMb2NhbEZpbGUsIFJlbW90ZUZpbGUsIEdlbmVyaWNGaWxlaGFuZGxlIH0gZnJvbSAnZ2VuZXJpYy1maWxlaGFuZGxlJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgcmVkdWNlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IEJsb2NrVmlldyB9IGZyb20gJy4vYmxvY2tWaWV3J1xuaW1wb3J0IHsgYWJvcnRCcmVha1BvaW50LCBBYm9ydEVycm9yIH0gZnJvbSAnLi91dGlsJ1xuXG5jb25zdCBCSUdfV0lHX01BR0lDID0gLTIwMDM4Mjk3MjJcbmNvbnN0IEJJR19CRURfTUFHSUMgPSAtMjAyMTAwMjUxN1xuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmUge1xuICBzdGFydDogbnVtYmVyXG4gIGVuZDogbnVtYmVyXG4gIHNjb3JlOiBudW1iZXJcbiAgcmVzdD86IHN0cmluZyAvLyBmb3IgYmlnYmVkIGxpbmVcbiAgbWluU2NvcmU/OiBudW1iZXIgLy8gZm9yIHN1bW1hcnkgbGluZVxuICBtYXhTY29yZT86IG51bWJlciAvLyBmb3Igc3VtbWFyeSBsaW5lXG4gIHN1bW1hcnk/OiBib29sZWFuIC8vIGlzIHN1bW1hcnkgbGluZVxuICB1bmlxdWVJZD86IHN0cmluZyAvLyBmb3IgYmlnYmVkIGNvbnRhaW5zIHVuaXF1ZUlkIGNhbGN1bGF0ZWQgZnJvbSBmaWxlIG9mZnNldFxuICBmaWVsZD86IG51bWJlciAvLyB1c2VkIGluIGJpZ2JlZCBzZWFyY2hpbmdcbn1cbmludGVyZmFjZSBTdGF0aXN0aWNzIHtcbiAgc2NvcmVTdW06IG51bWJlclxuICBiYXNlc0NvdmVyZWQ6IG51bWJlclxuICBzY29yZVN1bVNxdWFyZXM6IG51bWJlclxufVxuXG5pbnRlcmZhY2UgUmVmSW5mbyB7XG4gIG5hbWU6IHN0cmluZ1xuICBpZDogbnVtYmVyXG4gIGxlbmd0aDogbnVtYmVyXG59XG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlciB7XG4gIGF1dG9TcWw6IHN0cmluZ1xuICB0b3RhbFN1bW1hcnk6IFN0YXRpc3RpY3NcbiAgem9vbUxldmVsczogYW55XG4gIHVuem9vbWVkSW5kZXhPZmZzZXQ6IG51bWJlclxuICB1bnpvb21lZERhdGFPZmZzZXQ6IG51bWJlclxuICB1bmNvbXByZXNzQnVmU2l6ZTogbnVtYmVyXG4gIGNocm9tVHJlZU9mZnNldDogbnVtYmVyXG4gIGZpbGVTaXplOiBudW1iZXJcbiAgZXh0SGVhZGVyT2Zmc2V0OiBudW1iZXJcbiAgaXNCaWdFbmRpYW46IGJvb2xlYW5cbiAgZmlsZVR5cGU6IHN0cmluZ1xuICByZWZzQnlOYW1lOiBNYXA8c3RyaW5nLCBudW1iZXI+XG4gIHJlZnNCeU51bWJlcjogTWFwPG51bWJlciwgUmVmSW5mbz5cbn1cblxuaW50ZXJmYWNlIENocm9tVHJlZSB7XG4gIHJlZnNCeU5hbWU6IE1hcDxzdHJpbmcsIG51bWJlcj5cbiAgcmVmc0J5TnVtYmVyOiBNYXA8bnVtYmVyLCBSZWZJbmZvPlxufVxuXG50eXBlIEFib3J0YWJsZUNhbGxiYWNrID0gKHNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2U8YW55PlxuXG4vKiBBIGNsYXNzIHRoYXQgcHJvdmlkZXMgbWVtb2l6YXRpb24gZm9yIGFib3J0YWJsZSBjYWxscyAqL1xuY2xhc3MgQWJvcnRBd2FyZUNhY2hlIHtcbiAgcHJpdmF0ZSBjYWNoZTogTWFwPEFib3J0YWJsZUNhbGxiYWNrLCBhbnk+ID0gbmV3IE1hcCgpXG5cbiAgLypcbiAgICogVGFrZXMgYSBmdW5jdGlvbiB0aGF0IGhhcyBvbmUgYXJndW1lbnQsIGFib3J0U2lnbmFsLCB0aGF0IHJldHVybnMgYSBwcm9taXNlXG4gICAqIGFuZCBpdCB3b3JrcyBieSByZXRyeWluZyB0aGUgZnVuY3Rpb24gaWYgYSBwcmV2aW91cyBhdHRlbXB0IHRvIGluaXRpYWxpemUgdGhlIHBhcnNlIGNhY2hlIHdhcyBhYm9ydGVkXG4gICAqIEBwYXJhbSBmbiAtIGFuIEFib3J0YWJsZUNhbGxiYWNrXG4gICAqIEByZXR1cm4gYSBtZW1vaXplZCB2ZXJzaW9uIG9mIHRoZSBBYm9ydGFibGVDYWxsYmFjayB1c2luZyB0aGUgQWJvcnRBd2FyZUNhY2hlXG4gICAqL1xuICBwdWJsaWMgYWJvcnRhYmxlTWVtb2l6ZShmbjogKHNpZ25hbD86IEFib3J0U2lnbmFsKSA9PiBQcm9taXNlPGFueT4pOiAoc2lnbmFsPzogQWJvcnRTaWduYWwpID0+IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgeyBjYWNoZSB9ID0gdGhpc1xuICAgIHJldHVybiBmdW5jdGlvbiBhYm9ydGFibGVNZW1vaXplRm4oc2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPGFueT4ge1xuICAgICAgaWYgKCFjYWNoZS5oYXMoZm4pKSB7XG4gICAgICAgIGNvbnN0IGZuUmV0dXJuID0gZm4oc2lnbmFsKVxuICAgICAgICBjYWNoZS5zZXQoZm4sIGZuUmV0dXJuKVxuICAgICAgICBpZiAoc2lnbmFsKSB7XG4gICAgICAgICAgZm5SZXR1cm4uY2F0Y2goKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKHNpZ25hbC5hYm9ydGVkKSBjYWNoZS5kZWxldGUoZm4pXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGZuKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNhY2hlLmdldChmbikuY2F0Y2goXG4gICAgICAgIChlOiBBYm9ydEVycm9yIHwgRE9NRXhjZXB0aW9uKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICAgICAgICBpZiAoZS5jb2RlID09PSAnRVJSX0FCT1JURUQnIHx8IGUubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICAgICAgICByZXR1cm4gZm4oc2lnbmFsKVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfVxuICB9XG59XG5cbi8qIGdldCB0aGUgY29tcGlsZWQgcGFyc2VycyBmb3IgZGlmZmVyZW50IHNlY3Rpb25zIG9mIHRoZSBiaWd3aWcgZmlsZVxuICpcbiAqIEBwYXJhbSBpc0JFIC0gaXMgYmlnIGVuZGlhbiwgdHlwaWNhbGx5IGZhbHNlXG4gKiBAcmV0dXJuIGFuIG9iamVjdCB3aXRoIGNvbXBpbGVkIHBhcnNlcnNcbiAqL1xuZnVuY3Rpb24gZ2V0UGFyc2Vycyhpc0JFOiBib29sZWFuKTogYW55IHtcbiAgY29uc3QgbGUgPSBpc0JFID8gJ2JpZycgOiAnbGl0dGxlJ1xuICBjb25zdCBoZWFkZXJQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC5pbnQzMignbWFnaWMnKVxuICAgIC51aW50MTYoJ3ZlcnNpb24nKVxuICAgIC51aW50MTYoJ251bVpvb21MZXZlbHMnKVxuICAgIC51aW50NjQoJ2Nocm9tVHJlZU9mZnNldCcpXG4gICAgLnVpbnQ2NCgndW56b29tZWREYXRhT2Zmc2V0JylcbiAgICAudWludDY0KCd1bnpvb21lZEluZGV4T2Zmc2V0JylcbiAgICAudWludDE2KCdmaWVsZENvdW50JylcbiAgICAudWludDE2KCdkZWZpbmVkRmllbGRDb3VudCcpXG4gICAgLnVpbnQ2NCgnYXNPZmZzZXQnKSAvLyBhdXRvU3FsIG9mZnNldCwgdXNlZCBpbiBiaWdiZWRcbiAgICAudWludDY0KCd0b3RhbFN1bW1hcnlPZmZzZXQnKVxuICAgIC51aW50MzIoJ3VuY29tcHJlc3NCdWZTaXplJylcbiAgICAudWludDY0KCdleHRIZWFkZXJPZmZzZXQnKSAvLyBuYW1lIGluZGV4IG9mZnNldCwgdXNlZCBpbiBiaWdiZWRcbiAgICAuYXJyYXkoJ3pvb21MZXZlbHMnLCB7XG4gICAgICBsZW5ndGg6ICdudW1ab29tTGV2ZWxzJyxcbiAgICAgIHR5cGU6IG5ldyBQYXJzZXIoKVxuICAgICAgICAudWludDMyKCdyZWR1Y3Rpb25MZXZlbCcpXG4gICAgICAgIC51aW50MzIoJ3Jlc2VydmVkJylcbiAgICAgICAgLnVpbnQ2NCgnZGF0YU9mZnNldCcpXG4gICAgICAgIC51aW50NjQoJ2luZGV4T2Zmc2V0JyksXG4gICAgfSlcblxuICBjb25zdCB0b3RhbFN1bW1hcnlQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC51aW50NjQoJ2Jhc2VzQ292ZXJlZCcpXG4gICAgLmRvdWJsZSgnc2NvcmVNaW4nKVxuICAgIC5kb3VibGUoJ3Njb3JlTWF4JylcbiAgICAuZG91YmxlKCdzY29yZVN1bScpXG4gICAgLmRvdWJsZSgnc2NvcmVTdW1TcXVhcmVzJylcblxuICBjb25zdCBjaHJvbVRyZWVQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC51aW50MzIoJ21hZ2ljJylcbiAgICAudWludDMyKCdibG9ja1NpemUnKVxuICAgIC51aW50MzIoJ2tleVNpemUnKVxuICAgIC51aW50MzIoJ3ZhbFNpemUnKVxuICAgIC51aW50NjQoJ2l0ZW1Db3VudCcpXG5cbiAgY29uc3QgaXNMZWFmTm9kZSA9IG5ldyBQYXJzZXIoKVxuICAgIC5lbmRpYW5lc3MobGUpXG4gICAgLnVpbnQ4KCdpc0xlYWZOb2RlJylcbiAgICAuc2tpcCgxKVxuICAgIC51aW50MTYoJ2NudCcpXG5cbiAgcmV0dXJuIHtcbiAgICBjaHJvbVRyZWVQYXJzZXIsXG4gICAgdG90YWxTdW1tYXJ5UGFyc2VyLFxuICAgIGhlYWRlclBhcnNlcixcbiAgICBpc0xlYWZOb2RlLFxuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCQkkge1xuICBwcm90ZWN0ZWQgYmJpOiBHZW5lcmljRmlsZWhhbmRsZVxuXG4gIHByb3RlY3RlZCBoZWFkZXJDYWNoZTogQWJvcnRBd2FyZUNhY2hlXG5cbiAgcHJvdGVjdGVkIHJlbmFtZVJlZlNlcXM6IChhOiBzdHJpbmcpID0+IHN0cmluZ1xuXG4gIC8qIGZldGNoIGFuZCBwYXJzZSBoZWFkZXIgaW5mb3JtYXRpb24gZnJvbSBhIGJpZ3dpZyBvciBiaWdiZWQgZmlsZVxuICAgKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBhYm9ydCB0aGUgb3BlcmF0aW9uLCBjYW4gYmUgbnVsbFxuICAgKiBAcmV0dXJuIGEgSGVhZGVyIG9iamVjdFxuICAgKi9cbiAgcHVibGljIGdldEhlYWRlcjogKGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpID0+IFByb21pc2U8SGVhZGVyPlxuXG4gIC8qXG4gICAqIEBwYXJhbSBmaWxlaGFuZGxlIC0gYSBmaWxlaGFuZGxlIGZyb20gZ2VuZXJpYy1maWxlaGFuZGxlIG9yIGltcGxlbWVudGluZyBzb21ldGhpbmcgc2ltaWxhciB0byB0aGUgbm9kZTEwIGZzLnByb21pc2VzIEFQSVxuICAgKiBAcGFyYW0gcGF0aCAtIGEgTG9jYWwgZmlsZSBwYXRoIGFzIGEgc3RyaW5nXG4gICAqIEBwYXJhbSB1cmwgLSBhIFVSTCBzdHJpbmdcbiAgICogQHBhcmFtIHJlbmFtZVJlZlNlcXMgLSBhbiBvcHRpb25hbCBtZXRob2QgdG8gcmVuYW1lIHRoZSBpbnRlcm5hbCByZWZlcmVuY2Ugc2VxdWVuY2VzIHVzaW5nIGEgbWFwcGluZyBmdW5jdGlvblxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGZpbGVoYW5kbGU/OiBHZW5lcmljRmlsZWhhbmRsZVxuICAgICAgcGF0aD86IHN0cmluZ1xuICAgICAgdXJsPzogc3RyaW5nXG4gICAgICByZW5hbWVSZWZTZXFzPzogKGE6IHN0cmluZykgPT4gc3RyaW5nXG4gICAgfSA9IHt9LFxuICApIHtcbiAgICBjb25zdCB7IGZpbGVoYW5kbGUsIHJlbmFtZVJlZlNlcXMsIHBhdGgsIHVybCB9ID0gb3B0aW9uc1xuICAgIHRoaXMucmVuYW1lUmVmU2VxcyA9IHJlbmFtZVJlZlNlcXMgfHwgKChzOiBzdHJpbmcpOiBzdHJpbmcgPT4gcylcbiAgICB0aGlzLmhlYWRlckNhY2hlID0gbmV3IEFib3J0QXdhcmVDYWNoZSgpXG4gICAgaWYgKGZpbGVoYW5kbGUpIHtcbiAgICAgIHRoaXMuYmJpID0gZmlsZWhhbmRsZVxuICAgIH0gZWxzZSBpZiAodXJsKSB7XG4gICAgICB0aGlzLmJiaSA9IG5ldyBSZW1vdGVGaWxlKHVybClcbiAgICB9IGVsc2UgaWYgKHBhdGgpIHtcbiAgICAgIHRoaXMuYmJpID0gbmV3IExvY2FsRmlsZShwYXRoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vIGZpbGUgZ2l2ZW4nKVxuICAgIH1cbiAgICB0aGlzLmdldEhlYWRlciA9IHRoaXMuaGVhZGVyQ2FjaGUuYWJvcnRhYmxlTWVtb2l6ZSh0aGlzLl9nZXRIZWFkZXIuYmluZCh0aGlzKSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2dldEhlYWRlcihhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxIZWFkZXI+IHtcbiAgICBjb25zdCBpc0JpZ0VuZGlhbiA9IGF3YWl0IHRoaXMuX2lzQmlnRW5kaWFuKGFib3J0U2lnbmFsKVxuICAgIGNvbnN0IGhlYWRlciA9IGF3YWl0IHRoaXMuX2dldE1haW5IZWFkZXIoYWJvcnRTaWduYWwpXG4gICAgY29uc3QgY2hyb21zID0gYXdhaXQgdGhpcy5fcmVhZENocm9tVHJlZShhYm9ydFNpZ25hbClcbiAgICByZXR1cm4geyAuLi5oZWFkZXIsIC4uLmNocm9tcywgaXNCaWdFbmRpYW4gfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZ2V0TWFpbkhlYWRlcihhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxIZWFkZXI+IHtcbiAgICBjb25zdCByZXQgPSBnZXRQYXJzZXJzKGF3YWl0IHRoaXMuX2lzQmlnRW5kaWFuKCkpXG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDIwMDApXG4gICAgYXdhaXQgdGhpcy5iYmkucmVhZChidWYsIDAsIDIwMDAsIDAsIHsgc2lnbmFsOiBhYm9ydFNpZ25hbCB9KVxuICAgIGNvbnN0IGhlYWRlciA9IHJldC5oZWFkZXJQYXJzZXIucGFyc2UoYnVmKS5yZXN1bHRcbiAgICBoZWFkZXIuZmlsZVR5cGUgPSBoZWFkZXIubWFnaWMgPT09IEJJR19CRURfTUFHSUMgPyAnYmlnYmVkJyA6ICdiaWd3aWcnXG5cbiAgICBpZiAoaGVhZGVyLmFzT2Zmc2V0KSB7XG4gICAgICBoZWFkZXIuYXV0b1NxbCA9IGJ1Zi5zbGljZShoZWFkZXIuYXNPZmZzZXQsIGJ1Zi5pbmRleE9mKDAsIGhlYWRlci5hc09mZnNldCkpLnRvU3RyaW5nKCd1dGY4JylcbiAgICB9XG4gICAgaWYgKGhlYWRlci50b3RhbFN1bW1hcnlPZmZzZXQpIHtcbiAgICAgIGNvbnN0IHRhaWwgPSBidWYuc2xpY2UoaGVhZGVyLnRvdGFsU3VtbWFyeU9mZnNldClcbiAgICAgIGhlYWRlci50b3RhbFN1bW1hcnkgPSByZXQudG90YWxTdW1tYXJ5UGFyc2VyLnBhcnNlKHRhaWwpLnJlc3VsdFxuICAgIH1cbiAgICByZXR1cm4gaGVhZGVyXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9pc0JpZ0VuZGlhbihhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jVW5zYWZlKDQpXG4gICAgYXdhaXQgdGhpcy5iYmkucmVhZChidWYsIDAsIDQsIDAsIHsgc2lnbmFsOiBhYm9ydFNpZ25hbCB9KVxuICAgIGxldCByZXQgPSBidWYucmVhZEludDMyTEUoMClcbiAgICBpZiAocmV0ID09PSBCSUdfV0lHX01BR0lDIHx8IHJldCA9PT0gQklHX0JFRF9NQUdJQykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldCA9IGJ1Zi5yZWFkSW50MzJCRSgwKVxuICAgIGlmIChyZXQgPT09IEJJR19XSUdfTUFHSUMgfHwgcmV0ID09PSBCSUdfQkVEX01BR0lDKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBhIEJpZ1dpZy9CaWdCZWQgZmlsZScpXG4gIH1cblxuICAvLyB0b2RvOiBhZGQgcHJvZ3Jlc3MgaWYgbG9uZyBydW5uaW5nXG4gIHByaXZhdGUgYXN5bmMgX3JlYWRDaHJvbVRyZWUoYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8Q2hyb21UcmVlPiB7XG4gICAgY29uc3QgaGVhZGVyID0gYXdhaXQgdGhpcy5fZ2V0TWFpbkhlYWRlcihhYm9ydFNpZ25hbClcbiAgICBjb25zdCBpc0JFID0gYXdhaXQgdGhpcy5faXNCaWdFbmRpYW4oYWJvcnRTaWduYWwpXG4gICAgY29uc3QgbGUgPSBpc0JFID8gJ2JpZycgOiAnbGl0dGxlJ1xuICAgIGNvbnN0IHJlZnNCeU51bWJlcjogYW55ID0ge31cbiAgICBjb25zdCByZWZzQnlOYW1lOiBhbnkgPSB7fVxuICAgIGNvbnN0IHsgY2hyb21UcmVlT2Zmc2V0IH0gPSBoZWFkZXJcbiAgICBsZXQgeyB1bnpvb21lZERhdGFPZmZzZXQgfSA9IGhlYWRlclxuXG4gICAgd2hpbGUgKHVuem9vbWVkRGF0YU9mZnNldCAlIDQgIT09IDApIHtcbiAgICAgIHVuem9vbWVkRGF0YU9mZnNldCArPSAxXG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyh1bnpvb21lZERhdGFPZmZzZXQgLSBjaHJvbVRyZWVPZmZzZXQpXG4gICAgYXdhaXQgdGhpcy5iYmkucmVhZChkYXRhLCAwLCB1bnpvb21lZERhdGFPZmZzZXQgLSBjaHJvbVRyZWVPZmZzZXQsIGNocm9tVHJlZU9mZnNldCwgeyBzaWduYWw6IGFib3J0U2lnbmFsIH0pXG5cbiAgICBjb25zdCBwID0gZ2V0UGFyc2Vycyhpc0JFKVxuICAgIGNvbnN0IHsga2V5U2l6ZSB9ID0gcC5jaHJvbVRyZWVQYXJzZXIucGFyc2UoZGF0YSkucmVzdWx0XG4gICAgY29uc3QgbGVhZk5vZGVQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAgIC5lbmRpYW5lc3MobGUpXG4gICAgICAuc3RyaW5nKCdrZXknLCB7IHN0cmlwTnVsbDogdHJ1ZSwgbGVuZ3RoOiBrZXlTaXplIH0pXG4gICAgICAudWludDMyKCdyZWZJZCcpXG4gICAgICAudWludDMyKCdyZWZTaXplJylcbiAgICBjb25zdCBub25sZWFmTm9kZVBhcnNlciA9IG5ldyBQYXJzZXIoKVxuICAgICAgLmVuZGlhbmVzcyhsZSlcbiAgICAgIC5za2lwKGtleVNpemUpXG4gICAgICAudWludDY0KCdjaGlsZE9mZnNldCcpXG4gICAgY29uc3Qgcm9vdE5vZGVPZmZzZXQgPSAzMlxuICAgIGNvbnN0IGJwdFJlYWROb2RlID0gYXN5bmMgKGN1cnJlbnRPZmZzZXQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgbGV0IG9mZnNldCA9IGN1cnJlbnRPZmZzZXRcbiAgICAgIGlmIChvZmZzZXQgPj0gZGF0YS5sZW5ndGgpIHRocm93IG5ldyBFcnJvcigncmVhZGluZyBiZXlvbmQgZW5kIG9mIGJ1ZmZlcicpXG4gICAgICBjb25zdCByZXQgPSBwLmlzTGVhZk5vZGUucGFyc2UoZGF0YS5zbGljZShvZmZzZXQpKVxuICAgICAgY29uc3QgeyBpc0xlYWZOb2RlLCBjbnQgfSA9IHJldC5yZXN1bHRcbiAgICAgIG9mZnNldCArPSByZXQub2Zmc2V0XG4gICAgICBhd2FpdCBhYm9ydEJyZWFrUG9pbnQoYWJvcnRTaWduYWwpXG4gICAgICBpZiAoaXNMZWFmTm9kZSkge1xuICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGNudDsgbiArPSAxKSB7XG4gICAgICAgICAgY29uc3QgbGVhZlJldCA9IGxlYWZOb2RlUGFyc2VyLnBhcnNlKGRhdGEuc2xpY2Uob2Zmc2V0KSlcbiAgICAgICAgICBvZmZzZXQgKz0gbGVhZlJldC5vZmZzZXRcbiAgICAgICAgICBjb25zdCB7IGtleSwgcmVmSWQsIHJlZlNpemUgfSA9IGxlYWZSZXQucmVzdWx0XG4gICAgICAgICAgY29uc3QgcmVmUmVjID0geyBuYW1lOiBrZXksIGlkOiByZWZJZCwgbGVuZ3RoOiByZWZTaXplIH1cbiAgICAgICAgICByZWZzQnlOYW1lW3RoaXMucmVuYW1lUmVmU2VxcyhrZXkpXSA9IHJlZklkXG4gICAgICAgICAgcmVmc0J5TnVtYmVyW3JlZklkXSA9IHJlZlJlY1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwYXJzZSBpbmRleCBub2RlXG4gICAgICAgIGNvbnN0IG5leHROb2RlcyA9IFtdXG4gICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgY250OyBuICs9IDEpIHtcbiAgICAgICAgICBjb25zdCBub25sZWFmUmV0ID0gbm9ubGVhZk5vZGVQYXJzZXIucGFyc2UoZGF0YS5zbGljZShvZmZzZXQpKVxuICAgICAgICAgIGxldCB7IGNoaWxkT2Zmc2V0IH0gPSBub25sZWFmUmV0LnJlc3VsdFxuICAgICAgICAgIG9mZnNldCArPSBub25sZWFmUmV0Lm9mZnNldFxuICAgICAgICAgIGNoaWxkT2Zmc2V0IC09IGNocm9tVHJlZU9mZnNldFxuICAgICAgICAgIG5leHROb2Rlcy5wdXNoKGJwdFJlYWROb2RlKGNoaWxkT2Zmc2V0KSlcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChuZXh0Tm9kZXMpXG4gICAgICB9XG4gICAgfVxuICAgIGF3YWl0IGJwdFJlYWROb2RlKHJvb3ROb2RlT2Zmc2V0KVxuICAgIHJldHVybiB7XG4gICAgICByZWZzQnlOYW1lLFxuICAgICAgcmVmc0J5TnVtYmVyLFxuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIGZldGNoZXMgdGhlIFwidW56b29tZWRcIiB2aWV3IG9mIHRoZSBiaWd3aWcgZGF0YS4gdGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgYmlnYmVkXG4gICAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIGEgc2lnbmFsIHRvIG9wdGlvbmFsbHkgYWJvcnQgdGhpcyBvcGVyYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBnZXRVbnpvb21lZFZpZXcoYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8QmxvY2tWaWV3PiB7XG4gICAgY29uc3Qge1xuICAgICAgdW56b29tZWRJbmRleE9mZnNldCxcbiAgICAgIHpvb21MZXZlbHMsXG4gICAgICByZWZzQnlOYW1lLFxuICAgICAgdW5jb21wcmVzc0J1ZlNpemUsXG4gICAgICBpc0JpZ0VuZGlhbixcbiAgICAgIGZpbGVUeXBlLFxuICAgIH0gPSBhd2FpdCB0aGlzLmdldEhlYWRlcihhYm9ydFNpZ25hbClcbiAgICBjb25zdCBuemwgPSB6b29tTGV2ZWxzWzBdXG4gICAgY29uc3QgY2lyTGVuID0gbnpsID8gbnpsLmRhdGFPZmZzZXQgLSB1bnpvb21lZEluZGV4T2Zmc2V0IDogNDAwMFxuICAgIHJldHVybiBuZXcgQmxvY2tWaWV3KFxuICAgICAgdGhpcy5iYmksXG4gICAgICByZWZzQnlOYW1lLFxuICAgICAgdW56b29tZWRJbmRleE9mZnNldCxcbiAgICAgIGNpckxlbixcbiAgICAgIGlzQmlnRW5kaWFuLFxuICAgICAgdW5jb21wcmVzc0J1ZlNpemUgPiAwLFxuICAgICAgZmlsZVR5cGUsXG4gICAgKVxuICB9XG5cbiAgLypcbiAgICogYWJzdHJhY3QgbWV0aG9kIC0gZ2V0IHRoZSB2aWV3IGZvciBhIGdpdmVuIHNjYWxlXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYXN5bmMgZ2V0VmlldyhzY2FsZTogbnVtYmVyLCBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxCbG9ja1ZpZXc+XG5cbiAgLyoqXG4gICAqIEdldHMgZmVhdHVyZXMgZnJvbSBhIEJpZ1dpZyBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSByZWZOYW1lIC0gVGhlIGNocm9tb3NvbWUgbmFtZVxuICAgKiBAcGFyYW0gc3RhcnQgLSBUaGUgc3RhcnQgb2YgYSByZWdpb25cbiAgICogQHBhcmFtIGVuZCAtIFRoZSBlbmQgb2YgYSByZWdpb25cbiAgICogQHBhcmFtIG9wdHMgLSBBbiBvYmplY3QgY29udGFpbmluZyBiYXNlc1BlclNwYW4gKGUuZy4gcGl4ZWxzIHBlciBiYXNlcGFpcikgb3Igc2NhbGUgdXNlZCB0byBpbmZlciB0aGUgem9vbUxldmVsIHRvIHVzZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEZlYXR1cmVTdHJlYW0oXG4gICAgcmVmTmFtZTogc3RyaW5nLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgZW5kOiBudW1iZXIsXG4gICAgb3B0czogeyBiYXNlc1BlclNwYW4/OiBudW1iZXI7IHNjYWxlPzogbnVtYmVyOyBzaWduYWw/OiBBYm9ydFNpZ25hbCB9ID0geyBzY2FsZTogMSB9LFxuICApOiBQcm9taXNlPE9ic2VydmFibGU8RmVhdHVyZVtdPj4ge1xuICAgIGF3YWl0IHRoaXMuZ2V0SGVhZGVyKG9wdHMuc2lnbmFsKVxuICAgIGNvbnN0IGNock5hbWUgPSB0aGlzLnJlbmFtZVJlZlNlcXMocmVmTmFtZSlcbiAgICBsZXQgdmlldzogQmxvY2tWaWV3XG5cbiAgICBpZiAob3B0cy5iYXNlc1BlclNwYW4pIHtcbiAgICAgIHZpZXcgPSBhd2FpdCB0aGlzLmdldFZpZXcoMSAvIG9wdHMuYmFzZXNQZXJTcGFuLCBvcHRzLnNpZ25hbClcbiAgICB9IGVsc2UgaWYgKG9wdHMuc2NhbGUpIHtcbiAgICAgIHZpZXcgPSBhd2FpdCB0aGlzLmdldFZpZXcob3B0cy5zY2FsZSwgb3B0cy5zaWduYWwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHZpZXcgPSBhd2FpdCB0aGlzLmdldFZpZXcoMSwgb3B0cy5zaWduYWwpXG4gICAgfVxuXG4gICAgaWYgKCF2aWV3KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuYWJsZSB0byBnZXQgYmxvY2sgdmlldyBmb3IgZGF0YScpXG4gICAgfVxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEZlYXR1cmVbXT4pOiB2b2lkID0+IHtcbiAgICAgIHZpZXcucmVhZFdpZ0RhdGEoY2hyTmFtZSwgc3RhcnQsIGVuZCwgb2JzZXJ2ZXIsIG9wdHMpXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRGZWF0dXJlcyhcbiAgICByZWZOYW1lOiBzdHJpbmcsXG4gICAgc3RhcnQ6IG51bWJlcixcbiAgICBlbmQ6IG51bWJlcixcbiAgICBvcHRzOiB7IGJhc2VzUGVyU3Bhbj86IG51bWJlcjsgc2NhbGU/OiBudW1iZXI7IHNpZ25hbD86IEFib3J0U2lnbmFsIH0gPSB7IHNjYWxlOiAxIH0sXG4gICk6IFByb21pc2U8RmVhdHVyZVtdPiB7XG4gICAgY29uc3Qgb2IgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVTdHJlYW0ocmVmTmFtZSwgc3RhcnQsIGVuZCwgb3B0cylcbiAgICBjb25zdCByZXQgPSBhd2FpdCBvYi5waXBlKHJlZHVjZSgoYWNjOiBGZWF0dXJlW10sIGN1cnI6IEZlYXR1cmVbXSk6IEZlYXR1cmVbXSA9PiBhY2MuY29uY2F0KGN1cnIpKSkudG9Qcm9taXNlKClcbiAgICByZXR1cm4gcmV0IHx8IFtdXG4gIH1cbn1cbiJdfQ==
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

@@ -28,3 +26,3 @@

var zlib = _interopRequireWildcard(require("zlib"));
var _zlib = _interopRequireDefault(require("zlib"));

@@ -405,15 +403,13 @@ var _quickLru = _interopRequireDefault(require("quick-lru"));

span = results.itemSpan;
items = items.map(function (feature, index) {
return (0, _objectSpread2.default)({}, feature, {
start: index * step,
end: index * step + span
});
});
for (var i = 0; i < items.length; i++) {
items[i].start = i * step;
items[i].end = i * step + span;
}
} else if (results.blockType === BIG_WIG_TYPE_VSTEP) {
var _span = results.itemSpan;
items = items.map(function (feature) {
return (0, _objectSpread2.default)({}, feature, {
end: feature.start + _span
});
});
for (var _i = 0; _i < items.length; _i++) {
items[_i].end = items[_i].start + _span;
}
}

@@ -449,3 +445,4 @@

blockGroupsToFetch = (0, _util.groupBlocks)(blocks);
_context5.next = 7;
(0, _util.checkAbortSignal)(signal);
_context5.next = 8;
return Promise.all(blockGroupsToFetch.map(

@@ -462,9 +459,11 @@ /*#__PURE__*/

case 0:
(0, _util.checkAbortSignal)(signal);
length = blockGroup.length, offset = blockGroup.offset;
_context4.next = 3;
_context4.next = 4;
return _this2.featureCache.get("".concat(length, "_").concat(offset), blockGroup, signal);
case 3:
case 4:
data = _context4.sent;
blockGroup.blocks.forEach(function (block) {
(0, _util.checkAbortSignal)(signal);
var blockOffset = block.offset - blockGroup.offset;

@@ -474,6 +473,8 @@ var resultData = data;

if (isCompressed) {
resultData = zlib.inflateSync(data.slice(blockOffset));
resultData = _zlib.default.inflateSync(data.slice(blockOffset));
blockOffset = 0;
}
(0, _util.checkAbortSignal)(signal);
switch (blockType) {

@@ -497,3 +498,3 @@ case 'summary':

case 5:
case 6:
case "end":

@@ -511,13 +512,13 @@ return _context4.stop();

case 7:
case 8:
observer.complete();
_context5.next = 13;
_context5.next = 14;
break;
case 10:
_context5.prev = 10;
case 11:
_context5.prev = 11;
_context5.t0 = _context5["catch"](1);
observer.error(_context5.t0);
case 13:
case 14:
case "end":

@@ -527,3 +528,3 @@ return _context5.stop();

}
}, _callee5, this, [[1, 10]]);
}, _callee5, this, [[1, 11]]);
}));

@@ -547,2 +548,2 @@

exports.BlockView = BlockView;
//# 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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ibG9ja1ZpZXcudHMiXSwibmFtZXMiOlsiQklHX1dJR19UWVBFX0dSQVBIIiwiQklHX1dJR19UWVBFX1ZTVEVQIiwiQklHX1dJR19UWVBFX0ZTVEVQIiwiZ2V0UGFyc2VycyIsImlzQmlnRW5kaWFuIiwibGUiLCJzdW1tYXJ5UGFyc2VyIiwiUGFyc2VyIiwiZW5kaWFuZXNzIiwidWludDMyIiwiZmxvYXQiLCJsZWFmUGFyc2VyIiwidWludDgiLCJza2lwIiwidWludDE2IiwiY2hvaWNlIiwidGFnIiwiY2hvaWNlcyIsImFycmF5IiwibGVuZ3RoIiwidHlwZSIsInVpbnQ2NCIsImJpZ0JlZFBhcnNlciIsImludDMyIiwic3RyaW5nIiwiemVyb1Rlcm1pbmF0ZWQiLCJiaWdXaWdQYXJzZXIiLCJCbG9ja1ZpZXciLCJiYmkiLCJyZWZzQnlOYW1lIiwiY2lyVHJlZU9mZnNldCIsImNpclRyZWVMZW5ndGgiLCJpc0NvbXByZXNzZWQiLCJibG9ja1R5cGUiLCJFcnJvciIsImNpclRyZWVCdWZmZXIiLCJCdWZmZXIiLCJhbGxvYyIsIk9iamVjdCIsImFzc2lnbiIsImZlYXR1cmVDYWNoZSIsIkFib3J0YWJsZVByb21pc2VDYWNoZSIsImNhY2hlIiwiUXVpY2tMUlUiLCJtYXhTaXplIiwiZmlsbCIsInJlcXVlc3REYXRhIiwic2lnbmFsIiwib2Zmc2V0IiwicmVzdWx0QnVmZmVyIiwicmVhZCIsImNock5hbWUiLCJzdGFydCIsImVuZCIsIm9ic2VydmVyIiwib3B0cyIsImNocklkIiwidW5kZWZpbmVkIiwiY29tcGxldGUiLCJyZXF1ZXN0IiwiY2lyVHJlZVByb21pc2UiLCJidWZmZXIiLCJjaXJCbG9ja1NpemUiLCJyZWFkVUludDMyQkUiLCJyZWFkVUludDMyTEUiLCJibG9ja3NUb0ZldGNoIiwib3V0c3RhbmRpbmciLCJmaWx0ZXJGZWF0cyIsImIiLCJzdGFydENocm9tIiwic3RhcnRCYXNlIiwiZW5kQ2hyb20iLCJlbmRCYXNlIiwiY2lyRm9iU3RhcnRGZXRjaCIsIm9mZiIsImZyIiwibGV2ZWwiLCJtYXgiLCJtaW4iLCJnZXQiLCJpIiwiY29udGFpbnMiLCJjaXJGb2JSZWN1cjIiLCJyZWFkRmVhdHVyZXMiLCJlcnJvciIsImNpckZvYlJlY3VyIiwibWF4Q2lyQmxvY2tTcGFuIiwic3BhbnMiLCJSYW5nZSIsImJsb2NrU3BhbiIsInVuaW9uIiwiZ2V0UmFuZ2VzIiwibWFwIiwiZSIsImNpckJsb2NrRGF0YSIsImRhdGEiLCJzbGljZSIsInAiLCJwYXJzZSIsInJlc3VsdCIsImNvbmNhdCIsImZpbHRlciIsImwiLCJibG9ja09mZnNldCIsImJsb2NrU2l6ZSIsInJlY3VyT2Zmc2V0cyIsInN0YXJ0T2Zmc2V0IiwiZmVhdHVyZXMiLCJjdXJyT2Zmc2V0IiwiYnl0ZUxlbmd0aCIsInJlcyIsInB1c2giLCJpdGVtcyIsImVsdCIsImNocm9tSWQiLCJtYXhTY29yZSIsIm1pblNjb3JlIiwic2NvcmUiLCJzdW1EYXRhIiwidmFsaWRDbnQiLCJzdW1tYXJ5IiwiZiIsImNvb3JkRmlsdGVyIiwidW5pcXVlSWQiLCJieXRlcyIsInJlc3VsdHMiLCJzdGVwIiwiaXRlbVN0ZXAiLCJzcGFuIiwiaXRlbVNwYW4iLCJibG9ja3MiLCJibG9ja0dyb3Vwc1RvRmV0Y2giLCJQcm9taXNlIiwiYWxsIiwiYmxvY2tHcm91cCIsImZvckVhY2giLCJibG9jayIsInJlc3VsdERhdGEiLCJ6bGliIiwiaW5mbGF0ZVN5bmMiLCJuZXh0IiwicGFyc2VTdW1tYXJ5QmxvY2siLCJwYXJzZUJpZ1dpZ0Jsb2NrIiwicGFyc2VCaWdCZWRCbG9jayIsImNvbnNvbGUiLCJ3YXJuIiwicmFuZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQVJBO0FBOENBLElBQU1BLGtCQUFrQixHQUFHLENBQTNCO0FBQ0EsSUFBTUMsa0JBQWtCLEdBQUcsQ0FBM0I7QUFDQSxJQUFNQyxrQkFBa0IsR0FBRyxDQUEzQjs7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cnJvclwiLCB7IFwiYWxsb3dcIjogW1wifFwiXSB9XSAqL1xuaW1wb3J0IHsgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSAnQGdtb2QvYmluYXJ5LXBhcnNlcidcbmltcG9ydCBBYm9ydGFibGVQcm9taXNlQ2FjaGUgZnJvbSAnYWJvcnRhYmxlLXByb21pc2UtY2FjaGUnXG5pbXBvcnQgemxpYiBmcm9tICd6bGliJ1xuaW1wb3J0IFF1aWNrTFJVIGZyb20gJ3F1aWNrLWxydSdcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuL2JiaSdcbmltcG9ydCBSYW5nZSBmcm9tICcuL3JhbmdlJ1xuaW1wb3J0IHsgZ3JvdXBCbG9ja3MsIGNoZWNrQWJvcnRTaWduYWwgfSBmcm9tICcuL3V0aWwnXG5cbmludGVyZmFjZSBDb29yZFJlcXVlc3Qge1xuICBjaHJJZDogbnVtYmVyXG4gIHN0YXJ0OiBudW1iZXJcbiAgZW5kOiBudW1iZXJcbn1cbmludGVyZmFjZSBEYXRhQmxvY2sge1xuICBzdGFydENocm9tOiBudW1iZXJcbiAgZW5kQ2hyb206IG51bWJlclxuICBzdGFydEJhc2U6IG51bWJlclxuICBlbmRCYXNlOiBudW1iZXJcbiAgdmFsaWRDbnQ6IG51bWJlclxuICBtaW5WYWw6IG51bWJlclxuICBtYXhWYWw6IG51bWJlclxuICBzdW1EYXRhOiBudW1iZXJcbiAgc3VtU3FEYXRhOiBudW1iZXJcbn1cbmludGVyZmFjZSBSZWFkRGF0YSB7XG4gIG9mZnNldDogbnVtYmVyXG4gIGxlbmd0aDogbnVtYmVyXG59XG5cbmludGVyZmFjZSBTdW1tYXJ5QmxvY2sge1xuICBjaHJvbUlkOiBudW1iZXJcbiAgc3RhcnQ6IG51bWJlclxuICBlbmQ6IG51bWJlclxuICB2YWxpZENudDogbnVtYmVyXG4gIG1pblNjb3JlOiBudW1iZXJcbiAgbWF4U2NvcmU6IG51bWJlclxuICBzdW1EYXRhOiBudW1iZXJcbiAgc3VtU3FEYXRhOiBudW1iZXJcbn1cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgc2lnbmFsPzogQWJvcnRTaWduYWxcbiAgcmVxdWVzdD86IENvb3JkUmVxdWVzdFxufVxuXG5jb25zdCBCSUdfV0lHX1RZUEVfR1JBUEggPSAxXG5jb25zdCBCSUdfV0lHX1RZUEVfVlNURVAgPSAyXG5jb25zdCBCSUdfV0lHX1RZUEVfRlNURVAgPSAzXG5cbmZ1bmN0aW9uIGdldFBhcnNlcnMoaXNCaWdFbmRpYW46IGJvb2xlYW4pOiBhbnkge1xuICBjb25zdCBsZSA9IGlzQmlnRW5kaWFuID8gJ2JpZycgOiAnbGl0dGxlJ1xuICBjb25zdCBzdW1tYXJ5UGFyc2VyID0gbmV3IFBhcnNlcigpXG4gICAgLmVuZGlhbmVzcyhsZSlcbiAgICAudWludDMyKCdjaHJvbUlkJylcbiAgICAudWludDMyKCdzdGFydCcpXG4gICAgLnVpbnQzMignZW5kJylcbiAgICAudWludDMyKCd2YWxpZENudCcpXG4gICAgLmZsb2F0KCdtaW5TY29yZScpXG4gICAgLmZsb2F0KCdtYXhTY29yZScpXG4gICAgLmZsb2F0KCdzdW1EYXRhJylcbiAgICAuZmxvYXQoJ3N1bVNxRGF0YScpXG5cbiAgY29uc3QgbGVhZlBhcnNlciA9IG5ldyBQYXJzZXIoKVxuICAgIC5lbmRpYW5lc3MobGUpXG4gICAgLnVpbnQ4KCdpc0xlYWYnKVxuICAgIC5za2lwKDEpXG4gICAgLnVpbnQxNignY250JylcbiAgICAuY2hvaWNlKHtcbiAgICAgIHRhZzogJ2lzTGVhZicsXG4gICAgICBjaG9pY2VzOiB7XG4gICAgICAgIDE6IG5ldyBQYXJzZXIoKS5hcnJheSgnYmxvY2tzVG9GZXRjaCcsIHtcbiAgICAgICAgICBsZW5ndGg6ICdjbnQnLFxuICAgICAgICAgIHR5cGU6IG5ldyBQYXJzZXIoKVxuICAgICAgICAgICAgLnVpbnQzMignc3RhcnRDaHJvbScpXG4gICAgICAgICAgICAudWludDMyKCdzdGFydEJhc2UnKVxuICAgICAgICAgICAgLnVpbnQzMignZW5kQ2hyb20nKVxuICAgICAgICAgICAgLnVpbnQzMignZW5kQmFzZScpXG4gICAgICAgICAgICAudWludDY0KCdibG9ja09mZnNldCcpXG4gICAgICAgICAgICAudWludDY0KCdibG9ja1NpemUnKSxcbiAgICAgICAgfSksXG4gICAgICAgIDA6IG5ldyBQYXJzZXIoKS5hcnJheSgncmVjdXJPZmZzZXRzJywge1xuICAgICAgICAgIGxlbmd0aDogJ2NudCcsXG4gICAgICAgICAgdHlwZTogbmV3IFBhcnNlcigpXG4gICAgICAgICAgICAudWludDMyKCdzdGFydENocm9tJylcbiAgICAgICAgICAgIC51aW50MzIoJ3N0YXJ0QmFzZScpXG4gICAgICAgICAgICAudWludDMyKCdlbmRDaHJvbScpXG4gICAgICAgICAgICAudWludDMyKCdlbmRCYXNlJylcbiAgICAgICAgICAgIC51aW50NjQoJ2Jsb2NrT2Zmc2V0JyksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KVxuICBjb25zdCBiaWdCZWRQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC51aW50MzIoJ2Nocm9tSWQnKVxuICAgIC5pbnQzMignc3RhcnQnKVxuICAgIC5pbnQzMignZW5kJylcbiAgICAuc3RyaW5nKCdyZXN0Jywge1xuICAgICAgemVyb1Rlcm1pbmF0ZWQ6IHRydWUsXG4gICAgfSlcblxuICBjb25zdCBiaWdXaWdQYXJzZXIgPSBuZXcgUGFyc2VyKClcbiAgICAuZW5kaWFuZXNzKGxlKVxuICAgIC5za2lwKDQpXG4gICAgLmludDMyKCdibG9ja1N0YXJ0JylcbiAgICAuc2tpcCg0KVxuICAgIC51aW50MzIoJ2l0ZW1TdGVwJylcbiAgICAudWludDMyKCdpdGVtU3BhbicpXG4gICAgLnVpbnQ4KCdibG9ja1R5cGUnKVxuICAgIC5za2lwKDEpXG4gICAgLnVpbnQxNignaXRlbUNvdW50JylcbiAgICAuY2hvaWNlKHtcbiAgICAgIHRhZzogJ2Jsb2NrVHlwZScsXG4gICAgICBjaG9pY2VzOiB7XG4gICAgICAgIFtCSUdfV0lHX1RZUEVfRlNURVBdOiBuZXcgUGFyc2VyKCkuYXJyYXkoJ2l0ZW1zJywge1xuICAgICAgICAgIGxlbmd0aDogJ2l0ZW1Db3VudCcsXG4gICAgICAgICAgdHlwZTogbmV3IFBhcnNlcigpLmZsb2F0KCdzY29yZScpLFxuICAgICAgICB9KSxcbiAgICAgICAgW0JJR19XSUdfVFlQRV9WU1RFUF06IG5ldyBQYXJzZXIoKS5hcnJheSgnaXRlbXMnLCB7XG4gICAgICAgICAgbGVuZ3RoOiAnaXRlbUNvdW50JyxcbiAgICAgICAgICB0eXBlOiBuZXcgUGFyc2VyKCkuaW50MzIoJ3N0YXJ0JykuZmxvYXQoJ3Njb3JlJyksXG4gICAgICAgIH0pLFxuICAgICAgICBbQklHX1dJR19UWVBFX0dSQVBIXTogbmV3IFBhcnNlcigpLmFycmF5KCdpdGVtcycsIHtcbiAgICAgICAgICBsZW5ndGg6ICdpdGVtQ291bnQnLFxuICAgICAgICAgIHR5cGU6IG5ldyBQYXJzZXIoKVxuICAgICAgICAgICAgLmludDMyKCdzdGFydCcpXG4gICAgICAgICAgICAuaW50MzIoJ2VuZCcpXG4gICAgICAgICAgICAuZmxvYXQoJ3Njb3JlJyksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KVxuICByZXR1cm4ge1xuICAgIGJpZ1dpZ1BhcnNlcixcbiAgICBiaWdCZWRQYXJzZXIsXG4gICAgc3VtbWFyeVBhcnNlcixcbiAgICBsZWFmUGFyc2VyLFxuICB9XG59XG5cbi8qKlxuICogVmlldyBpbnRvIGEgc3Vic2V0IG9mIHRoZSBkYXRhIGluIGEgQmlnV2lnIGZpbGUuXG4gKlxuICogQWRhcHRlZCBieSBSb2JlcnQgQnVlbHMgYW5kIENvbGluIERpZXNoIGZyb20gYmlnd2lnLmpzIGluIHRoZSBEYWxsaWFuY2UgR2Vub21lXG4gKiBFeHBsb3JlciBieSBUaG9tYXMgRG93bi5cbiAqIEBjb25zdHJ1Y3RzXG4gKi9cblxuZXhwb3J0IGNsYXNzIEJsb2NrVmlldyB7XG4gIHByaXZhdGUgY2lyVHJlZU9mZnNldDogbnVtYmVyXG5cbiAgcHJpdmF0ZSBjaXJUcmVlTGVuZ3RoOiBudW1iZXJcblxuICBwcml2YXRlIGJiaTogYW55XG5cbiAgcHJpdmF0ZSBpc0NvbXByZXNzZWQ6IGJvb2xlYW5cblxuICBwcml2YXRlIGlzQmlnRW5kaWFuOiBib29sZWFuXG5cbiAgcHJpdmF0ZSByZWZzQnlOYW1lOiBhbnlcblxuICBwcml2YXRlIGJsb2NrVHlwZTogc3RyaW5nXG5cbiAgcHJpdmF0ZSBjaXJUcmVlQnVmZmVyOiBCdWZmZXJcblxuICBwcml2YXRlIGNpclRyZWVQcm9taXNlPzogUHJvbWlzZTx2b2lkPlxuXG4gIHByaXZhdGUgZmVhdHVyZUNhY2hlOiBhbnlcblxuICBwcml2YXRlIGxlYWZQYXJzZXI6IGFueVxuXG4gIHByaXZhdGUgYmlnV2lnUGFyc2VyOiBhbnlcblxuICBwcml2YXRlIGJpZ0JlZFBhcnNlcjogYW55XG5cbiAgcHJpdmF0ZSBzdW1tYXJ5UGFyc2VyOiBhbnlcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgYmJpOiBhbnksXG4gICAgcmVmc0J5TmFtZTogYW55LFxuICAgIGNpclRyZWVPZmZzZXQ6IG51bWJlcixcbiAgICBjaXJUcmVlTGVuZ3RoOiBudW1iZXIsXG4gICAgaXNCaWdFbmRpYW46IGJvb2xlYW4sXG4gICAgaXNDb21wcmVzc2VkOiBib29sZWFuLFxuICAgIGJsb2NrVHlwZTogc3RyaW5nLFxuICApIHtcbiAgICBpZiAoIShjaXJUcmVlT2Zmc2V0ID49IDApKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgY2lyVHJlZU9mZnNldCEnKVxuICAgIGlmICghKGNpclRyZWVMZW5ndGggPiAwKSkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGNpclRyZWVMZW5ndGghJylcblxuICAgIHRoaXMuY2lyVHJlZU9mZnNldCA9IGNpclRyZWVPZmZzZXRcbiAgICB0aGlzLmNpclRyZWVMZW5ndGggPSBjaXJUcmVlTGVuZ3RoXG4gICAgdGhpcy5pc0NvbXByZXNzZWQgPSBpc0NvbXByZXNzZWRcbiAgICB0aGlzLnJlZnNCeU5hbWUgPSByZWZzQnlOYW1lXG4gICAgdGhpcy5pc0JpZ0VuZGlhbiA9IGlzQmlnRW5kaWFuXG4gICAgdGhpcy5iYmkgPSBiYmlcbiAgICB0aGlzLmJsb2NrVHlwZSA9IGJsb2NrVHlwZVxuICAgIHRoaXMuY2lyVHJlZUJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg0OClcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGdldFBhcnNlcnMoaXNCaWdFbmRpYW4pKVxuXG4gICAgdGhpcy5mZWF0dXJlQ2FjaGUgPSBuZXcgQWJvcnRhYmxlUHJvbWlzZUNhY2hlKHtcbiAgICAgIGNhY2hlOiBuZXcgUXVpY2tMUlUoeyBtYXhTaXplOiAxMDAwIH0pLFxuXG4gICAgICBhc3luYyBmaWxsKHJlcXVlc3REYXRhOiBSZWFkRGF0YSwgc2lnbmFsOiBBYm9ydFNpZ25hbCkge1xuICAgICAgICBjb25zdCB7IGxlbmd0aCwgb2Zmc2V0IH0gPSByZXF1ZXN0RGF0YVxuICAgICAgICBjb25zdCByZXN1bHRCdWZmZXIgPSBCdWZmZXIuYWxsb2MobGVuZ3RoKVxuICAgICAgICBhd2FpdCBiYmkucmVhZChyZXN1bHRCdWZmZXIsIDAsIGxlbmd0aCwgb2Zmc2V0LCB7IHNpZ25hbCB9KVxuICAgICAgICByZXR1cm4gcmVzdWx0QnVmZmVyXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVhZFdpZ0RhdGEoXG4gICAgY2hyTmFtZTogc3RyaW5nLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgZW5kOiBudW1iZXIsXG4gICAgb2JzZXJ2ZXI6IE9ic2VydmVyPEZlYXR1cmVbXT4sXG4gICAgb3B0czogT3B0aW9ucyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgcmVmc0J5TmFtZSwgYmJpLCBjaXJUcmVlT2Zmc2V0LCBpc0JpZ0VuZGlhbiB9ID0gdGhpc1xuICAgICAgY29uc3QgeyBzaWduYWwgfSA9IG9wdHNcbiAgICAgIGNvbnN0IGNocklkID0gcmVmc0J5TmFtZVtjaHJOYW1lXVxuICAgICAgaWYgKGNocklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKVxuICAgICAgfVxuICAgICAgY29uc3QgcmVxdWVzdCA9IHsgY2hySWQsIHN0YXJ0LCBlbmQgfVxuICAgICAgaWYgKHRoaXMuY2lyVHJlZVByb21pc2UpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jaXJUcmVlUHJvbWlzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jaXJUcmVlUHJvbWlzZSA9IGF3YWl0IGJiaS5yZWFkKHRoaXMuY2lyVHJlZUJ1ZmZlciwgMCwgNDgsIGNpclRyZWVPZmZzZXQsIHsgc2lnbmFsIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBidWZmZXIgPSB0aGlzLmNpclRyZWVCdWZmZXJcbiAgICAgIGNvbnN0IGNpckJsb2NrU2l6ZSA9IGlzQmlnRW5kaWFuID8gYnVmZmVyLnJlYWRVSW50MzJCRSg0KSA6IGJ1ZmZlci5yZWFkVUludDMyTEUoNClcbiAgICAgIGxldCBibG9ja3NUb0ZldGNoOiBhbnlbXSA9IFtdXG4gICAgICBsZXQgb3V0c3RhbmRpbmcgPSAwXG5cbiAgICAgIGxldCBjaXJGb2JSZWN1cjI6IEZ1bmN0aW9uXG5cbiAgICAgIGNvbnN0IGZpbHRlckZlYXRzID0gKGI6IERhdGFCbG9jayk6IGJvb2xlYW4gPT5cbiAgICAgICAgKGIuc3RhcnRDaHJvbSA8IGNocklkIHx8IChiLnN0YXJ0Q2hyb20gPT09IGNocklkICYmIGIuc3RhcnRCYXNlIDw9IGVuZCkpICYmXG4gICAgICAgIChiLmVuZENocm9tID4gY2hySWQgfHwgKGIuZW5kQ2hyb20gPT09IGNocklkICYmIGIuZW5kQmFzZSA+PSBzdGFydCkpXG5cbiAgICAgIGNvbnN0IGNpckZvYlN0YXJ0RmV0Y2ggPSBhc3luYyAob2ZmOiBhbnksIGZyOiBhbnksIGxldmVsOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBsZW5ndGggPSBmci5tYXgoKSAtIGZyLm1pbigpXG4gICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gZnIubWluKClcbiAgICAgICAgICBjb25zdCByZXN1bHRCdWZmZXIgPSBhd2FpdCB0aGlzLmZlYXR1cmVDYWNoZS5nZXQoYCR7bGVuZ3RofV8ke29mZnNldH1gLCB7IGxlbmd0aCwgb2Zmc2V0IH0sIHNpZ25hbClcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9mZi5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgaWYgKGZyLmNvbnRhaW5zKG9mZltpXSkpIHtcbiAgICAgICAgICAgICAgY2lyRm9iUmVjdXIyKHJlc3VsdEJ1ZmZlciwgb2ZmW2ldIC0gb2Zmc2V0LCBsZXZlbCwgb2JzZXJ2ZXIsIG9wdHMpXG4gICAgICAgICAgICAgIG91dHN0YW5kaW5nIC09IDFcbiAgICAgICAgICAgICAgaWYgKG91dHN0YW5kaW5nID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkRmVhdHVyZXMob2JzZXJ2ZXIsIGJsb2Nrc1RvRmV0Y2gsIHsgLi4ub3B0cywgcmVxdWVzdCB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgY2lyRm9iUmVjdXIgPSAob2Zmc2V0OiBhbnksIGxldmVsOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBvdXRzdGFuZGluZyArPSBvZmZzZXQubGVuZ3RoXG5cbiAgICAgICAgICBjb25zdCBtYXhDaXJCbG9ja1NwYW4gPSA0ICsgY2lyQmxvY2tTaXplICogMzIgLy8gVXBwZXIgYm91bmQgb24gc2l6ZSwgYmFzZWQgb24gYSBjb21wbGV0ZWx5IGZ1bGwgbGVhZiBub2RlLlxuICAgICAgICAgIGxldCBzcGFucyA9IG5ldyBSYW5nZShvZmZzZXRbMF0sIG9mZnNldFswXSArIG1heENpckJsb2NrU3BhbilcbiAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG9mZnNldC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tTcGFuID0gbmV3IFJhbmdlKG9mZnNldFtpXSwgb2Zmc2V0W2ldICsgbWF4Q2lyQmxvY2tTcGFuKVxuICAgICAgICAgICAgc3BhbnMgPSBzcGFucy51bmlvbihibG9ja1NwYW4pXG4gICAgICAgICAgfVxuICAgICAgICAgIHNwYW5zLmdldFJhbmdlcygpLm1hcCgoZnI6IFJhbmdlKSA9PiBjaXJGb2JTdGFydEZldGNoKG9mZnNldCwgZnIsIGxldmVsKSlcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIG9ic2VydmVyLmVycm9yKGUpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2lyRm9iUmVjdXIyID0gKGNpckJsb2NrRGF0YTogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgbGV2ZWw6IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBjaXJCbG9ja0RhdGEuc2xpY2Uob2Zmc2V0KVxuXG4gICAgICAgICAgY29uc3QgcCA9IHRoaXMubGVhZlBhcnNlci5wYXJzZShkYXRhKS5yZXN1bHRcbiAgICAgICAgICBpZiAocC5ibG9ja3NUb0ZldGNoKSB7XG4gICAgICAgICAgICBibG9ja3NUb0ZldGNoID0gYmxvY2tzVG9GZXRjaC5jb25jYXQoXG4gICAgICAgICAgICAgIHAuYmxvY2tzVG9GZXRjaFxuICAgICAgICAgICAgICAgIC5maWx0ZXIoZmlsdGVyRmVhdHMpXG4gICAgICAgICAgICAgICAgLm1hcCgobDogYW55KTogYW55ID0+ICh7IG9mZnNldDogbC5ibG9ja09mZnNldCwgbGVuZ3RoOiBsLmJsb2NrU2l6ZSB9KSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwLnJlY3VyT2Zmc2V0cykge1xuICAgICAgICAgICAgY29uc3QgcmVjdXJPZmZzZXRzID0gcC5yZWN1ck9mZnNldHMuZmlsdGVyKGZpbHRlckZlYXRzKS5tYXAoKGw6IGFueSk6IGFueSA9PiBsLmJsb2NrT2Zmc2V0KVxuICAgICAgICAgICAgaWYgKHJlY3VyT2Zmc2V0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGNpckZvYlJlY3VyKHJlY3VyT2Zmc2V0cywgbGV2ZWwgKyAxKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIG9ic2VydmVyLmVycm9yKGUpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNpckZvYlJlY3VyKFtjaXJUcmVlT2Zmc2V0ICsgNDhdLCAxKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9ic2VydmVyLmVycm9yKGUpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVN1bW1hcnlCbG9jayhkYXRhOiBCdWZmZXIsIHN0YXJ0T2Zmc2V0OiBudW1iZXIsIHJlcXVlc3Q/OiBDb29yZFJlcXVlc3QpOiBGZWF0dXJlW10ge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gW11cbiAgICBsZXQgY3Vyck9mZnNldCA9IHN0YXJ0T2Zmc2V0XG4gICAgd2hpbGUgKGN1cnJPZmZzZXQgPCBkYXRhLmJ5dGVMZW5ndGgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IHRoaXMuc3VtbWFyeVBhcnNlci5wYXJzZShkYXRhLnNsaWNlKGN1cnJPZmZzZXQpKVxuICAgICAgZmVhdHVyZXMucHVzaChyZXMucmVzdWx0KVxuICAgICAgY3Vyck9mZnNldCArPSByZXMub2Zmc2V0XG4gICAgfVxuICAgIGxldCBpdGVtcyA9IGZlYXR1cmVzXG4gICAgaWYgKHJlcXVlc3QpIGl0ZW1zID0gaXRlbXMuZmlsdGVyKChlbHQ6IFN1bW1hcnlCbG9jayk6IGJvb2xlYW4gPT4gZWx0LmNocm9tSWQgPT09IHJlcXVlc3QuY2hySWQpXG4gICAgaXRlbXMgPSBpdGVtcy5tYXAoXG4gICAgICAoZWx0OiBTdW1tYXJ5QmxvY2spOiBGZWF0dXJlID0+ICh7XG4gICAgICAgIHN0YXJ0OiBlbHQuc3RhcnQsXG4gICAgICAgIGVuZDogZWx0LmVuZCxcbiAgICAgICAgbWF4U2NvcmU6IGVsdC5tYXhTY29yZSxcbiAgICAgICAgbWluU2NvcmU6IGVsdC5taW5TY29yZSxcbiAgICAgICAgc2NvcmU6IGVsdC5zdW1EYXRhIC8gKGVsdC52YWxpZENudCB8fCAxKSxcbiAgICAgICAgc3VtbWFyeTogdHJ1ZSxcbiAgICAgIH0pLFxuICAgIClcbiAgICByZXR1cm4gcmVxdWVzdCA/IGl0ZW1zLmZpbHRlcihmID0+IEJsb2NrVmlldy5jb29yZEZpbHRlcihmLCByZXF1ZXN0KSkgOiBpdGVtc1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUJpZ0JlZEJsb2NrKGRhdGE6IEJ1ZmZlciwgc3RhcnRPZmZzZXQ6IG51bWJlciwgcmVxdWVzdD86IENvb3JkUmVxdWVzdCk6IEZlYXR1cmVbXSB7XG4gICAgY29uc3QgaXRlbXMgPSBbXVxuICAgIGxldCBjdXJyT2Zmc2V0ID0gc3RhcnRPZmZzZXRcbiAgICB3aGlsZSAoY3Vyck9mZnNldCA8IGRhdGEuYnl0ZUxlbmd0aCkge1xuICAgICAgY29uc3QgcmVzID0gdGhpcy5iaWdCZWRQYXJzZXIucGFyc2UoZGF0YS5zbGljZShjdXJyT2Zmc2V0KSlcbiAgICAgIHJlcy5yZXN1bHQudW5pcXVlSWQgPSBgYmItJHtzdGFydE9mZnNldCArIGN1cnJPZmZzZXR9YFxuICAgICAgaXRlbXMucHVzaChyZXMucmVzdWx0KVxuICAgICAgY3Vyck9mZnNldCArPSByZXMub2Zmc2V0XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3QgPyBpdGVtcy5maWx0ZXIoKGY6IGFueSkgPT4gQmxvY2tWaWV3LmNvb3JkRmlsdGVyKGYsIHJlcXVlc3QpKSA6IGl0ZW1zXG4gIH1cblxuICBwcml2YXRlIHBhcnNlQmlnV2lnQmxvY2soYnl0ZXM6IEJ1ZmZlciwgc3RhcnRPZmZzZXQ6IG51bWJlciwgcmVxdWVzdD86IENvb3JkUmVxdWVzdCk6IEZlYXR1cmVbXSB7XG4gICAgY29uc3QgZGF0YSA9IGJ5dGVzLnNsaWNlKHN0YXJ0T2Zmc2V0KVxuICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLmJpZ1dpZ1BhcnNlci5wYXJzZShkYXRhKS5yZXN1bHRcbiAgICBsZXQgeyBpdGVtcyB9ID0gcmVzdWx0c1xuICAgIGlmIChyZXN1bHRzLmJsb2NrVHlwZSA9PT0gQklHX1dJR19UWVBFX0ZTVEVQKSB7XG4gICAgICBjb25zdCB7IGl0ZW1TdGVwOiBzdGVwLCBpdGVtU3Bhbjogc3BhbiB9ID0gcmVzdWx0c1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpdGVtc1tpXS5zdGFydCA9IGkgKiBzdGVwXG4gICAgICAgIGl0ZW1zW2ldLmVuZCA9IGkgKiBzdGVwICsgc3BhblxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocmVzdWx0cy5ibG9ja1R5cGUgPT09IEJJR19XSUdfVFlQRV9WU1RFUCkge1xuICAgICAgY29uc3QgeyBpdGVtU3Bhbjogc3BhbiB9ID0gcmVzdWx0c1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpdGVtc1tpXS5lbmQgPSBpdGVtc1tpXS5zdGFydCArIHNwYW5cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcXVlc3QgPyBpdGVtcy5maWx0ZXIoKGY6IGFueSkgPT4gQmxvY2tWaWV3LmNvb3JkRmlsdGVyKGYsIHJlcXVlc3QpKSA6IGl0ZW1zXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb29yZEZpbHRlcihmOiBGZWF0dXJlLCByYW5nZTogQ29vcmRSZXF1ZXN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGYuc3RhcnQgPCByYW5nZS5lbmQgJiYgZi5lbmQgPj0gcmFuZ2Uuc3RhcnRcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWFkRmVhdHVyZXMob2JzZXJ2ZXI6IE9ic2VydmVyPEZlYXR1cmVbXT4sIGJsb2NrczogYW55LCBvcHRzOiBPcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBibG9ja1R5cGUsIGlzQ29tcHJlc3NlZCB9ID0gdGhpc1xuICAgICAgY29uc3QgeyBzaWduYWwsIHJlcXVlc3QgfSA9IG9wdHNcbiAgICAgIGNvbnN0IGJsb2NrR3JvdXBzVG9GZXRjaCA9IGdyb3VwQmxvY2tzKGJsb2NrcylcbiAgICAgIGNoZWNrQWJvcnRTaWduYWwoc2lnbmFsKVxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGJsb2NrR3JvdXBzVG9GZXRjaC5tYXAoYXN5bmMgKGJsb2NrR3JvdXA6IGFueSkgPT4ge1xuICAgICAgICAgIGNoZWNrQWJvcnRTaWduYWwoc2lnbmFsKVxuICAgICAgICAgIGNvbnN0IHsgbGVuZ3RoLCBvZmZzZXQgfSA9IGJsb2NrR3JvdXBcbiAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZWF0dXJlQ2FjaGUuZ2V0KGAke2xlbmd0aH1fJHtvZmZzZXR9YCwgYmxvY2tHcm91cCwgc2lnbmFsKVxuICAgICAgICAgIGJsb2NrR3JvdXAuYmxvY2tzLmZvckVhY2goKGJsb2NrOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNoZWNrQWJvcnRTaWduYWwoc2lnbmFsKVxuICAgICAgICAgICAgbGV0IGJsb2NrT2Zmc2V0ID0gYmxvY2sub2Zmc2V0IC0gYmxvY2tHcm91cC5vZmZzZXRcbiAgICAgICAgICAgIGxldCByZXN1bHREYXRhID0gZGF0YVxuICAgICAgICAgICAgaWYgKGlzQ29tcHJlc3NlZCkge1xuICAgICAgICAgICAgICByZXN1bHREYXRhID0gemxpYi5pbmZsYXRlU3luYyhkYXRhLnNsaWNlKGJsb2NrT2Zmc2V0KSlcbiAgICAgICAgICAgICAgYmxvY2tPZmZzZXQgPSAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGVja0Fib3J0U2lnbmFsKHNpZ25hbClcblxuICAgICAgICAgICAgc3dpdGNoIChibG9ja1R5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSAnc3VtbWFyeSc6XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0aGlzLnBhcnNlU3VtbWFyeUJsb2NrKHJlc3VsdERhdGEsIGJsb2NrT2Zmc2V0LCByZXF1ZXN0KSlcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICdiaWd3aWcnOlxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodGhpcy5wYXJzZUJpZ1dpZ0Jsb2NrKHJlc3VsdERhdGEsIGJsb2NrT2Zmc2V0LCByZXF1ZXN0KSlcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICdiaWdiZWQnOlxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodGhpcy5wYXJzZUJpZ0JlZEJsb2NrKHJlc3VsdERhdGEsIGJsb2NrT2Zmc2V0LCByZXF1ZXN0KSlcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgRG9uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJHtibG9ja1R5cGV9YClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvYnNlcnZlci5lcnJvcihlKVxuICAgIH1cbiAgfVxufVxuIl19
{
"name": "@gmod/bbi",
"version": "1.0.21",
"version": "1.0.22",
"description": "Parser for BigWig/BigBed files",

@@ -24,3 +24,2 @@ "license": "MIT",

"clean": "rimraf dist",
"docs": "typedoc --theme markdown --out docs --readme none src/",
"prebuild": "npm run clean",

@@ -30,3 +29,3 @@ "build:types": "tsc --emitDeclarationOnly",

"build": "npm run build:types && npm run build:js",
"preversion": "npm run lint && npm test && npm run docs && npm run build",
"preversion": "npm run lint && npm test && npm run build",
"version": "standard-changelog && git add CHANGELOG.md",

@@ -49,5 +48,5 @@ "postpublish": "git push origin master --follow-tags"

"es6-promisify": "^6.0.1",
"generic-filehandle": "^1.0.9",
"generic-filehandle": "^2.0.0",
"quick-lru": "^4.0.0",
"rxjs": "^6.5.1"
"rxjs": "^6.5.2"
},

@@ -62,10 +61,10 @@ "devDependencies": {

"@gmod/bed": "^2.0.0",
"@types/jest": "^24.0.12",
"@types/jest": "^24.0.13",
"@types/long": "^4.0.0",
"@typescript-eslint/eslint-plugin": "^1.7.0",
"@typescript-eslint/parser": "^1.7.0",
"@types/node": "^12.0.2",
"@typescript-eslint/eslint-plugin": "^1.9.0",
"@typescript-eslint/parser": "^1.9.0",
"babel-eslint": "^10.0.1",
"babel-preset-typescript": "^7.0.0-alpha.19",
"cross-fetch": "^3.0.2",
"documentation": "^10.1.0",
"eslint": "^5.16.0",

@@ -76,9 +75,7 @@ "eslint-config-airbnb-base": "^13.1.0",

"eslint-plugin-jest": "^22.5.1",
"eslint-plugin-prettier": "^3.0.1",
"jest": "^24.7.1",
"prettier": "^1.17.0",
"eslint-plugin-prettier": "^3.1.0",
"jest": "^24.8.0",
"prettier": "^1.17.1",
"rimraf": "^2.6.3",
"standard-changelog": "^2.0.7",
"typedoc": "^0.14.2",
"typedoc-plugin-markdown": "^1.2.0",
"standard-changelog": "^2.0.11",
"typescript": "^3.4.5"

@@ -85,0 +82,0 @@ },

@@ -159,6 +159,3 @@ # bbi-js

## Documentation
See [docs](docs/README.md)
## Academic Use

@@ -165,0 +162,0 @@

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