itslanguage
Advanced tools
Comparing version 3.0.0-beta-3 to 3.0.0-beta-4
@@ -279,2 +279,2 @@ 'use strict'; | ||
exports.default = ChoiceRecognitionController; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbmlzdHJhdGl2ZS1zZGsvY2hvaWNlLXJlY29nbml0aW9uL2Nob2ljZS1yZWNvZ25pdGlvbi1jb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbIkNob2ljZVJlY29nbml0aW9uQ29udHJvbGxlciIsImNvbm5lY3Rpb24iLCJfY29ubmVjdGlvbiIsImNob2ljZVJlY29nbml0aW9uSW5pdENoYWxsZW5nZSIsImNoYWxsZW5nZSIsImNhbGwiLCJfcmVjb2duaXRpb25JZCIsImlkIiwidGhlbiIsImNvbnNvbGUiLCJsb2ciLCJyZWNvZ25pdGlvbklkIiwiY2hvaWNlUmVjb2duaXRpb25Jbml0QXVkaW8iLCJyZWNvcmRlciIsImRhdGFhdmFpbGFibGVDYiIsInNwZWNzIiwiZ2V0QXVkaW9TcGVjcyIsImF1ZGlvRm9ybWF0IiwiYXVkaW9QYXJhbWV0ZXJzIiwiYWRkRXZlbnRMaXN0ZW5lciIsInN0YXJ0U3RyZWFtaW5nQ2hvaWNlUmVjb2duaXRpb24iLCJ0cmltIiwiUHJvbWlzZSIsInJlamVjdCIsIkVycm9yIiwiX3Nlc3Npb24iLCJpc1JlY29yZGluZyIsInNlbGYiLCJ0cmltQXVkaW9TdGFydCIsInRyaW1BdWRpb0VuZCIsInJlc29sdmUiLCJub3RpZnkiLCJfY2IiLCJkYXRhIiwicmVjb2duaXRpb24iLCJ1c2VySWQiLCJEYXRlIiwiY3JlYXRlZCIsInVwZGF0ZWQiLCJhZGRBY2Nlc3NUb2tlbiIsImF1ZGlvVXJsIiwicmVjb2duaXNlZCIsIl9lY2IiLCJtZXNzYWdlIiwiY2h1bmsiLCJlbmNvZGVkIiwiX2FycmF5QnVmZmVyVG9CYXNlNjQiLCJjYXRjaCIsImVycm9yIiwicmVzIiwicmVjb2duaXRpb25Jbml0Q2IiLCJ0cmltU3RhcnQiLCJ0cmltRW5kIiwicCIsImhhc1VzZXJNZWRpYUFwcHJvdmFsIiwicmVzb2x2ZV8iLCJyZWNvcmRlZENiIiwia3dhcmdzIiwiYW5hbHlzaXMiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibG9nUlBDRXJyb3IiLCJnZXRDaG9pY2VSZWNvZ25pdGlvbiIsImNoYWxsZW5nZUlkIiwidXJsIiwiX3NldHRpbmdzIiwiYXBpVXJsIiwiX3NlY3VyZUFqYXhHZXQiLCJkYXR1bSIsImdldENob2ljZVJlY29nbml0aW9ucyIsIm1hcCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7O0FBQ0E7Ozs7SUFJcUJBLDJCO0FBQ25COzs7QUFHQSx1Q0FBWUMsVUFBWixFQUF3QjtBQUFBOztBQUN0Qjs7OztBQUlBLFNBQUtDLFdBQUwsR0FBbUJELFVBQW5CO0FBQ0Q7O0FBRUQ7Ozs7Ozs7O3dDQU1BRSw4QiwyQ0FBK0JDLFMsRUFBVztBQUFBOztBQUN4QyxXQUFPLEtBQUtGLFdBQUwsQ0FBaUJHLElBQWpCLENBQXNCLHVCQUF0QixFQUNMLENBQUMsS0FBS0gsV0FBTCxDQUFpQkksY0FBbEIsRUFBa0NGLFVBQVVHLEVBQTVDLENBREssRUFFSkMsSUFGSTtBQUdIO0FBQ0EsNkJBQWlCO0FBQ2ZDLGNBQVFDLEdBQVIsQ0FBWSw4Q0FBOEMsTUFBS1IsV0FBTCxDQUFpQkksY0FBM0U7QUFDQSxhQUFPSyxhQUFQO0FBQ0QsS0FQRSxDQUFQO0FBUUQsRzs7QUFFRDs7Ozs7Ozs7O3dDQU9BQywwQix1Q0FBMkJDLFEsRUFBVUMsZSxFQUFpQjtBQUFBOztBQUNwRDtBQUNBO0FBQ0E7QUFDQSxRQUFNQyxRQUFRRixTQUFTRyxhQUFULEVBQWQ7QUFDQSxXQUFPLEtBQUtkLFdBQUwsQ0FBaUJHLElBQWpCLENBQXNCLG1CQUF0QixFQUNMLENBQUMsS0FBS0gsV0FBTCxDQUFpQkksY0FBbEIsRUFBa0NTLE1BQU1FLFdBQXhDLENBREssRUFDaURGLE1BQU1HLGVBRHZELEVBQ3dFVixJQUR4RTtBQUVMO0FBQ0EsNkJBQWlCO0FBQ2ZDLGNBQVFDLEdBQVIsQ0FBWSxtRUFBbUUsT0FBS1IsV0FBTCxDQUFpQkksY0FBaEc7QUFDQTtBQUNBTyxlQUFTTSxnQkFBVCxDQUEwQixlQUExQixF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QURVLEdBQ0ksZUFEaEI7QUFFQSxXQUFPLEtBQUs1RCxXQUFMLENBQWlCZ0UsY0FBakIsQ0FBZ0NILEdBQWhDLEVBQ0p2RCxJQURJLENBQ0M7QUFBQSxhQUFReUIsS0FBS29DLEdBQUwsQ0FBUyxpQkFBUztBQUM5QixZQUFNbkMsY0FBYyxnQ0FBc0I0QixXQUF0QixFQUFtQ0ssTUFBTWhDLE1BQXpDLEVBQ2xCZ0MsTUFBTTVELEVBRFksRUFDUixJQUFJNkIsSUFBSixDQUFTK0IsTUFBTTlCLE9BQWYsQ0FEUSxFQUNpQixJQUFJRCxJQUFKLENBQVMrQixNQUFNN0IsT0FBZixDQURqQixFQUVsQjZCLE1BQU0zQixRQUZZLEVBRUYyQixNQUFNMUIsVUFGSixDQUFwQjtBQUdBLGVBQU9QLFdBQVA7QUFDRCxPQUxhLENBQVI7QUFBQSxLQURELENBQVA7QUFPRCxHOzs7OztrQkEzUGtCbEMsMkIiLCJmaWxlIjoiY2hvaWNlLXJlY29nbml0aW9uLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZTY0VXRpbHMgZnJvbSAnLi4vdXRpbHMvYmFzZTY0LXV0aWxzJztcbmltcG9ydCBDaG9pY2VDaGFsbGVuZ2UgZnJvbSAnLi4vY2hvaWNlLWNoYWxsZW5nZS9jaG9pY2UtY2hhbGxlbmdlJztcbmltcG9ydCBDaG9pY2VSZWNvZ25pdGlvbiBmcm9tICcuL2Nob2ljZS1yZWNvZ25pdGlvbic7XG5pbXBvcnQgQ29ubmVjdGlvbiBmcm9tICcuLi9jb25uZWN0aW9uL2Nvbm5lY3Rpb24tY29udHJvbGxlcic7XG5pbXBvcnQgd2hlbiBmcm9tICd3aGVuJztcbi8qKlxuICogQ29udHJvbGxlciBjbGFzcyBmb3IgdGhlIENob2ljZVJlY29nbml0aW9uIG1vZGVsLlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hvaWNlUmVjb2duaXRpb25Db250cm9sbGVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Q29ubmVjdGlvbn0gY29ubmVjdGlvbiAtIE9iamVjdCB0byB1c2UgZm9yIG1ha2luZyBhIGNvbm5lY3Rpb24gdG8gdGhlIFJFU1QgQVBJIGFuZCBXZWJzb2NrZXQgc2VydmVyLlxuICAgKi9cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvbikge1xuICAgIC8qKlxuICAgICAqIE9iamVjdCB0byB1c2UgZm9yIG1ha2luZyBhIGNvbm5lY3Rpb24gdG8gdGhlIFJFU1QgQVBJIGFuZCBXZWJzb2NrZXQgc2VydmVyLlxuICAgICAqIEB0eXBlIHtDb25uZWN0aW9ufVxuICAgICAqL1xuICAgIHRoaXMuX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpc2UgdGhlIGNob2ljZSByZWNvZ25pdGlvbiBjaGFsbGVuZ2UgdGhyb3VnaCBSUENzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Nob2ljZUNoYWxsZW5nZX0gY2hhbGxlbmdlIC0gQ2hvaWNlQ2hhbGxlbmdlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2hvaWNlUmVjb2duaXRpb25Jbml0Q2hhbGxlbmdlKGNoYWxsZW5nZSkge1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLmNhbGwoJ2Nob2ljZS5pbml0X2NoYWxsZW5nZScsXG4gICAgICBbdGhpcy5fY29ubmVjdGlvbi5fcmVjb2duaXRpb25JZCwgY2hhbGxlbmdlLmlkXSlcbiAgICAgIC50aGVuKFxuICAgICAgICAvLyBSUEMgc3VjY2VzcyBjYWxsYmFja1xuICAgICAgICByZWNvZ25pdGlvbklkID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnQ2hhbGxlbmdlIGluaXRpYWxpc2VkIGZvciByZWNvZ25pdGlvbklkOiAnICsgdGhpcy5fY29ubmVjdGlvbi5fcmVjb2duaXRpb25JZCk7XG4gICAgICAgICAgcmV0dXJuIHJlY29nbml0aW9uSWQ7XG4gICAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpc2UgdGhlIHByb251bmNpYXRpb24gYW5hbHlzaXMgYXVkaW8gc3BlY3MgdGhyb3VnaCBSUENzLlxuICAgKlxuICAgKiBAcGFyYW0ge0F1ZGlvUmVjb3JkZXJ9IHJlY29yZGVyIC0gQXVkaW9SZWNvcmRlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZGF0YWF2YWlsYWJsZUNiIC0gQ2FsbGJhY2suXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjaG9pY2VSZWNvZ25pdGlvbkluaXRBdWRpbyhyZWNvcmRlciwgZGF0YWF2YWlsYWJsZUNiKSB7XG4gICAgLy8gSW5kaWNhdGUgdG8gdGhlIHNvY2tldCBzZXJ2ZXIgdGhhdCB3ZSdyZSBhYm91dCB0byBzdGFydCByZWNvcmRpbmcgYVxuICAgIC8vIGNoYWxsZW5nZS4gVGhpcyBhbGxvd3MgdGhlIHNvY2tldCBzZXJ2ZXIgc29tZSB0aW1lIHRvIGZldGNoIHRoZSBtZXRhZGF0YVxuICAgIC8vIGFuZCByZWZlcmVuY2UgYXVkaW8gdG8gc3RhcnQgdGhlIGFuYWx5c2lzIHdoZW4gYXVkaW8gaXMgYWN0dWFsbHkgc3VibWl0dGVkLlxuICAgIGNvbnN0IHNwZWNzID0gcmVjb3JkZXIuZ2V0QXVkaW9TcGVjcygpO1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLmNhbGwoJ2Nob2ljZS5pbml0X2F1ZGlvJyxcbiAgICAgIFt0aGlzLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkLCBzcGVjcy5hdWRpb0Zvcm1hdF0sIHNwZWNzLmF1ZGlvUGFyYW1ldGVycykudGhlbihcbiAgICAgIC8vIFJQQyBzdWNjZXNzIGNhbGxiYWNrXG4gICAgICByZWNvZ25pdGlvbklkID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0FjY2VwdGVkIGF1ZGlvIHBhcmFtZXRlcnMgZm9yIHJlY29nbml0aW9uSWQgYWZ0ZXIgaW5pdF9hdWRpbzogJyArIHRoaXMuX2Nvbm5lY3Rpb24uX3JlY29nbml0aW9uSWQpO1xuICAgICAgICAvLyBTdGFydCBsaXN0ZW5pbmcgZm9yIHN0cmVhbWluZyBkYXRhLlxuICAgICAgICByZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdkYXRhYXZhaWxhYmxlJywgZGF0YWF2YWlsYWJsZUNiKTtcbiAgICAgICAgcmV0dXJuIHJlY29nbml0aW9uSWQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBhIGNob2ljZSByZWNvZ25pdGlvbiBmcm9tIHN0cmVhbWluZyBhdWRpby5cbiAgICpcbiAgICogQHBhcmFtIHtDaG9pY2VDaGFsbGVuZ2V9IGNoYWxsZW5nZSAtIFRoZSBjaG9pY2UgY2hhbGxlbmdlIHRvIHBlcmZvcm0uXG4gICAqIEBwYXJhbSB7QXVkaW9SZWNvcmRlcn0gcmVjb3JkZXIgLSBUaGUgYXVkaW8gcmVjb3JkZXIgdG8gZXh0cmFjdCBhdWRpbyBmcm9tLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFt0cmltPXRydWVdIC0gV2hldGhlciB0byB0cmltIHRoZSBzdGFydCBhbmQgZW5kIG9mIHJlY29yZGVkIGF1ZGlvLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZS48Q2hvaWNlUmVjb2duaXRpb24+fSBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vY3Vqb2pzL3doZW59IFByb21pc2UgY29udGFpbmluZyBhIHtAbGluayBDaG9pY2VSZWNvZ25pdGlvbn0uXG4gICAqIEBlbWl0cyB7c3RyaW5nfSAnUmVhZHlUb1JlY2VpdmUnIHdoZW4gdGhlIGNhbGwgaXMgbWFkZSB0byByZWNlaXZlIGF1ZGlvLiBUaGUgcmVjb3JkZXIgY2FuIG5vdyBzZW5kIGF1ZGlvLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IGNoYWxsZW5nZSBwYXJhbWV0ZXIgb2YgdHlwZSBcIkNob2ljZUNoYWxsZW5nZVwiIGlzIHJlcXVpcmVkLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IGNoYWxsZW5nZS5pZCBmaWVsZCBvZiB0eXBlIFwic3RyaW5nXCIgaXMgcmVxdWlyZWQuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgdGhlIGNvbm5lY3Rpb24gaXMgbm90IG9wZW4uXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgdGhlIHJlY29yZGVyIGlzIGFscmVhZHkgcmVjb3JkaW5nLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IElmIGEgcmVjb2duaXRpb24gc2Vzc2lvbiBpcyBhbHJlYWR5IGluIHByb2dyZXNzLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IElmIHNvbWV0aGluZyB3ZW50IHdyb25nIGR1cmluZyBhbmFseXNpcy5cbiAgICovXG4gIHN0YXJ0U3RyZWFtaW5nQ2hvaWNlUmVjb2duaXRpb24oY2hhbGxlbmdlLCByZWNvcmRlciwgdHJpbSkge1xuICAgIGlmICghKGNoYWxsZW5nZSBpbnN0YW5jZW9mIENob2ljZUNoYWxsZW5nZSkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2NoYWxsZW5nZSBwYXJhbWV0ZXIgb2YgdHlwZSBcIkNob2ljZUNoYWxsZW5nZVwiIGlzIHJlcXVpcmVkJykpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2hhbGxlbmdlLmlkICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignY2hhbGxlbmdlLmlkIGZpZWxkIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBlbnZpcm9ubWVudCBwcmVyZXF1aXNpdGVzLlxuICAgIGlmICghdGhpcy5fY29ubmVjdGlvbi5fc2Vzc2lvbikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignV2ViU29ja2V0IGNvbm5lY3Rpb24gd2FzIG5vdCBvcGVuLicpKTtcbiAgICB9XG5cbiAgICBpZiAocmVjb3JkZXIuaXNSZWNvcmRpbmcoKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignUmVjb3JkZXIgc2hvdWxkIG5vdCB5ZXQgYmUgcmVjb3JkaW5nLicpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29ubmVjdGlvbi5fcmVjb2duaXRpb25JZCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignU2Vzc2lvbiB3aXRoIHJlY29nbml0aW9uSWQgJyArIHRoaXMuX2Nvbm5lY3Rpb24uX3JlY29nbml0aW9uSWQgK1xuICAgICAgICAnIHN0aWxsIGluIHByb2dyZXNzLicpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBsZXQgdHJpbUF1ZGlvU3RhcnQgPSAwLjE1O1xuICAgIGNvbnN0IHRyaW1BdWRpb0VuZCA9IDAuMDtcbiAgICBpZiAodHJpbSA9PT0gZmFsc2UpIHtcbiAgICAgIHRyaW1BdWRpb1N0YXJ0ID0gMC4wO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHdoZW4uUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0LCBub3RpZnkpID0+IHtcbiAgICAgIGZ1bmN0aW9uIF9jYihkYXRhKSB7XG4gICAgICAgIGNvbnN0IHJlY29nbml0aW9uID0gbmV3IENob2ljZVJlY29nbml0aW9uKFxuICAgICAgICAgIGNoYWxsZW5nZS5pZCwgZGF0YS51c2VySWQsIGRhdGEuaWQsXG4gICAgICAgICAgbmV3IERhdGUoZGF0YS5jcmVhdGVkKSwgbmV3IERhdGUoZGF0YS51cGRhdGVkKSxcbiAgICAgICAgICBzZWxmLl9jb25uZWN0aW9uLmFkZEFjY2Vzc1Rva2VuKGRhdGEuYXVkaW9VcmwpLCBkYXRhLnJlY29nbmlzZWQpO1xuICAgICAgICByZXNvbHZlKHtyZWNvZ25pdGlvbklkOiBzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkLCByZWNvZ25pdGlvbn0pO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBfZWNiKGRhdGEpIHtcbiAgICAgICAgLy8gVGhlcmUgd2FzIGFuIHVuZXhwZWN0ZWQgZXJyb3IuXG4gICAgICAgIGNvbnN0IHJlY29nbml0aW9uID0gbmV3IENob2ljZVJlY29nbml0aW9uKFxuICAgICAgICAgIGNoYWxsZW5nZS5pZCwgZGF0YS51c2VySWQsIGRhdGEuaWQsXG4gICAgICAgICAgbmV3IERhdGUoZGF0YS5jcmVhdGVkKSwgbmV3IERhdGUoZGF0YS51cGRhdGVkKSxcbiAgICAgICAgICBzZWxmLl9jb25uZWN0aW9uLmFkZEFjY2Vzc1Rva2VuKGRhdGEuYXVkaW9VcmwpLCBudWxsKTtcbiAgICAgICAgcmVqZWN0KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlY29nbml0aW9uLFxuICAgICAgICAgICAgbWVzc2FnZTogZGF0YS5tZXNzYWdlXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkID0gbnVsbDtcblxuICAgICAgLy8gU3RhcnQgc3RyZWFtaW5nIHRoZSBiaW5hcnkgYXVkaW8gd2hlbiB0aGUgdXNlciBpbnN0cnVjdHNcbiAgICAgIC8vIHRoZSBhdWRpbyByZWNvcmRlciB0byBzdGFydCByZWNvcmRpbmcuXG4gICAgICBmdW5jdGlvbiBkYXRhYXZhaWxhYmxlQ2IoY2h1bmspIHtcbiAgICAgICAgY29uc3QgZW5jb2RlZCA9IEJhc2U2NFV0aWxzLl9hcnJheUJ1ZmZlclRvQmFzZTY0KGNodW5rKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1NlbmRpbmcgYXVkaW8gY2h1bmsgdG8gd2Vic29ja2V0IGZvciByZWNvZ25pdGlvbklkOiAnICtcbiAgICAgICAgICBzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkKTtcbiAgICAgICAgc2VsZi5fY29ubmVjdGlvbi5jYWxsKCdjaG9pY2Uud3JpdGUnLFxuICAgICAgICAgIFtzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkLCBlbmNvZGVkLCAnYmFzZTY0J10pXG4gICAgICAgICAgLmNhdGNoKHJlcyA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdSUEMgZXJyb3IgcmV0dXJuZWQ6JywgcmVzLmVycm9yKTtcbiAgICAgICAgICAgIF9lY2IocmVzKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcmVjb2duaXRpb25Jbml0Q2IocmVjb2duaXRpb25JZCkge1xuICAgICAgICBzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkID0gcmVjb2duaXRpb25JZDtcbiAgICAgICAgY29uc29sZS5sb2coJ0dvdCByZWNvZ25pdGlvbklkIGFmdGVyIGluaXRpYWxpc2F0aW9uOiAnICsgc2VsZi5fY29ubmVjdGlvbi5fcmVjb2duaXRpb25JZCk7XG4gICAgICB9XG4gICAgICBzZWxmLl9jb25uZWN0aW9uLmNhbGwoJ2Nob2ljZS5pbml0X3JlY29nbml0aW9uJywgW10sXG4gICAgICAgIHtcbiAgICAgICAgICB0cmltU3RhcnQ6IHRyaW1BdWRpb1N0YXJ0LFxuICAgICAgICAgIHRyaW1FbmQ6IHRyaW1BdWRpb0VuZFxuICAgICAgICB9KVxuICAgICAgICAudGhlbihyZWNvZ25pdGlvbkluaXRDYilcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICBzZWxmLmNob2ljZVJlY29nbml0aW9uSW5pdENoYWxsZW5nZShjaGFsbGVuZ2UpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHAgPSBuZXcgUHJvbWlzZShyZXNvbHZlXyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZGVyLmhhc1VzZXJNZWRpYUFwcHJvdmFsKCkpIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmVfKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3JlYWR5JywgcmVzb2x2ZV8pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2VsZi5jaG9pY2VSZWNvZ25pdGlvbkluaXRBdWRpbyhyZWNvcmRlciwgZGF0YWF2YWlsYWJsZUNiKVxuICAgICAgICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IG5vdGlmeSgnUmVhZHlUb1JlY2VpdmUnKSlcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gocmVqZWN0KTtcblxuICAgICAgLy8gU3RvcCBsaXN0ZW5pbmcgd2hlbiB0aGUgYXVkaW8gcmVjb3JkZXIgc3RvcHBlZC5cbiAgICAgIGZ1bmN0aW9uIHJlY29yZGVkQ2IoKSB7XG4gICAgICAgIC8vIFdoZW4gZG9uZSwgc3VibWl0IGFueSBwbGFpbiB0ZXh0IChub24tSlNPTikgdG8gc3RhcnQgYW5hbHlzaW5nLlxuICAgICAgICBzZWxmLl9jb25uZWN0aW9uLmNhbGwoJ2Nob2ljZS5yZWNvZ25pc2UnLFxuICAgICAgICAgIFtzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkXSkudGhlbihcbiAgICAgICAgICAvLyBSUEMgc3VjY2VzcyBjYWxsYmFja1xuICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAvLyBXYWl0IGZvciBhbmFseXNpcyByZXN1bHRzIHRvIGNvbWUgYmFjay5cbiAgICAgICAgICAgIF9jYihyZXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gUlBDIGVycm9yIGNhbGxiYWNrXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1JQQyBlcnJvciByZXR1cm5lZDonLCByZXMuZXJyb3IpO1xuICAgICAgICAgICAgaWYgKHJlcy5lcnJvciA9PT0gJ25sLml0c2xhbmd1YWdlLnJlY29nbml0aW9uX2ZhaWxlZCcpIHtcbiAgICAgICAgICAgICAgcmVzLmt3YXJncy5yZWNvZ25pdGlvbi5tZXNzYWdlID0gJ1JlY29nbml0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXMua3dhcmdzLnJlY29nbml0aW9uLm1lc3NhZ2UgPSAnVW5oYW5kbGVkIGVycm9yJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9lY2IocmVzLmt3YXJncy5hbmFseXNpcyk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgcmVjb3JkZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVjb3JkZWQnLCByZWNvcmRlZENiKTtcbiAgICAgICAgcmVjb3JkZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZGF0YWF2YWlsYWJsZScsIGRhdGFhdmFpbGFibGVDYik7XG4gICAgICB9XG4gICAgICByZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdyZWNvcmRlZCcsIHJlY29yZGVkQ2IpO1xuICAgIH0pXG4gICAgICAudGhlbihyZXMgPT4ge1xuICAgICAgICBzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXMpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24uX3JlY29nbml0aW9uSWQgPSBudWxsO1xuICAgICAgICBDb25uZWN0aW9uLmxvZ1JQQ0Vycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGNob2ljZSByZWNvZ25pdGlvbiBpbiBhIGNob2ljZSBjaGFsbGVuZ2UgZnJvbSB0aGUgY3VycmVudCBhY3RpdmUge0BsaW5rIE9yZ2FuaXNhdGlvbn0gZGVyaXZlZCBmcm9tXG4gICAqIHRoZSBPQXV0aDIgc2NvcGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFsbGVuZ2VJZCAtIFNwZWNpZnkgYSBjaG9pY2UgY2hhbGxlbmdlIGlkZW50aWZpZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWNvZ25pdGlvbklkIC0gU3BlY2lmeSBhIGNob2ljZSByZWNvZ25pdGlvbiBpZGVudGlmaWVyLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZS48Q2hvaWNlUmVjb2duaXRpb24+fSBQcm9taXNlIGNvbnRhaW5pbmcgYSBDaG9pY2VSZWNvZ25pdGlvbi5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBjaGFsbGVuZ2VJZCBwYXJhbWV0ZXIgb2YgdHlwZSBcInN0cmluZ1wiIGlzIHJlcXVpcmVkLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IHJlY29nbml0aW9uSWQgcGFyYW1ldGVyIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiBubyByZXN1bHQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgZ2V0Q2hvaWNlUmVjb2duaXRpb24oY2hhbGxlbmdlSWQsIHJlY29nbml0aW9uSWQpIHtcbiAgICBpZiAodHlwZW9mIGNoYWxsZW5nZUlkICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignY2hhbGxlbmdlSWQgcGFyYW1ldGVyIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJlY29nbml0aW9uSWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdyZWNvZ25pdGlvbklkIHBhcmFtZXRlciBvZiB0eXBlIFwic3RyaW5nXCIgaXMgcmVxdWlyZWQnKSk7XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IHRoaXMuX2Nvbm5lY3Rpb24uX3NldHRpbmdzLmFwaVVybCArICcvY2hhbGxlbmdlcy9jaG9pY2UvJyArXG4gICAgICBjaGFsbGVuZ2VJZCArICcvcmVjb2duaXRpb25zLycgKyByZWNvZ25pdGlvbklkO1xuXG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb24uX3NlY3VyZUFqYXhHZXQodXJsKVxuICAgICAgLnRoZW4oZGF0dW0gPT4gbmV3IENob2ljZVJlY29nbml0aW9uKGNoYWxsZW5nZUlkLCBkYXR1bS51c2VySWQsXG4gICAgICAgICAgZGF0dW0uaWQsIG5ldyBEYXRlKGRhdHVtLmNyZWF0ZWQpLCBuZXcgRGF0ZShkYXR1bS51cGRhdGVkKSxcbiAgICAgICAgICBkYXR1bS5hdWRpb1VybCwgZGF0dW0ucmVjb2duaXNlZCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbmQgcmV0dXJuIGFsbCBjaG9pY2UgcmVjb2duaXRpb25zIGluIGEgc3BlY2lmaWMge0BsaW5rIENob2ljZUNoYWxsZW5nZX0gZnJvbSB0aGUgY3VycmVudCBhY3RpdmVcbiAgICoge0BsaW5rIE9yZ2FuaXNhdGlvbn0gZGVyaXZlZCBmcm9tIHRoZSBPQXV0aDIgc2NvcGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFsbGVuZ2VJZCAtIFNwZWNpZnkgYSBjaG9pY2UgY2hhbGxlbmdlIHRvIGxpc3Qgc3BlZWNoIHJlY29nbml0aW9ucyBmb3IuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlLjxDaG9pY2VSZWNvZ25pdGlvbltdPn0gUHJvbWlzZSBjb250YWluaW5nIGFuIGFycmF5IG9mIENob2ljZVJlY29nbml0aW9ucy5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBjaGFsbGVuZ2VJZCBwYXJhbWV0ZXIgb2YgdHlwZSBcInN0cmluZ1wiIGlzIHJlcXVpcmVkLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IElmIG5vIHJlc3VsdCBjb3VsZCBub3QgYmUgZm91bmQuXG4gICAqL1xuICBnZXRDaG9pY2VSZWNvZ25pdGlvbnMoY2hhbGxlbmdlSWQpIHtcbiAgICBpZiAodHlwZW9mIGNoYWxsZW5nZUlkICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignY2hhbGxlbmdlSWQgcGFyYW1ldGVyIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG4gICAgY29uc3QgdXJsID0gdGhpcy5fY29ubmVjdGlvbi5fc2V0dGluZ3MuYXBpVXJsICsgJy9jaGFsbGVuZ2VzL2Nob2ljZS8nICtcbiAgICAgIGNoYWxsZW5nZUlkICsgJy9yZWNvZ25pdGlvbnMnO1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLl9zZWN1cmVBamF4R2V0KHVybClcbiAgICAgIC50aGVuKGRhdGEgPT4gZGF0YS5tYXAoZGF0dW0gPT4ge1xuICAgICAgICBjb25zdCByZWNvZ25pdGlvbiA9IG5ldyBDaG9pY2VSZWNvZ25pdGlvbihjaGFsbGVuZ2VJZCwgZGF0dW0udXNlcklkLFxuICAgICAgICAgIGRhdHVtLmlkLCBuZXcgRGF0ZShkYXR1bS5jcmVhdGVkKSwgbmV3IERhdGUoZGF0dW0udXBkYXRlZCksXG4gICAgICAgICAgZGF0dW0uYXVkaW9VcmwsIGRhdHVtLnJlY29nbmlzZWQpO1xuICAgICAgICByZXR1cm4gcmVjb2duaXRpb247XG4gICAgICB9KSk7XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbmlzdHJhdGl2ZS1zZGsvY2hvaWNlLXJlY29nbml0aW9uL2Nob2ljZS1yZWNvZ25pdGlvbi1jb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbIkNob2ljZVJlY29nbml0aW9uQ29udHJvbGxlciIsImNvbm5lY3Rpb24iLCJfY29ubmVjdGlvbiIsImNob2ljZVJlY29nbml0aW9uSW5pdENoYWxsZW5nZSIsImNoYWxsZW5nZSIsImNhbGwiLCJfcmVjb2duaXRpb25JZCIsImlkIiwidGhlbiIsImNvbnNvbGUiLCJsb2ciLCJyZWNvZ25pdGlvbklkIiwiY2hvaWNlUmVjb2duaXRpb25Jbml0QXVkaW8iLCJyZWNvcmRlciIsImRhdGFhdmFpbGFibGVDYiIsInNwZWNzIiwiZ2V0QXVkaW9TcGVjcyIsImF1ZGlvRm9ybWF0IiwiYXVkaW9QYXJhbWV0ZXJzIiwiYWRkRXZlbnRMaXN0ZW5lciIsInN0YXJ0U3RyZWFtaW5nQ2hvaWNlUmVjb2duaXRpb24iLCJ0cmltIiwiUHJvbWlzZSIsInJlamVjdCIsIkVycm9yIiwiX3Nlc3Npb24iLCJpc1JlY29yZGluZyIsInNlbGYiLCJ0cmltQXVkaW9TdGFydCIsInRyaW1BdWRpb0VuZCIsInJlc29sdmUiLCJub3RpZnkiLCJfY2IiLCJkYXRhIiwicmVjb2duaXRpb24iLCJ1c2VySWQiLCJEYXRlIiwiY3JlYXRlZCIsInVwZGF0ZWQiLCJhZGRBY2Nlc3NUb2tlbiIsImF1ZGlvVXJsIiwicmVjb2duaXNlZCIsIl9lY2IiLCJtZXNzYWdlIiwiY2h1bmsiLCJlbmNvZGVkIiwiX2FycmF5QnVmZmVyVG9CYXNlNjQiLCJjYXRjaCIsImVycm9yIiwicmVzIiwicmVjb2duaXRpb25Jbml0Q2IiLCJ0cmltU3RhcnQiLCJ0cmltRW5kIiwicCIsImhhc1VzZXJNZWRpYUFwcHJvdmFsIiwicmVzb2x2ZV8iLCJyZWNvcmRlZENiIiwia3dhcmdzIiwiYW5hbHlzaXMiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibG9nUlBDRXJyb3IiLCJnZXRDaG9pY2VSZWNvZ25pdGlvbiIsImNoYWxsZW5nZUlkIiwidXJsIiwiX3NldHRpbmdzIiwiYXBpVXJsIiwiX3NlY3VyZUFqYXhHZXQiLCJkYXR1bSIsImdldENob2ljZVJlY29nbml0aW9ucyIsIm1hcCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7O0FBQ0E7Ozs7SUFJcUJBLDJCO0FBQ25COzs7QUFHQSx1Q0FBWUMsVUFBWixFQUF3QjtBQUFBOztBQUN0Qjs7OztBQUlBLFNBQUtDLFdBQUwsR0FBbUJELFVBQW5CO0FBQ0Q7O0FBRUQ7Ozs7Ozs7O3dDQU1BRSw4QiwyQ0FBK0JDLFMsRUFBVztBQUFBOztBQUN4QyxXQUFPLEtBQUtGLFdBQUwsQ0FBaUJHLElBQWpCLENBQXNCLHVCQUF0QixFQUNMLENBQUMsS0FBS0gsV0FBTCxDQUFpQkksY0FBbEIsRUFBa0NGLFVBQVVHLEVBQTVDLENBREssRUFFSkMsSUFGSTtBQUdIO0FBQ0EsNkJBQWlCO0FBQ2ZDLGNBQVFDLEdBQVIsQ0FBWSw4Q0FBOEMsTUFBS1IsV0FBTCxDQUFpQkksY0FBM0U7QUFDQSxhQUFPSyxhQUFQO0FBQ0QsS0FQRSxDQUFQO0FBUUQsRzs7QUFFRDs7Ozs7Ozs7O3dDQU9BQywwQix1Q0FBMkJDLFEsRUFBVUMsZSxFQUFpQjtBQUFBOztBQUNwRDtBQUNBO0FBQ0E7QUFDQSxRQUFNQyxRQUFRRixTQUFTRyxhQUFULEVBQWQ7QUFDQSxXQUFPLEtBQUtkLFdBQUwsQ0FBaUJHLElBQWpCLENBQXNCLG1CQUF0QixFQUNMLENBQUMsS0FBS0gsV0FBTCxDQUFpQkksY0FBbEIsRUFBa0NTLE1BQU1FLFdBQXhDLENBREssRUFDaURGLE1BQU1HLGVBRHZELEVBQ3dFVixJQUR4RTtBQUVMO0FBQ0EsNkJBQWlCO0FBQ2ZDLGNBQVFDLEdBQVIsQ0FBWSxtRUFBbUUsT0FBS1IsV0FBTCxDQUFpQkksY0FBaEc7QUFDQTtBQUNBTyxlQUFTTSxnQkFBVCxDQUEwQixlQUExQixF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QURVLEdBQ0ksZUFEaEI7QUFFQSxXQUFPLEtBQUs1RCxXQUFMLENBQWlCZ0UsY0FBakIsQ0FBZ0NILEdBQWhDLEVBQ0p2RCxJQURJLENBQ0M7QUFBQSxhQUFReUIsS0FBS29DLEdBQUwsQ0FBUyxpQkFBUztBQUM5QixZQUFNbkMsY0FBYyxnQ0FBc0I0QixXQUF0QixFQUFtQ0ssTUFBTWhDLE1BQXpDLEVBQ2xCZ0MsTUFBTTVELEVBRFksRUFDUixJQUFJNkIsSUFBSixDQUFTK0IsTUFBTTlCLE9BQWYsQ0FEUSxFQUNpQixJQUFJRCxJQUFKLENBQVMrQixNQUFNN0IsT0FBZixDQURqQixFQUVsQjZCLE1BQU0zQixRQUZZLEVBRUYyQixNQUFNMUIsVUFGSixDQUFwQjtBQUdBLGVBQU9QLFdBQVA7QUFDRCxPQUxhLENBQVI7QUFBQSxLQURELENBQVA7QUFPRCxHOzs7OztrQkEzUGtCbEMsMkIiLCJmaWxlIjoiY2hvaWNlLXJlY29nbml0aW9uLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZTY0VXRpbHMgZnJvbSAnLi4vdXRpbHMvYmFzZTY0LXV0aWxzJztcbmltcG9ydCBDaG9pY2VDaGFsbGVuZ2UgZnJvbSAnLi4vY2hvaWNlLWNoYWxsZW5nZS9jaG9pY2UtY2hhbGxlbmdlJztcbmltcG9ydCBDaG9pY2VSZWNvZ25pdGlvbiBmcm9tICcuL2Nob2ljZS1yZWNvZ25pdGlvbic7XG5pbXBvcnQgQ29ubmVjdGlvbiBmcm9tICcuLi9jb25uZWN0aW9uL2Nvbm5lY3Rpb24tY29udHJvbGxlcic7XG5pbXBvcnQgd2hlbiBmcm9tICd3aGVuJztcbi8qKlxuICogQ29udHJvbGxlciBjbGFzcyBmb3IgdGhlIENob2ljZVJlY29nbml0aW9uIG1vZGVsLlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hvaWNlUmVjb2duaXRpb25Db250cm9sbGVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Q29ubmVjdGlvbn0gY29ubmVjdGlvbiAtIE9iamVjdCB0byB1c2UgZm9yIG1ha2luZyBhIGNvbm5lY3Rpb24gdG8gdGhlIFJFU1QgQVBJIGFuZCBXZWJzb2NrZXQgc2VydmVyLlxuICAgKi9cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvbikge1xuICAgIC8qKlxuICAgICAqIE9iamVjdCB0byB1c2UgZm9yIG1ha2luZyBhIGNvbm5lY3Rpb24gdG8gdGhlIFJFU1QgQVBJIGFuZCBXZWJzb2NrZXQgc2VydmVyLlxuICAgICAqIEB0eXBlIHtDb25uZWN0aW9ufVxuICAgICAqL1xuICAgIHRoaXMuX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpc2UgdGhlIGNob2ljZSByZWNvZ25pdGlvbiBjaGFsbGVuZ2UgdGhyb3VnaCBSUENzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Nob2ljZUNoYWxsZW5nZX0gY2hhbGxlbmdlIC0gQ2hvaWNlQ2hhbGxlbmdlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2hvaWNlUmVjb2duaXRpb25Jbml0Q2hhbGxlbmdlKGNoYWxsZW5nZSkge1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLmNhbGwoJ2Nob2ljZS5pbml0X2NoYWxsZW5nZScsXG4gICAgICBbdGhpcy5fY29ubmVjdGlvbi5fcmVjb2duaXRpb25JZCwgY2hhbGxlbmdlLmlkXSlcbiAgICAgIC50aGVuKFxuICAgICAgICAvLyBSUEMgc3VjY2VzcyBjYWxsYmFja1xuICAgICAgICByZWNvZ25pdGlvbklkID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnQ2hhbGxlbmdlIGluaXRpYWxpc2VkIGZvciByZWNvZ25pdGlvbklkOiAnICsgdGhpcy5fY29ubmVjdGlvbi5fcmVjb2duaXRpb25JZCk7XG4gICAgICAgICAgcmV0dXJuIHJlY29nbml0aW9uSWQ7XG4gICAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpc2UgdGhlIHByb251bmNpYXRpb24gYW5hbHlzaXMgYXVkaW8gc3BlY3MgdGhyb3VnaCBSUENzLlxuICAgKlxuICAgKiBAcGFyYW0ge0F1ZGlvUmVjb3JkZXJ9IHJlY29yZGVyIC0gQXVkaW9SZWNvcmRlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZGF0YWF2YWlsYWJsZUNiIC0gQ2FsbGJhY2suXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjaG9pY2VSZWNvZ25pdGlvbkluaXRBdWRpbyhyZWNvcmRlciwgZGF0YWF2YWlsYWJsZUNiKSB7XG4gICAgLy8gSW5kaWNhdGUgdG8gdGhlIHNvY2tldCBzZXJ2ZXIgdGhhdCB3ZSdyZSBhYm91dCB0byBzdGFydCByZWNvcmRpbmcgYVxuICAgIC8vIGNoYWxsZW5nZS4gVGhpcyBhbGxvd3MgdGhlIHNvY2tldCBzZXJ2ZXIgc29tZSB0aW1lIHRvIGZldGNoIHRoZSBtZXRhZGF0YVxuICAgIC8vIGFuZCByZWZlcmVuY2UgYXVkaW8gdG8gc3RhcnQgdGhlIGFuYWx5c2lzIHdoZW4gYXVkaW8gaXMgYWN0dWFsbHkgc3VibWl0dGVkLlxuICAgIGNvbnN0IHNwZWNzID0gcmVjb3JkZXIuZ2V0QXVkaW9TcGVjcygpO1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLmNhbGwoJ2Nob2ljZS5pbml0X2F1ZGlvJyxcbiAgICAgIFt0aGlzLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkLCBzcGVjcy5hdWRpb0Zvcm1hdF0sIHNwZWNzLmF1ZGlvUGFyYW1ldGVycykudGhlbihcbiAgICAgIC8vIFJQQyBzdWNjZXNzIGNhbGxiYWNrXG4gICAgICByZWNvZ25pdGlvbklkID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0FjY2VwdGVkIGF1ZGlvIHBhcmFtZXRlcnMgZm9yIHJlY29nbml0aW9uSWQgYWZ0ZXIgaW5pdF9hdWRpbzogJyArIHRoaXMuX2Nvbm5lY3Rpb24uX3JlY29nbml0aW9uSWQpO1xuICAgICAgICAvLyBTdGFydCBsaXN0ZW5pbmcgZm9yIHN0cmVhbWluZyBkYXRhLlxuICAgICAgICByZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdkYXRhYXZhaWxhYmxlJywgZGF0YWF2YWlsYWJsZUNiKTtcbiAgICAgICAgcmV0dXJuIHJlY29nbml0aW9uSWQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBhIGNob2ljZSByZWNvZ25pdGlvbiBmcm9tIHN0cmVhbWluZyBhdWRpby5cbiAgICpcbiAgICogQHBhcmFtIHtDaG9pY2VDaGFsbGVuZ2V9IGNoYWxsZW5nZSAtIFRoZSBjaG9pY2UgY2hhbGxlbmdlIHRvIHBlcmZvcm0uXG4gICAqIEBwYXJhbSB7QXVkaW9SZWNvcmRlcn0gcmVjb3JkZXIgLSBUaGUgYXVkaW8gcmVjb3JkZXIgdG8gZXh0cmFjdCBhdWRpbyBmcm9tLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFt0cmltPXRydWVdIC0gV2hldGhlciB0byB0cmltIHRoZSBzdGFydCBhbmQgZW5kIG9mIHJlY29yZGVkIGF1ZGlvLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZS48Q2hvaWNlUmVjb2duaXRpb24+fSBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vY3Vqb2pzL3doZW59IFByb21pc2UgY29udGFpbmluZyBhIHtAbGluayBDaG9pY2VSZWNvZ25pdGlvbn0uXG4gICAqIEBlbWl0cyB7c3RyaW5nfSAnUmVhZHlUb1JlY2VpdmUnIHdoZW4gdGhlIGNhbGwgaXMgbWFkZSB0byByZWNlaXZlIGF1ZGlvLiBUaGUgcmVjb3JkZXIgY2FuIG5vdyBzZW5kIGF1ZGlvLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IGNoYWxsZW5nZSBwYXJhbWV0ZXIgb2YgdHlwZSBcIkNob2ljZUNoYWxsZW5nZVwiIGlzIHJlcXVpcmVkLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IGNoYWxsZW5nZS5pZCBmaWVsZCBvZiB0eXBlIFwic3RyaW5nXCIgaXMgcmVxdWlyZWQuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgdGhlIGNvbm5lY3Rpb24gaXMgbm90IG9wZW4uXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgdGhlIHJlY29yZGVyIGlzIGFscmVhZHkgcmVjb3JkaW5nLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IElmIGEgcmVjb2duaXRpb24gc2Vzc2lvbiBpcyBhbHJlYWR5IGluIHByb2dyZXNzLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IElmIHNvbWV0aGluZyB3ZW50IHdyb25nIGR1cmluZyBhbmFseXNpcy5cbiAgICovXG4gIHN0YXJ0U3RyZWFtaW5nQ2hvaWNlUmVjb2duaXRpb24oY2hhbGxlbmdlLCByZWNvcmRlciwgdHJpbSkge1xuICAgIGlmICghKGNoYWxsZW5nZSBpbnN0YW5jZW9mIENob2ljZUNoYWxsZW5nZSkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2NoYWxsZW5nZSBwYXJhbWV0ZXIgb2YgdHlwZSBcIkNob2ljZUNoYWxsZW5nZVwiIGlzIHJlcXVpcmVkJykpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2hhbGxlbmdlLmlkICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignY2hhbGxlbmdlLmlkIGZpZWxkIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBlbnZpcm9ubWVudCBwcmVyZXF1aXNpdGVzLlxuICAgIGlmICghdGhpcy5fY29ubmVjdGlvbi5fc2Vzc2lvbikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignV2ViU29ja2V0IGNvbm5lY3Rpb24gd2FzIG5vdCBvcGVuLicpKTtcbiAgICB9XG5cbiAgICBpZiAocmVjb3JkZXIuaXNSZWNvcmRpbmcoKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignUmVjb3JkZXIgc2hvdWxkIG5vdCB5ZXQgYmUgcmVjb3JkaW5nLicpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29ubmVjdGlvbi5fcmVjb2duaXRpb25JZCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignU2Vzc2lvbiB3aXRoIHJlY29nbml0aW9uSWQgJyArIHRoaXMuX2Nvbm5lY3Rpb24uX3JlY29nbml0aW9uSWQgK1xuICAgICAgICAnIHN0aWxsIGluIHByb2dyZXNzLicpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBsZXQgdHJpbUF1ZGlvU3RhcnQgPSAwLjE1O1xuICAgIGNvbnN0IHRyaW1BdWRpb0VuZCA9IDAuMDtcbiAgICBpZiAodHJpbSA9PT0gZmFsc2UpIHtcbiAgICAgIHRyaW1BdWRpb1N0YXJ0ID0gMC4wO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHdoZW4uUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0LCBub3RpZnkpID0+IHtcbiAgICAgIGZ1bmN0aW9uIF9jYihkYXRhKSB7XG4gICAgICAgIGNvbnN0IHJlY29nbml0aW9uID0gbmV3IENob2ljZVJlY29nbml0aW9uKFxuICAgICAgICAgIGNoYWxsZW5nZS5pZCwgZGF0YS51c2VySWQsIGRhdGEuaWQsXG4gICAgICAgICAgbmV3IERhdGUoZGF0YS5jcmVhdGVkKSwgbmV3IERhdGUoZGF0YS51cGRhdGVkKSxcbiAgICAgICAgICBzZWxmLl9jb25uZWN0aW9uLmFkZEFjY2Vzc1Rva2VuKGRhdGEuYXVkaW9VcmwpLCBkYXRhLnJlY29nbmlzZWQpO1xuICAgICAgICByZXNvbHZlKHtyZWNvZ25pdGlvbklkOiBzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkLCByZWNvZ25pdGlvbn0pO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBfZWNiKGRhdGEpIHtcbiAgICAgICAgLy8gVGhlcmUgd2FzIGFuIHVuZXhwZWN0ZWQgZXJyb3IuXG4gICAgICAgIGNvbnN0IHJlY29nbml0aW9uID0gbmV3IENob2ljZVJlY29nbml0aW9uKFxuICAgICAgICAgIGNoYWxsZW5nZS5pZCwgZGF0YS51c2VySWQsIGRhdGEuaWQsXG4gICAgICAgICAgbmV3IERhdGUoZGF0YS5jcmVhdGVkKSwgbmV3IERhdGUoZGF0YS51cGRhdGVkKSxcbiAgICAgICAgICBzZWxmLl9jb25uZWN0aW9uLmFkZEFjY2Vzc1Rva2VuKGRhdGEuYXVkaW9VcmwpLCBudWxsKTtcbiAgICAgICAgcmVqZWN0KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlY29nbml0aW9uLFxuICAgICAgICAgICAgbWVzc2FnZTogZGF0YS5tZXNzYWdlXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkID0gbnVsbDtcblxuICAgICAgLy8gU3RhcnQgc3RyZWFtaW5nIHRoZSBiaW5hcnkgYXVkaW8gd2hlbiB0aGUgdXNlciBpbnN0cnVjdHNcbiAgICAgIC8vIHRoZSBhdWRpbyByZWNvcmRlciB0byBzdGFydCByZWNvcmRpbmcuXG4gICAgICBmdW5jdGlvbiBkYXRhYXZhaWxhYmxlQ2IoY2h1bmspIHtcbiAgICAgICAgY29uc3QgZW5jb2RlZCA9IEJhc2U2NFV0aWxzLl9hcnJheUJ1ZmZlclRvQmFzZTY0KGNodW5rKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1NlbmRpbmcgYXVkaW8gY2h1bmsgdG8gd2Vic29ja2V0IGZvciByZWNvZ25pdGlvbklkOiAnICtcbiAgICAgICAgICBzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkKTtcbiAgICAgICAgc2VsZi5fY29ubmVjdGlvbi5jYWxsKCdjaG9pY2Uud3JpdGUnLFxuICAgICAgICAgIFtzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkLCBlbmNvZGVkLCAnYmFzZTY0J10pXG4gICAgICAgICAgLmNhdGNoKHJlcyA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdSUEMgZXJyb3IgcmV0dXJuZWQ6JywgcmVzLmVycm9yKTtcbiAgICAgICAgICAgIF9lY2IocmVzKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcmVjb2duaXRpb25Jbml0Q2IocmVjb2duaXRpb25JZCkge1xuICAgICAgICBzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkID0gcmVjb2duaXRpb25JZDtcbiAgICAgICAgY29uc29sZS5sb2coJ0dvdCByZWNvZ25pdGlvbklkIGFmdGVyIGluaXRpYWxpc2F0aW9uOiAnICsgc2VsZi5fY29ubmVjdGlvbi5fcmVjb2duaXRpb25JZCk7XG4gICAgICB9XG4gICAgICBzZWxmLl9jb25uZWN0aW9uLmNhbGwoJ2Nob2ljZS5pbml0X3JlY29nbml0aW9uJywgW10sXG4gICAgICAgIHtcbiAgICAgICAgICB0cmltU3RhcnQ6IHRyaW1BdWRpb1N0YXJ0LFxuICAgICAgICAgIHRyaW1FbmQ6IHRyaW1BdWRpb0VuZFxuICAgICAgICB9KVxuICAgICAgICAudGhlbihyZWNvZ25pdGlvbkluaXRDYilcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICBzZWxmLmNob2ljZVJlY29nbml0aW9uSW5pdENoYWxsZW5nZShjaGFsbGVuZ2UpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHAgPSBuZXcgUHJvbWlzZShyZXNvbHZlXyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZGVyLmhhc1VzZXJNZWRpYUFwcHJvdmFsKCkpIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmVfKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3JlYWR5JywgcmVzb2x2ZV8pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2VsZi5jaG9pY2VSZWNvZ25pdGlvbkluaXRBdWRpbyhyZWNvcmRlciwgZGF0YWF2YWlsYWJsZUNiKVxuICAgICAgICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IG5vdGlmeSgnUmVhZHlUb1JlY2VpdmUnKSlcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gocmVqZWN0KTtcblxuICAgICAgLy8gU3RvcCBsaXN0ZW5pbmcgd2hlbiB0aGUgYXVkaW8gcmVjb3JkZXIgc3RvcHBlZC5cbiAgICAgIGZ1bmN0aW9uIHJlY29yZGVkQ2IoKSB7XG4gICAgICAgIC8vIFdoZW4gZG9uZSwgc3VibWl0IGFueSBwbGFpbiB0ZXh0IChub24tSlNPTikgdG8gc3RhcnQgYW5hbHlzaW5nLlxuICAgICAgICBzZWxmLl9jb25uZWN0aW9uLmNhbGwoJ2Nob2ljZS5yZWNvZ25pc2UnLFxuICAgICAgICAgIFtzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkXSkudGhlbihcbiAgICAgICAgICAvLyBSUEMgc3VjY2VzcyBjYWxsYmFja1xuICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAvLyBXYWl0IGZvciBhbmFseXNpcyByZXN1bHRzIHRvIGNvbWUgYmFjay5cbiAgICAgICAgICAgIF9jYihyZXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gUlBDIGVycm9yIGNhbGxiYWNrXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1JQQyBlcnJvciByZXR1cm5lZDonLCByZXMuZXJyb3IpO1xuICAgICAgICAgICAgaWYgKHJlcy5lcnJvciA9PT0gJ25sLml0c2xhbmd1YWdlLnJlY29nbml0aW9uX2ZhaWxlZCcpIHtcbiAgICAgICAgICAgICAgcmVzLmt3YXJncy5yZWNvZ25pdGlvbi5tZXNzYWdlID0gJ1JlY29nbml0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXMua3dhcmdzLnJlY29nbml0aW9uLm1lc3NhZ2UgPSAnVW5oYW5kbGVkIGVycm9yJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9lY2IocmVzLmt3YXJncy5hbmFseXNpcyk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgcmVjb3JkZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVjb3JkZWQnLCByZWNvcmRlZENiKTtcbiAgICAgICAgcmVjb3JkZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZGF0YWF2YWlsYWJsZScsIGRhdGFhdmFpbGFibGVDYik7XG4gICAgICB9XG4gICAgICByZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdyZWNvcmRlZCcsIHJlY29yZGVkQ2IpO1xuICAgIH0pXG4gICAgICAudGhlbihyZXMgPT4ge1xuICAgICAgICBzZWxmLl9jb25uZWN0aW9uLl9yZWNvZ25pdGlvbklkID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXMpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24uX3JlY29nbml0aW9uSWQgPSBudWxsO1xuICAgICAgICBDb25uZWN0aW9uLmxvZ1JQQ0Vycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGNob2ljZSByZWNvZ25pdGlvbiBpbiBhIGNob2ljZSBjaGFsbGVuZ2UgZnJvbSB0aGUgY3VycmVudCBhY3RpdmUge0BsaW5rIE9yZ2FuaXNhdGlvbn0gZGVyaXZlZCBmcm9tXG4gICAqIHRoZSBPQXV0aDIgc2NvcGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFsbGVuZ2VJZCAtIFNwZWNpZnkgYSBjaG9pY2UgY2hhbGxlbmdlIGlkZW50aWZpZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWNvZ25pdGlvbklkIC0gU3BlY2lmeSBhIGNob2ljZSByZWNvZ25pdGlvbiBpZGVudGlmaWVyLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZS48Q2hvaWNlUmVjb2duaXRpb24+fSBQcm9taXNlIGNvbnRhaW5pbmcgYSBDaG9pY2VSZWNvZ25pdGlvbi5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBjaGFsbGVuZ2VJZCBwYXJhbWV0ZXIgb2YgdHlwZSBcInN0cmluZ1wiIGlzIHJlcXVpcmVkLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IHJlY29nbml0aW9uSWQgcGFyYW1ldGVyIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiBubyByZXN1bHQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgZ2V0Q2hvaWNlUmVjb2duaXRpb24oY2hhbGxlbmdlSWQsIHJlY29nbml0aW9uSWQpIHtcbiAgICBpZiAodHlwZW9mIGNoYWxsZW5nZUlkICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignY2hhbGxlbmdlSWQgcGFyYW1ldGVyIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJlY29nbml0aW9uSWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdyZWNvZ25pdGlvbklkIHBhcmFtZXRlciBvZiB0eXBlIFwic3RyaW5nXCIgaXMgcmVxdWlyZWQnKSk7XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IHRoaXMuX2Nvbm5lY3Rpb24uX3NldHRpbmdzLmFwaVVybCArICcvY2hhbGxlbmdlcy9jaG9pY2UvJyArXG4gICAgICBjaGFsbGVuZ2VJZCArICcvcmVjb2duaXRpb25zLycgKyByZWNvZ25pdGlvbklkO1xuXG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb24uX3NlY3VyZUFqYXhHZXQodXJsKVxuICAgICAgLnRoZW4oZGF0dW0gPT4gbmV3IENob2ljZVJlY29nbml0aW9uKGNoYWxsZW5nZUlkLCBkYXR1bS51c2VySWQsXG4gICAgICAgIGRhdHVtLmlkLCBuZXcgRGF0ZShkYXR1bS5jcmVhdGVkKSwgbmV3IERhdGUoZGF0dW0udXBkYXRlZCksXG4gICAgICAgIGRhdHVtLmF1ZGlvVXJsLCBkYXR1bS5yZWNvZ25pc2VkKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuZCByZXR1cm4gYWxsIGNob2ljZSByZWNvZ25pdGlvbnMgaW4gYSBzcGVjaWZpYyB7QGxpbmsgQ2hvaWNlQ2hhbGxlbmdlfSBmcm9tIHRoZSBjdXJyZW50IGFjdGl2ZVxuICAgKiB7QGxpbmsgT3JnYW5pc2F0aW9ufSBkZXJpdmVkIGZyb20gdGhlIE9BdXRoMiBzY29wZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYWxsZW5nZUlkIC0gU3BlY2lmeSBhIGNob2ljZSBjaGFsbGVuZ2UgdG8gbGlzdCBzcGVlY2ggcmVjb2duaXRpb25zIGZvci5cbiAgICogQHJldHVybnMge1Byb21pc2UuPENob2ljZVJlY29nbml0aW9uW10+fSBQcm9taXNlIGNvbnRhaW5pbmcgYW4gYXJyYXkgb2YgQ2hvaWNlUmVjb2duaXRpb25zLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IGNoYWxsZW5nZUlkIHBhcmFtZXRlciBvZiB0eXBlIFwic3RyaW5nXCIgaXMgcmVxdWlyZWQuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgbm8gcmVzdWx0IGNvdWxkIG5vdCBiZSBmb3VuZC5cbiAgICovXG4gIGdldENob2ljZVJlY29nbml0aW9ucyhjaGFsbGVuZ2VJZCkge1xuICAgIGlmICh0eXBlb2YgY2hhbGxlbmdlSWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdjaGFsbGVuZ2VJZCBwYXJhbWV0ZXIgb2YgdHlwZSBcInN0cmluZ1wiIGlzIHJlcXVpcmVkJykpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSB0aGlzLl9jb25uZWN0aW9uLl9zZXR0aW5ncy5hcGlVcmwgKyAnL2NoYWxsZW5nZXMvY2hvaWNlLycgK1xuICAgICAgY2hhbGxlbmdlSWQgKyAnL3JlY29nbml0aW9ucyc7XG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb24uX3NlY3VyZUFqYXhHZXQodXJsKVxuICAgICAgLnRoZW4oZGF0YSA9PiBkYXRhLm1hcChkYXR1bSA9PiB7XG4gICAgICAgIGNvbnN0IHJlY29nbml0aW9uID0gbmV3IENob2ljZVJlY29nbml0aW9uKGNoYWxsZW5nZUlkLCBkYXR1bS51c2VySWQsXG4gICAgICAgICAgZGF0dW0uaWQsIG5ldyBEYXRlKGRhdHVtLmNyZWF0ZWQpLCBuZXcgRGF0ZShkYXR1bS51cGRhdGVkKSxcbiAgICAgICAgICBkYXR1bS5hdWRpb1VybCwgZGF0dW0ucmVjb2duaXNlZCk7XG4gICAgICAgIHJldHVybiByZWNvZ25pdGlvbjtcbiAgICAgIH0pKTtcbiAgfVxufVxuIl19 |
@@ -25,3 +25,2 @@ 'use strict'; | ||
var Connection = function () { | ||
/** | ||
@@ -351,2 +350,2 @@ * | ||
exports.default = Connection; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbmlzdHJhdGl2ZS1zZGsvY29ubmVjdGlvbi9jb25uZWN0aW9uLWNvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiQ29ubmVjdGlvbiIsIm9wdGlvbnMiLCJfc2V0dGluZ3MiLCJPYmplY3QiLCJhc3NpZ24iLCJhcGlVcmwiLCJvQXV0aDJUb2tlbiIsIndzVXJsIiwid3NUb2tlbiIsIl9zZGtDb21wYXRpYmlsaXR5IiwiX2FuYWx5c2lzSWQiLCJfcmVjb3JkaW5nSWQiLCJfcmVjb2duaXRpb25JZCIsIl9lbWl0dGVyIiwiX2Nvbm5lY3Rpb24iLCJhdXRob3JpemF0aW9uVG9rZW4iLCJhZGRFdmVudExpc3RlbmVyIiwibmFtZSIsImhhbmRsZXIiLCJvbiIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvZmYiLCJmaXJlRXZlbnQiLCJhcmdzIiwiZW1pdCIsIndlYlNvY2tldENvbm5lY3QiLCJzZWxmIiwib25PQXV0aDJDaGFsbGVuZ2UiLCJzZXNzaW9uIiwibWV0aG9kIiwiRXJyb3IiLCJhdXRoVXJsIiwiY29ubmVjdGlvbiIsInVybCIsInJlYWxtIiwiYXV0aG1ldGhvZHMiLCJhdXRoaWQiLCJkZXRhaWxzIiwidGlja2V0Iiwib25jaGFsbGVuZ2UiLCJlIiwiY29uc29sZSIsImxvZyIsIm9uZXJyb3IiLCJvbm9wZW4iLCJfc2Vzc2lvbiIsIm9uY2xvc2UiLCJvcGVuIiwiY2FsbCIsInJwYyIsImRlYnVnIiwid2ViU29ja2V0RGlzY29ubmVjdCIsImNsb3NlIiwiX3NlY3VyZUFqYXhHZXQiLCJfc2VjdXJlQWpheFBvc3QiLCJmb3JtZGF0YSIsIl9zZWN1cmVBamF4RGVsZXRlIiwiYWRkQWNjZXNzVG9rZW4iLCJzZWN1cmVVcmwiLCJtYXRjaCIsImVuY29kZVVSSUNvbXBvbmVudCIsIndpbmRvdyIsImNhbmNlbFN0cmVhbWluZyIsInJlY29yZGVyIiwiaW5mbyIsInJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzIiwiaXNSZWNvcmRpbmciLCJzdG9wIiwibG9nUlBDRXJyb3IiLCJyZXN1bHQiLCJlcnJvciIsImdldE9hdXRoMlRva2VuIiwiYmFzaWNBdXRoIiwic2NvcGUiLCJib2R5IiwiVVJMU2VhcmNoUGFyYW1zIiwiYXBwZW5kIiwicHJpbmNpcGFsIiwiY3JlZGVudGlhbHMiLCJ0aGVuIiwicmVzcG9uc2UiLCJhY2Nlc3NfdG9rZW4iLCJnZXRVc2VyQXV0aCIsIm9yZ2FuaXNhdGlvbklkIiwic2NvcGVzIiwidGVuYW50SWQiXSwibWFwcGluZ3MiOiI7Ozs7QUFJQTs7QUFFQTs7OztBQUNBOzs7Ozs7MEpBUEE7Ozs7QUFRQTs7O0lBR3FCQSxVOztBQUVuQjs7Ozs7Ozs7OztBQVVBLHdCQUEwQjtBQUFBLFFBQWRDLE9BQWMsdUVBQUosRUFBSTs7QUFBQTs7QUFDeEI7OztBQUdBLFNBQUtDLFNBQUwsR0FBaUJDLE9BQU9DLE1BQVAsQ0FBYztBQUM3QjtBQUNBQyxjQUFRLDRCQUZxQjtBQUc3QkMsbUJBQWEsSUFIZ0I7QUFJN0JDLGFBQU8sSUFKc0I7QUFLN0JDLGVBQVM7QUFMb0IsS0FBZCxFQU1kUCxPQU5jLENBQWpCO0FBT0FELGVBQVdTLGlCQUFYO0FBQ0EsU0FBS0MsV0FBTCxHQUFtQixJQUFuQjtBQUNBLFNBQUtDLFlBQUwsR0FBb0IsSUFBcEI7QUFDQSxTQUFLQyxjQUFMLEdBQXNCLElBQXRCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQiw0QkFBRyxFQUFILENBQWhCO0FBQ0EsU0FBS0MsV0FBTCxHQUFtQixJQUFuQjs7QUFFQTtBQUNBLHVDQUFlWCxPQUFPQyxNQUFQLENBQWMsRUFBZCxFQUFrQkgsT0FBbEIsRUFBMkIsRUFBQ2Msb0JBQW9CZCxRQUFRSyxXQUE3QixFQUEzQixDQUFmO0FBQ0Q7O0FBRUQ7Ozs7Ozs7O3VCQU1BVSxnQiw2QkFBaUJDLEksRUFBTUMsTyxFQUFTO0FBQzlCLFNBQUtMLFFBQUwsQ0FBY00sRUFBZCxDQUFpQkYsSUFBakIsRUFBdUJDLE9BQXZCO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7dUJBTUFFLG1CLGdDQUFvQkgs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QUFRO0FBQ3pCNUIsWUFBUTZCLEtBQVIsQ0FBYyxxQkFBZCxFQUFxQ0QsT0FBT0MsS0FBNUM7QUFDRCxHOztBQUVEOzs7Ozs7Ozs7O3VCQVFBQyxjLDJCQUFlQyxTLEVBQVdDLEssRUFBTztBQUFBOztBQUMvQixRQUFNQyxPQUFPLElBQUlDLGVBQUosRUFBYjtBQUNBRCxTQUFLRSxNQUFMLENBQVksWUFBWixFQUEwQixVQUExQjtBQUNBRixTQUFLRSxNQUFMLENBQVksVUFBWixFQUF3QkosVUFBVUssU0FBbEM7QUFDQUgsU0FBS0UsTUFBTCxDQUFZLFVBQVosRUFBd0JKLFVBQVVNLFdBQWxDOztBQUVBLFFBQUlMLEtBQUosRUFBVztBQUNUQyxXQUFLRSxNQUFMLENBQVksT0FBWixFQUFxQkgsS0FBckI7QUFDRDs7QUFFRCxXQUFPLDRCQUFRLE1BQVIsRUFBZ0IsU0FBaEIsRUFBMkJDLElBQTNCLEVBQWlDSyxJQUFqQyxDQUFzQyxvQkFBWTtBQUN2RCxZQUFLN0UsU0FBTCxDQUFlSSxXQUFmLEdBQTZCMEUsU0FBU0MsWUFBdEM7QUFDQSx5Q0FBZSxFQUFDbEUsb0JBQW9CaUUsU0FBU0MsWUFBOUIsRUFBZjtBQUNELEtBSE0sQ0FBUDtBQUlELEc7O0FBRUQ7Ozs7Ozs7Ozs7dUJBUUFDLFcsd0JBQVlWLFMsRUFBV1csYyxFQUFnQjtBQUNyQyxRQUFJQyxTQUFTLFlBQVlaLFVBQVVhLFFBQW5DO0FBQ0EsUUFBSUYsY0FBSixFQUFvQjtBQUNsQkMsZ0JBQVUsbUJBQW1CRCxjQUE3QjtBQUNBLFVBQUlYLFVBQVVLLFNBQWQsRUFBeUI7QUFDdkJPLGtCQUFVLFdBQVdaLFVBQVVLLFNBQS9CO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPLEtBQUtOLGNBQUwsQ0FBb0JDLFNBQXBCLEVBQStCWSxNQUEvQixDQUFQO0FBQ0QsRzs7Ozs7a0JBcFJrQnBGLFUiLCJmaWxlIjoiY29ubmVjdGlvbi1jb250cm9sbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGVcbmNhbWVsY2FzZVxuICovXG5cbmltcG9ydCB7YXV0aG9yaXNlZFJlcXVlc3QsIHJlcXVlc3QsIHVwZGF0ZVNldHRpbmdzfSBmcm9tICcuLi8uLi9hcGkvY29tbXVuaWNhdGlvbic7XG5cbmltcG9ydCBhdXRvYmFobiBmcm9tICdhdXRvYmFobic7XG5pbXBvcnQgZWUgZnJvbSAnZXZlbnQtZW1pdHRlcic7XG4vKipcbiAqIENvbnRyb2xsZXIgY2xhc3MgZm9yIG1hbmFnaW5nIGNvbm5lY3Rpb24gaW50ZXJhY3Rpb24uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbm5lY3Rpb24ge1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBjb25uZWN0aW9uIHdpdGguXG4gICAqIFZhbGlkIG9wdGlvbnMgaW5jbHVkZTpcbiAgICogKiBhcGlVcmwgLSBUaGUgVVJMIG9mIHRoZSBSRVNUIGFwaS5cbiAgICogKiB3c1VybCAtIFRoZSBVUkwgb2YgdGhlIFdlYnNvY2tldCBzZXJ2ZXIuXG4gICAqICogb0F1dGgyVG9rZW4gLSBBbiBPQXV0aDIgdG9rZW4gc3RyaW5nLlxuICAgKiAqIGFkbWluUHJpbmNpcGFsIC0gVGhlIHVzZXJuYW1lIG9mIHRoZSBhZG1pbiBhY2NvdW50LlxuICAgKiAqIGFkbWluUGFzc3dvcmQgLSBUaGUgcGFzc3dvcmQgb2YgdGhlIGFkbWluIGFjY291bnQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqL1xuICAgIHRoaXMuX3NldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAvLyBJVFNMIGNvbm5lY3Rpb24gcGFyYW1ldGVycy5cbiAgICAgIGFwaVVybDogJ2h0dHBzOi8vYXBpLml0c2xhbmd1YWdlLm5sJyxcbiAgICAgIG9BdXRoMlRva2VuOiBudWxsLFxuICAgICAgd3NVcmw6IG51bGwsXG4gICAgICB3c1Rva2VuOiBudWxsXG4gICAgfSwgb3B0aW9ucyk7XG4gICAgQ29ubmVjdGlvbi5fc2RrQ29tcGF0aWJpbGl0eSgpO1xuICAgIHRoaXMuX2FuYWx5c2lzSWQgPSBudWxsO1xuICAgIHRoaXMuX3JlY29yZGluZ0lkID0gbnVsbDtcbiAgICB0aGlzLl9yZWNvZ25pdGlvbklkID0gbnVsbDtcbiAgICB0aGlzLl9lbWl0dGVyID0gZWUoe30pO1xuICAgIHRoaXMuX2Nvbm5lY3Rpb24gPSBudWxsO1xuXG4gICAgLy8gVXNlIHRoZSBuZXcgY29ubmVjdGlvbiBmaWxlIGZvciBmdXR1cmUgcmVxdWVzdHMuXG4gICAgdXBkYXRlU2V0dGluZ3MoT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywge2F1dGhvcml6YXRpb25Ub2tlbjogb3B0aW9ucy5vQXV0aDJUb2tlbn0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIuIExpc3RlbnMgdG8gZXZlbnRzIGVtaXR0ZWQgZnJvbSB0aGUgd2Vic29ja2V0IHNlcnZlciBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gSGFuZGxlciBmdW5jdGlvbiB0byBhZGQuXG4gICAqL1xuICBhZGRFdmVudExpc3RlbmVyKG5hbWUsIGhhbmRsZXIpIHtcbiAgICB0aGlzLl9lbWl0dGVyLm9uKG5hbWUsIGhhbmRsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBldmVudCBsaXN0ZW5lciBvZiB0aGUgd2Vic29ja2V0IGNvbm5lY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBIYW5kbGVyIGZ1bmN0aW9uIHRvIHJlbW92ZS5cbiAgICovXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgaGFuZGxlcikge1xuICAgIHRoaXMuX2VtaXR0ZXIub2ZmKG5hbWUsIGhhbmRsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmUgYW4gZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSB7W119IGFyZ3MgLSBBcmd1bWVudHMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmaXJlRXZlbnQobmFtZSwgYXJncyA9IFtdKSB7XG4gICAgdGhpcy5fZW1pdHRlci5lbWl0KG5hbWUsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGNvbm5lY3Rpb24gdG8gdGhlIHdlYnNvY2tldCBzZXJ2ZXIuXG4gICAqXG4gICAqL1xuICB3ZWJTb2NrZXRDb25uZWN0KCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIC8qKlxuICAgICAqIFRoaXMgY2FsbGJhY2sgaXMgZmlyZWQgZHVyaW5nIFRpY2tldC1iYXNlZCBhdXRoZW50aWNhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U2Vzc2lvbn0gc2Vzc2lvbiAtIFNlc3Npb24uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCAtIEF1dGhlbnRpY2F0aW9uIG1ldGhvZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbk9BdXRoMkNoYWxsZW5nZShzZXNzaW9uLCBtZXRob2QpIHtcbiAgICAgIGlmIChtZXRob2QgPT09ICd0aWNrZXQnKSB7XG4gICAgICAgIHJldHVybiBzZWxmLl9zZXR0aW5ncy5vQXV0aDJUb2tlbjtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihgZG9uJ3Qga25vdyBob3cgdG8gYXV0aGVudGljYXRlIHVzaW5nICcke21ldGhvZH0nYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXV0aFVybCA9IHRoaXMuX3NldHRpbmdzLndzVXJsO1xuICAgIGxldCBjb25uZWN0aW9uID0gbnVsbDtcbiAgICAvLyBPcGVuIGEgd2Vic29ja2V0IGNvbm5lY3Rpb24gZm9yIHN0cmVhbWluZyBhdWRpb1xuICAgIHRyeSB7XG4gICAgICAvLyBTZXQgdXAgV0FNUCBjb25uZWN0aW9uIHRvIHJvdXRlclxuICAgICAgY29ubmVjdGlvbiA9IG5ldyBhdXRvYmFobi5Db25uZWN0aW9uKHtcbiAgICAgICAgdXJsOiBhdXRoVXJsLFxuICAgICAgICByZWFsbTogJ2RlZmF1bHQnLFxuICAgICAgICAvLyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgbXVzdCBiZSBzZXQgZm9yIFRpY2tldC1iYXNlZCBhdXRoZW50aWNhdGlvblxuICAgICAgICBhdXRobWV0aG9kczogWyd0aWNrZXQnXSxcbiAgICAgICAgYXV0aGlkOiAnb2F1dGgyJyxcbiAgICAgICAgZGV0YWlsczoge1xuICAgICAgICAgIHRpY2tldDogdGhpcy5fc2V0dGluZ3Mub0F1dGgyVG9rZW5cbiAgICAgICAgfSxcbiAgICAgICAgb25jaGFsbGVuZ2U6IG9uT0F1dGgyQ2hhbGxlbmdlXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZygnV2ViU29ja2V0IGNyZWF0aW9uIGVycm9yOiAnICsgZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbm5lY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdXZWJTb2NrZXQgZXJyb3I6ICcgKyBlKTtcbiAgICAgIHNlbGYuZmlyZUV2ZW50KCd3ZWJzb2NrZXRFcnJvcicsIFtlXSk7XG4gICAgfTtcbiAgICBjb25uZWN0aW9uLm9ub3BlbiA9IGZ1bmN0aW9uKHNlc3Npb24pIHtcbiAgICAgIGNvbnNvbGUubG9nKCdXZWJTb2NrZXQgY29ubmVjdGlvbiBvcGVuZWQnKTtcbiAgICAgIHNlbGYuX3Nlc3Npb24gPSBzZXNzaW9uO1xuICAgICAgc2VsZi5maXJlRXZlbnQoJ3dlYnNvY2tldE9wZW5lZCcpO1xuICAgIH07XG4gICAgY29ubmVjdGlvbi5vbmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gICAgICBjb25zb2xlLmxvZygnV2ViU29ja2V0IGRpc2Nvbm5lY3RlZCcpO1xuICAgICAgc2VsZi5fc2Vzc2lvbiA9IG51bGw7XG4gICAgICBzZWxmLmZpcmVFdmVudCgnd2Vic29ja2V0Q2xvc2VkJyk7XG4gICAgfTtcbiAgICB0aGlzLl9jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcbiAgICB0aGlzLl9jb25uZWN0aW9uLm9wZW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIFJQQyB0byBhY3RpdmUgY3VycmVudCBzZXNzaW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcnBjIC0gVGhlIFJQQyB0byBjYWxsLiBJdCB3aWxsIGJlIHByZWZpeGVkIHdpdGggYCdubC5pdHNsYW5ndWFnZS4nYC5cbiAgICogQHBhcmFtIHsuLi5hbnl9IGFyZ3MgLSBBbnkgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIFJQQy5cbiAgICogQHJldHVybiB7UHJvbWlzZX0gVGhlIHJlc3VsdCBvZiB0aGUgY2FsbC5cbiAgICovXG4gIGNhbGwocnBjLCAuLi5hcmdzKSB7XG4gICAgY29uc3QgdXJsID0gJ25sLml0c2xhbmd1YWdlLicgKyBycGM7XG4gICAgY29uc29sZS5kZWJ1ZygnQ2FsbGluZyBSUEM6JywgdXJsKTtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbi5jYWxsKHVybCwgLi4uYXJncyk7XG4gIH1cblxuICB3ZWJTb2NrZXREaXNjb25uZWN0KCkge1xuICAgIHRoaXMuX2Nvbm5lY3Rpb24uY2xvc2UobnVsbCwgJ1JlcXVlc3RlZCBmb3JtYWwgZGlzY29ubmVjdCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBIVFRQIEdFVCB0byB0aGUgQVBJIHVzaW5nIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVXJsIHRvIHJldHJpZXZlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSBjb250YWluaW5nIGEgcmVzdWx0LlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IElmIHRoZSBzZXJ2ZXIgcmV0dXJuZWQgYW4gZXJyb3IuXG4gICAqL1xuICBfc2VjdXJlQWpheEdldCh1cmwpIHtcbiAgICByZXR1cm4gYXV0aG9yaXNlZFJlcXVlc3QoJ0dFVCcsIHVybCk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBhIEhUVFAgUE9TVCB0byB0aGUgQVBJIHVzaW5nIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVXJsIHRvIHN1Ym1pdCB0by5cbiAgICogQHBhcmFtIHtGb3JtRGF0YX0gZm9ybWRhdGEgLSBUaGUgZm9ybSB0byBQT1NULlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSBjb250YWluaW5nIGEgcmVzdWx0LlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IElmIHRoZSBzZXJ2ZXIgcmV0dXJuZWQgYW4gZXJyb3IuXG4gICAqL1xuICBfc2VjdXJlQWpheFBvc3QodXJsLCBmb3JtZGF0YSkge1xuICAgIHJldHVybiBhdXRob3Jpc2VkUmVxdWVzdCgnUE9TVCcsIHVybCwgZm9ybWRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBIVFRQIERFTEVURSB0byB0aGUgQVBJIHVzaW5nIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVXJsIHRvIHN1Ym1pdCB0by5cbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY29udGFpbmluZyBhIHJlc3VsdC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiB0aGUgc2VydmVyIHJldHVybmVkIGFuIGVycm9yLlxuICAgKi9cbiAgX3NlY3VyZUFqYXhEZWxldGUodXJsKSB7XG4gICAgcmV0dXJuIGF1dGhvcmlzZWRSZXF1ZXN0KCdERUxFVEUnLCB1cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBhY2Nlc3MgdG9rZW4gdG8gdGhlIGdpdmVuIFVSTC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgdG8gYWRkIGFuIGFjY2VzcyB0b2tlbiB0by5cbiAgICogQHJldHVybnMge3N0cmluZ30gQW4gdXJsIHdpdGggdGhlIGFjY2VzcyB0b2tlbiBhcHBlbmRlZC5cbiAgICovXG4gIGFkZEFjY2Vzc1Rva2VuKHVybCkge1xuICAgIGlmICghdGhpcy5fc2V0dGluZ3Mub0F1dGgyVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIHNldCBvQXV0aDJUb2tlbicpO1xuICAgIH1cbiAgICBjb25zdCBzZWN1cmVVcmwgPSB1cmwgKyAodXJsLm1hdGNoKC9cXD8vKSA/ICcmJyA6ICc/JykgKyAnYWNjZXNzX3Rva2VuPScgK1xuICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuX3NldHRpbmdzLm9BdXRoMlRva2VuKTtcbiAgICByZXR1cm4gc2VjdXJlVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYnJvd3NlciBjb21wYXRpYmlsaXR5IGZvciByZXF1aXJlZCBhbmQgb3B0aW9uYWwgU0RLIGNhcGFiaWxpdGllcy5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IEluIGNhc2Ugb2YgY29tcGF0aWJpbGl0eSBpc3N1ZXMuXG4gICAqL1xuICBzdGF0aWMgX3Nka0NvbXBhdGliaWxpdHkoKSB7XG4gICAgLy8gV2ViU29ja2V0XG4gICAgLy8gaHR0cDovL2Nhbml1c2UuY29tLyNmZWF0PXdlYnNvY2tldHNcbiAgICBpZiAoISgnV2ViU29ja2V0JyBpbiB3aW5kb3cpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFdlYlNvY2tldCBjYXBhYmlsaXRpZXMnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VsIGFueSBjdXJyZW50IHN0cmVhbWluZyBhdWRpbyByZWNvcmRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7QXVkaW9SZWNvcmRlcn0gcmVjb3JkZXIgLSBUaGUgYXVkaW8gcmVjb3JkZXIgY3VycmVudGx5IHJlY29yZGluZy5cbiAgICovXG4gIGNhbmNlbFN0cmVhbWluZyhyZWNvcmRlcikge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMuX3JlY29yZGluZ0lkID09PSBudWxsICYmIHRoaXMuX2FuYWx5c2lzSWQgPT09IG51bGwgJiYgdGhpcy5fcmVjb2duaXRpb25JZCA9PT0gbnVsbCkge1xuICAgICAgY29uc29sZS5pbmZvKCdObyBzZXNzaW9uIGluIHByb2dyZXNzLCBub3RoaW5nIHRvIGNhbmNlbC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZWNvcmRlci5yZW1vdmVBbGxFdmVudExpc3RlbmVycygpO1xuICAgIGlmIChyZWNvcmRlci5pc1JlY29yZGluZygpKSB7XG4gICAgICByZWNvcmRlci5zdG9wKCk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzZXNzaW9uIGlzIG92ZXIuXG4gICAgc2VsZi5fcmVjb3JkaW5nSWQgPSBudWxsO1xuICAgIHNlbGYuX2FuYWx5c2lzSWQgPSBudWxsO1xuICAgIHNlbGYuX3JlY29nbml0aW9uSWQgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZyBhbiBlcnJvciBjYXVnaHQgZnJvbSBhbiBSUEMgY2FsbC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHJlc3VsdCAtIEVycm9yIG9iamVjdC5cbiAgICovXG4gIHN0YXRpYyBsb2dSUENFcnJvcihyZXN1bHQpIHtcbiAgICBjb25zb2xlLmVycm9yKCdSUEMgZXJyb3IgcmV0dXJuZWQ6JywgcmVzdWx0LmVycm9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc2sgdGhlIHNlcnZlciBmb3IgYW4gT0F1dGgyIHRva2VuLlxuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2ljQXV0aH0gYmFzaWNBdXRoIC0gQmFzaWMgQXV0aCB0byBvYnRhaW4gY3JlZGVudGlhbHMgZnJvbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtzY29wZV0gLSBUaGUgc2NvcGUgd2hpY2ggc2hvdWxkIGJlIGF2YWlsaWJsZSBmb3IgdGhlIHJlcXVlc3RlZCB0b2tlbi5cbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY29udGFpbmluZyBhIGFjY2Vzc190b2tlbiwgdG9rZW5fdHlwZSBhbmQgc2NvcGUuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgdGhlIHNlcnZlciByZXR1cm5lZCBhbiBlcnJvci5cbiAgICovXG4gIGdldE9hdXRoMlRva2VuKGJhc2ljQXV0aCwgc2NvcGUpIHtcbiAgICBjb25zdCBib2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGJvZHkuYXBwZW5kKCdncmFudF90eXBlJywgJ3Bhc3N3b3JkJyk7XG4gICAgYm9keS5hcHBlbmQoJ3VzZXJuYW1lJywgYmFzaWNBdXRoLnByaW5jaXBhbCk7XG4gICAgYm9keS5hcHBlbmQoJ3Bhc3N3b3JkJywgYmFzaWNBdXRoLmNyZWRlbnRpYWxzKTtcblxuICAgIGlmIChzY29wZSkge1xuICAgICAgYm9keS5hcHBlbmQoJ3Njb3BlJywgc2NvcGUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0KCdQT1NUJywgJy90b2tlbnMnLCBib2R5KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMuX3NldHRpbmdzLm9BdXRoMlRva2VuID0gcmVzcG9uc2UuYWNjZXNzX3Rva2VuO1xuICAgICAgdXBkYXRlU2V0dGluZ3Moe2F1dGhvcml6YXRpb25Ub2tlbjogcmVzcG9uc2UuYWNjZXNzX3Rva2VufSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBhdXRoZW50aWNhdGlvbiBmb3IgYSB7QGxpbmsgVXNlcn0uIFRoZSBiYXNpY0F1dGggbm93IGNvbnRhaW5zIHRoZSB1c2VyJ3MgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBhbHNvIGdlbmVyYXRlcyB0aGUgYXBwcm9wcmlhdGUgc2NvcGUgZm9yIHRoZSBnaXZlbiBwYXJhbXMuXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzaWNBdXRofSBiYXNpY0F1dGggLSBCYXNpYyBBdXRoIHRvIG9idGFpbiBjcmVkZW50aWFscyBmcm9tLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3JnYW5pc2F0aW9uSWQgLSBJZCBvZiB0aGUgb3JnYW5pc2F0aW9uIHRoaXMgdXNlciBpcyBwYXJ0IG9mLlxuICAgKi9cbiAgZ2V0VXNlckF1dGgoYmFzaWNBdXRoLCBvcmdhbmlzYXRpb25JZCkge1xuICAgIGxldCBzY29wZXMgPSAndGVuYW50LycgKyBiYXNpY0F1dGgudGVuYW50SWQ7XG4gICAgaWYgKG9yZ2FuaXNhdGlvbklkKSB7XG4gICAgICBzY29wZXMgKz0gJy9vcmdhbmlzYXRpb24vJyArIG9yZ2FuaXNhdGlvbklkO1xuICAgICAgaWYgKGJhc2ljQXV0aC5wcmluY2lwYWwpIHtcbiAgICAgICAgc2NvcGVzICs9ICcvdXNlci8nICsgYmFzaWNBdXRoLnByaW5jaXBhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRPYXV0aDJUb2tlbihiYXNpY0F1dGgsIHNjb3Blcyk7XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbmlzdHJhdGl2ZS1zZGsvY29ubmVjdGlvbi9jb25uZWN0aW9uLWNvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiQ29ubmVjdGlvbiIsIm9wdGlvbnMiLCJfc2V0dGluZ3MiLCJPYmplY3QiLCJhc3NpZ24iLCJhcGlVcmwiLCJvQXV0aDJUb2tlbiIsIndzVXJsIiwid3NUb2tlbiIsIl9zZGtDb21wYXRpYmlsaXR5IiwiX2FuYWx5c2lzSWQiLCJfcmVjb3JkaW5nSWQiLCJfcmVjb2duaXRpb25JZCIsIl9lbWl0dGVyIiwiX2Nvbm5lY3Rpb24iLCJhdXRob3JpemF0aW9uVG9rZW4iLCJhZGRFdmVudExpc3RlbmVyIiwibmFtZSIsImhhbmRsZXIiLCJvbiIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvZmYiLCJmaXJlRXZlbnQiLCJhcmdzIiwiZW1pdCIsIndlYlNvY2tldENvbm5lY3QiLCJzZWxmIiwib25PQXV0aDJDaGFsbGVuZ2UiLCJzZXNzaW9uIiwibWV0aG9kIiwiRXJyb3IiLCJhdXRoVXJsIiwiY29ubmVjdGlvbiIsInVybCIsInJlYWxtIiwiYXV0aG1ldGhvZHMiLCJhdXRoaWQiLCJkZXRhaWxzIiwidGlja2V0Iiwib25jaGFsbGVuZ2UiLCJlIiwiY29uc29sZSIsImxvZyIsIm9uZXJyb3IiLCJvbm9wZW4iLCJfc2Vzc2lvbiIsIm9uY2xvc2UiLCJvcGVuIiwiY2FsbCIsInJwYyIsImRlYnVnIiwid2ViU29ja2V0RGlzY29ubmVjdCIsImNsb3NlIiwiX3NlY3VyZUFqYXhHZXQiLCJfc2VjdXJlQWpheFBvc3QiLCJmb3JtZGF0YSIsIl9zZWN1cmVBamF4RGVsZXRlIiwiYWRkQWNjZXNzVG9rZW4iLCJzZWN1cmVVcmwiLCJtYXRjaCIsImVuY29kZVVSSUNvbXBvbmVudCIsIndpbmRvdyIsImNhbmNlbFN0cmVhbWluZyIsInJlY29yZGVyIiwiaW5mbyIsInJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzIiwiaXNSZWNvcmRpbmciLCJzdG9wIiwibG9nUlBDRXJyb3IiLCJyZXN1bHQiLCJlcnJvciIsImdldE9hdXRoMlRva2VuIiwiYmFzaWNBdXRoIiwic2NvcGUiLCJib2R5IiwiVVJMU2VhcmNoUGFyYW1zIiwiYXBwZW5kIiwicHJpbmNpcGFsIiwiY3JlZGVudGlhbHMiLCJ0aGVuIiwicmVzcG9uc2UiLCJhY2Nlc3NfdG9rZW4iLCJnZXRVc2VyQXV0aCIsIm9yZ2FuaXNhdGlvbklkIiwic2NvcGVzIiwidGVuYW50SWQiXSwibWFwcGluZ3MiOiI7Ozs7QUFJQTs7QUFFQTs7OztBQUNBOzs7Ozs7MEpBUEE7Ozs7QUFRQTs7O0lBR3FCQSxVO0FBQ25COzs7Ozs7Ozs7O0FBVUEsd0JBQTBCO0FBQUEsUUFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUFBOztBQUN4Qjs7O0FBR0EsU0FBS0MsU0FBTCxHQUFpQkMsT0FBT0MsTUFBUCxDQUFjO0FBQzdCO0FBQ0FDLGNBQVEsNEJBRnFCO0FBRzdCQyxtQkFBYSxJQUhnQjtBQUk3QkMsYUFBTyxJQUpzQjtBQUs3QkMsZUFBUztBQUxvQixLQUFkLEVBTWRQLE9BTmMsQ0FBakI7QUFPQUQsZUFBV1MsaUJBQVg7QUFDQSxTQUFLQyxXQUFMLEdBQW1CLElBQW5CO0FBQ0EsU0FBS0MsWUFBTCxHQUFvQixJQUFwQjtBQUNBLFNBQUtDLGNBQUwsR0FBc0IsSUFBdEI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLDRCQUFHLEVBQUgsQ0FBaEI7QUFDQSxTQUFLQyxXQUFMLEdBQW1CLElBQW5COztBQUVBO0FBQ0EsdUNBQWVYLE9BQU9DLE1BQVAsQ0FBYyxFQUFkLEVBQWtCSCxPQUFsQixFQUEyQixFQUFDYyxvQkFBb0JkLFFBQVFLLFdBQTdCLEVBQTNCLENBQWY7QUFDRDs7QUFFRDs7Ozs7Ozs7dUJBTUFVLGdCLDZCQUFpQkMsSSxFQUFNQyxPLEVBQVM7QUFDOUIsU0FBS0wsUUFBTCxDQUFjTSxFQUFkLENBQWlCRixJQUFqQixFQUF1QkMsT0FBdkI7QUFDRCxHOztBQUVEOzs7Ozs7Ozt1QkFNQUUsbUIsZ0NBQW9CSCxJ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QVE7QUFDekI1QixZQUFRNkIsS0FBUixDQUFjLHFCQUFkLEVBQXFDRCxPQUFPQyxLQUE1QztBQUNELEc7O0FBRUQ7Ozs7Ozs7Ozs7dUJBUUFDLGMsMkJBQWVDLFMsRUFBV0MsSyxFQUFPO0FBQUE7O0FBQy9CLFFBQU1DLE9BQU8sSUFBSUMsZUFBSixFQUFiO0FBQ0FELFNBQUtFLE1BQUwsQ0FBWSxZQUFaLEVBQTBCLFVBQTFCO0FBQ0FGLFNBQUtFLE1BQUwsQ0FBWSxVQUFaLEVBQXdCSixVQUFVSyxTQUFsQztBQUNBSCxTQUFLRSxNQUFMLENBQVksVUFBWixFQUF3QkosVUFBVU0sV0FBbEM7O0FBRUEsUUFBSUwsS0FBSixFQUFXO0FBQ1RDLFdBQUtFLE1BQUwsQ0FBWSxPQUFaLEVBQXFCSCxLQUFyQjtBQUNEOztBQUVELFdBQU8sNEJBQVEsTUFBUixFQUFnQixTQUFoQixFQUEyQkMsSUFBM0IsRUFBaUNLLElBQWpDLENBQXNDLG9CQUFZO0FBQ3ZELFlBQUs3RSxTQUFMLENBQWVJLFdBQWYsR0FBNkIwRSxTQUFTQyxZQUF0QztBQUNBLHlDQUFlLEVBQUNsRSxvQkFBb0JpRSxTQUFTQyxZQUE5QixFQUFmO0FBQ0QsS0FITSxDQUFQO0FBSUQsRzs7QUFFRDs7Ozs7Ozs7Ozt1QkFRQUMsVyx3QkFBWVYsUyxFQUFXVyxjLEVBQWdCO0FBQ3JDLFFBQUlDLFNBQVMsWUFBWVosVUFBVWEsUUFBbkM7QUFDQSxRQUFJRixjQUFKLEVBQW9CO0FBQ2xCQyxnQkFBVSxtQkFBbUJELGNBQTdCO0FBQ0EsVUFBSVgsVUFBVUssU0FBZCxFQUF5QjtBQUN2Qk8sa0JBQVUsV0FBV1osVUFBVUssU0FBL0I7QUFDRDtBQUNGOztBQUVELFdBQU8sS0FBS04sY0FBTCxDQUFvQkMsU0FBcEIsRUFBK0JZLE1BQS9CLENBQVA7QUFDRCxHOzs7OztrQkFuUmtCcEYsVSIsImZpbGUiOiJjb25uZWN0aW9uLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZVxuY2FtZWxjYXNlXG4gKi9cblxuaW1wb3J0IHthdXRob3Jpc2VkUmVxdWVzdCwgcmVxdWVzdCwgdXBkYXRlU2V0dGluZ3N9IGZyb20gJy4uLy4uL2FwaS9jb21tdW5pY2F0aW9uJztcblxuaW1wb3J0IGF1dG9iYWhuIGZyb20gJ2F1dG9iYWhuJztcbmltcG9ydCBlZSBmcm9tICdldmVudC1lbWl0dGVyJztcbi8qKlxuICogQ29udHJvbGxlciBjbGFzcyBmb3IgbWFuYWdpbmcgY29ubmVjdGlvbiBpbnRlcmFjdGlvbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29ubmVjdGlvbiB7XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBjb25uZWN0aW9uIHdpdGguXG4gICAqIFZhbGlkIG9wdGlvbnMgaW5jbHVkZTpcbiAgICogKiBhcGlVcmwgLSBUaGUgVVJMIG9mIHRoZSBSRVNUIGFwaS5cbiAgICogKiB3c1VybCAtIFRoZSBVUkwgb2YgdGhlIFdlYnNvY2tldCBzZXJ2ZXIuXG4gICAqICogb0F1dGgyVG9rZW4gLSBBbiBPQXV0aDIgdG9rZW4gc3RyaW5nLlxuICAgKiAqIGFkbWluUHJpbmNpcGFsIC0gVGhlIHVzZXJuYW1lIG9mIHRoZSBhZG1pbiBhY2NvdW50LlxuICAgKiAqIGFkbWluUGFzc3dvcmQgLSBUaGUgcGFzc3dvcmQgb2YgdGhlIGFkbWluIGFjY291bnQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqL1xuICAgIHRoaXMuX3NldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAvLyBJVFNMIGNvbm5lY3Rpb24gcGFyYW1ldGVycy5cbiAgICAgIGFwaVVybDogJ2h0dHBzOi8vYXBpLml0c2xhbmd1YWdlLm5sJyxcbiAgICAgIG9BdXRoMlRva2VuOiBudWxsLFxuICAgICAgd3NVcmw6IG51bGwsXG4gICAgICB3c1Rva2VuOiBudWxsXG4gICAgfSwgb3B0aW9ucyk7XG4gICAgQ29ubmVjdGlvbi5fc2RrQ29tcGF0aWJpbGl0eSgpO1xuICAgIHRoaXMuX2FuYWx5c2lzSWQgPSBudWxsO1xuICAgIHRoaXMuX3JlY29yZGluZ0lkID0gbnVsbDtcbiAgICB0aGlzLl9yZWNvZ25pdGlvbklkID0gbnVsbDtcbiAgICB0aGlzLl9lbWl0dGVyID0gZWUoe30pO1xuICAgIHRoaXMuX2Nvbm5lY3Rpb24gPSBudWxsO1xuXG4gICAgLy8gVXNlIHRoZSBuZXcgY29ubmVjdGlvbiBmaWxlIGZvciBmdXR1cmUgcmVxdWVzdHMuXG4gICAgdXBkYXRlU2V0dGluZ3MoT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywge2F1dGhvcml6YXRpb25Ub2tlbjogb3B0aW9ucy5vQXV0aDJUb2tlbn0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIuIExpc3RlbnMgdG8gZXZlbnRzIGVtaXR0ZWQgZnJvbSB0aGUgd2Vic29ja2V0IHNlcnZlciBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gSGFuZGxlciBmdW5jdGlvbiB0byBhZGQuXG4gICAqL1xuICBhZGRFdmVudExpc3RlbmVyKG5hbWUsIGhhbmRsZXIpIHtcbiAgICB0aGlzLl9lbWl0dGVyLm9uKG5hbWUsIGhhbmRsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBldmVudCBsaXN0ZW5lciBvZiB0aGUgd2Vic29ja2V0IGNvbm5lY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBIYW5kbGVyIGZ1bmN0aW9uIHRvIHJlbW92ZS5cbiAgICovXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgaGFuZGxlcikge1xuICAgIHRoaXMuX2VtaXR0ZXIub2ZmKG5hbWUsIGhhbmRsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmUgYW4gZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSB7W119IGFyZ3MgLSBBcmd1bWVudHMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmaXJlRXZlbnQobmFtZSwgYXJncyA9IFtdKSB7XG4gICAgdGhpcy5fZW1pdHRlci5lbWl0KG5hbWUsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGNvbm5lY3Rpb24gdG8gdGhlIHdlYnNvY2tldCBzZXJ2ZXIuXG4gICAqXG4gICAqL1xuICB3ZWJTb2NrZXRDb25uZWN0KCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIC8qKlxuICAgICAqIFRoaXMgY2FsbGJhY2sgaXMgZmlyZWQgZHVyaW5nIFRpY2tldC1iYXNlZCBhdXRoZW50aWNhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U2Vzc2lvbn0gc2Vzc2lvbiAtIFNlc3Npb24uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCAtIEF1dGhlbnRpY2F0aW9uIG1ldGhvZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbk9BdXRoMkNoYWxsZW5nZShzZXNzaW9uLCBtZXRob2QpIHtcbiAgICAgIGlmIChtZXRob2QgPT09ICd0aWNrZXQnKSB7XG4gICAgICAgIHJldHVybiBzZWxmLl9zZXR0aW5ncy5vQXV0aDJUb2tlbjtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihgZG9uJ3Qga25vdyBob3cgdG8gYXV0aGVudGljYXRlIHVzaW5nICcke21ldGhvZH0nYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXV0aFVybCA9IHRoaXMuX3NldHRpbmdzLndzVXJsO1xuICAgIGxldCBjb25uZWN0aW9uID0gbnVsbDtcbiAgICAvLyBPcGVuIGEgd2Vic29ja2V0IGNvbm5lY3Rpb24gZm9yIHN0cmVhbWluZyBhdWRpb1xuICAgIHRyeSB7XG4gICAgICAvLyBTZXQgdXAgV0FNUCBjb25uZWN0aW9uIHRvIHJvdXRlclxuICAgICAgY29ubmVjdGlvbiA9IG5ldyBhdXRvYmFobi5Db25uZWN0aW9uKHtcbiAgICAgICAgdXJsOiBhdXRoVXJsLFxuICAgICAgICByZWFsbTogJ2RlZmF1bHQnLFxuICAgICAgICAvLyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgbXVzdCBiZSBzZXQgZm9yIFRpY2tldC1iYXNlZCBhdXRoZW50aWNhdGlvblxuICAgICAgICBhdXRobWV0aG9kczogWyd0aWNrZXQnXSxcbiAgICAgICAgYXV0aGlkOiAnb2F1dGgyJyxcbiAgICAgICAgZGV0YWlsczoge1xuICAgICAgICAgIHRpY2tldDogdGhpcy5fc2V0dGluZ3Mub0F1dGgyVG9rZW5cbiAgICAgICAgfSxcbiAgICAgICAgb25jaGFsbGVuZ2U6IG9uT0F1dGgyQ2hhbGxlbmdlXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZygnV2ViU29ja2V0IGNyZWF0aW9uIGVycm9yOiAnICsgZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbm5lY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdXZWJTb2NrZXQgZXJyb3I6ICcgKyBlKTtcbiAgICAgIHNlbGYuZmlyZUV2ZW50KCd3ZWJzb2NrZXRFcnJvcicsIFtlXSk7XG4gICAgfTtcbiAgICBjb25uZWN0aW9uLm9ub3BlbiA9IGZ1bmN0aW9uKHNlc3Npb24pIHtcbiAgICAgIGNvbnNvbGUubG9nKCdXZWJTb2NrZXQgY29ubmVjdGlvbiBvcGVuZWQnKTtcbiAgICAgIHNlbGYuX3Nlc3Npb24gPSBzZXNzaW9uO1xuICAgICAgc2VsZi5maXJlRXZlbnQoJ3dlYnNvY2tldE9wZW5lZCcpO1xuICAgIH07XG4gICAgY29ubmVjdGlvbi5vbmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gICAgICBjb25zb2xlLmxvZygnV2ViU29ja2V0IGRpc2Nvbm5lY3RlZCcpO1xuICAgICAgc2VsZi5fc2Vzc2lvbiA9IG51bGw7XG4gICAgICBzZWxmLmZpcmVFdmVudCgnd2Vic29ja2V0Q2xvc2VkJyk7XG4gICAgfTtcbiAgICB0aGlzLl9jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcbiAgICB0aGlzLl9jb25uZWN0aW9uLm9wZW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIFJQQyB0byBhY3RpdmUgY3VycmVudCBzZXNzaW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcnBjIC0gVGhlIFJQQyB0byBjYWxsLiBJdCB3aWxsIGJlIHByZWZpeGVkIHdpdGggYCdubC5pdHNsYW5ndWFnZS4nYC5cbiAgICogQHBhcmFtIHsuLi5hbnl9IGFyZ3MgLSBBbnkgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIFJQQy5cbiAgICogQHJldHVybiB7UHJvbWlzZX0gVGhlIHJlc3VsdCBvZiB0aGUgY2FsbC5cbiAgICovXG4gIGNhbGwocnBjLCAuLi5hcmdzKSB7XG4gICAgY29uc3QgdXJsID0gJ25sLml0c2xhbmd1YWdlLicgKyBycGM7XG4gICAgY29uc29sZS5kZWJ1ZygnQ2FsbGluZyBSUEM6JywgdXJsKTtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbi5jYWxsKHVybCwgLi4uYXJncyk7XG4gIH1cblxuICB3ZWJTb2NrZXREaXNjb25uZWN0KCkge1xuICAgIHRoaXMuX2Nvbm5lY3Rpb24uY2xvc2UobnVsbCwgJ1JlcXVlc3RlZCBmb3JtYWwgZGlzY29ubmVjdCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBIVFRQIEdFVCB0byB0aGUgQVBJIHVzaW5nIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVXJsIHRvIHJldHJpZXZlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSBjb250YWluaW5nIGEgcmVzdWx0LlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IElmIHRoZSBzZXJ2ZXIgcmV0dXJuZWQgYW4gZXJyb3IuXG4gICAqL1xuICBfc2VjdXJlQWpheEdldCh1cmwpIHtcbiAgICByZXR1cm4gYXV0aG9yaXNlZFJlcXVlc3QoJ0dFVCcsIHVybCk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBhIEhUVFAgUE9TVCB0byB0aGUgQVBJIHVzaW5nIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVXJsIHRvIHN1Ym1pdCB0by5cbiAgICogQHBhcmFtIHtGb3JtRGF0YX0gZm9ybWRhdGEgLSBUaGUgZm9ybSB0byBQT1NULlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSBjb250YWluaW5nIGEgcmVzdWx0LlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IElmIHRoZSBzZXJ2ZXIgcmV0dXJuZWQgYW4gZXJyb3IuXG4gICAqL1xuICBfc2VjdXJlQWpheFBvc3QodXJsLCBmb3JtZGF0YSkge1xuICAgIHJldHVybiBhdXRob3Jpc2VkUmVxdWVzdCgnUE9TVCcsIHVybCwgZm9ybWRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBIVFRQIERFTEVURSB0byB0aGUgQVBJIHVzaW5nIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVXJsIHRvIHN1Ym1pdCB0by5cbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY29udGFpbmluZyBhIHJlc3VsdC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiB0aGUgc2VydmVyIHJldHVybmVkIGFuIGVycm9yLlxuICAgKi9cbiAgX3NlY3VyZUFqYXhEZWxldGUodXJsKSB7XG4gICAgcmV0dXJuIGF1dGhvcmlzZWRSZXF1ZXN0KCdERUxFVEUnLCB1cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBhY2Nlc3MgdG9rZW4gdG8gdGhlIGdpdmVuIFVSTC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgdG8gYWRkIGFuIGFjY2VzcyB0b2tlbiB0by5cbiAgICogQHJldHVybnMge3N0cmluZ30gQW4gdXJsIHdpdGggdGhlIGFjY2VzcyB0b2tlbiBhcHBlbmRlZC5cbiAgICovXG4gIGFkZEFjY2Vzc1Rva2VuKHVybCkge1xuICAgIGlmICghdGhpcy5fc2V0dGluZ3Mub0F1dGgyVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIHNldCBvQXV0aDJUb2tlbicpO1xuICAgIH1cbiAgICBjb25zdCBzZWN1cmVVcmwgPSB1cmwgKyAodXJsLm1hdGNoKC9cXD8vKSA/ICcmJyA6ICc/JykgKyAnYWNjZXNzX3Rva2VuPScgK1xuICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuX3NldHRpbmdzLm9BdXRoMlRva2VuKTtcbiAgICByZXR1cm4gc2VjdXJlVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYnJvd3NlciBjb21wYXRpYmlsaXR5IGZvciByZXF1aXJlZCBhbmQgb3B0aW9uYWwgU0RLIGNhcGFiaWxpdGllcy5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IEluIGNhc2Ugb2YgY29tcGF0aWJpbGl0eSBpc3N1ZXMuXG4gICAqL1xuICBzdGF0aWMgX3Nka0NvbXBhdGliaWxpdHkoKSB7XG4gICAgLy8gV2ViU29ja2V0XG4gICAgLy8gaHR0cDovL2Nhbml1c2UuY29tLyNmZWF0PXdlYnNvY2tldHNcbiAgICBpZiAoISgnV2ViU29ja2V0JyBpbiB3aW5kb3cpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFdlYlNvY2tldCBjYXBhYmlsaXRpZXMnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VsIGFueSBjdXJyZW50IHN0cmVhbWluZyBhdWRpbyByZWNvcmRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7QXVkaW9SZWNvcmRlcn0gcmVjb3JkZXIgLSBUaGUgYXVkaW8gcmVjb3JkZXIgY3VycmVudGx5IHJlY29yZGluZy5cbiAgICovXG4gIGNhbmNlbFN0cmVhbWluZyhyZWNvcmRlcikge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMuX3JlY29yZGluZ0lkID09PSBudWxsICYmIHRoaXMuX2FuYWx5c2lzSWQgPT09IG51bGwgJiYgdGhpcy5fcmVjb2duaXRpb25JZCA9PT0gbnVsbCkge1xuICAgICAgY29uc29sZS5pbmZvKCdObyBzZXNzaW9uIGluIHByb2dyZXNzLCBub3RoaW5nIHRvIGNhbmNlbC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZWNvcmRlci5yZW1vdmVBbGxFdmVudExpc3RlbmVycygpO1xuICAgIGlmIChyZWNvcmRlci5pc1JlY29yZGluZygpKSB7XG4gICAgICByZWNvcmRlci5zdG9wKCk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzZXNzaW9uIGlzIG92ZXIuXG4gICAgc2VsZi5fcmVjb3JkaW5nSWQgPSBudWxsO1xuICAgIHNlbGYuX2FuYWx5c2lzSWQgPSBudWxsO1xuICAgIHNlbGYuX3JlY29nbml0aW9uSWQgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZyBhbiBlcnJvciBjYXVnaHQgZnJvbSBhbiBSUEMgY2FsbC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHJlc3VsdCAtIEVycm9yIG9iamVjdC5cbiAgICovXG4gIHN0YXRpYyBsb2dSUENFcnJvcihyZXN1bHQpIHtcbiAgICBjb25zb2xlLmVycm9yKCdSUEMgZXJyb3IgcmV0dXJuZWQ6JywgcmVzdWx0LmVycm9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc2sgdGhlIHNlcnZlciBmb3IgYW4gT0F1dGgyIHRva2VuLlxuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2ljQXV0aH0gYmFzaWNBdXRoIC0gQmFzaWMgQXV0aCB0byBvYnRhaW4gY3JlZGVudGlhbHMgZnJvbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtzY29wZV0gLSBUaGUgc2NvcGUgd2hpY2ggc2hvdWxkIGJlIGF2YWlsaWJsZSBmb3IgdGhlIHJlcXVlc3RlZCB0b2tlbi5cbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY29udGFpbmluZyBhIGFjY2Vzc190b2tlbiwgdG9rZW5fdHlwZSBhbmQgc2NvcGUuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgdGhlIHNlcnZlciByZXR1cm5lZCBhbiBlcnJvci5cbiAgICovXG4gIGdldE9hdXRoMlRva2VuKGJhc2ljQXV0aCwgc2NvcGUpIHtcbiAgICBjb25zdCBib2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGJvZHkuYXBwZW5kKCdncmFudF90eXBlJywgJ3Bhc3N3b3JkJyk7XG4gICAgYm9keS5hcHBlbmQoJ3VzZXJuYW1lJywgYmFzaWNBdXRoLnByaW5jaXBhbCk7XG4gICAgYm9keS5hcHBlbmQoJ3Bhc3N3b3JkJywgYmFzaWNBdXRoLmNyZWRlbnRpYWxzKTtcblxuICAgIGlmIChzY29wZSkge1xuICAgICAgYm9keS5hcHBlbmQoJ3Njb3BlJywgc2NvcGUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0KCdQT1NUJywgJy90b2tlbnMnLCBib2R5KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMuX3NldHRpbmdzLm9BdXRoMlRva2VuID0gcmVzcG9uc2UuYWNjZXNzX3Rva2VuO1xuICAgICAgdXBkYXRlU2V0dGluZ3Moe2F1dGhvcml6YXRpb25Ub2tlbjogcmVzcG9uc2UuYWNjZXNzX3Rva2VufSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBhdXRoZW50aWNhdGlvbiBmb3IgYSB7QGxpbmsgVXNlcn0uIFRoZSBiYXNpY0F1dGggbm93IGNvbnRhaW5zIHRoZSB1c2VyJ3MgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBhbHNvIGdlbmVyYXRlcyB0aGUgYXBwcm9wcmlhdGUgc2NvcGUgZm9yIHRoZSBnaXZlbiBwYXJhbXMuXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzaWNBdXRofSBiYXNpY0F1dGggLSBCYXNpYyBBdXRoIHRvIG9idGFpbiBjcmVkZW50aWFscyBmcm9tLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3JnYW5pc2F0aW9uSWQgLSBJZCBvZiB0aGUgb3JnYW5pc2F0aW9uIHRoaXMgdXNlciBpcyBwYXJ0IG9mLlxuICAgKi9cbiAgZ2V0VXNlckF1dGgoYmFzaWNBdXRoLCBvcmdhbmlzYXRpb25JZCkge1xuICAgIGxldCBzY29wZXMgPSAndGVuYW50LycgKyBiYXNpY0F1dGgudGVuYW50SWQ7XG4gICAgaWYgKG9yZ2FuaXNhdGlvbklkKSB7XG4gICAgICBzY29wZXMgKz0gJy9vcmdhbmlzYXRpb24vJyArIG9yZ2FuaXNhdGlvbklkO1xuICAgICAgaWYgKGJhc2ljQXV0aC5wcmluY2lwYWwpIHtcbiAgICAgICAgc2NvcGVzICs9ICcvdXNlci8nICsgYmFzaWNBdXRoLnByaW5jaXBhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRPYXV0aDJUb2tlbihiYXNpY0F1dGgsIHNjb3Blcyk7XG4gIH1cbn1cbiJdfQ== |
@@ -107,2 +107,2 @@ 'use strict'; | ||
exports.default = GroupController; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbmlzdHJhdGl2ZS1zZGsvZ3JvdXAvZ3JvdXAtY29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJHcm91cENvbnRyb2xsZXIiLCJjb25uZWN0aW9uIiwiX2Nvbm5lY3Rpb24iLCJjcmVhdGVHcm91cCIsImdyb3VwIiwiUHJvbWlzZSIsInJlamVjdCIsIkVycm9yIiwidXJsIiwiX3NldHRpbmdzIiwiYXBpVXJsIiwiZmQiLCJKU09OIiwic3RyaW5naWZ5IiwiX3NlY3VyZUFqYXhQb3N0IiwidGhlbiIsInJlc3VsdCIsImRhdGEiLCJpZCIsIm5hbWUiLCJjcmVhdGVkIiwiRGF0ZSIsInVwZGF0ZWQiLCJnZXRHcm91cCIsImdyb3VwSWQiLCJfc2VjdXJlQWpheEdldCIsIm9yZ2FuaXNhdGlvbiIsImdldEdyb3VwcyIsImdyb3VwcyIsImZvckVhY2giLCJkYXR1bSIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7QUFFQTs7OztJQUlxQkEsZTtBQUNuQjs7O0FBR0EsMkJBQVlDLFVBQVosRUFBd0I7QUFBQTs7QUFDdEI7Ozs7QUFJQSxTQUFLQyxXQUFMLEdBQW1CRCxVQUFuQjtBQUNEOztBQUVEOzs7Ozs7Ozs7OzRCQVFBRSxXLHdCQUFZQyxLLEVBQU87QUFDakIsUUFBSSxFQUFFQSxnQ0FBRixDQUFKLEVBQStCO0FBQzdCLGFBQU9DLFFBQVFDLE1BQVIsQ0FBZSxJQUFJQyxLQUFKLENBQVUsNkNBQVYsQ0FBZixDQUFQO0FBQ0Q7QUFDRCxRQUFNQyxNQUFNLEtBQUtOLFdBQUwsQ0FBaUJPLFNBQWpCLENBQTJCQyxNQUEzQixHQUFvQyxTQUFoRDtBQUNBLFFBQU1DLEtBQUtDLEtBQUtDLFNBQUwsQ0FBZVQsS0FBZixDQUFYOztBQUVBLFdBQU8sS0FBS0YsV0FBTCxDQUFpQlksZUFBakIsQ0FBaUNOLEdBQWpDLEVBQXNDRyxFQUF0QyxFQUNKSSxJQURJLENBQ0MsZ0JBQVE7QUFDWixVQUFNQyxTQUFTLG9CQUFVQyxLQUFLQyxFQUFmLEVBQW1CRCxLQUFLRSxJQUF4QixDQUFmO0FBQ0FILGFBQU9JLE9BQVAsR0FBaUIsSUFBSUMsSUFBSixDQUFTSixLQUFLRyxPQUFkLENBQWpCO0FBQ0FKLGFBQU9NLE9BQVAsR0FBaUIsSUFBSUQsSUFBSixDQUFTSixLQUFLSyxPQUFkLENBQWpCO0FBQ0EsYUFBT04sTUFBUDtBQUNELEtBTkksQ0FBUDtBQU9ELEc7O0FBRUQ7Ozs7Ozs7Ozs7NEJBUUFPLFEscUJBQVNDLE8sRUFBUztBQUNoQixRQUFJLE9BQU9BLE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7QUFDL0IsYUFBT25CLFFBQVFDLE1BQVIsQ0FBZSxJQUFJQyxLQUFKLENBQVUsZ0RBQVYsQ0FBZixDQUFQO0FBQ0Q7QUFDRCxRQUFNQyxNQUFNLEtBQUtOLFdBQUwsQ0FBaUJPLFNBQWpCLENBQTJCQyxNQUEzQixHQUFvQyxVQUFwQyxHQUFpRGMsT0FBN0Q7O0FBRUEsV0FBTyxLQUFLdEIsV0FBTCxDQUFpQnVCLGNBQWpCLENBQWdDakIsR0FBaEMsRUFDSk8sSUFESSxDQUNDLGdCQUFRO0FBQ1osVUFBTVcsZUFBZSxvQkFBVVQsS0FBS0MsRUFBZixFQUFtQkQsS0FBS0UsSUFBeEIsQ0FBckI7QUFDQU8sbUJBQWFOLE9BQWIsR0FBdUIsSUFBSUMsSUFBSixDQUFTSixLQUFLRyxPQUFkLENBQXZCO0FBQ0FNLG1CQUFhSixPQUFiLEdBQXVCLElBQUlELElBQUosQ0FBU0osS0FBS0ssT0FBZCxDQUF2QjtBQUNBLGFBQU9JLFlBQVA7QUFDRCxLQU5JLENBQVA7QUFPRCxHOztBQUVEOzs7Ozs7Ozs0QkFNQUMsUyx3QkFBWTtBQUNWLFFBQU1uQixNQUFNLEtBQUtOLFdBQUwsQ0FBaUJPLFNBQWpCLENBQTJCQyxNQUEzQixHQUFvQyxTQUFoRDs7QUFFQSxXQUFPLEtBQUtSLFdBQUwsQ0FBaUJ1QixjQUFqQixDQUFnQ2pCLEdBQWhDLEVBQ0pPLElBREksQ0FDQyxnQkFBUTtBQUNaLFVBQU1hLFNBQVMsRUFBZjtBQUNBWCxXQUFLWSxPQUFMLENBQWEsaUJBQVM7QUFDcEIsWUFBTXpCLFFBQVEsb0JBQVUwQixNQUFNWixFQUFoQixFQUFvQlksTUFBTVgsSUFBMUIsQ0FBZDtBQUNBZixjQUFNZ0IsT0FBTixHQUFnQixJQUFJQyxJQUFKLENBQVNTLE1BQU1WLE9BQWYsQ0FBaEI7QUFDQWhCLGNBQU1rQixPQUFOLEdBQWdCLElBQUlELElBQUosQ0FBU1MsTUFBTVIsT0FBZixDQUFoQjtBQUNBTSxlQUFPRyxJQUFQLENBQVkzQixLQUFaO0FBQ0QsT0FMRDtBQU1BLGFBQU93QixNQUFQO0FBQ0QsS0FWSSxDQUFQO0FBV0QsRzs7Ozs7a0JBL0VrQjVCLGUiLCJmaWxlIjoiZ3JvdXAtY29udHJvbGxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHcm91cCBmcm9tICcuL2dyb3VwJztcblxuLyoqXG4gKiBDb250cm9sbGVyIGNsYXNzIGZvciB0aGUgR3JvdXAgbW9kZWwuXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHcm91cENvbnRyb2xsZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtDb25uZWN0aW9ufSBjb25uZWN0aW9uIC0gT2JqZWN0IHRvIHVzZSBmb3IgbWFraW5nIGEgY29ubmVjdGlvbiB0byB0aGUgUkVTVCBBUEkgYW5kIFdlYnNvY2tldCBzZXJ2ZXIuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25uZWN0aW9uKSB7XG4gICAgLyoqXG4gICAgICogT2JqZWN0IHRvIHVzZSBmb3IgbWFraW5nIGEgY29ubmVjdGlvbiB0byB0aGUgUkVTVCBBUEkgYW5kIFdlYnNvY2tldCBzZXJ2ZXIuXG4gICAgICogQHR5cGUge0Nvbm5lY3Rpb259XG4gICAgICovXG4gICAgdGhpcy5fY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZ3JvdXAuIFRoZSBncm91cCB3aWxsIGJlIHBhcnQgb2YgdGhlIGN1cnJlbnQgYWN0aXZlIHtAbGluayBPcmdhbmlzYXRpb259IGRlcml2ZWQgZnJvbSB0aGUgT0F1dGgyIHNjb3BlLlxuICAgKlxuICAgKiBAcGFyYW0ge09yZ2FuaXNhdGlvbn0gZ3JvdXAgLSBPYmplY3QgdG8gY3JlYXRlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZS48R3JvdXA+fSBQcm9taXNlIGNvbnRhaW5pbmcgdGhlIG5ld2x5IGNyZWF0ZWQgR3JvdXAuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gb3JnYW5pc2F0aW9uIHBhcmFtZXRlciBvZiB0eXBlIFwiR3JvdXBcIiBpcyByZXF1aXJlZC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiB0aGUgc2VydmVyIHJldHVybmVkIGFuIGVycm9yLlxuICAgKi9cbiAgY3JlYXRlR3JvdXAoZ3JvdXApIHtcbiAgICBpZiAoIShncm91cCBpbnN0YW5jZW9mIEdyb3VwKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignZ3JvdXAgcGFyYW1ldGVyIG9mIHR5cGUgXCJHcm91cFwiIGlzIHJlcXVpcmVkJykpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSB0aGlzLl9jb25uZWN0aW9uLl9zZXR0aW5ncy5hcGlVcmwgKyAnL2dyb3Vwcyc7XG4gICAgY29uc3QgZmQgPSBKU09OLnN0cmluZ2lmeShncm91cCk7XG5cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5fc2VjdXJlQWpheFBvc3QodXJsLCBmZClcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgR3JvdXAoZGF0YS5pZCwgZGF0YS5uYW1lKTtcbiAgICAgICAgcmVzdWx0LmNyZWF0ZWQgPSBuZXcgRGF0ZShkYXRhLmNyZWF0ZWQpO1xuICAgICAgICByZXN1bHQudXBkYXRlZCA9IG5ldyBEYXRlKGRhdGEudXBkYXRlZCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBncm91cCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBjdXJyZW50IGFjdGl2ZSB7QGxpbmsgT3JnYW5pc2F0aW9ufSBkZXJpdmVkIGZyb20gdGhlIE9BdXRoMiBzY29wZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwSWQgLSBTcGVjaWZ5IGEgZ3JvdXAgaWRlbnRpZmllci5cbiAgICogQHJldHVybnMge1Byb21pc2UuPEdyb3VwPn0gUHJvbWlzZSBjb250YWluaW5nIGFuIEdyb3VwLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IGdyb3VwSWQgcGFyYW1ldGVyIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiBubyByZXN1bHQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgZ2V0R3JvdXAoZ3JvdXBJZCkge1xuICAgIGlmICh0eXBlb2YgZ3JvdXBJZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2dyb3VwSWQgcGFyYW1ldGVyIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG4gICAgY29uc3QgdXJsID0gdGhpcy5fY29ubmVjdGlvbi5fc2V0dGluZ3MuYXBpVXJsICsgJy9ncm91cHMvJyArIGdyb3VwSWQ7XG5cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5fc2VjdXJlQWpheEdldCh1cmwpXG4gICAgICAudGhlbihkYXRhID0+IHtcbiAgICAgICAgY29uc3Qgb3JnYW5pc2F0aW9uID0gbmV3IEdyb3VwKGRhdGEuaWQsIGRhdGEubmFtZSk7XG4gICAgICAgIG9yZ2FuaXNhdGlvbi5jcmVhdGVkID0gbmV3IERhdGUoZGF0YS5jcmVhdGVkKTtcbiAgICAgICAgb3JnYW5pc2F0aW9uLnVwZGF0ZWQgPSBuZXcgRGF0ZShkYXRhLnVwZGF0ZWQpO1xuICAgICAgICByZXR1cm4gb3JnYW5pc2F0aW9uO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuZCByZXR1cm4gYWxsIGdyb3VwcyBpbiB0aGUgY3VycmVudCBhY3RpdmUge0BsaW5rIE9yZ2FuaXNhdGlvbn0gZGVyaXZlZCBmcm9tIHRoZSBPQXV0aDIgc2NvcGUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlLjxHcm91cFtdPn0gUHJvbWlzZSBjb250YWluaW5nIGFuIGFycmF5IG9mIEdyb3Vwcy5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiBubyByZXN1bHQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgZ2V0R3JvdXBzKCkge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuX2Nvbm5lY3Rpb24uX3NldHRpbmdzLmFwaVVybCArICcvZ3JvdXBzJztcblxuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLl9zZWN1cmVBamF4R2V0KHVybClcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBncm91cHMgPSBbXTtcbiAgICAgICAgZGF0YS5mb3JFYWNoKGRhdHVtID0+IHtcbiAgICAgICAgICBjb25zdCBncm91cCA9IG5ldyBHcm91cChkYXR1bS5pZCwgZGF0dW0ubmFtZSk7XG4gICAgICAgICAgZ3JvdXAuY3JlYXRlZCA9IG5ldyBEYXRlKGRhdHVtLmNyZWF0ZWQpO1xuICAgICAgICAgIGdyb3VwLnVwZGF0ZWQgPSBuZXcgRGF0ZShkYXR1bS51cGRhdGVkKTtcbiAgICAgICAgICBncm91cHMucHVzaChncm91cCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgICAgfSk7XG4gIH1cblxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbmlzdHJhdGl2ZS1zZGsvZ3JvdXAvZ3JvdXAtY29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJHcm91cENvbnRyb2xsZXIiLCJjb25uZWN0aW9uIiwiX2Nvbm5lY3Rpb24iLCJjcmVhdGVHcm91cCIsImdyb3VwIiwiUHJvbWlzZSIsInJlamVjdCIsIkVycm9yIiwidXJsIiwiX3NldHRpbmdzIiwiYXBpVXJsIiwiZmQiLCJKU09OIiwic3RyaW5naWZ5IiwiX3NlY3VyZUFqYXhQb3N0IiwidGhlbiIsInJlc3VsdCIsImRhdGEiLCJpZCIsIm5hbWUiLCJjcmVhdGVkIiwiRGF0ZSIsInVwZGF0ZWQiLCJnZXRHcm91cCIsImdyb3VwSWQiLCJfc2VjdXJlQWpheEdldCIsIm9yZ2FuaXNhdGlvbiIsImdldEdyb3VwcyIsImdyb3VwcyIsImZvckVhY2giLCJkYXR1bSIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7QUFFQTs7OztJQUlxQkEsZTtBQUNuQjs7O0FBR0EsMkJBQVlDLFVBQVosRUFBd0I7QUFBQTs7QUFDdEI7Ozs7QUFJQSxTQUFLQyxXQUFMLEdBQW1CRCxVQUFuQjtBQUNEOztBQUVEOzs7Ozs7Ozs7OzRCQVFBRSxXLHdCQUFZQyxLLEVBQU87QUFDakIsUUFBSSxFQUFFQSxnQ0FBRixDQUFKLEVBQStCO0FBQzdCLGFBQU9DLFFBQVFDLE1BQVIsQ0FBZSxJQUFJQyxLQUFKLENBQVUsNkNBQVYsQ0FBZixDQUFQO0FBQ0Q7QUFDRCxRQUFNQyxNQUFNLEtBQUtOLFdBQUwsQ0FBaUJPLFNBQWpCLENBQTJCQyxNQUEzQixHQUFvQyxTQUFoRDtBQUNBLFFBQU1DLEtBQUtDLEtBQUtDLFNBQUwsQ0FBZVQsS0FBZixDQUFYOztBQUVBLFdBQU8sS0FBS0YsV0FBTCxDQUFpQlksZUFBakIsQ0FBaUNOLEdBQWpDLEVBQXNDRyxFQUF0QyxFQUNKSSxJQURJLENBQ0MsZ0JBQVE7QUFDWixVQUFNQyxTQUFTLG9CQUFVQyxLQUFLQyxFQUFmLEVBQW1CRCxLQUFLRSxJQUF4QixDQUFmO0FBQ0FILGFBQU9JLE9BQVAsR0FBaUIsSUFBSUMsSUFBSixDQUFTSixLQUFLRyxPQUFkLENBQWpCO0FBQ0FKLGFBQU9NLE9BQVAsR0FBaUIsSUFBSUQsSUFBSixDQUFTSixLQUFLSyxPQUFkLENBQWpCO0FBQ0EsYUFBT04sTUFBUDtBQUNELEtBTkksQ0FBUDtBQU9ELEc7O0FBRUQ7Ozs7Ozs7Ozs7NEJBUUFPLFEscUJBQVNDLE8sRUFBUztBQUNoQixRQUFJLE9BQU9BLE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7QUFDL0IsYUFBT25CLFFBQVFDLE1BQVIsQ0FBZSxJQUFJQyxLQUFKLENBQVUsZ0RBQVYsQ0FBZixDQUFQO0FBQ0Q7QUFDRCxRQUFNQyxNQUFNLEtBQUtOLFdBQUwsQ0FBaUJPLFNBQWpCLENBQTJCQyxNQUEzQixHQUFvQyxVQUFwQyxHQUFpRGMsT0FBN0Q7O0FBRUEsV0FBTyxLQUFLdEIsV0FBTCxDQUFpQnVCLGNBQWpCLENBQWdDakIsR0FBaEMsRUFDSk8sSUFESSxDQUNDLGdCQUFRO0FBQ1osVUFBTVcsZUFBZSxvQkFBVVQsS0FBS0MsRUFBZixFQUFtQkQsS0FBS0UsSUFBeEIsQ0FBckI7QUFDQU8sbUJBQWFOLE9BQWIsR0FBdUIsSUFBSUMsSUFBSixDQUFTSixLQUFLRyxPQUFkLENBQXZCO0FBQ0FNLG1CQUFhSixPQUFiLEdBQXVCLElBQUlELElBQUosQ0FBU0osS0FBS0ssT0FBZCxDQUF2QjtBQUNBLGFBQU9JLFlBQVA7QUFDRCxLQU5JLENBQVA7QUFPRCxHOztBQUVEOzs7Ozs7Ozs0QkFNQUMsUyx3QkFBWTtBQUNWLFFBQU1uQixNQUFNLEtBQUtOLFdBQUwsQ0FBaUJPLFNBQWpCLENBQTJCQyxNQUEzQixHQUFvQyxTQUFoRDs7QUFFQSxXQUFPLEtBQUtSLFdBQUwsQ0FBaUJ1QixjQUFqQixDQUFnQ2pCLEdBQWhDLEVBQ0pPLElBREksQ0FDQyxnQkFBUTtBQUNaLFVBQU1hLFNBQVMsRUFBZjtBQUNBWCxXQUFLWSxPQUFMLENBQWEsaUJBQVM7QUFDcEIsWUFBTXpCLFFBQVEsb0JBQVUwQixNQUFNWixFQUFoQixFQUFvQlksTUFBTVgsSUFBMUIsQ0FBZDtBQUNBZixjQUFNZ0IsT0FBTixHQUFnQixJQUFJQyxJQUFKLENBQVNTLE1BQU1WLE9BQWYsQ0FBaEI7QUFDQWhCLGNBQU1rQixPQUFOLEdBQWdCLElBQUlELElBQUosQ0FBU1MsTUFBTVIsT0FBZixDQUFoQjtBQUNBTSxlQUFPRyxJQUFQLENBQVkzQixLQUFaO0FBQ0QsT0FMRDtBQU1BLGFBQU93QixNQUFQO0FBQ0QsS0FWSSxDQUFQO0FBV0QsRzs7Ozs7a0JBL0VrQjVCLGUiLCJmaWxlIjoiZ3JvdXAtY29udHJvbGxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHcm91cCBmcm9tICcuL2dyb3VwJztcblxuLyoqXG4gKiBDb250cm9sbGVyIGNsYXNzIGZvciB0aGUgR3JvdXAgbW9kZWwuXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHcm91cENvbnRyb2xsZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtDb25uZWN0aW9ufSBjb25uZWN0aW9uIC0gT2JqZWN0IHRvIHVzZSBmb3IgbWFraW5nIGEgY29ubmVjdGlvbiB0byB0aGUgUkVTVCBBUEkgYW5kIFdlYnNvY2tldCBzZXJ2ZXIuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25uZWN0aW9uKSB7XG4gICAgLyoqXG4gICAgICogT2JqZWN0IHRvIHVzZSBmb3IgbWFraW5nIGEgY29ubmVjdGlvbiB0byB0aGUgUkVTVCBBUEkgYW5kIFdlYnNvY2tldCBzZXJ2ZXIuXG4gICAgICogQHR5cGUge0Nvbm5lY3Rpb259XG4gICAgICovXG4gICAgdGhpcy5fY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZ3JvdXAuIFRoZSBncm91cCB3aWxsIGJlIHBhcnQgb2YgdGhlIGN1cnJlbnQgYWN0aXZlIHtAbGluayBPcmdhbmlzYXRpb259IGRlcml2ZWQgZnJvbSB0aGUgT0F1dGgyIHNjb3BlLlxuICAgKlxuICAgKiBAcGFyYW0ge09yZ2FuaXNhdGlvbn0gZ3JvdXAgLSBPYmplY3QgdG8gY3JlYXRlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZS48R3JvdXA+fSBQcm9taXNlIGNvbnRhaW5pbmcgdGhlIG5ld2x5IGNyZWF0ZWQgR3JvdXAuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gb3JnYW5pc2F0aW9uIHBhcmFtZXRlciBvZiB0eXBlIFwiR3JvdXBcIiBpcyByZXF1aXJlZC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiB0aGUgc2VydmVyIHJldHVybmVkIGFuIGVycm9yLlxuICAgKi9cbiAgY3JlYXRlR3JvdXAoZ3JvdXApIHtcbiAgICBpZiAoIShncm91cCBpbnN0YW5jZW9mIEdyb3VwKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignZ3JvdXAgcGFyYW1ldGVyIG9mIHR5cGUgXCJHcm91cFwiIGlzIHJlcXVpcmVkJykpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSB0aGlzLl9jb25uZWN0aW9uLl9zZXR0aW5ncy5hcGlVcmwgKyAnL2dyb3Vwcyc7XG4gICAgY29uc3QgZmQgPSBKU09OLnN0cmluZ2lmeShncm91cCk7XG5cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5fc2VjdXJlQWpheFBvc3QodXJsLCBmZClcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgR3JvdXAoZGF0YS5pZCwgZGF0YS5uYW1lKTtcbiAgICAgICAgcmVzdWx0LmNyZWF0ZWQgPSBuZXcgRGF0ZShkYXRhLmNyZWF0ZWQpO1xuICAgICAgICByZXN1bHQudXBkYXRlZCA9IG5ldyBEYXRlKGRhdGEudXBkYXRlZCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBncm91cCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBjdXJyZW50IGFjdGl2ZSB7QGxpbmsgT3JnYW5pc2F0aW9ufSBkZXJpdmVkIGZyb20gdGhlIE9BdXRoMiBzY29wZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwSWQgLSBTcGVjaWZ5IGEgZ3JvdXAgaWRlbnRpZmllci5cbiAgICogQHJldHVybnMge1Byb21pc2UuPEdyb3VwPn0gUHJvbWlzZSBjb250YWluaW5nIGFuIEdyb3VwLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IGdyb3VwSWQgcGFyYW1ldGVyIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiBubyByZXN1bHQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgZ2V0R3JvdXAoZ3JvdXBJZCkge1xuICAgIGlmICh0eXBlb2YgZ3JvdXBJZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2dyb3VwSWQgcGFyYW1ldGVyIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG4gICAgY29uc3QgdXJsID0gdGhpcy5fY29ubmVjdGlvbi5fc2V0dGluZ3MuYXBpVXJsICsgJy9ncm91cHMvJyArIGdyb3VwSWQ7XG5cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5fc2VjdXJlQWpheEdldCh1cmwpXG4gICAgICAudGhlbihkYXRhID0+IHtcbiAgICAgICAgY29uc3Qgb3JnYW5pc2F0aW9uID0gbmV3IEdyb3VwKGRhdGEuaWQsIGRhdGEubmFtZSk7XG4gICAgICAgIG9yZ2FuaXNhdGlvbi5jcmVhdGVkID0gbmV3IERhdGUoZGF0YS5jcmVhdGVkKTtcbiAgICAgICAgb3JnYW5pc2F0aW9uLnVwZGF0ZWQgPSBuZXcgRGF0ZShkYXRhLnVwZGF0ZWQpO1xuICAgICAgICByZXR1cm4gb3JnYW5pc2F0aW9uO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuZCByZXR1cm4gYWxsIGdyb3VwcyBpbiB0aGUgY3VycmVudCBhY3RpdmUge0BsaW5rIE9yZ2FuaXNhdGlvbn0gZGVyaXZlZCBmcm9tIHRoZSBPQXV0aDIgc2NvcGUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlLjxHcm91cFtdPn0gUHJvbWlzZSBjb250YWluaW5nIGFuIGFycmF5IG9mIEdyb3Vwcy5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiBubyByZXN1bHQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgZ2V0R3JvdXBzKCkge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuX2Nvbm5lY3Rpb24uX3NldHRpbmdzLmFwaVVybCArICcvZ3JvdXBzJztcblxuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLl9zZWN1cmVBamF4R2V0KHVybClcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBncm91cHMgPSBbXTtcbiAgICAgICAgZGF0YS5mb3JFYWNoKGRhdHVtID0+IHtcbiAgICAgICAgICBjb25zdCBncm91cCA9IG5ldyBHcm91cChkYXR1bS5pZCwgZGF0dW0ubmFtZSk7XG4gICAgICAgICAgZ3JvdXAuY3JlYXRlZCA9IG5ldyBEYXRlKGRhdHVtLmNyZWF0ZWQpO1xuICAgICAgICAgIGdyb3VwLnVwZGF0ZWQgPSBuZXcgRGF0ZShkYXR1bS51cGRhdGVkKTtcbiAgICAgICAgICBncm91cHMucHVzaChncm91cCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ== |
@@ -251,2 +251,2 @@ 'use strict'; | ||
exports.default = SpeechRecordingController; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbmlzdHJhdGl2ZS1zZGsvc3BlZWNoLXJlY29yZGluZy9zcGVlY2gtcmVjb3JkaW5nLWNvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiU3BlZWNoUmVjb3JkaW5nQ29udHJvbGxlciIsImNvbm5lY3Rpb24iLCJfY29ubmVjdGlvbiIsInNwZWVjaFJlY29yZGluZ0luaXRDaGFsbGVuZ2UiLCJjaGFsbGVuZ2UiLCJjYWxsIiwiX3JlY29yZGluZ0lkIiwiaWQiLCJ0aGVuIiwiY29uc29sZSIsImxvZyIsInJlY29yZGluZ0lkIiwic3BlZWNoUmVjb3JkaW5nSW5pdEF1ZGlvIiwicmVjb3JkZXIiLCJkYXRhYXZhaWxhYmxlQ2IiLCJzcGVjcyIsImdldEF1ZGlvU3BlY3MiLCJhdWRpb0Zvcm1hdCIsImF1ZGlvUGFyYW1ldGVycyIsImFkZEV2ZW50TGlzdGVuZXIiLCJzdGFydFN0cmVhbWluZ1NwZWVjaFJlY29yZGluZyIsIlByb21pc2UiLCJyZWplY3QiLCJFcnJvciIsIl9zZXNzaW9uIiwiaXNSZWNvcmRpbmciLCJzZWxmIiwicmVzb2x2ZSIsIm5vdGlmeSIsIl9jYiIsImRhdGEiLCJyZWNvcmRpbmciLCJ1c2VySWQiLCJEYXRlIiwiY3JlYXRlZCIsInVwZGF0ZWQiLCJhZGRBY2Nlc3NUb2tlbiIsImF1ZGlvVXJsIiwicmVjb3JkZWRDYiIsImFjdGl2ZVJlY29yZGluZ0lkIiwiYXVkaW9CbG9iIiwiZm9yY2VkU3RvcCIsInJlcyIsImxvZ1JQQ0Vycm9yIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInN0YXJ0U3RyZWFtaW5nIiwiY2h1bmsiLCJlbmNvZGVkIiwiX2FycmF5QnVmZmVyVG9CYXNlNjQiLCJzdGFydFJlY29yZGluZyIsInAiLCJoYXNVc2VyTWVkaWFBcHByb3ZhbCIsInJlc29sdmVfIiwiY2F0Y2giLCJlcnJvciIsImdldFNwZWVjaFJlY29yZGluZyIsImNoYWxsZW5nZUlkIiwidXJsIiwiX3NldHRpbmdzIiwiYXBpVXJsIiwi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Ozs7O3NDQVNBd0IsbUIsZ0NBQW9CTCxXLEVBQWE7QUFBQTs7QUFDL0IsUUFBSSxDQUFDQSxXQUFMLEVBQWtCO0FBQ2hCLGFBQU9uQyxRQUFRQyxNQUFSLENBQWUsSUFBSUMsS0FBSixDQUFVLCtCQUFWLENBQWYsQ0FBUDtBQUNEO0FBQ0QsUUFBTWtDLE1BQU0sS0FBS3ZELFdBQUwsQ0FBaUJ3RCxTQUFqQixDQUEyQkMsTUFBM0IsR0FBb0MscUJBQXBDLEdBQTRESCxXQUE1RCxHQUEwRSxhQUF0RjtBQUNBLFdBQU8sS0FBS3RELFdBQUwsQ0FBaUIwRCxjQUFqQixDQUFnQ0gsR0FBaEMsRUFDSmpELElBREksQ0FDQztBQUFBLGFBQVFzQixLQUFLZ0MsR0FBTCxDQUFTO0FBQUEsZUFBUyw4QkFBb0JOLFdBQXBCLEVBQWlDTyxNQUFNL0IsTUFBdkMsRUFBK0MrQixNQUFNeEQsRUFBckQsRUFBeUQsSUFBSTBCLElBQUosQ0FBUzhCLE1BQU03QixPQUFmLENBQXpELEVBQzVCLElBQUlELElBQUosQ0FBUzhCLE1BQU01QixPQUFmLENBRDRCLEVBQ0gsT0FBS2pDLFdBQUwsQ0FBaUJrQyxjQUFqQixDQUFnQzJCLE1BQU0xQixRQUF0QyxDQURHLENBQVQ7QUFBQSxPQUFULENBQVI7QUFBQSxLQURELENBQVA7QUFHRCxHOzs7OztrQkFoTmtCckMseUIiLCJmaWxlIjoic3BlZWNoLXJlY29yZGluZy1jb250cm9sbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2U2NFV0aWxzIGZyb20gJy4uL3V0aWxzL2Jhc2U2NC11dGlscyc7XG5pbXBvcnQgQ29ubmVjdGlvbiBmcm9tICcuLi9jb25uZWN0aW9uL2Nvbm5lY3Rpb24tY29udHJvbGxlcic7XG5pbXBvcnQgU3BlZWNoUmVjb3JkaW5nIGZyb20gJy4vc3BlZWNoLXJlY29yZGluZyc7XG5pbXBvcnQgd2hlbiBmcm9tICd3aGVuJztcblxuLyoqXG4gKiBDb250cm9sbGVyIGNsYXNzIGZvciB0aGUgU3BlZWNoUmVjb3JkaW5nIG1vZGVsLlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3BlZWNoUmVjb3JkaW5nQ29udHJvbGxlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0Nvbm5lY3Rpb259IGNvbm5lY3Rpb24gLSBPYmplY3QgdG8gdXNlIGZvciBtYWtpbmcgYSBjb25uZWN0aW9uIHRvIHRoZSBSRVNUIEFQSSBhbmQgV2Vic29ja2V0IHNlcnZlci5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb24pIHtcbiAgICB0aGlzLl9jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXNlIHRoZSBzcGVlY2ggcmVjb3JkaW5nIGNoYWxsZW5nZSB0aHJvdWdoIFJQQ3MuXG4gICAqXG4gICAqIEBwYXJhbSB7U3BlZWNoQ2hhbGxlbmdlfSBjaGFsbGVuZ2UgLSBTcGVlY2hDaGFsbGVuZ2UuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzcGVlY2hSZWNvcmRpbmdJbml0Q2hhbGxlbmdlKGNoYWxsZW5nZSkge1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLmNhbGwoJ3JlY29yZGluZy5pbml0X2NoYWxsZW5nZScsXG4gICAgICBbdGhpcy5fY29ubmVjdGlvbi5fcmVjb3JkaW5nSWQsIGNoYWxsZW5nZS5pZF0pLnRoZW4oXG4gICAgICAvLyBSUEMgc3VjY2VzcyBjYWxsYmFja1xuICAgICAgcmVjb3JkaW5nSWQgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQ2hhbGxlbmdlIGluaXRpYWxpc2VkIGZvciByZWNvcmRpbmdJZDogJyArIHRoaXMuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkKTtcbiAgICAgICAgcmV0dXJuIHJlY29yZGluZ0lkO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGlzZSB0aGUgc3BlZWNoIHJlY29yZGluZyBhdWRpbyBzcGVjcyB0aHJvdWdoIFJQQ3MuXG4gICAqXG4gICAqIEBwYXJhbSB7QXVkaW9SZWNvcmRlcn0gcmVjb3JkZXIgLSBBdWRpb1JlY29yZGVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBkYXRhYXZhaWxhYmxlQ2IgLSBDYWxsYmFjay5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHNwZWVjaFJlY29yZGluZ0luaXRBdWRpbyhyZWNvcmRlciwgZGF0YWF2YWlsYWJsZUNiKSB7XG4gICAgLy8gSW5kaWNhdGUgdG8gdGhlIHNvY2tldCBzZXJ2ZXIgdGhhdCB3ZSdyZSBhYm91dCB0byBzdGFydCByZWNvcmRpbmcgYVxuICAgIC8vIGNoYWxsZW5nZS4gVGhpcyBhbGxvd3MgdGhlIHNvY2tldCBzZXJ2ZXIgc29tZSB0aW1lIHRvIGZldGNoIHRoZSBtZXRhZGF0YVxuICAgIC8vIGFuZCByZWZlcmVuY2UgYXVkaW8gdG8gc3RhcnQgdGhlIHJlY29yZGluZyB3aGVuIGF1ZGlvIGlzIGFjdHVhbGx5IHN1Ym1pdHRlZC5cbiAgICBjb25zdCBzcGVjcyA9IHJlY29yZGVyLmdldEF1ZGlvU3BlY3MoKTtcbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5jYWxsKCdyZWNvcmRpbmcuaW5pdF9hdWRpbycsXG4gICAgICBbdGhpcy5fY29ubmVjdGlvbi5fcmVjb3JkaW5nSWQsIHNwZWNzLmF1ZGlvRm9ybWF0XSwgc3BlY3MuYXVkaW9QYXJhbWV0ZXJzKVxuICAgICAgLnRoZW4ocmVjb3JkaW5nSWQgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQWNjZXB0ZWQgYXVkaW8gcGFyYW1ldGVycyBmb3IgcmVjb3JkaW5nSWQgYWZ0ZXIgaW5pdF9hdWRpbzogJyArIHRoaXMuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkKTtcbiAgICAgICAgLy8gU3RhcnQgbGlzdGVuaW5nIGZvciBzdHJlYW1pbmcgZGF0YS5cbiAgICAgICAgcmVjb3JkZXIuYWRkRXZlbnRMaXN0ZW5lcignZGF0YWF2YWlsYWJsZScsIGRhdGFhdmFpbGFibGVDYik7XG4gICAgICAgIHJldHVybiByZWNvcmRpbmdJZDtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGEgc3BlZWNoIHJlY29yZGluZyBmcm9tIHN0cmVhbWluZyBhdWRpby5cbiAgICpcbiAgICogQHBhcmFtIHtTcGVlY2hDaGFsbGVuZ2V9IGNoYWxsZW5nZSAtIFRoZSBzcGVlY2ggY2hhbGxlbmdlIHRvIHBlcmZvcm0uXG4gICAqIEBwYXJhbSB7QXVkaW9SZWNvcmRlcn0gcmVjb3JkZXIgLSBUaGUgYXVkaW8gcmVjb3JkZXIgdG8gZXh0cmFjdCBhdWRpbyBmcm9tLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZS48U3BlZWNoUmVjb3JkaW5nPn0gQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2N1am9qcy93aGVufSBQcm9taXNlIGNvbnRhaW5pbmcgYSB7QGxpbmsgU3BlZWNoUmVjb3JkaW5nfS5cbiAgICogQGVtaXRzIHtzdHJpbmd9ICdSZWFkeVRvUmVjZWl2ZScgd2hlbiB0aGUgY2FsbCBpcyBtYWRlIHRvIHJlY2VpdmUgYXVkaW8uIFRoZSByZWNvcmRlciBjYW4gbm93IHNlbmQgYXVkaW8uXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgY2hhbGxlbmdlIGlzIG5vdCBhbiBvYmplY3Qgb3Igbm90IGRlZmluZWQuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgY2hhbGxlbmdlIGhhcyBubyBpZC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiB0aGUgY29ubmVjdGlvbiBpcyBub3Qgb3Blbi5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiB0aGUgcmVjb3JkZXIgaXMgYWxyZWFkeSByZWNvcmRpbmcuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgYSBzZXNzaW9uIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgc29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIHJlY29yZGluZy5cbiAgICovXG4gIHN0YXJ0U3RyZWFtaW5nU3BlZWNoUmVjb3JkaW5nKGNoYWxsZW5nZSwgcmVjb3JkZXIpIHtcbiAgICAvLyBWYWxpZGF0ZSByZXF1aXJlZCBkb21haW4gbW9kZWwuXG4gICAgLy8gVmFsaWRhdGUgZW52aXJvbm1lbnQgcHJlcmVxdWlzaXRlcy5cbiAgICBpZiAodHlwZW9mIGNoYWxsZW5nZSAhPT0gJ29iamVjdCcgfHwgIWNoYWxsZW5nZSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignXCJjaGFsbGVuZ2VcIiBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgb3IgaW52YWxpZCcpKTtcbiAgICB9XG4gICAgaWYgKCFjaGFsbGVuZ2UuaWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2NoYWxsZW5nZS5pZCBmaWVsZCBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9jb25uZWN0aW9uLl9zZXNzaW9uKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdXZWJTb2NrZXQgY29ubmVjdGlvbiB3YXMgbm90IG9wZW4uJykpO1xuICAgIH1cbiAgICBpZiAocmVjb3JkZXIuaXNSZWNvcmRpbmcoKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignUmVjb3JkZXIgc2hvdWxkIG5vdCB5ZXQgYmUgcmVjb3JkaW5nLicpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdTZXNzaW9uIHdpdGggcmVjb3JkaW5nSWQgJyArIHRoaXMuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkICtcbiAgICAgICAgJyBzdGlsbCBpbiBwcm9ncmVzcy4nKSk7XG4gICAgfVxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgd2hlbi5Qcm9taXNlKChyZXNvbHZlLCByZWplY3QsIG5vdGlmeSkgPT4ge1xuICAgICAgc2VsZi5fY29ubmVjdGlvbi5fcmVjb3JkaW5nSWQgPSBudWxsO1xuXG4gICAgICBmdW5jdGlvbiBfY2IoZGF0YSkge1xuICAgICAgICBjb25zdCByZWNvcmRpbmcgPSBuZXcgU3BlZWNoUmVjb3JkaW5nKFxuICAgICAgICAgIGNoYWxsZW5nZS5pZCwgZGF0YS51c2VySWQsIGRhdGEuaWQsIG5ldyBEYXRlKGRhdGEuY3JlYXRlZCksIG5ldyBEYXRlKGRhdGEudXBkYXRlZCksXG4gICAgICAgICAgc2VsZi5fY29ubmVjdGlvbi5hZGRBY2Nlc3NUb2tlbihkYXRhLmF1ZGlvVXJsKSk7XG4gICAgICAgIHJlc29sdmUoe3JlY29yZGluZ0lkOiBzZWxmLl9jb25uZWN0aW9uLl9yZWNvcmRpbmdJZCwgcmVjb3JkaW5nfSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHJlY29yZGVkQ2IoYWN0aXZlUmVjb3JkaW5nSWQsIGF1ZGlvQmxvYiwgZm9yY2VkU3RvcCkge1xuICAgICAgICBzZWxmLl9jb25uZWN0aW9uLmNhbGwoJ3JlY29yZGluZy5jbG9zZScsXG4gICAgICAgICAgW3NlbGYuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkXSkudGhlbihcbiAgICAgICAgICAvLyBSUEMgc3VjY2VzcyBjYWxsYmFja1xuICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAvLyBQYXNzIGFsb25nIGRldGFpbHMgdG8gdGhlIHN1Y2Nlc3MgY2FsbGJhY2tcbiAgICAgICAgICAgIF9jYihyZXMsIGZvcmNlZFN0b3ApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gUlBDIGVycm9yIGNhbGxiYWNrXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIENvbm5lY3Rpb24ubG9nUlBDRXJyb3IocmVzKTtcbiAgICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICByZWNvcmRlci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZWNvcmRlZCcsIHJlY29yZGVkQ2IpO1xuICAgICAgICByZWNvcmRlci5yZW1vdmVFdmVudExpc3RlbmVyKCdkYXRhYXZhaWxhYmxlJywgc3RhcnRTdHJlYW1pbmcpO1xuICAgICAgfVxuXG4gICAgICAvLyBTdGFydCBzdHJlYW1pbmcgdGhlIGJpbmFyeSBhdWRpbyB3aGVuIHRoZSB1c2VyIGluc3RydWN0c1xuICAgICAgLy8gdGhlIGF1ZGlvIHJlY29yZGVyIHRvIHN0YXJ0IHJlY29yZGluZy5cbiAgICAgIGZ1bmN0aW9uIHN0YXJ0U3RyZWFtaW5nKGNodW5rKSB7XG4gICAgICAgIGNvbnN0IGVuY29kZWQgPSBCYXNlNjRVdGlscy5fYXJyYXlCdWZmZXJUb0Jhc2U2NChjaHVuayk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdTZW5kaW5nIGF1ZGlvIGNodW5rIHRvIHdlYnNvY2tldCBmb3IgcmVjb3JkaW5nSWQ6ICcgK1xuICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkKTtcbiAgICAgICAgc2VsZi5fY29ubmVjdGlvbi5jYWxsKCdyZWNvcmRpbmcud3JpdGUnLFxuICAgICAgICAgIFtzZWxmLl9jb25uZWN0aW9uLl9yZWNvcmRpbmdJZCwgZW5jb2RlZCwgJ2Jhc2U2NCddKS50aGVuKFxuICAgICAgICAgIC8vIFJQQyBzdWNjZXNzIGNhbGxiYWNrXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIC8vIFdyb3RlIGRhdGEuXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnV3JvdGUgZGF0YScpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIFJQQyBlcnJvciBjYWxsYmFja1xuICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICBDb25uZWN0aW9uLmxvZ1JQQ0Vycm9yKHJlcyk7XG4gICAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHN0YXJ0UmVjb3JkaW5nKHJlY29yZGluZ0lkKSB7XG4gICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkID0gcmVjb3JkaW5nSWQ7XG4gICAgICAgIGNvbnNvbGUubG9nKCdHb3QgcmVjb3JkaW5nSWQgYWZ0ZXIgaW5pdGlhbGlzYXRpb246ICcgKyBzZWxmLl9jb25uZWN0aW9uLl9yZWNvcmRpbmdJZCk7XG4gICAgICB9XG5cbiAgICAgIHJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3JlY29yZGVkJywgcmVjb3JkZWRDYik7XG4gICAgICBzZWxmLl9jb25uZWN0aW9uLmNhbGwoJ3JlY29yZGluZy5pbml0X3JlY29yZGluZycsIFtdKVxuICAgICAgICAudGhlbihzdGFydFJlY29yZGluZylcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICBzZWxmLnNwZWVjaFJlY29yZGluZ0luaXRDaGFsbGVuZ2UoY2hhbGxlbmdlKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBwID0gbmV3IFByb21pc2UocmVzb2x2ZV8gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZWNvcmRlci5oYXNVc2VyTWVkaWFBcHByb3ZhbCgpKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlXygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdyZWFkeScsIHJlc29sdmVfKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBwLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYuc3BlZWNoUmVjb3JkaW5nSW5pdEF1ZGlvKHJlY29yZGVyLCBzdGFydFN0cmVhbWluZylcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiBub3RpZnkoJ1JlYWR5VG9SZWNlaXZlJykpXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKHJlamVjdCk7XG4gICAgfSlcbiAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXMpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkID0gbnVsbDtcbiAgICAgICAgQ29ubmVjdGlvbi5sb2dSUENFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzcGVlY2ggcmVjb3JkaW5nIGluIGEgc3BlZWNoIGNoYWxsZW5nZSBmcm9tIHRoZSBjdXJyZW50IGFjdGl2ZSB7QGxpbmsgT3JnYW5pc2F0aW9ufSBkZXJpdmVkIGZyb20gdGhlIE9BdXRoMlxuICAgKiBzY29wZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYWxsZW5nZUlkIC0gU3BlY2lmeSBhIHNwZWVjaCBjaGFsbGVuZ2UgaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlY29yZGluZ0lkIC0gU3BlY2lmeSBhIHNwZWVjaCByZWNvcmRpbmcgaWRlbnRpZmllci5cbiAgICogQHJldHVybnMge1Byb21pc2UuPFNwZWVjaFJlY29yZGluZz59IFByb21pc2UgY29udGFpbmluZyBhIFNwZWVjaFJlY29yZGluZy5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSB7QGxpbmsgU3BlZWNoQ2hhbGxlbmdlI2lkfSBmaWVsZCBpcyByZXF1aXJlZC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSB7QGxpbmsgU3BlZWNoUmVjb3JkaW5nI2lkfSBmaWVsZCBpcyByZXF1aXJlZC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiBubyByZXN1bHQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgZ2V0U3BlZWNoUmVjb3JkaW5nKGNoYWxsZW5nZUlkLCByZWNvcmRpbmdJZCkge1xuICAgIGlmICghY2hhbGxlbmdlSWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2NoYWxsZW5nZUlkIGZpZWxkIGlzIHJlcXVpcmVkJykpO1xuICAgIH1cbiAgICBpZiAoIXJlY29yZGluZ0lkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdyZWNvcmRpbmdJZCBmaWVsZCBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG4gICAgY29uc3QgdXJsID0gdGhpcy5fY29ubmVjdGlvbi5fc2V0dGluZ3MuYXBpVXJsICsgJy9jaGFsbGVuZ2VzL3NwZWVjaC8nICsgY2hhbGxlbmdlSWQgKyAnL3JlY29yZGluZ3MvJyArIHJlY29yZGluZ0lkO1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLl9zZWN1cmVBamF4R2V0KHVybClcbiAgICAgIC50aGVuKGRhdGEgPT4gbmV3IFNwZWVjaFJlY29yZGluZyhjaGFsbGVuZ2VJZCwgZGF0YS51c2VySWQsIGRhdGEuaWQsIG5ldyBEYXRlKGRhdGEuY3JlYXRlZCksXG4gICAgICAgICAgbmV3IERhdGUoZGF0YS51cGRhdGVkKSwgdGhpcy5fY29ubmVjdGlvbi5hZGRBY2Nlc3NUb2tlbihkYXRhLmF1ZGlvVXJsKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbmQgcmV0dXJuIGFsbCBzcGVlY2ggcmVjb3JkaW5ncyBpbiBhIHNwZWNpZmljIHNwZWVjaCBjaGFsbGVuZ2UgZnJvbSB0aGUgY3VycmVudCBhY3RpdmUge0BsaW5rIE9yZ2FuaXNhdGlvbn1cbiAgICogZGVyaXZlZCBmcm9tIHRoZSBPQXV0aDIgc2NvcGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFsbGVuZ2VJZCAtIFNwZWNpZnkgYSBzcGVlY2ggY2hhbGxlbmdlIGlkZW50aWZpZXIgdG8gbGlzdCBzcGVlY2ggcmVjb3JkaW5ncyBmb3IuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlLjxTcGVlY2hSZWNvcmRpbmdbXT59IFByb21pc2UgY29udGFpbmluZyBhbiBhcnJheSBvZiBTcGVlY2hSZWNvcmRpbmcuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0ge0BsaW5rIFNwZWVjaENoYWxsZW5nZSNpZH0gaXMgcmVxdWlyZWQuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgbm8gcmVzdWx0IGNvdWxkIG5vdCBiZSBmb3VuZC5cbiAgICovXG4gIGdldFNwZWVjaFJlY29yZGluZ3MoY2hhbGxlbmdlSWQpIHtcbiAgICBpZiAoIWNoYWxsZW5nZUlkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdjaGFsbGVuZ2VJZCBmaWVsZCBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG4gICAgY29uc3QgdXJsID0gdGhpcy5fY29ubmVjdGlvbi5fc2V0dGluZ3MuYXBpVXJsICsgJy9jaGFsbGVuZ2VzL3NwZWVjaC8nICsgY2hhbGxlbmdlSWQgKyAnL3JlY29yZGluZ3MnO1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLl9zZWN1cmVBamF4R2V0KHVybClcbiAgICAgIC50aGVuKGRhdGEgPT4gZGF0YS5tYXAoZGF0dW0gPT4gbmV3IFNwZWVjaFJlY29yZGluZyhjaGFsbGVuZ2VJZCwgZGF0dW0udXNlcklkLCBkYXR1bS5pZCwgbmV3IERhdGUoZGF0dW0uY3JlYXRlZCksXG4gICAgICAgICAgbmV3IERhdGUoZGF0dW0udXBkYXRlZCksIHRoaXMuX2Nvbm5lY3Rpb24uYWRkQWNjZXNzVG9rZW4oZGF0dW0uYXVkaW9VcmwpKSkpO1xuICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbmlzdHJhdGl2ZS1zZGsvc3BlZWNoLXJlY29yZGluZy9zcGVlY2gtcmVjb3JkaW5nLWNvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiU3BlZWNoUmVjb3JkaW5nQ29udHJvbGxlciIsImNvbm5lY3Rpb24iLCJfY29ubmVjdGlvbiIsInNwZWVjaFJlY29yZGluZ0luaXRDaGFsbGVuZ2UiLCJjaGFsbGVuZ2UiLCJjYWxsIiwiX3JlY29yZGluZ0lkIiwiaWQiLCJ0aGVuIiwiY29uc29sZSIsImxvZyIsInJlY29yZGluZ0lkIiwic3BlZWNoUmVjb3JkaW5nSW5pdEF1ZGlvIiwicmVjb3JkZXIiLCJkYXRhYXZhaWxhYmxlQ2IiLCJzcGVjcyIsImdldEF1ZGlvU3BlY3MiLCJhdWRpb0Zvcm1hdCIsImF1ZGlvUGFyYW1ldGVycyIsImFkZEV2ZW50TGlzdGVuZXIiLCJzdGFydFN0cmVhbWluZ1NwZWVjaFJlY29yZGluZyIsIlByb21pc2UiLCJyZWplY3QiLCJFcnJvciIsIl9zZXNzaW9uIiwiaXNSZWNvcmRpbmciLCJzZWxmIiwicmVzb2x2ZSIsIm5vdGlmeSIsIl9jYiIsImRhdGEiLCJyZWNvcmRpbmciLCJ1c2VySWQiLCJEYXRlIiwiY3JlYXRlZCIsInVwZGF0ZWQiLCJhZGRBY2Nlc3NUb2tlbiIsImF1ZGlvVXJsIiwicmVjb3JkZWRDYiIsImFjdGl2ZVJlY29yZGluZ0lkIiwiYXVkaW9CbG9iIiwiZm9yY2VkU3RvcCIsInJlcyIsImxvZ1JQQ0Vycm9yIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInN0YXJ0U3RyZWFtaW5nIiwiY2h1bmsiLCJlbmNvZGVkIiwiX2FycmF5QnVmZmVyVG9CYXNlNjQiLCJzdGFydFJlY29yZGluZyIsInAiLCJoYXNVc2VyTWVkaWFBcHByb3ZhbCIsInJlc29sdmVfIiwiY2F0Y2giLCJlcnJvciIsImdldFNwZWVjaFJlY29yZGluZyIsImNoYWxsZW5nZUlkIiwidXJsIiwiX3NldHRpbmdzIiwiYXBpVXJsIiwi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Ozs7O3NDQVNBd0IsbUIsZ0NBQW9CTCxXLEVBQWE7QUFBQTs7QUFDL0IsUUFBSSxDQUFDQSxXQUFMLEVBQWtCO0FBQ2hCLGFBQU9uQyxRQUFRQyxNQUFSLENBQWUsSUFBSUMsS0FBSixDQUFVLCtCQUFWLENBQWYsQ0FBUDtBQUNEO0FBQ0QsUUFBTWtDLE1BQU0sS0FBS3ZELFdBQUwsQ0FBaUJ3RCxTQUFqQixDQUEyQkMsTUFBM0IsR0FBb0MscUJBQXBDLEdBQTRESCxXQUE1RCxHQUEwRSxhQUF0RjtBQUNBLFdBQU8sS0FBS3RELFdBQUwsQ0FBaUIwRCxjQUFqQixDQUFnQ0gsR0FBaEMsRUFDSmpELElBREksQ0FDQztBQUFBLGFBQVFzQixLQUFLZ0MsR0FBTCxDQUFTO0FBQUEsZUFBUyw4QkFBb0JOLFdBQXBCLEVBQWlDTyxNQUFNL0IsTUFBdkMsRUFBK0MrQixNQUFNeEQsRUFBckQsRUFBeUQsSUFBSTBCLElBQUosQ0FBUzhCLE1BQU03QixPQUFmLENBQXpELEVBQzlCLElBQUlELElBQUosQ0FBUzhCLE1BQU01QixPQUFmLENBRDhCLEVBQ0wsT0FBS2pDLFdBQUwsQ0FBaUJrQyxjQUFqQixDQUFnQzJCLE1BQU0xQixRQUF0QyxDQURLLENBQVQ7QUFBQSxPQUFULENBQVI7QUFBQSxLQURELENBQVA7QUFHRCxHOzs7OztrQkFoTmtCckMseUIiLCJmaWxlIjoic3BlZWNoLXJlY29yZGluZy1jb250cm9sbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2U2NFV0aWxzIGZyb20gJy4uL3V0aWxzL2Jhc2U2NC11dGlscyc7XG5pbXBvcnQgQ29ubmVjdGlvbiBmcm9tICcuLi9jb25uZWN0aW9uL2Nvbm5lY3Rpb24tY29udHJvbGxlcic7XG5pbXBvcnQgU3BlZWNoUmVjb3JkaW5nIGZyb20gJy4vc3BlZWNoLXJlY29yZGluZyc7XG5pbXBvcnQgd2hlbiBmcm9tICd3aGVuJztcblxuLyoqXG4gKiBDb250cm9sbGVyIGNsYXNzIGZvciB0aGUgU3BlZWNoUmVjb3JkaW5nIG1vZGVsLlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3BlZWNoUmVjb3JkaW5nQ29udHJvbGxlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0Nvbm5lY3Rpb259IGNvbm5lY3Rpb24gLSBPYmplY3QgdG8gdXNlIGZvciBtYWtpbmcgYSBjb25uZWN0aW9uIHRvIHRoZSBSRVNUIEFQSSBhbmQgV2Vic29ja2V0IHNlcnZlci5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb24pIHtcbiAgICB0aGlzLl9jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXNlIHRoZSBzcGVlY2ggcmVjb3JkaW5nIGNoYWxsZW5nZSB0aHJvdWdoIFJQQ3MuXG4gICAqXG4gICAqIEBwYXJhbSB7U3BlZWNoQ2hhbGxlbmdlfSBjaGFsbGVuZ2UgLSBTcGVlY2hDaGFsbGVuZ2UuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzcGVlY2hSZWNvcmRpbmdJbml0Q2hhbGxlbmdlKGNoYWxsZW5nZSkge1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLmNhbGwoJ3JlY29yZGluZy5pbml0X2NoYWxsZW5nZScsXG4gICAgICBbdGhpcy5fY29ubmVjdGlvbi5fcmVjb3JkaW5nSWQsIGNoYWxsZW5nZS5pZF0pLnRoZW4oXG4gICAgICAvLyBSUEMgc3VjY2VzcyBjYWxsYmFja1xuICAgICAgcmVjb3JkaW5nSWQgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQ2hhbGxlbmdlIGluaXRpYWxpc2VkIGZvciByZWNvcmRpbmdJZDogJyArIHRoaXMuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkKTtcbiAgICAgICAgcmV0dXJuIHJlY29yZGluZ0lkO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGlzZSB0aGUgc3BlZWNoIHJlY29yZGluZyBhdWRpbyBzcGVjcyB0aHJvdWdoIFJQQ3MuXG4gICAqXG4gICAqIEBwYXJhbSB7QXVkaW9SZWNvcmRlcn0gcmVjb3JkZXIgLSBBdWRpb1JlY29yZGVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBkYXRhYXZhaWxhYmxlQ2IgLSBDYWxsYmFjay5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHNwZWVjaFJlY29yZGluZ0luaXRBdWRpbyhyZWNvcmRlciwgZGF0YWF2YWlsYWJsZUNiKSB7XG4gICAgLy8gSW5kaWNhdGUgdG8gdGhlIHNvY2tldCBzZXJ2ZXIgdGhhdCB3ZSdyZSBhYm91dCB0byBzdGFydCByZWNvcmRpbmcgYVxuICAgIC8vIGNoYWxsZW5nZS4gVGhpcyBhbGxvd3MgdGhlIHNvY2tldCBzZXJ2ZXIgc29tZSB0aW1lIHRvIGZldGNoIHRoZSBtZXRhZGF0YVxuICAgIC8vIGFuZCByZWZlcmVuY2UgYXVkaW8gdG8gc3RhcnQgdGhlIHJlY29yZGluZyB3aGVuIGF1ZGlvIGlzIGFjdHVhbGx5IHN1Ym1pdHRlZC5cbiAgICBjb25zdCBzcGVjcyA9IHJlY29yZGVyLmdldEF1ZGlvU3BlY3MoKTtcbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5jYWxsKCdyZWNvcmRpbmcuaW5pdF9hdWRpbycsXG4gICAgICBbdGhpcy5fY29ubmVjdGlvbi5fcmVjb3JkaW5nSWQsIHNwZWNzLmF1ZGlvRm9ybWF0XSwgc3BlY3MuYXVkaW9QYXJhbWV0ZXJzKVxuICAgICAgLnRoZW4ocmVjb3JkaW5nSWQgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQWNjZXB0ZWQgYXVkaW8gcGFyYW1ldGVycyBmb3IgcmVjb3JkaW5nSWQgYWZ0ZXIgaW5pdF9hdWRpbzogJyArIHRoaXMuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkKTtcbiAgICAgICAgLy8gU3RhcnQgbGlzdGVuaW5nIGZvciBzdHJlYW1pbmcgZGF0YS5cbiAgICAgICAgcmVjb3JkZXIuYWRkRXZlbnRMaXN0ZW5lcignZGF0YWF2YWlsYWJsZScsIGRhdGFhdmFpbGFibGVDYik7XG4gICAgICAgIHJldHVybiByZWNvcmRpbmdJZDtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGEgc3BlZWNoIHJlY29yZGluZyBmcm9tIHN0cmVhbWluZyBhdWRpby5cbiAgICpcbiAgICogQHBhcmFtIHtTcGVlY2hDaGFsbGVuZ2V9IGNoYWxsZW5nZSAtIFRoZSBzcGVlY2ggY2hhbGxlbmdlIHRvIHBlcmZvcm0uXG4gICAqIEBwYXJhbSB7QXVkaW9SZWNvcmRlcn0gcmVjb3JkZXIgLSBUaGUgYXVkaW8gcmVjb3JkZXIgdG8gZXh0cmFjdCBhdWRpbyBmcm9tLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZS48U3BlZWNoUmVjb3JkaW5nPn0gQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2N1am9qcy93aGVufSBQcm9taXNlIGNvbnRhaW5pbmcgYSB7QGxpbmsgU3BlZWNoUmVjb3JkaW5nfS5cbiAgICogQGVtaXRzIHtzdHJpbmd9ICdSZWFkeVRvUmVjZWl2ZScgd2hlbiB0aGUgY2FsbCBpcyBtYWRlIHRvIHJlY2VpdmUgYXVkaW8uIFRoZSByZWNvcmRlciBjYW4gbm93IHNlbmQgYXVkaW8uXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgY2hhbGxlbmdlIGlzIG5vdCBhbiBvYmplY3Qgb3Igbm90IGRlZmluZWQuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgY2hhbGxlbmdlIGhhcyBubyBpZC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiB0aGUgY29ubmVjdGlvbiBpcyBub3Qgb3Blbi5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiB0aGUgcmVjb3JkZXIgaXMgYWxyZWFkeSByZWNvcmRpbmcuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgYSBzZXNzaW9uIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuXG4gICAqIEB0aHJvd3Mge1Byb21pc2UuPEVycm9yPn0gSWYgc29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIHJlY29yZGluZy5cbiAgICovXG4gIHN0YXJ0U3RyZWFtaW5nU3BlZWNoUmVjb3JkaW5nKGNoYWxsZW5nZSwgcmVjb3JkZXIpIHtcbiAgICAvLyBWYWxpZGF0ZSByZXF1aXJlZCBkb21haW4gbW9kZWwuXG4gICAgLy8gVmFsaWRhdGUgZW52aXJvbm1lbnQgcHJlcmVxdWlzaXRlcy5cbiAgICBpZiAodHlwZW9mIGNoYWxsZW5nZSAhPT0gJ29iamVjdCcgfHwgIWNoYWxsZW5nZSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignXCJjaGFsbGVuZ2VcIiBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgb3IgaW52YWxpZCcpKTtcbiAgICB9XG4gICAgaWYgKCFjaGFsbGVuZ2UuaWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2NoYWxsZW5nZS5pZCBmaWVsZCBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9jb25uZWN0aW9uLl9zZXNzaW9uKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdXZWJTb2NrZXQgY29ubmVjdGlvbiB3YXMgbm90IG9wZW4uJykpO1xuICAgIH1cbiAgICBpZiAocmVjb3JkZXIuaXNSZWNvcmRpbmcoKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignUmVjb3JkZXIgc2hvdWxkIG5vdCB5ZXQgYmUgcmVjb3JkaW5nLicpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdTZXNzaW9uIHdpdGggcmVjb3JkaW5nSWQgJyArIHRoaXMuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkICtcbiAgICAgICAgJyBzdGlsbCBpbiBwcm9ncmVzcy4nKSk7XG4gICAgfVxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgd2hlbi5Qcm9taXNlKChyZXNvbHZlLCByZWplY3QsIG5vdGlmeSkgPT4ge1xuICAgICAgc2VsZi5fY29ubmVjdGlvbi5fcmVjb3JkaW5nSWQgPSBudWxsO1xuXG4gICAgICBmdW5jdGlvbiBfY2IoZGF0YSkge1xuICAgICAgICBjb25zdCByZWNvcmRpbmcgPSBuZXcgU3BlZWNoUmVjb3JkaW5nKFxuICAgICAgICAgIGNoYWxsZW5nZS5pZCwgZGF0YS51c2VySWQsIGRhdGEuaWQsIG5ldyBEYXRlKGRhdGEuY3JlYXRlZCksIG5ldyBEYXRlKGRhdGEudXBkYXRlZCksXG4gICAgICAgICAgc2VsZi5fY29ubmVjdGlvbi5hZGRBY2Nlc3NUb2tlbihkYXRhLmF1ZGlvVXJsKSk7XG4gICAgICAgIHJlc29sdmUoe3JlY29yZGluZ0lkOiBzZWxmLl9jb25uZWN0aW9uLl9yZWNvcmRpbmdJZCwgcmVjb3JkaW5nfSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHJlY29yZGVkQ2IoYWN0aXZlUmVjb3JkaW5nSWQsIGF1ZGlvQmxvYiwgZm9yY2VkU3RvcCkge1xuICAgICAgICBzZWxmLl9jb25uZWN0aW9uLmNhbGwoJ3JlY29yZGluZy5jbG9zZScsXG4gICAgICAgICAgW3NlbGYuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkXSkudGhlbihcbiAgICAgICAgICAvLyBSUEMgc3VjY2VzcyBjYWxsYmFja1xuICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAvLyBQYXNzIGFsb25nIGRldGFpbHMgdG8gdGhlIHN1Y2Nlc3MgY2FsbGJhY2tcbiAgICAgICAgICAgIF9jYihyZXMsIGZvcmNlZFN0b3ApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gUlBDIGVycm9yIGNhbGxiYWNrXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIENvbm5lY3Rpb24ubG9nUlBDRXJyb3IocmVzKTtcbiAgICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICByZWNvcmRlci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZWNvcmRlZCcsIHJlY29yZGVkQ2IpO1xuICAgICAgICByZWNvcmRlci5yZW1vdmVFdmVudExpc3RlbmVyKCdkYXRhYXZhaWxhYmxlJywgc3RhcnRTdHJlYW1pbmcpO1xuICAgICAgfVxuXG4gICAgICAvLyBTdGFydCBzdHJlYW1pbmcgdGhlIGJpbmFyeSBhdWRpbyB3aGVuIHRoZSB1c2VyIGluc3RydWN0c1xuICAgICAgLy8gdGhlIGF1ZGlvIHJlY29yZGVyIHRvIHN0YXJ0IHJlY29yZGluZy5cbiAgICAgIGZ1bmN0aW9uIHN0YXJ0U3RyZWFtaW5nKGNodW5rKSB7XG4gICAgICAgIGNvbnN0IGVuY29kZWQgPSBCYXNlNjRVdGlscy5fYXJyYXlCdWZmZXJUb0Jhc2U2NChjaHVuayk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdTZW5kaW5nIGF1ZGlvIGNodW5rIHRvIHdlYnNvY2tldCBmb3IgcmVjb3JkaW5nSWQ6ICcgK1xuICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkKTtcbiAgICAgICAgc2VsZi5fY29ubmVjdGlvbi5jYWxsKCdyZWNvcmRpbmcud3JpdGUnLFxuICAgICAgICAgIFtzZWxmLl9jb25uZWN0aW9uLl9yZWNvcmRpbmdJZCwgZW5jb2RlZCwgJ2Jhc2U2NCddKS50aGVuKFxuICAgICAgICAgIC8vIFJQQyBzdWNjZXNzIGNhbGxiYWNrXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIC8vIFdyb3RlIGRhdGEuXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnV3JvdGUgZGF0YScpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIFJQQyBlcnJvciBjYWxsYmFja1xuICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICBDb25uZWN0aW9uLmxvZ1JQQ0Vycm9yKHJlcyk7XG4gICAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHN0YXJ0UmVjb3JkaW5nKHJlY29yZGluZ0lkKSB7XG4gICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkID0gcmVjb3JkaW5nSWQ7XG4gICAgICAgIGNvbnNvbGUubG9nKCdHb3QgcmVjb3JkaW5nSWQgYWZ0ZXIgaW5pdGlhbGlzYXRpb246ICcgKyBzZWxmLl9jb25uZWN0aW9uLl9yZWNvcmRpbmdJZCk7XG4gICAgICB9XG5cbiAgICAgIHJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3JlY29yZGVkJywgcmVjb3JkZWRDYik7XG4gICAgICBzZWxmLl9jb25uZWN0aW9uLmNhbGwoJ3JlY29yZGluZy5pbml0X3JlY29yZGluZycsIFtdKVxuICAgICAgICAudGhlbihzdGFydFJlY29yZGluZylcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICBzZWxmLnNwZWVjaFJlY29yZGluZ0luaXRDaGFsbGVuZ2UoY2hhbGxlbmdlKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBwID0gbmV3IFByb21pc2UocmVzb2x2ZV8gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZWNvcmRlci5oYXNVc2VyTWVkaWFBcHByb3ZhbCgpKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlXygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdyZWFkeScsIHJlc29sdmVfKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBwLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYuc3BlZWNoUmVjb3JkaW5nSW5pdEF1ZGlvKHJlY29yZGVyLCBzdGFydFN0cmVhbWluZylcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiBub3RpZnkoJ1JlYWR5VG9SZWNlaXZlJykpXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKHJlamVjdCk7XG4gICAgfSlcbiAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXMpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24uX3JlY29yZGluZ0lkID0gbnVsbDtcbiAgICAgICAgQ29ubmVjdGlvbi5sb2dSUENFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzcGVlY2ggcmVjb3JkaW5nIGluIGEgc3BlZWNoIGNoYWxsZW5nZSBmcm9tIHRoZSBjdXJyZW50IGFjdGl2ZSB7QGxpbmsgT3JnYW5pc2F0aW9ufSBkZXJpdmVkIGZyb20gdGhlIE9BdXRoMlxuICAgKiBzY29wZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYWxsZW5nZUlkIC0gU3BlY2lmeSBhIHNwZWVjaCBjaGFsbGVuZ2UgaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlY29yZGluZ0lkIC0gU3BlY2lmeSBhIHNwZWVjaCByZWNvcmRpbmcgaWRlbnRpZmllci5cbiAgICogQHJldHVybnMge1Byb21pc2UuPFNwZWVjaFJlY29yZGluZz59IFByb21pc2UgY29udGFpbmluZyBhIFNwZWVjaFJlY29yZGluZy5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSB7QGxpbmsgU3BlZWNoQ2hhbGxlbmdlI2lkfSBmaWVsZCBpcyByZXF1aXJlZC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSB7QGxpbmsgU3BlZWNoUmVjb3JkaW5nI2lkfSBmaWVsZCBpcyByZXF1aXJlZC5cbiAgICogQHRocm93cyB7UHJvbWlzZS48RXJyb3I+fSBJZiBubyByZXN1bHQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgZ2V0U3BlZWNoUmVjb3JkaW5nKGNoYWxsZW5nZUlkLCByZWNvcmRpbmdJZCkge1xuICAgIGlmICghY2hhbGxlbmdlSWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2NoYWxsZW5nZUlkIGZpZWxkIGlzIHJlcXVpcmVkJykpO1xuICAgIH1cbiAgICBpZiAoIXJlY29yZGluZ0lkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdyZWNvcmRpbmdJZCBmaWVsZCBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG4gICAgY29uc3QgdXJsID0gdGhpcy5fY29ubmVjdGlvbi5fc2V0dGluZ3MuYXBpVXJsICsgJy9jaGFsbGVuZ2VzL3NwZWVjaC8nICsgY2hhbGxlbmdlSWQgKyAnL3JlY29yZGluZ3MvJyArIHJlY29yZGluZ0lkO1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLl9zZWN1cmVBamF4R2V0KHVybClcbiAgICAgIC50aGVuKGRhdGEgPT4gbmV3IFNwZWVjaFJlY29yZGluZyhjaGFsbGVuZ2VJZCwgZGF0YS51c2VySWQsIGRhdGEuaWQsIG5ldyBEYXRlKGRhdGEuY3JlYXRlZCksXG4gICAgICAgIG5ldyBEYXRlKGRhdGEudXBkYXRlZCksIHRoaXMuX2Nvbm5lY3Rpb24uYWRkQWNjZXNzVG9rZW4oZGF0YS5hdWRpb1VybCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW5kIHJldHVybiBhbGwgc3BlZWNoIHJlY29yZGluZ3MgaW4gYSBzcGVjaWZpYyBzcGVlY2ggY2hhbGxlbmdlIGZyb20gdGhlIGN1cnJlbnQgYWN0aXZlIHtAbGluayBPcmdhbmlzYXRpb259XG4gICAqIGRlcml2ZWQgZnJvbSB0aGUgT0F1dGgyIHNjb3BlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbGxlbmdlSWQgLSBTcGVjaWZ5IGEgc3BlZWNoIGNoYWxsZW5nZSBpZGVudGlmaWVyIHRvIGxpc3Qgc3BlZWNoIHJlY29yZGluZ3MgZm9yLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZS48U3BlZWNoUmVjb3JkaW5nW10+fSBQcm9taXNlIGNvbnRhaW5pbmcgYW4gYXJyYXkgb2YgU3BlZWNoUmVjb3JkaW5nLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IHtAbGluayBTcGVlY2hDaGFsbGVuZ2UjaWR9IGlzIHJlcXVpcmVkLlxuICAgKiBAdGhyb3dzIHtQcm9taXNlLjxFcnJvcj59IElmIG5vIHJlc3VsdCBjb3VsZCBub3QgYmUgZm91bmQuXG4gICAqL1xuICBnZXRTcGVlY2hSZWNvcmRpbmdzKGNoYWxsZW5nZUlkKSB7XG4gICAgaWYgKCFjaGFsbGVuZ2VJZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignY2hhbGxlbmdlSWQgZmllbGQgaXMgcmVxdWlyZWQnKSk7XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IHRoaXMuX2Nvbm5lY3Rpb24uX3NldHRpbmdzLmFwaVVybCArICcvY2hhbGxlbmdlcy9zcGVlY2gvJyArIGNoYWxsZW5nZUlkICsgJy9yZWNvcmRpbmdzJztcbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5fc2VjdXJlQWpheEdldCh1cmwpXG4gICAgICAudGhlbihkYXRhID0+IGRhdGEubWFwKGRhdHVtID0+IG5ldyBTcGVlY2hSZWNvcmRpbmcoY2hhbGxlbmdlSWQsIGRhdHVtLnVzZXJJZCwgZGF0dW0uaWQsIG5ldyBEYXRlKGRhdHVtLmNyZWF0ZWQpLFxuICAgICAgICBuZXcgRGF0ZShkYXR1bS51cGRhdGVkKSwgdGhpcy5fY29ubmVjdGlvbi5hZGRBY2Nlc3NUb2tlbihkYXR1bS5hdWRpb1VybCkpKSk7XG4gIH1cbn1cbiJdfQ== |
@@ -35,2 +35,2 @@ 'use strict'; | ||
exports.default = Base64Utils; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbmlzdHJhdGl2ZS1zZGsvdXRpbHMvYmFzZTY0LXV0aWxzLmpzIl0sIm5hbWVzIjpbIkJhc2U2NFV0aWxzIiwiX2FycmF5QnVmZmVyVG9CYXNlNjQiLCJidWZmZXIiLCJiaW5hcnkiLCJieXRlcyIsIlVpbnQ4QXJyYXkiLCJsZW4iLCJieXRlTGVuZ3RoIiwiaSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsIndpbmRvdyIsImJ0b2EiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7SUFHcUJBLFc7Ozs7O0FBRW5COzs7Ozs7Y0FNT0Msb0IsaUNBQXFCQyxNLEVBQVE7QUFDbEMsUUFBSUMsU0FBUyxFQUFiO0FBQ0EsUUFBTUMsUUFBUSxJQUFJQyxVQUFKLENBQWVILE1BQWYsQ0FBZDtBQUNBLFFBQU1JLE1BQU1GLE1BQU1HLFVBQWxCO0FBQ0EsU0FBSyxJQUFJQyxJQUFJLENBQWIsRUFBZ0JBLElBQUlGLEdBQXBCLEVBQXlCRSxHQUF6QixFQUE4QjtBQUM1QkwsZ0JBQVVNLE9BQU9DLFlBQVAsQ0FBb0JOLE1BQU1JLENBQU4sQ0FBcEIsQ0FBVjtBQUNEO0FBQ0QsV0FBT0csT0FBT0MsSUFBUCxDQUFZVCxNQUFaLENBQVA7QUFDRCxHOzs7OztrQkFoQmtCSCxXIiwiZmlsZSI6ImJhc2U2NC11dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFzZTY0VXRpbHMge1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGFuIGFycmF5IGJ1ZmZlciB0byBhIGJhc2U2NCBlbmNvZGVkIGJpbmFyeSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7YnVmZmVyfSBidWZmZXIgLSBCdWZmZXIgb2YgZGF0YS5cbiAgICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0IGVuY29kZWQgYmluYXJ5IHN0cmluZy5cbiAgICovXG4gIHN0YXRpYyBfYXJyYXlCdWZmZXJUb0Jhc2U2NChidWZmZXIpIHtcbiAgICBsZXQgYmluYXJ5ID0gJyc7XG4gICAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICAgIGNvbnN0IGxlbiA9IGJ5dGVzLmJ5dGVMZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gd2luZG93LmJ0b2EoYmluYXJ5KTtcbiAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbmlzdHJhdGl2ZS1zZGsvdXRpbHMvYmFzZTY0LXV0aWxzLmpzIl0sIm5hbWVzIjpbIkJhc2U2NFV0aWxzIiwiX2FycmF5QnVmZmVyVG9CYXNlNjQiLCJidWZmZXIiLCJiaW5hcnkiLCJieXRlcyIsIlVpbnQ4QXJyYXkiLCJsZW4iLCJieXRlTGVuZ3RoIiwiaSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsIndpbmRvdyIsImJ0b2EiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7SUFHcUJBLFc7Ozs7O0FBQ25COzs7Ozs7Y0FNT0Msb0IsaUNBQXFCQyxNLEVBQVE7QUFDbEMsUUFBSUMsU0FBUyxFQUFiO0FBQ0EsUUFBTUMsUUFBUSxJQUFJQyxVQUFKLENBQWVILE1BQWYsQ0FBZDtBQUNBLFFBQU1JLE1BQU1GLE1BQU1HLFVBQWxCO0FBQ0EsU0FBSyxJQUFJQyxJQUFJLENBQWIsRUFBZ0JBLElBQUlGLEdBQXBCLEVBQXlCRSxHQUF6QixFQUE4QjtBQUM1QkwsZ0JBQVVNLE9BQU9DLFlBQVAsQ0FBb0JOLE1BQU1JLENBQU4sQ0FBcEIsQ0FBVjtBQUNEO0FBQ0QsV0FBT0csT0FBT0MsSUFBUCxDQUFZVCxNQUFaLENBQVA7QUFDRCxHOzs7OztrQkFma0JILFciLCJmaWxlIjoiYmFzZTY0LXV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYXNlNjRVdGlscyB7XG4gIC8qKlxuICAgKiBDb252ZXJ0IGFuIGFycmF5IGJ1ZmZlciB0byBhIGJhc2U2NCBlbmNvZGVkIGJpbmFyeSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7YnVmZmVyfSBidWZmZXIgLSBCdWZmZXIgb2YgZGF0YS5cbiAgICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0IGVuY29kZWQgYmluYXJ5IHN0cmluZy5cbiAgICovXG4gIHN0YXRpYyBfYXJyYXlCdWZmZXJUb0Jhc2U2NChidWZmZXIpIHtcbiAgICBsZXQgYmluYXJ5ID0gJyc7XG4gICAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICAgIGNvbnN0IGxlbiA9IGJ5dGVzLmJ5dGVMZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gd2luZG93LmJ0b2EoYmluYXJ5KTtcbiAgfVxufVxuIl19 |
@@ -27,2 +27,2 @@ "use strict"; | ||
exports.default = Word; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbmlzdHJhdGl2ZS1zZGsvd29yZC93b3JkLmpzIl0sIm5hbWVzIjpbIldvcmQiLCJjaHVua3MiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7SUFHdUJBLEk7QUFDckI7Ozs7O0FBS0UsY0FBWUMsTUFBWixFQUFvQjtBQUFBOztBQUNwQjs7OztBQUlFLE9BQUtBLE1BQUwsR0FBY0EsTUFBZDtBQUNELEM7O2tCQVprQkQsSSIsImZpbGUiOiJ3b3JkLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY2xhc3MgV29yZFxuICovXG4gIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFdvcmQge1xuICAvKipcbiAgICogQ3JlYXRlIGEgd29yZCBkb21haW4gbW9kZWwuXG4gICAqXG4gICAqIEBwYXJhbSB7V29yZENodW5rW119IGNodW5rcyAtIFRoZSBzcG9rZW4gc2VudGVuY2UsIHNwbGl0IGluIGdyYXBoZW1lcyBwZXIgd29yZC5cbiAgICovXG4gICAgY29uc3RydWN0b3IoY2h1bmtzKSB7XG4gICAgLyoqXG4gICAgICogVGhlIHNwb2tlbiBzZW50ZW5jZSwgc3BsaXQgaW4gZ3JhcGhlbWVzIHBlciB3b3JkLlxuICAgICAqIEB0eXBlIHtXb3JkQ2h1bmtbXX1cbiAgICAgKi9cbiAgICAgIHRoaXMuY2h1bmtzID0gY2h1bmtzO1xuICAgIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbmlzdHJhdGl2ZS1zZGsvd29yZC93b3JkLmpzIl0sIm5hbWVzIjpbIldvcmQiLCJjaHVua3MiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7SUFHcUJBLEk7QUFDbkI7Ozs7O0FBS0EsY0FBWUMsTUFBWixFQUFvQjtBQUFBOztBQUNsQjs7OztBQUlBLE9BQUtBLE1BQUwsR0FBY0EsTUFBZDtBQUNELEM7O2tCQVprQkQsSSIsImZpbGUiOiJ3b3JkLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY2xhc3MgV29yZFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXb3JkIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIHdvcmQgZG9tYWluIG1vZGVsLlxuICAgKlxuICAgKiBAcGFyYW0ge1dvcmRDaHVua1tdfSBjaHVua3MgLSBUaGUgc3Bva2VuIHNlbnRlbmNlLCBzcGxpdCBpbiBncmFwaGVtZXMgcGVyIHdvcmQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjaHVua3MpIHtcbiAgICAvKipcbiAgICAgKiBUaGUgc3Bva2VuIHNlbnRlbmNlLCBzcGxpdCBpbiBncmFwaGVtZXMgcGVyIHdvcmQuXG4gICAgICogQHR5cGUge1dvcmRDaHVua1tdfVxuICAgICAqL1xuICAgIHRoaXMuY2h1bmtzID0gY2h1bmtzO1xuICB9XG59XG4iXX0= |
@@ -145,4 +145,3 @@ 'use strict'; | ||
* | ||
* This function only allows to make calls to the ITSLanguage API using | ||
* partial URLs. | ||
* This function only allows to make calls to the ITSLanguage API. | ||
* | ||
@@ -164,5 +163,4 @@ * @param {string} method - The request METHOD ('GET', 'POST', 'PUT', 'DELETE'). | ||
// connection reference. | ||
if (url && !url.startsWith('/')) { | ||
console.warn('Complete URLs will soon be disallowed in authorised requests.'); | ||
// return Promise.reject('Only relative ITSLanguage API URLs are allowed.'); | ||
if (url && !url.startsWith('/') && !url.startsWith(settings.apiURL)) { | ||
return Promise.reject('Only relative ITSLanguage API URLs are allowed.'); | ||
} | ||
@@ -179,2 +177,2 @@ | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvY29tbXVuaWNhdGlvbi9pbmRleC5qcyJdLCJuYW1lcyI6WyJ1cGRhdGVTZXR0aW5ncyIsInJlcXVlc3QiLCJhdXRob3Jpc2VkUmVxdWVzdCIsIkNPTlRFTlRfVFlQRSIsIkFVVEhPUklaQVRJT04iLCJBUFBMSUNBVElPTl9KU09OIiwic2V0dGluZ3MiLCJhcGlVUkwiLCJ3c1VSTCIsImF1dGhvcml6YXRpb25Ub2tlbiIsIm5ld1NldHRpbmdzIiwiT2JqZWN0IiwiRXJyb3IiLCJhc3NpZ24iLCJoYW5kbGVSZXNwb25zZSIsInJlc3BvbnNlIiwicmVzcG9uc2VDb250ZW50VHlwZSIsImhlYWRlcnMiLCJnZXQiLCJpbmNsdWRlcyIsImpzb24iLCJ0aGVuIiwib2siLCJQcm9taXNlIiwicmVqZWN0Iiwic3RhdHVzIiwic3RhdHVzVGV4dCIsIm1ldGhvZCIsInVybCIsImJvZHkiLCJyZXF1ZXN0SGVhZGVycyIsIkhlYWRlcnMiLCJyZXF1ZXN0Qm9keSIsIlVSTFNlYXJjaFBhcmFtcyIsIkZvcm1EYXRhIiwic2V0IiwiSlNPTiIsInN0cmluZ2lmeSIsInJlcXVlc3RVUkwiLCJzdGFydHNXaXRoIiwicmVxdWVzdE9wdGlvbnMiLCJmZXRjaCIsImdldEJlYXJlclRva2VuIiwiY29uc29sZSIsIndhcm4iLCJ1bmF1dGhvcmlzZWQiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7UUErQmdCQSxjLEdBQUFBLGM7UUFpRUFDLE8sR0FBQUEsTztRQThEQUMsaUIsR0FBQUEsaUI7QUE5SmhCOzs7OztBQUtBO0FBQ0EsSUFBTUMsZUFBZSxjQUFyQjtBQUNBLElBQU1DLGdCQUFnQixlQUF0Qjs7QUFFQTtBQUNBLElBQU1DLG1CQUFtQixrQkFBekI7O0FBR0E7OztBQUdPLElBQU1DLDhCQUFXO0FBQ3RCQyxVQUFRLDRCQURjO0FBRXRCQyxTQUFPLElBRmU7QUFHdEJDLHNCQUFvQjtBQUhFLENBQWpCOztBQU9QOzs7Ozs7OztBQVFPLFNBQVNULGNB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QUFQLEVBQXFCO0FBQ3JCLFdBQU90QixRQUFRQyxNQUFSLENBQWVxQixhQUFhQyxPQUE1QixDQUFQO0FBQ0Q7QUFDRiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBzZXR0aW5ncyBhbmQgdGhlIGNvbW11bmljYXRpb24gbWVjaGFuaXNtIGZvciB0aGVcbiAqIElUU0xhbmd1YWdlIFJFU1QgQVBJLlxuICovXG5cbi8vIEhlYWRlcnNcbmNvbnN0IENPTlRFTlRfVFlQRSA9ICdDb250ZW50LVR5cGUnO1xuY29uc3QgQVVUSE9SSVpBVElPTiA9ICdBdXRob3JpemF0aW9uJztcblxuLy8gQ29udGVudC1UeXBlc1xuY29uc3QgQVBQTElDQVRJT05fSlNPTiA9ICdhcHBsaWNhdGlvbi9qc29uJztcblxuXG4vKipcbiAqIFRoZSBzZXR0aW5ncyB0byB1c2UgZm9yIHRoZSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIElUU0xhbmd1YWdlIEFQSS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldHRpbmdzID0ge1xuICBhcGlVUkw6ICdodHRwczovL2FwaS5pdHNsYW5ndWFnZS5ubCcsXG4gIHdzVVJMOiBudWxsLFxuICBhdXRob3JpemF0aW9uVG9rZW46IG51bGxcbn07XG5cblxuLyoqXG4gKiBVcGRhdGUgdGhlIHNldHRpbmdzIHdpdGggdGhlIGBuZXdTZXR0aW5nc2AuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG5ld1NldHRpbmdzIC0gVGhlIHNldHRpbmdzIHRvIGluamVjdC91cGRhdGUuXG4gKlxuICogQHRocm93cyB7RXJyb3J9IC0gV2hlbiB0aGUgZ2l2ZW4gYG5ld1NldHRpbmdzYCBpcyBzb21ldGhpbmcgb3RoZXIgdGhhbiBhXG4gKiAgICAgICAgICAgICAgICAgICBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTZXR0aW5ncyhuZXdTZXR0aW5ncykge1xuICBpZiAoIW5ld1NldHRpbmdzIHx8ICEobmV3U2V0dGluZ3MgaW5zdGFuY2VvZiBPYmplY3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UsIG9ubHkgcHJvdmlkZSBvYmplY3RzIGFzIHNldHRpbmdzLicpO1xuICB9XG5cbiAgT2JqZWN0LmFzc2lnbihzZXR0aW5ncywgbmV3U2V0dGluZ3MpO1xufVxuXG5cbi8qKlxuICogUGFyc2UgdGhlIHJlc3BvbnNlIG9mIGEgZmV0Y2ggcmVxdWVzdC5cbiAqXG4gKiBUcnkgdG8gcGFyc2UgdGhlIGdpdmVuIHJlc3BvbnNlIGJvZHkgYXMgSlNPTiwgaWYgaXQgaXNuJ3QgTGVhdmUgdGhlXG4gKiByZXNwb25zZSBhcyBpcy5cbiAqXG4gKiBAcGFyYW0ge1Jlc3BvbnNlfSByZXNwb25zZSAtIFRoZSByZXNwb25zZSB0byBwYXJzZS5cbiAqXG4gKiBAdGhyb3dzIHtQcm9taXNlLjxTdHJpbmc+fSAtIFdoZW4gdGhlIHJlcXVldHMgd2FzIG5vdCBva2F5IGFuZCB0aGUgY29udGVudHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlc3BvbnNlIGlzbid0IGpzb24uXG4gKiBAdGhyb3dzIHtQcm9taXNlLjxPYmplY3Q+fSAtIFdoZW4gdGhlIHJlcXVldHMgd2FzIG5vdCBva2F5IGFuZCB0aGUgY29udGVudHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlc3BvbnNlIGlzIGpzb24uXG4gKlxuICogQHJldHVybnMge1Byb21pc2UuPE9iamVjdD59IC0gVGhlIGNvbnRlbnRzIG9mIGEgSlNPTiByZXNwb25zZSBvciB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlIGl0c2VsZiBpZiB0aGUgYm9keSBpcyBzb21ldGhpbmcgb3RoZXJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gSlNPTi5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgY29uc3QgcmVzcG9uc2VDb250ZW50VHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KENPTlRFTlRfVFlQRSk7XG5cbiAgLy8gVGhlIElUU0xhbmd1YWdlIEFQSSBzaG91bGQgcmV0dXJuIEpTT04uIElmIHRcbiAgaWYgKHJlc3BvbnNlQ29udGVudFR5cGUgJiYgcmVzcG9uc2VDb250ZW50VHlwZS5pbmNsdWRlcyhBUFBMSUNBVElPTl9KU09OKSkge1xuICAgIHJldHVybiByZXNwb25zZS5qc29uKCkudGhlbihqc29uID0+IHtcbiAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGpzb24pO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cblxuLyoqXG4gKiBQZXJmb3JtIGFuIEhUVFAgcmVxdWVzdCBmb3IgdGhlIGdpdmVuIG1ldGhvZCwgdXJsLCBib2R5LCBhbmQgaGVhZGVycy5cbiAqXG4gKiBJbiBjYXNlIHRoZSBnaXZlbiB1cmwgaXMgYSBwYXJ0aWFsIHVybCwgbWVhbmluZyBpdCBzdGFydHMgd2l0aCBhIGAvYCwgdGhlXG4gKiBiYXNlIFVSTCB0byB0aGUgSVRTTGFuZ3VhZ2UgQVBJIGlzIHByZXBlbmRlZC5cbiAqXG4gKiBXaGVuIGEgT2JqZWN0IGluc3RhbmNlIGlzIHByb3ZpZGVkIGFzIGJvZHksIGl0J2xsIGJlIHRyYW5zZm9ybWVkIGludG8gSlNPTi5cbiAqIFVubGVzcyBpdCBpcyBlaXRoZXIgYSBgVVJMU2VhcmNoUGFyYW1zYCBvciBhIGBGb3JtRGF0YWAgb2JqZWN0LiBBbnl0aGluZ1xuICogZWxzZSBpcyBzZW50IGFzIHBsYWluIHRleHQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCAtIFRoZSByZXF1ZXN0IE1FVEhPRCAoJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnKS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBUaGUgbG9jYXRpb24gdG8gc2VuZCB0aGUgcmVxdWVzdCB0by5cbiAqIEBwYXJhbSB7Kn0gW2JvZHldIC0gQW55dGhpbmcgd2hpY2ggbmVlZHMgdG8gYmUgc2VudCBzb21ld2hlcmUuXG4gKiBAcGFyYW0ge0hlYWRlcnN9IFtoZWFkZXJzXSAtIEV4dHJhIGhlYWRlcnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxPYmplY3Q+fSBUaGUgcmVzcG9uc2Ugb2YgdGhlIG1hZGUgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMpIHtcbiAgY29uc3QgcmVxdWVzdEhlYWRlcnMgPSBoZWFkZXJzIHx8IG5ldyBIZWFkZXJzKCk7XG5cbiAgbGV0IHJlcXVlc3RCb2R5ID0gYm9keTtcbiAgaWYgKCEoYm9keSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcyB8fCBib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpICYmIGJvZHkgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICByZXF1ZXN0SGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgcmVxdWVzdEJvZHkgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgfVxuXG4gIGxldCByZXF1ZXN0VVJMID0gdXJsO1xuICAvLyBYWFggcmVtb3ZlIHRoZSBVUkwgdHJ1dGh5IGNoZWNrIHdoZW4gYWxsIHRlc3RzIGFyZSBwcm9wZXJseSB3cml0dGVuLiBOb3dcbiAgLy8gaXQgaGFwcGVucyB3YXkgdG8gb2Z0ZW4gdGhhdCB0aGUgVVJMIGlzIG9taXR0ZWQgd2l0aG91dCBhbnkgZ29vZCByZWFzb24uXG4gIGlmICh1cmwgJiYgdXJsLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgIHJlcXVlc3RVUkwgPSBgJHtzZXR0aW5ncy5hcGlVUkx9JHt1cmx9YDtcbiAgfVxuXG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIG1ldGhvZCxcbiAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVycyxcbiAgICBib2R5OiByZXF1ZXN0Qm9keVxuICB9O1xuXG4gIHJldHVybiBmZXRjaChyZXF1ZXN0VVJMLCByZXF1ZXN0T3B0aW9ucykudGhlbihoYW5kbGVSZXNwb25zZSk7XG59XG5cblxuLyoqXG4gKiBCdWlsZCBhIGJlYXJlciB0b2tlbiBmcm9tIHRoZSBgYXV0aG9yaXphdGlvblRva2VuYCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0LlxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSBXaGVuIG5vIGF1dGhvcml6YXRpb25Ub2tlbiBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGdlbmVyYXRlZCBiZWFyZXIgdG9rZW4uXG4gKi9cbmZ1bmN0aW9uIGdldEJlYXJlclRva2VuKCkge1xuICBpZiAoIXNldHRpbmdzLmF1dGhvcml6YXRpb25Ub2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIGF1dGhlbnRpY2F0ZSBmaXJzdC4nKTtcbiAgfVxuXG4gIHJldHVybiBgQmVhcmVyICR7c2V0dGluZ3MuYXV0aG9yaXphdGlvblRva2VufWA7XG59XG5cblxuLyoqXG4gKiBQZXJmb3JtIGFuIEhUVFAgcmVxdWVzdCB3aXRoIHRoZSBkZXNpcmVkIG1ldGhvZCwgYm9keSwgYW5kIGhlYWRlcnMgdG8gdGhlXG4gKiBnaXZlbiBwYXJ0aWFsIElUU0xhbmd1YWdlIEFQSSBVUkwuXG4gKlxuICogVGhpcyByZXF1ZXN0IHdpbGwgYWRkIHRoZSBgYEF1dGhvcml6YXRpb25gYCBoZWFkZXIgdG8gdGhlIHJlcXVlc3QuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBvbmx5IGFsbG93cyB0byBtYWtlIGNhbGxzIHRvIHRoZSBJVFNMYW5ndWFnZSBBUEkgdXNpbmdcbiAqIHBhcnRpYWwgVVJMcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIC0gVGhlIHJlcXVlc3QgTUVUSE9EICgnR0VUJywgJ1BPU1QnLCAnUFVUJywgJ0RFTEVURScpLlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBsb2NhdGlvbiB0byBzZW5kIHRoZSByZXF1ZXN0IHRvLlxuICogQHBhcmFtIHsqfSBbYm9keV0gLSBBbnl0aGluZyB3aGljaCBuZWVkcyB0byBiZSBzZW50IHNvbWV3aGVyZS5cbiAqIEBwYXJhbSB7SGVhZGVyc30gW2hlYWRlcnNdIC0gRXh0cmEgaGVhZGVycyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gKlxuICogQHRocm93cyB7UHJvbWlzZS48c3RyaW5nPn0gLSBXaGVuIHRoZSBnaXZlbiBgdXJsYCBwYXJhbSBpcyBub3QgYSBwYXJ0aWFsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVSTCwgb3Igd2hlbiB0aGVyZSBpcyBubyBhdXRob3Jpc2F0aW9uIHRva2VuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsaWJsZS5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48T2JqZWN0Pn0gLSBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgSVRTTGFuZ3VhZ2UgQVBJLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXV0aG9yaXNlZFJlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMpIHtcbiAgLy8gWFhYIHJlbW92ZSB0aGUgVVJMIHRydXRoeSBjaGVjayB3aGVuIGFsbCBwYXJ0cyBvZiB0aGUgU0RLIG5vIGxvbmdlciBidWlsZFxuICAvLyBhIGNvbXBsZXRlIHVybCBieSB0aGVtc2VsdmVzIHVzaW5nIHRoZSBcInByaXZhdGVcIiBzZXR0aW5ncyBvYmplY3Qgb2YgdGhlaXJcbiAgLy8gY29ubmVjdGlvbiByZWZlcmVuY2UuXG4gIGlmICh1cmwgJiYgIXVybC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICBjb25zb2xlLndhcm4oJ0NvbXBsZXRlIFVSTHMgd2lsbCBzb29uIGJlIGRpc2FsbG93ZWQgaW4gYXV0aG9yaXNlZCByZXF1ZXN0cy4nKTtcbiAgICAvLyByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ09ubHkgcmVsYXRpdmUgSVRTTGFuZ3VhZ2UgQVBJIFVSTHMgYXJlIGFsbG93ZWQuJyk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlcXVlc3RIZWFkZXJzID0gaGVhZGVycyB8fCBuZXcgSGVhZGVycygpO1xuICAgIHJlcXVlc3RIZWFkZXJzLnNldChBVVRIT1JJWkFUSU9OLCBnZXRCZWFyZXJUb2tlbigpKTtcblxuICAgIHJldHVybiByZXF1ZXN0KG1ldGhvZCwgdXJsLCBib2R5LCByZXF1ZXN0SGVhZGVycyk7XG4gIH0gY2F0Y2ggKHVuYXV0aG9yaXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh1bmF1dGhvcmlzZWQubWVzc2FnZSk7XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvY29tbXVuaWNhdGlvbi9pbmRleC5qcyJdLCJuYW1lcyI6WyJ1cGRhdGVTZXR0aW5ncyIsInJlcXVlc3QiLCJhdXRob3Jpc2VkUmVxdWVzdCIsIkNPTlRFTlRfVFlQRSIsIkFVVEhPUklaQVRJT04iLCJBUFBMSUNBVElPTl9KU09OIiwic2V0dGluZ3MiLCJhcGlVUkwiLCJ3c1VSTCIsImF1dGhvcml6YXRpb25Ub2tlbiIsIm5ld1NldHRpbmdzIiwiT2JqZWN0IiwiRXJyb3IiLCJhc3NpZ24iLCJoYW5kbGVSZXNwb25zZSIsInJlc3BvbnNlIiwicmVzcG9uc2VDb250ZW50VHlwZSIsImhlYWRlcnMiLCJnZXQiLCJpbmNsdWRlcyIsImpzb24iLCJ0aGVuIiwib2siLCJQcm9taXNlIiwicmVqZWN0Iiwic3RhdHVzIiwic3RhdHVzVGV4dCIsIm1ldGhvZCIsInVybCIsImJvZHkiLCJyZXF1ZXN0SGVhZGVycyIsIkhlYWRlcnMiLCJyZXF1ZXN0Qm9keSIsIlVSTFNlYXJjaFBhcmFtcyIsIkZvcm1EYXRhIiwic2V0IiwiSlNPTiIsInN0cmluZ2lmeSIsInJlcXVlc3RVUkwiLCJzdGFydHNXaXRoIiwicmVxdWVzdE9wdGlvbnMiLCJmZXRjaCIsImdldEJlYXJlclRva2VuIiwidW5hdXRob3Jpc2VkIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7O1FBK0JnQkEsYyxHQUFBQSxjO1FBaUVBQyxPLEdBQUFBLE87UUE2REFDLGlCLEdBQUFBLGlCO0FBN0poQjs7Ozs7QUFLQTtBQUNBLElBQU1DLGVBQWUsY0FBckI7QUFDQSxJQUFNQyxnQkFBZ0IsZUFBdEI7O0FBRUE7QUFDQSxJQUFNQyxtQkFBbUIsa0JBQXpCOztBQUdBOzs7QUFHTyxJQUFNQyw4QkFBVztBQUN0QkMsVUFBUSw0QkFEYztBQUV0QkMsU0FBTyxJQUZlO0FBR3RCQyxzQkFBb0I7QUFIRSxDQUFqQjs7QUFPUDs7Ozs7Ozs7QUFRTyxTQUFTVCxjQUFULENBQXdCVSxXQUF4QixF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QkMsY0FBM0IsQ0FBUDtBQUNELEdBTEQsQ0FLRSxPQUFPYSxZQUFQLEVBQXFCO0FBQ3JCLFdBQU9wQixRQUFRQyxNQUFSLENBQWVtQixhQUFhQyxPQUE1QixDQUFQO0FBQ0Q7QUFDRiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBzZXR0aW5ncyBhbmQgdGhlIGNvbW11bmljYXRpb24gbWVjaGFuaXNtIGZvciB0aGVcbiAqIElUU0xhbmd1YWdlIFJFU1QgQVBJLlxuICovXG5cbi8vIEhlYWRlcnNcbmNvbnN0IENPTlRFTlRfVFlQRSA9ICdDb250ZW50LVR5cGUnO1xuY29uc3QgQVVUSE9SSVpBVElPTiA9ICdBdXRob3JpemF0aW9uJztcblxuLy8gQ29udGVudC1UeXBlc1xuY29uc3QgQVBQTElDQVRJT05fSlNPTiA9ICdhcHBsaWNhdGlvbi9qc29uJztcblxuXG4vKipcbiAqIFRoZSBzZXR0aW5ncyB0byB1c2UgZm9yIHRoZSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIElUU0xhbmd1YWdlIEFQSS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldHRpbmdzID0ge1xuICBhcGlVUkw6ICdodHRwczovL2FwaS5pdHNsYW5ndWFnZS5ubCcsXG4gIHdzVVJMOiBudWxsLFxuICBhdXRob3JpemF0aW9uVG9rZW46IG51bGxcbn07XG5cblxuLyoqXG4gKiBVcGRhdGUgdGhlIHNldHRpbmdzIHdpdGggdGhlIGBuZXdTZXR0aW5nc2AuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG5ld1NldHRpbmdzIC0gVGhlIHNldHRpbmdzIHRvIGluamVjdC91cGRhdGUuXG4gKlxuICogQHRocm93cyB7RXJyb3J9IC0gV2hlbiB0aGUgZ2l2ZW4gYG5ld1NldHRpbmdzYCBpcyBzb21ldGhpbmcgb3RoZXIgdGhhbiBhXG4gKiAgICAgICAgICAgICAgICAgICBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTZXR0aW5ncyhuZXdTZXR0aW5ncykge1xuICBpZiAoIW5ld1NldHRpbmdzIHx8ICEobmV3U2V0dGluZ3MgaW5zdGFuY2VvZiBPYmplY3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UsIG9ubHkgcHJvdmlkZSBvYmplY3RzIGFzIHNldHRpbmdzLicpO1xuICB9XG5cbiAgT2JqZWN0LmFzc2lnbihzZXR0aW5ncywgbmV3U2V0dGluZ3MpO1xufVxuXG5cbi8qKlxuICogUGFyc2UgdGhlIHJlc3BvbnNlIG9mIGEgZmV0Y2ggcmVxdWVzdC5cbiAqXG4gKiBUcnkgdG8gcGFyc2UgdGhlIGdpdmVuIHJlc3BvbnNlIGJvZHkgYXMgSlNPTiwgaWYgaXQgaXNuJ3QgTGVhdmUgdGhlXG4gKiByZXNwb25zZSBhcyBpcy5cbiAqXG4gKiBAcGFyYW0ge1Jlc3BvbnNlfSByZXNwb25zZSAtIFRoZSByZXNwb25zZSB0byBwYXJzZS5cbiAqXG4gKiBAdGhyb3dzIHtQcm9taXNlLjxTdHJpbmc+fSAtIFdoZW4gdGhlIHJlcXVldHMgd2FzIG5vdCBva2F5IGFuZCB0aGUgY29udGVudHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlc3BvbnNlIGlzbid0IGpzb24uXG4gKiBAdGhyb3dzIHtQcm9taXNlLjxPYmplY3Q+fSAtIFdoZW4gdGhlIHJlcXVldHMgd2FzIG5vdCBva2F5IGFuZCB0aGUgY29udGVudHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlc3BvbnNlIGlzIGpzb24uXG4gKlxuICogQHJldHVybnMge1Byb21pc2UuPE9iamVjdD59IC0gVGhlIGNvbnRlbnRzIG9mIGEgSlNPTiByZXNwb25zZSBvciB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlIGl0c2VsZiBpZiB0aGUgYm9keSBpcyBzb21ldGhpbmcgb3RoZXJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gSlNPTi5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgY29uc3QgcmVzcG9uc2VDb250ZW50VHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KENPTlRFTlRfVFlQRSk7XG5cbiAgLy8gVGhlIElUU0xhbmd1YWdlIEFQSSBzaG91bGQgcmV0dXJuIEpTT04uIElmIHRcbiAgaWYgKHJlc3BvbnNlQ29udGVudFR5cGUgJiYgcmVzcG9uc2VDb250ZW50VHlwZS5pbmNsdWRlcyhBUFBMSUNBVElPTl9KU09OKSkge1xuICAgIHJldHVybiByZXNwb25zZS5qc29uKCkudGhlbihqc29uID0+IHtcbiAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGpzb24pO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cblxuLyoqXG4gKiBQZXJmb3JtIGFuIEhUVFAgcmVxdWVzdCBmb3IgdGhlIGdpdmVuIG1ldGhvZCwgdXJsLCBib2R5LCBhbmQgaGVhZGVycy5cbiAqXG4gKiBJbiBjYXNlIHRoZSBnaXZlbiB1cmwgaXMgYSBwYXJ0aWFsIHVybCwgbWVhbmluZyBpdCBzdGFydHMgd2l0aCBhIGAvYCwgdGhlXG4gKiBiYXNlIFVSTCB0byB0aGUgSVRTTGFuZ3VhZ2UgQVBJIGlzIHByZXBlbmRlZC5cbiAqXG4gKiBXaGVuIGEgT2JqZWN0IGluc3RhbmNlIGlzIHByb3ZpZGVkIGFzIGJvZHksIGl0J2xsIGJlIHRyYW5zZm9ybWVkIGludG8gSlNPTi5cbiAqIFVubGVzcyBpdCBpcyBlaXRoZXIgYSBgVVJMU2VhcmNoUGFyYW1zYCBvciBhIGBGb3JtRGF0YWAgb2JqZWN0LiBBbnl0aGluZ1xuICogZWxzZSBpcyBzZW50IGFzIHBsYWluIHRleHQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCAtIFRoZSByZXF1ZXN0IE1FVEhPRCAoJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnKS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBUaGUgbG9jYXRpb24gdG8gc2VuZCB0aGUgcmVxdWVzdCB0by5cbiAqIEBwYXJhbSB7Kn0gW2JvZHldIC0gQW55dGhpbmcgd2hpY2ggbmVlZHMgdG8gYmUgc2VudCBzb21ld2hlcmUuXG4gKiBAcGFyYW0ge0hlYWRlcnN9IFtoZWFkZXJzXSAtIEV4dHJhIGhlYWRlcnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxPYmplY3Q+fSBUaGUgcmVzcG9uc2Ugb2YgdGhlIG1hZGUgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMpIHtcbiAgY29uc3QgcmVxdWVzdEhlYWRlcnMgPSBoZWFkZXJzIHx8IG5ldyBIZWFkZXJzKCk7XG5cbiAgbGV0IHJlcXVlc3RCb2R5ID0gYm9keTtcbiAgaWYgKCEoYm9keSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcyB8fCBib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpICYmIGJvZHkgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICByZXF1ZXN0SGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgcmVxdWVzdEJvZHkgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgfVxuXG4gIGxldCByZXF1ZXN0VVJMID0gdXJsO1xuICAvLyBYWFggcmVtb3ZlIHRoZSBVUkwgdHJ1dGh5IGNoZWNrIHdoZW4gYWxsIHRlc3RzIGFyZSBwcm9wZXJseSB3cml0dGVuLiBOb3dcbiAgLy8gaXQgaGFwcGVucyB3YXkgdG8gb2Z0ZW4gdGhhdCB0aGUgVVJMIGlzIG9taXR0ZWQgd2l0aG91dCBhbnkgZ29vZCByZWFzb24uXG4gIGlmICh1cmwgJiYgdXJsLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgIHJlcXVlc3RVUkwgPSBgJHtzZXR0aW5ncy5hcGlVUkx9JHt1cmx9YDtcbiAgfVxuXG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIG1ldGhvZCxcbiAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVycyxcbiAgICBib2R5OiByZXF1ZXN0Qm9keVxuICB9O1xuXG4gIHJldHVybiBmZXRjaChyZXF1ZXN0VVJMLCByZXF1ZXN0T3B0aW9ucykudGhlbihoYW5kbGVSZXNwb25zZSk7XG59XG5cblxuLyoqXG4gKiBCdWlsZCBhIGJlYXJlciB0b2tlbiBmcm9tIHRoZSBgYXV0aG9yaXphdGlvblRva2VuYCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0LlxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSBXaGVuIG5vIGF1dGhvcml6YXRpb25Ub2tlbiBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGdlbmVyYXRlZCBiZWFyZXIgdG9rZW4uXG4gKi9cbmZ1bmN0aW9uIGdldEJlYXJlclRva2VuKCkge1xuICBpZiAoIXNldHRpbmdzLmF1dGhvcml6YXRpb25Ub2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIGF1dGhlbnRpY2F0ZSBmaXJzdC4nKTtcbiAgfVxuXG4gIHJldHVybiBgQmVhcmVyICR7c2V0dGluZ3MuYXV0aG9yaXphdGlvblRva2VufWA7XG59XG5cblxuLyoqXG4gKiBQZXJmb3JtIGFuIEhUVFAgcmVxdWVzdCB3aXRoIHRoZSBkZXNpcmVkIG1ldGhvZCwgYm9keSwgYW5kIGhlYWRlcnMgdG8gdGhlXG4gKiBnaXZlbiBwYXJ0aWFsIElUU0xhbmd1YWdlIEFQSSBVUkwuXG4gKlxuICogVGhpcyByZXF1ZXN0IHdpbGwgYWRkIHRoZSBgYEF1dGhvcml6YXRpb25gYCBoZWFkZXIgdG8gdGhlIHJlcXVlc3QuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBvbmx5IGFsbG93cyB0byBtYWtlIGNhbGxzIHRvIHRoZSBJVFNMYW5ndWFnZSBBUEkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCAtIFRoZSByZXF1ZXN0IE1FVEhPRCAoJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnKS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBUaGUgbG9jYXRpb24gdG8gc2VuZCB0aGUgcmVxdWVzdCB0by5cbiAqIEBwYXJhbSB7Kn0gW2JvZHldIC0gQW55dGhpbmcgd2hpY2ggbmVlZHMgdG8gYmUgc2VudCBzb21ld2hlcmUuXG4gKiBAcGFyYW0ge0hlYWRlcnN9IFtoZWFkZXJzXSAtIEV4dHJhIGhlYWRlcnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICpcbiAqIEB0aHJvd3Mge1Byb21pc2UuPHN0cmluZz59IC0gV2hlbiB0aGUgZ2l2ZW4gYHVybGAgcGFyYW0gaXMgbm90IGEgcGFydGlhbFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkwsIG9yIHdoZW4gdGhlcmUgaXMgbm8gYXV0aG9yaXNhdGlvbiB0b2tlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGlibGUuXG4gKlxuICogQHJldHVybnMge1Byb21pc2UuPE9iamVjdD59IC0gVGhlIHJlc3BvbnNlIGZyb20gdGhlIElUU0xhbmd1YWdlIEFQSS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1dGhvcmlzZWRSZXF1ZXN0KG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJzKSB7XG4gIC8vIFhYWCByZW1vdmUgdGhlIFVSTCB0cnV0aHkgY2hlY2sgd2hlbiBhbGwgcGFydHMgb2YgdGhlIFNESyBubyBsb25nZXIgYnVpbGRcbiAgLy8gYSBjb21wbGV0ZSB1cmwgYnkgdGhlbXNlbHZlcyB1c2luZyB0aGUgXCJwcml2YXRlXCIgc2V0dGluZ3Mgb2JqZWN0IG9mIHRoZWlyXG4gIC8vIGNvbm5lY3Rpb24gcmVmZXJlbmNlLlxuICBpZiAodXJsICYmICghdXJsLnN0YXJ0c1dpdGgoJy8nKSAmJiAhdXJsLnN0YXJ0c1dpdGgoc2V0dGluZ3MuYXBpVVJMKSkpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ09ubHkgcmVsYXRpdmUgSVRTTGFuZ3VhZ2UgQVBJIFVSTHMgYXJlIGFsbG93ZWQuJyk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlcXVlc3RIZWFkZXJzID0gaGVhZGVycyB8fCBuZXcgSGVhZGVycygpO1xuICAgIHJlcXVlc3RIZWFkZXJzLnNldChBVVRIT1JJWkFUSU9OLCBnZXRCZWFyZXJUb2tlbigpKTtcblxuICAgIHJldHVybiByZXF1ZXN0KG1ldGhvZCwgdXJsLCBib2R5LCByZXF1ZXN0SGVhZGVycyk7XG4gIH0gY2F0Y2ggKHVuYXV0aG9yaXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh1bmF1dGhvcmlzZWQubWVzc2FnZSk7XG4gIH1cbn1cbiJdfQ== |
'use strict'; | ||
exports.__esModule = true; | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /** | ||
* | ||
*/ | ||
exports.openWebsocketConnection = openWebsocketConnection; | ||
exports.getWebsocketConnection = getWebsocketConnection; | ||
exports.closeWebsocketConnection = closeWebsocketConnection; | ||
@@ -12,2 +18,6 @@ exports.makeWebsocketCall = makeWebsocketCall; | ||
var _debug = require('debug'); | ||
var _debug2 = _interopRequireDefault(_debug); | ||
var _index = require('./index'); | ||
@@ -17,2 +27,6 @@ | ||
var log = (0, _debug2.default)('its-sdk:WebSocket'); | ||
var error = (0, _debug2.default)('its-sdk:WebSocket'); | ||
log.log = console.log.bind(console); | ||
/** | ||
@@ -23,6 +37,2 @@ * Keep hold of the currently open autobahn connection. | ||
*/ | ||
/** | ||
* | ||
*/ | ||
var bundesautobahn = void 0; | ||
@@ -59,6 +69,8 @@ | ||
var bahn = new _autobahn2.default.Connection({ | ||
url: _index.settings.WS_URL, | ||
url: _index.settings.wsURL, | ||
realm: 'default', | ||
// Of course we want to use es6 promises if they are availbile. | ||
use_es6_promises: true, // eslint-disable-line camelcase | ||
// But, the backend sometimes spits out progress. For that we need | ||
// a When.JS promise.. | ||
use_es6_promises: false, // eslint-disable-line camelcase | ||
// The following options are required in order to authorise the | ||
@@ -86,2 +98,3 @@ // connection. | ||
bahn.onopen = function () { | ||
log('Successfully established a websocket connection.'); | ||
// Remove the `onclose` handler as it is no longer of interest to us. | ||
@@ -116,7 +129,7 @@ delete bahn.onclose; | ||
return establishNewBundesbahn(); | ||
} | ||
}) | ||
// `bundesautobahn` actually resolved with the `autobahn.Connection` | ||
// object. This is only meant for internal usage and therefore should not | ||
// be exposed to the users of the SDK. | ||
).then(function () { | ||
.then(function () { | ||
return 'Successfully established a websocket connection.'; | ||
@@ -156,3 +169,5 @@ }); | ||
bundesautobahn = null; | ||
return 'The websocket connection has been closed successfully.'; | ||
var message = 'The websocket connection has been closed successfully.'; | ||
log(message); | ||
return message; | ||
} catch (reason) { | ||
@@ -164,3 +179,5 @@ // `autobahn.Connection.close()` throws a string when the connection is | ||
bundesautobahn = null; | ||
return 'The websocket connection has already been closed.'; | ||
var _message = 'The websocket connection has already been closed.'; | ||
error(_message); | ||
return _message; | ||
} | ||
@@ -171,3 +188,3 @@ }); | ||
/** | ||
* Make a (raw) call to the its-ws server. | ||
* Make a rpc call to the ITSLanguage websocket server. | ||
* | ||
@@ -180,13 +197,42 @@ * This method will try to establish a websocket connection if there isn't one | ||
* when the RPC starts with that prefix. | ||
* @param {Array} [args] - The positional arguments to pass to the RPC. | ||
* @param {Object} [kwargs] - The key word mapped arguments to pass to the RPC. | ||
* @param {Object} [options] - The options to pass to the RPC. | ||
* @param {Object} [options] - Destructured object with options to pass to the websocket server. | ||
* @param {Array} [options.args] - An array with arguments to pass to the RPC. | ||
* @param {Object} [options.kwargs] - An object (dictionary) with arguments to pass to the RPC. | ||
* @param {Object} [options.options] - The options to pass to the RPC. | ||
* @param {Function} [options.progressCb] - Optional callback to receive progressed results. | ||
* | ||
* @returns {Promise.<*>} - The response of the websocket call. | ||
*/ | ||
function makeWebsocketCall(rpc, args, kwargs, options) { | ||
function makeWebsocketCall(rpc) { | ||
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, | ||
args = _ref.args, | ||
kwargs = _ref.kwargs, | ||
options = _ref.options, | ||
progressCb = _ref.progressCb; | ||
var mergedOptions = options; | ||
if (progressCb) { | ||
mergedOptions = _extends({}, options, { | ||
receive_progress: true // eslint-disable-line camelcase | ||
}); | ||
} | ||
return getWebsocketConnection().then(function (connection) { | ||
return connection.session.call('nl.itslanguage.' + rpc, args, kwargs, options); | ||
return connection.session.call('nl.itslanguage.' + rpc, args, kwargs, mergedOptions).progress(progressCb); | ||
}).catch(function (result) { | ||
var wssError = result.error, | ||
wssKwargs = result.kwargs, | ||
wssArgs = result.args; | ||
// Log the error to stderr | ||
error(result); | ||
// Return a slightly simplistic version of the error that occurred | ||
return Promise.reject(_extends({ | ||
error: wssError | ||
}, wssKwargs, { | ||
args: [].concat(wssArgs) | ||
})); | ||
}); | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvY29tbXVuaWNhdGlvbi93ZWJzb2NrZXQuanMiXSwibmFtZXMiOlsib3BlbldlYnNvY2tldENvbm5lY3Rpb24iLCJjbG9zZVdlYnNvY2tldENvbm5lY3Rpb24iLCJtYWtlV2Vic29ja2V0Q2FsbCIsImJ1bmRlc2F1dG9iYWhuIiwiaGFuZGxlV2Vic29ja2V0QXV0aG9yaXNhdGlvbkNoYWxsZW5nZSIsInNlc3Npb24iLCJtZXRob2QiLCJhdXRob3JpemF0aW9uVG9rZW4iLCJFcnJvciIsImVzdGFibGlzaE5ld0J1bmRlc2JhaG4iLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImJhaG4iLCJDb25uZWN0aW9uIiwidXJsIiwiV1NfVVJMIiwicmVhbG0iLCJ1c2VfZXM2X3Byb21pc2VzIiwiYXV0aG1ldGhvZHMiLCJhdXRoaWQiLCJkZXRhaWxzIiwidGlja2V0Iiwib25jaGFsbGVuZ2UiLCJvbmNsb3NlIiwibWVzc2FnZSIsIm9ub3BlbiIsIm9wZW4iLCJjYXRjaCIsInJlYXNvbiIsInRoZW4iLCJnZXRXZWJzb2NrZXRDb25uZWN0aW9uIiwiY2xvc2UiLCJycGMiLCJhcmdzIiwia3dhcmdzIiwib3B0aW9ucyIsImNvbm5lY3Rpb24iLCJjYWxsIl0sIm1hcHBpbmdzIjoiOzs7UUF1R2dCQSx1QixHQUFBQSx1QjtRQWdDQUMsd0IsR0FBQUEsd0I7UUFzQ0FDLGlCLEdBQUFBLGlCOztBQXpLaEI7Ozs7QUFDQTs7OztBQUdBOzs7OztBQVJBOzs7O0FBYUEsSUFBSUMsdUJBQUo7O0FBR0E7Ozs7Ozs7OztBQVNBLFNBQVNDLHFDQUFULENBQStDQyxPQUEvQyxFQUF3REMsTUFBeEQsRUFBZ0U7QUFDOUQsVUFBUUEsTUFBUjtBQUNFLFNBQUssUUFBTDtBQUNFLGFBQU8sZ0JBQVNDLGtCQUFoQjtBQUNGO0FBQ0UsWUFBTSxJQUFJQyxLQUFKLENBQVUsb0ZBQzhCRixNQUQ5QixPQUFWLENBQU47QUFKSjtBQU9EOztBQUdEOzs7Ozs7OztBQVFBLFNBQVNHLHNCQUFULEdBQWtDO0FBQ2hDTixtQkFBaUIsSUFBSU8sT0FBSixDQUFZLFVBQUNDLE9BQUQsRUFBVUMsTUFBVixFQUFxQjtBQUNoRCxRQUFNQyxPQUFPLElBQUksbUJBQVNDLFVBQWIsQ0FBd0I7QUFDbkNDLFdBQUssZ0JBQVNDLE1BRHFCO0FBRW5DQyxhQUFPLFNBRjRCO0FBR25DO0FBQ0FDLHdCQUFrQixJQUppQixFQUlYO0FBQ3hCO0FBQ0E7QUFDQUMsbUJBQWEsQ0FBQyxRQUFELENBUHNCO0FBUW5DQyxjQUFRLFFBUjJCO0FBU25DQyxlQUFTO0FBQ1BDLGdCQUFRLGdCQUFTZjtBQURWLE9BVDBCO0FBWW5DZ0IsbUJBQWFuQjtBQVpzQixLQUF4QixDQUFiOztBQWVBO0FBQ0E7QUFDQVMsU0FBS1csT0FBTCxHQUFlLFlBQUMscUJBQTBCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLFVBQU1DLFVBQVUsd0RBQ0Esd0NBREEsR0FFQSx1REFGQSxHQUdBLCtDQUhoQjtBQUlBYixhQUFPYSxPQUFQO0FBQ0QsS0FURDs7QUFXQTtBQUNBWixTQUFLYSxNQUFMLEdBQWMsWUFBTTtBQUNsQjtBQUNBLGFBQU9iLEtBQUtXLE9BQVo7QUFDQWIsY0FBUUUsSUFBUjtBQUNELEtBSkQ7O0FBTUFBLFNBQUtjLElBQUw7QUFDRCxHQXJDZ0IsQ0FBakI7O0FBdUNBO0FBQ0E7QUFDQTtBQUNBLFNBQU94QixlQUFleUIsS0FBZixDQUFxQixrQkFBVTtBQUNwQ3pCLHFCQUFpQixJQUFqQjtBQUNBLFdBQU9PLFFBQVFFLE1BQVIsQ0FBZWlCLE1BQWYsQ0FBUDtBQUNELEdBSE0sQ0FBUDtBQUlEOztBQUdEOzs7Ozs7Ozs7QUFTTyxTQUFTN0IsdUJBQVQsR0FBbUM7QUFDeEMsU0FBT0MsMkJBQ0o2QixJQURJLENBQ0M7QUFBQSxXQUFNckIsd0JBQU47QUFBQTtBQUNOO0FBQ0E7QUFDQTtBQUpLLElBS0pxQixJQUxJLENBS0M7QUFBQSxXQUFNLGtEQUFOO0FBQUEsR0FMRCxDQUFQO0FBTUQ7O0FBR0Q7Ozs7Ozs7QUFPQSxTQUFTQyxzQkFBVCxHQUFrQztBQUNoQyxNQUFJLENBQUM1QixjQUFMLEVBQXFCO0FBQ25CLFdBQU9NLHdCQUFQO0FBQ0Q7O0FBRUQsU0FBT04sY0FBUDtBQUNEOztBQUdEOzs7Ozs7QUFNTyxTQUFTRix3QkFBVCxHQUFvQztBQUN6QyxNQUFJLENBQUNFLGNBQUwsRUFBcUI7QUFDbkIsV0FBT08sUUFBUUMsT0FBUixDQUFnQiw0Q0FBaEIsQ0FBUDtBQUNEOztBQUVELFNBQU9SLGVBQ0oyQixJQURJLENBQ0MsZ0JBQVE7QUFDWixRQUFJO0FBQ0ZqQixXQUFLbUIsS0FBTDtBQUNBN0IsdUJBQWlCLElBQWpCO0FBQ0EsYUFBTyx3REFBUDtBQUNELEtBSkQsQ0FJRSxPQUFPMEIsTUFBUCxFQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTFCLHVCQUFpQixJQUFqQjtBQUNBLGFBQU8sbURBQVA7QUFDRDtBQUNGLEdBZEksQ0FBUDtBQWVEOztBQUdEOzs7Ozs7Ozs7Ozs7Ozs7QUFlTyxTQUFTRCxpQkFBVCxDQUEyQitCLEdBQTNCLEVBQWdDQyxJQUFoQyxFQUFzQ0MsTUFBdEMsRUFBOENDLE9BQTlDLEVBQXVEO0FBQzVELFNBQU9MLHlCQUNKRCxJQURJLENBQ0M7QUFBQSxXQUFjTyxXQUFXaEMsT0FBWCxDQUFtQmlDLElBQW5CLHFCQUEwQ0wsR0FBMUMsRUFBaURDLElBQWpELEVBQXVEQyxNQUF2RCxFQUErREMsT0FBL0QsQ0FBZDtBQUFBLEdBREQsQ0FBUDtBQUVEIiwiZmlsZSI6IndlYnNvY2tldC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqL1xuXG5pbXBvcnQgYXV0b2JhaG4gZnJvbSAnYXV0b2JhaG4nO1xuaW1wb3J0IHtzZXR0aW5nc30gZnJvbSAnLi9pbmRleCc7XG5cblxuLyoqXG4gKiBLZWVwIGhvbGQgb2YgdGhlIGN1cnJlbnRseSBvcGVuIGF1dG9iYWhuIGNvbm5lY3Rpb24uXG4gKlxuICogQHR5cGUge1Byb21pc2UuPGF1dG9iYWhuLkNvbm5lY3Rpb24+fVxuICovXG5sZXQgYnVuZGVzYXV0b2JhaG47XG5cblxuLyoqXG4gKiBBbGxvdyB0aGUgYGF1dG9iYWhuLkNvbm5lY3Rpb25gIHRvIGNoYWxsZW5nZSB0aGUgcHJvdmlkZWQgYXV0aGVudGljYXRpb24uXG4gKlxuICogQHBhcmFtIHthdXRvYmFobi5TZXNzaW9ufSBzZXNzaW9uIC0gVGhlIHNlc3Npb24gb2YgdGhlIGN1cnJlbnRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtAbGluayBhdXRvYmFobi5Db25uZWN0aW9ufS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgLSBUaGUgYXV0aGVudGljYXRpb24gbWV0aG9kIGl0IHRyaWVzIHRvIHVzZS5cbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBXaGVuIHRoZSBnaXZlbiBgbWV0aG9kYCBpcyB1bmtub3duIHRvIHRoZSBTREsuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZVdlYnNvY2tldEF1dGhvcmlzYXRpb25DaGFsbGVuZ2Uoc2Vzc2lvbiwgbWV0aG9kKSB7XG4gIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgY2FzZSAndGlja2V0JzpcbiAgICAgIHJldHVybiBzZXR0aW5ncy5hdXRob3JpemF0aW9uVG9rZW47XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHdlYnNvY2tldCBzZXJ2ZXIgdHJpZWQgdG8gdXNlIHRoZSB1bmtub3duICcgK1xuICAgICAgICAgICAgICAgICAgICAgIGBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2U6IFwiJHttZXRob2R9XCJgKTtcbiAgfVxufVxuXG5cbi8qKlxuICogU2V0IHtAbGluayBidW5kZXNhdXRvYmFobn0gdG8gYSBuZXcgUHJvbWlzZSB3aGljaCByZXNvbHZlcyBpbnRvIGFcbiAqIGBhdXRvYmFobi5Db25uZWN0aW9uYCBvYmplY3Qgd2hlbiBhIGNvbm5lY3Rpb24gd2FzIHN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZC5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48YXV0b2JhaG4uQ29ubmVjdGlvbj59IC0gQSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdoZW4gdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBhbmQgb3BlbmVkLlxuICovXG5mdW5jdGlvbiBlc3RhYmxpc2hOZXdCdW5kZXNiYWhuKCkge1xuICBidW5kZXNhdXRvYmFobiA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBiYWhuID0gbmV3IGF1dG9iYWhuLkNvbm5lY3Rpb24oe1xuICAgICAgdXJsOiBzZXR0aW5ncy5XU19VUkwsXG4gICAgICByZWFsbTogJ2RlZmF1bHQnLFxuICAgICAgLy8gT2YgY291cnNlIHdlIHdhbnQgdG8gdXNlIGVzNiBwcm9taXNlcyBpZiB0aGV5IGFyZSBhdmFpbGJpbGUuXG4gICAgICB1c2VfZXM2X3Byb21pc2VzOiB0cnVlLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNhbWVsY2FzZVxuICAgICAgLy8gVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSByZXF1aXJlZCBpbiBvcmRlciB0byBhdXRob3Jpc2UgdGhlXG4gICAgICAvLyBjb25uZWN0aW9uLlxuICAgICAgYXV0aG1ldGhvZHM6IFsndGlja2V0J10sXG4gICAgICBhdXRoaWQ6ICdvYXV0aDInLFxuICAgICAgZGV0YWlsczoge1xuICAgICAgICB0aWNrZXQ6IHNldHRpbmdzLmF1dGhvcml6YXRpb25Ub2tlblxuICAgICAgfSxcbiAgICAgIG9uY2hhbGxlbmdlOiBoYW5kbGVXZWJzb2NrZXRBdXRob3Jpc2F0aW9uQ2hhbGxlbmdlXG4gICAgfSk7XG5cbiAgICAvLyBgYXV0b2JhaG4uQ29ubmVjdGlvbmAgY2FsbHMgaXRzIGBvbmNsb3NlYCBtZXRob2QsIGlmIGl0IGV4aXN0cywgd2hlbiBpdFxuICAgIC8vIHdhcyBub3QgYWJsZSB0byBvcGVuIGEgY29ubmVjdGlvbi5cbiAgICBiYWhuLm9uY2xvc2UgPSAoLyogcmVhc29uLCBkZXRhaWxzICovKSA9PiB7XG4gICAgICAvLyBXaGVuIHRoZSBjb25uZWN0aW9uIGZhaWxkIHRvIG9wZW4gYSByZWFzb24gaXMgZ2l2ZW4gd2l0aCBzb21lIGRldGFpbHMuXG4gICAgICAvLyBTYWRseSB0aGVzZSBhcmUgdmVyeSB1bmRlc2NyaXB0aXZlLiBUaGVyZWZvcmUgaGludC93YXJuIHRoZSBkZXZlbG9wZXJcbiAgICAgIC8vIGFib3V0IHBvdGVudGlhbCBlcnJvbmVvdXMgc2V0dGluZ3Mgb3IgdG8gY29udGFjdCB1cy5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnVGhlIGNvbm5lY3Rpb24gaXMgZXJyb25lb3VzOyBjaGVjayBpZiBhbGwgcmVxdWlyZWQgJyArXG4gICAgICAgICAgICAgICAgICAgICAgJ3NldHRpbmdzIGhhdmUgYmVlbiBpbmplY3RlZCB1c2luZyB0aGUgJyArXG4gICAgICAgICAgICAgICAgICAgICAgJ2B1cGRhdGVTZXR0aW5ncygpYCBmdW5jdGlvbi4gSWYgdGhlIHByb2JsZW0gcGVyc2lzdHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgJ3BsZWFzZSBwb3N0IGEgaXNzdWUgb24gb3VyIEdpdEh1YiByZXBvc2l0b3J5Lic7XG4gICAgICByZWplY3QobWVzc2FnZSk7XG4gICAgfTtcblxuICAgIC8vIENvbm5lY3Rpb24gZ290IGVzdGFibGlzaGVkOyBsZXRzIHVzIGl0LlxuICAgIGJhaG4ub25vcGVuID0gKCkgPT4ge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBgb25jbG9zZWAgaGFuZGxlciBhcyBpdCBpcyBubyBsb25nZXIgb2YgaW50ZXJlc3QgdG8gdXMuXG4gICAgICBkZWxldGUgYmFobi5vbmNsb3NlO1xuICAgICAgcmVzb2x2ZShiYWhuKTtcbiAgICB9O1xuXG4gICAgYmFobi5vcGVuKCk7XG4gIH0pO1xuXG4gIC8vIFJldHVybiB0aGUgcHJvbWlzZSB0byBtYWtlIGl0IHRoaXMgZnVuY3Rpb24gY2hhaW5hYmxlLiBJbiBjYXNlIHRoZVxuICAvLyBgYnVuZGVzYXV0b2JhaG5gIGlzIHJlamVjdGVkOyByZW1vdmUgdGhlIHJlZmVyZW5jZSBzbyB3ZSBjYW4gdXNlIHNpbXBsZVxuICAvLyBmYWxzeSBjaGVja3MgdG8gZGV0ZW1pbmUgaWYgdGhlcmUgaXMgYSBjb25uZWN0aW9uLlxuICByZXR1cm4gYnVuZGVzYXV0b2JhaG4uY2F0Y2gocmVhc29uID0+IHtcbiAgICBidW5kZXNhdXRvYmFobiA9IG51bGw7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gIH0pO1xufVxuXG5cbi8qKlxuICogT3BlbiBhIG5ldyB3ZWJzb2NrZXQgY29ubmVjdGlvbi5cbiAqXG4gKiBUaGVyZSB0aGVyZSBjdXJyZW50bHkgaXMgYSBvcGVuIGNvbm5lY3Rpb24sIGNsb3NlIGl0IGFuZCBvcGVuIGEgbmV3XG4gKiBjb25uZWN0aW9uLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxzdHJpbmc+fSAtIEEgcmVzb2x2ZWQgcHJvbWlzZSB3aGljaCByZXNvbHZlcyB3aGVuIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYW5kIG9wZW5lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wZW5XZWJzb2NrZXRDb25uZWN0aW9uKCkge1xuICByZXR1cm4gY2xvc2VXZWJzb2NrZXRDb25uZWN0aW9uKClcbiAgICAudGhlbigoKSA9PiBlc3RhYmxpc2hOZXdCdW5kZXNiYWhuKCkpXG4gICAgLy8gYGJ1bmRlc2F1dG9iYWhuYCBhY3R1YWxseSByZXNvbHZlZCB3aXRoIHRoZSBgYXV0b2JhaG4uQ29ubmVjdGlvbmBcbiAgICAvLyBvYmplY3QuIFRoaXMgaXMgb25seSBtZWFudCBmb3IgaW50ZXJuYWwgdXNhZ2UgYW5kIHRoZXJlZm9yZSBzaG91bGQgbm90XG4gICAgLy8gYmUgZXhwb3NlZCB0byB0aGUgdXNlcnMgb2YgdGhlIFNESy5cbiAgICAudGhlbigoKSA9PiAnU3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkIGEgd2Vic29ja2V0IGNvbm5lY3Rpb24uJyk7XG59XG5cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgd2Vic29ja2V0IGNvbm5lY3Rpb24sIG9yIG9wZW4gYSBuZXcgb25lLlxuICpcbiAqIElmIHRoZXJlIGlzIG5vIGN1cnJlbnQgY29ubmVjdGlvbiwgb3BlbiBvbmUgYW5kIHJldHVybiB0aGF0IGluIHN0ZWFkLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxhdXRvYmFobi5Db25uZWN0aW9uPn0gLSBUaGUgY3VycmVudCB3ZWJzb2NrZXQgY29ubmVjdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0V2Vic29ja2V0Q29ubmVjdGlvbigpIHtcbiAgaWYgKCFidW5kZXNhdXRvYmFobikge1xuICAgIHJldHVybiBlc3RhYmxpc2hOZXdCdW5kZXNiYWhuKCk7XG4gIH1cblxuICByZXR1cm4gYnVuZGVzYXV0b2JhaG47XG59XG5cblxuLyoqXG4gKiBDbG9zZSB0aGUgY3VycmVudCB3ZWJzb2NrZXQgY29ubmVjdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48c3RyaW5nPn0gLSBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIGFzIHNvb24gYXMgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uIHdhcyBzdWNjZXNzZnVsbHkgY2xvc2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VXZWJzb2NrZXRDb25uZWN0aW9uKCkge1xuICBpZiAoIWJ1bmRlc2F1dG9iYWhuKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnVGhlcmUgaXMgbm8gd2Vic29ja2V0IGNvbm5lY3Rpb24gdG8gY2xvc2UuJyk7XG4gIH1cblxuICByZXR1cm4gYnVuZGVzYXV0b2JhaG5cbiAgICAudGhlbihiYWhuID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGJhaG4uY2xvc2UoKTtcbiAgICAgICAgYnVuZGVzYXV0b2JhaG4gPSBudWxsO1xuICAgICAgICByZXR1cm4gJ1RoZSB3ZWJzb2NrZXQgY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQgc3VjY2Vzc2Z1bGx5Lic7XG4gICAgICB9IGNhdGNoIChyZWFzb24pIHtcbiAgICAgICAgLy8gYGF1dG9iYWhuLkNvbm5lY3Rpb24uY2xvc2UoKWAgdGhyb3dzIGEgc3RyaW5nIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXNcbiAgICAgICAgLy8gYWxyZWFkeSBjbG9zZWQuIFRoZSBjb25uZWN0aW9uIGlzIG5vdCBleHBvc2VkIGFuZCB0aGVyZWZvcmUgY2Fubm90IGJlXG4gICAgICAgIC8vIGNsb3NlZCBieSBhbnlvbmUgdXNpbmcgdGhlIFNESy4gUmVnYXJkbGVzcywgd2hlbiBpdCBoYXBwZW5zIGp1c3RcbiAgICAgICAgLy8gcmV0dXJuIGEgcmVzb2x2ZWQgcHJvbWlzZS5cbiAgICAgICAgYnVuZGVzYXV0b2JhaG4gPSBudWxsO1xuICAgICAgICByZXR1cm4gJ1RoZSB3ZWJzb2NrZXQgY29ubmVjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIGNsb3NlZC4nO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG5cbi8qKlxuICogTWFrZSBhIChyYXcpIGNhbGwgdG8gdGhlIGl0cy13cyBzZXJ2ZXIuXG4gKlxuICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gZXN0YWJsaXNoIGEgd2Vic29ja2V0IGNvbm5lY3Rpb24gaWYgdGhlcmUgaXNuJ3Qgb25lXG4gKiBhbHJlYWR5LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBycGMgLSBUaGUgUlBDIHRvIG1ha2UuIFRoaXMgYmUgcHJlcGVuZGVkIGJ5IGBubC5pdHNsYW5ndWFnZWBcbiAqICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGUgd2Vic29ja2V0IHNlcnZlciBvbmx5IGhhbmRsZXMgd2Vic29ja2V0IGNhbGxzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgUlBDIHN0YXJ0cyB3aXRoIHRoYXQgcHJlZml4LlxuICogQHBhcmFtIHtBcnJheX0gW2FyZ3NdIC0gVGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIFJQQy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBba3dhcmdzXSAtIFRoZSBrZXkgd29yZCBtYXBwZWQgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIFJQQy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBUaGUgb3B0aW9ucyB0byBwYXNzIHRvIHRoZSBSUEMuXG4gKlxuICogQHJldHVybnMge1Byb21pc2UuPCo+fSAtIFRoZSByZXNwb25zZSBvZiB0aGUgd2Vic29ja2V0IGNhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlV2Vic29ja2V0Q2FsbChycGMsIGFyZ3MsIGt3YXJncywgb3B0aW9ucykge1xuICByZXR1cm4gZ2V0V2Vic29ja2V0Q29ubmVjdGlvbigpXG4gICAgLnRoZW4oY29ubmVjdGlvbiA9PiBjb25uZWN0aW9uLnNlc3Npb24uY2FsbChgbmwuaXRzbGFuZ3VhZ2UuJHtycGN9YCwgYXJncywga3dhcmdzLCBvcHRpb25zKSk7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvY29tbXVuaWNhdGlvbi93ZWJzb2NrZXQuanMiXSwibmFtZXMiOlsib3BlbldlYnNvY2tldENvbm5lY3Rpb24iLCJnZXRXZWJzb2NrZXRDb25uZWN0aW9uIiwiY2xvc2VXZWJzb2NrZXRDb25uZWN0aW9uIiwibWFrZVdlYnNvY2tldENhbGwiLCJsb2ciLCJlcnJvciIsImNvbnNvbGUiLCJiaW5kIiwiYnVuZGVzYXV0b2JhaG4iLCJoYW5kbGVXZWJzb2NrZXRBdXRob3Jpc2F0aW9uQ2hhbGxlbmdlIiwic2Vzc2lvbiIsIm1ldGhvZCIsImF1dGhvcml6YXRpb25Ub2tlbiIsIkVycm9yIiwiZXN0YWJsaXNoTmV3QnVuZGVzYmFobiIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYmFobiIsIkNvbm5lY3Rpb24iLCJ1cmwiLCJ3c1VSTCIsInJlYWxtIiwidXNlX2VzNl9wcm9taXNlcyIsImF1dGhtZXRob2RzIiwiYXV0aGlkIiwiZGV0YWlscyIsInRpY2tldCIsIm9uY2hhbGxlbmdlIiwib25jbG9zZSIsIm1lc3NhZ2UiLCJvbm9wZW4iLCJvcGVuIiwiY2F0Y2giLCJyZWFzb24iLCJ0aGVuIiwiY2xvc2UiLCJycGMiLCJhcmdzIiwia3dhcmdzIiwib3B0aW9ucyIsInByb2dyZXNzQ2IiLCJtZXJnZWRPcHRpb25zIiwicmVjZWl2ZV9wcm9ncmVzcyIsImNvbm5lY3Rpb24iLCJjYWxsIiwicHJvZ3Jlc3MiLCJ3c3NFcnJvciIsInJlc3VsdCIsIndzc0t3YXJncyIsIndzc0FyZ3MiXSwibWFwcGluZ3MiOiI7Ozs7a1FBQUE7Ozs7UUE4R2dCQSx1QixHQUFBQSx1QjtRQWlCQUMsc0IsR0FBQUEsc0I7UUFlQUMsd0IsR0FBQUEsd0I7UUE0Q0FDLGlCLEdBQUFBLGlCOztBQXRMaEI7Ozs7QUFDQTs7OztBQUNBOzs7O0FBRUEsSUFBTUMsTUFBTSxxQkFBTSxtQkFBTixDQUFaO0FBQ0EsSUFBTUMsUUFBUSxxQkFBTSxtQkFBTixDQUFk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STtBQUFBLE1BQXpDQyxJQUF5QyxRQUF6Q0EsSUFBeUM7QUFBQSxNQUFuQ0MsTUFBbUMsUUFBbkNBLE1BQW1DO0FBQUEsTUFBM0JDLE9BQTJCLFFBQTNCQSxPQUEyQjtBQUFBLE1BQWxCQyxVQUFrQixRQUFsQkEsVUFBa0I7O0FBQy9FLE1BQUlDLGdCQUFnQkYsT0FBcEI7QUFDQSxNQUFJQyxVQUFKLEVBQWdCO0FBQ2RDLGlDQUNLRixPQURMO0FBRUVHLHdCQUFrQixJQUZwQixDQUV5QjtBQUZ6QjtBQUlEO0FBQ0QsU0FBTzFDLHlCQUNKa0MsSUFESSxDQUNDO0FBQUEsV0FDSlMsV0FBV2xDLE9BQVgsQ0FBbUJtQyxJQUFuQixxQkFBMENSLEdBQTFDLEVBQWlEQyxJQUFqRCxFQUF1REMsTUFBdkQsRUFBK0RHLGFBQS9ELEVBQ0dJLFFBREgsQ0FDWUwsVUFEWixDQURJO0FBQUEsR0FERCxFQUtKUixLQUxJLENBS0Usa0JBQVU7QUFBQSxRQUNEYyxRQURDLEdBQzZDQyxNQUQ3QyxDQUNSM0MsS0FEUTtBQUFBLFFBQ2lCNEMsU0FEakIsR0FDNkNELE1BRDdDLENBQ1NULE1BRFQ7QUFBQSxRQUNrQ1csT0FEbEMsR0FDNkNGLE1BRDdDLENBQzRCVixJQUQ1Qjs7QUFHZjs7QUFDQWpDLFVBQU0yQyxNQUFOOztBQUVBO0FBQ0EsV0FBT2pDLFFBQVFFLE1BQVI7QUFDTFosYUFBTzBDO0FBREYsT0FFRkUsU0FGRTtBQUdMWCxzQkFBVVksT0FBVjtBQUhLLE9BQVA7QUFLRCxHQWpCSSxDQUFQO0FBa0JEIiwiZmlsZSI6IndlYnNvY2tldC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqL1xuXG5pbXBvcnQgYXV0b2JhaG4gZnJvbSAnYXV0b2JhaG4nO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7c2V0dGluZ3N9IGZyb20gJy4vaW5kZXgnO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnaXRzLXNkazpXZWJTb2NrZXQnKTtcbmNvbnN0IGVycm9yID0gZGVidWcoJ2l0cy1zZGs6V2ViU29ja2V0Jyk7XG5sb2cubG9nID0gY29uc29sZS5sb2cuYmluZChjb25zb2xlKTtcblxuLyoqXG4gKiBLZWVwIGhvbGQgb2YgdGhlIGN1cnJlbnRseSBvcGVuIGF1dG9iYWhuIGNvbm5lY3Rpb24uXG4gKlxuICogQHR5cGUge1Byb21pc2UuPGF1dG9iYWhuLkNvbm5lY3Rpb24+fVxuICovXG5sZXQgYnVuZGVzYXV0b2JhaG47XG5cblxuLyoqXG4gKiBBbGxvdyB0aGUgYGF1dG9iYWhuLkNvbm5lY3Rpb25gIHRvIGNoYWxsZW5nZSB0aGUgcHJvdmlkZWQgYXV0aGVudGljYXRpb24uXG4gKlxuICogQHBhcmFtIHthdXRvYmFobi5TZXNzaW9ufSBzZXNzaW9uIC0gVGhlIHNlc3Npb24gb2YgdGhlIGN1cnJlbnRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtAbGluayBhdXRvYmFobi5Db25uZWN0aW9ufS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgLSBUaGUgYXV0aGVudGljYXRpb24gbWV0aG9kIGl0IHRyaWVzIHRvIHVzZS5cbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBXaGVuIHRoZSBnaXZlbiBgbWV0aG9kYCBpcyB1bmtub3duIHRvIHRoZSBTREsuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZVdlYnNvY2tldEF1dGhvcmlzYXRpb25DaGFsbGVuZ2Uoc2Vzc2lvbiwgbWV0aG9kKSB7XG4gIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgY2FzZSAndGlja2V0JzpcbiAgICAgIHJldHVybiBzZXR0aW5ncy5hdXRob3JpemF0aW9uVG9rZW47XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHdlYnNvY2tldCBzZXJ2ZXIgdHJpZWQgdG8gdXNlIHRoZSB1bmtub3duICcgK1xuICAgICAgICAgICAgICAgICAgICAgIGBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2U6IFwiJHttZXRob2R9XCJgKTtcbiAgfVxufVxuXG5cbi8qKlxuICogU2V0IHtAbGluayBidW5kZXNhdXRvYmFobn0gdG8gYSBuZXcgUHJvbWlzZSB3aGljaCByZXNvbHZlcyBpbnRvIGFcbiAqIGBhdXRvYmFobi5Db25uZWN0aW9uYCBvYmplY3Qgd2hlbiBhIGNvbm5lY3Rpb24gd2FzIHN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZC5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48YXV0b2JhaG4uQ29ubmVjdGlvbj59IC0gQSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdoZW4gdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBhbmQgb3BlbmVkLlxuICovXG5mdW5jdGlvbiBlc3RhYmxpc2hOZXdCdW5kZXNiYWhuKCkge1xuICBidW5kZXNhdXRvYmFobiA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBiYWhuID0gbmV3IGF1dG9iYWhuLkNvbm5lY3Rpb24oe1xuICAgICAgdXJsOiBzZXR0aW5ncy53c1VSTCxcbiAgICAgIHJlYWxtOiAnZGVmYXVsdCcsXG4gICAgICAvLyBPZiBjb3Vyc2Ugd2Ugd2FudCB0byB1c2UgZXM2IHByb21pc2VzIGlmIHRoZXkgYXJlIGF2YWlsYmlsZS5cbiAgICAgIC8vIEJ1dCwgdGhlIGJhY2tlbmQgc29tZXRpbWVzIHNwaXRzIG91dCBwcm9ncmVzcy4gRm9yIHRoYXQgd2UgbmVlZFxuICAgICAgLy8gYSBXaGVuLkpTIHByb21pc2UuLlxuICAgICAgdXNlX2VzNl9wcm9taXNlczogZmFsc2UsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY2FtZWxjYXNlXG4gICAgICAvLyBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIHJlcXVpcmVkIGluIG9yZGVyIHRvIGF1dGhvcmlzZSB0aGVcbiAgICAgIC8vIGNvbm5lY3Rpb24uXG4gICAgICBhdXRobWV0aG9kczogWyd0aWNrZXQnXSxcbiAgICAgIGF1dGhpZDogJ29hdXRoMicsXG4gICAgICBkZXRhaWxzOiB7XG4gICAgICAgIHRpY2tldDogc2V0dGluZ3MuYXV0aG9yaXphdGlvblRva2VuXG4gICAgICB9LFxuICAgICAgb25jaGFsbGVuZ2U6IGhhbmRsZVdlYnNvY2tldEF1dGhvcmlzYXRpb25DaGFsbGVuZ2VcbiAgICB9KTtcblxuICAgIC8vIGBhdXRvYmFobi5Db25uZWN0aW9uYCBjYWxscyBpdHMgYG9uY2xvc2VgIG1ldGhvZCwgaWYgaXQgZXhpc3RzLCB3aGVuIGl0XG4gICAgLy8gd2FzIG5vdCBhYmxlIHRvIG9wZW4gYSBjb25uZWN0aW9uLlxuICAgIGJhaG4ub25jbG9zZSA9ICgvKiByZWFzb24sIGRldGFpbHMgKi8pID0+IHtcbiAgICAgIC8vIFdoZW4gdGhlIGNvbm5lY3Rpb24gZmFpbGQgdG8gb3BlbiBhIHJlYXNvbiBpcyBnaXZlbiB3aXRoIHNvbWUgZGV0YWlscy5cbiAgICAgIC8vIFNhZGx5IHRoZXNlIGFyZSB2ZXJ5IHVuZGVzY3JpcHRpdmUuIFRoZXJlZm9yZSBoaW50L3dhcm4gdGhlIGRldmVsb3BlclxuICAgICAgLy8gYWJvdXQgcG90ZW50aWFsIGVycm9uZW91cyBzZXR0aW5ncyBvciB0byBjb250YWN0IHVzLlxuICAgICAgY29uc3QgbWVzc2FnZSA9ICdUaGUgY29ubmVjdGlvbiBpcyBlcnJvbmVvdXM7IGNoZWNrIGlmIGFsbCByZXF1aXJlZCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAnc2V0dGluZ3MgaGF2ZSBiZWVuIGluamVjdGVkIHVzaW5nIHRoZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAnYHVwZGF0ZVNldHRpbmdzKClgIGZ1bmN0aW9uLiBJZiB0aGUgcHJvYmxlbSBwZXJzaXN0cyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAncGxlYXNlIHBvc3QgYSBpc3N1ZSBvbiBvdXIgR2l0SHViIHJlcG9zaXRvcnkuJztcbiAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICB9O1xuXG4gICAgLy8gQ29ubmVjdGlvbiBnb3QgZXN0YWJsaXNoZWQ7IGxldHMgdXMgaXQuXG4gICAgYmFobi5vbm9wZW4gPSAoKSA9PiB7XG4gICAgICBsb2coJ1N1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZCBhIHdlYnNvY2tldCBjb25uZWN0aW9uLicpO1xuICAgICAgLy8gUmVtb3ZlIHRoZSBgb25jbG9zZWAgaGFuZGxlciBhcyBpdCBpcyBubyBsb25nZXIgb2YgaW50ZXJlc3QgdG8gdXMuXG4gICAgICBkZWxldGUgYmFobi5vbmNsb3NlO1xuICAgICAgcmVzb2x2ZShiYWhuKTtcbiAgICB9O1xuXG4gICAgYmFobi5vcGVuKCk7XG4gIH0pO1xuXG4gIC8vIFJldHVybiB0aGUgcHJvbWlzZSB0byBtYWtlIGl0IHRoaXMgZnVuY3Rpb24gY2hhaW5hYmxlLiBJbiBjYXNlIHRoZVxuICAvLyBgYnVuZGVzYXV0b2JhaG5gIGlzIHJlamVjdGVkOyByZW1vdmUgdGhlIHJlZmVyZW5jZSBzbyB3ZSBjYW4gdXNlIHNpbXBsZVxuICAvLyBmYWxzeSBjaGVja3MgdG8gZGV0ZW1pbmUgaWYgdGhlcmUgaXMgYSBjb25uZWN0aW9uLlxuICByZXR1cm4gYnVuZGVzYXV0b2JhaG4uY2F0Y2gocmVhc29uID0+IHtcbiAgICBidW5kZXNhdXRvYmFobiA9IG51bGw7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gIH0pO1xufVxuXG5cbi8qKlxuICogT3BlbiBhIG5ldyB3ZWJzb2NrZXQgY29ubmVjdGlvbi5cbiAqXG4gKiBUaGVyZSB0aGVyZSBjdXJyZW50bHkgaXMgYSBvcGVuIGNvbm5lY3Rpb24sIGNsb3NlIGl0IGFuZCBvcGVuIGEgbmV3XG4gKiBjb25uZWN0aW9uLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxzdHJpbmc+fSAtIEEgcmVzb2x2ZWQgcHJvbWlzZSB3aGljaCByZXNvbHZlcyB3aGVuIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYW5kIG9wZW5lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wZW5XZWJzb2NrZXRDb25uZWN0aW9uKCkge1xuICByZXR1cm4gY2xvc2VXZWJzb2NrZXRDb25uZWN0aW9uKClcbiAgICAudGhlbigoKSA9PiBlc3RhYmxpc2hOZXdCdW5kZXNiYWhuKCkpXG4gICAgLy8gYGJ1bmRlc2F1dG9iYWhuYCBhY3R1YWxseSByZXNvbHZlZCB3aXRoIHRoZSBgYXV0b2JhaG4uQ29ubmVjdGlvbmBcbiAgICAvLyBvYmplY3QuIFRoaXMgaXMgb25seSBtZWFudCBmb3IgaW50ZXJuYWwgdXNhZ2UgYW5kIHRoZXJlZm9yZSBzaG91bGQgbm90XG4gICAgLy8gYmUgZXhwb3NlZCB0byB0aGUgdXNlcnMgb2YgdGhlIFNESy5cbiAgICAudGhlbigoKSA9PiAnU3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkIGEgd2Vic29ja2V0IGNvbm5lY3Rpb24uJyk7XG59XG5cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgd2Vic29ja2V0IGNvbm5lY3Rpb24sIG9yIG9wZW4gYSBuZXcgb25lLlxuICpcbiAqIElmIHRoZXJlIGlzIG5vIGN1cnJlbnQgY29ubmVjdGlvbiwgb3BlbiBvbmUgYW5kIHJldHVybiB0aGF0IGluIHN0ZWFkLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxhdXRvYmFobi5Db25uZWN0aW9uPn0gLSBUaGUgY3VycmVudCB3ZWJzb2NrZXQgY29ubmVjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdlYnNvY2tldENvbm5lY3Rpb24oKSB7XG4gIGlmICghYnVuZGVzYXV0b2JhaG4pIHtcbiAgICByZXR1cm4gZXN0YWJsaXNoTmV3QnVuZGVzYmFobigpO1xuICB9XG5cbiAgcmV0dXJuIGJ1bmRlc2F1dG9iYWhuO1xufVxuXG5cbi8qKlxuICogQ2xvc2UgdGhlIGN1cnJlbnQgd2Vic29ja2V0IGNvbm5lY3Rpb24uXG4gKlxuICogQHJldHVybnMge1Byb21pc2UuPHN0cmluZz59IC0gQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSBhcyBzb29uIGFzIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IGNsb3NlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlV2Vic29ja2V0Q29ubmVjdGlvbigpIHtcbiAgaWYgKCFidW5kZXNhdXRvYmFobikge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJ1RoZXJlIGlzIG5vIHdlYnNvY2tldCBjb25uZWN0aW9uIHRvIGNsb3NlLicpO1xuICB9XG5cbiAgcmV0dXJuIGJ1bmRlc2F1dG9iYWhuXG4gICAgLnRoZW4oYmFobiA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBiYWhuLmNsb3NlKCk7XG4gICAgICAgIGJ1bmRlc2F1dG9iYWhuID0gbnVsbDtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdUaGUgd2Vic29ja2V0IGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIHN1Y2Nlc3NmdWxseS4nO1xuICAgICAgICBsb2cobWVzc2FnZSk7XG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgfSBjYXRjaCAocmVhc29uKSB7XG4gICAgICAgIC8vIGBhdXRvYmFobi5Db25uZWN0aW9uLmNsb3NlKClgIHRocm93cyBhIHN0cmluZyB3aGVuIHRoZSBjb25uZWN0aW9uIGlzXG4gICAgICAgIC8vIGFscmVhZHkgY2xvc2VkLiBUaGUgY29ubmVjdGlvbiBpcyBub3QgZXhwb3NlZCBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZVxuICAgICAgICAvLyBjbG9zZWQgYnkgYW55b25lIHVzaW5nIHRoZSBTREsuIFJlZ2FyZGxlc3MsIHdoZW4gaXQgaGFwcGVucyBqdXN0XG4gICAgICAgIC8vIHJldHVybiBhIHJlc29sdmVkIHByb21pc2UuXG4gICAgICAgIGJ1bmRlc2F1dG9iYWhuID0gbnVsbDtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdUaGUgd2Vic29ja2V0IGNvbm5lY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuJztcbiAgICAgICAgZXJyb3IobWVzc2FnZSk7XG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG5cbi8qKlxuICogTWFrZSBhIHJwYyBjYWxsIHRvIHRoZSBJVFNMYW5ndWFnZSB3ZWJzb2NrZXQgc2VydmVyLlxuICpcbiAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRvIGVzdGFibGlzaCBhIHdlYnNvY2tldCBjb25uZWN0aW9uIGlmIHRoZXJlIGlzbid0IG9uZVxuICogYWxyZWFkeS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcnBjIC0gVGhlIFJQQyB0byBtYWtlLiBUaGlzIGJlIHByZXBlbmRlZCBieSBgbmwuaXRzbGFuZ3VhZ2VgXG4gKiAgICAgICAgICAgICAgICAgICAgICAgYXMgdGhlIHdlYnNvY2tldCBzZXJ2ZXIgb25seSBoYW5kbGVzIHdlYnNvY2tldCBjYWxsc1xuICogICAgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlIFJQQyBzdGFydHMgd2l0aCB0aGF0IHByZWZpeC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBEZXN0cnVjdHVyZWQgb2JqZWN0IHdpdGggb3B0aW9ucyB0byBwYXNzIHRvIHRoZSB3ZWJzb2NrZXQgc2VydmVyLlxuICogQHBhcmFtIHtBcnJheX0gW29wdGlvbnMuYXJnc10gLSBBbiBhcnJheSB3aXRoIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBSUEMuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnMua3dhcmdzXSAtIEFuIG9iamVjdCAoZGljdGlvbmFyeSkgd2l0aCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgUlBDLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zLm9wdGlvbnNdIC0gVGhlIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgUlBDLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdGlvbnMucHJvZ3Jlc3NDYl0gLSBPcHRpb25hbCBjYWxsYmFjayB0byByZWNlaXZlIHByb2dyZXNzZWQgcmVzdWx0cy5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48Kj59IC0gVGhlIHJlc3BvbnNlIG9mIHRoZSB3ZWJzb2NrZXQgY2FsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VXZWJzb2NrZXRDYWxsKHJwYywge2FyZ3MsIGt3YXJncywgb3B0aW9ucywgcHJvZ3Jlc3NDYn0gPSB7fSkge1xuICBsZXQgbWVyZ2VkT3B0aW9ucyA9IG9wdGlvbnM7XG4gIGlmIChwcm9ncmVzc0NiKSB7XG4gICAgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICByZWNlaXZlX3Byb2dyZXNzOiB0cnVlIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY2FtZWxjYXNlXG4gICAgfTtcbiAgfVxuICByZXR1cm4gZ2V0V2Vic29ja2V0Q29ubmVjdGlvbigpXG4gICAgLnRoZW4oY29ubmVjdGlvbiA9PlxuICAgICAgY29ubmVjdGlvbi5zZXNzaW9uLmNhbGwoYG5sLml0c2xhbmd1YWdlLiR7cnBjfWAsIGFyZ3MsIGt3YXJncywgbWVyZ2VkT3B0aW9ucylcbiAgICAgICAgLnByb2dyZXNzKHByb2dyZXNzQ2IpXG4gICAgKVxuICAgIC5jYXRjaChyZXN1bHQgPT4ge1xuICAgICAgY29uc3Qge2Vycm9yOiB3c3NFcnJvciwga3dhcmdzOiB3c3NLd2FyZ3MsIGFyZ3M6IHdzc0FyZ3N9ID0gcmVzdWx0O1xuXG4gICAgICAvLyBMb2cgdGhlIGVycm9yIHRvIHN0ZGVyclxuICAgICAgZXJyb3IocmVzdWx0KTtcblxuICAgICAgLy8gUmV0dXJuIGEgc2xpZ2h0bHkgc2ltcGxpc3RpYyB2ZXJzaW9uIG9mIHRoZSBlcnJvciB0aGF0IG9jY3VycmVkXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoe1xuICAgICAgICBlcnJvcjogd3NzRXJyb3IsXG4gICAgICAgIC4uLndzc0t3YXJncyxcbiAgICAgICAgYXJnczogWy4uLndzc0FyZ3NdXG4gICAgICB9KTtcbiAgICB9KTtcbn1cbiJdfQ== |
@@ -5,6 +5,2 @@ 'use strict'; | ||
var _cordovaMediaPlayer = require('./cordova-media-player'); | ||
var _cordovaMediaPlayer2 = _interopRequireDefault(_cordovaMediaPlayer); | ||
var _tools = require('./tools'); | ||
@@ -84,5 +80,5 @@ | ||
/** | ||
* @type {CordovaMediaPlayer|WebAudioPlayer} player - Specific audio player. | ||
* @type {WebAudioPlayer} player - Specific audio player. | ||
*/ | ||
this._player = this._getBestPlayer(callbacks); | ||
this._player = this._getPlayer(callbacks); | ||
this._emitter = (0, _eventEmitter2.default)({}); | ||
@@ -143,9 +139,3 @@ this._stopwatch = null; | ||
// Detect Cordova Media Playback | ||
// It allows playing audio using the native bridge inside WebView Apps. | ||
// https://github.com/apache/cordova-plugin-media/blob/master/doc/index.md | ||
this.canUseCordovaMedia = Boolean(window.Media); | ||
console.log('Cordova Media playback capability:', this.canUseCordovaMedia); | ||
if (!this.canUseAudio && !this.canUseCordovaMedia) { | ||
if (!this.canUseAudio) { | ||
throw new Error('Some form of audio playback capability is required'); | ||
@@ -190,13 +180,6 @@ } | ||
AudioPlayer.prototype._getBestPlayer = function _getBestPlayer(callbacks) { | ||
AudioPlayer.prototype._getPlayer = function _getPlayer(callbacks) { | ||
var player = null; | ||
// Start by checking for a Cordova environment. | ||
// When running under a debugger like Ripple, both Cordova and WebAudio | ||
// environments get detected. While this is technically valid -Ripple is | ||
// running in Chrome, which supports WebAudio-, it's not a sandbox that | ||
// also disables functionality that would not be available on a device. | ||
if (this.canUseCordovaMedia) { | ||
// Use Cordova audio encoding (used codec depends on the platform). | ||
player = new _cordovaMediaPlayer2.default(callbacks); | ||
} else if (this.canUseAudio) { | ||
if (this.canUseAudio) { | ||
// Use the recorder with MediaRecorder implementation. | ||
@@ -510,2 +493,2 @@ player = new _webAudioPlayer2.default(callbacks); | ||
exports.default = AudioPlayer; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby9hdWRpby1wbGF5ZXIuanMiXSwibmFtZXMiOlsiQXVkaW9QbGF5ZXIiLCJvcHRpb25zIiwiX3NldHRpbmdzIiwiT2JqZWN0IiwiYXNzaWduIiwiX3BsYXliYWNrQ29tcGF0aWJpbGl0eSIsInNlbGYiLCJjYWxsYmFja3MiLCJwbGF5aW5nQ2IiLCJfZW1pdHRlciIsImVtaXQiLCJ0aW1ldXBkYXRlQ2IiLCJkdXJhdGlvbmNoYW5nZUNiIiwiY2FucGxheUNiIiwiZW5kZWRDYiIsInBhdXNlQ2IiLCJzdG9wcGVkQ2IiLCJwbGF5YmFja1N0b3BwZWRDYiIsIl9zdG9wd2F0Y2giLCJzdG9wIiwicHJvZ3Jlc3NDYiIsImVycm9yQ2IiLCJfcGxheWVyIiwiX2dldEJlc3RQbGF5ZXIiLCJfYXVkaW9MZXZlbCIsIl9hdWRpb011dGVkIiwicmVzZXRFdmVudExpc3RlbmVycyIsImFkZEV2ZW50TGlzdGVuZXIiLCJuYW1lIiwiaGFuZGxlciIsIm9uIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9mZiIsImNhblVzZUF1ZGlvIiwiQm9vbGVhbiIsIkF1ZGlvIiwiY29uc29sZSIsImxvZyIsImNhblVzZUNvcmRvdmFNZWRpYSIsIndpbmRvdyIsIk1lZGlhIiwiRXJyb3IiLCJfYXVkaW8iLCJjYW5QbGF5VHlwZSIsIkZ1bmN0aW9uIiwiY2FuUGxheU9nZ1ZvcmJpcyIsImNhblBsYXlPZ2dPcHVzIiwiY2FuUGxheVdhdmUiLCJjYW5QbGF5TVAzIiwiY2FuUGxheUFBQyIsImNhblBsYXkzR1BQIiwicGxheWVyIiwibG9hZCIsInVybCIsInByZWxvYWQiLCJsb2FkZWRDYiIsInJlc2V0IiwicGxheSIsInBvc2l0aW9uIiwiaXNQbGF5aW5nIiwidGltZSIsIk1hdGgiLCJyb3VuZCIsImdldEN1cnJlbnRUaW1lIiwiX3ZhbHVlIiwic3RhcnQiLCJwYXVzZSIsInRvZ2dsZVBsYXliYWNrIiwic2NydWIiLCJwZXJjZW50YWdlIiwiZ2V0QnVmZmVyRmlsbCIsImdldER1cmF0aW9uIiwiY2FuUGxheSIsInNldFBsYXliYWNrUmF0ZSIsInJhdGUiLCJnZXRQbGF5YmFja1JhdGUiLCJiaW5kU3RvcHdhdGNoIiwidGlja0NiIiwiZHVyYXRpb24iLCJzb3VuZCIsInBsYXliYWNrUmF0ZSIsInNldEF1ZGlvVm9sdW1lIiwidm9sdW1lIiwiZ2V0QXVkaW9Wb2x1bWUiLCJ0b2dnbGVBdWRpb011dGUiLCJzZXRBdWRpb011dGUiLCJzaG91bGRNdXRlIiwiaXNBdWRpb011dGVkIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFDQTs7O0lBR3FCQSxXO0FBQ25COzs7Ozs7O0FBT0EsdUJBQVlDLE9BQVosRUFBcUI7QUFBQTs7QUFDbkIsU0FBS0MsU0FBTCxHQUFpQkMsT0FBT0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JILE9BQWxCLENBQWpCOztBQUVBLFNBQUtJLHNCQUFMO0FBQ0EsUUFBTUMsT0FBTyxJQUFiO0FBQ0EsUUFBTUMsWUFBWTtBQUNoQkMsZUFEZ0IsdUJBQ0o7QUFDVkYsYUFBS0csUUFBTCxDQUFjQyxJQUFkLENBQW1CLFNBQW5CLEVBQThCLEVBQTlCO0FBQ0QsT0FIZTtBQUloQkMsa0JBSmdCLDBCQUlEO0FBQ2JMLGFBQUtHLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixZQUFuQixFQUFpQyxFQUFqQztBQUNELE9BTmU7QUFPaEJFLHNCQVBnQiw4QkFPRztBQUNqQk4sYUFBS0csUUFBTCxDQUFjQyxJQUFkLENBQW1CLGdCQUFuQixFQUFxQyxFQUFyQztBQUNELE9BVGU7QUFVaEJHLGVBVmdCLHVCQVVKO0FBQ1ZQLGFBQUtHLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixTQUFuQixFQUE4QixFQUE5QjtBQUNELE9BWmU7QUFhaEJJLGFBYmdCLHFCQWFOO0FBQ1JSLGFBQUtHLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixPQUFuQixFQUE0QixFQUE1QjtBQUNELE9BZmU7QUFnQmhCSyxhQWhCZ0IscUJBZ0JOO0FB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QUF6QjtBQUNEO0FBQ0YsRzs7QUFFRDs7Ozs7Ozt3QkFLQStELFksMkJBQWU7QUFDYixXQUFPLEtBQUs5RCxXQUFaO0FBQ0QsRzs7Ozs7a0JBbmFrQnpCLFciLCJmaWxlIjoiYXVkaW8tcGxheWVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvcmRvdmFNZWRpYVBsYXllciBmcm9tICcuL2NvcmRvdmEtbWVkaWEtcGxheWVyJztcbmltcG9ydCBTdG9wd2F0Y2ggZnJvbSAnLi90b29scyc7XG5pbXBvcnQgV2ViQXVkaW9QbGF5ZXIgZnJvbSAnLi93ZWItYXVkaW8tcGxheWVyJztcbmltcG9ydCBhbGxPZmYgZnJvbSAnZXZlbnQtZW1pdHRlci9hbGwtb2ZmJztcbmltcG9ydCBlZSBmcm9tICdldmVudC1lbWl0dGVyJztcbi8qKlxuICogSVRTTGFuZ3VhZ2UgQXVkaW9QbGF5ZXIgbm9uLWdyYXBoaWNhbCBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1ZGlvUGxheWVyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdCBhbiBBdWRpb1BsYXllciBmb3IgcGxheWluZyAud2F2IG9yIC5tcDMgZmlsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7P09iamVjdH0gb3B0aW9ucyAtIE92ZXJyaWRlIGFueSBvZiB0aGUgZGVmYXVsdCBzZXR0aW5ncy5cbiAgICogQGVtaXRzIHtFdmVudH0gJ3BsYXliYWNrc3RvcHBlZCcgV2hlbiBwbGF5YmFjayBoYXMgZW5kZWQsIGJlZW4gc3RvcHBlZCBvciBiZWVuIHBhdXNlZC5cbiAgICogQGVtaXRzIHtFdmVudH0gQWxsIGV2ZW50cyB0aGUgSFRNTDUgQXVkaW8gYWxzbyBmaXJlcy4ge0BsaW5rIGh0dHA6Ly93d3cudzNzY2hvb2xzLmNvbS90YWdzL3JlZl9hdl9kb20uYXNwfVxuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIHRoaXMuX3NldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyk7XG5cbiAgICB0aGlzLl9wbGF5YmFja0NvbXBhdGliaWxpdHkoKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBjYWxsYmFja3MgPSB7XG4gICAgICBwbGF5aW5nQ2IoKSB7XG4gICAgICAgIHNlbGYuX2VtaXR0ZXIuZW1pdCgncGxheWluZycsIFtdKTtcbiAgICAgIH0sXG4gICAgICB0aW1ldXBkYXRlQ2IoKSB7XG4gICAgICAgIHNlbGYuX2VtaXR0ZXIuZW1pdCgndGltZXVwZGF0ZScsIFtdKTtcbiAgICAgIH0sXG4gICAgICBkdXJhdGlvbmNoYW5nZUNiKCkge1xuICAgICAgICBzZWxmLl9lbWl0dGVyLmVtaXQoJ2R1cmF0aW9uY2hhbmdlJywgW10pO1xuICAgICAgfSxcbiAgICAgIGNhbnBsYXlDYigpIHtcbiAgICAgICAgc2VsZi5fZW1pdHRlci5lbWl0KCdjYW5wbGF5JywgW10pO1xuICAgICAgfSxcbiAgICAgIGVuZGVkQ2IoKSB7XG4gICAgICAgIHNlbGYuX2VtaXR0ZXIuZW1pdCgnZW5kZWQnLCBbXSk7XG4gICAgICB9LFxuICAgICAgcGF1c2VDYigpIHtcbiAgICAgICAgc2VsZi5fZW1pdHRlci5lbWl0KCdwYXVzZScsIFtdKTtcbiAgICAgIH0sXG4gICAgICBzdG9wcGVkQ2IoKSB7XG4gICAgICAgIHNlbGYuX2VtaXR0ZXIuZW1pdCgnc3RvcHBlZCcsIFtdKTtcbiAgICAgIH0sXG4gICAgICBwbGF5YmFja1N0b3BwZWRDYigpIHtcbiAgICAgICAgc2VsZi5fZW1pdHRlci5lbWl0KCdwbGF5YmFja3N0b3BwZWQnLCBbXSk7XG4gICAgICAgIGlmIChzZWxmLl9zdG9wd2F0Y2gpIHtcbiAgICAgICAgICBzZWxmLl9zdG9wd2F0Y2guc3RvcCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcHJvZ3Jlc3NDYigpIHtcbiAgICAgICAgc2VsZi5fZW1pdHRlci5lbWl0KCdwcm9ncmVzcycsIFtdKTtcbiAgICAgIH0sXG4gICAgICBlcnJvckNiKCkge1xuICAgICAgICBzZWxmLl9lbWl0dGVyLmVtaXQoJ2Vycm9yJywgW10pO1xuICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQHR5cGUge0NvcmRvdmFNZWRpYVBsYXllcnxXZWJBdWRpb1BsYXllcn0gcGxheWVyIC0gU3BlY2lmaWMgYXVkaW8gcGxheWVyLlxuICAgICAqL1xuICAgIHRoaXMuX3BsYXllciA9IHRoaXMuX2dldEJlc3RQbGF5ZXIoY2FsbGJhY2tzKTtcbiAgICB0aGlzLl9lbWl0dGVyID0gZWUoe30pO1xuICAgIHRoaXMuX3N0b3B3YXRjaCA9IG51bGw7XG4gICAgdGhpcy5fYXVkaW9MZXZlbCA9IDE7XG4gICAgdGhpcy5fYXVkaW9NdXRlZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFR1cm4gb2ZmIGFsbCBldmVudCBsaXN0ZW5lcnMgZm9yIHRoaXMgcGxheWVyLlxuICAgKi9cbiAgcmVzZXRFdmVudExpc3RlbmVycygpIHtcbiAgICBhbGxPZmYodGhpcy5fZW1pdHRlcik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGV2ZW50IGxpc3RlbmVyLiBMaXN0ZW5zIHRvIGV2ZW50cyBlbWl0dGVkIGZyb20gdGhlIHBsYXllci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEhhbmRsZXIgZnVuY3Rpb24gdG8gYWRkLlxuICAgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKSB7XG4gICAgdGhpcy5fZW1pdHRlci5vbihuYW1lLCBoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZXZlbnQgbGlzdGVuZXIgb2YgdGhlIHBsYXllci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEhhbmRsZXIgZnVuY3Rpb24gdG8gcmVtb3ZlLlxuICAgKi9cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKSB7XG4gICAgdGhpcy5fZW1pdHRlci5vZmYobmFtZSwgaGFuZGxlcik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgZm9yIG1hbmRhdG9yeSBicm93c2VyIGNvbXBhdGliaWxpdHkuXG4gICAqIExvZ3MgZGV0YWlsZWQgYnJvd3NlciBjb21wYXRpYmlsaXRpZXMgcmVsYXRlZCB0byBmb3IgYXVkaW8gcGxheWJhY2suXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBubyBuYXRpdmUgd2F2ZSBvciBNUDMgcGxheWJhY2sgaXMgYXZhaWxhYmxlLlxuICAgKi9cbiAgX3BsYXliYWNrQ29tcGF0aWJpbGl0eSgpIHtcbiAgICAvLyBEZXRlY3QgYXVkaW8gcGxheWJhY2sgY2FwYWJpbGl0aWVzLlxuXG4gICAgLy8gRGV0ZWN0IEhUTUw1IEF1ZGlvIHBsYXliYWNrLlxuICAgIC8vIGh0dHA6Ly9jYW5pdXNlLmNvbS8jZmVhdD1hdWRpb1xuICAgIHRoaXMuY2FuVXNlQXVkaW8gPSBCb29sZWFuKEF1ZGlvKTtcbiAgICBjb25zb2xlLmxvZygnTmF0aXZlIEhUTUw1IEF1ZGlvIHBsYXliYWNrIGNhcGFiaWxpdHk6JywgdGhpcy5jYW5Vc2VBdWRpbyk7XG5cbiAgICAvLyBEZXRlY3QgQ29yZG92YSBNZWRpYSBQbGF5YmFja1xuICAgIC8vIEl0IGFsbG93cyBwbGF5aW5nIGF1ZGlvIHVzaW5nIHRoZSBuYXRpdmUgYnJpZGdlIGluc2lkZSBXZWJWaWV3IEFwcHMuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS9jb3Jkb3ZhLXBsdWdpbi1tZWRpYS9ibG9iL21hc3Rlci9kb2MvaW5kZXgubWRcbiAgICB0aGlzLmNhblVzZUNvcmRvdmFNZWRpYSA9IEJvb2xlYW4od2luZG93Lk1lZGlhKTtcbiAgICBjb25zb2xlLmxvZygnQ29yZG92YSBNZWRpYSBwbGF5YmFjayBjYXBhYmlsaXR5OicsIHRoaXMuY2FuVXNlQ29yZG92YU1lZGlhKTtcblxuICAgIGlmICghdGhpcy5jYW5Vc2VBdWRpbyAmJiAhdGhpcy5jYW5Vc2VDb3Jkb3ZhTWVkaWEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1NvbWUgZm9ybSBvZiBhdWRpbyBwbGF5YmFjayBjYXBhYmlsaXR5IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNhblVzZUF1ZGlvKSB7XG4gICAgICBjb25zdCBfYXVkaW8gPSBuZXcgQXVkaW8oKTtcbiAgICAgIGlmICghKF9hdWRpby5jYW5QbGF5VHlwZSAmJiBfYXVkaW8uY2FuUGxheVR5cGUgaW5zdGFuY2VvZiBGdW5jdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdVbmFibGUgdG8gZGV0ZWN0IGF1ZGlvIHBsYXliYWNrIGNhcGFiaWxpdGllcycpO1xuICAgICAgfVxuICAgICAgY29uc3QgY2FuUGxheU9nZ1ZvcmJpcyA9IF9hdWRpby5jYW5QbGF5VHlwZShcbiAgICAgICAgICAnYXVkaW8vb2dnOyBjb2RlY3M9XCJ2b3JiaXNcIicpICE9PSAnJztcbiAgICAgIGNvbnN0IGNhblBsYXlPZ2dPcHVzID0gX2F1ZGlvLmNhblBsYXlUeXBlKFxuICAgICAgICAgICdhdWRpby9vZ2c7IGNvZGVjcz1cIm9wdXNcIicpICE9PSAnJztcbiAgICAgIGNvbnN0IGNhblBsYXlXYXZlID0gX2F1ZGlvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnKSAhPT0gJyc7XG4gICAgICBjb25zdCBjYW5QbGF5TVAzID0gX2F1ZGlvLmNhblBsYXlUeXBlKCdhdWRpby9tcGVnOyBjb2RlY3M9XCJtcDNcIicpICE9PSAnJztcbiAgICAgIGNvbnN0IGNhblBsYXlBQUMgPSBfYXVkaW8uY2FuUGxheVR5cGUoXG4gICAgICAgICAgJ2F1ZGlvL21wNDsgY29kZWNzPVwibXA0YS40MC4yXCInKSAhPT0gJyc7XG4gICAgICBjb25zdCBjYW5QbGF5M0dQUCA9IF9hdWRpby5jYW5QbGF5VHlwZShcbiAgICAgICAgICAnYXVkaW8vM2dwcDsgY29kZWNzPVwic2FtclwiJykgIT09ICcnO1xuXG4gICAgICBjb25zb2xlLmxvZygnTmF0aXZlIFZvcmJpcyBhdWRpbyBpbiBPZ2cgY29udGFpbmVyIHBsYXliYWNrIGNhcGFiaWxpdHk6JywgY2FuUGxheU9nZ1ZvcmJpcyk7XG4gICAgICBjb25zb2xlLmxvZygnTmF0aXZlIE9wdXMgYXVkaW8gaW4gT2dnIGNvbnRhaW5lciBwbGF5YmFjayBjYXBhYmlsaXR5OicsIGNhblBsYXlPZ2dPcHVzKTtcbiAgICAgIGNvbnNvbGUubG9nKCdOYXRpdmUgUENNIGF1ZGlvIGluIFdhdmVmb3JtIEF1ZGlvIEZpbGUgRm9ybWF0IChXQVZFKSBwbGF5YmFjayBjYXBhYmlsaXR5OicsIGNhblBsYXlXYXZlKTtcbiAgICAgIGNvbnNvbGUubG9nKCdOYXRpdmUgTVBFRyBBdWRpbyBMYXllciAzIChNUDMpIHBsYXliYWNrIGNhcGFiaWxpdHk6JywgY2FuUGxheU1QMyk7XG4gICAgICBjb25zb2xlLmxvZygnTmF0aXZlIExvdy1Db21wbGV4aXR5IEFBQyBhdWRpbyBpbiBNUDQgY29udGFpbmVyIHBsYXliYWNrIGNhcGFiaWxpdHk6JywgY2FuUGxheUFBQyk7XG4gICAgICBjb25zb2xlLmxvZygnTmF0aXZlIEFNUiBhdWRpbyBpbiAzR1BQIGNvbnRhaW5lciBwbGF5YmFjayBjYXBhYmlsaXR5OicsIGNhblBsYXkzR1BQKTtcblxuICAgICAgaWYgKCEoY2FuUGxheVdhdmUgfHwgY2FuUGxheU1QMykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdOYXRpdmUgV2F2ZSBvciBNUDMgcGxheWJhY2sgaXMgcmVxdWlyZWQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgcGxheWVyIG9iamVjdCB0aGF0IHBlcmZvcm1zIGF1ZGlvIGNvbXByZXNzaW9uLCB3aGVuIGF2YWlsYWJsZS5cbiAgICpcbiAgICogVXNpbmcgdGhlIE1lZGlhIFN0cmVhbSBSZWNvcmRpbmcgQVBJIGZvciByZWNvcmRpbmcgaXMgdGhlIHByZWZlcnJlZFxuICAgKiBzb2x1dGlvbi4gSXQgYWxsb3dzIHJlY29yZGluZyBjb21wcmVzc2VkIGF1ZGlvIHdoaWNoIG1ha2VzIGl0IHF1aWNrZXIgdG9cbiAgICogc3VibWl0LiBJZiBub3QgYXZhaWxhYmxlLCB1c2UgYSBkZWZhdWx0IGNyZWF0ZVNjcmlwdFByb2Nlc3NvciBpcyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja3MgLSBDYWxsYmFja3MgdG8gYWRkIHRvIHRoZSBjaG9zZW4gcGxheWVyLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2dldEJlc3RQbGF5ZXIoY2FsbGJhY2tzKSB7XG4gICAgbGV0IHBsYXllciA9IG51bGw7XG4gICAgLy8gU3RhcnQgYnkgY2hlY2tpbmcgZm9yIGEgQ29yZG92YSBlbnZpcm9ubWVudC5cbiAgICAvLyBXaGVuIHJ1bm5pbmcgdW5kZXIgYSBkZWJ1Z2dlciBsaWtlIFJpcHBsZSwgYm90aCBDb3Jkb3ZhIGFuZCBXZWJBdWRpb1xuICAgIC8vIGVudmlyb25tZW50cyBnZXQgZGV0ZWN0ZWQuIFdoaWxlIHRoaXMgaXMgdGVjaG5pY2FsbHkgdmFsaWQgLVJpcHBsZSBpc1xuICAgIC8vIHJ1bm5pbmcgaW4gQ2hyb21lLCB3aGljaCBzdXBwb3J0cyBXZWJBdWRpby0sIGl0J3Mgbm90IGEgc2FuZGJveCB0aGF0XG4gICAgLy8gYWxzbyBkaXNhYmxlcyBmdW5jdGlvbmFsaXR5IHRoYXQgd291bGQgbm90IGJlIGF2YWlsYWJsZSBvbiBhIGRldmljZS5cbiAgICBpZiAodGhpcy5jYW5Vc2VDb3Jkb3ZhTWVkaWEpIHtcbiAgICAgIC8vIFVzZSBDb3Jkb3ZhIGF1ZGlvIGVuY29kaW5nICh1c2VkIGNvZGVjIGRlcGVuZHMgb24gdGhlIHBsYXRmb3JtKS5cbiAgICAgIHBsYXllciA9IG5ldyBDb3Jkb3ZhTWVkaWFQbGF5ZXIoY2FsbGJhY2tzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2FuVXNlQXVkaW8pIHtcbiAgICAgIC8vIFVzZSB0aGUgcmVjb3JkZXIgd2l0aCBNZWRpYVJlY29yZGVyIGltcGxlbWVudGF0aW9uLlxuICAgICAgcGxheWVyID0gbmV3IFdlYkF1ZGlvUGxheWVyKGNhbGxiYWNrcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgYSBwcm9wZXIgcGxheWVyLicpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnUGxheWVyIGluaXRpYWxpc2VkLicpO1xuICAgIHJldHVybiBwbGF5ZXI7XG4gIH1cblxuICAvKipcbiAgICogUHJlbG9hZCBhdWRpbyBmcm9tIGFuIFVSTC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgdGhhdCBjb250YWlucyB0aGUgYXVkaW8uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ByZWxvYWQ9dHJ1ZV0gLSBUcnkgcHJlbG9hZGluZyBtZXRhZGF0YSBhbmQgcG9zc2libGUgc29tZSBhdWRpby4gU2V0IHRvIGZhbHNlIHRvIG5vdCBkb3dubG9hZFxuICAgKiBhbnl0aGluZyB1bnRpbCBwbGF5aW5nLlxuICAgKiBAcGFyYW0gez9GdW5jdGlvbn0gbG9hZGVkQ2IgLSBUaGUgY2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIHdoZW4gdGhlIGR1cmF0aW9uIG9mIHRoZSBhdWRpbyBmaWxlXG4gICAqIGlzIGZpcnN0IGtub3duLlxuICAgKiBAZW1pdHMge0V2ZW50fSAnY2FucGxheScgV2hlbiB0aGUgcGxheWVyIGlzIHJlYWR5IHRvIHBsYXkuXG4gICAqL1xuICBsb2FkKHVybCwgcHJlbG9hZCwgbG9hZGVkQ2IpIHtcbiAgICB0aGlzLnJlc2V0KCk7XG4gICAgdGhpcy5fcGxheWVyLmxvYWQodXJsLCBwcmVsb2FkLCBsb2FkZWRDYik7XG4gICAgdGhpcy5fYXVkaW9MZXZlbCA9IDE7XG5cbiAgICAvLyBJZiBwcmVsb2FkaW5nIGlzIGRpc2FibGVkLCB0aGUgJ2NhbnBsYXknIGV2ZW50IHdvbid0IGJlIHRyaWdnZXJlZC5cbiAgICAvLyBJbiB0aGF0IGNhc2UsIGZpcmUgaXQgbWFudWFsbHkuXG4gICAgaWYgKCFwcmVsb2FkKSB7XG4gICAgICB0aGlzLl9lbWl0dGVyLmVtaXQoJ2NhbnBsYXknLCBbXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVubG9hZCBwcmV2aW91c2x5IGxvYWRlZCBhdWRpby4gU3RvcHMgdGhlIHBsYXllciBhbmQgYW55IHN0b3B3YXRjaC5cbiAgICpcbiAgICogQGVtaXRzIHtFdmVudH0gJ3VubG9hZGVkJ1xuICAgKi9cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5zdG9wKCk7XG4gICAgdGhpcy5fcGxheWVyLnJlc2V0KCk7XG4gICAgdGhpcy5fZW1pdHRlci5lbWl0KCd1bmxvYWRlZCcsIFtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBvciBjb250aW51ZSBwbGF5YmFjayBvZiBhdWRpby4gQWxzbyBzdGFydHMgdGhlIHN0b3B3YXRjaCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7P251bWJlcn0gcG9zaXRpb24gLSBXaGVuIHBvc2l0aW9uIGlzIGdpdmVuLCBzdGFydCBwbGF5aW5nIGZyb20gdGhpcyBwb3NpdGlvbiAoc2Vjb25kcykuXG4gICAqL1xuICBwbGF5KHBvc2l0aW9uKSB7XG4gICAgaWYgKHRoaXMuX3BsYXllci5pc1BsYXlpbmcoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9wbGF5ZXIucGxheShwb3NpdGlvbik7XG4gICAgaWYgKHRoaXMuX3N0b3B3YXRjaCkge1xuICAgICAgY29uc3QgdGltZSA9IE1hdGgucm91bmQodGhpcy5fcGxheWVyLmdldEN1cnJlbnRUaW1lKCkgKiAxMCk7XG4gICAgICB0aGlzLl9zdG9wd2F0Y2guX3ZhbHVlID0gdGltZTtcbiAgICAgIHRoaXMuX3N0b3B3YXRjaC5zdGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHBsYXliYWNrIG9mIGF1ZGlvLiBTdG9wcyBhbmQgcmVzZXRzIHRoZSBzdG9wd2F0Y2guXG4gICAqL1xuICBzdG9wKCkge1xuICAgIGlmICh0aGlzLl9zdG9wd2F0Y2gpIHtcbiAgICAgIHRoaXMuX3N0b3B3YXRjaC5yZXNldCgpO1xuICAgICAgdGhpcy5fc3RvcHdhdGNoLnN0b3AoKTtcbiAgICB9XG4gICAgdGhpcy5fcGxheWVyLnN0b3AoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXVzZSBwbGF5YmFjayBvZiBhdWRpby4gU3RvcHMgdGhlIHN0b3B3YXRjaC5cbiAgICovXG4gIHBhdXNlKCkge1xuICAgIGlmICh0aGlzLl9zdG9wd2F0Y2gpIHtcbiAgICAgIHRoaXMuX3N0b3B3YXRjaC5zdG9wKCk7XG4gICAgfVxuICAgIHRoaXMuX3BsYXllci5wYXVzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBhdWRpbyBwbGF5YmFjay4gU3dpdGNoIGZyb20gcGxheWluZyB0byBwYXVzZWQgc3RhdGUgYW5kIGJhY2suXG4gICAqL1xuICB0b2dnbGVQbGF5YmFjaygpIHtcbiAgICBpZiAodGhpcy5fcGxheWVyLmlzUGxheWluZygpKSB7XG4gICAgICB0aGlzLnBhdXNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGxheSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBwcmVsb2FkaW5nIGF1ZGlvLlxuICAgKi9cbiAgcHJlbG9hZCgpIHtcbiAgICB0aGlzLl9wbGF5ZXIucHJlbG9hZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHBsYXlpbmcgYXVkaW8gYXQgdGhlIGdpdmVuIG9mZnNldC4gQ29ycmVjdHMgYSBwZXJjZW50YWdlIHVuZGVyIDAgb3IgYWJvdmUgMTAwIHRvIHRoZSByZXNwZWN0aXZlIHZhbHVlcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBlcmNlbnRhZ2UgLSBTdGFydCBhdCB0aGlzIHBlcmNlbnRhZ2UgKDAuLjEwMCkgb2YgdGhlIGF1ZGlvIHN0cmVhbS5cbiAgICovXG4gIHNjcnViKHBlcmNlbnRhZ2UpIHtcbiAgICBpZiAocGVyY2VudGFnZSA8IDApIHtcbiAgICAgIHRoaXMuX3BsYXllci5zY3J1YigwKTtcbiAgICB9IGVsc2UgaWYgKHBlcmNlbnRhZ2UgPiAxMDApIHtcbiAgICAgIHRoaXMuX3BsYXllci5zY3J1YigxMDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9wbGF5ZXIuc2NydWIocGVyY2VudGFnZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zdG9wd2F0Y2gpIHtcbiAgICAgIHRoaXMuX3N0b3B3YXRjaC5fdmFsdWUgPSBNYXRoLnJvdW5kKHRoaXMuX3BsYXllci5nZXRDdXJyZW50VGltZSgpICogMTApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwZXJjZW50YWdlIG9mIHdoaWNoIHRoZSBidWZmZXIgaXMgZmlsbGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBQZXJjZW50YWdlIG9mIGJ1ZmZlciBmaWxsLlxuICAgKi9cbiAgZ2V0QnVmZmVyRmlsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyLmdldEJ1ZmZlckZpbGwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHBsYXlpbmcgdGltZSBhcyBvZmZzZXQgaW4gc2Vjb25kcyBmcm9tIHRoZSBzdGFydC5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGltZSBpbiBzZWNvbmRzIGFzIG9mZnNldCBmcm9tIHRoZSBzdGFydC5cbiAgICovXG4gIGdldEN1cnJlbnRUaW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGF5ZXIuZ2V0Q3VycmVudFRpbWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0b3RhbCBkdXJhdGlvbiBpbiBzZWNvbmRzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaW1lIGluIHNlY29uZHMgb2YgZnJhZ21lbnQgZHVyYXRpb24uXG4gICAqL1xuICBnZXREdXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyLmdldER1cmF0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlcmUgaXMgcGxheWJhY2sgaW4gcHJvZ3Jlc3MuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHVzZXIgaXMgY3VycmVudGx5IHBsYXlpbmcgYXVkaW8uIEZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzUGxheWluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyLmlzUGxheWluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgcmVhZHkgc3RhdGUgb2YgdGhlIHBsYXllci5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgd2hlbiBwbGF5ZXIgaXMgcmVhZHkgdG8gc3RhcnQgbG9hZGluZyBkYXRhIG9yIHBsYXkuIEZhbHNlIHdoZW4gbm8gYXVkaW8gaXMgbG9hZGVkXG4gICAqIG9yIHRoZSBwbGF5ZXIgaXMgcHJlcGFyaW5nLlxuICAgKi9cbiAgY2FuUGxheSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyLmNhblBsYXkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHBsYXliYWNrIHJhdGUgb2YgdGhlIGF1ZGlvLiBWYWx1ZXMgYXJlIHVzZWQgYWNjb3JkaW5nIHRvIEhUTUw1IEF1ZGlvLlxuICAgKiBFeGFtcGxlIHZhbHVlczpcbiAgICogKjEuMCBpcyBub3JtYWwgc3BlZWQuXG4gICAqICowLjUgaXMgaGFsZiBzcGVlZCAoc2xvd2VyKS5cbiAgICogKjIuMCBpcyBkb3VibGUgc3BlZWQgKGZhc3RlcikuXG4gICAqICotMS4wIGlzIGJhY2t3YXJkcywgbm9ybWFsIHNwZWVkLlxuICAgKiAqLTAuNSBpcyBiYWNrd2FyZHMsIGhhbGYgc3BlZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByYXRlIC0gUmF0ZSBhdCB3aGljaCB0byBjaGFuZ2UgdGhlIGF1ZGlvIHBsYXliYWNrLlxuICAgKi9cbiAgc2V0UGxheWJhY2tSYXRlKHJhdGUpIHtcbiAgICB0aGlzLl9wbGF5ZXIuc2V0UGxheWJhY2tSYXRlKHJhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcGxheWJhY2sgcmF0ZSBvZiB0aGUgY3VycmVudCBsb2FkZWQgYXVkaW8uXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFBsYXliYWNrIHJhdGUgb2YgdGhlIGF1ZGlvLlxuICAgKi9cbiAgZ2V0UGxheWJhY2tSYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGF5ZXIuZ2V0UGxheWJhY2tSYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQmluZCBhIHN0b3B3YXRjaCB0byBzeW5jIHdpdGggdGhlIHBsYXlpbmcgYW5kIHN0b3BwaW5nIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHBsYXllci5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gdGlja0NiIC0gQ2FsbGJhY2sgdG8gaW52b2tlIG9uIGV2ZXJ5IHRpY2suIEEgdGljayBvY2N1cnMgb25jZSBldmVyeSAxMDAgbXMuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBfdGlja0NiIGlzIG51bGwuXG4gICAqIEByZXR1cm5zIHtTdG9wd2F0Y2h9IE5ldyBTdG9wd2F0Y2ggb2JqZWN0LlxuICAgKi9cbiAgYmluZFN0b3B3YXRjaCh0aWNrQ2IpIHtcbiAgICB0aGlzLl9zdG9wd2F0Y2ggPSBuZXcgU3RvcHdhdGNoKHRpbWUgPT4ge1xuICAgICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLmdldER1cmF0aW9uKCkgKiAxMCAvIHRoaXMuX3BsYXllci5zb3VuZC5wbGF5YmFja1JhdGU7XG4gICAgICBpZiAodGltZSA+IGR1cmF0aW9uKSB7XG4gICAgICAgIHRpY2tDYihkdXJhdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aWNrQ2IodGltZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3B3YXRjaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhdWRpbyBsZXZlbCBvZiB0aGUgY3VycmVudCBsb2FkZWQgYXVkaW8uIFZhbGlkIHZhbHVlcyBhcmUgZnJvbSAwICgwJSkgdG8gMSAoMTAwJSkuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB2b2x1bWUgLSBWb2x1bWUgdmFsdWUgZnJvbSAwIHRvIDEuXG4gICAqL1xuICBzZXRBdWRpb1ZvbHVtZSh2b2x1bWUpIHtcbiAgICBpZiAodm9sdW1lICE9PSAwKSB7XG4gICAgICB0aGlzLl9hdWRpb011dGVkID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh2b2x1bWUgPT09IDApIHtcbiAgICAgIHRoaXMuX2F1ZGlvTXV0ZWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLl9wbGF5ZXIuc2V0QXVkaW9Wb2x1bWUodm9sdW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBhdWRpbyBsZXZlbCBvZiB0aGUgY3VycmVudCBsb2FkZWQgYXVkaW8uIFZhbGlkIHZhbHVlcyBhcmUgZnJvbSAwICgwJSkgdG8gMSAoMTAwJSkuXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFZvbHVtZSBsZXZlbCBvZiB0aGUgY3VycmVudCBsb2FkZWQgYXVkaW8uXG4gICAqL1xuICBnZXRBdWRpb1ZvbHVtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyLmdldEF1ZGlvVm9sdW1lKCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSBjdXJyZW50IHBsYXlpbmcgYXVkaW8gdG8gYmUgbXV0ZWQgb3Igbm90LiBJZiB0aGUgYXVkaW8gd2lsbCBiZSBtdXRlZCwgdGhlIGN1cnJlbnQgYXVkaW8gbGV2ZWxcbiAgICogaXMgcmVtZW1iZXJlZCBhbmQgY2FuIGJlIHVubXV0ZWQgdG8gY29udGludWUgYXQgdGhpcyBzYW1lIGF1ZGlvIGxldmVsLlxuICAgKi9cbiAgdG9nZ2xlQXVkaW9NdXRlKCkge1xuICAgIHRoaXMuc2V0QXVkaW9NdXRlKCF0aGlzLl9hdWRpb011dGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW51YWxseSBzZXQgdGhlIG11dGVkIHN0YXRlIG9mIHRoZSBjdXJyZW50IGxvYWRlZCBhdWRpby5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBzaG91bGRNdXRlIC0gV2hldGhlciB0aGUgYXVkaW8gc2hvdWxkIGJlIG11dGVkIG9yIHVubXV0ZWQuXG4gICAqL1xuICBzZXRBdWRpb011dGUoc2hvdWxkTXV0ZSkge1xuICAgIGlmIChzaG91bGRNdXRlKSB7XG4gICAgICB0aGlzLl9hdWRpb0xldmVsID0gdGhpcy5nZXRBdWRpb1ZvbHVtZSgpO1xuICAgICAgdGhpcy5zZXRBdWRpb1ZvbHVtZSgwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRBdWRpb1ZvbHVtZSh0aGlzLl9hdWRpb0xldmVsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBtdXRlZCBzdGF0ZSBvZiB0aGUgY3VycmVudCBsb2FkZWQgYXVkaW8uXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUaGUgbXV0ZWQgc3RhdGUgb2YgdGhlIGN1cnJlbnQgbG9hZGVkIGF1ZGlvLlxuICAgKi9cbiAgaXNBdWRpb011dGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9hdWRpb011dGVkO1xuICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby9hdWRpby1wbGF5ZXIuanMiXSwibmFtZXMiOlsiQXVkaW9QbGF5ZXIiLCJvcHRpb25zIiwiX3NldHRpbmdzIiwiT2JqZWN0IiwiYXNzaWduIiwiX3BsYXliYWNrQ29tcGF0aWJpbGl0eSIsInNlbGYiLCJjYWxsYmFja3MiLCJwbGF5aW5nQ2IiLCJfZW1pdHRlciIsImVtaXQiLCJ0aW1ldXBkYXRlQ2IiLCJkdXJhdGlvbmNoYW5nZUNiIiwiY2FucGxheUNiIiwiZW5kZWRDYiIsInBhdXNlQ2IiLCJzdG9wcGVkQ2IiLCJwbGF5YmFja1N0b3BwZWRDYiIsIl9zdG9wd2F0Y2giLCJzdG9wIiwicHJvZ3Jlc3NDYiIsImVycm9yQ2IiLCJfcGxheWVyIiwiX2dldFBsYXllciIsIl9hdWRpb0xldmVsIiwiX2F1ZGlvTXV0ZWQiLCJyZXNldEV2ZW50TGlzdGVuZXJzIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm5hbWUiLCJoYW5kbGVyIiwib24iLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib2ZmIiwiY2FuVXNlQXVkaW8iLCJCb29sZWFuIiwiQXVkaW8iLCJjb25zb2xlIiwibG9nIiwiRXJyb3IiLCJfYXVkaW8iLCJjYW5QbGF5VHlwZSIsIkZ1bmN0aW9uIiwiY2FuUGxheU9nZ1ZvcmJpcyIsImNhblBsYXlPZ2dPcHVzIiwiY2FuUGxheVdhdmUiLCJjYW5QbGF5TVAzIiwiY2FuUGxheUFBQyIsImNhblBsYXkzR1BQIiwicGxheWVyIiwibG9hZCIsInVybCIsInByZWxvYWQiLCJsb2FkZWRDYiIsInJlc2V0IiwicGxheSIsInBvc2l0aW9uIiwiaXNQbGF5aW5nIiwidGltZSIsIk1hdGgiLCJyb3VuZCIsImdldEN1cnJlbnRUaW1lIiwiX3ZhbHVlIiwic3RhcnQiLCJwYXVzZSIsInRvZ2dsZVBsYXliYWNrIiwic2NydWIiLCJwZXJjZW50YWdlIiwiZ2V0QnVmZmVyRmlsbCIsImdldER1cmF0aW9uIiwiY2FuUGxheSIsInNldFBsYXliYWNrUmF0ZSIsInJhdGUiLCJnZXRQbGF5YmFja1JhdGUiLCJiaW5kU3RvcHdhdGNoIiwidGlja0NiIiwiZHVyYXRpb24iLCJzb3VuZCIsInBsYXliYWNrUmF0ZSIsInNldEF1ZGlvVm9sdW1lIiwidm9sdW1lIiwiZ2V0QXVkaW9Wb2x1bWUiLCJ0b2dnbGVBdWRpb011dGUiLCJzZXRBdWRpb011dGUiLCJzaG91bGRNdXRlIiwiaXNBdWRpb011dGVkIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7O0FBQ0E7OztJQUdxQkEsVztBQUNuQjs7Ozs7OztBQU9BLHVCQUFZQyxPQUFaLEVBQXFCO0FBQUE7O0FBQ25CLFNBQUtDLFNBQUwsR0FBaUJDLE9BQU9DLE1BQVAsQ0FBYyxFQUFkLEVBQWtCSCxPQUFsQixDQUFqQjs7QUFFQSxTQUFLSSxzQkFBTDtBQUNBLFFBQU1DLE9BQU8sSUFBYjtBQUNBLFFBQU1DLFlBQVk7QUFDaEJDLGVBRGdCLHVCQUNKO0FBQ1ZGLGFBQUtHLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixTQUFuQixFQUE4QixFQUE5QjtBQUNELE9BSGU7QUFJaEJDLGtCQUpnQiwwQkFJRDtBQUNiTCxhQUFLRyxRQUFMLENBQWNDLElBQWQsQ0FBbUIsWUFBbkIsRUFBaUMsRUFBakM7QUFDRCxPQU5lO0FBT2hCRSxzQkFQZ0IsOEJBT0c7QUFDakJOLGFBQUtHLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixnQkFBbkIsRUFBcUMsRUFBckM7QUFDRCxPQVRlO0FBVWhCRyxlQVZnQix1QkFVSjtBQUNWUCxhQUFLRyxRQUFMLENBQWNDLElBQWQsQ0FBbUIsU0FBbkIsRUFBOEIsRUFBOUI7QUFDRCxPQVplO0FBYWhCSSxhQWJnQixxQkFhTjtBQUNSUixhQUFLRyxRQUFMLENBQWNDLElBQWQsQ0FBbUIsT0FBbkIsRUFBNEIsRUFBNUI7QUFDRCxPQWZlO0FBZ0JoQkssYUFoQmdCLHFCQWdCTjtBQUNSVCxhQUFLRyxRQUFMLENBQWNDLElBQWQsQ0FBbUIsT0FBbkIsRUFBNEIsRUFBNUI7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QUNELE9BRkQsTUFFTztBQUNMRCxlQUFPakIsSUFBUDtBQUNEO0FBQ0YsS0FQaUIsQ0FBbEI7QUFRQSxXQUFPLEtBQUt2QyxVQUFaO0FBQ0QsRzs7QUFFRDs7Ozs7Ozt3QkFLQTRELGMsMkJBQWVDLE0sRUFBUTtBQUNyQixRQUFJQSxXQUFXLENBQWYsRUFBa0I7QUFDaEIsV0FBS3RELFdBQUwsR0FBbUIsS0FBbkI7QUFDRDtBQUNELFFBQUlzRCxXQUFXLENBQWYsRUFBa0I7QUFDaEIsV0FBS3RELFdBQUwsR0FBbUIsSUFBbkI7QUFDRDtBQUNELFNBQUtILE9BQUwsQ0FBYXdELGNBQWIsQ0FBNEJDLE1BQTVCO0FBQ0QsRzs7QUFFRDs7Ozs7Ozt3QkFLQUMsYyw2QkFBaUI7QUFDZixXQUFPLEtBQUsxRCxPQUFMLENBQWEwRCxjQUFiLEVBQVA7QUFDRCxHOztBQUVEOzs7Ozs7d0JBSUFDLGUsOEJBQWtCO0FBQ2hCLFNBQUtDLFlBQUwsQ0FBa0IsQ0FBQyxLQUFLekQsV0FBeEI7QUFDRCxHOztBQUVEOzs7Ozs7O3dCQUtBeUQsWSx5QkFBYUMsVSxFQUFZO0FBQ3ZCLFFBQUlBLFVBQUosRUFBZ0I7QUFDZCxXQUFLM0QsV0FBTCxHQUFtQixLQUFLd0QsY0FBTCxFQUFuQjtBQUNBLFdBQUtGLGNBQUwsQ0FBb0IsQ0FBcEI7QUFDRCxLQUhELE1BR087QUFDTCxXQUFLQSxjQUFMLENBQW9CLEtBQUt0RCxXQUF6QjtBQUNEO0FBQ0YsRzs7QUFFRDs7Ozs7Ozt3QkFLQTRELFksMkJBQWU7QUFDYixXQUFPLEtBQUszRCxXQUFaO0FBQ0QsRzs7Ozs7a0JBdFprQnpCLFciLCJmaWxlIjoiYXVkaW8tcGxheWVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFN0b3B3YXRjaCBmcm9tICcuL3Rvb2xzJztcbmltcG9ydCBXZWJBdWRpb1BsYXllciBmcm9tICcuL3dlYi1hdWRpby1wbGF5ZXInO1xuaW1wb3J0IGFsbE9mZiBmcm9tICdldmVudC1lbWl0dGVyL2FsbC1vZmYnO1xuaW1wb3J0IGVlIGZyb20gJ2V2ZW50LWVtaXR0ZXInO1xuLyoqXG4gKiBJVFNMYW5ndWFnZSBBdWRpb1BsYXllciBub24tZ3JhcGhpY2FsIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXVkaW9QbGF5ZXIge1xuICAvKipcbiAgICogQ29uc3RydWN0IGFuIEF1ZGlvUGxheWVyIGZvciBwbGF5aW5nIC53YXYgb3IgLm1wMyBmaWxlcy5cbiAgICpcbiAgICogQHBhcmFtIHs/T2JqZWN0fSBvcHRpb25zIC0gT3ZlcnJpZGUgYW55IG9mIHRoZSBkZWZhdWx0IHNldHRpbmdzLlxuICAgKiBAZW1pdHMge0V2ZW50fSAncGxheWJhY2tzdG9wcGVkJyBXaGVuIHBsYXliYWNrIGhhcyBlbmRlZCwgYmVlbiBzdG9wcGVkIG9yIGJlZW4gcGF1c2VkLlxuICAgKiBAZW1pdHMge0V2ZW50fSBBbGwgZXZlbnRzIHRoZSBIVE1MNSBBdWRpbyBhbHNvIGZpcmVzLiB7QGxpbmsgaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL3RhZ3MvcmVmX2F2X2RvbS5hc3B9XG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgdGhpcy5fc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKTtcblxuICAgIHRoaXMuX3BsYXliYWNrQ29tcGF0aWJpbGl0eSgpO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IGNhbGxiYWNrcyA9IHtcbiAgICAgIHBsYXlpbmdDYigpIHtcbiAgICAgICAgc2VsZi5fZW1pdHRlci5lbWl0KCdwbGF5aW5nJywgW10pO1xuICAgICAgfSxcbiAgICAgIHRpbWV1cGRhdGVDYigpIHtcbiAgICAgICAgc2VsZi5fZW1pdHRlci5lbWl0KCd0aW1ldXBkYXRlJywgW10pO1xuICAgICAgfSxcbiAgICAgIGR1cmF0aW9uY2hhbmdlQ2IoKSB7XG4gICAgICAgIHNlbGYuX2VtaXR0ZXIuZW1pdCgnZHVyYXRpb25jaGFuZ2UnLCBbXSk7XG4gICAgICB9LFxuICAgICAgY2FucGxheUNiKCkge1xuICAgICAgICBzZWxmLl9lbWl0dGVyLmVtaXQoJ2NhbnBsYXknLCBbXSk7XG4gICAgICB9LFxuICAgICAgZW5kZWRDYigpIHtcbiAgICAgICAgc2VsZi5fZW1pdHRlci5lbWl0KCdlbmRlZCcsIFtdKTtcbiAgICAgIH0sXG4gICAgICBwYXVzZUNiKCkge1xuICAgICAgICBzZWxmLl9lbWl0dGVyLmVtaXQoJ3BhdXNlJywgW10pO1xuICAgICAgfSxcbiAgICAgIHN0b3BwZWRDYigpIHtcbiAgICAgICAgc2VsZi5fZW1pdHRlci5lbWl0KCdzdG9wcGVkJywgW10pO1xuICAgICAgfSxcbiAgICAgIHBsYXliYWNrU3RvcHBlZENiKCkge1xuICAgICAgICBzZWxmLl9lbWl0dGVyLmVtaXQoJ3BsYXliYWNrc3RvcHBlZCcsIFtdKTtcbiAgICAgICAgaWYgKHNlbGYuX3N0b3B3YXRjaCkge1xuICAgICAgICAgIHNlbGYuX3N0b3B3YXRjaC5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwcm9ncmVzc0NiKCkge1xuICAgICAgICBzZWxmLl9lbWl0dGVyLmVtaXQoJ3Byb2dyZXNzJywgW10pO1xuICAgICAgfSxcbiAgICAgIGVycm9yQ2IoKSB7XG4gICAgICAgIHNlbGYuX2VtaXR0ZXIuZW1pdCgnZXJyb3InLCBbXSk7XG4gICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7V2ViQXVkaW9QbGF5ZXJ9IHBsYXllciAtIFNwZWNpZmljIGF1ZGlvIHBsYXllci5cbiAgICAgKi9cbiAgICB0aGlzLl9wbGF5ZXIgPSB0aGlzLl9nZXRQbGF5ZXIoY2FsbGJhY2tzKTtcbiAgICB0aGlzLl9lbWl0dGVyID0gZWUoe30pO1xuICAgIHRoaXMuX3N0b3B3YXRjaCA9IG51bGw7XG4gICAgdGhpcy5fYXVkaW9MZXZlbCA9IDE7XG4gICAgdGhpcy5fYXVkaW9NdXRlZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFR1cm4gb2ZmIGFsbCBldmVudCBsaXN0ZW5lcnMgZm9yIHRoaXMgcGxheWVyLlxuICAgKi9cbiAgcmVzZXRFdmVudExpc3RlbmVycygpIHtcbiAgICBhbGxPZmYodGhpcy5fZW1pdHRlcik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGV2ZW50IGxpc3RlbmVyLiBMaXN0ZW5zIHRvIGV2ZW50cyBlbWl0dGVkIGZyb20gdGhlIHBsYXllci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEhhbmRsZXIgZnVuY3Rpb24gdG8gYWRkLlxuICAgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKSB7XG4gICAgdGhpcy5fZW1pdHRlci5vbihuYW1lLCBoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZXZlbnQgbGlzdGVuZXIgb2YgdGhlIHBsYXllci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEhhbmRsZXIgZnVuY3Rpb24gdG8gcmVtb3ZlLlxuICAgKi9cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKSB7XG4gICAgdGhpcy5fZW1pdHRlci5vZmYobmFtZSwgaGFuZGxlcik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgZm9yIG1hbmRhdG9yeSBicm93c2VyIGNvbXBhdGliaWxpdHkuXG4gICAqIExvZ3MgZGV0YWlsZWQgYnJvd3NlciBjb21wYXRpYmlsaXRpZXMgcmVsYXRlZCB0byBmb3IgYXVkaW8gcGxheWJhY2suXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBubyBuYXRpdmUgd2F2ZSBvciBNUDMgcGxheWJhY2sgaXMgYXZhaWxhYmxlLlxuICAgKi9cbiAgX3BsYXliYWNrQ29tcGF0aWJpbGl0eSgpIHtcbiAgICAvLyBEZXRlY3QgYXVkaW8gcGxheWJhY2sgY2FwYWJpbGl0aWVzLlxuXG4gICAgLy8gRGV0ZWN0IEhUTUw1IEF1ZGlvIHBsYXliYWNrLlxuICAgIC8vIGh0dHA6Ly9jYW5pdXNlLmNvbS8jZmVhdD1hdWRpb1xuICAgIHRoaXMuY2FuVXNlQXVkaW8gPSBCb29sZWFuKEF1ZGlvKTtcbiAgICBjb25zb2xlLmxvZygnTmF0aXZlIEhUTUw1IEF1ZGlvIHBsYXliYWNrIGNhcGFiaWxpdHk6JywgdGhpcy5jYW5Vc2VBdWRpbyk7XG5cbiAgICBpZiAoIXRoaXMuY2FuVXNlQXVkaW8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1NvbWUgZm9ybSBvZiBhdWRpbyBwbGF5YmFjayBjYXBhYmlsaXR5IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNhblVzZUF1ZGlvKSB7XG4gICAgICBjb25zdCBfYXVkaW8gPSBuZXcgQXVkaW8oKTtcbiAgICAgIGlmICghKF9hdWRpby5jYW5QbGF5VHlwZSAmJiBfYXVkaW8uY2FuUGxheVR5cGUgaW5zdGFuY2VvZiBGdW5jdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdVbmFibGUgdG8gZGV0ZWN0IGF1ZGlvIHBsYXliYWNrIGNhcGFiaWxpdGllcycpO1xuICAgICAgfVxuICAgICAgY29uc3QgY2FuUGxheU9nZ1ZvcmJpcyA9IF9hdWRpby5jYW5QbGF5VHlwZShcbiAgICAgICAgJ2F1ZGlvL29nZzsgY29kZWNzPVwidm9yYmlzXCInKSAhPT0gJyc7XG4gICAgICBjb25zdCBjYW5QbGF5T2dnT3B1cyA9IF9hdWRpby5jYW5QbGF5VHlwZShcbiAgICAgICAgJ2F1ZGlvL29nZzsgY29kZWNzPVwib3B1c1wiJykgIT09ICcnO1xuICAgICAgY29uc3QgY2FuUGxheVdhdmUgPSBfYXVkaW8uY2FuUGxheVR5cGUoJ2F1ZGlvL3dhdicpICE9PSAnJztcbiAgICAgIGNvbnN0IGNhblBsYXlNUDMgPSBfYXVkaW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWc7IGNvZGVjcz1cIm1wM1wiJykgIT09ICcnO1xuICAgICAgY29uc3QgY2FuUGxheUFBQyA9IF9hdWRpby5jYW5QbGF5VHlwZShcbiAgICAgICAgJ2F1ZGlvL21wNDsgY29kZWNzPVwibXA0YS40MC4yXCInKSAhPT0gJyc7XG4gICAgICBjb25zdCBjYW5QbGF5M0dQUCA9IF9hdWRpby5jYW5QbGF5VHlwZShcbiAgICAgICAgJ2F1ZGlvLzNncHA7IGNvZGVjcz1cInNhbXJcIicpICE9PSAnJztcblxuICAgICAgY29uc29sZS5sb2coJ05hdGl2ZSBWb3JiaXMgYXVkaW8gaW4gT2dnIGNvbnRhaW5lciBwbGF5YmFjayBjYXBhYmlsaXR5OicsIGNhblBsYXlPZ2dWb3JiaXMpO1xuICAgICAgY29uc29sZS5sb2coJ05hdGl2ZSBPcHVzIGF1ZGlvIGluIE9nZyBjb250YWluZXIgcGxheWJhY2sgY2FwYWJpbGl0eTonLCBjYW5QbGF5T2dnT3B1cyk7XG4gICAgICBjb25zb2xlLmxvZygnTmF0aXZlIFBDTSBhdWRpbyBpbiBXYXZlZm9ybSBBdWRpbyBGaWxlIEZvcm1hdCAoV0FWRSkgcGxheWJhY2sgY2FwYWJpbGl0eTonLCBjYW5QbGF5V2F2ZSk7XG4gICAgICBjb25zb2xlLmxvZygnTmF0aXZlIE1QRUcgQXVkaW8gTGF5ZXIgMyAoTVAzKSBwbGF5YmFjayBjYXBhYmlsaXR5OicsIGNhblBsYXlNUDMpO1xuICAgICAgY29uc29sZS5sb2coJ05hdGl2ZSBMb3ctQ29tcGxleGl0eSBBQUMgYXVkaW8gaW4gTVA0IGNvbnRhaW5lciBwbGF5YmFjayBjYXBhYmlsaXR5OicsIGNhblBsYXlBQUMpO1xuICAgICAgY29uc29sZS5sb2coJ05hdGl2ZSBBTVIgYXVkaW8gaW4gM0dQUCBjb250YWluZXIgcGxheWJhY2sgY2FwYWJpbGl0eTonLCBjYW5QbGF5M0dQUCk7XG5cbiAgICAgIGlmICghKGNhblBsYXlXYXZlIHx8IGNhblBsYXlNUDMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnTmF0aXZlIFdhdmUgb3IgTVAzIHBsYXliYWNrIGlzIHJlcXVpcmVkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHBsYXllciBvYmplY3QgdGhhdCBwZXJmb3JtcyBhdWRpbyBjb21wcmVzc2lvbiwgd2hlbiBhdmFpbGFibGUuXG4gICAqXG4gICAqIFVzaW5nIHRoZSBNZWRpYSBTdHJlYW0gUmVjb3JkaW5nIEFQSSBmb3IgcmVjb3JkaW5nIGlzIHRoZSBwcmVmZXJyZWRcbiAgICogc29sdXRpb24uIEl0IGFsbG93cyByZWNvcmRpbmcgY29tcHJlc3NlZCBhdWRpbyB3aGljaCBtYWtlcyBpdCBxdWlja2VyIHRvXG4gICAqIHN1Ym1pdC4gSWYgbm90IGF2YWlsYWJsZSwgdXNlIGEgZGVmYXVsdCBjcmVhdGVTY3JpcHRQcm9jZXNzb3IgaXMgdXNlZC5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tzIC0gQ2FsbGJhY2tzIHRvIGFkZCB0byB0aGUgY2hvc2VuIHBsYXllci5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9nZXRQbGF5ZXIoY2FsbGJhY2tzKSB7XG4gICAgbGV0IHBsYXllciA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5jYW5Vc2VBdWRpbykge1xuICAgICAgLy8gVXNlIHRoZSByZWNvcmRlciB3aXRoIE1lZGlhUmVjb3JkZXIgaW1wbGVtZW50YXRpb24uXG4gICAgICBwbGF5ZXIgPSBuZXcgV2ViQXVkaW9QbGF5ZXIoY2FsbGJhY2tzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBhIHByb3BlciBwbGF5ZXIuJyk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdQbGF5ZXIgaW5pdGlhbGlzZWQuJyk7XG4gICAgcmV0dXJuIHBsYXllcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVsb2FkIGF1ZGlvIGZyb20gYW4gVVJMLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVGhlIFVSTCB0aGF0IGNvbnRhaW5zIHRoZSBhdWRpby5cbiAgICogQHBhcmFtIHtib29sZWFufSBbcHJlbG9hZD10cnVlXSAtIFRyeSBwcmVsb2FkaW5nIG1ldGFkYXRhIGFuZCBwb3NzaWJsZSBzb21lIGF1ZGlvLiBTZXQgdG8gZmFsc2UgdG8gbm90IGRvd25sb2FkXG4gICAqIGFueXRoaW5nIHVudGlsIHBsYXlpbmcuXG4gICAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBsb2FkZWRDYiAtIFRoZSBjYWxsYmFjayB0aGF0IGlzIGludm9rZWQgd2hlbiB0aGUgZHVyYXRpb24gb2YgdGhlIGF1ZGlvIGZpbGVcbiAgICogaXMgZmlyc3Qga25vd24uXG4gICAqIEBlbWl0cyB7RXZlbnR9ICdjYW5wbGF5JyBXaGVuIHRoZSBwbGF5ZXIgaXMgcmVhZHkgdG8gcGxheS5cbiAgICovXG4gIGxvYWQodXJsLCBwcmVsb2FkLCBsb2FkZWRDYikge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgICB0aGlzLl9wbGF5ZXIubG9hZCh1cmwsIHByZWxvYWQsIGxvYWRlZENiKTtcbiAgICB0aGlzLl9hdWRpb0xldmVsID0gMTtcblxuICAgIC8vIElmIHByZWxvYWRpbmcgaXMgZGlzYWJsZWQsIHRoZSAnY2FucGxheScgZXZlbnQgd29uJ3QgYmUgdHJpZ2dlcmVkLlxuICAgIC8vIEluIHRoYXQgY2FzZSwgZmlyZSBpdCBtYW51YWxseS5cbiAgICBpZiAoIXByZWxvYWQpIHtcbiAgICAgIHRoaXMuX2VtaXR0ZXIuZW1pdCgnY2FucGxheScsIFtdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW5sb2FkIHByZXZpb3VzbHkgbG9hZGVkIGF1ZGlvLiBTdG9wcyB0aGUgcGxheWVyIGFuZCBhbnkgc3RvcHdhdGNoLlxuICAgKlxuICAgKiBAZW1pdHMge0V2ZW50fSAndW5sb2FkZWQnXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLnN0b3AoKTtcbiAgICB0aGlzLl9wbGF5ZXIucmVzZXQoKTtcbiAgICB0aGlzLl9lbWl0dGVyLmVtaXQoJ3VubG9hZGVkJywgW10pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9yIGNvbnRpbnVlIHBsYXliYWNrIG9mIGF1ZGlvLiBBbHNvIHN0YXJ0cyB0aGUgc3RvcHdhdGNoIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHs/bnVtYmVyfSBwb3NpdGlvbiAtIFdoZW4gcG9zaXRpb24gaXMgZ2l2ZW4sIHN0YXJ0IHBsYXlpbmcgZnJvbSB0aGlzIHBvc2l0aW9uIChzZWNvbmRzKS5cbiAgICovXG4gIHBsYXkocG9zaXRpb24pIHtcbiAgICBpZiAodGhpcy5fcGxheWVyLmlzUGxheWluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3BsYXllci5wbGF5KHBvc2l0aW9uKTtcbiAgICBpZiAodGhpcy5fc3RvcHdhdGNoKSB7XG4gICAgICBjb25zdCB0aW1lID0gTWF0aC5yb3VuZCh0aGlzLl9wbGF5ZXIuZ2V0Q3VycmVudFRpbWUoKSAqIDEwKTtcbiAgICAgIHRoaXMuX3N0b3B3YXRjaC5fdmFsdWUgPSB0aW1lO1xuICAgICAgdGhpcy5fc3RvcHdhdGNoLnN0YXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgcGxheWJhY2sgb2YgYXVkaW8uIFN0b3BzIGFuZCByZXNldHMgdGhlIHN0b3B3YXRjaC5cbiAgICovXG4gIHN0b3AoKSB7XG4gICAgaWYgKHRoaXMuX3N0b3B3YXRjaCkge1xuICAgICAgdGhpcy5fc3RvcHdhdGNoLnJlc2V0KCk7XG4gICAgICB0aGlzLl9zdG9wd2F0Y2guc3RvcCgpO1xuICAgIH1cbiAgICB0aGlzLl9wbGF5ZXIuc3RvcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdXNlIHBsYXliYWNrIG9mIGF1ZGlvLiBTdG9wcyB0aGUgc3RvcHdhdGNoLlxuICAgKi9cbiAgcGF1c2UoKSB7XG4gICAgaWYgKHRoaXMuX3N0b3B3YXRjaCkge1xuICAgICAgdGhpcy5fc3RvcHdhdGNoLnN0b3AoKTtcbiAgICB9XG4gICAgdGhpcy5fcGxheWVyLnBhdXNlKCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlIGF1ZGlvIHBsYXliYWNrLiBTd2l0Y2ggZnJvbSBwbGF5aW5nIHRvIHBhdXNlZCBzdGF0ZSBhbmQgYmFjay5cbiAgICovXG4gIHRvZ2dsZVBsYXliYWNrKCkge1xuICAgIGlmICh0aGlzLl9wbGF5ZXIuaXNQbGF5aW5nKCkpIHtcbiAgICAgIHRoaXMucGF1c2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wbGF5KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHByZWxvYWRpbmcgYXVkaW8uXG4gICAqL1xuICBwcmVsb2FkKCkge1xuICAgIHRoaXMuX3BsYXllci5wcmVsb2FkKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgcGxheWluZyBhdWRpbyBhdCB0aGUgZ2l2ZW4gb2Zmc2V0LiBDb3JyZWN0cyBhIHBlcmNlbnRhZ2UgdW5kZXIgMCBvciBhYm92ZSAxMDAgdG8gdGhlIHJlc3BlY3RpdmUgdmFsdWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcGVyY2VudGFnZSAtIFN0YXJ0IGF0IHRoaXMgcGVyY2VudGFnZSAoMC4uMTAwKSBvZiB0aGUgYXVkaW8gc3RyZWFtLlxuICAgKi9cbiAgc2NydWIocGVyY2VudGFnZSkge1xuICAgIGlmIChwZXJjZW50YWdlIDwgMCkge1xuICAgICAgdGhpcy5fcGxheWVyLnNjcnViKDApO1xuICAgIH0gZWxzZSBpZiAocGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgdGhpcy5fcGxheWVyLnNjcnViKDEwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3BsYXllci5zY3J1YihwZXJjZW50YWdlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3N0b3B3YXRjaCkge1xuICAgICAgdGhpcy5fc3RvcHdhdGNoLl92YWx1ZSA9IE1hdGgucm91bmQodGhpcy5fcGxheWVyLmdldEN1cnJlbnRUaW1lKCkgKiAxMCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBlcmNlbnRhZ2Ugb2Ygd2hpY2ggdGhlIGJ1ZmZlciBpcyBmaWxsZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFBlcmNlbnRhZ2Ugb2YgYnVmZmVyIGZpbGwuXG4gICAqL1xuICBnZXRCdWZmZXJGaWxsKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGF5ZXIuZ2V0QnVmZmVyRmlsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgcGxheWluZyB0aW1lIGFzIG9mZnNldCBpbiBzZWNvbmRzIGZyb20gdGhlIHN0YXJ0LlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaW1lIGluIHNlY29uZHMgYXMgb2Zmc2V0IGZyb20gdGhlIHN0YXJ0LlxuICAgKi9cbiAgZ2V0Q3VycmVudFRpbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYXllci5nZXRDdXJyZW50VGltZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRvdGFsIGR1cmF0aW9uIGluIHNlY29uZHMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRpbWUgaW4gc2Vjb25kcyBvZiBmcmFnbWVudCBkdXJhdGlvbi5cbiAgICovXG4gIGdldER1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGF5ZXIuZ2V0RHVyYXRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGVyZSBpcyBwbGF5YmFjayBpbiBwcm9ncmVzcy5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdXNlciBpcyBjdXJyZW50bHkgcGxheWluZyBhdWRpby4gRmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNQbGF5aW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGF5ZXIuaXNQbGF5aW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyByZWFkeSBzdGF0ZSBvZiB0aGUgcGxheWVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHBsYXllciBpcyByZWFkeSB0byBzdGFydCBsb2FkaW5nIGRhdGEgb3IgcGxheS4gRmFsc2Ugd2hlbiBubyBhdWRpbyBpcyBsb2FkZWRcbiAgICogb3IgdGhlIHBsYXllciBpcyBwcmVwYXJpbmcuXG4gICAqL1xuICBjYW5QbGF5KCkge1xuICAgIHJldHVybiB0aGlzLl9wbGF5ZXIuY2FuUGxheSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcGxheWJhY2sgcmF0ZSBvZiB0aGUgYXVkaW8uIFZhbHVlcyBhcmUgdXNlZCBhY2NvcmRpbmcgdG8gSFRNTDUgQXVkaW8uXG4gICAqIEV4YW1wbGUgdmFsdWVzOlxuICAgKiAqMS4wIGlzIG5vcm1hbCBzcGVlZC5cbiAgICogKjAuNSBpcyBoYWxmIHNwZWVkIChzbG93ZXIpLlxuICAgKiAqMi4wIGlzIGRvdWJsZSBzcGVlZCAoZmFzdGVyKS5cbiAgICogKi0xLjAgaXMgYmFja3dhcmRzLCBub3JtYWwgc3BlZWQuXG4gICAqICotMC41IGlzIGJhY2t3YXJkcywgaGFsZiBzcGVlZC5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGUgLSBSYXRlIGF0IHdoaWNoIHRvIGNoYW5nZSB0aGUgYXVkaW8gcGxheWJhY2suXG4gICAqL1xuICBzZXRQbGF5YmFja1JhdGUocmF0ZSkge1xuICAgIHRoaXMuX3BsYXllci5zZXRQbGF5YmFja1JhdGUocmF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBwbGF5YmFjayByYXRlIG9mIHRoZSBjdXJyZW50IGxvYWRlZCBhdWRpby5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gUGxheWJhY2sgcmF0ZSBvZiB0aGUgYXVkaW8uXG4gICAqL1xuICBnZXRQbGF5YmFja1JhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYXllci5nZXRQbGF5YmFja1JhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIGEgc3RvcHdhdGNoIHRvIHN5bmMgd2l0aCB0aGUgcGxheWluZyBhbmQgc3RvcHBpbmcgZnVuY3Rpb25hbGl0eSBvZiB0aGUgcGxheWVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0aWNrQ2IgLSBDYWxsYmFjayB0byBpbnZva2Ugb24gZXZlcnkgdGljay4gQSB0aWNrIG9jY3VycyBvbmNlIGV2ZXJ5IDEwMCBtcy5cbiAgICogQHRocm93cyB7RXJyb3J9IElmIF90aWNrQ2IgaXMgbnVsbC5cbiAgICogQHJldHVybnMge1N0b3B3YXRjaH0gTmV3IFN0b3B3YXRjaCBvYmplY3QuXG4gICAqL1xuICBiaW5kU3RvcHdhdGNoKHRpY2tDYikge1xuICAgIHRoaXMuX3N0b3B3YXRjaCA9IG5ldyBTdG9wd2F0Y2godGltZSA9PiB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMuZ2V0RHVyYXRpb24oKSAqIDEwIC8gdGhpcy5fcGxheWVyLnNvdW5kLnBsYXliYWNrUmF0ZTtcbiAgICAgIGlmICh0aW1lID4gZHVyYXRpb24pIHtcbiAgICAgICAgdGlja0NiKGR1cmF0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRpY2tDYih0aW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fc3RvcHdhdGNoO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGF1ZGlvIGxldmVsIG9mIHRoZSBjdXJyZW50IGxvYWRlZCBhdWRpby4gVmFsaWQgdmFsdWVzIGFyZSBmcm9tIDAgKDAlKSB0byAxICgxMDAlKS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZvbHVtZSAtIFZvbHVtZSB2YWx1ZSBmcm9tIDAgdG8gMS5cbiAgICovXG4gIHNldEF1ZGlvVm9sdW1lKHZvbHVtZSkge1xuICAgIGlmICh2b2x1bWUgIT09IDApIHtcbiAgICAgIHRoaXMuX2F1ZGlvTXV0ZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHZvbHVtZSA9PT0gMCkge1xuICAgICAgdGhpcy5fYXVkaW9NdXRlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuX3BsYXllci5zZXRBdWRpb1ZvbHVtZSh2b2x1bWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGF1ZGlvIGxldmVsIG9mIHRoZSBjdXJyZW50IGxvYWRlZCBhdWRpby4gVmFsaWQgdmFsdWVzIGFyZSBmcm9tIDAgKDAlKSB0byAxICgxMDAlKS5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVm9sdW1lIGxldmVsIG9mIHRoZSBjdXJyZW50IGxvYWRlZCBhdWRpby5cbiAgICovXG4gIGdldEF1ZGlvVm9sdW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGF5ZXIuZ2V0QXVkaW9Wb2x1bWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIGN1cnJlbnQgcGxheWluZyBhdWRpbyB0byBiZSBtdXRlZCBvciBub3QuIElmIHRoZSBhdWRpbyB3aWxsIGJlIG11dGVkLCB0aGUgY3VycmVudCBhdWRpbyBsZXZlbFxuICAgKiBpcyByZW1lbWJlcmVkIGFuZCBjYW4gYmUgdW5tdXRlZCB0byBjb250aW51ZSBhdCB0aGlzIHNhbWUgYXVkaW8gbGV2ZWwuXG4gICAqL1xuICB0b2dnbGVBdWRpb011dGUoKSB7XG4gICAgdGhpcy5zZXRBdWRpb011dGUoIXRoaXMuX2F1ZGlvTXV0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IHNldCB0aGUgbXV0ZWQgc3RhdGUgb2YgdGhlIGN1cnJlbnQgbG9hZGVkIGF1ZGlvLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZE11dGUgLSBXaGV0aGVyIHRoZSBhdWRpbyBzaG91bGQgYmUgbXV0ZWQgb3IgdW5tdXRlZC5cbiAgICovXG4gIHNldEF1ZGlvTXV0ZShzaG91bGRNdXRlKSB7XG4gICAgaWYgKHNob3VsZE11dGUpIHtcbiAgICAgIHRoaXMuX2F1ZGlvTGV2ZWwgPSB0aGlzLmdldEF1ZGlvVm9sdW1lKCk7XG4gICAgICB0aGlzLnNldEF1ZGlvVm9sdW1lKDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEF1ZGlvVm9sdW1lKHRoaXMuX2F1ZGlvTGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG11dGVkIHN0YXRlIG9mIHRoZSBjdXJyZW50IGxvYWRlZCBhdWRpby5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRoZSBtdXRlZCBzdGF0ZSBvZiB0aGUgY3VycmVudCBsb2FkZWQgYXVkaW8uXG4gICAqL1xuICBpc0F1ZGlvTXV0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvTXV0ZWQ7XG4gIH1cbn1cbiJdfQ== |
@@ -5,10 +5,2 @@ 'use strict'; | ||
var _cordovaMediaRecorder = require('./cordova-media-recorder'); | ||
var _cordovaMediaRecorder2 = _interopRequireDefault(_cordovaMediaRecorder); | ||
var _mediaRecorder = require('./media-recorder'); | ||
var _mediaRecorder2 = _interopRequireDefault(_mediaRecorder); | ||
var _tools = require('./tools'); | ||
@@ -40,4 +32,5 @@ | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // import MediaRecorder from './media-recorder'; | ||
/** | ||
@@ -65,3 +58,3 @@ * Audio recording component. | ||
* | ||
* @type {CordovaMediaRecorder|WebAudioRecorder|MediaRecorder} The specific recorder type. | ||
* @type {WebAudioRecorder|MediaRecorder} The specific recorder type. | ||
*/ | ||
@@ -72,8 +65,2 @@ this._recorder = null; | ||
if (this.canUseCordovaMedia) { | ||
// Through the App permissions, access to the microphone was | ||
// already granted. | ||
this.userMediaApproval = true; | ||
this._recorder = this._getBestRecorder(); | ||
} | ||
this._stopwatch = null; | ||
@@ -155,5 +142,8 @@ } | ||
// https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getUserMedia | ||
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; | ||
this.canGetUserMedia = Boolean(navigator.getUserMedia); | ||
console.log('Native deprecated navigator.getUserMedia API capability:', this.canGetUserMedia); | ||
// navigator.getUserMedia = navigator.getUserMedia || | ||
// navigator.webkitGetUserMedia || | ||
// navigator.mozGetUserMedia || | ||
// navigator.msGetUserMedia; | ||
// this.canGetUserMedia = Boolean(navigator.getUserMedia); | ||
// console.log('Native deprecated navigator.getUserMedia API capability:', this.canGetUserMedia); | ||
@@ -172,4 +162,4 @@ // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/mediaDevices.getUserMedia | ||
// http://www.w3.org/TR/mediastream-recording/ | ||
this.canUseMediaRecorder = Boolean(window.MediaRecorder); | ||
console.log('Native MediaRecorder recording capability:', this.canUseMediaRecorder); | ||
// this.canUseMediaRecorder = Boolean(window.MediaRecorder); | ||
// console.log('Native MediaRecorder recording capability:', this.canUseMediaRecorder); | ||
@@ -183,11 +173,3 @@ // Web Audio API | ||
// Detect Cordova Media Recording | ||
// It allows recording audio using the native bridge inside WebView Apps. | ||
// Note that it may also require native playback when codecs were used for | ||
// recording that are not yet supported in the WebView. | ||
// https://github.com/apache/cordova-plugin-media/blob/master/doc/index.md | ||
this.canUseCordovaMedia = Boolean(window.Media); | ||
console.log('Cordova Media recording capability:', this.canUseCordovaMedia); | ||
if (!(this.canGetUserMedia || this.canUseCordovaMedia)) { | ||
if (!this.canGetUserMedia && !this.canMediaDevicesGetUserMedia) { | ||
throw new Error('Some form of audio recording capability is required'); | ||
@@ -297,14 +279,8 @@ } | ||
var recorder = null; | ||
// Start by checking for a Cordova environment. | ||
// When running under a debugger like Ripple, both Cordova and WebAudio | ||
// environments get detected. While this is technically valid -Ripple is | ||
// running in Chrome, which supports WebAudio-, it's not a sandbox that | ||
// also disables functionality that would not be available on a device. | ||
if (this.canUseCordovaMedia && !this._settings.forceWave) { | ||
// Use Cordova audio encoding (used codec depends on the platform). | ||
recorder = new _cordovaMediaRecorder2.default(); | ||
} else if (this.canUserMediaRecorder && !this._settings.forceWave) { | ||
// Use the recorder with MediaRecorder implementation. | ||
recorder = new _mediaRecorder2.default(micInputGain); | ||
} else if (this.canGetUserMedia) { | ||
// Start by checking for a MediaRecorder. | ||
// if (this.canUserMediaRecorder && !this._settings.forceWave) { | ||
// // Use the recorder with MediaRecorder implementation. | ||
// recorder = new MediaRecorder(micInputGain); | ||
// } else if (this.canGetUserMedia) { | ||
if (this.canMediaDevicesGetUserMedia) { | ||
// Fall back to raw (WAVE) audio encoding. | ||
@@ -480,2 +456,2 @@ var self = this; | ||
exports.default = AudioRecorder; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby9hdWRpby1yZWNvcmRlci5qcyJdLCJuYW1lcyI6WyJBdWRpb1JlY29yZGVyIiwib3B0aW9ucyIsIl9zZXR0aW5ncyIsIk9iamVjdCIsImFzc2lnbiIsIl9yZWNvcmRpbmdDb21wYXRpYmlsaXR5IiwidXNlck1lZGlhQXBwcm92YWwiLCJfcmVjb3JkZXIiLCJfZW1pdHRlciIsImNhblVzZUNvcmRvdmFNZWRpYSIsIl9nZXRCZXN0UmVjb3JkZXIiLCJfc3RvcHdhdGNoIiwicmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMiLCJhZGRFdmVudExpc3RlbmVyIiwibmFtZSIsImhhbmRsZXIiLCJvbiIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvZmYiLCJmaXJlRXZlbnQiLCJhcmdzIiwiZW1pdCIsImhhc1VzZXJNZWRpYUFwcHJvdmFsIiwibmF2aWdhdG9yIiwiZ2V0VXNlck1lZGlhIiwid2Via2l0R2V0VXNlck1lZGlhIiwibW96R2V0VXNlck1lZGlhIiwibXNHZXRVc2VyTWVkaWEiLCJjYW5HZXRVc2VyTWVkaWEiLCJCb29sZWFuIiwiY29uc29sZSIsImxvZyIsImNhbk1lZGlhRGV2aWNlc0dldFVzZXJNZWRpYSIsIm1lZGlhRGV2aWNlcyIsImNhblVzZU1lZGlhUmVjb3JkZXIiLCJ3aW5kb3ciLCJNZWRpYVJlY29yZGVyIiwiQXVkaW9Db250ZXh0Iiwid2Via2l0QXVkaW9Db250ZXh0IiwibW96QXVkaW9Db250ZXh0IiwiY2FuQ3JlYXRlQXVkaW9Db250ZXh0IiwiTWVkaWEiLCJFcnJvciIsIlVSTCIsIndlYmtpdFVSTCIsImhhc1dpbmRvd1VSTCIsInJlcXVlc3RVc2VyTWVkaWEiLCJzZWxmIiwic3VjY2VzcyIsInN0cmVhbSIsImdldEF1ZGlvVHJhY2tzIiwibGVuZ3RoIiwibWljSW5wdXRHYWluIiwiX3N0YXJ0VXNlck1lZGlhIiwiYXVkaW9Db250ZXh0IiwiZmFpbHVyZSIsImUiLCJhdWRpbyIsInRoZW4iLCJjYXRjaCIsImNyZWF0ZU1lZGlhU3RyZWFtU291cmNlIiwibWljSW5wdXQiLCJjcmVhdGVHYWluIiwiY29ubmVjdCIsInJlY29yZGVyIiwiZm9yY2VXYXZlIiwiY2FuVXNlck1lZGlhUmVjb3JkZXIiLCJzdHJlYW1DYWxsYmFjayIsImRhdGEiLCJjaHVuayIsIl9yZXF1aXJlR2V0VXNlck1lZGlhIiwic3RhcnRSZWNvcmRpbmdTZXNzaW9uIiwiaWQiLCJ1dWlkXyIsInVuZGVmaW5lZCIsInY0IiwiYWN0aXZlUmVjb3JkaW5nSWQiLCJyZWNvcmQiLCJjYiIsImlzUmVjb3JkaW5nIiwiX3ZhbHVlIiwic3RhcnQiLCJzdG9wIiwiZm9yY2VkIiwiZ2V0RW5jb2RlZEF1ZGlvIiwiYmxvYiIsInR5cGUiLCJ0b2dnbGVSZWNvcmRpbmciLCJnZXRBdWRpb1NwZWNzIiwiYmluZFN0b3B3YXRjaCIsInRpY2tDYiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7O0FBRUE7Ozs7SUFJcUJBLGE7QUFDbkI7Ozs7OztBQU1BLHlCQUFZQyxPQUFaLEVBQXFCO0FBQUE7O0FBQ25CLFNBQUtDLFNBQUwsR0FBaUJDLE9BQU9DLE1BQVAsQ0FBYyxFQUFkLEVBQWtCSCxPQUFsQixDQUFqQjs7QUFFQSxTQUFLSSx1QkFBTDs7QUFFQSxTQUFLQyxpQkFBTCxHQUF5QixLQUF6Qjs7QUFFQTs7OztBQUlBLFNBQUtDLFNBQUwsR0FBaUIsSUFBakI7O0FBRUEsU0FBS0MsUUFBTCxHQUFnQiw0QkFBRyxFQUFILENBQWhCOztBQUdBLFFBQUksS0FBS0Msa0JBQVQsRUFBNkI7QUFDM0I7QUFDQTtBQUNBLFdBQUtILGlCQUFMLEdBQXlCLElBQXpCO0FBQ0EsV0FBS0MsU0FBTCxHQUFpQixLQUFLRyxnQkFBTCxFQUFqQjtBQUNEO0FBQ0QsU0FBS0MsVUFBTCxHQUFrQixJQUFsQjtBQUNEOztBQUVEOzs7OzswQkFHQUMsdUIsc0NBQTBCO0FBQ3hCLDBCQUFPLEtB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ci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb3Jkb3ZhTWVkaWFSZWNvcmRlciBmcm9tICcuL2NvcmRvdmEtbWVkaWEtcmVjb3JkZXInO1xuaW1wb3J0IE1lZGlhUmVjb3JkZXIgZnJvbSAnLi9tZWRpYS1yZWNvcmRlcic7XG5pbXBvcnQgU3RvcHdhdGNoIGZyb20gJy4vdG9vbHMnO1xuaW1wb3J0IFdhdmVQYWNrZXIgZnJvbSAnLi93YXZlLXBhY2tlcic7XG5pbXBvcnQgV2ViQXVkaW9SZWNvcmRlciBmcm9tICcuL3dlYi1hdWRpby1yZWNvcmRlcic7XG5pbXBvcnQgYWxsT2ZmIGZyb20gJ2V2ZW50LWVtaXR0ZXIvYWxsLW9mZic7XG5pbXBvcnQgZWUgZnJvbSAnZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgdXVpZCBmcm9tICd1dWlkJztcblxuLyoqXG4gKiBBdWRpbyByZWNvcmRpbmcgY29tcG9uZW50LlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXVkaW9SZWNvcmRlciB7XG4gIC8qKlxuICAgKiBJVFNMYW5ndWFnZSBBdWRpb1JlY29yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gez9PYmplY3R9IG9wdGlvbnMgLSBPdmVycmlkZSBhbnkgb2YgdGhlIGRlZmF1bHQgc2V0dGluZ3MuXG4gICAqXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgdGhpcy5fc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKTtcblxuICAgIHRoaXMuX3JlY29yZGluZ0NvbXBhdGliaWxpdHkoKTtcblxuICAgIHRoaXMudXNlck1lZGlhQXBwcm92YWwgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHR5cGUge0NvcmRvdmFNZWRpYVJlY29yZGVyfFdlYkF1ZGlvUmVjb3JkZXJ8TWVkaWFSZWNvcmRlcn0gVGhlIHNwZWNpZmljIHJlY29yZGVyIHR5cGUuXG4gICAgICovXG4gICAgdGhpcy5fcmVjb3JkZXIgPSBudWxsO1xuXG4gICAgdGhpcy5fZW1pdHRlciA9IGVlKHt9KTtcblxuXG4gICAgaWYgKHRoaXMuY2FuVXNlQ29yZG92YU1lZGlhKSB7XG4gICAgICAvLyBUaHJvdWdoIHRoZSBBcHAgcGVybWlzc2lvbnMsIGFjY2VzcyB0byB0aGUgbWljcm9waG9uZSB3YXNcbiAgICAgIC8vIGFscmVhZHkgZ3JhbnRlZC5cbiAgICAgIHRoaXMudXNlck1lZGlhQXBwcm92YWwgPSB0cnVlO1xuICAgICAgdGhpcy5fcmVjb3JkZXIgPSB0aGlzLl9nZXRCZXN0UmVjb3JkZXIoKTtcbiAgICB9XG4gICAgdGhpcy5fc3RvcHdhdGNoID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUdXJuIG9mZiBhbGwgZXZlbnQgbGlzdGVuZXJzIGZvciB0aGlzIHJlY29yZGVyLlxuICAgKi9cbiAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgYWxsT2ZmKHRoaXMuX2VtaXR0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBldmVudCBsaXN0ZW5lci4gTGlzdGVucyB0byBldmVudHMgZW1pdHRlZCBmcm9tIHRoZSByZWNvcmRlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEhhbmRsZXIgZnVuY3Rpb24gdG8gYWRkLlxuICAgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKSB7XG4gICAgdGhpcy5fZW1pdHRlci5vbihuYW1lLCBoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZXZlbnQgbGlzdGVuZXIgb2YgdGhlIHJlY29yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gSGFuZGxlciBmdW5jdGlvbiB0byByZW1vdmUuXG4gICAqL1xuICByZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGhhbmRsZXIpIHtcbiAgICB0aGlzLl9lbWl0dGVyLm9mZihuYW1lLCBoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlIGFuIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0ge09iamVjdFtdfSBhcmdzIC0gQXJndW1lbnRzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZmlyZUV2ZW50KG5hbWUsIGFyZ3MgPSBbXSkge1xuICAgIHRoaXMuX2VtaXR0ZXIuZW1pdChuYW1lLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgdXNlciBoYXMgYWxyZWFkeSBnaXZlbiBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgbWljcm9waG9uZS5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdXNlciBoYXMgZ3JhbnRlZCBhY2Nlc3MgdG8gdGhlIG1pY3JvcGhvbmUuIEZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGhhc1VzZXJNZWRpYUFwcHJvdmFsKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJNZWRpYUFwcHJvdmFsIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYnJvd3NlciBjb21wYXRpYmlsaXR5IGZvciBhdWRpbyByZWNvcmRpbmcuXG4gICAqIEluIGNhc2Ugb2YgY29tcGF0aWJpbGl0eSBpc3N1ZXMsIGFuIGVycm9yIGlzIHRocm93bi5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZWNvcmRpbmdDb21wYXRpYmlsaXR5LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8oKSB7XG4gICAgLy8gRGV0ZWN0IGF1ZGlvIHJlY29yZGluZyBjYXBhYmlsaXRpZXMuXG4gICAgLy8gaHR0cDovL2Nhbml1c2UuY29tLyNmZWF0PXN0cmVhbVxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9OYXZpZ2F0b3IuZ2V0VXNlck1lZGlhXG4gICAgbmF2aWdhdG9yLmdldFVzZXJNZWRpYSA9IG5hdmlnYXRvci5nZXRVc2VyTWVkaWEgfHxcbiAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgfHxcbiAgICAgIG5hdmlnYXRvci5tb3pHZXRVc2VyTWVkaWEgfHxcbiAgICAgIG5hdmlnYXRvci5tc0dldFVzZXJNZWRpYTtcbiAgICB0aGlzLmNhbkdldFVzZXJNZWRpYSA9IEJvb2xlYW4obmF2aWdhdG9yLmdldFVzZXJNZWRpYSk7XG4gICAgY29uc29sZS5sb2coJ05hdGl2ZSBkZXByZWNhdGVkIG5hdmlnYXRvci5nZXRVc2VyTWVkaWEgQVBJIGNhcGFiaWxpdHk6JywgdGhpcy5jYW5HZXRVc2VyTWVkaWEpO1xuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL01lZGlhRGV2aWNlcy9tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhXG4gICAgdGhpcy5jYW5NZWRpYURldmljZXNHZXRVc2VyTWVkaWEgPSBmYWxzZTtcbiAgICBpZiAobmF2aWdhdG9yLm1lZGlhRGV2aWNlcykge1xuICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEgPSBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSB8fFxuICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLndlYmtpdEdldFVzZXJNZWRpYSB8fFxuICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm1vekdldFVzZXJNZWRpYTtcbiAgICAgIHRoaXMuY2FuTWVkaWFEZXZpY2VzR2V0VXNlck1lZGlhID0gQm9vbGVhbihuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdOYXRpdmUgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEgQVBJIGNhcGFiaWxpdHk6JywgdGhpcy5jYW5NZWRpYURldmljZXNHZXRVc2VyTWVkaWEpO1xuXG4gICAgLy8gRGV0ZWN0IE1lZGlhU3RyZWFtIFJlY29yZGluZ1xuICAgIC8vIEl0IGFsbG93cyByZWNvcmRpbmcgYXVkaW8gdXNpbmcgdGhlIE1lZGlhU3RyZWFtIGZyb20gdGhlIGFib3ZlXG4gICAgLy8gZ2V0VXNlck1lZGlhIGRpcmVjdGx5IHdpdGggYSBuYXRpdmUgY29kZWMgYmV0dGVyIHRoYW4gV2F2ZS5cbiAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9tZWRpYXN0cmVhbS1yZWNvcmRpbmcvXG4gICAgdGhpcy5jYW5Vc2VNZWRpYVJlY29yZGVyID0gQm9vbGVhbih3aW5kb3cuTWVkaWFSZWNvcmRlcik7XG4gICAgY29uc29sZS5sb2coJ05hdGl2ZSBNZWRpYVJlY29yZGVyIHJlY29yZGluZyBjYXBhYmlsaXR5OicsIHRoaXMuY2FuVXNlTWVkaWFSZWNvcmRlcik7XG5cbiAgICAvLyBXZWIgQXVkaW8gQVBJXG4gICAgLy8gSGlnaC1sZXZlbCBKYXZhU2NyaXB0IEFQSSBmb3IgcHJvY2Vzc2luZyBhbmQgc3ludGhlc2l6aW5nIGF1ZGlvXG4gICAgLy8gaHR0cDovL2Nhbml1c2UuY29tLyNmZWF0PWF1ZGlvLWFwaVxuICAgIHdpbmRvdy5BdWRpb0NvbnRleHQgPSB3aW5kb3cuQXVkaW9Db250ZXh0IHx8XG4gICAgICB3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0IHx8IHdpbmRvdy5tb3pBdWRpb0NvbnRleHQ7XG4gICAgY29uc3QgY2FuQ3JlYXRlQXVkaW9Db250ZXh0ID0gQm9vbGVhbih3aW5kb3cuQXVkaW9Db250ZXh0KTtcbiAgICBjb25zb2xlLmxvZygnTmF0aXZlIFdlYiBBdWRpbyBBUEkgKEF1ZGlvQ29udGV4dCkgcHJvY2Vzc2luZyBjYXBhYmlsaXR5OicsIGNhbkNyZWF0ZUF1ZGlvQ29udGV4dCk7XG5cbiAgICAvLyBEZXRlY3QgQ29yZG92YSBNZWRpYSBSZWNvcmRpbmdcbiAgICAvLyBJdCBhbGxvd3MgcmVjb3JkaW5nIGF1ZGlvIHVzaW5nIHRoZSBuYXRpdmUgYnJpZGdlIGluc2lkZSBXZWJWaWV3IEFwcHMuXG4gICAgLy8gTm90ZSB0aGF0IGl0IG1heSBhbHNvIHJlcXVpcmUgbmF0aXZlIHBsYXliYWNrIHdoZW4gY29kZWNzIHdlcmUgdXNlZCBmb3JcbiAgICAvLyByZWNvcmRpbmcgdGhhdCBhcmUgbm90IHlldCBzdXBwb3J0ZWQgaW4gdGhlIFdlYlZpZXcuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS9jb3Jkb3ZhLXBsdWdpbi1tZWRpYS9ibG9iL21hc3Rlci9kb2MvaW5kZXgubWRcbiAgICB0aGlzLmNhblVzZUNvcmRvdmFNZWRpYSA9IEJvb2xlYW4od2luZG93Lk1lZGlhKTtcbiAgICBjb25zb2xlLmxvZygnQ29yZG92YSBNZWRpYSByZWNvcmRpbmcgY2FwYWJpbGl0eTonLCB0aGlzLmNhblVzZUNvcmRvdmFNZWRpYSk7XG5cbiAgICBpZiAoISh0aGlzLmNhbkdldFVzZXJNZWRpYSB8fCB0aGlzLmNhblVzZUNvcmRvdmFNZWRpYSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1NvbWUgZm9ybSBvZiBhdWRpbyByZWNvcmRpbmcgY2FwYWJpbGl0eSBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIHdpbmRvdy5VUkwgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7XG4gICAgY29uc3QgaGFzV2luZG93VVJMID0gQm9vbGVhbih3aW5kb3cuVVJMKTtcbiAgICBjb25zb2xlLmxvZygnTmF0aXZlIHdpbmRvdy5VUkwgY2FwYWJpbGl0eTonLCBoYXNXaW5kb3dVUkwpO1xuICAgIGlmICghaGFzV2luZG93VVJMKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdObyB3aW5kb3cuVVJMIGJsb2IgY29udmVyc2lvbiBjYXBhYmlsaXRpZXMnKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IG1pY3JvcGhvbmUgYWNjZXNzLlxuICAgKlxuICAgKiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gbWF5IHJlc3VsdCBpbiB0aHJvd24gZXhjZXB0aW9ucyB3aGVuIGJyb3dzZXJcbiAgICogZG9lc24ndCBzdXBwb3J0IHByb3ZpZGUgbGl2ZSBhdWRpbyBpbnB1dC5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIG5vIGxpdmUgYXVkaW8gaW5wdXQgaXMgYXZhaWxhYmxlIG9yIHBlcm1pdHRlZC5cbiAgICovXG4gIHJlcXVlc3RVc2VyTWVkaWEoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgZnVuY3Rpb24gc3VjY2VzcyhzdHJlYW0pIHtcbiAgICAgIGNvbnNvbGUubG9nKCdHb3QgZ2V0VXNlck1lZGlhIHN0cmVhbScpO1xuXG4gICAgICAvLyBjaGVja2luZyBhdWRpbyBwcmVzZW5jZVxuICAgICAgaWYgKHNlbGYuY2FuTWVkaWFEZXZpY2VzR2V0VXNlck1lZGlhKSB7XG4gICAgICAgIGlmIChzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnR290IGF1ZGlvIHRyYWNrczonLCBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE1vZGlmeSBzdGF0ZSBvZiB1c2VyTWVkaWFBcHByb3ZhbCBub3cgYWNjZXNzIGlzIGdyYW50ZWQuXG4gICAgICBzZWxmLnVzZXJNZWRpYUFwcHJvdmFsID0gdHJ1ZTtcblxuICAgICAgY29uc3QgbWljSW5wdXRHYWluID0gc2VsZi5fc3RhcnRVc2VyTWVkaWEoc3RyZWFtKTtcbiAgICAgIHNlbGYuZmlyZUV2ZW50KCdyZWFkeScsIFtzZWxmLmF1ZGlvQ29udGV4dCwgbWljSW5wdXRHYWluXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZhaWx1cmUoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGxpdmUgYXVkaW8gaW5wdXQgYXZhaWxhYmxlIG9yIHBlcm1pdHRlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNhbk1lZGlhRGV2aWNlc0dldFVzZXJNZWRpYSkge1xuICAgICAgLy8gVXNlIG9mIHByb21pc2VzIGlzIHJlcXVpcmVkLlxuICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSkudGhlbihzdWNjZXNzKS5jYXRjaChmYWlsdXJlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2FuR2V0VXNlck1lZGlhKSB7XG4gICAgICBuYXZpZ2F0b3IuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0sIHN1Y2Nlc3MsIGZhaWx1cmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdWRpbyBhY2Nlc3Mgd2FzIGdyYW50ZWQsIHN0YXJ0IGFuYWx5c2luZy5cbiAgICpcbiAgICogQHBhcmFtIHtNZWRpYVN0cmVhbX0gc3RyZWFtIC0gTWVkaWEgU3RyZWFtLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3N0YXJ0VXNlck1lZGlhKHN0cmVhbSkge1xuICAgIGlmICghdGhpcy5hdWRpb0NvbnRleHQpIHtcbiAgICAgIC8vIEluaXRpYWxpemUgdGhlIGNvbnRleHQgb25jZSwgYW5kIG9ubHkgd2hlbiBnZXRVc2VyTWVkaWEgd2FzXG4gICAgICAvLyBzdWNjZXNzZnVsLlxuICAgICAgdGhpcy5hdWRpb0NvbnRleHQgPSBuZXcgd2luZG93LkF1ZGlvQ29udGV4dCgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hdWRpb0NvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXVkaW9Db250ZXh0IGhhcyBubyBwcm9wZXJ0eSBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZScpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZXMgYW4gYXVkaW8gbm9kZSBmcm9tIHRoZSBtaWNyb3Bob25lIGluY29taW5nIHN0cmVhbS5cbiAgICBjb25zdCBtaWNJbnB1dCA9IHRoaXMuYXVkaW9Db250ZXh0LmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKHN0cmVhbSk7XG5cbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gRmlyZWZveCB0aGF0IHdvdWxkIG90aGVyd2lzZSBsZWFkIHRvXG4gICAgLy8gdGhlIHNvdW5kIGlucHV0IHN0b3BwaW5nIGFmdGVyIH41IHNlY29uZHMuXG4gICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0NTEyXG4gICAgLy8gdGhlIGltcG9ydGFudCB0aGluZyBpcyB0byBzYXZlIGEgcmVmZXJlbmNlIHRvIHRoZSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZVxuICAgIHRoaXMubWljSW5wdXQgPSBtaWNJbnB1dDtcblxuICAgIC8vIENyZWF0ZSBhIGdhaW4gbm9kZVxuICAgIGNvbnN0IG1pY0lucHV0R2FpbiA9IHRoaXMuYXVkaW9Db250ZXh0LmNyZWF0ZUdhaW4oKTtcbiAgICAvLyBDb25uZWN0IHRoZSBtaWNyb3Bob25lIHNvdXJjZSB0byBhIGdhaW4gbm9kZS5cbiAgICBtaWNJbnB1dC5jb25uZWN0KG1pY0lucHV0R2Fpbik7XG5cbiAgICB0aGlzLl9yZWNvcmRlciA9IHRoaXMuX2dldEJlc3RSZWNvcmRlcihtaWNJbnB1dEdhaW4pO1xuXG4gICAgcmV0dXJuIG1pY0lucHV0R2FpbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSByZWNvcmRlciBvYmplY3QgdGhhdCBwZXJmb3JtcyBhdWRpbyBjb21wcmVzc2lvbiwgd2hlbiBhdmFpbGFibGUuXG4gICAqXG4gICAqIFVzaW5nIHRoZSBNZWRpYSBTdHJlYW0gUmVjb3JkaW5nIEFQSSBmb3IgcmVjb3JkaW5nIGlzIHRoZSBwcmVmZXJlZFxuICAgKiBzb2x1dGlvbi4gSXQgYWxsb3dzIHJlY29yZGluZyBjb21wcmVzc2VkIGF1ZGlvIHdoaWNoIG1ha2VzIGl0IHF1aWNrZXIgdG9cbiAgICogc3VibWl0LiBJZiBub3QgYXZhaWxhYmxlLCB1c2UgYSBkZWZhdWx0IGNyZWF0ZVNjcmlwdFByb2Nlc3NvciBpcyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge0dhaW5Ob2RlfSBtaWNJbnB1dEdhaW4gLSBUaGUgR2Fpbk5vZGUgdG8gYW5hbHl6ZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9nZXRCZXN0UmVjb3JkZXIobWljSW5wdXRHYWluKSB7XG4gICAgbGV0IHJlY29yZGVyID0gbnVsbDtcbiAgICAvLyBTdGFydCBieSBjaGVja2luZyBmb3IgYSBDb3Jkb3ZhIGVudmlyb25tZW50LlxuICAgIC8vIFdoZW4gcnVubmluZyB1bmRlciBhIGRlYnVnZ2VyIGxpa2UgUmlwcGxlLCBib3RoIENvcmRvdmEgYW5kIFdlYkF1ZGlvXG4gICAgLy8gZW52aXJvbm1lbnRzIGdldCBkZXRlY3RlZC4gV2hpbGUgdGhpcyBpcyB0ZWNobmljYWxseSB2YWxpZCAtUmlwcGxlIGlzXG4gICAgLy8gcnVubmluZyBpbiBDaHJvbWUsIHdoaWNoIHN1cHBvcnRzIFdlYkF1ZGlvLSwgaXQncyBub3QgYSBzYW5kYm94IHRoYXRcbiAgICAvLyBhbHNvIGRpc2FibGVzIGZ1bmN0aW9uYWxpdHkgdGhhdCB3b3VsZCBub3QgYmUgYXZhaWxhYmxlIG9uIGEgZGV2aWNlLlxuICAgIGlmICh0aGlzLmNhblVzZUNvcmRvdmFNZWRpYSAmJiAhdGhpcy5fc2V0dGluZ3MuZm9yY2VXYXZlKSB7XG4gICAgICAvLyBVc2UgQ29yZG92YSBhdWRpbyBlbmNvZGluZyAodXNlZCBjb2RlYyBkZXBlbmRzIG9uIHRoZSBwbGF0Zm9ybSkuXG4gICAgICByZWNvcmRlciA9IG5ldyBDb3Jkb3ZhTWVkaWFSZWNvcmRlcigpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jYW5Vc2VyTWVkaWFSZWNvcmRlciAmJiAhdGhpcy5fc2V0dGluZ3MuZm9yY2VXYXZlKSB7XG4gICAgICAvLyBVc2UgdGhlIHJlY29yZGVyIHdpdGggTWVkaWFSZWNvcmRlciBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIobWljSW5wdXRHYWluKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2FuR2V0VXNlck1lZGlhKSB7XG4gICAgICAvLyBGYWxsIGJhY2sgdG8gcmF3IChXQVZFKSBhdWRpbyBlbmNvZGluZy5cbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgcmVjb3JkZXIgPSBuZXcgV2ViQXVkaW9SZWNvcmRlcihtaWNJbnB1dEdhaW4sIGRhdGEgPT4ge1xuICAgICAgICBzZWxmLnN0cmVhbUNhbGxiYWNrKGRhdGEpO1xuICAgICAgfSwgbmV3IFdhdmVQYWNrZXIoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgYSBwcm9wZXIgcmVjb3JkZXIuJyk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdSZWNvcmRlciBpbml0aWFsaXNlZC4nKTtcbiAgICByZXR1cm4gcmVjb3JkZXI7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBjaHVuayBvZiBhdWRpbyBiZWNvbWVzIGF2YWlsYWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gY2h1bmsgLSBBIGNodW5rIG9mIGF1ZGlvIChJbnQxNiBmb3JtYXR0ZWQpLlxuICAgKi9cbiAgc3RyZWFtQ2FsbGJhY2soY2h1bmspIHtcbiAgICB0aGlzLmZpcmVFdmVudCgnZGF0YWF2YWlsYWJsZScsIFtjaHVua10pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93IGFuIGVycm9yIGlmIHRoZSB1c2VyIGlzIG5vdCB5ZXQgbG9nZ2VkIGluLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHBlcm1pc3Npb24gd2FzIGFscmVhZHkgZ3JhbnRlZC4gRmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgX3JlcXVpcmVHZXRVc2VyTWVkaWEoKSB7XG4gICAgaWYgKHRoaXMuX3JlY29yZGVyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ1JlcXVlc3RpbmcgZ2V0VXNlck1lZGlhIHBlcm1pc3Npb24gZmlyc3QuJyk7XG4gICAgdGhpcy5yZXF1ZXN0VXNlck1lZGlhKCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIG5ldyByZWNvcmRpbmcgc2Vzc2lvbiBpZC5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gV2hlbiBkZWZpbmVkLCBzdGljayB0aGlzIGlkIHRvIHRoZSByZWNvcmRlZCBibG9iLlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgaWQgdGhhdCB3YXMgZ2l2ZW4gb3IgYSB1bmlxdWUgZ2VuZXJhdGVkIG9uZS5cbiAgICovXG4gIHN0YXJ0UmVjb3JkaW5nU2Vzc2lvbihpZCkge1xuICAgIC8vIEdlbmVyYXRlIGEgdXVpZCB0byByZW1lbWJlciB0aGlzIHJlY29yZGluZyBieSAobG9jYWxseSkuXG4gICAgY29uc3QgdXVpZF8gPSBpZCA9PT0gdW5kZWZpbmVkID8gdXVpZC52NCgpIDogaWQ7XG4gICAgdGhpcy5hY3RpdmVSZWNvcmRpbmdJZCA9IHV1aWRfO1xuICAgIHJldHVybiB1dWlkXztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCByZWNvcmRpbmcgbWljcm9waG9uZSBpbnB1dCB1bnRpbCBzdG9wcGVkLlxuICAgKlxuICAgKiBAcGFyYW0gez9GdW5jdGlvbn0gY2IgLSBUaGUgY2FsbGJhY2sgdGhhdCBwcm92aWRlcyBhIHBpZWNlIG9mIHJhdyBhdWRpbyB3aGVuXG4gICAqIGl0IGJlY29tZXMgYXZhaWxhYmxlLiBJdCBtYXkgYmUgdXNlZCBmb3Igc3RyZWFtaW5nLlxuICAgKiBAZW1pdHMge0V2ZW50fSAncmVjb3JkaW5nJyBXaXRoIGFyZ3VtZW50czogW3JlY29yZGluZyBJRF0uXG4gICAqL1xuICByZWNvcmQoY2IpIHtcbiAgICBpZiAoIXRoaXMuX3JlcXVpcmVHZXRVc2VyTWVkaWEoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzUmVjb3JkaW5nKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQWxyZWFkeSByZWNvcmRpbmcsIHN0b3AgcmVjb3JkaW5nIGZpcnN0LicpO1xuICAgIH1cblxuICAgIHRoaXMuX3JlY29yZGVyLnJlY29yZCgpO1xuICAgIGlmICh0aGlzLl9zdG9wd2F0Y2gpIHtcbiAgICAgIHRoaXMuX3N0b3B3YXRjaC5fdmFsdWUgPSAwO1xuICAgICAgdGhpcy5fc3RvcHdhdGNoLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFjdGl2ZVJlY29yZGluZ0lkKSB7XG4gICAgICB0aGlzLnN0YXJ0UmVjb3JkaW5nU2Vzc2lvbigpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnUmVjb3JkaW5nIGFzIGlkOiAnICsgdGhpcy5hY3RpdmVSZWNvcmRpbmdJZCk7XG5cbiAgICB0aGlzLmZpcmVFdmVudCgncmVjb3JkaW5nJywgW3RoaXMuYWN0aXZlUmVjb3JkaW5nSWRdKTtcbiAgICByZXR1cm4gY2I7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCByZWNvcmRpbmcgbWljcm9waG9uZSBpbnB1dC5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBbZm9yY2VkPWZhbHNlXSAtIFNldCB3aGV0aGVyIHRvIGZvcmNlIHRoZSBtaWNyb3Bob25lIHRvIHN0b3AgcmVjb3JkaW5nIG9yIGxldCBpdCBlbmQgbm9ybWFsbHkuXG4gICAqIEBlbWl0cyB7RXZlbnR9ICdyZWNvcmRlZCcgV2l0aCBhcmd1bWVudHM6IFtyZWNvcmRpbmcgSUQsIGF1ZGlvIEJsb2IsIGZvcmNlZF0uXG4gICAqL1xuICBzdG9wKGZvcmNlZCkge1xuICAgIGlmICghdGhpcy5fcmVjb3JkZXIuaXNSZWNvcmRpbmcoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9yZWNvcmRlci5zdG9wKCk7XG4gICAgaWYgKHRoaXMuX3N0b3B3YXRjaCkge1xuICAgICAgdGhpcy5fc3RvcHdhdGNoLnN0b3AoKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ1N0b3BwZWQgcmVjb3JkaW5nIGZvciBpZDogJyArIHRoaXMuYWN0aXZlUmVjb3JkaW5nSWQpO1xuXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5fcmVjb3JkZXIuZ2V0RW5jb2RlZEF1ZGlvKGJsb2IgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ1JlY2VpdmVkIGVuY29kZWQgYXVkaW8gb2YgdHlwZTogJyArIGJsb2IudHlwZSk7XG4gICAgICAvLyBBbGxvdyBkaXJlY3QgcGxheWJhY2sgZnJvbSBsb2NhbCBibG9iLlxuICAgICAgc2VsZi5maXJlRXZlbnQoJ3JlY29yZGVkJywgW3NlbGYuYWN0aXZlUmVjb3JkaW5nSWQsIGJsb2IsIEJvb2xlYW4oZm9yY2VkKV0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZXJlIGlzIGEgcmVjb3JkaW5nIGluIHByb2dyZXNzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB1c2VyIGlzIGN1cnJlbnRseSByZWNvcmRpbmcgYXVkaW8uIEZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBpc1JlY29yZGluZygpIHtcbiAgICBpZiAoIXRoaXMuX3JlY29yZGVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZWNvcmRlci5pc1JlY29yZGluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBhdWRpbyBwbGF5YmFjay4gU3dpdGNoIGZyb20gcGxheWluZyB0byBwYXVzZWQgc3RhdGUgYW5kIGJhY2suXG4gICAqL1xuICB0b2dnbGVSZWNvcmRpbmcoKSB7XG4gICAgaWYgKHRoaXMuaXNSZWNvcmRpbmcoKSkge1xuICAgICAgdGhpcy5zdG9wKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVjb3JkKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVjb3JkZWQgYXVkaW8gc3BlY2lmaWNhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IENvbnRhaW5pbmcgYXVkaW9Gb3JtYXQgYW5kIGF1ZGlvUGFyYW1ldGVycyBkZXNjcmliaW5nIHRoZSBmb3JtYXQuXG4gICAqL1xuICBnZXRBdWRpb1NwZWNzKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWNvcmRlci5nZXRBdWRpb1NwZWNzKCk7XG4gIH1cblxuICAvKipcbiAgICogQmluZCBhIHN0b3B3YXRjaCB0byBzeW5jIHdpdGggdGhlIHBsYXlpbmcgYW5kIHN0b3BwaW5nIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHJlY29yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0aWNrQ2IgLSBDYWxsYmFjayB0byBpbnZva2Ugb24gZXZlcnkgdGljay4gQSB0aWNrIG9jY3VycyBvbmNlIGV2ZXJ5IDEwMCBtcy5cbiAgICogQHRocm93cyB7RXJyb3J9IElmIF90aWNrQ2IgaXMgbnVsbC5cbiAgICogQHJldHVybnMge1N0b3B3YXRjaH0gTmV3IFN0b3B3YXRjaCBvYmplY3QuXG4gICAqL1xuICBiaW5kU3RvcHdhdGNoKHRpY2tDYikge1xuICAgIHRoaXMuX3N0b3B3YXRjaCA9IG5ldyBTdG9wd2F0Y2godGlja0NiKTtcbiAgICByZXR1cm4gdGhpcy5fc3RvcHdhdGNoO1xuICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby9hdWRpby1yZWNvcmRlci5qcyJdLCJuYW1lcyI6WyJBdWRpb1JlY29yZGVyIiwib3B0aW9ucyIsIl9zZXR0aW5ncyIsIk9iamVjdCIsImFzc2lnbiIsIl9yZWNvcmRpbmdDb21wYXRpYmlsaXR5IiwidXNlck1lZGlhQXBwcm92YWwiLCJfcmVjb3JkZXIiLCJfZW1pdHRlciIsIl9zdG9wd2F0Y2giLCJyZW1vdmVBbGxFdmVudExpc3RlbmVycyIsImFkZEV2ZW50TGlzdGVuZXIiLCJuYW1lIiwiaGFuZGxlciIsIm9uIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9mZiIsImZpcmVFdmVudCIsImFyZ3MiLCJlbWl0IiwiaGFzVXNlck1lZGlhQXBwcm92YWwiLCJjYW5NZWRpYURldmljZXNHZXRVc2VyTWVkaWEiLCJuYXZpZ2F0b3IiLCJtZWRpYURldmljZXMiLCJnZXRVc2VyTWVkaWEiLCJ3ZWJraXRHZXRVc2VyTWVkaWEiLCJtb3pHZXRVc2VyTWVkaWEiLCJCb29sZWFuIiwiY29uc29sZSIsImxvZyIsIndpbmRvdyIsIkF1ZGlvQ29udGV4dCIsIndlYmtpdEF1ZGlvQ29udGV4dCIsIm1vekF1ZGlvQ29udGV4dCIsImNhbkNyZWF0ZUF1ZGlvQ29udGV4dCIsImNhbkdldFVzZXJNZWRpYSIsIkVycm9yIiwiVVJMIiwid2Via2l0VVJMIiwiaGFzV2luZG93VVJMIiwicmVxdWVzdFVzZXJNZWRpYSIsInNlbGYiLCJzdWNjZXNzIiwic3RyZWFtIiwiZ2V0QXVkaW9UcmFja3MiLCJsZW5ndGgiLCJtaWNJbnB1dEdhaW4iLCJfc3RhcnRVc2VyTWVkaWEiLCJhdWRpb0NvbnRleHQiLCJmYWlsdXJlIiwiZSIsImF1ZGlvIiwidGhlbiIsImNhdGNoIiwiY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UiLCJtaWNJbnB1dCIsImNyZWF0ZUdhaW4iLCJjb25uZWN0IiwiX2dldEJlc3RSZWNvcmRlciIsInJlY29yZGVyIiwic3RyZWFtQ2FsbGJhY2siLCJkYXRhIiwiY2h1bmsiLCJfcmVxdWlyZUdldFVzZXJNZWRpYSIsInN0YXJ0UmVjb3JkaW5nU2Vzc2lvbiIsImlkIiwidXVpZF8iLCJ1bmRlZmluZWQiLCJ2NCIsImFjdGl2ZVJlY29yZGluZ0lkIiwicmVjb3JkIiwiY2IiLCJpc1JlY29yZGluZyIsIl92YWx1ZSIsInN0YXJ0Iiwic3RvcCIsImZvcmNlZCIsImdldEVuY29kZWRBdWRpbyIsImJsb2IiLCJ0eXBlIiwidG9nZ2xlUmVjb3JkaW5nIiwiZ2V0QXVkaW9TcGVjcyIsImJpbmRTdG9wd2F0Y2giLCJ0aWNrQ2IiXSwibWFwcGluZ3MiOiI7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OzswSkFOQTs7O0FBUUE7Ozs7SUFJcUJBLGE7QUFDbkI7Ozs7OztBQU1BLHlCQUFZQyxPQUFaLEVBQXFCO0FBQUE7O0FBQ25CLFNBQUtDLFNBQUwsR0FBaUJDLE9BQU9DLE1BQVAsQ0FBYyxFQUFkLEVBQWtCSCxPQUFsQixDQUFqQjs7QUFFQSxTQUFLSSx1QkFBTDs7QUFFQSxTQUFLQyxpQkFBTCxHQUF5QixLQUF6Qjs7QUFFQTs7OztBQUlBLFNBQUtDLFNBQUwsR0FBaUIsSUFBakI7O0FBRUEsU0FBS0MsUUFBTCxHQUFnQiw0QkFBRyxFQUFILENBQWhCOztBQUVBLFNBQUtDLFVBQUwsR0FBa0IsSUFBbEI7QUFDRDs7QUFFRDs7Ozs7MEJBR0FDLHVCLHNDQUEwQjtBQUN4QiwwQkFBTyxLQUFLRixRQUFaO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7MEJBTUFHLGdCLDZCQUFpQkMsSSxFQUFNQyxPLEVBQVM7QUFDOUIsU0FBS0wsUUFBTCxDQUFjTSxFQUFkLENBQWlCRixJQUFqQixFQUF1QkMsT0FBdkI7QUFDRCxHOztBQUVEOzs7Ozs7OzswQkFNQUUsbUIsZ0NBQW9CSCxJLEVBQU1DLE8sRUFBUztBQUNqQyxTQUFLTCxRQUFMLENBQWNRLEdBQWQsQ0FBa0JKLElBQWxCLEVBQXdCQyxPQUF4QjtBQUNELEc7O0FBRUQ7Ozs7Ozs7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MEUsTUFBZCxDQUFsQjtBQUNBLFdBQU8sS0FBSzFFLFVBQVo7QUFDRCxHOzs7OztrQkFoWGtCVCxhIiwiZmlsZSI6ImF1ZGlvLXJlY29yZGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IE1lZGlhUmVjb3JkZXIgZnJvbSAnLi9tZWRpYS1yZWNvcmRlcic7XG5pbXBvcnQgU3RvcHdhdGNoIGZyb20gJy4vdG9vbHMnO1xuaW1wb3J0IFdhdmVQYWNrZXIgZnJvbSAnLi93YXZlLXBhY2tlcic7XG5pbXBvcnQgV2ViQXVkaW9SZWNvcmRlciBmcm9tICcuL3dlYi1hdWRpby1yZWNvcmRlcic7XG5pbXBvcnQgYWxsT2ZmIGZyb20gJ2V2ZW50LWVtaXR0ZXIvYWxsLW9mZic7XG5pbXBvcnQgZWUgZnJvbSAnZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgdXVpZCBmcm9tICd1dWlkJztcblxuLyoqXG4gKiBBdWRpbyByZWNvcmRpbmcgY29tcG9uZW50LlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXVkaW9SZWNvcmRlciB7XG4gIC8qKlxuICAgKiBJVFNMYW5ndWFnZSBBdWRpb1JlY29yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gez9PYmplY3R9IG9wdGlvbnMgLSBPdmVycmlkZSBhbnkgb2YgdGhlIGRlZmF1bHQgc2V0dGluZ3MuXG4gICAqXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgdGhpcy5fc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKTtcblxuICAgIHRoaXMuX3JlY29yZGluZ0NvbXBhdGliaWxpdHkoKTtcblxuICAgIHRoaXMudXNlck1lZGlhQXBwcm92YWwgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHR5cGUge1dlYkF1ZGlvUmVjb3JkZXJ8TWVkaWFSZWNvcmRlcn0gVGhlIHNwZWNpZmljIHJlY29yZGVyIHR5cGUuXG4gICAgICovXG4gICAgdGhpcy5fcmVjb3JkZXIgPSBudWxsO1xuXG4gICAgdGhpcy5fZW1pdHRlciA9IGVlKHt9KTtcblxuICAgIHRoaXMuX3N0b3B3YXRjaCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVHVybiBvZmYgYWxsIGV2ZW50IGxpc3RlbmVycyBmb3IgdGhpcyByZWNvcmRlci5cbiAgICovXG4gIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIGFsbE9mZih0aGlzLl9lbWl0dGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIuIExpc3RlbnMgdG8gZXZlbnRzIGVtaXR0ZWQgZnJvbSB0aGUgcmVjb3JkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBIYW5kbGVyIGZ1bmN0aW9uIHRvIGFkZC5cbiAgICovXG4gIGFkZEV2ZW50TGlzdGVuZXIobmFtZSwgaGFuZGxlcikge1xuICAgIHRoaXMuX2VtaXR0ZXIub24obmFtZSwgaGFuZGxlcik7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFuIGV2ZW50IGxpc3RlbmVyIG9mIHRoZSByZWNvcmRlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEhhbmRsZXIgZnVuY3Rpb24gdG8gcmVtb3ZlLlxuICAgKi9cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKSB7XG4gICAgdGhpcy5fZW1pdHRlci5vZmYobmFtZSwgaGFuZGxlcik7XG4gIH1cblxuICAvKipcbiAgICogRmlyZSBhbiBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHtPYmplY3RbXX0gYXJncyAtIEFyZ3VtZW50cy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZpcmVFdmVudChuYW1lLCBhcmdzID0gW10pIHtcbiAgICB0aGlzLl9lbWl0dGVyLmVtaXQobmFtZSwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIHVzZXIgaGFzIGFscmVhZHkgZ2l2ZW4gcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIG1pY3JvcGhvbmUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHVzZXIgaGFzIGdyYW50ZWQgYWNjZXNzIHRvIHRoZSBtaWNyb3Bob25lLiBGYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBoYXNVc2VyTWVkaWFBcHByb3ZhbCgpIHtcbiAgICByZXR1cm4gdGhpcy51c2VyTWVkaWFBcHByb3ZhbCB8fCBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dzIGJyb3dzZXIgY29tcGF0aWJpbGl0eSBmb3IgYXVkaW8gcmVjb3JkaW5nLlxuICAgKiBJbiBjYXNlIG9mIGNvbXBhdGliaWxpdHkgaXNzdWVzLCBhbiBlcnJvciBpcyB0aHJvd24uXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcmVjb3JkaW5nQ29tcGF0aWJpbGl0eS8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovKCkge1xuICAgIC8vIERldGVjdCBhdWRpbyByZWNvcmRpbmcgY2FwYWJpbGl0aWVzLlxuICAgIC8vIGh0dHA6Ly9jYW5pdXNlLmNvbS8jZmVhdD1zdHJlYW1cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTmF2aWdhdG9yLmdldFVzZXJNZWRpYVxuICAgIC8vIG5hdmlnYXRvci5nZXRVc2VyTWVkaWEgPSBuYXZpZ2F0b3IuZ2V0VXNlck1lZGlhIHx8XG4gICAgLy8gICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIHx8XG4gICAgLy8gICBuYXZpZ2F0b3IubW96R2V0VXNlck1lZGlhIHx8XG4gICAgLy8gICBuYXZpZ2F0b3IubXNHZXRVc2VyTWVkaWE7XG4gICAgLy8gdGhpcy5jYW5HZXRVc2VyTWVkaWEgPSBCb29sZWFuKG5hdmlnYXRvci5nZXRVc2VyTWVkaWEpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdOYXRpdmUgZGVwcmVjYXRlZCBuYXZpZ2F0b3IuZ2V0VXNlck1lZGlhIEFQSSBjYXBhYmlsaXR5OicsIHRoaXMuY2FuR2V0VXNlck1lZGlhKTtcblxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9NZWRpYURldmljZXMvbWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYVxuICAgIHRoaXMuY2FuTWVkaWFEZXZpY2VzR2V0VXNlck1lZGlhID0gZmFsc2U7XG4gICAgaWYgKG5hdmlnYXRvci5tZWRpYURldmljZXMpIHtcbiAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhID0gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEgfHxcbiAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy53ZWJraXRHZXRVc2VyTWVkaWEgfHxcbiAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5tb3pHZXRVc2VyTWVkaWE7XG4gICAgICB0aGlzLmNhbk1lZGlhRGV2aWNlc0dldFVzZXJNZWRpYSA9IEJvb2xlYW4obmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnTmF0aXZlIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhIEFQSSBjYXBhYmlsaXR5OicsIHRoaXMuY2FuTWVkaWFEZXZpY2VzR2V0VXNlck1lZGlhKTtcblxuICAgIC8vIERldGVjdCBNZWRpYVN0cmVhbSBSZWNvcmRpbmdcbiAgICAvLyBJdCBhbGxvd3MgcmVjb3JkaW5nIGF1ZGlvIHVzaW5nIHRoZSBNZWRpYVN0cmVhbSBmcm9tIHRoZSBhYm92ZVxuICAgIC8vIGdldFVzZXJNZWRpYSBkaXJlY3RseSB3aXRoIGEgbmF0aXZlIGNvZGVjIGJldHRlciB0aGFuIFdhdmUuXG4gICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvbWVkaWFzdHJlYW0tcmVjb3JkaW5nL1xuICAgIC8vIHRoaXMuY2FuVXNlTWVkaWFSZWNvcmRlciA9IEJvb2xlYW4od2luZG93Lk1lZGlhUmVjb3JkZXIpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdOYXRpdmUgTWVkaWFSZWNvcmRlciByZWNvcmRpbmcgY2FwYWJpbGl0eTonLCB0aGlzLmNhblVzZU1lZGlhUmVjb3JkZXIpO1xuXG4gICAgLy8gV2ViIEF1ZGlvIEFQSVxuICAgIC8vIEhpZ2gtbGV2ZWwgSmF2YVNjcmlwdCBBUEkgZm9yIHByb2Nlc3NpbmcgYW5kIHN5bnRoZXNpemluZyBhdWRpb1xuICAgIC8vIGh0dHA6Ly9jYW5pdXNlLmNvbS8jZmVhdD1hdWRpby1hcGlcbiAgICB3aW5kb3cuQXVkaW9Db250ZXh0ID0gd2luZG93LkF1ZGlvQ29udGV4dCB8fFxuICAgICAgd2luZG93LndlYmtpdEF1ZGlvQ29udGV4dCB8fCB3aW5kb3cubW96QXVkaW9Db250ZXh0O1xuICAgIGNvbnN0IGNhbkNyZWF0ZUF1ZGlvQ29udGV4dCA9IEJvb2xlYW4od2luZG93LkF1ZGlvQ29udGV4dCk7XG4gICAgY29uc29sZS5sb2coJ05hdGl2ZSBXZWIgQXVkaW8gQVBJIChBdWRpb0NvbnRleHQpIHByb2Nlc3NpbmcgY2FwYWJpbGl0eTonLCBjYW5DcmVhdGVBdWRpb0NvbnRleHQpO1xuXG4gICAgaWYgKCF0aGlzLmNhbkdldFVzZXJNZWRpYSAmJiAhdGhpcy5jYW5NZWRpYURldmljZXNHZXRVc2VyTWVkaWEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1NvbWUgZm9ybSBvZiBhdWRpbyByZWNvcmRpbmcgY2FwYWJpbGl0eSBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIHdpbmRvdy5VUkwgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7XG4gICAgY29uc3QgaGFzV2luZG93VVJMID0gQm9vbGVhbih3aW5kb3cuVVJMKTtcbiAgICBjb25zb2xlLmxvZygnTmF0aXZlIHdpbmRvdy5VUkwgY2FwYWJpbGl0eTonLCBoYXNXaW5kb3dVUkwpO1xuICAgIGlmICghaGFzV2luZG93VVJMKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdObyB3aW5kb3cuVVJMIGJsb2IgY29udmVyc2lvbiBjYXBhYmlsaXRpZXMnKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IG1pY3JvcGhvbmUgYWNjZXNzLlxuICAgKlxuICAgKiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gbWF5IHJlc3VsdCBpbiB0aHJvd24gZXhjZXB0aW9ucyB3aGVuIGJyb3dzZXJcbiAgICogZG9lc24ndCBzdXBwb3J0IHByb3ZpZGUgbGl2ZSBhdWRpbyBpbnB1dC5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIG5vIGxpdmUgYXVkaW8gaW5wdXQgaXMgYXZhaWxhYmxlIG9yIHBlcm1pdHRlZC5cbiAgICovXG4gIHJlcXVlc3RVc2VyTWVkaWEoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgZnVuY3Rpb24gc3VjY2VzcyhzdHJlYW0pIHtcbiAgICAgIGNvbnNvbGUubG9nKCdHb3QgZ2V0VXNlck1lZGlhIHN0cmVhbScpO1xuXG4gICAgICAvLyBjaGVja2luZyBhdWRpbyBwcmVzZW5jZVxuICAgICAgaWYgKHNlbGYuY2FuTWVkaWFEZXZpY2VzR2V0VXNlck1lZGlhKSB7XG4gICAgICAgIGlmIChzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnR290IGF1ZGlvIHRyYWNrczonLCBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE1vZGlmeSBzdGF0ZSBvZiB1c2VyTWVkaWFBcHByb3ZhbCBub3cgYWNjZXNzIGlzIGdyYW50ZWQuXG4gICAgICBzZWxmLnVzZXJNZWRpYUFwcHJvdmFsID0gdHJ1ZTtcblxuICAgICAgY29uc3QgbWljSW5wdXRHYWluID0gc2VsZi5fc3RhcnRVc2VyTWVkaWEoc3RyZWFtKTtcbiAgICAgIHNlbGYuZmlyZUV2ZW50KCdyZWFkeScsIFtzZWxmLmF1ZGlvQ29udGV4dCwgbWljSW5wdXRHYWluXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZhaWx1cmUoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGxpdmUgYXVkaW8gaW5wdXQgYXZhaWxhYmxlIG9yIHBlcm1pdHRlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNhbk1lZGlhRGV2aWNlc0dldFVzZXJNZWRpYSkge1xuICAgICAgLy8gVXNlIG9mIHByb21pc2VzIGlzIHJlcXVpcmVkLlxuICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSkudGhlbihzdWNjZXNzKS5jYXRjaChmYWlsdXJlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2FuR2V0VXNlck1lZGlhKSB7XG4gICAgICBuYXZpZ2F0b3IuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0sIHN1Y2Nlc3MsIGZhaWx1cmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdWRpbyBhY2Nlc3Mgd2FzIGdyYW50ZWQsIHN0YXJ0IGFuYWx5c2luZy5cbiAgICpcbiAgICogQHBhcmFtIHtNZWRpYVN0cmVhbX0gc3RyZWFtIC0gTWVkaWEgU3RyZWFtLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3N0YXJ0VXNlck1lZGlhKHN0cmVhbSkge1xuICAgIGlmICghdGhpcy5hdWRpb0NvbnRleHQpIHtcbiAgICAgIC8vIEluaXRpYWxpemUgdGhlIGNvbnRleHQgb25jZSwgYW5kIG9ubHkgd2hlbiBnZXRVc2VyTWVkaWEgd2FzXG4gICAgICAvLyBzdWNjZXNzZnVsLlxuICAgICAgdGhpcy5hdWRpb0NvbnRleHQgPSBuZXcgd2luZG93LkF1ZGlvQ29udGV4dCgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hdWRpb0NvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXVkaW9Db250ZXh0IGhhcyBubyBwcm9wZXJ0eSBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZScpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZXMgYW4gYXVkaW8gbm9kZSBmcm9tIHRoZSBtaWNyb3Bob25lIGluY29taW5nIHN0cmVhbS5cbiAgICBjb25zdCBtaWNJbnB1dCA9IHRoaXMuYXVkaW9Db250ZXh0LmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKHN0cmVhbSk7XG5cbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gRmlyZWZveCB0aGF0IHdvdWxkIG90aGVyd2lzZSBsZWFkIHRvXG4gICAgLy8gdGhlIHNvdW5kIGlucHV0IHN0b3BwaW5nIGFmdGVyIH41IHNlY29uZHMuXG4gICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0NTEyXG4gICAgLy8gdGhlIGltcG9ydGFudCB0aGluZyBpcyB0byBzYXZlIGEgcmVmZXJlbmNlIHRvIHRoZSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZVxuICAgIHRoaXMubWljSW5wdXQgPSBtaWNJbnB1dDtcblxuICAgIC8vIENyZWF0ZSBhIGdhaW4gbm9kZVxuICAgIGNvbnN0IG1pY0lucHV0R2FpbiA9IHRoaXMuYXVkaW9Db250ZXh0LmNyZWF0ZUdhaW4oKTtcbiAgICAvLyBDb25uZWN0IHRoZSBtaWNyb3Bob25lIHNvdXJjZSB0byBhIGdhaW4gbm9kZS5cbiAgICBtaWNJbnB1dC5jb25uZWN0KG1pY0lucHV0R2Fpbik7XG5cbiAgICB0aGlzLl9yZWNvcmRlciA9IHRoaXMuX2dldEJlc3RSZWNvcmRlcihtaWNJbnB1dEdhaW4pO1xuXG4gICAgcmV0dXJuIG1pY0lucHV0R2FpbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSByZWNvcmRlciBvYmplY3QgdGhhdCBwZXJmb3JtcyBhdWRpbyBjb21wcmVzc2lvbiwgd2hlbiBhdmFpbGFibGUuXG4gICAqXG4gICAqIFVzaW5nIHRoZSBNZWRpYSBTdHJlYW0gUmVjb3JkaW5nIEFQSSBmb3IgcmVjb3JkaW5nIGlzIHRoZSBwcmVmZXJlZFxuICAgKiBzb2x1dGlvbi4gSXQgYWxsb3dzIHJlY29yZGluZyBjb21wcmVzc2VkIGF1ZGlvIHdoaWNoIG1ha2VzIGl0IHF1aWNrZXIgdG9cbiAgICogc3VibWl0LiBJZiBub3QgYXZhaWxhYmxlLCB1c2UgYSBkZWZhdWx0IGNyZWF0ZVNjcmlwdFByb2Nlc3NvciBpcyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge0dhaW5Ob2RlfSBtaWNJbnB1dEdhaW4gLSBUaGUgR2Fpbk5vZGUgdG8gYW5hbHl6ZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9nZXRCZXN0UmVjb3JkZXIobWljSW5wdXRHYWluKSB7XG4gICAgbGV0IHJlY29yZGVyID0gbnVsbDtcbiAgICAvLyBTdGFydCBieSBjaGVja2luZyBmb3IgYSBNZWRpYVJlY29yZGVyLlxuICAgIC8vIGlmICh0aGlzLmNhblVzZXJNZWRpYVJlY29yZGVyICYmICF0aGlzLl9zZXR0aW5ncy5mb3JjZVdhdmUpIHtcbiAgICAvLyAgIC8vIFVzZSB0aGUgcmVjb3JkZXIgd2l0aCBNZWRpYVJlY29yZGVyIGltcGxlbWVudGF0aW9uLlxuICAgIC8vICAgcmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihtaWNJbnB1dEdhaW4pO1xuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5jYW5HZXRVc2VyTWVkaWEpIHtcbiAgICBpZiAodGhpcy5jYW5NZWRpYURldmljZXNHZXRVc2VyTWVkaWEpIHtcbiAgICAgIC8vIEZhbGwgYmFjayB0byByYXcgKFdBVkUpIGF1ZGlvIGVuY29kaW5nLlxuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICByZWNvcmRlciA9IG5ldyBXZWJBdWRpb1JlY29yZGVyKG1pY0lucHV0R2FpbiwgZGF0YSA9PiB7XG4gICAgICAgIHNlbGYuc3RyZWFtQ2FsbGJhY2soZGF0YSk7XG4gICAgICB9LCBuZXcgV2F2ZVBhY2tlcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBhIHByb3BlciByZWNvcmRlci4nKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ1JlY29yZGVyIGluaXRpYWxpc2VkLicpO1xuICAgIHJldHVybiByZWNvcmRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIGNodW5rIG9mIGF1ZGlvIGJlY29tZXMgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBjaHVuayAtIEEgY2h1bmsgb2YgYXVkaW8gKEludDE2IGZvcm1hdHRlZCkuXG4gICAqL1xuICBzdHJlYW1DYWxsYmFjayhjaHVuaykge1xuICAgIHRoaXMuZmlyZUV2ZW50KCdkYXRhYXZhaWxhYmxlJywgW2NodW5rXSk7XG4gIH1cblxuICAvKipcbiAgICogVGhyb3cgYW4gZXJyb3IgaWYgdGhlIHVzZXIgaXMgbm90IHlldCBsb2dnZWQgaW4uXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIHdoZW4gcGVybWlzc2lvbiB3YXMgYWxyZWFkeSBncmFudGVkLiBGYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBfcmVxdWlyZUdldFVzZXJNZWRpYSgpIHtcbiAgICBpZiAodGhpcy5fcmVjb3JkZXIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnUmVxdWVzdGluZyBnZXRVc2VyTWVkaWEgcGVybWlzc2lvbiBmaXJzdC4nKTtcbiAgICB0aGlzLnJlcXVlc3RVc2VyTWVkaWEoKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgbmV3IHJlY29yZGluZyBzZXNzaW9uIGlkLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBXaGVuIGRlZmluZWQsIHN0aWNrIHRoaXMgaWQgdG8gdGhlIHJlY29yZGVkIGJsb2IuXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBpZCB0aGF0IHdhcyBnaXZlbiBvciBhIHVuaXF1ZSBnZW5lcmF0ZWQgb25lLlxuICAgKi9cbiAgc3RhcnRSZWNvcmRpbmdTZXNzaW9uKGlkKSB7XG4gICAgLy8gR2VuZXJhdGUgYSB1dWlkIHRvIHJlbWVtYmVyIHRoaXMgcmVjb3JkaW5nIGJ5IChsb2NhbGx5KS5cbiAgICBjb25zdCB1dWlkXyA9IGlkID09PSB1bmRlZmluZWQgPyB1dWlkLnY0KCkgOiBpZDtcbiAgICB0aGlzLmFjdGl2ZVJlY29yZGluZ0lkID0gdXVpZF87XG4gICAgcmV0dXJuIHV1aWRfO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHJlY29yZGluZyBtaWNyb3Bob25lIGlucHV0IHVudGlsIHN0b3BwZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBjYiAtIFRoZSBjYWxsYmFjayB0aGF0IHByb3ZpZGVzIGEgcGllY2Ugb2YgcmF3IGF1ZGlvIHdoZW5cbiAgICogaXQgYmVjb21lcyBhdmFpbGFibGUuIEl0IG1heSBiZSB1c2VkIGZvciBzdHJlYW1pbmcuXG4gICAqIEBlbWl0cyB7RXZlbnR9ICdyZWNvcmRpbmcnIFdpdGggYXJndW1lbnRzOiBbcmVjb3JkaW5nIElEXS5cbiAgICovXG4gIHJlY29yZChjYikge1xuICAgIGlmICghdGhpcy5fcmVxdWlyZUdldFVzZXJNZWRpYSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNSZWNvcmRpbmcoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBbHJlYWR5IHJlY29yZGluZywgc3RvcCByZWNvcmRpbmcgZmlyc3QuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVjb3JkZXIucmVjb3JkKCk7XG4gICAgaWYgKHRoaXMuX3N0b3B3YXRjaCkge1xuICAgICAgdGhpcy5fc3RvcHdhdGNoLl92YWx1ZSA9IDA7XG4gICAgICB0aGlzLl9zdG9wd2F0Y2guc3RhcnQoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYWN0aXZlUmVjb3JkaW5nSWQpIHtcbiAgICAgIHRoaXMuc3RhcnRSZWNvcmRpbmdTZXNzaW9uKCk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdSZWNvcmRpbmcgYXMgaWQ6ICcgKyB0aGlzLmFjdGl2ZVJlY29yZGluZ0lkKTtcblxuICAgIHRoaXMuZmlyZUV2ZW50KCdyZWNvcmRpbmcnLCBbdGhpcy5hY3RpdmVSZWNvcmRpbmdJZF0pO1xuICAgIHJldHVybiBjYjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHJlY29yZGluZyBtaWNyb3Bob25lIGlucHV0LlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmb3JjZWQ9ZmFsc2VdIC0gU2V0IHdoZXRoZXIgdG8gZm9yY2UgdGhlIG1pY3JvcGhvbmUgdG8gc3RvcCByZWNvcmRpbmcgb3IgbGV0IGl0IGVuZCBub3JtYWxseS5cbiAgICogQGVtaXRzIHtFdmVudH0gJ3JlY29yZGVkJyBXaXRoIGFyZ3VtZW50czogW3JlY29yZGluZyBJRCwgYXVkaW8gQmxvYiwgZm9yY2VkXS5cbiAgICovXG4gIHN0b3AoZm9yY2VkKSB7XG4gICAgaWYgKCF0aGlzLl9yZWNvcmRlci5pc1JlY29yZGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3JlY29yZGVyLnN0b3AoKTtcbiAgICBpZiAodGhpcy5fc3RvcHdhdGNoKSB7XG4gICAgICB0aGlzLl9zdG9wd2F0Y2guc3RvcCgpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnU3RvcHBlZCByZWNvcmRpbmcgZm9yIGlkOiAnICsgdGhpcy5hY3RpdmVSZWNvcmRpbmdJZCk7XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICB0aGlzLl9yZWNvcmRlci5nZXRFbmNvZGVkQXVkaW8oYmxvYiA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnUmVjZWl2ZWQgZW5jb2RlZCBhdWRpbyBvZiB0eXBlOiAnICsgYmxvYi50eXBlKTtcbiAgICAgIC8vIEFsbG93IGRpcmVjdCBwbGF5YmFjayBmcm9tIGxvY2FsIGJsb2IuXG4gICAgICBzZWxmLmZpcmVFdmVudCgncmVjb3JkZWQnLCBbc2VsZi5hY3RpdmVSZWNvcmRpbmdJZCwgYmxvYiwgQm9vbGVhbihmb3JjZWQpXSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlcmUgaXMgYSByZWNvcmRpbmcgaW4gcHJvZ3Jlc3MuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHVzZXIgaXMgY3VycmVudGx5IHJlY29yZGluZyBhdWRpby4gRmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIGlzUmVjb3JkaW5nKCkge1xuICAgIGlmICghdGhpcy5fcmVjb3JkZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3JlY29yZGVyLmlzUmVjb3JkaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlIGF1ZGlvIHBsYXliYWNrLiBTd2l0Y2ggZnJvbSBwbGF5aW5nIHRvIHBhdXNlZCBzdGF0ZSBhbmQgYmFjay5cbiAgICovXG4gIHRvZ2dsZVJlY29yZGluZygpIHtcbiAgICBpZiAodGhpcy5pc1JlY29yZGluZygpKSB7XG4gICAgICB0aGlzLnN0b3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWNvcmQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZWNvcmRlZCBhdWRpbyBzcGVjaWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMge09iamVjdH0gQ29udGFpbmluZyBhdWRpb0Zvcm1hdCBhbmQgYXVkaW9QYXJhbWV0ZXJzIGRlc2NyaWJpbmcgdGhlIGZvcm1hdC5cbiAgICovXG4gIGdldEF1ZGlvU3BlY3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlY29yZGVyLmdldEF1ZGlvU3BlY3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIGEgc3RvcHdhdGNoIHRvIHN5bmMgd2l0aCB0aGUgcGxheWluZyBhbmQgc3RvcHBpbmcgZnVuY3Rpb25hbGl0eSBvZiB0aGUgcmVjb3JkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHRpY2tDYiAtIENhbGxiYWNrIHRvIGludm9rZSBvbiBldmVyeSB0aWNrLiBBIHRpY2sgb2NjdXJzIG9uY2UgZXZlcnkgMTAwIG1zLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgX3RpY2tDYiBpcyBudWxsLlxuICAgKiBAcmV0dXJucyB7U3RvcHdhdGNofSBOZXcgU3RvcHdhdGNoIG9iamVjdC5cbiAgICovXG4gIGJpbmRTdG9wd2F0Y2godGlja0NiKSB7XG4gICAgdGhpcy5fc3RvcHdhdGNoID0gbmV3IFN0b3B3YXRjaCh0aWNrQ2IpO1xuICAgIHJldHVybiB0aGlzLl9zdG9wd2F0Y2g7XG4gIH1cbn1cbiJdfQ== |
@@ -117,2 +117,2 @@ 'use strict'; | ||
exports.default = Stopwatch; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby90b29scy5qcyJdLCJuYW1lcyI6WyJlZSIsInJlcXVpcmUiLCJTdG9wd2F0Y2giLCJ0aWNrQ2IiLCJFcnJvciIsIl9pbnRlcnZhbCIsIl92YWx1ZSIsIl90aWNrQ2IiLCJfZW1pdHRlciIsInN0YXJ0IiwiY29uc29sZSIsImRlYnVnIiwic2VsZiIsInNldEludGVydmFsIiwidXBkYXRlIiwic3RvcCIsImNsZWFySW50ZXJ2YWwiLCJ0aWNrIiwicmVzZXQiLCJlbWl0IiwicmVnaXN0ZXJMaXN0ZW5lciIsIm9uIiwic3RvcExpc3RlbmluZyIsIm9mZiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0FBUUEsSUFBTUEsS0FBS0MsUUFBUSxlQUFSLENBQVg7O0FBRUE7Ozs7O0FBS0E7Ozs7Ozs7OztJQVFxQkMsUztBQUNuQjs7OztBQUlBLHFCQUFZQyxNQUFaLEVBQW9CO0FBQUE7O0FBQ2xCLFFBQUksQ0FBQ0EsTUFBTCxFQUFhO0FBQ1gsWUFBTSxJQUFJQyxLQUFKLENBQVUsMkJBQVYsQ0FBTjtBQUNEO0FBQ0QsU0FBS0MsU0FBTCxHQUFpQixJQUFqQjtBQUNBLFNBQUtDLE1BQUwsR0FBYyxDQUFkO0FBQ0EsU0FBS0MsT0FBTCxHQUFlSixNQUFmO0FBQ0EsU0FBS0ssUUFBTCxHQUFnQlIsR0FBRyxFQUFILENBQWhCO0FBQ0Q7O0FBRUQ7Ozs7O3NCQUdBUyxLLG9CQUFRO0FBQ05DLFlBQVFDLEtBQVIsQ0FBYyxnQkFBZDtBQUNBO0FBQ0EsUUFBTUMsT0FBTyxJQUFiO0FBQ0EsU0FBS1AsU0FBTCxHQUFpQlEsWUFBWSxZQUFNO0FBQ2pDRCxXQUFLRSxNQUFMO0FBQ0QsS0FGZ0IsRUFFZCxHQUZjLENBQWpCO0FBR0QsRzs7QUFFRDs7Ozs7c0JBR0FDLEksbUJBQU87QUFDTEwsWUFBUUMsS0FBUixDQUFjLGVBQWQ7QUFDQUssa0JBQWMsS0FBS1gsU0FBbkI7QUFDQSxTQUFLWSxJQUFMO0FBQ0EsU0FBS1osU0FBTCxHQUFpQixJQUFqQjtBQUNELEc7O0FBRUQ7Ozs7O3NCQUdBYSxLLG9CQUFRO0FBQ05SLFlBQVFDLEtBQVIsQ0FBYyxhQUFkO0FBQ0EsU0FBS0wsTUFBTCxHQUFjLENBQWQ7QUFDQSxTQUFLVyxJQUFMO0FBQ0QsRzs7QUFFRDs7Ozs7c0JBR0FILE0scUJBQVM7QUFDUCxTQUFLRyxJQUFMO0FBQ0EsU0FBS1gsTUFBTDtBQUNELEc7O0FBRUQ7Ozs7O3NCQUdBVyxJLG1CQUFPO0FBQ0wsU0FBS1YsT0FBTCxDQUFhLEtBQUtELE1BQWxCO0FBQ0EsU0FBS0UsUUFBTCxDQUFjVyxJQUFkLENBQW1CLE1BQW5CLEVBQTJCLEtBQUtiLE1BQWhDO0FBQ0QsRzs7c0JBRURjLGdCLDZCQUFpQmpCLE0sRUFBUTtBQUN2QixTQUFLSyxRQUFMLENBQWNhLEVBQWQsQ0FBaUIsTUFBakIsRUFBeUJsQixNQUF6QjtBQUNELEc7O3NCQUVEbUIsYSwwQkFBY25CLE0sRUFBUTtBQUNwQixTQUFLSyxRQUFMLENBQWNlLEdBQWQsQ0FBa0IsTUFBbEIsRUFBMEJwQixNQUExQjtBQUNELEc7Ozs7O2tCQXBFa0JELFMiLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0aXRsZSBJVFNMYW5ndWFnZSBKYXZhc2NyaXB0XG4gKiBAb3ZlcnZpZXcgVGhpcyBpcyBwYXJ0IG9mIHRoZSBJVFNMYW5ndWFnZSBKYXZhc2NyaXB0IFNESyB0byBwZXJmb3JtIGhlbHBlciBmdW5jdGlvbnMuXG4gKiBAY29weXJpZ2h0IChjKSAyMDE0IElUU0xhbmd1YWdlXG4gKiBAbGljZW5zZSBNSVRcbiAqIEBhdXRob3IgZC1jZW50cmFsaXplXG4gKi9cblxuY29uc3QgZWUgPSByZXF1aXJlKCdldmVudC1lbWl0dGVyJyk7XG5cbi8qKlxuQG1vZHVsZSBUb29sc1xuSVRTTGFuZ3VhZ2UgaGVscGVyIHRvb2xzLlxuKi9cblxuLyoqXG4gKiBBIHNpbXBsZSBzdG9wd2F0Y2ggdGhhdCB0aWNrcyBldmVyeSAxMDAgbXMuIEl0IGNhbiBiZSBib3VuZCB0byBhbiB7QGxpbmsgQXVkaW9QbGF5ZXJ9IG9yIHtAbGluayBBdWRpb1JlY29yZGVyfVxuICogd2hpY2ggYmluZHMgdGhlIHN0b3AgYW5kIHBsYXlpbmcgZnVuY3Rpb25hbGl0eSB0byB0aGUgc3RvcHBpbmcgYW5kIHN0YXJ0aW5nIG9mIHRoZSBXYXRjaC5cbiAqIEl0IGNhbiBhbHNvIGJlIGxpc3RlbmVkIHRvIGJ5IG90aGVyIGVudGl0aWVzLlxuICogQGV4cGVyaW1lbnRhbCBXaGVuIGJpbmRpbmcgdG8gYW4gQXVkaW8gUmVjb3JkZXIsIHRoZSBzdG9wd2F0Y2ggaXMgbm90IGFsd2F5cyBzeW5jZWQgcHJvcGVybHkuXG4gKiBBIGRpZmZlcmVuY2Ugb2YgMC4xcyBvciAwLjJzIHRvbyBoaWdoIG1heSBvY2N1ciB3aGVuIGNvdW50aW5nLiBXaGVuIGJpbmRpbmcgdG8gYW4gQXVkaW8gUGxheWVyIGhvd2V2ZXIsIHRoZSB0aW1lclxuICogd2lsbCBzeW5jIHByb3Blcmx5IGFuZCBzaG93IHRoZSBjb3JyZWN0IGR1cmF0aW9uIG9mIHRoZSBsb2FkZWQgYXVkaW8gZmlsZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RvcHdhdGNoIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHRpY2tDYiAtIFRoZSBjYWxsYmFjayB0aGF0IGlzIGludm9rZWQgb24gZXZlcnkgdGljayAoZXZlcnkgMTAwbXMpLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGlja0NiIGlzIG1pc3NpbmcuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih0aWNrQ2IpIHtcbiAgICBpZiAoIXRpY2tDYikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aWNrQ2IgcGFyYW1ldGVyIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIHRoaXMuX2ludGVydmFsID0gbnVsbDtcbiAgICB0aGlzLl92YWx1ZSA9IDA7XG4gICAgdGhpcy5fdGlja0NiID0gdGlja0NiO1xuICAgIHRoaXMuX2VtaXR0ZXIgPSBlZSh7fSk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgY291bnRpbmcgYW5kIHRpY2sgZXZlcnkgMTAwIG1zLlxuICAgKi9cbiAgc3RhcnQoKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnU3RhcnQgY291bnRpbmcnKTtcbiAgICAvLyBUaWNrIGV2ZXJ5IDEwMG1zICgwLjFzKVxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuX2ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgc2VsZi51cGRhdGUoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgY291bnRpbmcuXG4gICAqL1xuICBzdG9wKCkge1xuICAgIGNvbnNvbGUuZGVidWcoJ1N0b3AgY291bnRpbmcnKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsKTtcbiAgICB0aGlzLnRpY2soKTtcbiAgICB0aGlzLl9pbnRlcnZhbCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgY291bnQgdG8gMC5cbiAgICovXG4gIHJlc2V0KCkge1xuICAgIGNvbnNvbGUuZGVidWcoJ1Jlc2V0IGNvdW50Jyk7XG4gICAgdGhpcy5fdmFsdWUgPSAwO1xuICAgIHRoaXMudGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRpY2sgb25jZSBhbmQgaW5jcmVtZW50IHRoZSB2YWx1ZSBieSAxLlxuICAgKi9cbiAgdXBkYXRlKCkge1xuICAgIHRoaXMudGljaygpO1xuICAgIHRoaXMuX3ZhbHVlKys7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlIHRoZSB0aWNrIGNhbGxiYWNrIHdpdGggdGhlIGN1cnJlbnQgdmFsdWUuXG4gICAqL1xuICB0aWNrKCkge1xuICAgIHRoaXMuX3RpY2tDYih0aGlzLl92YWx1ZSk7XG4gICAgdGhpcy5fZW1pdHRlci5lbWl0KCd0aWNrJywgdGhpcy5fdmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJMaXN0ZW5lcih0aWNrQ2IpIHtcbiAgICB0aGlzLl9lbWl0dGVyLm9uKCd0aWNrJywgdGlja0NiKTtcbiAgfVxuXG4gIHN0b3BMaXN0ZW5pbmcodGlja0NiKSB7XG4gICAgdGhpcy5fZW1pdHRlci5vZmYoJ3RpY2snLCB0aWNrQ2IpO1xuICB9XG5cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby90b29scy5qcyJdLCJuYW1lcyI6WyJlZSIsInJlcXVpcmUiLCJTdG9wd2F0Y2giLCJ0aWNrQ2IiLCJFcnJvciIsIl9pbnRlcnZhbCIsIl92YWx1ZSIsIl90aWNrQ2IiLCJfZW1pdHRlciIsInN0YXJ0IiwiY29uc29sZSIsImRlYnVnIiwic2VsZiIsInNldEludGVydmFsIiwidXBkYXRlIiwic3RvcCIsImNsZWFySW50ZXJ2YWwiLCJ0aWNrIiwicmVzZXQiLCJlbWl0IiwicmVnaXN0ZXJMaXN0ZW5lciIsIm9uIiwic3RvcExpc3RlbmluZyIsIm9mZiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0FBUUEsSUFBTUEsS0FBS0MsUUFBUSxlQUFSLENBQVg7O0FBRUE7Ozs7O0FBS0E7Ozs7Ozs7OztJQVFxQkMsUztBQUNuQjs7OztBQUlBLHFCQUFZQyxNQUFaLEVBQW9CO0FBQUE7O0FBQ2xCLFFBQUksQ0FBQ0EsTUFBTCxFQUFhO0FBQ1gsWUFBTSxJQUFJQyxLQUFKLENBQVUsMkJBQVYsQ0FBTjtBQUNEO0FBQ0QsU0FBS0MsU0FBTCxHQUFpQixJQUFqQjtBQUNBLFNBQUtDLE1BQUwsR0FBYyxDQUFkO0FBQ0EsU0FBS0MsT0FBTCxHQUFlSixNQUFmO0FBQ0EsU0FBS0ssUUFBTCxHQUFnQlIsR0FBRyxFQUFILENBQWhCO0FBQ0Q7O0FBRUQ7Ozs7O3NCQUdBUyxLLG9CQUFRO0FBQ05DLFlBQVFDLEtBQVIsQ0FBYyxnQkFBZDtBQUNBO0FBQ0EsUUFBTUMsT0FBTyxJQUFiO0FBQ0EsU0FBS1AsU0FBTCxHQUFpQlEsWUFBWSxZQUFNO0FBQ2pDRCxXQUFLRSxNQUFMO0FBQ0QsS0FGZ0IsRUFFZCxHQUZjLENBQWpCO0FBR0QsRzs7QUFFRDs7Ozs7c0JBR0FDLEksbUJBQU87QUFDTEwsWUFBUUMsS0FBUixDQUFjLGVBQWQ7QUFDQUssa0JBQWMsS0FBS1gsU0FBbkI7QUFDQSxTQUFLWSxJQUFMO0FBQ0EsU0FBS1osU0FBTCxHQUFpQixJQUFqQjtBQUNELEc7O0FBRUQ7Ozs7O3NCQUdBYSxLLG9CQUFRO0FBQ05SLFlBQVFDLEtBQVIsQ0FBYyxhQUFkO0FBQ0EsU0FBS0wsTUFBTCxHQUFjLENBQWQ7QUFDQSxTQUFLVyxJQUFMO0FBQ0QsRzs7QUFFRDs7Ozs7c0JBR0FILE0scUJBQVM7QUFDUCxTQUFLRyxJQUFMO0FBQ0EsU0FBS1gsTUFBTDtBQUNELEc7O0FBRUQ7Ozs7O3NCQUdBVyxJLG1CQUFPO0FBQ0wsU0FBS1YsT0FBTCxDQUFhLEtBQUtELE1BQWxCO0FBQ0EsU0FBS0UsUUFBTCxDQUFjVyxJQUFkLENBQW1CLE1BQW5CLEVBQTJCLEtBQUtiLE1BQWhDO0FBQ0QsRzs7c0JBRURjLGdCLDZCQUFpQmpCLE0sRUFBUTtBQUN2QixTQUFLSyxRQUFMLENBQWNhLEVBQWQsQ0FBaUIsTUFBakIsRUFBeUJsQixNQUF6QjtBQUNELEc7O3NCQUVEbUIsYSwwQkFBY25CLE0sRUFBUTtBQUNwQixTQUFLSyxRQUFMLENBQWNlLEdBQWQsQ0FBa0IsTUFBbEIsRUFBMEJwQixNQUExQjtBQUNELEc7Ozs7O2tCQXBFa0JELFMiLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0aXRsZSBJVFNMYW5ndWFnZSBKYXZhc2NyaXB0XG4gKiBAb3ZlcnZpZXcgVGhpcyBpcyBwYXJ0IG9mIHRoZSBJVFNMYW5ndWFnZSBKYXZhc2NyaXB0IFNESyB0byBwZXJmb3JtIGhlbHBlciBmdW5jdGlvbnMuXG4gKiBAY29weXJpZ2h0IChjKSAyMDE0IElUU0xhbmd1YWdlXG4gKiBAbGljZW5zZSBNSVRcbiAqIEBhdXRob3IgZC1jZW50cmFsaXplXG4gKi9cblxuY29uc3QgZWUgPSByZXF1aXJlKCdldmVudC1lbWl0dGVyJyk7XG5cbi8qKlxuQG1vZHVsZSBUb29sc1xuSVRTTGFuZ3VhZ2UgaGVscGVyIHRvb2xzLlxuKi9cblxuLyoqXG4gKiBBIHNpbXBsZSBzdG9wd2F0Y2ggdGhhdCB0aWNrcyBldmVyeSAxMDAgbXMuIEl0IGNhbiBiZSBib3VuZCB0byBhbiB7QGxpbmsgQXVkaW9QbGF5ZXJ9IG9yIHtAbGluayBBdWRpb1JlY29yZGVyfVxuICogd2hpY2ggYmluZHMgdGhlIHN0b3AgYW5kIHBsYXlpbmcgZnVuY3Rpb25hbGl0eSB0byB0aGUgc3RvcHBpbmcgYW5kIHN0YXJ0aW5nIG9mIHRoZSBXYXRjaC5cbiAqIEl0IGNhbiBhbHNvIGJlIGxpc3RlbmVkIHRvIGJ5IG90aGVyIGVudGl0aWVzLlxuICogQGV4cGVyaW1lbnRhbCBXaGVuIGJpbmRpbmcgdG8gYW4gQXVkaW8gUmVjb3JkZXIsIHRoZSBzdG9wd2F0Y2ggaXMgbm90IGFsd2F5cyBzeW5jZWQgcHJvcGVybHkuXG4gKiBBIGRpZmZlcmVuY2Ugb2YgMC4xcyBvciAwLjJzIHRvbyBoaWdoIG1heSBvY2N1ciB3aGVuIGNvdW50aW5nLiBXaGVuIGJpbmRpbmcgdG8gYW4gQXVkaW8gUGxheWVyIGhvd2V2ZXIsIHRoZSB0aW1lclxuICogd2lsbCBzeW5jIHByb3Blcmx5IGFuZCBzaG93IHRoZSBjb3JyZWN0IGR1cmF0aW9uIG9mIHRoZSBsb2FkZWQgYXVkaW8gZmlsZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RvcHdhdGNoIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHRpY2tDYiAtIFRoZSBjYWxsYmFjayB0aGF0IGlzIGludm9rZWQgb24gZXZlcnkgdGljayAoZXZlcnkgMTAwbXMpLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGlja0NiIGlzIG1pc3NpbmcuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih0aWNrQ2IpIHtcbiAgICBpZiAoIXRpY2tDYikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aWNrQ2IgcGFyYW1ldGVyIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIHRoaXMuX2ludGVydmFsID0gbnVsbDtcbiAgICB0aGlzLl92YWx1ZSA9IDA7XG4gICAgdGhpcy5fdGlja0NiID0gdGlja0NiO1xuICAgIHRoaXMuX2VtaXR0ZXIgPSBlZSh7fSk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgY291bnRpbmcgYW5kIHRpY2sgZXZlcnkgMTAwIG1zLlxuICAgKi9cbiAgc3RhcnQoKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnU3RhcnQgY291bnRpbmcnKTtcbiAgICAvLyBUaWNrIGV2ZXJ5IDEwMG1zICgwLjFzKVxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuX2ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgc2VsZi51cGRhdGUoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgY291bnRpbmcuXG4gICAqL1xuICBzdG9wKCkge1xuICAgIGNvbnNvbGUuZGVidWcoJ1N0b3AgY291bnRpbmcnKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsKTtcbiAgICB0aGlzLnRpY2soKTtcbiAgICB0aGlzLl9pbnRlcnZhbCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgY291bnQgdG8gMC5cbiAgICovXG4gIHJlc2V0KCkge1xuICAgIGNvbnNvbGUuZGVidWcoJ1Jlc2V0IGNvdW50Jyk7XG4gICAgdGhpcy5fdmFsdWUgPSAwO1xuICAgIHRoaXMudGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRpY2sgb25jZSBhbmQgaW5jcmVtZW50IHRoZSB2YWx1ZSBieSAxLlxuICAgKi9cbiAgdXBkYXRlKCkge1xuICAgIHRoaXMudGljaygpO1xuICAgIHRoaXMuX3ZhbHVlKys7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlIHRoZSB0aWNrIGNhbGxiYWNrIHdpdGggdGhlIGN1cnJlbnQgdmFsdWUuXG4gICAqL1xuICB0aWNrKCkge1xuICAgIHRoaXMuX3RpY2tDYih0aGlzLl92YWx1ZSk7XG4gICAgdGhpcy5fZW1pdHRlci5lbWl0KCd0aWNrJywgdGhpcy5fdmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJMaXN0ZW5lcih0aWNrQ2IpIHtcbiAgICB0aGlzLl9lbWl0dGVyLm9uKCd0aWNrJywgdGlja0NiKTtcbiAgfVxuXG4gIHN0b3BMaXN0ZW5pbmcodGlja0NiKSB7XG4gICAgdGhpcy5fZW1pdHRlci5vZmYoJ3RpY2snLCB0aWNrQ2IpO1xuICB9XG59XG4iXX0= |
@@ -357,2 +357,2 @@ 'use strict'; | ||
exports.default = WebAudioPlayer; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby93ZWItYXVkaW8tcGxheWVyLmpzIl0sIm5hbWVzIjpbIldlYkF1ZGlvUGxheWVyIiwib3B0aW9ucyIsIl9zZXR0aW5ncyIsIk9iamVjdCIsImFzc2lnbiIsIl9pbml0UGxheWVyIiwic291bmQiLCJ3aW5kb3ciLCJBdWRpbyIsIl9wYXVzZUlzU3RvcCIsInNlbGYiLCJhZGRFdmVudExpc3RlbmVyIiwicGxheWluZ0NiIiwidGltZXVwZGF0ZUNiIiwiZHVyYXRpb25jaGFuZ2VDYiIsImNhbnBsYXlDYiIsImVuZGVkQ2IiLCJwYXVzZUNiIiwic3RvcHBlZENiIiwicGxheWJhY2tTdG9wcGVkQ2IiLCJwcm9ncmVzc0NiIiwiZSIsInRhcmdldCIsImVycm9yIiwiY29kZSIsIk1FRElBX0VSUl9BQk9SVEVEIiwiY29uc29sZSIsIk1FRElBX0VSUl9ORVRXT1JLIiwiTUVESUFfRVJSX0RFQ09ERSIsIk1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRCIsImVycm9yQ2IiLCJsb2FkIiwidXJsIiwicHJlbG9hZCIsImxvYWRlZENiIiwidW5kZWZpbmVkIiwiYXV0b2J1ZmZlciIsIkJvb2xlYW4iLCJsb2ciLCJkdXJhdGlvbiIsInNyYyIsInBsYXkiLCJwb3NpdGlvbiIsInJlYWR5U3RhdGUiLCJIQVZFX01FVEFEQVRBIiwid2FybiIsImRlYnVnIiwiY3VycmVudFRpbWUiLCJyZXNldCIsInN0b3AiLCJwYXVzZSIsImluZm8iLCJzY3J1YiIsInBlcmNlbnRhZ2UiLCJuZXdUaW1lIiwiZ2V0QnVmZmVyRmlsbCIsImJ1ZmZlcmVkIiwibGVuZ3RoIiwicHJvYmFibGVFbmQiLCJpIiwic3RhcnQiLCJlbmQiLCJsb2FkZWQiLCJNYXRoIiwicm91bmQiLCJnZXRDdXJyZW50VGltZSIsImdldER1cmF0aW9uIiwiaXNQbGF5aW5nIiwicGF1c2VkIiwic2V0UGxheWJhY2tSYXRlIiwicmF0ZSIsInBsYXliYWNrUmF0ZSIsImdldFBsYXliYWNrUmF0ZSIs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dGVudCI6WyIvKipcbiAqIEB0aXRsZSBJVFNMYW5ndWFnZSBKYXZhc2NyaXB0IEF1ZGlvXG4gKiBAb3ZlcnZpZXcgVGhpcyBpcyBwYXJ0IG9mIHRoZSBJVFNMYW5ndWFnZSBKYXZhc2NyaXB0IFNESyB0byBwZXJmb3JtIGF1ZGlvIHJlbGF0ZWQgZnVuY3Rpb25zLlxuICogQGNvcHlyaWdodCAoYykgMjAxNCBJVFNMYW5ndWFnZVxuICogQGxpY2Vuc2UgTUlUXG4gKiBAYXV0aG9yIGQtY2VudHJhbGl6ZVxuICpcbiAqIFRoaXMgY2xhc3MgZmlyZXMgdGhlIHNhbWUgZXZlbnRzIGFzIHRoZSBIVE1MNSBBdWRpbyBkb2VzLiB7QGxpbmsgaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL3RhZ3MvcmVmX2F2X2RvbS5hc3B9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYkF1ZGlvUGxheWVyIHtcbiAgLyoqXG4gICAqIElUU0xhbmd1YWdlIFdlYkF1ZGlvUGxheWVyIG5vbi1ncmFwaGljYWwgY29tcG9uZW50LlxuICAgKlxuICAgKiBUaGlzIHBsYXllciB1c2VzIHRoZSBIVE1MNSBBdWRpbyBjb21wb25lbnQgZm9yIHBsYXliYWNrLlxuICAgKlxuICAgKiBAcGFyYW0gez9PYmplY3R9IG9wdGlvbnMgLSBPdmVycmlkZSBhbnkgb2YgdGhlIGRlZmF1bHQgc2V0dGluZ3MuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgdGhpcy5fc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKTtcblxuICAgIHRoaXMuX2luaXRQbGF5ZXIoKTtcbiAgfVxuXG4gIF9pbml0UGxheWVyKCkge1xuICAgIHRoaXMuc291bmQgPSBuZXcgd2luZG93LkF1ZGlvKCk7XG4gICAgdGhpcy5fcGF1c2VJc1N0b3AgPSBmYWxzZTtcblxuICAgIC8vIFRoZSBpdHMuQXVkaW9QbGF5ZXIgQVBJIGlzIGJhc2VkIHVwb24gdGhlIHNhbWUgQVBJIGNhbGxzIGFzIHRoZVxuICAgIC8vIEhUTUw1IEF1ZGlvIGVsZW1lbnQgaXRzZWxmLCB0aGVyZWZvcmUsIGp1c3QgYnViYmxlIHVwIGFsbCBldmVudHMuXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLnNvdW5kLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCAoKSA9PiB7XG4gICAgICBpZiAoc2VsZi5fc2V0dGluZ3MucGxheWluZ0NiKSB7XG4gICAgICAgIHNlbGYuX3NldHRpbmdzLnBsYXlpbmdDYigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zb3VuZC5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgKCkgPT4ge1xuICAgICAgaWYgKHNlbGYuX3NldHRpbmdzLnRpbWV1cGRhdGVDYikge1xuICAgICAgICBzZWxmLl9zZXR0aW5ncy50aW1ldXBkYXRlQ2IoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc291bmQuYWRkRXZlbnRMaXN0ZW5lcignZHVyYXRpb25jaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBpZiAoc2VsZi5fc2V0dGluZ3MuZHVyYXRpb25jaGFuZ2VDYikge1xuICAgICAgICBzZWxmLl9zZXR0aW5ncy5kdXJhdGlvbmNoYW5nZUNiKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnNvdW5kLmFkZEV2ZW50TGlzdGVuZXIoJ2NhbnBsYXknLCAoKSA9PiB7XG4gICAgICBpZiAoc2VsZi5fc2V0dGluZ3MuY2FucGxheUNiKSB7XG4gICAgICAgIHNlbGYuX3NldHRpbmdzLmNhbnBsYXlDYigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zb3VuZC5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsICgpID0+IHtcbiAgICAgIGlmIChzZWxmLl9zZXR0aW5ncy5lbmRlZENiKSB7XG4gICAgICAgIHNlbGYuX3NldHRpbmdzLmVuZGVkQ2IoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc291bmQuYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCAoKSA9PiB7XG4gICAgICAvLyBUaGUgSFRNTDUgYXVkaW8gcGxheWVyIG9ubHkgaGFzIGEgcGF1c2UoKSwgbm8gc3RvcCgpLlxuICAgICAgLy8gVG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZSB0d28sIGEgZmxhZyBpcyBzZXQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gZXhwbGljaXRseSBzdG9wcGVkIChub3QgcGF1c2VkKSB0aGUgYXVkaW8uXG4gICAgICBpZiAoc2VsZi5fcGF1c2VJc1N0b3AgPT09IHRydWUpIHtcbiAgICAgICAgc2VsZi5fcGF1c2VJc1N0b3AgPSBmYWxzZTtcbiAgICAgICAgaWYgKHNlbGYuX3NldHRpbmdzLnBhdXNlQ2IpIHtcbiAgICAgICAgICBzZWxmLl9zZXR0aW5ncy5wYXVzZUNiKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoc2VsZi5fc2V0dGluZ3Muc3RvcHBlZENiKSB7XG4gICAgICAgIHNlbGYuX3NldHRpbmdzLnN0b3BwZWRDYigpO1xuICAgICAgfVxuICAgICAgaWYgKHNlbGYuX3NldHRpbmdzLnBsYXliYWNrU3RvcHBlZENiKSB7XG4gICAgICAgIHNlbGYuX3NldHRpbmdzLnBsYXliYWNrU3RvcHBlZENiKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnNvdW5kLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgKCkgPT4ge1xuICAgICAgaWYgKHNlbGYuX3NldHRpbmdzLnByb2dyZXNzQ2IpIHtcbiAgICAgICAgc2VsZi5fc2V0dGluZ3MucHJvZ3Jlc3NDYigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zb3VuZC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGUgPT4ge1xuICAgICAgc3dpdGNoIChlLnRhcmdldC5lcnJvci5jb2RlKSB7XG4gICAgICAgIGNhc2UgZS50YXJnZXQuZXJyb3IuTUVESUFfRVJSX0FCT1JURUQ6XG4gICAgICAgICAgY29uc29sZS5lcnJvcignWW91IGFib3J0ZWQgdGhlIHBsYXliYWNrLicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGUudGFyZ2V0LmVycm9yLk1FRElBX0VSUl9ORVRXT1JLOlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgJ0EgbmV0d29yayBlcnJvciBjYXVzZWQgdGhlIGF1ZGlvIGRvd25sb2FkIHRvIGZhaWwuJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZS50YXJnZXQuZXJyb3IuTUVESUFfRVJSX0RFQ09ERTpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdUaGUgYXVkaW8gcGxheWJhY2sgd2FzIGFib3J0ZWQgZHVlIHRvIGEgY29ycnVwdGlvbiAnICtcbiAgICAgICAgICAncHJvYmxlbSBvciBiZWNhdXNlIHRoZSBtZWRpYSB1c2VkIGZlYXR1cmVzIHlvdXIgJyArXG4gICAgICAgICAgJ2Jyb3dzZXIgZGlkIG5vdCBzdXBwb3J0LicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGUudGFyZ2V0LmVycm9yLk1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRDpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdUaGUgYXVkaW8gY291bGQgbm90IGJlIGxvYWRlZCwgZWl0aGVyIGJlY2F1c2UgdGhlICcgK1xuICAgICAgICAgICdzZXJ2ZXIgb3IgbmV0d29yayBmYWlsZWQgb3IgYmVjYXVzZSB0aGUgZm9ybWF0IGlzICcgK1xuICAgICAgICAgICdub3Qgc3VwcG9ydGVkLicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQuJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoc2VsZi5fc2V0dGluZ3MuZXJyb3JDYikge1xuICAgICAgICBzZWxmLl9zZXR0aW5ncy5lcnJvckNiKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBQcmVsb2FkIGF1ZGlvIGZyb20gYW4gVVJMLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVGhlIFVSTCB0aGF0IGNvbnRhaW5zIHRoZSBhdWRpby5cbiAgICogQHBhcmFtIHtib29sZWFufSBbcHJlbG9hZD10cnVlXSAtIFRyeSBwcmVsb2FkaW5nIG1ldGFkYXRhIGFuZCBwb3NzaWJsZSBzb21lIGF1ZGlvIChkZWZhdWx0KS5cbiAgICogU2V0IHRvIGZhbHNlIHRvIG5vdCBkb3dubG9hZCBhbnl0aGluZyB1bnRpbCBwbGF5aW5nLlxuICAgKiBAcGFyYW0gez9GdW5jdGlvbn0gbG9hZGVkQ2IgLSBUaGUgY2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIHdoZW4gdGhlIGR1cmF0aW9uIG9mIHRoZSBhdWRpbyBmaWxlXG4gICAqIGlzIGZpcnN0IGtub3duLlxuICAgKi9cbiAgbG9hZCh1cmwsIHByZWxvYWQsIGxvYWRlZENiKSB7XG4gICAgcHJlbG9hZCA9IHByZWxvYWQgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBwcmVsb2FkO1xuXG4gICAgLy8gQXV0b21hdGljYWxseSBiZWdpbiBidWZmZXJpbmcgdGhlIGZpbGUsIGV2ZW4gaWYgYXV0b3BsYXkgaXMgb2ZmLlxuICAgIHRoaXMuc291bmQuYXV0b2J1ZmZlciA9IEJvb2xlYW4ocHJlbG9hZCk7XG5cbiAgICAvLyBQcmVsb2FkaW5nIG9wdGlvbnM6XG4gICAgLy8gbm9uZSAtIERvIG5vdCBwcmVsb2FkIGFueSBtZWRpYS5cbiAgICAvLyBXYWl0IGZvciBhIHBsYXkgZXZlbnQgYmVmb3JlIGRvd25sb2FkaW5nIGFueXRoaW5nLlxuICAgIC8vIG1ldGFkYXRhIC0gUHJlbG9hZCBqdXN0IHRoZSBtZXRhZGF0YS4gR3JhYiB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2ZcbiAgICAvLyB0aGUgZmlsZSB2aWEgcmFuZ2UtcmVxdWVzdCBhbmQgZGV0ZXJtaW5lIHRoZSBkdXJhdGlvbi5cbiAgICAvLyBhdXRvIC0gUHJlbG9hZCB0aGUgd2hvbGUgZmlsZS4gR3JhYiB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2YgdGhlXG4gICAgLy8gZmlsZSB0byBkZXRlcm1pbmUgZHVyYXRpb24sIHRoZW4gc2VlayBiYWNrIHRvIHRoZSBzdGFydFxuICAgIC8vIGFnYWluIGZvciB0aGUgcHJlbG9hZCBwcm9wZXIuXG4gICAgdGhpcy5zb3VuZC5wcmVsb2FkID0gcHJlbG9hZCA/ICdhdXRvJyA6ICdub25lJztcblxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmIChsb2FkZWRDYikge1xuICAgICAgdGhpcy5zb3VuZC5hZGRFdmVudExpc3RlbmVyKCdkdXJhdGlvbmNoYW5nZScsICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0R1cmF0aW9uIGNoYW5nZSBmb3IgJyArIHVybCArICcgdG8gOiAnICtcbiAgICAgICAgICBzZWxmLnNvdW5kLmR1cmF0aW9uKTtcbiAgICAgICAgbG9hZGVkQ2Ioc2VsZi5zb3VuZCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNvdW5kLnNyYyA9IHVybDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9yIGNvbnRpbnVlIHBsYXliYWNrIG9mIGF1ZGlvLlxuICAgKlxuICAgKiBAcGFyYW0gez9udW1iZXJ9IHBvc2l0aW9uIC0gV2hlbiBwb3NpdGlvbiBpcyBnaXZlbiwgc3RhcnQgcGxheWluZyBmcm9tIHRoaXMgcG9zaXRpb24gKHNlY29uZHMpLlxuICAgKi9cbiAgcGxheShwb3NpdGlvbikge1xuICAgIGlmIChwb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5zb3VuZC5yZWFkeVN0YXRlIDwgdGhpcy5zb3VuZC5IQVZFX01FVEFEQVRBKSB7XG4gICAgICAgIC8vIEluIGNhc2UgdGhlIGF1ZGlvIHdhc24ndCBhbHJlYWR5IHByZWxvYWRlZCwgZG8gaXQgbm93LlxuICAgICAgICB0aGlzLnNvdW5kLnByZWxvYWQgPSAnYXV0byc7XG4gICAgICAgIGNvbnNvbGUud2FybignUGxheWluZyBmcm9tIGEgZ2l2ZW4gcG9zaXRpb24gaXMgbm90IHBvc3NpYmxlLiAnICtcbiAgICAgICAgICAnQXVkaW8gd2FzIG5vdCB5ZXQgbG9hZGVkLiBUcnkgYWdhaW4uJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdTY3J1YiBwb3NpdGlvbiB0bzogJyArIHBvc2l0aW9uKTtcbiAgICAgICAgdGhpcy5zb3VuZC5jdXJyZW50VGltZSA9IHBvc2l0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNvdW5kLnBsYXkoKTtcbiAgICBjb25zb2xlLmRlYnVnKCdTdGFydCBwbGF5aW5nIGZyb20gcG9zaXRpb246ICcgKyB0aGlzLnNvdW5kLmN1cnJlbnRUaW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmxvYWQgcHJldmlvdXNseSBsb2FkZWQgYXVkaW8uXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLl9pbml0UGxheWVyKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBwbGF5YmFjayBvZiBhdWRpby5cbiAgICovXG4gIHN0b3AoKSB7XG4gICAgLy8gVGhlIEhUTUw1IGF1ZGlvIHBsYXllciBvbmx5IGhhcyBhIHBhdXNlKCksIG5vIHN0b3AoKS5cbiAgICAvLyBUbyBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIHR3bywgc2V0IGEgZmxhZy5cbiAgICB0aGlzLnNvdW5kLnBhdXNlKCk7XG4gICAgdGhpcy5zb3VuZC5jdXJyZW50VGltZSA9IDA7XG4gIH1cblxuICAvKipcbiAgICogUGF1c2UgcGxheWJhY2sgb2YgYXVkaW8uXG4gICAqL1xuICBwYXVzZSgpIHtcbiAgICB0aGlzLl9wYXVzZUlzU3RvcCA9IHRydWU7XG4gICAgdGhpcy5zb3VuZC5wYXVzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHByZWxvYWRpbmcgYXVkaW8uXG4gICAqL1xuICBwcmVsb2FkKCkge1xuICAgIC8vIEluIGNhc2UgdGhlIGF1ZGlvIHdhc24ndCBhbHJlYWR5IHByZWxvYWRlZCwgZG8gaXQgbm93LlxuICAgIGlmICh0aGlzLnNvdW5kLnByZWxvYWQgIT09ICdhdXRvJykge1xuICAgICAgY29uc29sZS5pbmZvKCdTdGFydCBwcmVsb2FkaW5nIGF1ZGlvLicpO1xuICAgICAgdGhpcy5zb3VuZC5wcmVsb2FkID0gJ2F1dG8nO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIFN0YXJ0IHBsYXlpbmcgYXVkaW8gYXQgdGhlIGdpdmVuIG9mZnNldC5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBlcmNlbnRhZ2UgLSBTdGFydCBhdCB0aGlzIHBlcmNlbnRhZ2UgKDAuLjEwMCkgb2YgdGhlIGF1ZGlvIHN0cmVhbS5cbiAgICovXG4gIHNjcnViKHBlcmNlbnRhZ2UpIHtcbiAgICAvLyBJbiBjYXNlIHRoZSBhdWRpbyB3YXNuJ3QgYWxyZWFkeSBwcmVsb2FkZWQsIGRvIGl0IG5vdy5cbiAgICBpZiAodGhpcy5zb3VuZC5yZWFkeVN0YXRlIDwgdGhpcy5zb3VuZC5IQVZFX01FVEFEQVRBKSB7XG4gICAgICB0aGlzLnByZWxvYWQoKTtcbiAgICAgIGNvbnNvbGUud2FybignU2NydWJiaW5nIG5vdCBwb3NzaWJsZS4gQXVkaW8gd2FzIG5vdCB5ZXQgbG9hZGVkLiAnICtcbiAgICAgICAgJ1RyeSBhZ2Fpbi4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdUaW1lID0gdGhpcy5zb3VuZC5kdXJhdGlvbiAvIDEwMCAqIHBlcmNlbnRhZ2U7XG4gICAgY29uc29sZS5sb2coJ01vdmluZyBhdWRpbyBwb3NpdGlvbiB0bzogJyArIHBlcmNlbnRhZ2UgKyAnJTogJyArXG4gICAgICBuZXdUaW1lICsgJ3Mgb2YgdG90YWwgcGxheWluZyB0aW1lOiAnICsgdGhpcy5zb3VuZC5kdXJhdGlvbik7XG4gICAgdGhpcy5zb3VuZC5jdXJyZW50VGltZSA9IG5ld1RpbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGVyY2VudGFnZSBvZiB3aGljaCB0aGUgYnVmZmVyIGlzIGZpbGxlZC5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gUGVyY2VudGFnZSBvZiBidWZmZXIgZmlsbC5cbiAgICovXG4gIGdldEJ1ZmZlckZpbGwoKSB7XG4gICAgaWYgKHRoaXMuc291bmQuYnVmZmVyZWQgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy5zb3VuZC5idWZmZXJlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIE5vdGhpbmcgYnVmZmVyZWQgeWV0LlxuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgLy8gVGhlIGZhY3QgdGhhdCB0aGVyZSdzIG5vdCBvbmUgYnVmZmVyIHNlZ21lbnQgaXMgaWdub3JlZCBoZXJlLlxuICAgIC8vIFRydWVseSByZXByZXNlbnRpbmcgdGhlIGJ1ZmZlcmVkIHN0YXRlIHJlcXVpcmVzIG11bHRpcGxlXG4gICAgLy8gbG9hZGluZyBiYXJzLlxuICAgIC8vIFVzdWFsbHksIHdoZW4gdXNlciBkaWRuJ3Qgc2VlayB5ZXQsIHRoZXJlIGFyZSB0d28gc2VnbWVudHM6XG4gICAgLy8gR290IHNlZ21lbnQgZnJvbTogMCB0bzogMTg3LjYzOTk5OTM4OTY0ODQ0XG4gICAgLy8gR290IHNlZ21lbnQgZnJvbTogMjIyLjQ0NzAwNjIyNTU4NTk0IHRvOiAyMjguMTE0MDg5OTY1ODIwM1xuICAgIC8vIFRoZSBsYXR0ZXIgaXMgZ2FpbmVkIHdoZW4gdGhlIEhUTUw1IGF1ZGlvIGNvbXBvbmVudCB0cmllcyB0byBmaW5kXG4gICAgLy8gdGhlIHRvdGFsIGF1ZGlvIGR1cmF0aW9uLlxuICAgIC8vIE1vcmUgaW5mbzpcbiAgICAvLyBodHRwOi8vaHRtbDVkb2N0b3IuY29tL2h0bWw1LWF1ZGlvLXRoZS1zdGF0ZS1vZi1wbGF5LyN0aW1lLXJhbmdlc1xuICAgIGxldCBwcm9iYWJsZUVuZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNvdW5kLmJ1ZmZlcmVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzdGFydCA9IHRoaXMuc291bmQuYnVmZmVyZWQuc3RhcnQoaSk7XG4gICAgICBjb25zdCBlbmQgPSB0aGlzLnNvdW5kLmJ1ZmZlcmVkLmVuZChpKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdHb3Qgc2VnbWVudCBmcm9tOiAnICsgc3RhcnQgKyAnIHRvOiAnICsgZW5kKTtcbiAgICAgIC8vIE9mdGVuLCB0aGUgc2VnbWVudCB0aGF0IHN0YXJ0cyBmcm9tIDAga2VlcHMgZ3Jvd2luZyBhbmRcbiAgICAgIC8vIGluZGljYXRlcyAtbW9zdCBsaWtlbHktIHRoZSBiaWdnZXN0IGJ1ZmZlci5cbiAgICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgICBwcm9iYWJsZUVuZCA9IGVuZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSb3VuZCB1cCxzbyB0aGUgYnVmZmVyIHdvbid0IGdldCBzdHVjayBvbiA5OSUgd2hlblxuICAgIC8vIGR1cmF0aW9uIGFuZCBidWZmZXIgYXJlIGVxdWFsLCBleGNlcHQgZm9yIHNvbWUgZmFyIGRlY2ltYWwuXG4gICAgY29uc3QgbG9hZGVkID0gTWF0aC5yb3VuZChwcm9iYWJsZUVuZCAqIDEwMCAvIHRoaXMuc291bmQuZHVyYXRpb24pO1xuICAgIGNvbnNvbGUubG9nKCdCdWZmZXIgZmlsbGVkIHRvICcgKyBsb2FkZWQgKyAnJScpO1xuICAgIHJldHVybiBsb2FkZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBwbGF5aW5nIHRpbWUgYXMgb2Zmc2V0IGluIHNlY29uZHMgZnJvbSB0aGUgc3RhcnQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRpbWUgaW4gc2Vjb25kcyBhcyBvZmZzZXQgZnJvbSB0aGUgc3RhcnQuXG4gICAqL1xuICBnZXRDdXJyZW50VGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VuZC5jdXJyZW50VGltZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0b3RhbCBkdXJhdGlvbiBpbiBzZWNvbmRzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaW1lIGluIHNlY29uZHMgb2YgZnJhZ21lbnQgZHVyYXRpb24uIDAgaWYgbm8gYXVkaW8gaXMgbG9hZGVkLlxuICAgKi9cbiAgZ2V0RHVyYXRpb24oKSB7XG4gICAgbGV0IGR1cmF0aW9uID0gdGhpcy5zb3VuZC5kdXJhdGlvbjtcbiAgICAvLyBXaGVuIG5vIGF1ZGlvIGlzIGxvYWRlZCwgdGhlIGR1cmF0aW9uIG1heSBiZSBOYU5cbiAgICBpZiAoIWR1cmF0aW9uKSB7XG4gICAgICBkdXJhdGlvbiA9IDA7XG4gICAgfVxuICAgIHJldHVybiBkdXJhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHN0YXRlIG9mIHRoZSBwbGF5ZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIHdoZW4gcGxheWVyIGlzIGN1cnJlbnRseSBwbGF5aW5nLiBGYWxzZSB3aGVuIHBhdXNlZCBvciBzdG9wcGVkLlxuICAgKi9cbiAgaXNQbGF5aW5nKCkge1xuICAgIHJldHVybiAhdGhpcy5zb3VuZC5wYXVzZWQ7XG4gIH1cblxuICBzZXRQbGF5YmFja1JhdGUocmF0ZSkge1xuICAgIHRoaXMuc291bmQucGxheWJhY2tSYXRlID0gcmF0ZTtcbiAgfVxuXG4gIGdldFBsYXliYWNrUmF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VuZC5wbGF5YmFja1JhdGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyByZWFkeSBzdGF0ZSBvZiB0aGUgcGxheWVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHBsYXllciBpcyByZWFkeSB0byBzdGFydCBsb2FkaW5nIGRhdGEgb3IgcGxheS4gRmFsc2Ugd2hlbiBubyBhdWRpbyBpcyBsb2FkZWRcbiAgICogb3IgcHJlcGFyaW5nLlxuICAgKi9cbiAgY2FuUGxheSgpIHtcbiAgICAvLyBFaXRoZXIgdGhlIHBsYXllciBpcyBpbiBhIHZhbGlkIHJlYWR5U3RhdGUgKHByZWxvYWRlZCksIG9yXG4gICAgLy8gdGhlIHBsYXllciBoYXMgYSBzb3VyY2UgYXR0YWNoZWQgYW5kIGRvZXNuJ3Qgc2hvdyBhbnkgbG9hZGluZyBlcnJvciAobm9uLXByZWxvYWRlZCkuXG4gICAgcmV0dXJuIHRoaXMuc291bmQucmVhZHlTdGF0ZSA+PSB0aGlzLnNvdW5kLkhBVkVfTUVUQURBVEEgfHxcbiAgICAgIHRoaXMuc291bmQuc3JjICYmICF0aGlzLnNvdW5kLmVycm9yO1xuICB9XG5cbiAgc2V0QXVkaW9Wb2x1bWUodm9sdW1lKSB7XG4gICAgdGhpcy5zb3VuZC52b2x1bWUgPSB2b2x1bWU7XG4gIH1cblxuICBnZXRBdWRpb1ZvbHVtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VuZC52b2x1bWU7XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby93ZWItYXVkaW8tcGxheWVyLmpzIl0sIm5hbWVzIjpbIldlYkF1ZGlvUGxheWVyIiwib3B0aW9ucyIsIl9zZXR0aW5ncyIsIk9iamVjdCIsImFzc2lnbiIsIl9pbml0UGxheWVyIiwic291bmQiLCJ3aW5kb3ciLCJBdWRpbyIsIl9wYXVzZUlzU3RvcCIsInNlbGYiLCJhZGRFdmVudExpc3RlbmVyIiwicGxheWluZ0NiIiwidGltZXVwZGF0ZUNiIiwiZHVyYXRpb25jaGFuZ2VDYiIsImNhbnBsYXlDYiIsImVuZGVkQ2IiLCJwYXVzZUNiIiwic3RvcHBlZENiIiwicGxheWJhY2tTdG9wcGVkQ2IiLCJwcm9ncmVzc0NiIiwiZSIsInRhcmdldCIsImVycm9yIiwiY29kZSIsIk1FRElBX0VSUl9BQk9SVEVEIiwiY29uc29sZSIsIk1FRElBX0VSUl9ORVRXT1JLIiwiTUVESUFfRVJSX0RFQ09ERSIsIk1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRCIsImVycm9yQ2IiLCJsb2FkIiwidXJsIiwicHJlbG9hZCIsImxvYWRlZENiIiwidW5kZWZpbmVkIiwiYXV0b2J1ZmZlciIsIkJvb2xlYW4iLCJsb2ciLCJkdXJhdGlvbiIsInNyYyIsInBsYXkiLCJwb3NpdGlvbiIsInJlYWR5U3RhdGUiLCJIQVZFX01FVEFEQVRBIiwid2FybiIsImRlYnVnIiwiY3VycmVudFRpbWUiLCJyZXNldCIsInN0b3AiLCJwYXVzZSIsImluZm8iLCJzY3J1YiIsInBlcmNlbnRhZ2UiLCJuZXdUaW1lIiwiZ2V0QnVmZmVyRmlsbCIsImJ1ZmZlcmVkIiwibGVuZ3RoIiwicHJvYmFibGVFbmQiLCJpIiwic3RhcnQiLCJlbmQiLCJsb2FkZWQiLCJNYXRoIiwicm91bmQiLCJnZXRDdXJyZW50VGltZSIsImdldER1cmF0aW9uIiwiaXNQbGF5aW5nIiwicGF1c2VkIiwic2V0UGxheWJhY2tSYXRlIiwicmF0ZSIsInBsYXliYWNrUmF0ZSIsImdldFBsYXliYWNrUmF0ZSIs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dGVudCI6WyIvKipcbiAqIEB0aXRsZSBJVFNMYW5ndWFnZSBKYXZhc2NyaXB0IEF1ZGlvXG4gKiBAb3ZlcnZpZXcgVGhpcyBpcyBwYXJ0IG9mIHRoZSBJVFNMYW5ndWFnZSBKYXZhc2NyaXB0IFNESyB0byBwZXJmb3JtIGF1ZGlvIHJlbGF0ZWQgZnVuY3Rpb25zLlxuICogQGNvcHlyaWdodCAoYykgMjAxNCBJVFNMYW5ndWFnZVxuICogQGxpY2Vuc2UgTUlUXG4gKiBAYXV0aG9yIGQtY2VudHJhbGl6ZVxuICpcbiAqIFRoaXMgY2xhc3MgZmlyZXMgdGhlIHNhbWUgZXZlbnRzIGFzIHRoZSBIVE1MNSBBdWRpbyBkb2VzLiB7QGxpbmsgaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL3RhZ3MvcmVmX2F2X2RvbS5hc3B9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYkF1ZGlvUGxheWVyIHtcbiAgLyoqXG4gICAqIElUU0xhbmd1YWdlIFdlYkF1ZGlvUGxheWVyIG5vbi1ncmFwaGljYWwgY29tcG9uZW50LlxuICAgKlxuICAgKiBUaGlzIHBsYXllciB1c2VzIHRoZSBIVE1MNSBBdWRpbyBjb21wb25lbnQgZm9yIHBsYXliYWNrLlxuICAgKlxuICAgKiBAcGFyYW0gez9PYmplY3R9IG9wdGlvbnMgLSBPdmVycmlkZSBhbnkgb2YgdGhlIGRlZmF1bHQgc2V0dGluZ3MuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgdGhpcy5fc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKTtcblxuICAgIHRoaXMuX2luaXRQbGF5ZXIoKTtcbiAgfVxuXG4gIF9pbml0UGxheWVyKCkge1xuICAgIHRoaXMuc291bmQgPSBuZXcgd2luZG93LkF1ZGlvKCk7XG4gICAgdGhpcy5fcGF1c2VJc1N0b3AgPSBmYWxzZTtcblxuICAgIC8vIFRoZSBpdHMuQXVkaW9QbGF5ZXIgQVBJIGlzIGJhc2VkIHVwb24gdGhlIHNhbWUgQVBJIGNhbGxzIGFzIHRoZVxuICAgIC8vIEhUTUw1IEF1ZGlvIGVsZW1lbnQgaXRzZWxmLCB0aGVyZWZvcmUsIGp1c3QgYnViYmxlIHVwIGFsbCBldmVudHMuXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLnNvdW5kLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCAoKSA9PiB7XG4gICAgICBpZiAoc2VsZi5fc2V0dGluZ3MucGxheWluZ0NiKSB7XG4gICAgICAgIHNlbGYuX3NldHRpbmdzLnBsYXlpbmdDYigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zb3VuZC5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgKCkgPT4ge1xuICAgICAgaWYgKHNlbGYuX3NldHRpbmdzLnRpbWV1cGRhdGVDYikge1xuICAgICAgICBzZWxmLl9zZXR0aW5ncy50aW1ldXBkYXRlQ2IoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc291bmQuYWRkRXZlbnRMaXN0ZW5lcignZHVyYXRpb25jaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBpZiAoc2VsZi5fc2V0dGluZ3MuZHVyYXRpb25jaGFuZ2VDYikge1xuICAgICAgICBzZWxmLl9zZXR0aW5ncy5kdXJhdGlvbmNoYW5nZUNiKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnNvdW5kLmFkZEV2ZW50TGlzdGVuZXIoJ2NhbnBsYXknLCAoKSA9PiB7XG4gICAgICBpZiAoc2VsZi5fc2V0dGluZ3MuY2FucGxheUNiKSB7XG4gICAgICAgIHNlbGYuX3NldHRpbmdzLmNhbnBsYXlDYigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zb3VuZC5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsICgpID0+IHtcbiAgICAgIGlmIChzZWxmLl9zZXR0aW5ncy5lbmRlZENiKSB7XG4gICAgICAgIHNlbGYuX3NldHRpbmdzLmVuZGVkQ2IoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc291bmQuYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCAoKSA9PiB7XG4gICAgICAvLyBUaGUgSFRNTDUgYXVkaW8gcGxheWVyIG9ubHkgaGFzIGEgcGF1c2UoKSwgbm8gc3RvcCgpLlxuICAgICAgLy8gVG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZSB0d28sIGEgZmxhZyBpcyBzZXQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gZXhwbGljaXRseSBzdG9wcGVkIChub3QgcGF1c2VkKSB0aGUgYXVkaW8uXG4gICAgICBpZiAoc2VsZi5fcGF1c2VJc1N0b3AgPT09IHRydWUpIHtcbiAgICAgICAgc2VsZi5fcGF1c2VJc1N0b3AgPSBmYWxzZTtcbiAgICAgICAgaWYgKHNlbGYuX3NldHRpbmdzLnBhdXNlQ2IpIHtcbiAgICAgICAgICBzZWxmLl9zZXR0aW5ncy5wYXVzZUNiKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoc2VsZi5fc2V0dGluZ3Muc3RvcHBlZENiKSB7XG4gICAgICAgIHNlbGYuX3NldHRpbmdzLnN0b3BwZWRDYigpO1xuICAgICAgfVxuICAgICAgaWYgKHNlbGYuX3NldHRpbmdzLnBsYXliYWNrU3RvcHBlZENiKSB7XG4gICAgICAgIHNlbGYuX3NldHRpbmdzLnBsYXliYWNrU3RvcHBlZENiKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnNvdW5kLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgKCkgPT4ge1xuICAgICAgaWYgKHNlbGYuX3NldHRpbmdzLnByb2dyZXNzQ2IpIHtcbiAgICAgICAgc2VsZi5fc2V0dGluZ3MucHJvZ3Jlc3NDYigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zb3VuZC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGUgPT4ge1xuICAgICAgc3dpdGNoIChlLnRhcmdldC5lcnJvci5jb2RlKSB7XG4gICAgICAgIGNhc2UgZS50YXJnZXQuZXJyb3IuTUVESUFfRVJSX0FCT1JURUQ6XG4gICAgICAgICAgY29uc29sZS5lcnJvcignWW91IGFib3J0ZWQgdGhlIHBsYXliYWNrLicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGUudGFyZ2V0LmVycm9yLk1FRElBX0VSUl9ORVRXT1JLOlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAnQSBuZXR3b3JrIGVycm9yIGNhdXNlZCB0aGUgYXVkaW8gZG93bmxvYWQgdG8gZmFpbC4nKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBlLnRhcmdldC5lcnJvci5NRURJQV9FUlJfREVDT0RFOlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAnVGhlIGF1ZGlvIHBsYXliYWNrIHdhcyBhYm9ydGVkIGR1ZSB0byBhIGNvcnJ1cHRpb24gJyArXG4gICAgICAgICAgJ3Byb2JsZW0gb3IgYmVjYXVzZSB0aGUgbWVkaWEgdXNlZCBmZWF0dXJlcyB5b3VyICcgK1xuICAgICAgICAgICdicm93c2VyIGRpZCBub3Qgc3VwcG9ydC4nKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBlLnRhcmdldC5lcnJvci5NRURJQV9FUlJfU1JDX05PVF9TVVBQT1JURUQ6XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICdUaGUgYXVkaW8gY291bGQgbm90IGJlIGxvYWRlZCwgZWl0aGVyIGJlY2F1c2UgdGhlICcgK1xuICAgICAgICAgICdzZXJ2ZXIgb3IgbmV0d29yayBmYWlsZWQgb3IgYmVjYXVzZSB0aGUgZm9ybWF0IGlzICcgK1xuICAgICAgICAgICdub3Qgc3VwcG9ydGVkLicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQuJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoc2VsZi5fc2V0dGluZ3MuZXJyb3JDYikge1xuICAgICAgICBzZWxmLl9zZXR0aW5ncy5lcnJvckNiKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBQcmVsb2FkIGF1ZGlvIGZyb20gYW4gVVJMLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVGhlIFVSTCB0aGF0IGNvbnRhaW5zIHRoZSBhdWRpby5cbiAgICogQHBhcmFtIHtib29sZWFufSBbcHJlbG9hZD10cnVlXSAtIFRyeSBwcmVsb2FkaW5nIG1ldGFkYXRhIGFuZCBwb3NzaWJsZSBzb21lIGF1ZGlvIChkZWZhdWx0KS5cbiAgICogU2V0IHRvIGZhbHNlIHRvIG5vdCBkb3dubG9hZCBhbnl0aGluZyB1bnRpbCBwbGF5aW5nLlxuICAgKiBAcGFyYW0gez9GdW5jdGlvbn0gbG9hZGVkQ2IgLSBUaGUgY2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIHdoZW4gdGhlIGR1cmF0aW9uIG9mIHRoZSBhdWRpbyBmaWxlXG4gICAqIGlzIGZpcnN0IGtub3duLlxuICAgKi9cbiAgbG9hZCh1cmwsIHByZWxvYWQsIGxvYWRlZENiKSB7XG4gICAgcHJlbG9hZCA9IHByZWxvYWQgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBwcmVsb2FkO1xuXG4gICAgLy8gQXV0b21hdGljYWxseSBiZWdpbiBidWZmZXJpbmcgdGhlIGZpbGUsIGV2ZW4gaWYgYXV0b3BsYXkgaXMgb2ZmLlxuICAgIHRoaXMuc291bmQuYXV0b2J1ZmZlciA9IEJvb2xlYW4ocHJlbG9hZCk7XG5cbiAgICAvLyBQcmVsb2FkaW5nIG9wdGlvbnM6XG4gICAgLy8gbm9uZSAtIERvIG5vdCBwcmVsb2FkIGFueSBtZWRpYS5cbiAgICAvLyBXYWl0IGZvciBhIHBsYXkgZXZlbnQgYmVmb3JlIGRvd25sb2FkaW5nIGFueXRoaW5nLlxuICAgIC8vIG1ldGFkYXRhIC0gUHJlbG9hZCBqdXN0IHRoZSBtZXRhZGF0YS4gR3JhYiB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2ZcbiAgICAvLyB0aGUgZmlsZSB2aWEgcmFuZ2UtcmVxdWVzdCBhbmQgZGV0ZXJtaW5lIHRoZSBkdXJhdGlvbi5cbiAgICAvLyBhdXRvIC0gUHJlbG9hZCB0aGUgd2hvbGUgZmlsZS4gR3JhYiB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2YgdGhlXG4gICAgLy8gZmlsZSB0byBkZXRlcm1pbmUgZHVyYXRpb24sIHRoZW4gc2VlayBiYWNrIHRvIHRoZSBzdGFydFxuICAgIC8vIGFnYWluIGZvciB0aGUgcHJlbG9hZCBwcm9wZXIuXG4gICAgdGhpcy5zb3VuZC5wcmVsb2FkID0gcHJlbG9hZCA/ICdhdXRvJyA6ICdub25lJztcblxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmIChsb2FkZWRDYikge1xuICAgICAgdGhpcy5zb3VuZC5hZGRFdmVudExpc3RlbmVyKCdkdXJhdGlvbmNoYW5nZScsICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0R1cmF0aW9uIGNoYW5nZSBmb3IgJyArIHVybCArICcgdG8gOiAnICtcbiAgICAgICAgICBzZWxmLnNvdW5kLmR1cmF0aW9uKTtcbiAgICAgICAgbG9hZGVkQ2Ioc2VsZi5zb3VuZCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNvdW5kLnNyYyA9IHVybDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9yIGNvbnRpbnVlIHBsYXliYWNrIG9mIGF1ZGlvLlxuICAgKlxuICAgKiBAcGFyYW0gez9udW1iZXJ9IHBvc2l0aW9uIC0gV2hlbiBwb3NpdGlvbiBpcyBnaXZlbiwgc3RhcnQgcGxheWluZyBmcm9tIHRoaXMgcG9zaXRpb24gKHNlY29uZHMpLlxuICAgKi9cbiAgcGxheShwb3NpdGlvbikge1xuICAgIGlmIChwb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5zb3VuZC5yZWFkeVN0YXRlIDwgdGhpcy5zb3VuZC5IQVZFX01FVEFEQVRBKSB7XG4gICAgICAgIC8vIEluIGNhc2UgdGhlIGF1ZGlvIHdhc24ndCBhbHJlYWR5IHByZWxvYWRlZCwgZG8gaXQgbm93LlxuICAgICAgICB0aGlzLnNvdW5kLnByZWxvYWQgPSAnYXV0byc7XG4gICAgICAgIGNvbnNvbGUud2FybignUGxheWluZyBmcm9tIGEgZ2l2ZW4gcG9zaXRpb24gaXMgbm90IHBvc3NpYmxlLiAnICtcbiAgICAgICAgICAnQXVkaW8gd2FzIG5vdCB5ZXQgbG9hZGVkLiBUcnkgYWdhaW4uJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdTY3J1YiBwb3NpdGlvbiB0bzogJyArIHBvc2l0aW9uKTtcbiAgICAgICAgdGhpcy5zb3VuZC5jdXJyZW50VGltZSA9IHBvc2l0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNvdW5kLnBsYXkoKTtcbiAgICBjb25zb2xlLmRlYnVnKCdTdGFydCBwbGF5aW5nIGZyb20gcG9zaXRpb246ICcgKyB0aGlzLnNvdW5kLmN1cnJlbnRUaW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmxvYWQgcHJldmlvdXNseSBsb2FkZWQgYXVkaW8uXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLl9pbml0UGxheWVyKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBwbGF5YmFjayBvZiBhdWRpby5cbiAgICovXG4gIHN0b3AoKSB7XG4gICAgLy8gVGhlIEhUTUw1IGF1ZGlvIHBsYXllciBvbmx5IGhhcyBhIHBhdXNlKCksIG5vIHN0b3AoKS5cbiAgICAvLyBUbyBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIHR3bywgc2V0IGEgZmxhZy5cbiAgICB0aGlzLnNvdW5kLnBhdXNlKCk7XG4gICAgdGhpcy5zb3VuZC5jdXJyZW50VGltZSA9IDA7XG4gIH1cblxuICAvKipcbiAgICogUGF1c2UgcGxheWJhY2sgb2YgYXVkaW8uXG4gICAqL1xuICBwYXVzZSgpIHtcbiAgICB0aGlzLl9wYXVzZUlzU3RvcCA9IHRydWU7XG4gICAgdGhpcy5zb3VuZC5wYXVzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHByZWxvYWRpbmcgYXVkaW8uXG4gICAqL1xuICBwcmVsb2FkKCkge1xuICAgIC8vIEluIGNhc2UgdGhlIGF1ZGlvIHdhc24ndCBhbHJlYWR5IHByZWxvYWRlZCwgZG8gaXQgbm93LlxuICAgIGlmICh0aGlzLnNvdW5kLnByZWxvYWQgIT09ICdhdXRvJykge1xuICAgICAgY29uc29sZS5pbmZvKCdTdGFydCBwcmVsb2FkaW5nIGF1ZGlvLicpO1xuICAgICAgdGhpcy5zb3VuZC5wcmVsb2FkID0gJ2F1dG8nO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIFN0YXJ0IHBsYXlpbmcgYXVkaW8gYXQgdGhlIGdpdmVuIG9mZnNldC5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBlcmNlbnRhZ2UgLSBTdGFydCBhdCB0aGlzIHBlcmNlbnRhZ2UgKDAuLjEwMCkgb2YgdGhlIGF1ZGlvIHN0cmVhbS5cbiAgICovXG4gIHNjcnViKHBlcmNlbnRhZ2UpIHtcbiAgICAvLyBJbiBjYXNlIHRoZSBhdWRpbyB3YXNuJ3QgYWxyZWFkeSBwcmVsb2FkZWQsIGRvIGl0IG5vdy5cbiAgICBpZiAodGhpcy5zb3VuZC5yZWFkeVN0YXRlIDwgdGhpcy5zb3VuZC5IQVZFX01FVEFEQVRBKSB7XG4gICAgICB0aGlzLnByZWxvYWQoKTtcbiAgICAgIGNvbnNvbGUud2FybignU2NydWJiaW5nIG5vdCBwb3NzaWJsZS4gQXVkaW8gd2FzIG5vdCB5ZXQgbG9hZGVkLiAnICtcbiAgICAgICAgJ1RyeSBhZ2Fpbi4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdUaW1lID0gdGhpcy5zb3VuZC5kdXJhdGlvbiAvIDEwMCAqIHBlcmNlbnRhZ2U7XG4gICAgY29uc29sZS5sb2coJ01vdmluZyBhdWRpbyBwb3NpdGlvbiB0bzogJyArIHBlcmNlbnRhZ2UgKyAnJTogJyArXG4gICAgICBuZXdUaW1lICsgJ3Mgb2YgdG90YWwgcGxheWluZyB0aW1lOiAnICsgdGhpcy5zb3VuZC5kdXJhdGlvbik7XG4gICAgdGhpcy5zb3VuZC5jdXJyZW50VGltZSA9IG5ld1RpbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGVyY2VudGFnZSBvZiB3aGljaCB0aGUgYnVmZmVyIGlzIGZpbGxlZC5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gUGVyY2VudGFnZSBvZiBidWZmZXIgZmlsbC5cbiAgICovXG4gIGdldEJ1ZmZlckZpbGwoKSB7XG4gICAgaWYgKHRoaXMuc291bmQuYnVmZmVyZWQgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy5zb3VuZC5idWZmZXJlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIE5vdGhpbmcgYnVmZmVyZWQgeWV0LlxuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgLy8gVGhlIGZhY3QgdGhhdCB0aGVyZSdzIG5vdCBvbmUgYnVmZmVyIHNlZ21lbnQgaXMgaWdub3JlZCBoZXJlLlxuICAgIC8vIFRydWVseSByZXByZXNlbnRpbmcgdGhlIGJ1ZmZlcmVkIHN0YXRlIHJlcXVpcmVzIG11bHRpcGxlXG4gICAgLy8gbG9hZGluZyBiYXJzLlxuICAgIC8vIFVzdWFsbHksIHdoZW4gdXNlciBkaWRuJ3Qgc2VlayB5ZXQsIHRoZXJlIGFyZSB0d28gc2VnbWVudHM6XG4gICAgLy8gR290IHNlZ21lbnQgZnJvbTogMCB0bzogMTg3LjYzOTk5OTM4OTY0ODQ0XG4gICAgLy8gR290IHNlZ21lbnQgZnJvbTogMjIyLjQ0NzAwNjIyNTU4NTk0IHRvOiAyMjguMTE0MDg5OTY1ODIwM1xuICAgIC8vIFRoZSBsYXR0ZXIgaXMgZ2FpbmVkIHdoZW4gdGhlIEhUTUw1IGF1ZGlvIGNvbXBvbmVudCB0cmllcyB0byBmaW5kXG4gICAgLy8gdGhlIHRvdGFsIGF1ZGlvIGR1cmF0aW9uLlxuICAgIC8vIE1vcmUgaW5mbzpcbiAgICAvLyBodHRwOi8vaHRtbDVkb2N0b3IuY29tL2h0bWw1LWF1ZGlvLXRoZS1zdGF0ZS1vZi1wbGF5LyN0aW1lLXJhbmdlc1xuICAgIGxldCBwcm9iYWJsZUVuZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNvdW5kLmJ1ZmZlcmVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzdGFydCA9IHRoaXMuc291bmQuYnVmZmVyZWQuc3RhcnQoaSk7XG4gICAgICBjb25zdCBlbmQgPSB0aGlzLnNvdW5kLmJ1ZmZlcmVkLmVuZChpKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdHb3Qgc2VnbWVudCBmcm9tOiAnICsgc3RhcnQgKyAnIHRvOiAnICsgZW5kKTtcbiAgICAgIC8vIE9mdGVuLCB0aGUgc2VnbWVudCB0aGF0IHN0YXJ0cyBmcm9tIDAga2VlcHMgZ3Jvd2luZyBhbmRcbiAgICAgIC8vIGluZGljYXRlcyAtbW9zdCBsaWtlbHktIHRoZSBiaWdnZXN0IGJ1ZmZlci5cbiAgICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgICBwcm9iYWJsZUVuZCA9IGVuZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSb3VuZCB1cCxzbyB0aGUgYnVmZmVyIHdvbid0IGdldCBzdHVjayBvbiA5OSUgd2hlblxuICAgIC8vIGR1cmF0aW9uIGFuZCBidWZmZXIgYXJlIGVxdWFsLCBleGNlcHQgZm9yIHNvbWUgZmFyIGRlY2ltYWwuXG4gICAgY29uc3QgbG9hZGVkID0gTWF0aC5yb3VuZChwcm9iYWJsZUVuZCAqIDEwMCAvIHRoaXMuc291bmQuZHVyYXRpb24pO1xuICAgIGNvbnNvbGUubG9nKCdCdWZmZXIgZmlsbGVkIHRvICcgKyBsb2FkZWQgKyAnJScpO1xuICAgIHJldHVybiBsb2FkZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBwbGF5aW5nIHRpbWUgYXMgb2Zmc2V0IGluIHNlY29uZHMgZnJvbSB0aGUgc3RhcnQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRpbWUgaW4gc2Vjb25kcyBhcyBvZmZzZXQgZnJvbSB0aGUgc3RhcnQuXG4gICAqL1xuICBnZXRDdXJyZW50VGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VuZC5jdXJyZW50VGltZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0b3RhbCBkdXJhdGlvbiBpbiBzZWNvbmRzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaW1lIGluIHNlY29uZHMgb2YgZnJhZ21lbnQgZHVyYXRpb24uIDAgaWYgbm8gYXVkaW8gaXMgbG9hZGVkLlxuICAgKi9cbiAgZ2V0RHVyYXRpb24oKSB7XG4gICAgbGV0IGR1cmF0aW9uID0gdGhpcy5zb3VuZC5kdXJhdGlvbjtcbiAgICAvLyBXaGVuIG5vIGF1ZGlvIGlzIGxvYWRlZCwgdGhlIGR1cmF0aW9uIG1heSBiZSBOYU5cbiAgICBpZiAoIWR1cmF0aW9uKSB7XG4gICAgICBkdXJhdGlvbiA9IDA7XG4gICAgfVxuICAgIHJldHVybiBkdXJhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHN0YXRlIG9mIHRoZSBwbGF5ZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIHdoZW4gcGxheWVyIGlzIGN1cnJlbnRseSBwbGF5aW5nLiBGYWxzZSB3aGVuIHBhdXNlZCBvciBzdG9wcGVkLlxuICAgKi9cbiAgaXNQbGF5aW5nKCkge1xuICAgIHJldHVybiAhdGhpcy5zb3VuZC5wYXVzZWQ7XG4gIH1cblxuICBzZXRQbGF5YmFja1JhdGUocmF0ZSkge1xuICAgIHRoaXMuc291bmQucGxheWJhY2tSYXRlID0gcmF0ZTtcbiAgfVxuXG4gIGdldFBsYXliYWNrUmF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VuZC5wbGF5YmFja1JhdGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyByZWFkeSBzdGF0ZSBvZiB0aGUgcGxheWVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHBsYXllciBpcyByZWFkeSB0byBzdGFydCBsb2FkaW5nIGRhdGEgb3IgcGxheS4gRmFsc2Ugd2hlbiBubyBhdWRpbyBpcyBsb2FkZWRcbiAgICogb3IgcHJlcGFyaW5nLlxuICAgKi9cbiAgY2FuUGxheSgpIHtcbiAgICAvLyBFaXRoZXIgdGhlIHBsYXllciBpcyBpbiBhIHZhbGlkIHJlYWR5U3RhdGUgKHByZWxvYWRlZCksIG9yXG4gICAgLy8gdGhlIHBsYXllciBoYXMgYSBzb3VyY2UgYXR0YWNoZWQgYW5kIGRvZXNuJ3Qgc2hvdyBhbnkgbG9hZGluZyBlcnJvciAobm9uLXByZWxvYWRlZCkuXG4gICAgcmV0dXJuIHRoaXMuc291bmQucmVhZHlTdGF0ZSA+PSB0aGlzLnNvdW5kLkhBVkVfTUVUQURBVEEgfHxcbiAgICAgIHRoaXMuc291bmQuc3JjICYmICF0aGlzLnNvdW5kLmVycm9yO1xuICB9XG5cbiAgc2V0QXVkaW9Wb2x1bWUodm9sdW1lKSB7XG4gICAgdGhpcy5zb3VuZC52b2x1bWUgPSB2b2x1bWU7XG4gIH1cblxuICBnZXRBdWRpb1ZvbHVtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VuZC52b2x1bWU7XG4gIH1cbn1cbiJdfQ== |
@@ -147,2 +147,2 @@ 'use strict'; | ||
exports.default = WebAudioRecorder; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby93ZWItYXVkaW8tcmVjb3JkZXIuanMiXSwibmFtZXMiOlsiV2ViQXVkaW9SZWNvcmRlciIsInNvdXJjZSIsInN0cmVhbWluZ0NhbGxiYWNrIiwicGFja2VyIiwicmVjb3JkaW5nIiwiY29udGV4dCIsInJlY29yZGVkU2FtcGxlUmF0ZSIsInNhbXBsZVJhdGUiLCJjaGFubmVscyIsImNvbnNvbGUiLCJsb2ciLCJnZXRBdWRpb1NwZWNzIiwiYXVkaW9QYXJhbWV0ZXJzIiwiaW5pdCIsImJ1ZmZlclNpemUiLCJyZWNvcmRlciIsImNyZWF0ZVNjcmlwdFByb2Nlc3NvciIsIl9yZWNvcmRlciIsInNlbGYiLCJvbmF1ZGlvcHJvY2VzcyIsImUiLCJsZWZ0IiwiaW5wdXRCdWZmZXIiLCJnZXRDaGFubmVsRGF0YSIsInJpZ2h0IiwibGVmdENsb25lIiwiRmxvYXQzMkFycmF5IiwicmlnaHRDbG9uZSIsInJlY29yZCIsInJlY29yZFN0cmVhbWluZyIsImNvbm5lY3QiLCJkZXN0aW5hdGlvbiIsImF1ZGlvRm9ybWF0Iiwic2FtcGxlV2lkdGgiLCJmcmFtZVJhdGUiLCJjbGVhciIsImdldEVuY29kZWRBdWRpbyIsImNhbGxiYWNrIiwiZXhwb3J0V0FWIiwiaXNSZWNvcmRpbmciLCJzdG9wIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztJQUlxQkEsZ0I7QUFDbkI7Ozs7Ozs7Ozs7QUFVQSw0QkFBWUMsTUFBWixFQUFvQkMsaUJBQXBCLEVBQXVDQyxNQUF2QyxFQUErQztBQUFBOztBQUM3QyxTQUFLQyxTQUFMLEdBQWlCLEtBQWpCOztBQUVBLFFBQU1DLFVBQVVKLE9BQU9JLE9BQXZCO0FBQ0E7QUFDQSxTQUFLQyxrQkFBTCxHQUEwQkQsUUFBUUUsVUFBbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFLQSxVQUFMLEdBQWtCLEtBQUtELGtCQUFMLEdBQTBCLENBQTVDO0FBQ0E7QUFDQSxTQUFLQyxVQUFMLEdBQWtCTCxvQkFBb0IsS0FBS0ksa0JBQXpCLEdBQ0UsS0FBS0MsVUFEekI7O0FBR0E7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLENBQWhCO0FBQ0FDLFlBQVFDLEdBQVIsQ0FBWSxtQkFDRSxLQUFLQyxhQUFMLEdBQXFCQyxlQUFyQixDQUFxQ0wsVUFEbkQ7O0FBR0EsU0FBS0osTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBS0EsTUFBTCxDQUFZVSxJQUFaLENBQWlCLEtBQUtQLGtCQUF0QixFQUEwQyxLQUFLQyxVQUEvQyxFQUEyRCxLQUFLQyxRQUFoRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFNTSxhQUFhLElBQW5CO0FBQ0EsUUFBTUMsV0FBV1YsUUFBUVcscUJBQVIsQ0FBOEJGLFVBQTlCLEVBQTBDLENBQTFDLEVBQTZDLENBQTdDLENBQWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFLRyxTQUFMLEdBQWlCRixRQUFqQjs7QUFFQSxRQUFNRyxPQUFPLElBQWI7QUFDQUgsYUFBU0ksY0FBVCxHQUEwQixVQUFTQyxDQUFULEVBQVk7QUFDcEMsVUFBSSxDQUFDRixLQUFLZCxTQUFWLEVBQXFCO0FBQ25CO0FBQ0Q7QUFDRCxVQUFNaUIsT0FBT0QsRUFBRUUsV0FBRixDQUFjQyxjQUFkLENBQTZCLENBQTdCLENBQWI7QUFDQSxVQUFNQyxRQUFRSixFQUFFRSxXQUFGLENBQWNDLGNBQWQsQ0FBNkIsQ0FBN0IsQ0FBZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQU1FLFlBQVksSUFBSUMsWUFBSixDQUFpQkwsSUFBakIsQ0FBbEI7QUFDQSxVQUFNTSxhQUFhLElBQUlELFlBQUosQ0FBaUJGLEtBQWpCLENBQW5CO0FBQ0FOLFdBQUtmLE1BQUwsQ0FBWXlCLE1BQVosQ0FBbUJILFNBQW5CLEVBQThCRSxVQUE5QjtBQUNBLFVBQUl6QixpQkFBSixFQUF1QjtBQUNyQmdCLGFBQUtmLE1BQUwsQ0FBWTBCLGVBQVosQ0FBNEJKLFNBQTVCLEVBQXVDRSxVQUF2QyxFQUFtRHpCLGlCQUFuRDtBQUNEO0FBQ0YsS0FmRDs7QUFpQkFELFdBQU82QixPQUFQLENBQWVmLFFBQWY7QUFDQTtBQUNBO0FBQ0FBLGFBQVNlLE9BQVQsQ0FBaUJ6QixRQUFRMEIsV0FBekI7QUFDRDs7QUFFRDs7Ozs7Ozs2QkFLQXBCLGEsNEJBQWdCO0FBQ2QsV0FBTztBQUNMcUIsbUJBQWEsWUFEUjtBQUVMcEIsdUJBQWlCO0FBQ2ZKLGtCQUFVLEtBQUtBLFFBREE7QUFFZnlCLHFCQUFhLEVBRkU7QUFHZkMsbUJBQVcsS0FBSzNCLFVBSEQ7QUFJZkEsb0JBQVksS0FBS0E7QUFKRjtBQUZaLEtBQVA7QUFTRCxHOztBQUVEOzs7Ozs7NkJBSUFxQixNLHFCQUFTO0FBQ1AsU0FBS3pCLE1BQUwsQ0FBWWdDLEtBQVo7QUFDQSxTQUFLL0IsU0FBTCxHQUFpQixJQUFqQjtBQUNELEc7O0FBRUQ7Ozs7Ozs7NkJBS0FnQyxlLDRCQUFnQkMsUSxFQUFVO0FBQ3hCLFNBQUtsQyxNQUFMLENBQVltQyxTQUFaLENBQXNCRCxRQUF0QjtBQUNELEc7O0FBRUQ7Ozs7Ozs7NkJBS0FFLFcsMEJBQWM7QUFDWixXQUFPLEtBQUtuQyxTQUFaO0FBQ0QsRzs7QUFFRDs7Ozs7NkJBR0FvQyxJLG1CQUFPO0FBQ0wsU0FBS3BDLFNBQUwsR0FBaUIsS0FBakI7QUFDRCxHOzs7OztrQkF4SGtCSixnQiIsImZpbGUiOiJ3ZWItYXVkaW8tcmVjb3JkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYkF1ZGlvUmVjb3JkZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXZWJBdWRpb1JlY29yZGVyIHtcbiAgLyoqXG4gICAqIFVzZSAnbG93IGxldmVsJyBwcm9jZXNzaW5nIHRvb2xpbmcgdG8gcmVjb3JkIGF1ZGlvIGFuZCBnZXQgYSBXYXZlXG4gICAqIChhdWRpby93YXYpIGVuY29kZWQgcmVjb3JkaW5nLlxuICAgKlxuICAgKiBDdXJyZW50bHkgc3VwcG9ydGVkIGluIGFsbCBtb2Rlcm4gSFRNTDUvV2ViQXVkaW8gYnJvd3NlcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7R2Fpbk5vZGV9IHNvdXJjZSAtIFRoZSBzb3VyY2UgdG8gcmVjb3JkLlxuICAgKiBAcGFyYW0gez9GdW5jdGlvbn0gc3RyZWFtaW5nQ2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gZGVsaXZlciBhdWRpbyBjaHVua3MgdG8uXG4gICAqIEBwYXJhbSB7V2F2ZVBhY2tlcn0gcGFja2VyIC0gUGFja2VyIHRvIHVzZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNvdXJjZSwgc3RyZWFtaW5nQ2FsbGJhY2ssIHBhY2tlcikge1xuICAgIHRoaXMucmVjb3JkaW5nID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc291cmNlLmNvbnRleHQ7XG4gICAgLy8gRm9yIHRoZSBiZXN0IHF1YWxpdHksIHVzZSB0aGUgc2FtcGxlcmF0ZSBpbiB3aGljaCBhdWRpbyBpcyByZWNvcmRlZC5cbiAgICB0aGlzLnJlY29yZGVkU2FtcGxlUmF0ZSA9IGNvbnRleHQuc2FtcGxlUmF0ZTtcbiAgICAvLyB2YXIgc2FtcGxlUmF0ZSA9IHJlY29yZGVkU2FtcGxlUmF0ZTtcbiAgICAvLyA0ODAwMGh6IC0+IDI0MDAwaHogcmVjb3JkaW5nLCA0NDEwMGh6IC0+IDIyMDUwaHogcmVjb3JkaW5nLlxuICAgIC8vIFNoZWZmaWVsZCBkZXRlcm1pbmVkIHRoZSBtaW5pbXVtIHRvIGJlIDE2MDAwaHosIHNvIC80IGlzIHRvbyBsb3cuXG4gICAgdGhpcy5zYW1wbGVSYXRlID0gdGhpcy5yZWNvcmRlZFNhbXBsZVJhdGUgLyAyO1xuICAgIC8vIFN0cmVhbWluZyBkb2Vzbid0IHlldCBkb3duc2FtcGxlOiAjMTMwMi5cbiAgICB0aGlzLnNhbXBsZVJhdGUgPSBzdHJlYW1pbmdDYWxsYmFjayA/IHRoaXMucmVjb3JkZWRTYW1wbGVSYXRlIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2FtcGxlUmF0ZTtcblxuICAgIC8vIEFsd2F5cyByZWNvcmQgYXVkaW8gaW4gbW9uby5cbiAgICB0aGlzLmNoYW5uZWxzID0gMTtcbiAgICBjb25zb2xlLmxvZygnUmVjb3JkaW5nIGF0OiAnICtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QXVkaW9TcGVjcygpLmF1ZGlvUGFyYW1ldGVycy5zYW1wbGVSYXRlKTtcblxuICAgIHRoaXMucGFja2VyID0gcGFja2VyO1xuICAgIHRoaXMucGFja2VyLmluaXQodGhpcy5yZWNvcmRlZFNhbXBsZVJhdGUsIHRoaXMuc2FtcGxlUmF0ZSwgdGhpcy5jaGFubmVscyk7XG5cbiAgICAvLyBGcm9tIHRoZSBzcGVjOiBUaGlzIHZhbHVlIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBhdWRpb3Byb2Nlc3NcbiAgICAvLyBldmVudCBpcyBkaXNwYXRjaGVkIGFuZCBob3cgbWFueSBzYW1wbGUtZnJhbWVzIG5lZWQgdG8gYmUgcHJvY2Vzc2VkXG4gICAgLy8gZWFjaCBjYWxsLiBMb3dlciB2YWx1ZXMgZm9yIGJ1ZmZlciBzaXplIHdpbGwgcmVzdWx0IGluIGEgbG93ZXJcbiAgICAvLyAoYmV0dGVyKSBsYXRlbmN5LiBIaWdoZXIgdmFsdWVzIHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGF2b2lkIGF1ZGlvXG4gICAgLy8gYnJlYWt1cCBhbmQgZ2xpdGNoZXMuXG4gICAgLy8gTGVnYWwgdmFsdWVzIGFyZSAoMjU2LCA1MTIsIDEwMjQsIDIwNDgsIDQwOTYsIDgxOTIsIDE2Mzg0KS5cbiAgICBjb25zdCBidWZmZXJTaXplID0gODE5MjtcbiAgICBjb25zdCByZWNvcmRlciA9IGNvbnRleHQuY3JlYXRlU2NyaXB0UHJvY2Vzc29yKGJ1ZmZlclNpemUsIDIsIDIpO1xuICAgIC8vIEtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHNjcmlwdFByb2Nlc3Nvci5cbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gQ2hyb21lIHRoYXQgd291bGQgb3RoZXJ3aXNlIGxlYWQgdG9cbiAgICAvLyB0aGUgcmVjb3JkZXIgYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQgYmVmb3JlIGl0IGV2ZW4gcmVjb3JkZWQgYW55dGhpbmcuXG4gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjUyMVxuICAgIHRoaXMuX3JlY29yZGVyID0gcmVjb3JkZXI7XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICByZWNvcmRlci5vbmF1ZGlvcHJvY2VzcyA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIGlmICghc2VsZi5yZWNvcmRpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbGVmdCA9IGUuaW5wdXRCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMCk7XG4gICAgICBjb25zdCByaWdodCA9IGUuaW5wdXRCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMSk7XG4gICAgICAvLyBUaGVzZSByZXR1cm5lZCBjaGFubmVsIGJ1ZmZlcnMgYXJlIHBvaW50ZXJzIHRvIHRoZSBjdXJyZW50IHNhbXBsZXNcbiAgICAgIC8vIGNvbWluZyBpbi4gTWFrZSBhIHNuYXBzaG90IChjbG9uZSkuIFRoZSB3ZWJ3b3JrZXJzIGNhbid0IHNlcmlhbGl6ZVxuICAgICAgLy8gdGhlIHBvaW50ZXJzLiBXZWxsLCBDaHJvbWUgYW5kIEZGIGNvdWxkLCBidXQgRWRnZSBjYW4ndC5cbiAgICAgIGNvbnN0IGxlZnRDbG9uZSA9IG5ldyBGbG9hdDMyQXJyYXkobGVmdCk7XG4gICAgICBjb25zdCByaWdodENsb25lID0gbmV3IEZsb2F0MzJBcnJheShyaWdodCk7XG4gICAgICBzZWxmLnBhY2tlci5yZWNvcmQobGVmdENsb25lLCByaWdodENsb25lKTtcbiAgICAgIGlmIChzdHJlYW1pbmdDYWxsYmFjaykge1xuICAgICAgICBzZWxmLnBhY2tlci5yZWNvcmRTdHJlYW1pbmcobGVmdENsb25lLCByaWdodENsb25lLCBzdHJlYW1pbmdDYWxsYmFjayk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHNvdXJjZS5jb25uZWN0KHJlY29yZGVyKTtcbiAgICAvLyBJZiB0aGUgc2NyaXB0IG5vZGUgaXMgbm90IGNvbm5lY3RlZCB0byBhbiBvdXRwdXQgdGhlIFwib25hdWRpb3Byb2Nlc3NcIlxuICAgIC8vIGV2ZW50IGlzIG5vdCB0cmlnZ2VyZWQgaW4gY2hyb21lLlxuICAgIHJlY29yZGVyLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZWNvcmRlZCBhdWRpbyBzcGVjaWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMge09iamVjdH0gQ29udGFpbmluZyBtZXRhZGF0YSBvbiB0aGUgYXVkaW8gZm9ybWF0LlxuICAgKi9cbiAgZ2V0QXVkaW9TcGVjcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYXVkaW9Gb3JtYXQ6ICdhdWRpby93YXZlJyxcbiAgICAgIGF1ZGlvUGFyYW1ldGVyczoge1xuICAgICAgICBjaGFubmVsczogdGhpcy5jaGFubmVscyxcbiAgICAgICAgc2FtcGxlV2lkdGg6IDE2LFxuICAgICAgICBmcmFtZVJhdGU6IHRoaXMuc2FtcGxlUmF0ZSxcbiAgICAgICAgc2FtcGxlUmF0ZTogdGhpcy5zYW1wbGVSYXRlXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCByZWNvcmRpbmcgYXVkaW8uXG4gICAqXG4gICAqL1xuICByZWNvcmQoKSB7XG4gICAgdGhpcy5wYWNrZXIuY2xlYXIoKTtcbiAgICB0aGlzLnJlY29yZGluZyA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBlbmNvZGVkIGF1ZGlvIHRvIGJlIHJldHVybmVkIHRocm91Z2ggY2FsbGJhY2suXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIHVzZSB3aGVuIHJldHVybmluZyB0aGUgYXVkaW8gYXMgYSBibG9iIGluIFdhdmUgZm9ybWF0LlxuICAgKi9cbiAgZ2V0RW5jb2RlZEF1ZGlvKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5wYWNrZXIuZXhwb3J0V0FWKGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJcyBhdWRpbyByZWNvcmRpbmcgaW4gcHJvZ3Jlc3MuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIHdoZW4gcmVjb3JkaW5nLiBGYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBpc1JlY29yZGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5yZWNvcmRpbmc7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCByZWNvcmRpbmcgYXVkaW8uXG4gICAqL1xuICBzdG9wKCkge1xuICAgIHRoaXMucmVjb3JkaW5nID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby93ZWItYXVkaW8tcmVjb3JkZXIuanMiXSwibmFtZXMiOlsiV2ViQXVkaW9SZWNvcmRlciIsInNvdXJjZSIsInN0cmVhbWluZ0NhbGxiYWNrIiwicGFja2VyIiwicmVjb3JkaW5nIiwiY29udGV4dCIsInJlY29yZGVkU2FtcGxlUmF0ZSIsInNhbXBsZVJhdGUiLCJjaGFubmVscyIsImNvbnNvbGUiLCJsb2ciLCJnZXRBdWRpb1NwZWNzIiwiYXVkaW9QYXJhbWV0ZXJzIiwiaW5pdCIsImJ1ZmZlclNpemUiLCJyZWNvcmRlciIsImNyZWF0ZVNjcmlwdFByb2Nlc3NvciIsIl9yZWNvcmRlciIsInNlbGYiLCJvbmF1ZGlvcHJvY2VzcyIsImUiLCJsZWZ0IiwiaW5wdXRCdWZmZXIiLCJnZXRDaGFubmVsRGF0YSIsInJpZ2h0IiwibGVmdENsb25lIiwiRmxvYXQzMkFycmF5IiwicmlnaHRDbG9uZSIsInJlY29yZCIsInJlY29yZFN0cmVhbWluZyIsImNvbm5lY3QiLCJkZXN0aW5hdGlvbiIsImF1ZGlvRm9ybWF0Iiwic2FtcGxlV2lkdGgiLCJmcmFtZVJhdGUiLCJjbGVhciIsImdldEVuY29kZWRBdWRpbyIsImNhbGxiYWNrIiwiZXhwb3J0V0FWIiwiaXNSZWNvcmRpbmciLCJzdG9wIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztJQUlxQkEsZ0I7QUFDbkI7Ozs7Ozs7Ozs7QUFVQSw0QkFBWUMsTUFBWixFQUFvQkMsaUJBQXBCLEVBQXVDQyxNQUF2QyxFQUErQztBQUFBOztBQUM3QyxTQUFLQyxTQUFMLEdBQWlCLEtBQWpCOztBQUVBLFFBQU1DLFVBQVVKLE9BQU9JLE9BQXZCO0FBQ0E7QUFDQSxTQUFLQyxrQkFBTCxHQUEwQkQsUUFBUUUsVUFBbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFLQSxVQUFMLEdBQWtCLEtBQUtELGtCQUFMLEdBQTBCLENBQTVDO0FBQ0E7QUFDQSxTQUFLQyxVQUFMLEdBQWtCTCxvQkFBb0IsS0FBS0ksa0JBQXpCLEdBQ2hCLEtBQUtDLFVBRFA7O0FBR0E7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLENBQWhCO0FBQ0FDLFlBQVFDLEdBQVIsQ0FBWSxtQkFDRSxLQUFLQyxhQUFMLEdBQXFCQyxlQUFyQixDQUFxQ0wsVUFEbkQ7O0FBR0EsU0FBS0osTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBS0EsTUFBTCxDQUFZVSxJQUFaLENBQWlCLEtBQUtQLGtCQUF0QixFQUEwQyxLQUFLQyxVQUEvQyxFQUEyRCxLQUFLQyxRQUFoRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFNTSxhQUFhLElBQW5CO0FBQ0EsUUFBTUMsV0FBV1YsUUFBUVcscUJBQVIsQ0FBOEJGLFVBQTlCLEVBQTBDLENBQTFDLEVBQTZDLENBQTdDLENBQWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFLRyxTQUFMLEdBQWlCRixRQUFqQjs7QUFFQSxRQUFNRyxPQUFPLElBQWI7QUFDQUgsYUFBU0ksY0FBVCxHQUEwQixVQUFTQyxDQUFULEVBQVk7QUFDcEMsVUFBSSxDQUFDRixLQUFLZCxTQUFWLEVBQXFCO0FBQ25CO0FBQ0Q7QUFDRCxVQUFNaUIsT0FBT0QsRUFBRUUsV0FBRixDQUFjQyxjQUFkLENBQTZCLENBQTdCLENBQWI7QUFDQSxVQUFNQyxRQUFRSixFQUFFRSxXQUFGLENBQWNDLGNBQWQsQ0FBNkIsQ0FBN0IsQ0FBZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQU1FLFlBQVksSUFBSUMsWUFBSixDQUFpQkwsSUFBakIsQ0FBbEI7QUFDQSxVQUFNTSxhQUFhLElBQUlELFlBQUosQ0FBaUJGLEtBQWpCLENBQW5CO0FBQ0FOLFdBQUtmLE1BQUwsQ0FBWXlCLE1BQVosQ0FBbUJILFNBQW5CLEVBQThCRSxVQUE5QjtBQUNBLFVBQUl6QixpQkFBSixFQUF1QjtBQUNyQmdCLGFBQUtmLE1BQUwsQ0FBWTBCLGVBQVosQ0FBNEJKLFNBQTVCLEVBQXVDRSxVQUF2QyxFQUFtRHpCLGlCQUFuRDtBQUNEO0FBQ0YsS0FmRDs7QUFpQkFELFdBQU82QixPQUFQLENBQWVmLFFBQWY7QUFDQTtBQUNBO0FBQ0FBLGFBQVNlLE9BQVQsQ0FBaUJ6QixRQUFRMEIsV0FBekI7QUFDRDs7QUFFRDs7Ozs7Ozs2QkFLQXBCLGEsNEJBQWdCO0FBQ2QsV0FBTztBQUNMcUIsbUJBQWEsWUFEUjtBQUVMcEIsdUJBQWlCO0FBQ2ZKLGtCQUFVLEtBQUtBLFFBREE7QUFFZnlCLHFCQUFhLEVBRkU7QUFHZkMsbUJBQVcsS0FBSzNCLFVBSEQ7QUFJZkEsb0JBQVksS0FBS0E7QUFKRjtBQUZaLEtBQVA7QUFTRCxHOztBQUVEOzs7Ozs7NkJBSUFxQixNLHFCQUFTO0FBQ1AsU0FBS3pCLE1BQUwsQ0FBWWdDLEtBQVo7QUFDQSxTQUFLL0IsU0FBTCxHQUFpQixJQUFqQjtBQUNELEc7O0FBRUQ7Ozs7Ozs7NkJBS0FnQyxlLDRCQUFnQkMsUSxFQUFVO0FBQ3hCLFNBQUtsQyxNQUFMLENBQVltQyxTQUFaLENBQXNCRCxRQUF0QjtBQUNELEc7O0FBRUQ7Ozs7Ozs7NkJBS0FFLFcsMEJBQWM7QUFDWixXQUFPLEtBQUtuQyxTQUFaO0FBQ0QsRzs7QUFFRDs7Ozs7NkJBR0FvQyxJLG1CQUFPO0FBQ0wsU0FBS3BDLFNBQUwsR0FBaUIsS0FBakI7QUFDRCxHOzs7OztrQkF4SGtCSixnQiIsImZpbGUiOiJ3ZWItYXVkaW8tcmVjb3JkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYkF1ZGlvUmVjb3JkZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXZWJBdWRpb1JlY29yZGVyIHtcbiAgLyoqXG4gICAqIFVzZSAnbG93IGxldmVsJyBwcm9jZXNzaW5nIHRvb2xpbmcgdG8gcmVjb3JkIGF1ZGlvIGFuZCBnZXQgYSBXYXZlXG4gICAqIChhdWRpby93YXYpIGVuY29kZWQgcmVjb3JkaW5nLlxuICAgKlxuICAgKiBDdXJyZW50bHkgc3VwcG9ydGVkIGluIGFsbCBtb2Rlcm4gSFRNTDUvV2ViQXVkaW8gYnJvd3NlcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7R2Fpbk5vZGV9IHNvdXJjZSAtIFRoZSBzb3VyY2UgdG8gcmVjb3JkLlxuICAgKiBAcGFyYW0gez9GdW5jdGlvbn0gc3RyZWFtaW5nQ2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gZGVsaXZlciBhdWRpbyBjaHVua3MgdG8uXG4gICAqIEBwYXJhbSB7V2F2ZVBhY2tlcn0gcGFja2VyIC0gUGFja2VyIHRvIHVzZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNvdXJjZSwgc3RyZWFtaW5nQ2FsbGJhY2ssIHBhY2tlcikge1xuICAgIHRoaXMucmVjb3JkaW5nID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc291cmNlLmNvbnRleHQ7XG4gICAgLy8gRm9yIHRoZSBiZXN0IHF1YWxpdHksIHVzZSB0aGUgc2FtcGxlcmF0ZSBpbiB3aGljaCBhdWRpbyBpcyByZWNvcmRlZC5cbiAgICB0aGlzLnJlY29yZGVkU2FtcGxlUmF0ZSA9IGNvbnRleHQuc2FtcGxlUmF0ZTtcbiAgICAvLyB2YXIgc2FtcGxlUmF0ZSA9IHJlY29yZGVkU2FtcGxlUmF0ZTtcbiAgICAvLyA0ODAwMGh6IC0+IDI0MDAwaHogcmVjb3JkaW5nLCA0NDEwMGh6IC0+IDIyMDUwaHogcmVjb3JkaW5nLlxuICAgIC8vIFNoZWZmaWVsZCBkZXRlcm1pbmVkIHRoZSBtaW5pbXVtIHRvIGJlIDE2MDAwaHosIHNvIC80IGlzIHRvbyBsb3cuXG4gICAgdGhpcy5zYW1wbGVSYXRlID0gdGhpcy5yZWNvcmRlZFNhbXBsZVJhdGUgLyAyO1xuICAgIC8vIFN0cmVhbWluZyBkb2Vzbid0IHlldCBkb3duc2FtcGxlOiAjMTMwMi5cbiAgICB0aGlzLnNhbXBsZVJhdGUgPSBzdHJlYW1pbmdDYWxsYmFjayA/IHRoaXMucmVjb3JkZWRTYW1wbGVSYXRlIDpcbiAgICAgIHRoaXMuc2FtcGxlUmF0ZTtcblxuICAgIC8vIEFsd2F5cyByZWNvcmQgYXVkaW8gaW4gbW9uby5cbiAgICB0aGlzLmNoYW5uZWxzID0gMTtcbiAgICBjb25zb2xlLmxvZygnUmVjb3JkaW5nIGF0OiAnICtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QXVkaW9TcGVjcygpLmF1ZGlvUGFyYW1ldGVycy5zYW1wbGVSYXRlKTtcblxuICAgIHRoaXMucGFja2VyID0gcGFja2VyO1xuICAgIHRoaXMucGFja2VyLmluaXQodGhpcy5yZWNvcmRlZFNhbXBsZVJhdGUsIHRoaXMuc2FtcGxlUmF0ZSwgdGhpcy5jaGFubmVscyk7XG5cbiAgICAvLyBGcm9tIHRoZSBzcGVjOiBUaGlzIHZhbHVlIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBhdWRpb3Byb2Nlc3NcbiAgICAvLyBldmVudCBpcyBkaXNwYXRjaGVkIGFuZCBob3cgbWFueSBzYW1wbGUtZnJhbWVzIG5lZWQgdG8gYmUgcHJvY2Vzc2VkXG4gICAgLy8gZWFjaCBjYWxsLiBMb3dlciB2YWx1ZXMgZm9yIGJ1ZmZlciBzaXplIHdpbGwgcmVzdWx0IGluIGEgbG93ZXJcbiAgICAvLyAoYmV0dGVyKSBsYXRlbmN5LiBIaWdoZXIgdmFsdWVzIHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGF2b2lkIGF1ZGlvXG4gICAgLy8gYnJlYWt1cCBhbmQgZ2xpdGNoZXMuXG4gICAgLy8gTGVnYWwgdmFsdWVzIGFyZSAoMjU2LCA1MTIsIDEwMjQsIDIwNDgsIDQwOTYsIDgxOTIsIDE2Mzg0KS5cbiAgICBjb25zdCBidWZmZXJTaXplID0gODE5MjtcbiAgICBjb25zdCByZWNvcmRlciA9IGNvbnRleHQuY3JlYXRlU2NyaXB0UHJvY2Vzc29yKGJ1ZmZlclNpemUsIDIsIDIpO1xuICAgIC8vIEtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHNjcmlwdFByb2Nlc3Nvci5cbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gQ2hyb21lIHRoYXQgd291bGQgb3RoZXJ3aXNlIGxlYWQgdG9cbiAgICAvLyB0aGUgcmVjb3JkZXIgYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQgYmVmb3JlIGl0IGV2ZW4gcmVjb3JkZWQgYW55dGhpbmcuXG4gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjUyMVxuICAgIHRoaXMuX3JlY29yZGVyID0gcmVjb3JkZXI7XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICByZWNvcmRlci5vbmF1ZGlvcHJvY2VzcyA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIGlmICghc2VsZi5yZWNvcmRpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbGVmdCA9IGUuaW5wdXRCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMCk7XG4gICAgICBjb25zdCByaWdodCA9IGUuaW5wdXRCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMSk7XG4gICAgICAvLyBUaGVzZSByZXR1cm5lZCBjaGFubmVsIGJ1ZmZlcnMgYXJlIHBvaW50ZXJzIHRvIHRoZSBjdXJyZW50IHNhbXBsZXNcbiAgICAgIC8vIGNvbWluZyBpbi4gTWFrZSBhIHNuYXBzaG90IChjbG9uZSkuIFRoZSB3ZWJ3b3JrZXJzIGNhbid0IHNlcmlhbGl6ZVxuICAgICAgLy8gdGhlIHBvaW50ZXJzLiBXZWxsLCBDaHJvbWUgYW5kIEZGIGNvdWxkLCBidXQgRWRnZSBjYW4ndC5cbiAgICAgIGNvbnN0IGxlZnRDbG9uZSA9IG5ldyBGbG9hdDMyQXJyYXkobGVmdCk7XG4gICAgICBjb25zdCByaWdodENsb25lID0gbmV3IEZsb2F0MzJBcnJheShyaWdodCk7XG4gICAgICBzZWxmLnBhY2tlci5yZWNvcmQobGVmdENsb25lLCByaWdodENsb25lKTtcbiAgICAgIGlmIChzdHJlYW1pbmdDYWxsYmFjaykge1xuICAgICAgICBzZWxmLnBhY2tlci5yZWNvcmRTdHJlYW1pbmcobGVmdENsb25lLCByaWdodENsb25lLCBzdHJlYW1pbmdDYWxsYmFjayk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHNvdXJjZS5jb25uZWN0KHJlY29yZGVyKTtcbiAgICAvLyBJZiB0aGUgc2NyaXB0IG5vZGUgaXMgbm90IGNvbm5lY3RlZCB0byBhbiBvdXRwdXQgdGhlIFwib25hdWRpb3Byb2Nlc3NcIlxuICAgIC8vIGV2ZW50IGlzIG5vdCB0cmlnZ2VyZWQgaW4gY2hyb21lLlxuICAgIHJlY29yZGVyLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZWNvcmRlZCBhdWRpbyBzcGVjaWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMge09iamVjdH0gQ29udGFpbmluZyBtZXRhZGF0YSBvbiB0aGUgYXVkaW8gZm9ybWF0LlxuICAgKi9cbiAgZ2V0QXVkaW9TcGVjcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYXVkaW9Gb3JtYXQ6ICdhdWRpby93YXZlJyxcbiAgICAgIGF1ZGlvUGFyYW1ldGVyczoge1xuICAgICAgICBjaGFubmVsczogdGhpcy5jaGFubmVscyxcbiAgICAgICAgc2FtcGxlV2lkdGg6IDE2LFxuICAgICAgICBmcmFtZVJhdGU6IHRoaXMuc2FtcGxlUmF0ZSxcbiAgICAgICAgc2FtcGxlUmF0ZTogdGhpcy5zYW1wbGVSYXRlXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCByZWNvcmRpbmcgYXVkaW8uXG4gICAqXG4gICAqL1xuICByZWNvcmQoKSB7XG4gICAgdGhpcy5wYWNrZXIuY2xlYXIoKTtcbiAgICB0aGlzLnJlY29yZGluZyA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBlbmNvZGVkIGF1ZGlvIHRvIGJlIHJldHVybmVkIHRocm91Z2ggY2FsbGJhY2suXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIHVzZSB3aGVuIHJldHVybmluZyB0aGUgYXVkaW8gYXMgYSBibG9iIGluIFdhdmUgZm9ybWF0LlxuICAgKi9cbiAgZ2V0RW5jb2RlZEF1ZGlvKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5wYWNrZXIuZXhwb3J0V0FWKGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJcyBhdWRpbyByZWNvcmRpbmcgaW4gcHJvZ3Jlc3MuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIHdoZW4gcmVjb3JkaW5nLiBGYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBpc1JlY29yZGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5yZWNvcmRpbmc7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCByZWNvcmRpbmcgYXVkaW8uXG4gICAqL1xuICBzdG9wKCkge1xuICAgIHRoaXMucmVjb3JkaW5nID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ== |
14
index.js
'use strict'; | ||
exports.__esModule = true; | ||
exports.VolumeMeter = exports.Stopwatch = exports.generateWaveSample = exports.AudioRecorder = exports.AudioPlayer = exports.User = exports.SpeechChallenge = exports.Role = exports.PronunciationChallenge = exports.Progress = exports.Profile = exports.Organisation = exports.Group = exports.EmailCredentials = exports.Connection = exports.ChoiceChallenge = exports.Category = exports.BasicAuth = exports.AdministrativeSDK = undefined; | ||
exports.Recorder = exports.Player = exports.VolumeMeter = exports.Stopwatch = exports.generateWaveSample = exports.AudioRecorder = exports.AudioPlayer = exports.User = exports.SpeechChallenge = exports.Role = exports.PronunciationChallenge = exports.Progress = exports.Profile = exports.Organisation = exports.Group = exports.EmailCredentials = exports.Connection = exports.ChoiceChallenge = exports.Category = exports.BasicAuth = exports.AdministrativeSDK = undefined; | ||
@@ -50,2 +50,6 @@ var _audioTools = require('./audio/audio-tools'); | ||
var _Player = require('./WebAudio/Player'); | ||
var _Player2 = _interopRequireDefault(_Player); | ||
var _profile = require('./administrative-sdk/profile/profile'); | ||
@@ -63,2 +67,6 @@ | ||
var _Recorder = require('./WebAudio/Recorder'); | ||
var _Recorder2 = _interopRequireDefault(_Recorder); | ||
var _role = require('./administrative-sdk/role/role'); | ||
@@ -101,2 +109,4 @@ | ||
exports.VolumeMeter = _audioTools2.default; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJBZG1pbmlzdHJhdGl2ZVNESyIsIkJhc2ljQXV0aCIsIkNhdGVnb3J5IiwiQ2hvaWNlQ2hhbGxlbmdlIiwiQ29ubmVjdGlvbiIsIkVtYWlsQ3JlZGVudGlhbHMiLCJHcm91cCIsIk9yZ2FuaXNhdGlvbiIsIlByb2ZpbGUiLCJQcm9ncmVzcyIsIlByb251bmNpYXRpb25DaGFsbGVuZ2UiLCJSb2xlIiwiU3BlZWNoQ2hhbGxlbmdlIiwiVXNlciIsIkF1ZGlvUGxheWVyIiwiQXVkaW9SZWNvcmRlciIsImdlbmVyYXRlV2F2ZVNhbXBsZSIsIlN0b3B3YXRjaCIsIlZvbHVtZU1ldGVyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O1FBR0VBLGlCO1FBQ0FDLFM7UUFDQUMsUTtRQUNBQyxlO1FBQ0FDLFU7UUFDQUMsZ0I7UUFDQUMsSztRQUNBQyxZO1FBQ0FDLE87UUFDQUMsUTtRQUNBQyxzQjtRQUNBQyxJO1FBQ0FDLGU7UUFDQUMsSTtRQUVBQyxXO1FBQ0FDLGE7UUFFQUMsa0I7UUFFQUMsUztRQUVBQyxXIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZWZhdWx0IGFzIFZvbHVtZU1ldGVyLCBnZW5lcmF0ZVdhdmVTYW1wbGV9IGZyb20gJy4vYXVkaW8vYXVkaW8tdG9vbHMnO1xuaW1wb3J0IEFkbWluaXN0cmF0aXZlU0RLIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL2FkbWluaXN0cmF0aXZlLXNkayc7XG5pbXBvcnQgQXVkaW9QbGF5ZXIgZnJvbSAnLi9hdWRpby9hdWRpby1wbGF5ZXInO1xuaW1wb3J0IEF1ZGlvUmVjb3JkZXIgZnJvbSAnLi9hdWRpby9hdWRpby1yZWNvcmRlcic7XG5pbXBvcnQgQmFzaWNBdXRoIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL2Jhc2ljLWF1dGgvYmFzaWMtYXV0aCc7XG5pbXBvcnQgQ2F0ZWdvcnkgZnJvbSAnLi9hZG1pbmlzdHJhdGl2ZS1zZGsvY2F0ZWdvcnkvY2F0ZWdvcnknO1xuaW1wb3J0IENob2ljZUNoYWxsZW5nZSBmcm9tICcuL2FkbWluaXN0cmF0aXZlLXNkay9jaG9pY2UtY2hhbGxlbmdlL2Nob2ljZS1jaGFsbGVuZ2UnO1xuaW1wb3J0IENvbm5lY3Rpb24gZnJvbSAnLi9hZG1pbmlzdHJhdGl2ZS1zZGsvY29ubmVjdGlvbi9jb25uZWN0aW9uLWNvbnRyb2xsZXInO1xuaW1wb3J0IEVtYWlsQ3JlZGVudGlhbHMgZnJvbSAnLi9hZG1pbmlzdHJhdGl2ZS1zZGsvZW1haWwtY3JlZGVudGlhbHMvZW1haWwtY3JlZGVudGlhbHMnO1xuaW1wb3J0IEdyb3VwIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL2dyb3VwL2dyb3VwJztcbmltcG9ydCBPcmdhbmlzYXRpb24gZnJvbSAnLi9hZG1pbmlzdHJhdGl2ZS1zZGsvb3JnYW5pc2F0aW9uL29yZ2FuaXNhdGlvbic7XG5pbXBvcnQgUHJvZmlsZSBmcm9tICcuL2FkbWluaXN0cmF0aXZlLXNkay9wcm9maWxlL3Byb2ZpbGUnO1xuaW1wb3J0IFByb2dyZXNzIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL3Byb2dyZXNzL3Byb2dyZXNzJztcbmltcG9ydCBQcm9udW5jaWF0aW9uQ2hhbGxlbmdlIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL3Byb251bmNpYXRpb24tY2hhbGxlbmdlL3Byb251bmNpYXRpb24tY2hhbGxlbmdlJztcbmltcG9ydCBSb2xlIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL3JvbGUvcm9sZSc7XG5pbXBvcnQgU3BlZWNoQ2hhbGxlbmdlIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL3NwZWVjaC1jaGFsbGVuZ2Uvc3BlZWNoLWNoYWxsZW5nZSc7XG5pbXBvcnQgU3RvcHdhdGNoIGZyb20gJy4vYXVkaW8vdG9vbHMnO1xuaW1wb3J0IFVzZXIgZnJvbSAnLi9hZG1pbmlzdHJhdGl2ZS1zZGsvdXNlci91c2VyJztcblxuZXhwb3J0IHtcbiAgQWRtaW5pc3RyYXRpdmVTREssXG4gIEJhc2ljQXV0aCxcbiAgQ2F0ZWdvcnksXG4gIENob2ljZUNoYWxsZW5nZSxcbiAgQ29ubmVjdGlvbixcbiAgRW1haWxDcmVkZW50aWFscyxcbiAgR3JvdXAsXG4gIE9yZ2FuaXNhdGlvbixcbiAgUHJvZmlsZSxcbiAgUHJvZ3Jlc3MsXG4gIFByb251bmNpYXRpb25DaGFsbGVuZ2UsXG4gIFJvbGUsXG4gIFNwZWVjaENoYWxsZW5nZSxcbiAgVXNlcixcblxuICBBdWRpb1BsYXllcixcbiAgQXVkaW9SZWNvcmRlcixcblxuICBnZW5lcmF0ZVdhdmVTYW1wbGUsXG5cbiAgU3RvcHdhdGNoLFxuXG4gIFZvbHVtZU1ldGVyXG59O1xuIl19 | ||
exports.Player = _Player2.default; | ||
exports.Recorder = _Recorder2.default; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJBZG1pbmlzdHJhdGl2ZVNESyIsIkJhc2ljQXV0aCIsIkNhdGVnb3J5IiwiQ2hvaWNlQ2hhbGxlbmdlIiwiQ29ubmVjdGlvbiIsIkVtYWlsQ3JlZGVudGlhbHMiLCJHcm91cCIsIk9yZ2FuaXNhdGlvbiIsIlByb2ZpbGUiLCJQcm9ncmVzcyIsIlByb251bmNpYXRpb25DaGFsbGVuZ2UiLCJSb2xlIiwiU3BlZWNoQ2hhbGxlbmdlIiwiVXNlciIsIkF1ZGlvUGxheWVyIiwiQXVkaW9SZWNvcmRlciIsImdlbmVyYXRlV2F2ZVNhbXBsZSIsIlN0b3B3YXRjaCIsIlZvbHVtZU1ldGVyIiwiUGxheWVyIiwiUmVjb3JkZXIiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O1FBR0VBLGlCO1FBQ0FDLFM7UUFDQUMsUTtRQUNBQyxlO1FBQ0FDLFU7UUFDQUMsZ0I7UUFDQUMsSztRQUNBQyxZO1FBQ0FDLE87UUFDQUMsUTtRQUNBQyxzQjtRQUNBQyxJO1FBQ0FDLGU7UUFDQUMsSTtRQUVBQyxXO1FBQ0FDLGE7UUFFQUMsa0I7UUFFQUMsUztRQUVBQyxXO1FBRUFDLE07UUFDQUMsUSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGVmYXVsdCBhcyBWb2x1bWVNZXRlciwgZ2VuZXJhdGVXYXZlU2FtcGxlfSBmcm9tICcuL2F1ZGlvL2F1ZGlvLXRvb2xzJztcbmltcG9ydCBBZG1pbmlzdHJhdGl2ZVNESyBmcm9tICcuL2FkbWluaXN0cmF0aXZlLXNkay9hZG1pbmlzdHJhdGl2ZS1zZGsnO1xuaW1wb3J0IEF1ZGlvUGxheWVyIGZyb20gJy4vYXVkaW8vYXVkaW8tcGxheWVyJztcbmltcG9ydCBBdWRpb1JlY29yZGVyIGZyb20gJy4vYXVkaW8vYXVkaW8tcmVjb3JkZXInO1xuaW1wb3J0IEJhc2ljQXV0aCBmcm9tICcuL2FkbWluaXN0cmF0aXZlLXNkay9iYXNpYy1hdXRoL2Jhc2ljLWF1dGgnO1xuaW1wb3J0IENhdGVnb3J5IGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL2NhdGVnb3J5L2NhdGVnb3J5JztcbmltcG9ydCBDaG9pY2VDaGFsbGVuZ2UgZnJvbSAnLi9hZG1pbmlzdHJhdGl2ZS1zZGsvY2hvaWNlLWNoYWxsZW5nZS9jaG9pY2UtY2hhbGxlbmdlJztcbmltcG9ydCBDb25uZWN0aW9uIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL2Nvbm5lY3Rpb24vY29ubmVjdGlvbi1jb250cm9sbGVyJztcbmltcG9ydCBFbWFpbENyZWRlbnRpYWxzIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL2VtYWlsLWNyZWRlbnRpYWxzL2VtYWlsLWNyZWRlbnRpYWxzJztcbmltcG9ydCBHcm91cCBmcm9tICcuL2FkbWluaXN0cmF0aXZlLXNkay9ncm91cC9ncm91cCc7XG5pbXBvcnQgT3JnYW5pc2F0aW9uIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL29yZ2FuaXNhdGlvbi9vcmdhbmlzYXRpb24nO1xuaW1wb3J0IFBsYXllciBmcm9tICcuL1dlYkF1ZGlvL1BsYXllcic7XG5pbXBvcnQgUHJvZmlsZSBmcm9tICcuL2FkbWluaXN0cmF0aXZlLXNkay9wcm9maWxlL3Byb2ZpbGUnO1xuaW1wb3J0IFByb2dyZXNzIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL3Byb2dyZXNzL3Byb2dyZXNzJztcbmltcG9ydCBQcm9udW5jaWF0aW9uQ2hhbGxlbmdlIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL3Byb251bmNpYXRpb24tY2hhbGxlbmdlL3Byb251bmNpYXRpb24tY2hhbGxlbmdlJztcbmltcG9ydCBSZWNvcmRlciBmcm9tICcuL1dlYkF1ZGlvL1JlY29yZGVyJztcbmltcG9ydCBSb2xlIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL3JvbGUvcm9sZSc7XG5pbXBvcnQgU3BlZWNoQ2hhbGxlbmdlIGZyb20gJy4vYWRtaW5pc3RyYXRpdmUtc2RrL3NwZWVjaC1jaGFsbGVuZ2Uvc3BlZWNoLWNoYWxsZW5nZSc7XG5pbXBvcnQgU3RvcHdhdGNoIGZyb20gJy4vYXVkaW8vdG9vbHMnO1xuaW1wb3J0IFVzZXIgZnJvbSAnLi9hZG1pbmlzdHJhdGl2ZS1zZGsvdXNlci91c2VyJztcblxuZXhwb3J0IHtcbiAgQWRtaW5pc3RyYXRpdmVTREssXG4gIEJhc2ljQXV0aCxcbiAgQ2F0ZWdvcnksXG4gIENob2ljZUNoYWxsZW5nZSxcbiAgQ29ubmVjdGlvbixcbiAgRW1haWxDcmVkZW50aWFscyxcbiAgR3JvdXAsXG4gIE9yZ2FuaXNhdGlvbixcbiAgUHJvZmlsZSxcbiAgUHJvZ3Jlc3MsXG4gIFByb251bmNpYXRpb25DaGFsbGVuZ2UsXG4gIFJvbGUsXG4gIFNwZWVjaENoYWxsZW5nZSxcbiAgVXNlcixcblxuICBBdWRpb1BsYXllcixcbiAgQXVkaW9SZWNvcmRlcixcblxuICBnZW5lcmF0ZVdhdmVTYW1wbGUsXG5cbiAgU3RvcHdhdGNoLFxuXG4gIFZvbHVtZU1ldGVyLFxuXG4gIFBsYXllcixcbiAgUmVjb3JkZXJcbn07XG4iXX0= |
{ | ||
"name": "itslanguage", | ||
"version": "3.0.0-beta-3", | ||
"version": "3.0.0-beta-4", | ||
"description": "The core JavaScript SDK for ITSLanguage.", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "concurrently 'eslint .' 'karma start --single-run --color'", | ||
"esdoc": "esdoc -c esdoc.json", | ||
"babelify": "babel src --out-dir build --source-maps inline && cp package.json README.md build/", | ||
"clearbuild": "rm -rf build/" | ||
"engines": { | ||
"npm": ">=5", | ||
"node": ">=8" | ||
}, | ||
@@ -28,32 +26,9 @@ "author": "ITSLanguage (https://www.itslanguage.nl) <support@d-centralize.nl>", | ||
"dependencies": { | ||
"autobahn": "0.11.2", | ||
"client-oauth2": "3.4.1", | ||
"event-emitter": "^0.3.4", | ||
"pcmjs": "^0.0.2", | ||
"uuid": "^3.0.1", | ||
"when": "^3.7.7" | ||
}, | ||
"devDependencies": { | ||
"babel-cli": "^6.22.2", | ||
"babel-preset-es2015": "^6.22.0", | ||
"babelify": "^7.3.0", | ||
"browserify": "^14.0.0", | ||
"browserify-istanbul": "^2.0.0", | ||
"bufferutil": "^2.0.1", | ||
"concurrently": "^3.3.0", | ||
"esdoc": "^0.5.2", | ||
"eslint": "^3.15.0", | ||
"eslint-config-d-centralize": "^0.4.1", | ||
"eslint-plugin-jsdoc": "^2.4.0", | ||
"isparta": "^4.0.0", | ||
"jasmine-ajax": "^3.3.1", | ||
"jasmine-core": "^2.5.2", | ||
"karma": "^1.4.1", | ||
"karma-browserify": "^5.1.1", | ||
"karma-chrome-launcher": "^2.0.0", | ||
"karma-cli": "^1.0.1", | ||
"karma-coverage": "^1.1.1", | ||
"karma-jasmine": "^1.1.0", | ||
"watchify": "^3.9.0" | ||
"autobahn": "17.5.2", | ||
"client-oauth2": "4.1.0", | ||
"event-emitter": "0.3.5", | ||
"pcmjs": "0.0.2", | ||
"uuid": "3.1.0", | ||
"when": "3.7.8" | ||
} | ||
} |
@@ -5,2 +5,4 @@ # ITSLanguage JavaScript SDK | ||
[](https://travis-ci.org/itslanguage/itslanguage-js) | ||
## Getting started | ||
@@ -13,52 +15,1 @@ | ||
``` | ||
### Dependencies | ||
Any JavaScript project can use this SDK to build applications for the | ||
ITSLanguage platform. There are, however, a few things to keep in mind; mostly | ||
the dependencies. ITSLanguage JavaScript SDK uses: | ||
1. [The `fetch` API][MDN fetch] | ||
1. [URLSearchParams][MDN URLSearchParams] | ||
1. [FormData][MDN FormData] | ||
1. [WebSocket][MDN WebSocket] | ||
It is expected that these are accessible through their `global` accessors (i.e. | ||
by simply calling `new FormData()`, `fetch(...)`, etc.). | ||
Modern browsers support these (at least to the capacity we use it). Older | ||
browsers as well as `Node` don't necessarily support these because the are, as | ||
of writing this, still seen as experimental (browser) features. They are living | ||
standards and therefore expected to be implemented in the future. | ||
In the mean time; you might want to look at a few libraries which will add | ||
these APIs to your environment. Here are a few we found useful. | ||
#### Browsers | ||
1. [whatwg-fetch][NPM whatwg-fetch] | ||
1. [url-search-params-polyfill][NPM url-search-params-polyfill] | ||
#### Node | ||
1. [node-fetch][NPM node-fetch] | ||
1. [url-search-params][NPM url-search-params] | ||
1. [form-data][NPM form-data] | ||
#### Both | ||
1. [isomorphic-fetch][NPM isomorphic-fetch] | ||
> We appreciate any contribution to extend/update these lists. | ||
[MDN fetch]: https://developer.mozilla.org/en/docs/Web/API/Fetch_API | ||
[MDN URLSearchParams]: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams | ||
[MDN FormData]: https://developer.mozilla.org/en-US/docs/Web/API/FormData | ||
[MDN WebSocket]: https://developer.mozilla.org/en-US/docs/Web/API/WebSocket | ||
[NPM isomorphic-fetch]: https://www.npmjs.com/package/isomorphic-fetch | ||
[NPM form-data]: https://www.npmjs.com/package/form-data | ||
[NPM node-fetch]: https://www.npmjs.com/package/node-fetch | ||
[NPM url-search-params]: https://www.npmjs.com/package/url-search-params | ||
[NPM whatwg-fetch]: https://www.npmjs.com/package/whatwg-fetch | ||
[NPM url-search-params-polyfill]: https://www.npmjs.com/package/url-search-params-polyfill |
802331
0
67
6884
14
+ Addedautobahn@17.5.2(transitive)
+ Addedcbor@10.0.3(transitive)
+ Addedclient-oauth2@4.1.0(transitive)
+ Addednofilter@3.1.0(transitive)
+ Addedpopsicle@9.2.0(transitive)
+ Addeduuid@3.1.0(transitive)
- Removedany-promise@1.3.0(transitive)
- Removedarrify@1.0.1(transitive)
- Removedautobahn@0.11.2(transitive)
- Removedclient-oauth2@3.4.1(transitive)
- Removedpopsicle@8.2.0(transitive)
- Removedthrowback@1.1.1(transitive)
- Removeduuid@3.4.0(transitive)
- Removedxtend@4.0.2(transitive)
Updatedautobahn@17.5.2
Updatedclient-oauth2@4.1.0
Updatedevent-emitter@0.3.5
Updatedpcmjs@0.0.2
Updateduuid@3.1.0
Updatedwhen@3.7.8