Socket
Socket
Sign inDemoInstall

@glimmer/syntax

Package Overview
Dependencies
Maintainers
12
Versions
288
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/syntax - npm Package Compare versions

Comparing version 0.76.0 to 0.77.0

2

dist/commonjs/es2017/index.js

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

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ3VCOzs7Ozs7QUFDQTs7OztBQUN2Qjs7QUFDQTs7QUFDQTs7QUFDQTs7QUFRQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFVQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNvdXJjZSB9IGZyb20gJy4vbGliL3NvdXJjZS9zb3VyY2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBidWlsZGVycyB9IGZyb20gJy4vbGliL3YxL3B1YmxpYy1idWlsZGVycyc7XG5leHBvcnQgKiBhcyBBU1R2MSBmcm9tICcuL2xpYi92MS9hcGknO1xuZXhwb3J0ICogYXMgQVNUdjIgZnJvbSAnLi9saWIvdjItYS9hcGknO1xuZXhwb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnLi9saWIvdjItYS9ub3JtYWxpemUnO1xuZXhwb3J0IHsgU3ltYm9sVGFibGUsIEJsb2NrU3ltYm9sVGFibGUsIFByb2dyYW1TeW1ib2xUYWJsZSB9IGZyb20gJy4vbGliL3N5bWJvbC10YWJsZSc7XG5leHBvcnQgeyBnZW5lcmF0ZVN5bnRheEVycm9yLCBHbGltbWVyU3ludGF4RXJyb3IgfSBmcm9tICcuL2xpYi9zeW50YXgtZXJyb3InO1xuZXhwb3J0IHtcbiAgcHJlcHJvY2VzcyxcbiAgQVNUUGx1Z2luLFxuICBBU1RQbHVnaW5CdWlsZGVyLFxuICBBU1RQbHVnaW5FbnZpcm9ubWVudCxcbiAgU3ludGF4LFxuICBQcmVjb21waWxlT3B0aW9ucyxcbn0gZnJvbSAnLi9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByaW50IH0gZnJvbSAnLi9saWIvZ2VuZXJhdGlvbi9wcmludCc7XG5leHBvcnQgeyBzb3J0QnlMb2MgfSBmcm9tICcuL2xpYi9nZW5lcmF0aW9uL3V0aWwnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXYWxrZXIgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvd2Fsa2VyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhdmVyc2UgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvdHJhdmVyc2UnO1xuZXhwb3J0IHsgTm9kZVZpc2l0b3IgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvdmlzaXRvcic7XG5leHBvcnQgeyBjYW5ub3RSZW1vdmVOb2RlLCBjYW5ub3RSZXBsYWNlTm9kZSB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC9lcnJvcnMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXYWxrZXJQYXRoIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3BhdGgnO1xuZXhwb3J0IHsgaXNLZXl3b3JkLCBLZXl3b3JkVHlwZSwgS0VZV09SRFNfVFlQRVMgfSBmcm9tICcuL2xpYi9rZXl3b3Jkcyc7XG5cbmV4cG9ydCB7IFNvdXJjZVNsaWNlIH0gZnJvbSAnLi9saWIvc291cmNlL3NsaWNlJztcbmV4cG9ydCB7IFNvdXJjZVNwYW4gfSBmcm9tICcuL2xpYi9zb3VyY2Uvc3Bhbic7XG5leHBvcnQge1xuICBTcGFuTGlzdCxcbiAgbWF5YmVMb2MsXG4gIE1heWJlSGFzU291cmNlU3BhbixcbiAgbG9jLFxuICBIYXNTb3VyY2VTcGFuLFxuICBoYXNTcGFuLFxufSBmcm9tICcuL2xpYi9zb3VyY2Uvc3Bhbi1saXN0JztcbmV4cG9ydCB7IFByZXByb2Nlc3NPcHRpb25zIH0gZnJvbSAnLi9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5cbmV4cG9ydCB7IG5vZGUgfSBmcm9tICcuL2xpYi92Mi1hL29iamVjdHMvbm9kZSc7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgV2Fsa2VyUGF0aCBpbnN0ZWFkICovXG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhdGggfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvd2Fsa2VyJztcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBBU1R2MSBpbnN0ZWFkICovXG5leHBvcnQgKiBhcyBBU1QgZnJvbSAnLi9saWIvdjEvYXBpJztcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ3VCOzs7Ozs7QUFDQTs7OztBQUN2Qjs7QUFDQTs7QUFDQTs7QUFDQTs7QUFTQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFVQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNvdXJjZSB9IGZyb20gJy4vbGliL3NvdXJjZS9zb3VyY2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBidWlsZGVycyB9IGZyb20gJy4vbGliL3YxL3B1YmxpYy1idWlsZGVycyc7XG5leHBvcnQgKiBhcyBBU1R2MSBmcm9tICcuL2xpYi92MS9hcGknO1xuZXhwb3J0ICogYXMgQVNUdjIgZnJvbSAnLi9saWIvdjItYS9hcGknO1xuZXhwb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnLi9saWIvdjItYS9ub3JtYWxpemUnO1xuZXhwb3J0IHsgU3ltYm9sVGFibGUsIEJsb2NrU3ltYm9sVGFibGUsIFByb2dyYW1TeW1ib2xUYWJsZSB9IGZyb20gJy4vbGliL3N5bWJvbC10YWJsZSc7XG5leHBvcnQgeyBnZW5lcmF0ZVN5bnRheEVycm9yLCBHbGltbWVyU3ludGF4RXJyb3IgfSBmcm9tICcuL2xpYi9zeW50YXgtZXJyb3InO1xuZXhwb3J0IHtcbiAgcHJlcHJvY2VzcyxcbiAgQVNUUGx1Z2luLFxuICBBU1RQbHVnaW5CdWlsZGVyLFxuICBBU1RQbHVnaW5FbnZpcm9ubWVudCxcbiAgU3ludGF4LFxuICBUZW1wbGF0ZUlkRm4sXG4gIFByZWNvbXBpbGVPcHRpb25zLFxufSBmcm9tICcuL2xpYi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJpbnQgfSBmcm9tICcuL2xpYi9nZW5lcmF0aW9uL3ByaW50JztcbmV4cG9ydCB7IHNvcnRCeUxvYyB9IGZyb20gJy4vbGliL2dlbmVyYXRpb24vdXRpbCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFdhbGtlciB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC93YWxrZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmF2ZXJzZSB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC90cmF2ZXJzZSc7XG5leHBvcnQgeyBOb2RlVmlzaXRvciB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC92aXNpdG9yJztcbmV4cG9ydCB7IGNhbm5vdFJlbW92ZU5vZGUsIGNhbm5vdFJlcGxhY2VOb2RlIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL2Vycm9ycyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFdhbGtlclBhdGggfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvcGF0aCc7XG5leHBvcnQgeyBpc0tleXdvcmQsIEtleXdvcmRUeXBlLCBLRVlXT1JEU19UWVBFUyB9IGZyb20gJy4vbGliL2tleXdvcmRzJztcblxuZXhwb3J0IHsgU291cmNlU2xpY2UgfSBmcm9tICcuL2xpYi9zb3VyY2Uvc2xpY2UnO1xuZXhwb3J0IHsgU291cmNlU3BhbiB9IGZyb20gJy4vbGliL3NvdXJjZS9zcGFuJztcbmV4cG9ydCB7XG4gIFNwYW5MaXN0LFxuICBtYXliZUxvYyxcbiAgTWF5YmVIYXNTb3VyY2VTcGFuLFxuICBsb2MsXG4gIEhhc1NvdXJjZVNwYW4sXG4gIGhhc1NwYW4sXG59IGZyb20gJy4vbGliL3NvdXJjZS9zcGFuLWxpc3QnO1xuZXhwb3J0IHsgUHJlcHJvY2Vzc09wdGlvbnMgfSBmcm9tICcuL2xpYi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzJztcblxuZXhwb3J0IHsgbm9kZSB9IGZyb20gJy4vbGliL3YyLWEvb2JqZWN0cy9ub2RlJztcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBXYWxrZXJQYXRoIGluc3RlYWQgKi9cbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aCB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC93YWxrZXInO1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIEFTVHYxIGluc3RlYWQgKi9cbmV4cG9ydCAqIGFzIEFTVCBmcm9tICcuL2xpYi92MS9hcGknO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

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

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOzs7O0FBRU0sTUFBQSxzQkFBQSxTQUFBLDhDQUFBLENBQTREO0FBQWxFLEVBQUEsV0FBQSxHQUFBOztBQUNVLFNBQUEsV0FBQSxHQUFBLENBQUE7QUFDQSxTQUFBLGFBQUEsR0FBQSxDQUFBO0FBZ1NUOztBQTlSQyxFQUFBLEtBQUssR0FBQTtBQUNILFNBQUEsV0FBQSxHQUFBLElBQUE7QUFMOEQsR0FBQSxDQVFoRTs7O0FBRUEsRUFBQSxZQUFZLEdBQUE7QUFDVixTQUFBLFdBQUEsR0FBbUIsd0JBQUEsT0FBQSxDQUFBLEVBQUEsRUFBYyxLQUFBLE1BQUEsQ0FBQSxTQUFBLENBQXNCLEtBQXRCLFdBQUEsRUFBd0MsS0FBekUsYUFBaUMsQ0FBZCxDQUFuQjtBQUNEOztBQUVELEVBQUEsbUJBQW1CLENBQUEsSUFBQSxFQUFhO0FBQzlCLFNBQUEsY0FBQSxDQUFBLEtBQUEsSUFBQSxJQUFBO0FBQ0Q7O0FBRUQsRUFBQSxhQUFhLEdBQUE7QUFDWCw0QkFBWSxLQUFELGNBQUMsRUFBWixFQUFtQyxLQUFBLE1BQUEsQ0FBWSxLQUEvQyxjQUFtQyxDQUFuQztBQW5COEQsR0FBQSxDQXNCaEU7OztBQUVBLEVBQUEsU0FBUyxHQUFBO0FBQ1AsU0FBQSxXQUFBLEdBQW1CLHdCQUFBLElBQUEsQ0FBTztBQUN4QixNQUFBLEtBQUssRUFEbUIsRUFBQTtBQUV4QixNQUFBLEdBQUcsRUFBRSxLQUFBLE1BQUEsR0FBQSxTQUFBO0FBRm1CLEtBQVAsQ0FBbkI7QUFJRDs7QUFFRCxFQUFBLFlBQVksQ0FBQSxJQUFBLEVBQWE7QUFD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Q0FBQSxHQUFBLENBQXBCLE1BQUEsRUFBZ0QsQ0FBQyxHQUFqRCxDQUFBLEVBQXVELENBQXZELEVBQUEsRUFBNEQ7QUFDMUQsVUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFQLE9BQUEsQ0FBQSxHQUFBLENBQWhCLENBQWdCLENBQWhCO0FBQ0EsVUFBSSxHQUFHLEdBQXlCLGtCQUFNLEVBQU4sRUFBTSxPQUFOLEVBQW9CO0FBQUUsUUFBQTtBQUFGLE9BQXBCLEVBQWdDO0FBQUUsUUFBQSxPQUFPLEVBQUU7QUFBWCxPQUFoQyxDQUFoQztBQUVBLFVBQUksWUFBWSxHQUFHLFNBQVMsQ0FBNUIsR0FBNEIsQ0FBNUI7QUFFQSw2QkFBUSxPQUFSLEVBQWtCLFlBQVksQ0FBOUIsT0FBQTtBQUNEO0FBQ0Y7O0FBRUQsU0FBQSxPQUFBO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnRQcmVzZW50LCBhc3NpZ24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IHBhcnNlLCBwYXJzZVdpdGhvdXRQcm9jZXNzaW5nIH0gZnJvbSAnQGhhbmRsZWJhcnMvcGFyc2VyJztcbmltcG9ydCB7IEVudGl0eVBhcnNlciB9IGZyb20gJ3NpbXBsZS1odG1sLXRva2VuaXplcic7XG5cbmltcG9ydCBwcmludCBmcm9tICcuLi9nZW5lcmF0aW9uL3ByaW50JztcbmltcG9ydCB7IHZvaWRNYXAgfSBmcm9tICcuLi9nZW5lcmF0aW9uL3ByaW50ZXInO1xuaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi4vcGFyc2VyJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJy4uL3NvdXJjZS9zb3VyY2UnO1xuaW1wb3J0IHsgU291cmNlT2Zmc2V0LCBTb3VyY2VTcGFuIH0gZnJvbSAnLi4vc291cmNlL3NwYW4nO1xuaW1wb3J0IHsgZ2VuZXJhdGVTeW50YXhFcnJvciB9IGZyb20gJy4uL3N5bnRheC1lcnJvcic7XG5pbXBvcnQgdHJhdmVyc2UgZnJvbSAnLi4vdHJhdmVyc2FsL3RyYXZlcnNlJztcbmltcG9ydCB7IE5vZGVWaXNpdG9yIH0gZnJvbSAnLi4vdHJhdmVyc2FsL3Zpc2l0b3InO1xuaW1wb3J0IFdhbGtlciBmcm9tICcuLi90cmF2ZXJzYWwvd2Fsa2VyJztcbmltcG9ydCB7IGFwcGVuZENoaWxkLCBwYXJzZUVsZW1lbnRCbG9ja1BhcmFtcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCAqIGFzIEFTVHYxIGZyb20gJy4uL3YxL2FwaSc7XG5pbXBvcnQgKiBhcyBIQlMgZnJvbSAnLi4vdjEvaGFuZGxlYmFycy1hc3QnO1xuaW1wb3J0IGIgZnJvbSAnLi4vdjEvcGFyc2VyLWJ1aWxkZXJzJztcbmltcG9ydCBwdWJsaWNCdWlsZGVyIGZyb20gJy4uL3YxL3B1YmxpYy1idWlsZGVycyc7XG5pbXBvcnQgeyBIYW5kbGViYXJzTm9kZVZpc2l0b3JzIH0gZnJvbSAnLi9oYW5kbGViYXJzLW5vZGUtdmlzaXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgVG9rZW5pemVyRXZlbnRIYW5kbGVycyBleHRlbmRzIEhhbmRsZWJhcnNOb2RlVmlzaXRvcnMge1xuICBwcml2YXRlIHRhZ09wZW5MaW5lID0gMDtcbiAgcHJpdmF0ZSB0YWdPcGVuQ29sdW1uID0gMDtcblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gbnVsbDtcbiAgfVxuXG4gIC8vIENvbW1lbnRcblxuICBiZWdpbkNvbW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IGIuY29tbWVudCgnJywgdGhpcy5zb3VyY2Uub2Zmc2V0Rm9yKHRoaXMudGFnT3BlbkxpbmUsIHRoaXMudGFnT3BlbkNvbHVtbikpO1xuICB9XG5cbiAgYXBwZW5kVG9Db21tZW50RGF0YShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRDb21tZW50LnZhbHVlICs9IGNoYXI7XG4gIH1cblxuICBmaW5pc2hDb21tZW50KCk6IHZvaWQge1xuICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgdGhpcy5maW5pc2godGhpcy5jdXJyZW50Q29tbWVudCkpO1xuICB9XG5cbiAgLy8gRGF0YVxuXG4gIGJlZ2luRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gYi50ZXh0KHtcbiAgICAgIGNoYXJzOiAnJyxcbiAgICAgIGxvYzogdGhpcy5vZmZzZXQoKS5jb2xsYXBzZWQoKSxcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGVuZFRvRGF0YShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRhLmNoYXJzICs9IGNoYXI7XG4gIH1cblxuICBmaW5pc2hEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGEubG9jID0gdGhpcy5jdXJyZW50RGF0YS5sb2Mud2l0aEVuZCh0aGlzLm9mZnNldCgpKTtcblxuICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgdGhpcy5jdXJyZW50RGF0YSk7XG4gIH1cblxuICAvLyBUYWdzIC0gYmFzaWNcblxuICB0YWdPcGVuKCk6IHZvaWQge1xuICAgIHRoaXMudGFnT3BlbkxpbmUgPSB0aGlzLnRva2VuaXplci5saW5lO1xuICAgIHRoaXMudGFnT3BlbkNvbHVtbiA9IHRoaXMudG9rZW5pemVyLmNvbHVtbjtcbiAgfVxuXG4gIGJlZ2luU3RhcnRUYWcoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IHtcbiAgICAgIHR5cGU6ICdTdGFydFRhZycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgbW9kaWZpZXJzOiBbXSxcbiAgICAgIGNvbW1lbnRzOiBbXSxcbiAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgIGxvYzogdGhpcy5zb3VyY2Uub2Zmc2V0Rm9yKHRoaXMudGFnT3BlbkxpbmUsIHRoaXMudGFnT3BlbkNvbHVtbiksXG4gICAgfTtcbiAgfVxuXG4gIGJlZ2luRW5kVGFnKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSB7XG4gICAgICB0eXBlOiAnRW5kVGFnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICBtb2RpZmllcnM6IFtdLFxuICAgICAgY29tbWVudHM6IFtdLFxuICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgbG9jOiB0aGlzLnNvdXJjZS5vZmZzZXRGb3IodGhpcy50YWdPcGVuTGluZSwgdGhpcy50YWdPcGVuQ29sdW1uKSxcbiAgICB9O1xuICB9XG5cbiAgZmluaXNoVGFnKCk6IHZvaWQge1xuICAgIGxldCB0YWcgPSB0aGlzLmZpbmlzaCh0aGlzLmN1cnJlbnRUYWcpO1xuXG4gICAgaWYgKHRhZy50eXBlID09PSAnU3RhcnRUYWcnKSB7XG4gICAgICB0aGlzLmZpbmlzaFN0YXJ0VGFnKCk7XG5cbiAgICAgIGlmICh0YWcubmFtZSA9PT0gJzonKSB7XG4gICAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgbmFtZWQgYmxvY2sgbmFtZWQgZGV0ZWN0ZWQsIHlvdSBtYXkgaGF2ZSBjcmVhdGVkIGEgbmFtZWQgYmxvY2sgd2l0aG91dCBhIG5hbWUsIG9yIHlvdSBtYXkgaGF2ZSBiZWdhbiB5b3VyIG5hbWUgd2l0aCBhIG51bWJlci4gTmFtZWQgYmxvY2tzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGFyZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGxvbmcsIGFuZCBiZWdpbiB3aXRoIGEgbG93ZXIgY2FzZSBsZXR0ZXInLFxuICAgICAgICAgIHRoaXMuc291cmNlLnNwYW5Gb3Ioe1xuICAgICAgICAgICAgc3RhcnQ6IHRoaXMuY3VycmVudFRhZy5sb2MudG9KU09OKCksXG4gICAgICAgICAgICBlbmQ6IHRoaXMub2Zmc2V0KCkudG9KU09OKCksXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZvaWRNYXBbdGFnLm5hbWVdIHx8IHRhZy5zZWxmQ2xvc2luZykge1xuICAgICAgICB0aGlzLmZpbmlzaEVuZFRhZyh0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRhZy50eXBlID09PSAnRW5kVGFnJykge1xuICAgICAgdGhpcy5maW5pc2hFbmRUYWcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmlzaFN0YXJ0VGFnKCk6IHZvaWQge1xuICAgIGxldCB7IG5hbWUsIGF0dHJpYnV0ZXM6IGF0dHJzLCBtb2RpZmllcnMsIGNvbW1lbnRzLCBzZWxmQ2xvc2luZywgbG9jIH0gPSB0aGlzLmZpbmlzaChcbiAgICAgIHRoaXMuY3VycmVudFN0YXJ0VGFnXG4gICAgKTtcblxuICAgIGxldCBlbGVtZW50ID0gYi5lbGVtZW50KHtcbiAgICAgIHRhZzogbmFtZSxcbiAgICAgIHNlbGZDbG9zaW5nLFxuICAgICAgYXR0cnMsXG4gICAgICBtb2RpZmllcnMsXG4gICAgICBjb21tZW50cyxcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIGJsb2NrUGFyYW1zOiBbXSxcbiAgICAgIGxvYyxcbiAgICB9KTtcbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKGVsZW1lbnQpO1xuICB9XG5cbiAgZmluaXNoRW5kVGFnKGlzVm9pZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGxldCB0YWcgPSB0aGlzLmZpbmlzaCh0aGlzLmN1cnJlbnRUYWcpO1xuXG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKSBhcyBBU1R2MS5FbGVtZW50Tm9kZTtcbiAgICBsZXQgcGFyZW50ID0gdGhpcy5jdXJyZW50RWxlbWVudCgpO1xuXG4gICAgdGhpcy52YWxpZGF0ZUVuZFRhZyh0YWcsIGVsZW1lbnQsIGlzVm9pZCk7XG5cbiAgICBlbGVtZW50LmxvYyA9IGVsZW1lbnQubG9jLndpdGhFbmQodGhpcy5vZmZzZXQoKSk7XG4gICAgcGFyc2VFbGVtZW50QmxvY2tQYXJhbXMoZWxlbWVudCk7XG4gICAgYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcbiAgfVxuXG4gIG1hcmtUYWdBc1NlbGZDbG9zaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFRhZy5zZWxmQ2xvc2luZyA9IHRydWU7XG4gIH1cblxuICAvLyBUYWdzIC0gbmFtZVxuXG4gIGFwcGVuZFRvVGFnTmFtZShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRUYWcubmFtZSArPSBjaGFyO1xuICB9XG5cbiAgLy8gVGFncyAtIGF0dHJpYnV0ZXNcblxuICBiZWdpbkF0dHJpYnV0ZSgpOiB2b2lkIHtcbiAgICBsZXQgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZSA9IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgcGFydHM6IFtdLFxuICAgICAgY3VycmVudFBhcnQ6IG51bGwsXG4gICAgICBpc1F1b3RlZDogZmFsc2UsXG4gICAgICBpc0R5bmFtaWM6IGZhbHNlLFxuICAgICAgc3RhcnQ6IG9mZnNldCxcbiAgICAgIHZhbHVlU3Bhbjogb2Zmc2V0LmNvbGxhcHNlZCgpLFxuICAgIH07XG4gIH1cblxuICBhcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IGNoYXI7XG4gIH1cblxuICBiZWdpbkF0dHJpYnV0ZVZhbHVlKGlzUXVvdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50QXR0ci5pc1F1b3RlZCA9IGlzUXVvdGVkO1xuICAgIHRoaXMuc3RhcnRUZXh0UGFydCgpO1xuICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWVTcGFuID0gdGhpcy5vZmZzZXQoKS5jb2xsYXBzZWQoKTtcbiAgfVxuXG4gIGFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IHBhcnRzID0gdGhpcy5jdXJyZW50QXR0ci5wYXJ0cztcbiAgICBsZXQgbGFzdFBhcnQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcblxuICAgIGxldCBjdXJyZW50ID0gdGhpcy5jdXJyZW50QXR0ci5jdXJyZW50UGFydDtcblxuICAgIGlmIChjdXJyZW50KSB7XG4gICAgICBjdXJyZW50LmNoYXJzICs9IGNoYXI7XG5cbiAgICAgIC8vIHVwZGF0ZSBlbmQgbG9jYXRpb24gZm9yIGVhY2ggYWRkZWQgY2hhclxuICAgICAgY3VycmVudC5sb2MgPSBjdXJyZW50LmxvYy53aXRoRW5kKHRoaXMub2Zmc2V0KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbml0aWFsbHkgYXNzdW1lIHRoZSB0ZXh0IG5vZGUgaXMgYSBzaW5nbGUgY2hhclxuICAgICAgbGV0IGxvYzogU291cmNlT2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuICAgICAgLy8gdGhlIHRva2VuaXplciBsaW5lL2NvbHVtbiBoYXZlIGFscmVhZHkgYmVlbiBhZHZhbmNlZCwgY29ycmVjdCBsb2NhdGlvbiBpbmZvXG4gICAgICBpZiAoY2hhciA9PT0gJ1xcbicpIHtcbiAgICAgICAgbG9jID0gbGFzdFBhcnQgPyBsYXN0UGFydC5sb2MuZ2V0RW5kKCkgOiB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlU3Bhbi5nZXRTdGFydCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9jID0gbG9jLm1vdmUoLTEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRBdHRyLmN1cnJlbnRQYXJ0ID0gYi50ZXh0KHsgY2hhcnM6IGNoYXIsIGxvYzogbG9jLmNvbGxhcHNlZCgpIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMuZmluYWxpemVUZXh0UGFydCgpO1xuXG4gICAgbGV0IHRhZyA9IHRoaXMuY3VycmVudFRhZztcbiAgICBsZXQgdG9rZW5pemVyUG9zID0gdGhpcy5vZmZzZXQoKTtcblxuICAgIGlmICh0YWcudHlwZSA9PT0gJ0VuZFRhZycpIHtcbiAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGVuZCB0YWc6IGNsb3NpbmcgdGFnIG11c3Qgbm90IGhhdmUgYXR0cmlidXRlc2AsXG4gICAgICAgIHRoaXMuc291cmNlLnNwYW5Gb3IoeyBzdGFydDogdGFnLmxvYy50b0pTT04oKSwgZW5kOiB0b2tlbml6ZXJQb3MudG9KU09OKCkgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IHsgbmFtZSwgcGFydHMsIHN0YXJ0LCBpc1F1b3RlZCwgaXNEeW5hbWljLCB2YWx1ZVNwYW4gfSA9IHRoaXMuY3VycmVudEF0dHI7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5hc3NlbWJsZUF0dHJpYnV0ZVZhbHVlKHBhcnRzLCBpc1F1b3RlZCwgaXNEeW5hbWljLCBzdGFydC51bnRpbCh0b2tlbml6ZXJQb3MpKTtcbiAgICB2YWx1ZS5sb2MgPSB2YWx1ZVNwYW4ud2l0aEVuZCh0b2tlbml6ZXJQb3MpO1xuXG4gICAgbGV0IGF0dHJpYnV0ZSA9IGIuYXR0cih7IG5hbWUsIHZhbHVlLCBsb2M6IHN0YXJ0LnVudGlsKHRva2VuaXplclBvcykgfSk7XG5cbiAgICB0aGlzLmN1cnJlbnRTdGFydFRhZy5hdHRyaWJ1dGVzLnB1c2goYXR0cmlidXRlKTtcbiAgfVxuXG4gIHJlcG9ydFN5bnRheEVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IobWVzc2FnZSwgdGhpcy5vZmZzZXQoKS5jb2xsYXBzZWQoKSk7XG4gIH1cblxuICBhc3NlbWJsZUNvbmNhdGVuYXRlZFZhbHVlKFxuICAgIHBhcnRzOiAoQVNUdjEuTXVzdGFjaGVTdGF0ZW1lbnQgfCBBU1R2MS5UZXh0Tm9kZSlbXVxuICApOiBBU1R2MS5Db25jYXRTdGF0ZW1lbnQge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBwYXJ0OiBBU1R2MS5CYXNlTm9kZSA9IHBhcnRzW2ldO1xuXG4gICAgICBpZiAocGFydC50eXBlICE9PSAnTXVzdGFjaGVTdGF0ZW1lbnQnICYmIHBhcnQudHlwZSAhPT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICdVbnN1cHBvcnRlZCBub2RlIGluIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWU6ICcgKyBwYXJ0Wyd0eXBlJ10sXG4gICAgICAgICAgcGFydC5sb2NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3NlcnRQcmVzZW50KHBhcnRzLCBgdGhlIGNvbmNhdGVuYXRpb24gcGFydHMgb2YgYW4gZWxlbWVudCBzaG91bGQgbm90IGJlIGVtcHR5YCk7XG5cbiAgICBsZXQgZmlyc3QgPSBwYXJ0c1swXTtcbiAgICBsZXQgbGFzdCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuXG4gICAgcmV0dXJuIGIuY29uY2F0KHBhcnRzLCB0aGlzLnNvdXJjZS5zcGFuRm9yKGZpcnN0LmxvYykuZXh0ZW5kKHRoaXMuc291cmNlLnNwYW5Gb3IobGFzdC5sb2MpKSk7XG4gIH1cblxuICB2YWxpZGF0ZUVuZFRhZyhcbiAgICB0YWc6IFRhZzwnU3RhcnRUYWcnIHwgJ0VuZFRhZyc+LFxuICAgIGVsZW1lbnQ6IEFTVHYxLkVsZW1lbnROb2RlLFxuICAgIHNlbGZDbG9zaW5nOiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGxldCBlcnJvcjtcblxuICAgIGlmICh2b2lkTWFwW3RhZy5uYW1lXSAmJiAhc2VsZkNsb3NpbmcpIHtcbiAgICAgIC8vIEVuZ1RhZyBpcyBhbHNvIGNhbGxlZCBieSBTdGFydFRhZyBmb3Igdm9pZCBhbmQgc2VsZi1jbG9zaW5nIHRhZ3MgKGkuZS5cbiAgICAgIC8vIDxpbnB1dD4gb3IgPGJyIC8+LCBzbyB3ZSBuZWVkIHRvIGNoZWNrIGZvciB0aGF0IGhlcmUuIE90aGVyd2lzZSwgd2Ugd291bGRcbiAgICAgIC8vIHRocm93IGFuIGVycm9yIGZvciB0aG9zZSBjYXNlcy5cbiAgICAgIGVycm9yID0gYDwke3RhZy5uYW1lfT4gZWxlbWVudHMgZG8gbm90IG5lZWQgZW5kIHRhZ3MuIFlvdSBzaG91bGQgcmVtb3ZlIGl0YDtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVycm9yID0gYENsb3NpbmcgdGFnIDwvJHt0YWcubmFtZX0+IHdpdGhvdXQgYW4gb3BlbiB0YWdgO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC50YWcgIT09IHRhZy5uYW1lKSB7XG4gICAgICBlcnJvciA9IGBDbG9zaW5nIHRhZyA8LyR7dGFnLm5hbWV9PiBkaWQgbm90IG1hdGNoIGxhc3Qgb3BlbiB0YWcgPCR7ZWxlbWVudC50YWd9PiAob24gbGluZSAke2VsZW1lbnQubG9jLnN0YXJ0UG9zaXRpb24ubGluZX0pYDtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoZXJyb3IsIHRhZy5sb2MpO1xuICAgIH1cbiAgfVxuXG4gIGFzc2VtYmxlQXR0cmlidXRlVmFsdWUoXG4gICAgcGFydHM6IChBU1R2MS5NdXN0YWNoZVN0YXRlbWVudCB8IEFTVHYxLlRleHROb2RlKVtdLFxuICAgIGlzUXVvdGVkOiBib29sZWFuLFxuICAgIGlzRHluYW1pYzogYm9vbGVhbixcbiAgICBzcGFuOiBTb3VyY2VTcGFuXG4gICk6IEFTVHYxLkNvbmNhdFN0YXRlbWVudCB8IEFTVHYxLk11c3RhY2hlU3RhdGVtZW50IHwgQVNUdjEuVGV4dE5vZGUge1xuICAgIGlmIChpc0R5bmFtaWMpIHtcbiAgICAgIGlmIChpc1F1b3RlZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hc3NlbWJsZUNvbmNhdGVuYXRlZFZhbHVlKHBhcnRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJ0cy5sZW5ndGggPT09IDEgfHxcbiAgICAgICAgICAocGFydHMubGVuZ3RoID09PSAyICYmXG4gICAgICAgICAgICBwYXJ0c1sxXS50eXBlID09PSAnVGV4dE5vZGUnICYmXG4gICAgICAgICAgICAocGFydHNbMV0gYXMgQVNUdjEuVGV4dE5vZGUpLmNoYXJzID09PSAnLycpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBwYXJ0c1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYEFuIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgbXVzdGFjaGUsIGAgK1xuICAgICAgICAgICAgICBgcHJlY2VkZWQgYnkgd2hpdGVzcGFjZSBvciBhICc9JyBjaGFyYWN0ZXIsIGFuZCBgICtcbiAgICAgICAgICAgICAgYGZvbGxvd2VkIGJ5IHdoaXRlc3BhY2UsIGEgJz4nIGNoYXJhY3Rlciwgb3IgJy8+J2AsXG4gICAgICAgICAgICBzcGFuXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFydHMubGVuZ3RoID4gMCA/IHBhcnRzWzBdIDogYi50ZXh0KHsgY2hhcnM6ICcnLCBsb2M6IHNwYW4gfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICBBU1RQbHVnaW5zIGNhbiBtYWtlIGNoYW5nZXMgdG8gdGhlIEdsaW1tZXIgdGVtcGxhdGUgQVNUIGJlZm9yZVxuICBjb21waWxhdGlvbiBiZWdpbnMuXG4qL1xuZXhwb3J0IGludGVyZmFjZSBBU1RQbHVnaW5CdWlsZGVyPFRFbnYgZXh0ZW5kcyBBU1RQbHVnaW5FbnZpcm9ubWVudCA9IEFTVFBsdWdpbkVudmlyb25tZW50PiB7XG4gIChlbnY6IFRFbnYpOiBBU1RQbHVnaW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVNUUGx1Z2luIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2aXNpdG9yOiBOb2RlVmlzaXRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBU1RQbHVnaW5FbnZpcm9ubWVudCB7XG4gIG1ldGE/OiBvYmplY3Q7XG4gIHN5bnRheDogU3ludGF4O1xufVxuXG5pbnRlcmZhY2UgSGFuZGxlYmFyc1BhcnNlT3B0aW9ucyB7XG4gIHNyY05hbWU/OiBzdHJpbmc7XG4gIGlnbm9yZVN0YW5kYWxvbmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZWNvbXBpbGVPcHRpb25zIGV4dGVuZHMgUHJlcHJvY2Vzc09wdGlvbnMge1xuICBjdXN0b21pemVDb21wb25lbnROYW1lPyhpbnB1dDogc3RyaW5nKTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXByb2Nlc3NPcHRpb25zIHtcbiAgc3RyaWN0TW9kZT86IGJvb2xlYW47XG4gIGxvY2Fscz86IHN0cmluZ1tdO1xuICBtZXRhPzoge1xuICAgIG1vZHVsZU5hbWU/OiBzdHJpbmc7XG4gIH07XG4gIHBsdWdpbnM/OiB7XG4gICAgYXN0PzogQVNUUGx1Z2luQnVpbGRlcltdO1xuICB9O1xuICBwYXJzZU9wdGlvbnM/OiBIYW5kbGViYXJzUGFyc2VPcHRpb25zO1xuICBjdXN0b21pemVDb21wb25lbnROYW1lPyhpbnB1dDogc3RyaW5nKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgIFVzZWZ1bCBmb3Igc3BlY2lmeWluZyBhIGdyb3VwIG9mIG9wdGlvbnMgdG9nZXRoZXIuXG5cbiAgICBXaGVuIGAnY29kZW1vZCdgIHdlIGRpc2FibGUgYWxsIHdoaXRlc3BhY2UgY29udHJvbCBpbiBoYW5kbGViYXJzXG4gICAgKHRvIHByZXNlcnZlIGFzIG11Y2ggYXMgcG9zc2libGUpIGFuZCB3ZSBhbHNvIGF2b2lkIGFueVxuICAgIGVzY2FwaW5nL3VuZXNjYXBpbmcgb2YgSFRNTCBlbnRpdHkgY29kZXMuXG4gICAqL1xuICBtb2RlPzogJ2NvZGVtb2QnIHwgJ3ByZWNvbXBpbGUnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN5bnRheCB7XG4gIHBhcnNlOiB0eXBlb2YgcHJlcHJvY2VzcztcbiAgYnVpbGRlcnM6IHR5cGVvZiBwdWJsaWNCdWlsZGVyO1xuICBwcmludDogdHlwZW9mIHByaW50O1xuICB0cmF2ZXJzZTogdHlwZW9mIHRyYXZlcnNlO1xuICBXYWxrZXI6IHR5cGVvZiBXYWxrZXI7XG59XG5cbmNvbnN0IHN5bnRheDogU3ludGF4ID0ge1xuICBwYXJzZTogcHJlcHJvY2VzcyxcbiAgYnVpbGRlcnM6IHB1YmxpY0J1aWxkZXIsXG4gIHByaW50LFxuICB0cmF2ZXJzZSxcbiAgV2Fsa2VyLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByZXByb2Nlc3MoXG4gIGlucHV0OiBzdHJpbmcgfCBTb3VyY2UgfCBIQlMuUHJvZ3JhbSxcbiAgb3B0aW9uczogUHJlcHJvY2Vzc09wdGlvbnMgPSB7fVxuKTogQVNUdjEuVGVtcGxhdGUge1xuICBsZXQgbW9kZSA9IG9wdGlvbnMubW9kZSB8fCAncHJlY29tcGlsZSc7XG5cbiAgbGV0IHNvdXJjZTogU291cmNlO1xuICBsZXQgYXN0OiBIQlMuUHJvZ3JhbTtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2UgPSBuZXcgU291cmNlKGlucHV0LCBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWUpO1xuXG4gICAgaWYgKG1vZGUgPT09ICdjb2RlbW9kJykge1xuICAgICAgYXN0ID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dCwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpIGFzIEhCUy5Qcm9ncmFtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3QgPSBwYXJzZShpbnB1dCwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpIGFzIEhCUy5Qcm9ncmFtO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFNvdXJjZSkge1xuICAgIHNvdXJjZSA9IGlucHV0O1xuXG4gICAgaWYgKG1vZGUgPT09ICdjb2RlbW9kJykge1xuICAgICAgYXN0ID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dC5zb3VyY2UsIG9wdGlvbnMucGFyc2VPcHRpb25zKSBhcyBIQlMuUHJvZ3JhbTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXN0ID0gcGFyc2UoaW5wdXQuc291cmNlLCBvcHRpb25zLnBhcnNlT3B0aW9ucykgYXMgSEJTLlByb2dyYW07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNvdXJjZSA9IG5ldyBTb3VyY2UoJycsIG9wdGlvbnMubWV0YT8ubW9kdWxlTmFtZSk7XG4gICAgYXN0ID0gaW5wdXQ7XG4gIH1cblxuICBsZXQgZW50aXR5UGFyc2VyID0gdW5kZWZpbmVkO1xuICBpZiAobW9kZSA9PT0gJ2NvZGVtb2QnKSB7XG4gICAgZW50aXR5UGFyc2VyID0gbmV3IEVudGl0eVBhcnNlcih7fSk7XG4gIH1cblxuICBsZXQgb2Zmc2V0cyA9IFNvdXJjZVNwYW4uZm9yQ2hhclBvc2l0aW9ucyhzb3VyY2UsIDAsIHNvdXJjZS5zb3VyY2UubGVuZ3RoKTtcbiAgYXN0LmxvYyA9IHtcbiAgICBzb3VyY2U6ICcocHJvZ3JhbSknLFxuICAgIHN0YXJ0OiBvZmZzZXRzLnN0YXJ0UG9zaXRpb24sXG4gICAgZW5kOiBvZmZzZXRzLmVuZFBvc2l0aW9uLFxuICB9O1xuXG4gIGxldCBwcm9ncmFtID0gbmV3IFRva2VuaXplckV2ZW50SGFuZGxlcnMoc291cmNlLCBlbnRpdHlQYXJzZXIsIG1vZGUpLmFjY2VwdFRlbXBsYXRlKGFzdCk7XG5cbiAgaWYgKG9wdGlvbnMuc3RyaWN0TW9kZSkge1xuICAgIHByb2dyYW0uYmxvY2tQYXJhbXMgPSBvcHRpb25zLmxvY2FscyA/PyBbXTtcbiAgfVxuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMucGx1Z2lucyAmJiBvcHRpb25zLnBsdWdpbnMuYXN0KSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBvcHRpb25zLnBsdWdpbnMuYXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgbGV0IHRyYW5zZm9ybSA9IG9wdGlvbnMucGx1Z2lucy5hc3RbaV07XG4gICAgICBsZXQgZW52OiBBU1RQbHVnaW5FbnZpcm9ubWVudCA9IGFzc2lnbih7fSwgb3B0aW9ucywgeyBzeW50YXggfSwgeyBwbHVnaW5zOiB1bmRlZmluZWQgfSk7XG5cbiAgICAgIGxldCBwbHVnaW5SZXN1bHQgPSB0cmFuc2Zvcm0oZW52KTtcblxuICAgICAgdHJhdmVyc2UocHJvZ3JhbSwgcGx1Z2luUmVzdWx0LnZpc2l0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcm9ncmFtO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOzs7O0FBRU0sTUFBQSxzQkFBQSxTQUFBLDhDQUFBLENBQTREO0FBQWxFLEVBQUEsV0FBQSxHQUFBOztBQUNVLFNBQUEsV0FBQSxHQUFBLENBQUE7QUFDQSxTQUFBLGFBQUEsR0FBQSxDQUFBO0FBZ1NUOztBQTlSQyxFQUFBLEtBQUssR0FBQTtBQUNILFNBQUEsV0FBQSxHQUFBLElBQUE7QUFMOEQsR0FBQSxDQVFoRTs7O0FBRUEsRUFBQSxZQUFZLEdBQUE7QUFDVixTQUFBLFdBQUEsR0FBbUIsd0JBQUEsT0FBQSxDQUFBLEVBQUEsRUFBYyxLQUFBLE1BQUEsQ0FBQSxTQUFBLENBQXNCLEtBQXRCLFdBQUEsRUFBd0MsS0FBekUsYUFBaUMsQ0FBZCxDQUFuQjtBQUNEOztBQUVELEVBQUEsbUJBQW1CLENBQUEsSUFBQSxFQUFhO0FBQzlCLFNBQUEsY0FBQSxDQUFBLEtBQUEsSUFBQSxJQUFBO0FBQ0Q7O0FBRUQsRUFBQSxhQUFhLEdBQUE7QUFDWCw0QkFBWSxLQUFELGNBQUMsRUFBWixFQUFtQyxLQUFBLE1BQUEsQ0FBWSxLQUEvQyxjQUFtQyxDQUFuQztBQW5COEQsR0FBQSxDQXNCaEU7OztBQUVBLEVBQUEsU0FBUyxHQUFBO0FBQ1AsU0FBQSxXQUFBLEdBQW1CLHdCQUFBLElBQUEsQ0FBTztBQUN4QixNQUFBLEtBQUssRUFEbUIsRUFBQTtBQUV4QixNQUFBLEdBQUcsRUFBRSxLQUFBLE1BQUEsR0FBQSxTQUFBO0FBRm1CLEtBQVAsQ0FBbkI7QUFJRDs7QUFFRCxFQUFBLFlBQVksQ0FBQSxJQUFBLEVBQWE7QUFD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Q0FBQSxHQUFBLENBQXBCLE1BQUEsRUFBZ0QsQ0FBQyxHQUFqRCxDQUFBLEVBQXVELENBQXZELEVBQUEsRUFBNEQ7QUFDMUQsVUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFQLE9BQUEsQ0FBQSxHQUFBLENBQWhCLENBQWdCLENBQWhCO0FBQ0EsVUFBSSxHQUFHLEdBQXlCLGtCQUFNLEVBQU4sRUFBTSxPQUFOLEVBQW9CO0FBQUUsUUFBQTtBQUFGLE9BQXBCLEVBQWdDO0FBQUUsUUFBQSxPQUFPLEVBQUU7QUFBWCxPQUFoQyxDQUFoQztBQUVBLFVBQUksWUFBWSxHQUFHLFNBQVMsQ0FBNUIsR0FBNEIsQ0FBNUI7QUFFQSw2QkFBUSxPQUFSLEVBQWtCLFlBQVksQ0FBOUIsT0FBQTtBQUNEO0FBQ0Y7O0FBRUQsU0FBQSxPQUFBO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGFzc2VydFByZXNlbnQsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgcGFyc2UsIHBhcnNlV2l0aG91dFByb2Nlc3NpbmcgfSBmcm9tICdAaGFuZGxlYmFycy9wYXJzZXInO1xuaW1wb3J0IHsgRW50aXR5UGFyc2VyIH0gZnJvbSAnc2ltcGxlLWh0bWwtdG9rZW5pemVyJztcblxuaW1wb3J0IHByaW50IGZyb20gJy4uL2dlbmVyYXRpb24vcHJpbnQnO1xuaW1wb3J0IHsgdm9pZE1hcCB9IGZyb20gJy4uL2dlbmVyYXRpb24vcHJpbnRlcic7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi9wYXJzZXInO1xuaW1wb3J0IHsgU291cmNlIH0gZnJvbSAnLi4vc291cmNlL3NvdXJjZSc7XG5pbXBvcnQgeyBTb3VyY2VPZmZzZXQsIFNvdXJjZVNwYW4gfSBmcm9tICcuLi9zb3VyY2Uvc3Bhbic7XG5pbXBvcnQgeyBnZW5lcmF0ZVN5bnRheEVycm9yIH0gZnJvbSAnLi4vc3ludGF4LWVycm9yJztcbmltcG9ydCB0cmF2ZXJzZSBmcm9tICcuLi90cmF2ZXJzYWwvdHJhdmVyc2UnO1xuaW1wb3J0IHsgTm9kZVZpc2l0b3IgfSBmcm9tICcuLi90cmF2ZXJzYWwvdmlzaXRvcic7XG5pbXBvcnQgV2Fsa2VyIGZyb20gJy4uL3RyYXZlcnNhbC93YWxrZXInO1xuaW1wb3J0IHsgYXBwZW5kQ2hpbGQsIHBhcnNlRWxlbWVudEJsb2NrUGFyYW1zIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0ICogYXMgQVNUdjEgZnJvbSAnLi4vdjEvYXBpJztcbmltcG9ydCAqIGFzIEhCUyBmcm9tICcuLi92MS9oYW5kbGViYXJzLWFzdCc7XG5pbXBvcnQgYiBmcm9tICcuLi92MS9wYXJzZXItYnVpbGRlcnMnO1xuaW1wb3J0IHB1YmxpY0J1aWxkZXIgZnJvbSAnLi4vdjEvcHVibGljLWJ1aWxkZXJzJztcbmltcG9ydCB7IEhhbmRsZWJhcnNOb2RlVmlzaXRvcnMgfSBmcm9tICcuL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBUb2tlbml6ZXJFdmVudEhhbmRsZXJzIGV4dGVuZHMgSGFuZGxlYmFyc05vZGVWaXNpdG9ycyB7XG4gIHByaXZhdGUgdGFnT3BlbkxpbmUgPSAwO1xuICBwcml2YXRlIHRhZ09wZW5Db2x1bW4gPSAwO1xuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBudWxsO1xuICB9XG5cbiAgLy8gQ29tbWVudFxuXG4gIGJlZ2luQ29tbWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gYi5jb21tZW50KCcnLCB0aGlzLnNvdXJjZS5vZmZzZXRGb3IodGhpcy50YWdPcGVuTGluZSwgdGhpcy50YWdPcGVuQ29sdW1uKSk7XG4gIH1cblxuICBhcHBlbmRUb0NvbW1lbnREYXRhKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudENvbW1lbnQudmFsdWUgKz0gY2hhcjtcbiAgfVxuXG4gIGZpbmlzaENvbW1lbnQoKTogdm9pZCB7XG4gICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCB0aGlzLmZpbmlzaCh0aGlzLmN1cnJlbnRDb21tZW50KSk7XG4gIH1cblxuICAvLyBEYXRhXG5cbiAgYmVnaW5EYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBiLnRleHQoe1xuICAgICAgY2hhcnM6ICcnLFxuICAgICAgbG9jOiB0aGlzLm9mZnNldCgpLmNvbGxhcHNlZCgpLFxuICAgIH0pO1xuICB9XG5cbiAgYXBwZW5kVG9EYXRhKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGEuY2hhcnMgKz0gY2hhcjtcbiAgfVxuXG4gIGZpbmlzaERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50RGF0YS5sb2MgPSB0aGlzLmN1cnJlbnREYXRhLmxvYy53aXRoRW5kKHRoaXMub2Zmc2V0KCkpO1xuXG4gICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCB0aGlzLmN1cnJlbnREYXRhKTtcbiAgfVxuXG4gIC8vIFRhZ3MgLSBiYXNpY1xuXG4gIHRhZ09wZW4oKTogdm9pZCB7XG4gICAgdGhpcy50YWdPcGVuTGluZSA9IHRoaXMudG9rZW5pemVyLmxpbmU7XG4gICAgdGhpcy50YWdPcGVuQ29sdW1uID0gdGhpcy50b2tlbml6ZXIuY29sdW1uO1xuICB9XG5cbiAgYmVnaW5TdGFydFRhZygpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0ge1xuICAgICAgdHlwZTogJ1N0YXJ0VGFnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICBtb2RpZmllcnM6IFtdLFxuICAgICAgY29tbWVudHM6IFtdLFxuICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgbG9jOiB0aGlzLnNvdXJjZS5vZmZzZXRGb3IodGhpcy50YWdPcGVuTGluZSwgdGhpcy50YWdPcGVuQ29sdW1uKSxcbiAgICB9O1xuICB9XG5cbiAgYmVnaW5FbmRUYWcoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IHtcbiAgICAgIHR5cGU6ICdFbmRUYWcnLFxuICAgICAgbmFtZTogJycsXG4gICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgIG1vZGlmaWVyczogW10sXG4gICAgICBjb21tZW50czogW10sXG4gICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICBsb2M6IHRoaXMuc291cmNlLm9mZnNldEZvcih0aGlzLnRhZ09wZW5MaW5lLCB0aGlzLnRhZ09wZW5Db2x1bW4pLFxuICAgIH07XG4gIH1cblxuICBmaW5pc2hUYWcoKTogdm9pZCB7XG4gICAgbGV0IHRhZyA9IHRoaXMuZmluaXNoKHRoaXMuY3VycmVudFRhZyk7XG5cbiAgICBpZiAodGFnLnR5cGUgPT09ICdTdGFydFRhZycpIHtcbiAgICAgIHRoaXMuZmluaXNoU3RhcnRUYWcoKTtcblxuICAgICAgaWYgKHRhZy5uYW1lID09PSAnOicpIHtcbiAgICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAnSW52YWxpZCBuYW1lZCBibG9jayBuYW1lZCBkZXRlY3RlZCwgeW91IG1heSBoYXZlIGNyZWF0ZWQgYSBuYW1lZCBibG9jayB3aXRob3V0IGEgbmFtZSwgb3IgeW91IG1heSBoYXZlIGJlZ2FuIHlvdXIgbmFtZSB3aXRoIGEgbnVtYmVyLiBOYW1lZCBibG9ja3MgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYXJlIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgbG9uZywgYW5kIGJlZ2luIHdpdGggYSBsb3dlciBjYXNlIGxldHRlcicsXG4gICAgICAgICAgdGhpcy5zb3VyY2Uuc3BhbkZvcih7XG4gICAgICAgICAgICBzdGFydDogdGhpcy5jdXJyZW50VGFnLmxvYy50b0pTT04oKSxcbiAgICAgICAgICAgIGVuZDogdGhpcy5vZmZzZXQoKS50b0pTT04oKSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodm9pZE1hcFt0YWcubmFtZV0gfHwgdGFnLnNlbGZDbG9zaW5nKSB7XG4gICAgICAgIHRoaXMuZmluaXNoRW5kVGFnKHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGFnLnR5cGUgPT09ICdFbmRUYWcnKSB7XG4gICAgICB0aGlzLmZpbmlzaEVuZFRhZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgZmluaXNoU3RhcnRUYWcoKTogdm9pZCB7XG4gICAgbGV0IHsgbmFtZSwgYXR0cmlidXRlczogYXR0cnMsIG1vZGlmaWVycywgY29tbWVudHMsIHNlbGZDbG9zaW5nLCBsb2MgfSA9IHRoaXMuZmluaXNoKFxuICAgICAgdGhpcy5jdXJyZW50U3RhcnRUYWdcbiAgICApO1xuXG4gICAgbGV0IGVsZW1lbnQgPSBiLmVsZW1lbnQoe1xuICAgICAgdGFnOiBuYW1lLFxuICAgICAgc2VsZkNsb3NpbmcsXG4gICAgICBhdHRycyxcbiAgICAgIG1vZGlmaWVycyxcbiAgICAgIGNvbW1lbnRzLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgYmxvY2tQYXJhbXM6IFtdLFxuICAgICAgbG9jLFxuICAgIH0pO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2goZWxlbWVudCk7XG4gIH1cblxuICBmaW5pc2hFbmRUYWcoaXNWb2lkOiBib29sZWFuKTogdm9pZCB7XG4gICAgbGV0IHRhZyA9IHRoaXMuZmluaXNoKHRoaXMuY3VycmVudFRhZyk7XG5cbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpIGFzIEFTVHYxLkVsZW1lbnROb2RlO1xuICAgIGxldCBwYXJlbnQgPSB0aGlzLmN1cnJlbnRFbGVtZW50KCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlRW5kVGFnKHRhZywgZWxlbWVudCwgaXNWb2lkKTtcblxuICAgIGVsZW1lbnQubG9jID0gZWxlbWVudC5sb2Mud2l0aEVuZCh0aGlzLm9mZnNldCgpKTtcbiAgICBwYXJzZUVsZW1lbnRCbG9ja1BhcmFtcyhlbGVtZW50KTtcbiAgICBhcHBlbmRDaGlsZChwYXJlbnQsIGVsZW1lbnQpO1xuICB9XG5cbiAgbWFya1RhZ0FzU2VsZkNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50VGFnLnNlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIFRhZ3MgLSBuYW1lXG5cbiAgYXBwZW5kVG9UYWdOYW1lKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFRhZy5uYW1lICs9IGNoYXI7XG4gIH1cblxuICAvLyBUYWdzIC0gYXR0cmlidXRlc1xuXG4gIGJlZ2luQXR0cmlidXRlKCk6IHZvaWQge1xuICAgIGxldCBvZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuXG4gICAgdGhpcy5jdXJyZW50QXR0cmlidXRlID0ge1xuICAgICAgbmFtZTogJycsXG4gICAgICBwYXJ0czogW10sXG4gICAgICBjdXJyZW50UGFydDogbnVsbCxcbiAgICAgIGlzUXVvdGVkOiBmYWxzZSxcbiAgICAgIGlzRHluYW1pYzogZmFsc2UsXG4gICAgICBzdGFydDogb2Zmc2V0LFxuICAgICAgdmFsdWVTcGFuOiBvZmZzZXQuY29sbGFwc2VkKCksXG4gICAgfTtcbiAgfVxuXG4gIGFwcGVuZFRvQXR0cmlidXRlTmFtZShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gY2hhcjtcbiAgfVxuXG4gIGJlZ2luQXR0cmlidXRlVmFsdWUoaXNRdW90ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyLmlzUXVvdGVkID0gaXNRdW90ZWQ7XG4gICAgdGhpcy5zdGFydFRleHRQYXJ0KCk7XG4gICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZVNwYW4gPSB0aGlzLm9mZnNldCgpLmNvbGxhcHNlZCgpO1xuICB9XG5cbiAgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgcGFydHMgPSB0aGlzLmN1cnJlbnRBdHRyLnBhcnRzO1xuICAgIGxldCBsYXN0UGFydCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuXG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmN1cnJlbnRBdHRyLmN1cnJlbnRQYXJ0O1xuXG4gICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgIGN1cnJlbnQuY2hhcnMgKz0gY2hhcjtcblxuICAgICAgLy8gdXBkYXRlIGVuZCBsb2NhdGlvbiBmb3IgZWFjaCBhZGRlZCBjaGFyXG4gICAgICBjdXJyZW50LmxvYyA9IGN1cnJlbnQubG9jLndpdGhFbmQodGhpcy5vZmZzZXQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluaXRpYWxseSBhc3N1bWUgdGhlIHRleHQgbm9kZSBpcyBhIHNpbmdsZSBjaGFyXG4gICAgICBsZXQgbG9jOiBTb3VyY2VPZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuXG4gICAgICAvLyB0aGUgdG9rZW5pemVyIGxpbmUvY29sdW1uIGhhdmUgYWxyZWFkeSBiZWVuIGFkdmFuY2VkLCBjb3JyZWN0IGxvY2F0aW9uIGluZm9cbiAgICAgIGlmIChjaGFyID09PSAnXFxuJykge1xuICAgICAgICBsb2MgPSBsYXN0UGFydCA/IGxhc3RQYXJ0LmxvYy5nZXRFbmQoKSA6IHRoaXMuY3VycmVudEF0dHIudmFsdWVTcGFuLmdldFN0YXJ0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2MgPSBsb2MubW92ZSgtMSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudEF0dHIuY3VycmVudFBhcnQgPSBiLnRleHQoeyBjaGFyczogY2hhciwgbG9jOiBsb2MuY29sbGFwc2VkKCkgfSk7XG4gICAgfVxuICB9XG5cbiAgZmluaXNoQXR0cmlidXRlVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5maW5hbGl6ZVRleHRQYXJ0KCk7XG5cbiAgICBsZXQgdGFnID0gdGhpcy5jdXJyZW50VGFnO1xuICAgIGxldCB0b2tlbml6ZXJQb3MgPSB0aGlzLm9mZnNldCgpO1xuXG4gICAgaWYgKHRhZy50eXBlID09PSAnRW5kVGFnJykge1xuICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgYEludmFsaWQgZW5kIHRhZzogY2xvc2luZyB0YWcgbXVzdCBub3QgaGF2ZSBhdHRyaWJ1dGVzYCxcbiAgICAgICAgdGhpcy5zb3VyY2Uuc3BhbkZvcih7IHN0YXJ0OiB0YWcubG9jLnRvSlNPTigpLCBlbmQ6IHRva2VuaXplclBvcy50b0pTT04oKSB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgeyBuYW1lLCBwYXJ0cywgc3RhcnQsIGlzUXVvdGVkLCBpc0R5bmFtaWMsIHZhbHVlU3BhbiB9ID0gdGhpcy5jdXJyZW50QXR0cjtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmFzc2VtYmxlQXR0cmlidXRlVmFsdWUocGFydHMsIGlzUXVvdGVkLCBpc0R5bmFtaWMsIHN0YXJ0LnVudGlsKHRva2VuaXplclBvcykpO1xuICAgIHZhbHVlLmxvYyA9IHZhbHVlU3Bhbi53aXRoRW5kKHRva2VuaXplclBvcyk7XG5cbiAgICBsZXQgYXR0cmlidXRlID0gYi5hdHRyKHsgbmFtZSwgdmFsdWUsIGxvYzogc3RhcnQudW50aWwodG9rZW5pemVyUG9zKSB9KTtcblxuICAgIHRoaXMuY3VycmVudFN0YXJ0VGFnLmF0dHJpYnV0ZXMucHVzaChhdHRyaWJ1dGUpO1xuICB9XG5cbiAgcmVwb3J0U3ludGF4RXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihtZXNzYWdlLCB0aGlzLm9mZnNldCgpLmNvbGxhcHNlZCgpKTtcbiAgfVxuXG4gIGFzc2VtYmxlQ29uY2F0ZW5hdGVkVmFsdWUoXG4gICAgcGFydHM6IChBU1R2MS5NdXN0YWNoZVN0YXRlbWVudCB8IEFTVHYxLlRleHROb2RlKVtdXG4gICk6IEFTVHYxLkNvbmNhdFN0YXRlbWVudCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHBhcnQ6IEFTVHYxLkJhc2VOb2RlID0gcGFydHNbaV07XG5cbiAgICAgIGlmIChwYXJ0LnR5cGUgIT09ICdNdXN0YWNoZVN0YXRlbWVudCcgJiYgcGFydC50eXBlICE9PSAnVGV4dE5vZGUnKSB7XG4gICAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgJ1Vuc3VwcG9ydGVkIG5vZGUgaW4gcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZTogJyArIHBhcnRbJ3R5cGUnXSxcbiAgICAgICAgICBwYXJ0LmxvY1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzc2VydFByZXNlbnQocGFydHMsIGB0aGUgY29uY2F0ZW5hdGlvbiBwYXJ0cyBvZiBhbiBlbGVtZW50IHNob3VsZCBub3QgYmUgZW1wdHlgKTtcblxuICAgIGxldCBmaXJzdCA9IHBhcnRzWzBdO1xuICAgIGxldCBsYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gYi5jb25jYXQocGFydHMsIHRoaXMuc291cmNlLnNwYW5Gb3IoZmlyc3QubG9jKS5leHRlbmQodGhpcy5zb3VyY2Uuc3BhbkZvcihsYXN0LmxvYykpKTtcbiAgfVxuXG4gIHZhbGlkYXRlRW5kVGFnKFxuICAgIHRhZzogVGFnPCdTdGFydFRhZycgfCAnRW5kVGFnJz4sXG4gICAgZWxlbWVudDogQVNUdjEuRWxlbWVudE5vZGUsXG4gICAgc2VsZkNsb3Npbmc6IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgbGV0IGVycm9yO1xuXG4gICAgaWYgKHZvaWRNYXBbdGFnLm5hbWVdICYmICFzZWxmQ2xvc2luZykge1xuICAgICAgLy8gRW5nVGFnIGlzIGFsc28gY2FsbGVkIGJ5IFN0YXJ0VGFnIGZvciB2b2lkIGFuZCBzZWxmLWNsb3NpbmcgdGFncyAoaS5lLlxuICAgICAgLy8gPGlucHV0PiBvciA8YnIgLz4sIHNvIHdlIG5lZWQgdG8gY2hlY2sgZm9yIHRoYXQgaGVyZS4gT3RoZXJ3aXNlLCB3ZSB3b3VsZFxuICAgICAgLy8gdGhyb3cgYW4gZXJyb3IgZm9yIHRob3NlIGNhc2VzLlxuICAgICAgZXJyb3IgPSBgPCR7dGFnLm5hbWV9PiBlbGVtZW50cyBkbyBub3QgbmVlZCBlbmQgdGFncy4gWW91IHNob3VsZCByZW1vdmUgaXRgO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC50YWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBgQ2xvc2luZyB0YWcgPC8ke3RhZy5uYW1lfT4gd2l0aG91dCBhbiBvcGVuIHRhZ2A7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LnRhZyAhPT0gdGFnLm5hbWUpIHtcbiAgICAgIGVycm9yID0gYENsb3NpbmcgdGFnIDwvJHt0YWcubmFtZX0+IGRpZCBub3QgbWF0Y2ggbGFzdCBvcGVuIHRhZyA8JHtlbGVtZW50LnRhZ30+IChvbiBsaW5lICR7ZWxlbWVudC5sb2Muc3RhcnRQb3NpdGlvbi5saW5lfSlgO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihlcnJvciwgdGFnLmxvYyk7XG4gICAgfVxuICB9XG5cbiAgYXNzZW1ibGVBdHRyaWJ1dGVWYWx1ZShcbiAgICBwYXJ0czogKEFTVHYxLk11c3RhY2hlU3RhdGVtZW50IHwgQVNUdjEuVGV4dE5vZGUpW10sXG4gICAgaXNRdW90ZWQ6IGJvb2xlYW4sXG4gICAgaXNEeW5hbWljOiBib29sZWFuLFxuICAgIHNwYW46IFNvdXJjZVNwYW5cbiAgKTogQVNUdjEuQ29uY2F0U3RhdGVtZW50IHwgQVNUdjEuTXVzdGFjaGVTdGF0ZW1lbnQgfCBBU1R2MS5UZXh0Tm9kZSB7XG4gICAgaWYgKGlzRHluYW1pYykge1xuICAgICAgaWYgKGlzUXVvdGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzc2VtYmxlQ29uY2F0ZW5hdGVkVmFsdWUocGFydHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcnRzLmxlbmd0aCA9PT0gMSB8fFxuICAgICAgICAgIChwYXJ0cy5sZW5ndGggPT09IDIgJiZcbiAgICAgICAgICAgIHBhcnRzWzFdLnR5cGUgPT09ICdUZXh0Tm9kZScgJiZcbiAgICAgICAgICAgIChwYXJ0c1sxXSBhcyBBU1R2MS5UZXh0Tm9kZSkuY2hhcnMgPT09ICcvJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnRzWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBgQW4gdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBtdXN0YWNoZSwgYCArXG4gICAgICAgICAgICAgIGBwcmVjZWRlZCBieSB3aGl0ZXNwYWNlIG9yIGEgJz0nIGNoYXJhY3RlciwgYW5kIGAgK1xuICAgICAgICAgICAgICBgZm9sbG93ZWQgYnkgd2hpdGVzcGFjZSwgYSAnPicgY2hhcmFjdGVyLCBvciAnLz4nYCxcbiAgICAgICAgICAgIHNwYW5cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYXJ0cy5sZW5ndGggPiAwID8gcGFydHNbMF0gOiBiLnRleHQoeyBjaGFyczogJycsIGxvYzogc3BhbiB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gIEFTVFBsdWdpbnMgY2FuIG1ha2UgY2hhbmdlcyB0byB0aGUgR2xpbW1lciB0ZW1wbGF0ZSBBU1QgYmVmb3JlXG4gIGNvbXBpbGF0aW9uIGJlZ2lucy5cbiovXG5leHBvcnQgaW50ZXJmYWNlIEFTVFBsdWdpbkJ1aWxkZXI8VEVudiBleHRlbmRzIEFTVFBsdWdpbkVudmlyb25tZW50ID0gQVNUUGx1Z2luRW52aXJvbm1lbnQ+IHtcbiAgKGVudjogVEVudik6IEFTVFBsdWdpbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBU1RQbHVnaW4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZpc2l0b3I6IE5vZGVWaXNpdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFTVFBsdWdpbkVudmlyb25tZW50IHtcbiAgbWV0YT86IG9iamVjdDtcbiAgc3ludGF4OiBTeW50YXg7XG59XG5cbmludGVyZmFjZSBIYW5kbGViYXJzUGFyc2VPcHRpb25zIHtcbiAgc3JjTmFtZT86IHN0cmluZztcbiAgaWdub3JlU3RhbmRhbG9uZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVJZEZuIHtcbiAgKHNyYzogc3RyaW5nKTogT3B0aW9uPHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlY29tcGlsZU9wdGlvbnMgZXh0ZW5kcyBQcmVwcm9jZXNzT3B0aW9ucyB7XG4gIGlkPzogVGVtcGxhdGVJZEZuO1xuICBjdXN0b21pemVDb21wb25lbnROYW1lPyhpbnB1dDogc3RyaW5nKTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXByb2Nlc3NPcHRpb25zIHtcbiAgc3RyaWN0TW9kZT86IGJvb2xlYW47XG4gIGxvY2Fscz86IHN0cmluZ1tdO1xuICBtZXRhPzoge1xuICAgIG1vZHVsZU5hbWU/OiBzdHJpbmc7XG4gIH07XG4gIHBsdWdpbnM/OiB7XG4gICAgYXN0PzogQVNUUGx1Z2luQnVpbGRlcltdO1xuICB9O1xuICBwYXJzZU9wdGlvbnM/OiBIYW5kbGViYXJzUGFyc2VPcHRpb25zO1xuICBjdXN0b21pemVDb21wb25lbnROYW1lPyhpbnB1dDogc3RyaW5nKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgIFVzZWZ1bCBmb3Igc3BlY2lmeWluZyBhIGdyb3VwIG9mIG9wdGlvbnMgdG9nZXRoZXIuXG5cbiAgICBXaGVuIGAnY29kZW1vZCdgIHdlIGRpc2FibGUgYWxsIHdoaXRlc3BhY2UgY29udHJvbCBpbiBoYW5kbGViYXJzXG4gICAgKHRvIHByZXNlcnZlIGFzIG11Y2ggYXMgcG9zc2libGUpIGFuZCB3ZSBhbHNvIGF2b2lkIGFueVxuICAgIGVzY2FwaW5nL3VuZXNjYXBpbmcgb2YgSFRNTCBlbnRpdHkgY29kZXMuXG4gICAqL1xuICBtb2RlPzogJ2NvZGVtb2QnIHwgJ3ByZWNvbXBpbGUnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN5bnRheCB7XG4gIHBhcnNlOiB0eXBlb2YgcHJlcHJvY2VzcztcbiAgYnVpbGRlcnM6IHR5cGVvZiBwdWJsaWNCdWlsZGVyO1xuICBwcmludDogdHlwZW9mIHByaW50O1xuICB0cmF2ZXJzZTogdHlwZW9mIHRyYXZlcnNlO1xuICBXYWxrZXI6IHR5cGVvZiBXYWxrZXI7XG59XG5cbmNvbnN0IHN5bnRheDogU3ludGF4ID0ge1xuICBwYXJzZTogcHJlcHJvY2VzcyxcbiAgYnVpbGRlcnM6IHB1YmxpY0J1aWxkZXIsXG4gIHByaW50LFxuICB0cmF2ZXJzZSxcbiAgV2Fsa2VyLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByZXByb2Nlc3MoXG4gIGlucHV0OiBzdHJpbmcgfCBTb3VyY2UgfCBIQlMuUHJvZ3JhbSxcbiAgb3B0aW9uczogUHJlcHJvY2Vzc09wdGlvbnMgPSB7fVxuKTogQVNUdjEuVGVtcGxhdGUge1xuICBsZXQgbW9kZSA9IG9wdGlvbnMubW9kZSB8fCAncHJlY29tcGlsZSc7XG5cbiAgbGV0IHNvdXJjZTogU291cmNlO1xuICBsZXQgYXN0OiBIQlMuUHJvZ3JhbTtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2UgPSBuZXcgU291cmNlKGlucHV0LCBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWUpO1xuXG4gICAgaWYgKG1vZGUgPT09ICdjb2RlbW9kJykge1xuICAgICAgYXN0ID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dCwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpIGFzIEhCUy5Qcm9ncmFtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3QgPSBwYXJzZShpbnB1dCwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpIGFzIEhCUy5Qcm9ncmFtO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFNvdXJjZSkge1xuICAgIHNvdXJjZSA9IGlucHV0O1xuXG4gICAgaWYgKG1vZGUgPT09ICdjb2RlbW9kJykge1xuICAgICAgYXN0ID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dC5zb3VyY2UsIG9wdGlvbnMucGFyc2VPcHRpb25zKSBhcyBIQlMuUHJvZ3JhbTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXN0ID0gcGFyc2UoaW5wdXQuc291cmNlLCBvcHRpb25zLnBhcnNlT3B0aW9ucykgYXMgSEJTLlByb2dyYW07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNvdXJjZSA9IG5ldyBTb3VyY2UoJycsIG9wdGlvbnMubWV0YT8ubW9kdWxlTmFtZSk7XG4gICAgYXN0ID0gaW5wdXQ7XG4gIH1cblxuICBsZXQgZW50aXR5UGFyc2VyID0gdW5kZWZpbmVkO1xuICBpZiAobW9kZSA9PT0gJ2NvZGVtb2QnKSB7XG4gICAgZW50aXR5UGFyc2VyID0gbmV3IEVudGl0eVBhcnNlcih7fSk7XG4gIH1cblxuICBsZXQgb2Zmc2V0cyA9IFNvdXJjZVNwYW4uZm9yQ2hhclBvc2l0aW9ucyhzb3VyY2UsIDAsIHNvdXJjZS5zb3VyY2UubGVuZ3RoKTtcbiAgYXN0LmxvYyA9IHtcbiAgICBzb3VyY2U6ICcocHJvZ3JhbSknLFxuICAgIHN0YXJ0OiBvZmZzZXRzLnN0YXJ0UG9zaXRpb24sXG4gICAgZW5kOiBvZmZzZXRzLmVuZFBvc2l0aW9uLFxuICB9O1xuXG4gIGxldCBwcm9ncmFtID0gbmV3IFRva2VuaXplckV2ZW50SGFuZGxlcnMoc291cmNlLCBlbnRpdHlQYXJzZXIsIG1vZGUpLmFjY2VwdFRlbXBsYXRlKGFzdCk7XG5cbiAgaWYgKG9wdGlvbnMuc3RyaWN0TW9kZSkge1xuICAgIHByb2dyYW0uYmxvY2tQYXJhbXMgPSBvcHRpb25zLmxvY2FscyA/PyBbXTtcbiAgfVxuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMucGx1Z2lucyAmJiBvcHRpb25zLnBsdWdpbnMuYXN0KSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBvcHRpb25zLnBsdWdpbnMuYXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgbGV0IHRyYW5zZm9ybSA9IG9wdGlvbnMucGx1Z2lucy5hc3RbaV07XG4gICAgICBsZXQgZW52OiBBU1RQbHVnaW5FbnZpcm9ubWVudCA9IGFzc2lnbih7fSwgb3B0aW9ucywgeyBzeW50YXggfSwgeyBwbHVnaW5zOiB1bmRlZmluZWQgfSk7XG5cbiAgICAgIGxldCBwbHVnaW5SZXN1bHQgPSB0cmFuc2Zvcm0oZW52KTtcblxuICAgICAgdHJhdmVyc2UocHJvZ3JhbSwgcGx1Z2luUmVzdWx0LnZpc2l0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcm9ncmFtO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

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

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ3VCOzs7Ozs7QUFDQTs7OztBQUN2Qjs7QUFDQTs7QUFDQTs7QUFDQTs7QUFRQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFVQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNvdXJjZSB9IGZyb20gJy4vbGliL3NvdXJjZS9zb3VyY2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBidWlsZGVycyB9IGZyb20gJy4vbGliL3YxL3B1YmxpYy1idWlsZGVycyc7XG5leHBvcnQgKiBhcyBBU1R2MSBmcm9tICcuL2xpYi92MS9hcGknO1xuZXhwb3J0ICogYXMgQVNUdjIgZnJvbSAnLi9saWIvdjItYS9hcGknO1xuZXhwb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnLi9saWIvdjItYS9ub3JtYWxpemUnO1xuZXhwb3J0IHsgU3ltYm9sVGFibGUsIEJsb2NrU3ltYm9sVGFibGUsIFByb2dyYW1TeW1ib2xUYWJsZSB9IGZyb20gJy4vbGliL3N5bWJvbC10YWJsZSc7XG5leHBvcnQgeyBnZW5lcmF0ZVN5bnRheEVycm9yLCBHbGltbWVyU3ludGF4RXJyb3IgfSBmcm9tICcuL2xpYi9zeW50YXgtZXJyb3InO1xuZXhwb3J0IHtcbiAgcHJlcHJvY2VzcyxcbiAgQVNUUGx1Z2luLFxuICBBU1RQbHVnaW5CdWlsZGVyLFxuICBBU1RQbHVnaW5FbnZpcm9ubWVudCxcbiAgU3ludGF4LFxuICBQcmVjb21waWxlT3B0aW9ucyxcbn0gZnJvbSAnLi9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByaW50IH0gZnJvbSAnLi9saWIvZ2VuZXJhdGlvbi9wcmludCc7XG5leHBvcnQgeyBzb3J0QnlMb2MgfSBmcm9tICcuL2xpYi9nZW5lcmF0aW9uL3V0aWwnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXYWxrZXIgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvd2Fsa2VyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhdmVyc2UgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvdHJhdmVyc2UnO1xuZXhwb3J0IHsgTm9kZVZpc2l0b3IgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvdmlzaXRvcic7XG5leHBvcnQgeyBjYW5ub3RSZW1vdmVOb2RlLCBjYW5ub3RSZXBsYWNlTm9kZSB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC9lcnJvcnMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXYWxrZXJQYXRoIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3BhdGgnO1xuZXhwb3J0IHsgaXNLZXl3b3JkLCBLZXl3b3JkVHlwZSwgS0VZV09SRFNfVFlQRVMgfSBmcm9tICcuL2xpYi9rZXl3b3Jkcyc7XG5cbmV4cG9ydCB7IFNvdXJjZVNsaWNlIH0gZnJvbSAnLi9saWIvc291cmNlL3NsaWNlJztcbmV4cG9ydCB7IFNvdXJjZVNwYW4gfSBmcm9tICcuL2xpYi9zb3VyY2Uvc3Bhbic7XG5leHBvcnQge1xuICBTcGFuTGlzdCxcbiAgbWF5YmVMb2MsXG4gIE1heWJlSGFzU291cmNlU3BhbixcbiAgbG9jLFxuICBIYXNTb3VyY2VTcGFuLFxuICBoYXNTcGFuLFxufSBmcm9tICcuL2xpYi9zb3VyY2Uvc3Bhbi1saXN0JztcbmV4cG9ydCB7IFByZXByb2Nlc3NPcHRpb25zIH0gZnJvbSAnLi9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5cbmV4cG9ydCB7IG5vZGUgfSBmcm9tICcuL2xpYi92Mi1hL29iamVjdHMvbm9kZSc7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgV2Fsa2VyUGF0aCBpbnN0ZWFkICovXG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhdGggfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvd2Fsa2VyJztcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBBU1R2MSBpbnN0ZWFkICovXG5leHBvcnQgKiBhcyBBU1QgZnJvbSAnLi9saWIvdjEvYXBpJztcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ3VCOzs7Ozs7QUFDQTs7OztBQUN2Qjs7QUFDQTs7QUFDQTs7QUFDQTs7QUFTQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFVQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNvdXJjZSB9IGZyb20gJy4vbGliL3NvdXJjZS9zb3VyY2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBidWlsZGVycyB9IGZyb20gJy4vbGliL3YxL3B1YmxpYy1idWlsZGVycyc7XG5leHBvcnQgKiBhcyBBU1R2MSBmcm9tICcuL2xpYi92MS9hcGknO1xuZXhwb3J0ICogYXMgQVNUdjIgZnJvbSAnLi9saWIvdjItYS9hcGknO1xuZXhwb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnLi9saWIvdjItYS9ub3JtYWxpemUnO1xuZXhwb3J0IHsgU3ltYm9sVGFibGUsIEJsb2NrU3ltYm9sVGFibGUsIFByb2dyYW1TeW1ib2xUYWJsZSB9IGZyb20gJy4vbGliL3N5bWJvbC10YWJsZSc7XG5leHBvcnQgeyBnZW5lcmF0ZVN5bnRheEVycm9yLCBHbGltbWVyU3ludGF4RXJyb3IgfSBmcm9tICcuL2xpYi9zeW50YXgtZXJyb3InO1xuZXhwb3J0IHtcbiAgcHJlcHJvY2VzcyxcbiAgQVNUUGx1Z2luLFxuICBBU1RQbHVnaW5CdWlsZGVyLFxuICBBU1RQbHVnaW5FbnZpcm9ubWVudCxcbiAgU3ludGF4LFxuICBUZW1wbGF0ZUlkRm4sXG4gIFByZWNvbXBpbGVPcHRpb25zLFxufSBmcm9tICcuL2xpYi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJpbnQgfSBmcm9tICcuL2xpYi9nZW5lcmF0aW9uL3ByaW50JztcbmV4cG9ydCB7IHNvcnRCeUxvYyB9IGZyb20gJy4vbGliL2dlbmVyYXRpb24vdXRpbCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFdhbGtlciB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC93YWxrZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmF2ZXJzZSB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC90cmF2ZXJzZSc7XG5leHBvcnQgeyBOb2RlVmlzaXRvciB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC92aXNpdG9yJztcbmV4cG9ydCB7IGNhbm5vdFJlbW92ZU5vZGUsIGNhbm5vdFJlcGxhY2VOb2RlIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL2Vycm9ycyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFdhbGtlclBhdGggfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvcGF0aCc7XG5leHBvcnQgeyBpc0tleXdvcmQsIEtleXdvcmRUeXBlLCBLRVlXT1JEU19UWVBFUyB9IGZyb20gJy4vbGliL2tleXdvcmRzJztcblxuZXhwb3J0IHsgU291cmNlU2xpY2UgfSBmcm9tICcuL2xpYi9zb3VyY2Uvc2xpY2UnO1xuZXhwb3J0IHsgU291cmNlU3BhbiB9IGZyb20gJy4vbGliL3NvdXJjZS9zcGFuJztcbmV4cG9ydCB7XG4gIFNwYW5MaXN0LFxuICBtYXliZUxvYyxcbiAgTWF5YmVIYXNTb3VyY2VTcGFuLFxuICBsb2MsXG4gIEhhc1NvdXJjZVNwYW4sXG4gIGhhc1NwYW4sXG59IGZyb20gJy4vbGliL3NvdXJjZS9zcGFuLWxpc3QnO1xuZXhwb3J0IHsgUHJlcHJvY2Vzc09wdGlvbnMgfSBmcm9tICcuL2xpYi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzJztcblxuZXhwb3J0IHsgbm9kZSB9IGZyb20gJy4vbGliL3YyLWEvb2JqZWN0cy9ub2RlJztcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBXYWxrZXJQYXRoIGluc3RlYWQgKi9cbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aCB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC93YWxrZXInO1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIEFTVHYxIGluc3RlYWQgKi9cbmV4cG9ydCAqIGFzIEFTVCBmcm9tICcuL2xpYi92MS9hcGknO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

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

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsSUFBTSxzQkFBTixHQUFBLGFBQUEsVUFBQSxxQkFBQSxFQUFBO0FBQUEsRUFBQSxjQUFBLENBQUEsc0JBQUEsRUFBQSxxQkFBQSxDQUFBOztBQUFBLFdBQUEsc0JBQUEsR0FBQTtBQUFBLFFBQUEsS0FBQTs7O0FBQ1UsSUFBQSxLQUFBLENBQUEsV0FBQSxHQUFBLENBQUE7QUFDQSxJQUFBLEtBQUEsQ0FBQSxhQUFBLEdBQUEsQ0FBQTtBQUZWLFdBQUEsS0FBQTtBQWtTQzs7QUFsU0QsTUFBQSxNQUFBLEdBQUEsc0JBQUEsQ0FBQSxTQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLEtBQUEsR0FJRSxTQUFBLEtBQUEsR0FBSztBQUNILFNBQUEsV0FBQSxHQUFBLElBQUE7QUFMSixHQUFBLENBUUU7QUFSRjs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxZQUFBLEdBVUUsU0FBQSxZQUFBLEdBQVk7QUFDVixTQUFBLFdBQUEsR0FBbUIsd0JBQUEsT0FBQSxDQUFBLEVBQUEsRUFBYyxLQUFBLE1BQUEsQ0FBQSxTQUFBLENBQXNCLEtBQXRCLFdBQUEsRUFBd0MsS0FBekUsYUFBaUMsQ0FBZCxDQUFuQjtBQVhKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsbUJBQUEsR0FjRSxTQUFBLG1CQUFBLENBQUEsS0FBQSxFQUFnQztBQUM5QixTQUFBLGNBQUEsQ0FBQSxLQUFBLElBQUEsS0FBQTtBQWZKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsYUFBQSxHQWtCRSxTQUFBLGFBQUEsR0FBYTtBQUNYLDRC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UixJQUFBLEtBQUssRUFBRSxPQUFPLENBRk4sYUFBQTtBQUdSLElBQUEsR0FBRyxFQUFFLE9BQU8sQ0FBQztBQUhMLEdBQVY7QUFNQSxNQUFJLE9BQU8sR0FBRyxJQUFBLHNCQUFBLENBQUEsTUFBQSxFQUFBLFlBQUEsRUFBQSxJQUFBLEVBQUEsY0FBQSxDQUFkLEdBQWMsQ0FBZDs7QUFFQSxNQUFJLE9BQU8sQ0FBWCxVQUFBLEVBQXdCO0FBQ3RCLElBQUEsT0FBTyxDQUFQLFdBQUEsR0FBbUIsQ0FBQSxFQUFBLEdBQUcsT0FBTyxDQUFWLE1BQUEsTUFBQSxJQUFBLElBQWlCLEVBQUEsS0FBQSxLQUFqQixDQUFBLEdBQUEsRUFBQSxHQUFuQixFQUFBO0FBQ0Q7O0FBRUQsTUFBSSxPQUFPLElBQUksT0FBTyxDQUFsQixPQUFBLElBQThCLE9BQU8sQ0FBUCxPQUFBLENBQWxDLEdBQUEsRUFBdUQ7QUFDckQsU0FBSyxJQUFJLENBQUMsR0FBTCxDQUFBLEVBQVcsQ0FBQyxHQUFHLE9BQU8sQ0FBUCxPQUFBLENBQUEsR0FBQSxDQUFwQixNQUFBLEVBQWdELENBQUMsR0FBakQsQ0FBQSxFQUF1RCxDQUF2RCxFQUFBLEVBQTREO0FBQzFELFVBQUksU0FBUyxHQUFHLE9BQU8sQ0FBUCxPQUFBLENBQUEsR0FBQSxDQUFoQixDQUFnQixDQUFoQjtBQUNBLFVBQUksR0FBRyxHQUF5QixrQkFBTSxFQUFOLEVBQU0sT0FBTixFQUFvQjtBQUFFLFFBQUEsTUFBQSxFQUFBO0FBQUYsT0FBcEIsRUFBZ0M7QUFBRSxRQUFBLE9BQU8sRUFBRTtBQUFYLE9BQWhDLENBQWhDO0FBRUEsVUFBSSxZQUFZLEdBQUcsU0FBUyxDQUE1QixHQUE0QixDQUE1QjtBQUVBLDZCQUFRLE9BQVIsRUFBa0IsWUFBWSxDQUE5QixPQUFBO0FBQ0Q7QUFDRjs7QUFFRCxTQUFBLE9BQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydFByZXNlbnQsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgcGFyc2UsIHBhcnNlV2l0aG91dFByb2Nlc3NpbmcgfSBmcm9tICdAaGFuZGxlYmFycy9wYXJzZXInO1xuaW1wb3J0IHsgRW50aXR5UGFyc2VyIH0gZnJvbSAnc2ltcGxlLWh0bWwtdG9rZW5pemVyJztcblxuaW1wb3J0IHByaW50IGZyb20gJy4uL2dlbmVyYXRpb24vcHJpbnQnO1xuaW1wb3J0IHsgdm9pZE1hcCB9IGZyb20gJy4uL2dlbmVyYXRpb24vcHJpbnRlcic7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi9wYXJzZXInO1xuaW1wb3J0IHsgU291cmNlIH0gZnJvbSAnLi4vc291cmNlL3NvdXJjZSc7XG5pbXBvcnQgeyBTb3VyY2VPZmZzZXQsIFNvdXJjZVNwYW4gfSBmcm9tICcuLi9zb3VyY2Uvc3Bhbic7XG5pbXBvcnQgeyBnZW5lcmF0ZVN5bnRheEVycm9yIH0gZnJvbSAnLi4vc3ludGF4LWVycm9yJztcbmltcG9ydCB0cmF2ZXJzZSBmcm9tICcuLi90cmF2ZXJzYWwvdHJhdmVyc2UnO1xuaW1wb3J0IHsgTm9kZVZpc2l0b3IgfSBmcm9tICcuLi90cmF2ZXJzYWwvdmlzaXRvcic7XG5pbXBvcnQgV2Fsa2VyIGZyb20gJy4uL3RyYXZlcnNhbC93YWxrZXInO1xuaW1wb3J0IHsgYXBwZW5kQ2hpbGQsIHBhcnNlRWxlbWVudEJsb2NrUGFyYW1zIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0ICogYXMgQVNUdjEgZnJvbSAnLi4vdjEvYXBpJztcbmltcG9ydCAqIGFzIEhCUyBmcm9tICcuLi92MS9oYW5kbGViYXJzLWFzdCc7XG5pbXBvcnQgYiBmcm9tICcuLi92MS9wYXJzZXItYnVpbGRlcnMnO1xuaW1wb3J0IHB1YmxpY0J1aWxkZXIgZnJvbSAnLi4vdjEvcHVibGljLWJ1aWxkZXJzJztcbmltcG9ydCB7IEhhbmRsZWJhcnNOb2RlVmlzaXRvcnMgfSBmcm9tICcuL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBUb2tlbml6ZXJFdmVudEhhbmRsZXJzIGV4dGVuZHMgSGFuZGxlYmFyc05vZGVWaXNpdG9ycyB7XG4gIHByaXZhdGUgdGFnT3BlbkxpbmUgPSAwO1xuICBwcml2YXRlIHRhZ09wZW5Db2x1bW4gPSAwO1xuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBudWxsO1xuICB9XG5cbiAgLy8gQ29tbWVudFxuXG4gIGJlZ2luQ29tbWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gYi5jb21tZW50KCcnLCB0aGlzLnNvdXJjZS5vZmZzZXRGb3IodGhpcy50YWdPcGVuTGluZSwgdGhpcy50YWdPcGVuQ29sdW1uKSk7XG4gIH1cblxuICBhcHBlbmRUb0NvbW1lbnREYXRhKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudENvbW1lbnQudmFsdWUgKz0gY2hhcjtcbiAgfVxuXG4gIGZpbmlzaENvbW1lbnQoKTogdm9pZCB7XG4gICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCB0aGlzLmZpbmlzaCh0aGlzLmN1cnJlbnRDb21tZW50KSk7XG4gIH1cblxuICAvLyBEYXRhXG5cbiAgYmVnaW5EYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBiLnRleHQoe1xuICAgICAgY2hhcnM6ICcnLFxuICAgICAgbG9jOiB0aGlzLm9mZnNldCgpLmNvbGxhcHNlZCgpLFxuICAgIH0pO1xuICB9XG5cbiAgYXBwZW5kVG9EYXRhKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGEuY2hhcnMgKz0gY2hhcjtcbiAgfVxuXG4gIGZpbmlzaERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50RGF0YS5sb2MgPSB0aGlzLmN1cnJlbnREYXRhLmxvYy53aXRoRW5kKHRoaXMub2Zmc2V0KCkpO1xuXG4gICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCB0aGlzLmN1cnJlbnREYXRhKTtcbiAgfVxuXG4gIC8vIFRhZ3MgLSBiYXNpY1xuXG4gIHRhZ09wZW4oKTogdm9pZCB7XG4gICAgdGhpcy50YWdPcGVuTGluZSA9IHRoaXMudG9rZW5pemVyLmxpbmU7XG4gICAgdGhpcy50YWdPcGVuQ29sdW1uID0gdGhpcy50b2tlbml6ZXIuY29sdW1uO1xuICB9XG5cbiAgYmVnaW5TdGFydFRhZygpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0ge1xuICAgICAgdHlwZTogJ1N0YXJ0VGFnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICBtb2RpZmllcnM6IFtdLFxuICAgICAgY29tbWVudHM6IFtdLFxuICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgbG9jOiB0aGlzLnNvdXJjZS5vZmZzZXRGb3IodGhpcy50YWdPcGVuTGluZSwgdGhpcy50YWdPcGVuQ29sdW1uKSxcbiAgICB9O1xuICB9XG5cbiAgYmVnaW5FbmRUYWcoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IHtcbiAgICAgIHR5cGU6ICdFbmRUYWcnLFxuICAgICAgbmFtZTogJycsXG4gICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgIG1vZGlmaWVyczogW10sXG4gICAgICBjb21tZW50czogW10sXG4gICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICBsb2M6IHRoaXMuc291cmNlLm9mZnNldEZvcih0aGlzLnRhZ09wZW5MaW5lLCB0aGlzLnRhZ09wZW5Db2x1bW4pLFxuICAgIH07XG4gIH1cblxuICBmaW5pc2hUYWcoKTogdm9pZCB7XG4gICAgbGV0IHRhZyA9IHRoaXMuZmluaXNoKHRoaXMuY3VycmVudFRhZyk7XG5cbiAgICBpZiAodGFnLnR5cGUgPT09ICdTdGFydFRhZycpIHtcbiAgICAgIHRoaXMuZmluaXNoU3RhcnRUYWcoKTtcblxuICAgICAgaWYgKHRhZy5uYW1lID09PSAnOicpIHtcbiAgICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAnSW52YWxpZCBuYW1lZCBibG9jayBuYW1lZCBkZXRlY3RlZCwgeW91IG1heSBoYXZlIGNyZWF0ZWQgYSBuYW1lZCBibG9jayB3aXRob3V0IGEgbmFtZSwgb3IgeW91IG1heSBoYXZlIGJlZ2FuIHlvdXIgbmFtZSB3aXRoIGEgbnVtYmVyLiBOYW1lZCBibG9ja3MgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYXJlIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgbG9uZywgYW5kIGJlZ2luIHdpdGggYSBsb3dlciBjYXNlIGxldHRlcicsXG4gICAgICAgICAgdGhpcy5zb3VyY2Uuc3BhbkZvcih7XG4gICAgICAgICAgICBzdGFydDogdGhpcy5jdXJyZW50VGFnLmxvYy50b0pTT04oKSxcbiAgICAgICAgICAgIGVuZDogdGhpcy5vZmZzZXQoKS50b0pTT04oKSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodm9pZE1hcFt0YWcubmFtZV0gfHwgdGFnLnNlbGZDbG9zaW5nKSB7XG4gICAgICAgIHRoaXMuZmluaXNoRW5kVGFnKHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGFnLnR5cGUgPT09ICdFbmRUYWcnKSB7XG4gICAgICB0aGlzLmZpbmlzaEVuZFRhZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgZmluaXNoU3RhcnRUYWcoKTogdm9pZCB7XG4gICAgbGV0IHsgbmFtZSwgYXR0cmlidXRlczogYXR0cnMsIG1vZGlmaWVycywgY29tbWVudHMsIHNlbGZDbG9zaW5nLCBsb2MgfSA9IHRoaXMuZmluaXNoKFxuICAgICAgdGhpcy5jdXJyZW50U3RhcnRUYWdcbiAgICApO1xuXG4gICAgbGV0IGVsZW1lbnQgPSBiLmVsZW1lbnQoe1xuICAgICAgdGFnOiBuYW1lLFxuICAgICAgc2VsZkNsb3NpbmcsXG4gICAgICBhdHRycyxcbiAgICAgIG1vZGlmaWVycyxcbiAgICAgIGNvbW1lbnRzLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgYmxvY2tQYXJhbXM6IFtdLFxuICAgICAgbG9jLFxuICAgIH0pO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2goZWxlbWVudCk7XG4gIH1cblxuICBmaW5pc2hFbmRUYWcoaXNWb2lkOiBib29sZWFuKTogdm9pZCB7XG4gICAgbGV0IHRhZyA9IHRoaXMuZmluaXNoKHRoaXMuY3VycmVudFRhZyk7XG5cbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpIGFzIEFTVHYxLkVsZW1lbnROb2RlO1xuICAgIGxldCBwYXJlbnQgPSB0aGlzLmN1cnJlbnRFbGVtZW50KCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlRW5kVGFnKHRhZywgZWxlbWVudCwgaXNWb2lkKTtcblxuICAgIGVsZW1lbnQubG9jID0gZWxlbWVudC5sb2Mud2l0aEVuZCh0aGlzLm9mZnNldCgpKTtcbiAgICBwYXJzZUVsZW1lbnRCbG9ja1BhcmFtcyhlbGVtZW50KTtcbiAgICBhcHBlbmRDaGlsZChwYXJlbnQsIGVsZW1lbnQpO1xuICB9XG5cbiAgbWFya1RhZ0FzU2VsZkNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50VGFnLnNlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIFRhZ3MgLSBuYW1lXG5cbiAgYXBwZW5kVG9UYWdOYW1lKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFRhZy5uYW1lICs9IGNoYXI7XG4gIH1cblxuICAvLyBUYWdzIC0gYXR0cmlidXRlc1xuXG4gIGJlZ2luQXR0cmlidXRlKCk6IHZvaWQge1xuICAgIGxldCBvZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuXG4gICAgdGhpcy5jdXJyZW50QXR0cmlidXRlID0ge1xuICAgICAgbmFtZTogJycsXG4gICAgICBwYXJ0czogW10sXG4gICAgICBjdXJyZW50UGFydDogbnVsbCxcbiAgICAgIGlzUXVvdGVkOiBmYWxzZSxcbiAgICAgIGlzRHluYW1pYzogZmFsc2UsXG4gICAgICBzdGFydDogb2Zmc2V0LFxuICAgICAgdmFsdWVTcGFuOiBvZmZzZXQuY29sbGFwc2VkKCksXG4gICAgfTtcbiAgfVxuXG4gIGFwcGVuZFRvQXR0cmlidXRlTmFtZShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gY2hhcjtcbiAgfVxuXG4gIGJlZ2luQXR0cmlidXRlVmFsdWUoaXNRdW90ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyLmlzUXVvdGVkID0gaXNRdW90ZWQ7XG4gICAgdGhpcy5zdGFydFRleHRQYXJ0KCk7XG4gICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZVNwYW4gPSB0aGlzLm9mZnNldCgpLmNvbGxhcHNlZCgpO1xuICB9XG5cbiAgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgcGFydHMgPSB0aGlzLmN1cnJlbnRBdHRyLnBhcnRzO1xuICAgIGxldCBsYXN0UGFydCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuXG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmN1cnJlbnRBdHRyLmN1cnJlbnRQYXJ0O1xuXG4gICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgIGN1cnJlbnQuY2hhcnMgKz0gY2hhcjtcblxuICAgICAgLy8gdXBkYXRlIGVuZCBsb2NhdGlvbiBmb3IgZWFjaCBhZGRlZCBjaGFyXG4gICAgICBjdXJyZW50LmxvYyA9IGN1cnJlbnQubG9jLndpdGhFbmQodGhpcy5vZmZzZXQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluaXRpYWxseSBhc3N1bWUgdGhlIHRleHQgbm9kZSBpcyBhIHNpbmdsZSBjaGFyXG4gICAgICBsZXQgbG9jOiBTb3VyY2VPZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuXG4gICAgICAvLyB0aGUgdG9rZW5pemVyIGxpbmUvY29sdW1uIGhhdmUgYWxyZWFkeSBiZWVuIGFkdmFuY2VkLCBjb3JyZWN0IGxvY2F0aW9uIGluZm9cbiAgICAgIGlmIChjaGFyID09PSAnXFxuJykge1xuICAgICAgICBsb2MgPSBsYXN0UGFydCA/IGxhc3RQYXJ0LmxvYy5nZXRFbmQoKSA6IHRoaXMuY3VycmVudEF0dHIudmFsdWVTcGFuLmdldFN0YXJ0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2MgPSBsb2MubW92ZSgtMSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudEF0dHIuY3VycmVudFBhcnQgPSBiLnRleHQoeyBjaGFyczogY2hhciwgbG9jOiBsb2MuY29sbGFwc2VkKCkgfSk7XG4gICAgfVxuICB9XG5cbiAgZmluaXNoQXR0cmlidXRlVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5maW5hbGl6ZVRleHRQYXJ0KCk7XG5cbiAgICBsZXQgdGFnID0gdGhpcy5jdXJyZW50VGFnO1xuICAgIGxldCB0b2tlbml6ZXJQb3MgPSB0aGlzLm9mZnNldCgpO1xuXG4gICAgaWYgKHRhZy50eXBlID09PSAnRW5kVGFnJykge1xuICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgYEludmFsaWQgZW5kIHRhZzogY2xvc2luZyB0YWcgbXVzdCBub3QgaGF2ZSBhdHRyaWJ1dGVzYCxcbiAgICAgICAgdGhpcy5zb3VyY2Uuc3BhbkZvcih7IHN0YXJ0OiB0YWcubG9jLnRvSlNPTigpLCBlbmQ6IHRva2VuaXplclBvcy50b0pTT04oKSB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgeyBuYW1lLCBwYXJ0cywgc3RhcnQsIGlzUXVvdGVkLCBpc0R5bmFtaWMsIHZhbHVlU3BhbiB9ID0gdGhpcy5jdXJyZW50QXR0cjtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmFzc2VtYmxlQXR0cmlidXRlVmFsdWUocGFydHMsIGlzUXVvdGVkLCBpc0R5bmFtaWMsIHN0YXJ0LnVudGlsKHRva2VuaXplclBvcykpO1xuICAgIHZhbHVlLmxvYyA9IHZhbHVlU3Bhbi53aXRoRW5kKHRva2VuaXplclBvcyk7XG5cbiAgICBsZXQgYXR0cmlidXRlID0gYi5hdHRyKHsgbmFtZSwgdmFsdWUsIGxvYzogc3RhcnQudW50aWwodG9rZW5pemVyUG9zKSB9KTtcblxuICAgIHRoaXMuY3VycmVudFN0YXJ0VGFnLmF0dHJpYnV0ZXMucHVzaChhdHRyaWJ1dGUpO1xuICB9XG5cbiAgcmVwb3J0U3ludGF4RXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihtZXNzYWdlLCB0aGlzLm9mZnNldCgpLmNvbGxhcHNlZCgpKTtcbiAgfVxuXG4gIGFzc2VtYmxlQ29uY2F0ZW5hdGVkVmFsdWUoXG4gICAgcGFydHM6IChBU1R2MS5NdXN0YWNoZVN0YXRlbWVudCB8IEFTVHYxLlRleHROb2RlKVtdXG4gICk6IEFTVHYxLkNvbmNhdFN0YXRlbWVudCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHBhcnQ6IEFTVHYxLkJhc2VOb2RlID0gcGFydHNbaV07XG5cbiAgICAgIGlmIChwYXJ0LnR5cGUgIT09ICdNdXN0YWNoZVN0YXRlbWVudCcgJiYgcGFydC50eXBlICE9PSAnVGV4dE5vZGUnKSB7XG4gICAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgJ1Vuc3VwcG9ydGVkIG5vZGUgaW4gcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZTogJyArIHBhcnRbJ3R5cGUnXSxcbiAgICAgICAgICBwYXJ0LmxvY1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzc2VydFByZXNlbnQocGFydHMsIGB0aGUgY29uY2F0ZW5hdGlvbiBwYXJ0cyBvZiBhbiBlbGVtZW50IHNob3VsZCBub3QgYmUgZW1wdHlgKTtcblxuICAgIGxldCBmaXJzdCA9IHBhcnRzWzBdO1xuICAgIGxldCBsYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gYi5jb25jYXQocGFydHMsIHRoaXMuc291cmNlLnNwYW5Gb3IoZmlyc3QubG9jKS5leHRlbmQodGhpcy5zb3VyY2Uuc3BhbkZvcihsYXN0LmxvYykpKTtcbiAgfVxuXG4gIHZhbGlkYXRlRW5kVGFnKFxuICAgIHRhZzogVGFnPCdTdGFydFRhZycgfCAnRW5kVGFnJz4sXG4gICAgZWxlbWVudDogQVNUdjEuRWxlbWVudE5vZGUsXG4gICAgc2VsZkNsb3Npbmc6IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgbGV0IGVycm9yO1xuXG4gICAgaWYgKHZvaWRNYXBbdGFnLm5hbWVdICYmICFzZWxmQ2xvc2luZykge1xuICAgICAgLy8gRW5nVGFnIGlzIGFsc28gY2FsbGVkIGJ5IFN0YXJ0VGFnIGZvciB2b2lkIGFuZCBzZWxmLWNsb3NpbmcgdGFncyAoaS5lLlxuICAgICAgLy8gPGlucHV0PiBvciA8YnIgLz4sIHNvIHdlIG5lZWQgdG8gY2hlY2sgZm9yIHRoYXQgaGVyZS4gT3RoZXJ3aXNlLCB3ZSB3b3VsZFxuICAgICAgLy8gdGhyb3cgYW4gZXJyb3IgZm9yIHRob3NlIGNhc2VzLlxuICAgICAgZXJyb3IgPSBgPCR7dGFnLm5hbWV9PiBlbGVtZW50cyBkbyBub3QgbmVlZCBlbmQgdGFncy4gWW91IHNob3VsZCByZW1vdmUgaXRgO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC50YWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBgQ2xvc2luZyB0YWcgPC8ke3RhZy5uYW1lfT4gd2l0aG91dCBhbiBvcGVuIHRhZ2A7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LnRhZyAhPT0gdGFnLm5hbWUpIHtcbiAgICAgIGVycm9yID0gYENsb3NpbmcgdGFnIDwvJHt0YWcubmFtZX0+IGRpZCBub3QgbWF0Y2ggbGFzdCBvcGVuIHRhZyA8JHtlbGVtZW50LnRhZ30+IChvbiBsaW5lICR7ZWxlbWVudC5sb2Muc3RhcnRQb3NpdGlvbi5saW5lfSlgO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihlcnJvciwgdGFnLmxvYyk7XG4gICAgfVxuICB9XG5cbiAgYXNzZW1ibGVBdHRyaWJ1dGVWYWx1ZShcbiAgICBwYXJ0czogKEFTVHYxLk11c3RhY2hlU3RhdGVtZW50IHwgQVNUdjEuVGV4dE5vZGUpW10sXG4gICAgaXNRdW90ZWQ6IGJvb2xlYW4sXG4gICAgaXNEeW5hbWljOiBib29sZWFuLFxuICAgIHNwYW46IFNvdXJjZVNwYW5cbiAgKTogQVNUdjEuQ29uY2F0U3RhdGVtZW50IHwgQVNUdjEuTXVzdGFjaGVTdGF0ZW1lbnQgfCBBU1R2MS5UZXh0Tm9kZSB7XG4gICAgaWYgKGlzRHluYW1pYykge1xuICAgICAgaWYgKGlzUXVvdGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzc2VtYmxlQ29uY2F0ZW5hdGVkVmFsdWUocGFydHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcnRzLmxlbmd0aCA9PT0gMSB8fFxuICAgICAgICAgIChwYXJ0cy5sZW5ndGggPT09IDIgJiZcbiAgICAgICAgICAgIHBhcnRzWzFdLnR5cGUgPT09ICdUZXh0Tm9kZScgJiZcbiAgICAgICAgICAgIChwYXJ0c1sxXSBhcyBBU1R2MS5UZXh0Tm9kZSkuY2hhcnMgPT09ICcvJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnRzWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBgQW4gdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBtdXN0YWNoZSwgYCArXG4gICAgICAgICAgICAgIGBwcmVjZWRlZCBieSB3aGl0ZXNwYWNlIG9yIGEgJz0nIGNoYXJhY3RlciwgYW5kIGAgK1xuICAgICAgICAgICAgICBgZm9sbG93ZWQgYnkgd2hpdGVzcGFjZSwgYSAnPicgY2hhcmFjdGVyLCBvciAnLz4nYCxcbiAgICAgICAgICAgIHNwYW5cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYXJ0cy5sZW5ndGggPiAwID8gcGFydHNbMF0gOiBiLnRleHQoeyBjaGFyczogJycsIGxvYzogc3BhbiB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gIEFTVFBsdWdpbnMgY2FuIG1ha2UgY2hhbmdlcyB0byB0aGUgR2xpbW1lciB0ZW1wbGF0ZSBBU1QgYmVmb3JlXG4gIGNvbXBpbGF0aW9uIGJlZ2lucy5cbiovXG5leHBvcnQgaW50ZXJmYWNlIEFTVFBsdWdpbkJ1aWxkZXI8VEVudiBleHRlbmRzIEFTVFBsdWdpbkVudmlyb25tZW50ID0gQVNUUGx1Z2luRW52aXJvbm1lbnQ+IHtcbiAgKGVudjogVEVudik6IEFTVFBsdWdpbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBU1RQbHVnaW4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZpc2l0b3I6IE5vZGVWaXNpdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFTVFBsdWdpbkVudmlyb25tZW50IHtcbiAgbWV0YT86IG9iamVjdDtcbiAgc3ludGF4OiBTeW50YXg7XG59XG5cbmludGVyZmFjZSBIYW5kbGViYXJzUGFyc2VPcHRpb25zIHtcbiAgc3JjTmFtZT86IHN0cmluZztcbiAgaWdub3JlU3RhbmRhbG9uZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlY29tcGlsZU9wdGlvbnMgZXh0ZW5kcyBQcmVwcm9jZXNzT3B0aW9ucyB7XG4gIGN1c3RvbWl6ZUNvbXBvbmVudE5hbWU/KGlucHV0OiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcHJvY2Vzc09wdGlvbnMge1xuICBzdHJpY3RNb2RlPzogYm9vbGVhbjtcbiAgbG9jYWxzPzogc3RyaW5nW107XG4gIG1ldGE/OiB7XG4gICAgbW9kdWxlTmFtZT86IHN0cmluZztcbiAgfTtcbiAgcGx1Z2lucz86IHtcbiAgICBhc3Q/OiBBU1RQbHVnaW5CdWlsZGVyW107XG4gIH07XG4gIHBhcnNlT3B0aW9ucz86IEhhbmRsZWJhcnNQYXJzZU9wdGlvbnM7XG4gIGN1c3RvbWl6ZUNvbXBvbmVudE5hbWU/KGlucHV0OiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAgVXNlZnVsIGZvciBzcGVjaWZ5aW5nIGEgZ3JvdXAgb2Ygb3B0aW9ucyB0b2dldGhlci5cblxuICAgIFdoZW4gYCdjb2RlbW9kJ2Agd2UgZGlzYWJsZSBhbGwgd2hpdGVzcGFjZSBjb250cm9sIGluIGhhbmRsZWJhcnNcbiAgICAodG8gcHJlc2VydmUgYXMgbXVjaCBhcyBwb3NzaWJsZSkgYW5kIHdlIGFsc28gYXZvaWQgYW55XG4gICAgZXNjYXBpbmcvdW5lc2NhcGluZyBvZiBIVE1MIGVudGl0eSBjb2Rlcy5cbiAgICovXG4gIG1vZGU/OiAnY29kZW1vZCcgfCAncHJlY29tcGlsZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ludGF4IHtcbiAgcGFyc2U6IHR5cGVvZiBwcmVwcm9jZXNzO1xuICBidWlsZGVyczogdHlwZW9mIHB1YmxpY0J1aWxkZXI7XG4gIHByaW50OiB0eXBlb2YgcHJpbnQ7XG4gIHRyYXZlcnNlOiB0eXBlb2YgdHJhdmVyc2U7XG4gIFdhbGtlcjogdHlwZW9mIFdhbGtlcjtcbn1cblxuY29uc3Qgc3ludGF4OiBTeW50YXggPSB7XG4gIHBhcnNlOiBwcmVwcm9jZXNzLFxuICBidWlsZGVyczogcHVibGljQnVpbGRlcixcbiAgcHJpbnQsXG4gIHRyYXZlcnNlLFxuICBXYWxrZXIsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2VzcyhcbiAgaW5wdXQ6IHN0cmluZyB8IFNvdXJjZSB8IEhCUy5Qcm9ncmFtLFxuICBvcHRpb25zOiBQcmVwcm9jZXNzT3B0aW9ucyA9IHt9XG4pOiBBU1R2MS5UZW1wbGF0ZSB7XG4gIGxldCBtb2RlID0gb3B0aW9ucy5tb2RlIHx8ICdwcmVjb21waWxlJztcblxuICBsZXQgc291cmNlOiBTb3VyY2U7XG4gIGxldCBhc3Q6IEhCUy5Qcm9ncmFtO1xuICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZSA9IG5ldyBTb3VyY2UoaW5wdXQsIG9wdGlvbnMubWV0YT8ubW9kdWxlTmFtZSk7XG5cbiAgICBpZiAobW9kZSA9PT0gJ2NvZGVtb2QnKSB7XG4gICAgICBhc3QgPSBwYXJzZVdpdGhvdXRQcm9jZXNzaW5nKGlucHV0LCBvcHRpb25zLnBhcnNlT3B0aW9ucykgYXMgSEJTLlByb2dyYW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzdCA9IHBhcnNlKGlucHV0LCBvcHRpb25zLnBhcnNlT3B0aW9ucykgYXMgSEJTLlByb2dyYW07XG4gICAgfVxuICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgU291cmNlKSB7XG4gICAgc291cmNlID0gaW5wdXQ7XG5cbiAgICBpZiAobW9kZSA9PT0gJ2NvZGVtb2QnKSB7XG4gICAgICBhc3QgPSBwYXJzZVdpdGhvdXRQcm9jZXNzaW5nKGlucHV0LnNvdXJjZSwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpIGFzIEhCUy5Qcm9ncmFtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3QgPSBwYXJzZShpbnB1dC5zb3VyY2UsIG9wdGlvbnMucGFyc2VPcHRpb25zKSBhcyBIQlMuUHJvZ3JhbTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc291cmNlID0gbmV3IFNvdXJjZSgnJywgb3B0aW9ucy5tZXRhPy5tb2R1bGVOYW1lKTtcbiAgICBhc3QgPSBpbnB1dDtcbiAgfVxuXG4gIGxldCBlbnRpdHlQYXJzZXIgPSB1bmRlZmluZWQ7XG4gIGlmIChtb2RlID09PSAnY29kZW1vZCcpIHtcbiAgICBlbnRpdHlQYXJzZXIgPSBuZXcgRW50aXR5UGFyc2VyKHt9KTtcbiAgfVxuXG4gIGxldCBvZmZzZXRzID0gU291cmNlU3Bhbi5mb3JDaGFyUG9zaXRpb25zKHNvdXJjZSwgMCwgc291cmNlLnNvdXJjZS5sZW5ndGgpO1xuICBhc3QubG9jID0ge1xuICAgIHNvdXJjZTogJyhwcm9ncmFtKScsXG4gICAgc3RhcnQ6IG9mZnNldHMuc3RhcnRQb3NpdGlvbixcbiAgICBlbmQ6IG9mZnNldHMuZW5kUG9zaXRpb24sXG4gIH07XG5cbiAgbGV0IHByb2dyYW0gPSBuZXcgVG9rZW5pemVyRXZlbnRIYW5kbGVycyhzb3VyY2UsIGVudGl0eVBhcnNlciwgbW9kZSkuYWNjZXB0VGVtcGxhdGUoYXN0KTtcblxuICBpZiAob3B0aW9ucy5zdHJpY3RNb2RlKSB7XG4gICAgcHJvZ3JhbS5ibG9ja1BhcmFtcyA9IG9wdGlvbnMubG9jYWxzID8/IFtdO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5wbHVnaW5zICYmIG9wdGlvbnMucGx1Z2lucy5hc3QpIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IG9wdGlvbnMucGx1Z2lucy5hc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBsZXQgdHJhbnNmb3JtID0gb3B0aW9ucy5wbHVnaW5zLmFzdFtpXTtcbiAgICAgIGxldCBlbnY6IEFTVFBsdWdpbkVudmlyb25tZW50ID0gYXNzaWduKHt9LCBvcHRpb25zLCB7IHN5bnRheCB9LCB7IHBsdWdpbnM6IHVuZGVmaW5lZCB9KTtcblxuICAgICAgbGV0IHBsdWdpblJlc3VsdCA9IHRyYW5zZm9ybShlbnYpO1xuXG4gICAgICB0cmF2ZXJzZShwcm9ncmFtLCBwbHVnaW5SZXN1bHQudmlzaXRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb2dyYW07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsSUFBTSxzQkFBTixHQUFBLGFBQUEsVUFBQSxxQkFBQSxFQUFBO0FBQUEsRUFBQSxjQUFBLENBQUEsc0JBQUEsRUFBQSxxQkFBQSxDQUFBOztBQUFBLFdBQUEsc0JBQUEsR0FBQTtBQUFBLFFBQUEsS0FBQTs7O0FBQ1UsSUFBQSxLQUFBLENBQUEsV0FBQSxHQUFBLENBQUE7QUFDQSxJQUFBLEtBQUEsQ0FBQSxhQUFBLEdBQUEsQ0FBQTtBQUZWLFdBQUEsS0FBQTtBQWtTQzs7QUFsU0QsTUFBQSxNQUFBLEdBQUEsc0JBQUEsQ0FBQSxTQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLEtBQUEsR0FJRSxTQUFBLEtBQUEsR0FBSztBQUNILFNBQUEsV0FBQSxHQUFBLElBQUE7QUFMSixHQUFBLENBUUU7QUFSRjs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxZQUFBLEdBVUUsU0FBQSxZQUFBLEdBQVk7QUFDVixTQUFBLFdBQUEsR0FBbUIsd0JBQUEsT0FBQSxDQUFBLEVBQUEsRUFBYyxLQUFBLE1BQUEsQ0FBQSxTQUFBLENBQXNCLEtBQXRCLFdBQUEsRUFBd0MsS0FBekUsYUFBaUMsQ0FBZCxDQUFuQjtBQVhKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsbUJBQUEsR0FjRSxTQUFBLG1CQUFBLENBQUEsS0FBQSxFQUFnQztBQUM5QixTQUFBLGNBQUEsQ0FBQSxLQUFBLElBQUEsS0FBQTtBQWZKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsYUFBQSxHQWtCRSxTQUFBLGFBQUEsR0FBYTtBQUNYLDRC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UixJQUFBLEtBQUssRUFBRSxPQUFPLENBRk4sYUFBQTtBQUdSLElBQUEsR0FBRyxFQUFFLE9BQU8sQ0FBQztBQUhMLEdBQVY7QUFNQSxNQUFJLE9BQU8sR0FBRyxJQUFBLHNCQUFBLENBQUEsTUFBQSxFQUFBLFlBQUEsRUFBQSxJQUFBLEVBQUEsY0FBQSxDQUFkLEdBQWMsQ0FBZDs7QUFFQSxNQUFJLE9BQU8sQ0FBWCxVQUFBLEVBQXdCO0FBQ3RCLElBQUEsT0FBTyxDQUFQLFdBQUEsR0FBbUIsQ0FBQSxFQUFBLEdBQUcsT0FBTyxDQUFWLE1BQUEsTUFBQSxJQUFBLElBQWlCLEVBQUEsS0FBQSxLQUFqQixDQUFBLEdBQUEsRUFBQSxHQUFuQixFQUFBO0FBQ0Q7O0FBRUQsTUFBSSxPQUFPLElBQUksT0FBTyxDQUFsQixPQUFBLElBQThCLE9BQU8sQ0FBUCxPQUFBLENBQWxDLEdBQUEsRUFBdUQ7QUFDckQsU0FBSyxJQUFJLENBQUMsR0FBTCxDQUFBLEVBQVcsQ0FBQyxHQUFHLE9BQU8sQ0FBUCxPQUFBLENBQUEsR0FBQSxDQUFwQixNQUFBLEVBQWdELENBQUMsR0FBakQsQ0FBQSxFQUF1RCxDQUF2RCxFQUFBLEVBQTREO0FBQzFELFVBQUksU0FBUyxHQUFHLE9BQU8sQ0FBUCxPQUFBLENBQUEsR0FBQSxDQUFoQixDQUFnQixDQUFoQjtBQUNBLFVBQUksR0FBRyxHQUF5QixrQkFBTSxFQUFOLEVBQU0sT0FBTixFQUFvQjtBQUFFLFFBQUEsTUFBQSxFQUFBO0FBQUYsT0FBcEIsRUFBZ0M7QUFBRSxRQUFBLE9BQU8sRUFBRTtBQUFYLE9BQWhDLENBQWhDO0FBRUEsVUFBSSxZQUFZLEdBQUcsU0FBUyxDQUE1QixHQUE0QixDQUE1QjtBQUVBLDZCQUFRLE9BQVIsRUFBa0IsWUFBWSxDQUE5QixPQUFBO0FBQ0Q7QUFDRjs7QUFFRCxTQUFBLE9BQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYXNzZXJ0UHJlc2VudCwgYXNzaWduIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBwYXJzZSwgcGFyc2VXaXRob3V0UHJvY2Vzc2luZyB9IGZyb20gJ0BoYW5kbGViYXJzL3BhcnNlcic7XG5pbXBvcnQgeyBFbnRpdHlQYXJzZXIgfSBmcm9tICdzaW1wbGUtaHRtbC10b2tlbml6ZXInO1xuXG5pbXBvcnQgcHJpbnQgZnJvbSAnLi4vZ2VuZXJhdGlvbi9wcmludCc7XG5pbXBvcnQgeyB2b2lkTWFwIH0gZnJvbSAnLi4vZ2VuZXJhdGlvbi9wcmludGVyJztcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uL3BhcnNlcic7XG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tICcuLi9zb3VyY2Uvc291cmNlJztcbmltcG9ydCB7IFNvdXJjZU9mZnNldCwgU291cmNlU3BhbiB9IGZyb20gJy4uL3NvdXJjZS9zcGFuJztcbmltcG9ydCB7IGdlbmVyYXRlU3ludGF4RXJyb3IgfSBmcm9tICcuLi9zeW50YXgtZXJyb3InO1xuaW1wb3J0IHRyYXZlcnNlIGZyb20gJy4uL3RyYXZlcnNhbC90cmF2ZXJzZSc7XG5pbXBvcnQgeyBOb2RlVmlzaXRvciB9IGZyb20gJy4uL3RyYXZlcnNhbC92aXNpdG9yJztcbmltcG9ydCBXYWxrZXIgZnJvbSAnLi4vdHJhdmVyc2FsL3dhbGtlcic7XG5pbXBvcnQgeyBhcHBlbmRDaGlsZCwgcGFyc2VFbGVtZW50QmxvY2tQYXJhbXMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgKiBhcyBBU1R2MSBmcm9tICcuLi92MS9hcGknO1xuaW1wb3J0ICogYXMgSEJTIGZyb20gJy4uL3YxL2hhbmRsZWJhcnMtYXN0JztcbmltcG9ydCBiIGZyb20gJy4uL3YxL3BhcnNlci1idWlsZGVycyc7XG5pbXBvcnQgcHVibGljQnVpbGRlciBmcm9tICcuLi92MS9wdWJsaWMtYnVpbGRlcnMnO1xuaW1wb3J0IHsgSGFuZGxlYmFyc05vZGVWaXNpdG9ycyB9IGZyb20gJy4vaGFuZGxlYmFycy1ub2RlLXZpc2l0b3JzJztcblxuZXhwb3J0IGNsYXNzIFRva2VuaXplckV2ZW50SGFuZGxlcnMgZXh0ZW5kcyBIYW5kbGViYXJzTm9kZVZpc2l0b3JzIHtcbiAgcHJpdmF0ZSB0YWdPcGVuTGluZSA9IDA7XG4gIHByaXZhdGUgdGFnT3BlbkNvbHVtbiA9IDA7XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IG51bGw7XG4gIH1cblxuICAvLyBDb21tZW50XG5cbiAgYmVnaW5Db21tZW50KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBiLmNvbW1lbnQoJycsIHRoaXMuc291cmNlLm9mZnNldEZvcih0aGlzLnRhZ09wZW5MaW5lLCB0aGlzLnRhZ09wZW5Db2x1bW4pKTtcbiAgfVxuXG4gIGFwcGVuZFRvQ29tbWVudERhdGEoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Q29tbWVudC52YWx1ZSArPSBjaGFyO1xuICB9XG5cbiAgZmluaXNoQ29tbWVudCgpOiB2b2lkIHtcbiAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIHRoaXMuZmluaXNoKHRoaXMuY3VycmVudENvbW1lbnQpKTtcbiAgfVxuXG4gIC8vIERhdGFcblxuICBiZWdpbkRhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IGIudGV4dCh7XG4gICAgICBjaGFyczogJycsXG4gICAgICBsb2M6IHRoaXMub2Zmc2V0KCkuY29sbGFwc2VkKCksXG4gICAgfSk7XG4gIH1cblxuICBhcHBlbmRUb0RhdGEoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50RGF0YS5jaGFycyArPSBjaGFyO1xuICB9XG5cbiAgZmluaXNoRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRhLmxvYyA9IHRoaXMuY3VycmVudERhdGEubG9jLndpdGhFbmQodGhpcy5vZmZzZXQoKSk7XG5cbiAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIHRoaXMuY3VycmVudERhdGEpO1xuICB9XG5cbiAgLy8gVGFncyAtIGJhc2ljXG5cbiAgdGFnT3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLnRhZ09wZW5MaW5lID0gdGhpcy50b2tlbml6ZXIubGluZTtcbiAgICB0aGlzLnRhZ09wZW5Db2x1bW4gPSB0aGlzLnRva2VuaXplci5jb2x1bW47XG4gIH1cblxuICBiZWdpblN0YXJ0VGFnKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSB7XG4gICAgICB0eXBlOiAnU3RhcnRUYWcnLFxuICAgICAgbmFtZTogJycsXG4gICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgIG1vZGlmaWVyczogW10sXG4gICAgICBjb21tZW50czogW10sXG4gICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICBsb2M6IHRoaXMuc291cmNlLm9mZnNldEZvcih0aGlzLnRhZ09wZW5MaW5lLCB0aGlzLnRhZ09wZW5Db2x1bW4pLFxuICAgIH07XG4gIH1cblxuICBiZWdpbkVuZFRhZygpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0ge1xuICAgICAgdHlwZTogJ0VuZFRhZycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgbW9kaWZpZXJzOiBbXSxcbiAgICAgIGNvbW1lbnRzOiBbXSxcbiAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgIGxvYzogdGhpcy5zb3VyY2Uub2Zmc2V0Rm9yKHRoaXMudGFnT3BlbkxpbmUsIHRoaXMudGFnT3BlbkNvbHVtbiksXG4gICAgfTtcbiAgfVxuXG4gIGZpbmlzaFRhZygpOiB2b2lkIHtcbiAgICBsZXQgdGFnID0gdGhpcy5maW5pc2godGhpcy5jdXJyZW50VGFnKTtcblxuICAgIGlmICh0YWcudHlwZSA9PT0gJ1N0YXJ0VGFnJykge1xuICAgICAgdGhpcy5maW5pc2hTdGFydFRhZygpO1xuXG4gICAgICBpZiAodGFnLm5hbWUgPT09ICc6Jykge1xuICAgICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICdJbnZhbGlkIG5hbWVkIGJsb2NrIG5hbWVkIGRldGVjdGVkLCB5b3UgbWF5IGhhdmUgY3JlYXRlZCBhIG5hbWVkIGJsb2NrIHdpdGhvdXQgYSBuYW1lLCBvciB5b3UgbWF5IGhhdmUgYmVnYW4geW91ciBuYW1lIHdpdGggYSBudW1iZXIuIE5hbWVkIGJsb2NrcyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBhcmUgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBsb25nLCBhbmQgYmVnaW4gd2l0aCBhIGxvd2VyIGNhc2UgbGV0dGVyJyxcbiAgICAgICAgICB0aGlzLnNvdXJjZS5zcGFuRm9yKHtcbiAgICAgICAgICAgIHN0YXJ0OiB0aGlzLmN1cnJlbnRUYWcubG9jLnRvSlNPTigpLFxuICAgICAgICAgICAgZW5kOiB0aGlzLm9mZnNldCgpLnRvSlNPTigpLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2b2lkTWFwW3RhZy5uYW1lXSB8fCB0YWcuc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgdGhpcy5maW5pc2hFbmRUYWcodHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YWcudHlwZSA9PT0gJ0VuZFRhZycpIHtcbiAgICAgIHRoaXMuZmluaXNoRW5kVGFnKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBmaW5pc2hTdGFydFRhZygpOiB2b2lkIHtcbiAgICBsZXQgeyBuYW1lLCBhdHRyaWJ1dGVzOiBhdHRycywgbW9kaWZpZXJzLCBjb21tZW50cywgc2VsZkNsb3NpbmcsIGxvYyB9ID0gdGhpcy5maW5pc2goXG4gICAgICB0aGlzLmN1cnJlbnRTdGFydFRhZ1xuICAgICk7XG5cbiAgICBsZXQgZWxlbWVudCA9IGIuZWxlbWVudCh7XG4gICAgICB0YWc6IG5hbWUsXG4gICAgICBzZWxmQ2xvc2luZyxcbiAgICAgIGF0dHJzLFxuICAgICAgbW9kaWZpZXJzLFxuICAgICAgY29tbWVudHMsXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgICBibG9ja1BhcmFtczogW10sXG4gICAgICBsb2MsXG4gICAgfSk7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChlbGVtZW50KTtcbiAgfVxuXG4gIGZpbmlzaEVuZFRhZyhpc1ZvaWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBsZXQgdGFnID0gdGhpcy5maW5pc2godGhpcy5jdXJyZW50VGFnKTtcblxuICAgIGxldCBlbGVtZW50ID0gdGhpcy5lbGVtZW50U3RhY2sucG9wKCkgYXMgQVNUdjEuRWxlbWVudE5vZGU7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMuY3VycmVudEVsZW1lbnQoKTtcblxuICAgIHRoaXMudmFsaWRhdGVFbmRUYWcodGFnLCBlbGVtZW50LCBpc1ZvaWQpO1xuXG4gICAgZWxlbWVudC5sb2MgPSBlbGVtZW50LmxvYy53aXRoRW5kKHRoaXMub2Zmc2V0KCkpO1xuICAgIHBhcnNlRWxlbWVudEJsb2NrUGFyYW1zKGVsZW1lbnQpO1xuICAgIGFwcGVuZENoaWxkKHBhcmVudCwgZWxlbWVudCk7XG4gIH1cblxuICBtYXJrVGFnQXNTZWxmQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRUYWcuc2VsZkNsb3NpbmcgPSB0cnVlO1xuICB9XG5cbiAgLy8gVGFncyAtIG5hbWVcblxuICBhcHBlbmRUb1RhZ05hbWUoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50VGFnLm5hbWUgKz0gY2hhcjtcbiAgfVxuXG4gIC8vIFRhZ3MgLSBhdHRyaWJ1dGVzXG5cbiAgYmVnaW5BdHRyaWJ1dGUoKTogdm9pZCB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMub2Zmc2V0KCk7XG5cbiAgICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUgPSB7XG4gICAgICBuYW1lOiAnJyxcbiAgICAgIHBhcnRzOiBbXSxcbiAgICAgIGN1cnJlbnRQYXJ0OiBudWxsLFxuICAgICAgaXNRdW90ZWQ6IGZhbHNlLFxuICAgICAgaXNEeW5hbWljOiBmYWxzZSxcbiAgICAgIHN0YXJ0OiBvZmZzZXQsXG4gICAgICB2YWx1ZVNwYW46IG9mZnNldC5jb2xsYXBzZWQoKSxcbiAgICB9O1xuICB9XG5cbiAgYXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSBjaGFyO1xuICB9XG5cbiAgYmVnaW5BdHRyaWJ1dGVWYWx1ZShpc1F1b3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEF0dHIuaXNRdW90ZWQgPSBpc1F1b3RlZDtcbiAgICB0aGlzLnN0YXJ0VGV4dFBhcnQoKTtcbiAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlU3BhbiA9IHRoaXMub2Zmc2V0KCkuY29sbGFwc2VkKCk7XG4gIH1cblxuICBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBwYXJ0cyA9IHRoaXMuY3VycmVudEF0dHIucGFydHM7XG4gICAgbGV0IGxhc3RQYXJ0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG5cbiAgICBsZXQgY3VycmVudCA9IHRoaXMuY3VycmVudEF0dHIuY3VycmVudFBhcnQ7XG5cbiAgICBpZiAoY3VycmVudCkge1xuICAgICAgY3VycmVudC5jaGFycyArPSBjaGFyO1xuXG4gICAgICAvLyB1cGRhdGUgZW5kIGxvY2F0aW9uIGZvciBlYWNoIGFkZGVkIGNoYXJcbiAgICAgIGN1cnJlbnQubG9jID0gY3VycmVudC5sb2Mud2l0aEVuZCh0aGlzLm9mZnNldCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW5pdGlhbGx5IGFzc3VtZSB0aGUgdGV4dCBub2RlIGlzIGEgc2luZ2xlIGNoYXJcbiAgICAgIGxldCBsb2M6IFNvdXJjZU9mZnNldCA9IHRoaXMub2Zmc2V0KCk7XG5cbiAgICAgIC8vIHRoZSB0b2tlbml6ZXIgbGluZS9jb2x1bW4gaGF2ZSBhbHJlYWR5IGJlZW4gYWR2YW5jZWQsIGNvcnJlY3QgbG9jYXRpb24gaW5mb1xuICAgICAgaWYgKGNoYXIgPT09ICdcXG4nKSB7XG4gICAgICAgIGxvYyA9IGxhc3RQYXJ0ID8gbGFzdFBhcnQubG9jLmdldEVuZCgpIDogdGhpcy5jdXJyZW50QXR0ci52YWx1ZVNwYW4uZ2V0U3RhcnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvYyA9IGxvYy5tb3ZlKC0xKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50QXR0ci5jdXJyZW50UGFydCA9IGIudGV4dCh7IGNoYXJzOiBjaGFyLCBsb2M6IGxvYy5jb2xsYXBzZWQoKSB9KTtcbiAgICB9XG4gIH1cblxuICBmaW5pc2hBdHRyaWJ1dGVWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbmFsaXplVGV4dFBhcnQoKTtcblxuICAgIGxldCB0YWcgPSB0aGlzLmN1cnJlbnRUYWc7XG4gICAgbGV0IHRva2VuaXplclBvcyA9IHRoaXMub2Zmc2V0KCk7XG5cbiAgICBpZiAodGFnLnR5cGUgPT09ICdFbmRUYWcnKSB7XG4gICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICBgSW52YWxpZCBlbmQgdGFnOiBjbG9zaW5nIHRhZyBtdXN0IG5vdCBoYXZlIGF0dHJpYnV0ZXNgLFxuICAgICAgICB0aGlzLnNvdXJjZS5zcGFuRm9yKHsgc3RhcnQ6IHRhZy5sb2MudG9KU09OKCksIGVuZDogdG9rZW5pemVyUG9zLnRvSlNPTigpIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCB7IG5hbWUsIHBhcnRzLCBzdGFydCwgaXNRdW90ZWQsIGlzRHluYW1pYywgdmFsdWVTcGFuIH0gPSB0aGlzLmN1cnJlbnRBdHRyO1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuYXNzZW1ibGVBdHRyaWJ1dGVWYWx1ZShwYXJ0cywgaXNRdW90ZWQsIGlzRHluYW1pYywgc3RhcnQudW50aWwodG9rZW5pemVyUG9zKSk7XG4gICAgdmFsdWUubG9jID0gdmFsdWVTcGFuLndpdGhFbmQodG9rZW5pemVyUG9zKTtcblxuICAgIGxldCBhdHRyaWJ1dGUgPSBiLmF0dHIoeyBuYW1lLCB2YWx1ZSwgbG9jOiBzdGFydC51bnRpbCh0b2tlbml6ZXJQb3MpIH0pO1xuXG4gICAgdGhpcy5jdXJyZW50U3RhcnRUYWcuYXR0cmlidXRlcy5wdXNoKGF0dHJpYnV0ZSk7XG4gIH1cblxuICByZXBvcnRTeW50YXhFcnJvcihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKG1lc3NhZ2UsIHRoaXMub2Zmc2V0KCkuY29sbGFwc2VkKCkpO1xuICB9XG5cbiAgYXNzZW1ibGVDb25jYXRlbmF0ZWRWYWx1ZShcbiAgICBwYXJ0czogKEFTVHYxLk11c3RhY2hlU3RhdGVtZW50IHwgQVNUdjEuVGV4dE5vZGUpW11cbiAgKTogQVNUdjEuQ29uY2F0U3RhdGVtZW50IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgcGFydDogQVNUdjEuQmFzZU5vZGUgPSBwYXJ0c1tpXTtcblxuICAgICAgaWYgKHBhcnQudHlwZSAhPT0gJ011c3RhY2hlU3RhdGVtZW50JyAmJiBwYXJ0LnR5cGUgIT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAnVW5zdXBwb3J0ZWQgbm9kZSBpbiBxdW90ZWQgYXR0cmlidXRlIHZhbHVlOiAnICsgcGFydFsndHlwZSddLFxuICAgICAgICAgIHBhcnQubG9jXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXNzZXJ0UHJlc2VudChwYXJ0cywgYHRoZSBjb25jYXRlbmF0aW9uIHBhcnRzIG9mIGFuIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBlbXB0eWApO1xuXG4gICAgbGV0IGZpcnN0ID0gcGFydHNbMF07XG4gICAgbGV0IGxhc3QgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcblxuICAgIHJldHVybiBiLmNvbmNhdChwYXJ0cywgdGhpcy5zb3VyY2Uuc3BhbkZvcihmaXJzdC5sb2MpLmV4dGVuZCh0aGlzLnNvdXJjZS5zcGFuRm9yKGxhc3QubG9jKSkpO1xuICB9XG5cbiAgdmFsaWRhdGVFbmRUYWcoXG4gICAgdGFnOiBUYWc8J1N0YXJ0VGFnJyB8ICdFbmRUYWcnPixcbiAgICBlbGVtZW50OiBBU1R2MS5FbGVtZW50Tm9kZSxcbiAgICBzZWxmQ2xvc2luZzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICBsZXQgZXJyb3I7XG5cbiAgICBpZiAodm9pZE1hcFt0YWcubmFtZV0gJiYgIXNlbGZDbG9zaW5nKSB7XG4gICAgICAvLyBFbmdUYWcgaXMgYWxzbyBjYWxsZWQgYnkgU3RhcnRUYWcgZm9yIHZvaWQgYW5kIHNlbGYtY2xvc2luZyB0YWdzIChpLmUuXG4gICAgICAvLyA8aW5wdXQ+IG9yIDxiciAvPiwgc28gd2UgbmVlZCB0byBjaGVjayBmb3IgdGhhdCBoZXJlLiBPdGhlcndpc2UsIHdlIHdvdWxkXG4gICAgICAvLyB0aHJvdyBhbiBlcnJvciBmb3IgdGhvc2UgY2FzZXMuXG4gICAgICBlcnJvciA9IGA8JHt0YWcubmFtZX0+IGVsZW1lbnRzIGRvIG5vdCBuZWVkIGVuZCB0YWdzLiBZb3Ugc2hvdWxkIHJlbW92ZSBpdGA7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LnRhZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlcnJvciA9IGBDbG9zaW5nIHRhZyA8LyR7dGFnLm5hbWV9PiB3aXRob3V0IGFuIG9wZW4gdGFnYDtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnICE9PSB0YWcubmFtZSkge1xuICAgICAgZXJyb3IgPSBgQ2xvc2luZyB0YWcgPC8ke3RhZy5uYW1lfT4gZGlkIG5vdCBtYXRjaCBsYXN0IG9wZW4gdGFnIDwke2VsZW1lbnQudGFnfT4gKG9uIGxpbmUgJHtlbGVtZW50LmxvYy5zdGFydFBvc2l0aW9uLmxpbmV9KWA7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKGVycm9yLCB0YWcubG9jKTtcbiAgICB9XG4gIH1cblxuICBhc3NlbWJsZUF0dHJpYnV0ZVZhbHVlKFxuICAgIHBhcnRzOiAoQVNUdjEuTXVzdGFjaGVTdGF0ZW1lbnQgfCBBU1R2MS5UZXh0Tm9kZSlbXSxcbiAgICBpc1F1b3RlZDogYm9vbGVhbixcbiAgICBpc0R5bmFtaWM6IGJvb2xlYW4sXG4gICAgc3BhbjogU291cmNlU3BhblxuICApOiBBU1R2MS5Db25jYXRTdGF0ZW1lbnQgfCBBU1R2MS5NdXN0YWNoZVN0YXRlbWVudCB8IEFTVHYxLlRleHROb2RlIHtcbiAgICBpZiAoaXNEeW5hbWljKSB7XG4gICAgICBpZiAoaXNRdW90ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzZW1ibGVDb25jYXRlbmF0ZWRWYWx1ZShwYXJ0cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcGFydHMubGVuZ3RoID09PSAxIHx8XG4gICAgICAgICAgKHBhcnRzLmxlbmd0aCA9PT0gMiAmJlxuICAgICAgICAgICAgcGFydHNbMV0udHlwZSA9PT0gJ1RleHROb2RlJyAmJlxuICAgICAgICAgICAgKHBhcnRzWzFdIGFzIEFTVHYxLlRleHROb2RlKS5jaGFycyA9PT0gJy8nKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gcGFydHNbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAgIGBBbiB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvciBhIG11c3RhY2hlLCBgICtcbiAgICAgICAgICAgICAgYHByZWNlZGVkIGJ5IHdoaXRlc3BhY2Ugb3IgYSAnPScgY2hhcmFjdGVyLCBhbmQgYCArXG4gICAgICAgICAgICAgIGBmb2xsb3dlZCBieSB3aGl0ZXNwYWNlLCBhICc+JyBjaGFyYWN0ZXIsIG9yICcvPidgLFxuICAgICAgICAgICAgc3BhblxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDAgPyBwYXJ0c1swXSA6IGIudGV4dCh7IGNoYXJzOiAnJywgbG9jOiBzcGFuIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAgQVNUUGx1Z2lucyBjYW4gbWFrZSBjaGFuZ2VzIHRvIHRoZSBHbGltbWVyIHRlbXBsYXRlIEFTVCBiZWZvcmVcbiAgY29tcGlsYXRpb24gYmVnaW5zLlxuKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVNUUGx1Z2luQnVpbGRlcjxURW52IGV4dGVuZHMgQVNUUGx1Z2luRW52aXJvbm1lbnQgPSBBU1RQbHVnaW5FbnZpcm9ubWVudD4ge1xuICAoZW52OiBURW52KTogQVNUUGx1Z2luO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFTVFBsdWdpbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmlzaXRvcjogTm9kZVZpc2l0b3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVNUUGx1Z2luRW52aXJvbm1lbnQge1xuICBtZXRhPzogb2JqZWN0O1xuICBzeW50YXg6IFN5bnRheDtcbn1cblxuaW50ZXJmYWNlIEhhbmRsZWJhcnNQYXJzZU9wdGlvbnMge1xuICBzcmNOYW1lPzogc3RyaW5nO1xuICBpZ25vcmVTdGFuZGFsb25lPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZUlkRm4ge1xuICAoc3JjOiBzdHJpbmcpOiBPcHRpb248c3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVjb21waWxlT3B0aW9ucyBleHRlbmRzIFByZXByb2Nlc3NPcHRpb25zIHtcbiAgaWQ/OiBUZW1wbGF0ZUlkRm47XG4gIGN1c3RvbWl6ZUNvbXBvbmVudE5hbWU/KGlucHV0OiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcHJvY2Vzc09wdGlvbnMge1xuICBzdHJpY3RNb2RlPzogYm9vbGVhbjtcbiAgbG9jYWxzPzogc3RyaW5nW107XG4gIG1ldGE/OiB7XG4gICAgbW9kdWxlTmFtZT86IHN0cmluZztcbiAgfTtcbiAgcGx1Z2lucz86IHtcbiAgICBhc3Q/OiBBU1RQbHVnaW5CdWlsZGVyW107XG4gIH07XG4gIHBhcnNlT3B0aW9ucz86IEhhbmRsZWJhcnNQYXJzZU9wdGlvbnM7XG4gIGN1c3RvbWl6ZUNvbXBvbmVudE5hbWU/KGlucHV0OiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAgVXNlZnVsIGZvciBzcGVjaWZ5aW5nIGEgZ3JvdXAgb2Ygb3B0aW9ucyB0b2dldGhlci5cblxuICAgIFdoZW4gYCdjb2RlbW9kJ2Agd2UgZGlzYWJsZSBhbGwgd2hpdGVzcGFjZSBjb250cm9sIGluIGhhbmRsZWJhcnNcbiAgICAodG8gcHJlc2VydmUgYXMgbXVjaCBhcyBwb3NzaWJsZSkgYW5kIHdlIGFsc28gYXZvaWQgYW55XG4gICAgZXNjYXBpbmcvdW5lc2NhcGluZyBvZiBIVE1MIGVudGl0eSBjb2Rlcy5cbiAgICovXG4gIG1vZGU/OiAnY29kZW1vZCcgfCAncHJlY29tcGlsZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ludGF4IHtcbiAgcGFyc2U6IHR5cGVvZiBwcmVwcm9jZXNzO1xuICBidWlsZGVyczogdHlwZW9mIHB1YmxpY0J1aWxkZXI7XG4gIHByaW50OiB0eXBlb2YgcHJpbnQ7XG4gIHRyYXZlcnNlOiB0eXBlb2YgdHJhdmVyc2U7XG4gIFdhbGtlcjogdHlwZW9mIFdhbGtlcjtcbn1cblxuY29uc3Qgc3ludGF4OiBTeW50YXggPSB7XG4gIHBhcnNlOiBwcmVwcm9jZXNzLFxuICBidWlsZGVyczogcHVibGljQnVpbGRlcixcbiAgcHJpbnQsXG4gIHRyYXZlcnNlLFxuICBXYWxrZXIsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2VzcyhcbiAgaW5wdXQ6IHN0cmluZyB8IFNvdXJjZSB8IEhCUy5Qcm9ncmFtLFxuICBvcHRpb25zOiBQcmVwcm9jZXNzT3B0aW9ucyA9IHt9XG4pOiBBU1R2MS5UZW1wbGF0ZSB7XG4gIGxldCBtb2RlID0gb3B0aW9ucy5tb2RlIHx8ICdwcmVjb21waWxlJztcblxuICBsZXQgc291cmNlOiBTb3VyY2U7XG4gIGxldCBhc3Q6IEhCUy5Qcm9ncmFtO1xuICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZSA9IG5ldyBTb3VyY2UoaW5wdXQsIG9wdGlvbnMubWV0YT8ubW9kdWxlTmFtZSk7XG5cbiAgICBpZiAobW9kZSA9PT0gJ2NvZGVtb2QnKSB7XG4gICAgICBhc3QgPSBwYXJzZVdpdGhvdXRQcm9jZXNzaW5nKGlucHV0LCBvcHRpb25zLnBhcnNlT3B0aW9ucykgYXMgSEJTLlByb2dyYW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzdCA9IHBhcnNlKGlucHV0LCBvcHRpb25zLnBhcnNlT3B0aW9ucykgYXMgSEJTLlByb2dyYW07XG4gICAgfVxuICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgU291cmNlKSB7XG4gICAgc291cmNlID0gaW5wdXQ7XG5cbiAgICBpZiAobW9kZSA9PT0gJ2NvZGVtb2QnKSB7XG4gICAgICBhc3QgPSBwYXJzZVdpdGhvdXRQcm9jZXNzaW5nKGlucHV0LnNvdXJjZSwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpIGFzIEhCUy5Qcm9ncmFtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3QgPSBwYXJzZShpbnB1dC5zb3VyY2UsIG9wdGlvbnMucGFyc2VPcHRpb25zKSBhcyBIQlMuUHJvZ3JhbTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc291cmNlID0gbmV3IFNvdXJjZSgnJywgb3B0aW9ucy5tZXRhPy5tb2R1bGVOYW1lKTtcbiAgICBhc3QgPSBpbnB1dDtcbiAgfVxuXG4gIGxldCBlbnRpdHlQYXJzZXIgPSB1bmRlZmluZWQ7XG4gIGlmIChtb2RlID09PSAnY29kZW1vZCcpIHtcbiAgICBlbnRpdHlQYXJzZXIgPSBuZXcgRW50aXR5UGFyc2VyKHt9KTtcbiAgfVxuXG4gIGxldCBvZmZzZXRzID0gU291cmNlU3Bhbi5mb3JDaGFyUG9zaXRpb25zKHNvdXJjZSwgMCwgc291cmNlLnNvdXJjZS5sZW5ndGgpO1xuICBhc3QubG9jID0ge1xuICAgIHNvdXJjZTogJyhwcm9ncmFtKScsXG4gICAgc3RhcnQ6IG9mZnNldHMuc3RhcnRQb3NpdGlvbixcbiAgICBlbmQ6IG9mZnNldHMuZW5kUG9zaXRpb24sXG4gIH07XG5cbiAgbGV0IHByb2dyYW0gPSBuZXcgVG9rZW5pemVyRXZlbnRIYW5kbGVycyhzb3VyY2UsIGVudGl0eVBhcnNlciwgbW9kZSkuYWNjZXB0VGVtcGxhdGUoYXN0KTtcblxuICBpZiAob3B0aW9ucy5zdHJpY3RNb2RlKSB7XG4gICAgcHJvZ3JhbS5ibG9ja1BhcmFtcyA9IG9wdGlvbnMubG9jYWxzID8/IFtdO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5wbHVnaW5zICYmIG9wdGlvbnMucGx1Z2lucy5hc3QpIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IG9wdGlvbnMucGx1Z2lucy5hc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBsZXQgdHJhbnNmb3JtID0gb3B0aW9ucy5wbHVnaW5zLmFzdFtpXTtcbiAgICAgIGxldCBlbnY6IEFTVFBsdWdpbkVudmlyb25tZW50ID0gYXNzaWduKHt9LCBvcHRpb25zLCB7IHN5bnRheCB9LCB7IHBsdWdpbnM6IHVuZGVmaW5lZCB9KTtcblxuICAgICAgbGV0IHBsdWdpblJlc3VsdCA9IHRyYW5zZm9ybShlbnYpO1xuXG4gICAgICB0cmF2ZXJzZShwcm9ncmFtLCBwbHVnaW5SZXN1bHQudmlzaXRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb2dyYW07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -27,2 +27,2 @@ export { Source } from './lib/source/source';

export { AST_1 as AST };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLE1BQVQsUUFBdUIscUJBQXZCO0FBQ0EsU0FBUyxPQUFPLElBQUksUUFBcEIsUUFBb0MsMEJBQXBDO3lCQUN1QixjO29CQUFYLEs7eUJBQ1csZ0I7b0JBQVgsSztBQUNaLFNBQVMsU0FBVCxRQUEwQixzQkFBMUI7QUFDQSxTQUFTLFdBQVQsRUFBc0IsZ0JBQXRCLEVBQXdDLGtCQUF4QyxRQUFrRSxvQkFBbEU7QUFDQSxTQUFTLG1CQUFULFFBQXdELG9CQUF4RDtBQUNBLFNBQ0UsVUFERixRQU9PLHVDQVBQO0FBUUEsU0FBUyxPQUFPLElBQUksS0FBcEIsUUFBaUMsd0JBQWpDO0FBQ0EsU0FBUyxTQUFULFFBQTBCLHVCQUExQjtBQUNBLFNBQVMsT0FBTyxJQUFJLE1BQXBCLFFBQWtDLHdCQUFsQztBQUNBLFNBQVMsT0FBTyxJQUFJLFFBQXBCLFFBQW9DLDBCQUFwQztBQUVBLFNBQVMsZ0JBQVQsRUFBMkIsaUJBQTNCLFFBQW9ELHdCQUFwRDtBQUNBLFNBQVMsT0FBTyxJQUFJLFVBQXBCLFFBQXNDLHNCQUF0QztBQUNBLFNBQVMsU0FBVCxFQUFpQyxjQUFqQyxRQUF1RCxnQkFBdkQ7QUFFQSxTQUFTLFdBQVQsUUFBNEIsb0JBQTVCO0FBQ0EsU0FBUyxVQUFULFFBQTJCLG1CQUEzQjtBQUNBLFNBQ0UsUUFERixFQUVFLFFBRkYsRUFJRSxHQUpGLEVBTUUsT0FORixRQU9PLHdCQVBQO0FBVUEsU0FBUyxJQUFULFFBQXFCLHlCQUFyQjtBQUVBOztBQUNBLFNBQVMsT0FBTyxJQUFJLElBQXBCLFFBQWdDLHdCQUFoQzt1QkFHcUIsYztrQkFBVCxHIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgU291cmNlIH0gZnJvbSAnLi9saWIvc291cmNlL3NvdXJjZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJ1aWxkZXJzIH0gZnJvbSAnLi9saWIvdjEvcHVibGljLWJ1aWxkZXJzJztcbmV4cG9ydCAqIGFzIEFTVHYxIGZyb20gJy4vbGliL3YxL2FwaSc7XG5leHBvcnQgKiBhcyBBU1R2MiBmcm9tICcuL2xpYi92Mi1hL2FwaSc7XG5leHBvcnQgeyBub3JtYWxpemUgfSBmcm9tICcuL2xpYi92Mi1hL25vcm1hbGl6ZSc7XG5leHBvcnQgeyBTeW1ib2xUYWJsZSwgQmxvY2tTeW1ib2xUYWJsZSwgUHJvZ3JhbVN5bWJvbFRhYmxlIH0gZnJvbSAnLi9saWIvc3ltYm9sLXRhYmxlJztcbmV4cG9ydCB7IGdlbmVyYXRlU3ludGF4RXJyb3IsIEdsaW1tZXJTeW50YXhFcnJvciB9IGZyb20gJy4vbGliL3N5bnRheC1lcnJvcic7XG5leHBvcnQge1xuICBwcmVwcm9jZXNzLFxuICBBU1RQbHVnaW4sXG4gIEFTVFBsdWdpbkJ1aWxkZXIsXG4gIEFTVFBsdWdpbkVudmlyb25tZW50LFxuICBTeW50YXgsXG4gIFByZWNvbXBpbGVPcHRpb25zLFxufSBmcm9tICcuL2xpYi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJpbnQgfSBmcm9tICcuL2xpYi9nZW5lcmF0aW9uL3ByaW50JztcbmV4cG9ydCB7IHNvcnRCeUxvYyB9IGZyb20gJy4vbGliL2dlbmVyYXRpb24vdXRpbCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFdhbGtlciB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC93YWxrZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmF2ZXJzZSB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC90cmF2ZXJzZSc7XG5leHBvcnQgeyBOb2RlVmlzaXRvciB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC92aXNpdG9yJztcbmV4cG9ydCB7IGNhbm5vdFJlbW92ZU5vZGUsIGNhbm5vdFJlcGxhY2VOb2RlIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL2Vycm9ycyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFdhbGtlclBhdGggfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvcGF0aCc7XG5leHBvcnQgeyBpc0tleXdvcmQsIEtleXdvcmRUeXBlLCBLRVlXT1JEU19UWVBFUyB9IGZyb20gJy4vbGliL2tleXdvcmRzJztcblxuZXhwb3J0IHsgU291cmNlU2xpY2UgfSBmcm9tICcuL2xpYi9zb3VyY2Uvc2xpY2UnO1xuZXhwb3J0IHsgU291cmNlU3BhbiB9IGZyb20gJy4vbGliL3NvdXJjZS9zcGFuJztcbmV4cG9ydCB7XG4gIFNwYW5MaXN0LFxuICBtYXliZUxvYyxcbiAgTWF5YmVIYXNTb3VyY2VTcGFuLFxuICBsb2MsXG4gIEhhc1NvdXJjZVNwYW4sXG4gIGhhc1NwYW4sXG59IGZyb20gJy4vbGliL3NvdXJjZS9zcGFuLWxpc3QnO1xuZXhwb3J0IHsgUHJlcHJvY2Vzc09wdGlvbnMgfSBmcm9tICcuL2xpYi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzJztcblxuZXhwb3J0IHsgbm9kZSB9IGZyb20gJy4vbGliL3YyLWEvb2JqZWN0cy9ub2RlJztcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBXYWxrZXJQYXRoIGluc3RlYWQgKi9cbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aCB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC93YWxrZXInO1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIEFTVHYxIGluc3RlYWQgKi9cbmV4cG9ydCAqIGFzIEFTVCBmcm9tICcuL2xpYi92MS9hcGknO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLE1BQVQsUUFBdUIscUJBQXZCO0FBQ0EsU0FBUyxPQUFPLElBQUksUUFBcEIsUUFBb0MsMEJBQXBDO3lCQUN1QixjO29CQUFYLEs7eUJBQ1csZ0I7b0JBQVgsSztBQUNaLFNBQVMsU0FBVCxRQUEwQixzQkFBMUI7QUFDQSxTQUFTLFdBQVQsRUFBc0IsZ0JBQXRCLEVBQXdDLGtCQUF4QyxRQUFrRSxvQkFBbEU7QUFDQSxTQUFTLG1CQUFULFFBQXdELG9CQUF4RDtBQUNBLFNBQ0UsVUFERixRQVFPLHVDQVJQO0FBU0EsU0FBUyxPQUFPLElBQUksS0FBcEIsUUFBaUMsd0JBQWpDO0FBQ0EsU0FBUyxTQUFULFFBQTBCLHVCQUExQjtBQUNBLFNBQVMsT0FBTyxJQUFJLE1BQXBCLFFBQWtDLHdCQUFsQztBQUNBLFNBQVMsT0FBTyxJQUFJLFFBQXBCLFFBQW9DLDBCQUFwQztBQUVBLFNBQVMsZ0JBQVQsRUFBMkIsaUJBQTNCLFFBQW9ELHdCQUFwRDtBQUNBLFNBQVMsT0FBTyxJQUFJLFVBQXBCLFFBQXNDLHNCQUF0QztBQUNBLFNBQVMsU0FBVCxFQUFpQyxjQUFqQyxRQUF1RCxnQkFBdkQ7QUFFQSxTQUFTLFdBQVQsUUFBNEIsb0JBQTVCO0FBQ0EsU0FBUyxVQUFULFFBQTJCLG1CQUEzQjtBQUNBLFNBQ0UsUUFERixFQUVFLFFBRkYsRUFJRSxHQUpGLEVBTUUsT0FORixRQU9PLHdCQVBQO0FBVUEsU0FBUyxJQUFULFFBQXFCLHlCQUFyQjtBQUVBOztBQUNBLFNBQVMsT0FBTyxJQUFJLElBQXBCLFFBQWdDLHdCQUFoQzt1QkFHcUIsYztrQkFBVCxHIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgU291cmNlIH0gZnJvbSAnLi9saWIvc291cmNlL3NvdXJjZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJ1aWxkZXJzIH0gZnJvbSAnLi9saWIvdjEvcHVibGljLWJ1aWxkZXJzJztcbmV4cG9ydCAqIGFzIEFTVHYxIGZyb20gJy4vbGliL3YxL2FwaSc7XG5leHBvcnQgKiBhcyBBU1R2MiBmcm9tICcuL2xpYi92Mi1hL2FwaSc7XG5leHBvcnQgeyBub3JtYWxpemUgfSBmcm9tICcuL2xpYi92Mi1hL25vcm1hbGl6ZSc7XG5leHBvcnQgeyBTeW1ib2xUYWJsZSwgQmxvY2tTeW1ib2xUYWJsZSwgUHJvZ3JhbVN5bWJvbFRhYmxlIH0gZnJvbSAnLi9saWIvc3ltYm9sLXRhYmxlJztcbmV4cG9ydCB7IGdlbmVyYXRlU3ludGF4RXJyb3IsIEdsaW1tZXJTeW50YXhFcnJvciB9IGZyb20gJy4vbGliL3N5bnRheC1lcnJvcic7XG5leHBvcnQge1xuICBwcmVwcm9jZXNzLFxuICBBU1RQbHVnaW4sXG4gIEFTVFBsdWdpbkJ1aWxkZXIsXG4gIEFTVFBsdWdpbkVudmlyb25tZW50LFxuICBTeW50YXgsXG4gIFRlbXBsYXRlSWRGbixcbiAgUHJlY29tcGlsZU9wdGlvbnMsXG59IGZyb20gJy4vbGliL3BhcnNlci90b2tlbml6ZXItZXZlbnQtaGFuZGxlcnMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmludCB9IGZyb20gJy4vbGliL2dlbmVyYXRpb24vcHJpbnQnO1xuZXhwb3J0IHsgc29ydEJ5TG9jIH0gZnJvbSAnLi9saWIvZ2VuZXJhdGlvbi91dGlsJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgV2Fsa2VyIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3dhbGtlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyYXZlcnNlIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3RyYXZlcnNlJztcbmV4cG9ydCB7IE5vZGVWaXNpdG9yIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3Zpc2l0b3InO1xuZXhwb3J0IHsgY2Fubm90UmVtb3ZlTm9kZSwgY2Fubm90UmVwbGFjZU5vZGUgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvZXJyb3JzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgV2Fsa2VyUGF0aCB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC9wYXRoJztcbmV4cG9ydCB7IGlzS2V5d29yZCwgS2V5d29yZFR5cGUsIEtFWVdPUkRTX1RZUEVTIH0gZnJvbSAnLi9saWIva2V5d29yZHMnO1xuXG5leHBvcnQgeyBTb3VyY2VTbGljZSB9IGZyb20gJy4vbGliL3NvdXJjZS9zbGljZSc7XG5leHBvcnQgeyBTb3VyY2VTcGFuIH0gZnJvbSAnLi9saWIvc291cmNlL3NwYW4nO1xuZXhwb3J0IHtcbiAgU3Bhbkxpc3QsXG4gIG1heWJlTG9jLFxuICBNYXliZUhhc1NvdXJjZVNwYW4sXG4gIGxvYyxcbiAgSGFzU291cmNlU3BhbixcbiAgaGFzU3Bhbixcbn0gZnJvbSAnLi9saWIvc291cmNlL3NwYW4tbGlzdCc7XG5leHBvcnQgeyBQcmVwcm9jZXNzT3B0aW9ucyB9IGZyb20gJy4vbGliL3BhcnNlci90b2tlbml6ZXItZXZlbnQtaGFuZGxlcnMnO1xuXG5leHBvcnQgeyBub2RlIH0gZnJvbSAnLi9saWIvdjItYS9vYmplY3RzL25vZGUnO1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIFdhbGtlclBhdGggaW5zdGVhZCAqL1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQYXRoIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3dhbGtlcic7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgQVNUdjEgaW5zdGVhZCAqL1xuZXhwb3J0ICogYXMgQVNUIGZyb20gJy4vbGliL3YxL2FwaSc7XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -354,2 +354,2 @@ import { assertPresent, assign } from '@glimmer/util';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLGFBQVQsRUFBd0IsTUFBeEIsUUFBc0MsZUFBdEM7QUFDQSxTQUFTLEtBQVQsRUFBZ0Isc0JBQWhCLFFBQThDLG9CQUE5QztBQUNBLFNBQVMsWUFBVCxRQUE2Qix1QkFBN0I7QUFFQSxPQUFPLEtBQVAsTUFBa0IscUJBQWxCO0FBQ0EsU0FBUyxPQUFULFFBQXdCLHVCQUF4QjtBQUVBLFNBQVMsTUFBVCxRQUF1QixrQkFBdkI7QUFDQSxTQUF1QixVQUF2QixRQUF5QyxnQkFBekM7QUFDQSxTQUFTLG1CQUFULFFBQW9DLGlCQUFwQztBQUNBLE9BQU8sUUFBUCxNQUFxQix1QkFBckI7QUFFQSxPQUFPLE1BQVAsTUFBbUIscUJBQW5CO0FBQ0EsU0FBUyxXQUFULEVBQXNCLHVCQUF0QixRQUFxRCxVQUFyRDtBQUdBLE9BQU8sQ0FBUCxNQUFjLHVCQUFkO0FBQ0EsT0FBTyxhQUFQLE1BQTBCLHVCQUExQjtBQUNBLFNBQVMsc0JBQVQsUUFBdUMsNEJBQXZDO0FBRUEsT0FBTSxNQUFPLHNCQUFQLFNBQXNDLHNCQUF0QyxDQUE0RDtBQUFsRSxFQUFBLFdBQUEsR0FBQTs7QUFDVSxTQUFBLFdBQUEsR0FBYyxDQUFkO0FBQ0EsU0FBQSxhQUFBLEdBQWdCLENBQWhCO0FBZ1NUOztBQTlSQyxFQUFBLEtBQUssR0FBQTtBQUNILFNBQUssV0FBTCxHQUFtQixJQUFuQjtBQUNELEdBTitELENBUWhFOzs7QUFFQSxFQUFBLFlBQVksR0FBQTtBQUNWLFNBQUssV0FBTCxHQUFtQixDQUFDLENBQUMsT0FBRixDQUFVLEVBQVYsRUFBYyxLQUFLLE1BQUwsQ0FBWSxTQUFaLENBQXNCLEtBQUssV0FBM0IsRUFBd0MsS0FBSyxhQUE3QyxDQUFkLENBQW5CO0FBQ0Q7O0FBRUQsRUFBQSxt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QUFFQSxNQUFBLFFBQVEsQ0FBQyxPQUFELEVBQVUsWUFBWSxDQUFDLE9BQXZCLENBQVI7QUFDRDtBQUNGOztBQUVELFNBQU8sT0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0UHJlc2VudCwgYXNzaWduIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBwYXJzZSwgcGFyc2VXaXRob3V0UHJvY2Vzc2luZyB9IGZyb20gJ0BoYW5kbGViYXJzL3BhcnNlcic7XG5pbXBvcnQgeyBFbnRpdHlQYXJzZXIgfSBmcm9tICdzaW1wbGUtaHRtbC10b2tlbml6ZXInO1xuXG5pbXBvcnQgcHJpbnQgZnJvbSAnLi4vZ2VuZXJhdGlvbi9wcmludCc7XG5pbXBvcnQgeyB2b2lkTWFwIH0gZnJvbSAnLi4vZ2VuZXJhdGlvbi9wcmludGVyJztcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uL3BhcnNlcic7XG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tICcuLi9zb3VyY2Uvc291cmNlJztcbmltcG9ydCB7IFNvdXJjZU9mZnNldCwgU291cmNlU3BhbiB9IGZyb20gJy4uL3NvdXJjZS9zcGFuJztcbmltcG9ydCB7IGdlbmVyYXRlU3ludGF4RXJyb3IgfSBmcm9tICcuLi9zeW50YXgtZXJyb3InO1xuaW1wb3J0IHRyYXZlcnNlIGZyb20gJy4uL3RyYXZlcnNhbC90cmF2ZXJzZSc7XG5pbXBvcnQgeyBOb2RlVmlzaXRvciB9IGZyb20gJy4uL3RyYXZlcnNhbC92aXNpdG9yJztcbmltcG9ydCBXYWxrZXIgZnJvbSAnLi4vdHJhdmVyc2FsL3dhbGtlcic7XG5pbXBvcnQgeyBhcHBlbmRDaGlsZCwgcGFyc2VFbGVtZW50QmxvY2tQYXJhbXMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgKiBhcyBBU1R2MSBmcm9tICcuLi92MS9hcGknO1xuaW1wb3J0ICogYXMgSEJTIGZyb20gJy4uL3YxL2hhbmRsZWJhcnMtYXN0JztcbmltcG9ydCBiIGZyb20gJy4uL3YxL3BhcnNlci1idWlsZGVycyc7XG5pbXBvcnQgcHVibGljQnVpbGRlciBmcm9tICcuLi92MS9wdWJsaWMtYnVpbGRlcnMnO1xuaW1wb3J0IHsgSGFuZGxlYmFyc05vZGVWaXNpdG9ycyB9IGZyb20gJy4vaGFuZGxlYmFycy1ub2RlLXZpc2l0b3JzJztcblxuZXhwb3J0IGNsYXNzIFRva2VuaXplckV2ZW50SGFuZGxlcnMgZXh0ZW5kcyBIYW5kbGViYXJzTm9kZVZpc2l0b3JzIHtcbiAgcHJpdmF0ZSB0YWdPcGVuTGluZSA9IDA7XG4gIHByaXZhdGUgdGFnT3BlbkNvbHVtbiA9IDA7XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IG51bGw7XG4gIH1cblxuICAvLyBDb21tZW50XG5cbiAgYmVnaW5Db21tZW50KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBiLmNvbW1lbnQoJycsIHRoaXMuc291cmNlLm9mZnNldEZvcih0aGlzLnRhZ09wZW5MaW5lLCB0aGlzLnRhZ09wZW5Db2x1bW4pKTtcbiAgfVxuXG4gIGFwcGVuZFRvQ29tbWVudERhdGEoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Q29tbWVudC52YWx1ZSArPSBjaGFyO1xuICB9XG5cbiAgZmluaXNoQ29tbWVudCgpOiB2b2lkIHtcbiAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIHRoaXMuZmluaXNoKHRoaXMuY3VycmVudENvbW1lbnQpKTtcbiAgfVxuXG4gIC8vIERhdGFcblxuICBiZWdpbkRhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IGIudGV4dCh7XG4gICAgICBjaGFyczogJycsXG4gICAgICBsb2M6IHRoaXMub2Zmc2V0KCkuY29sbGFwc2VkKCksXG4gICAgfSk7XG4gIH1cblxuICBhcHBlbmRUb0RhdGEoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50RGF0YS5jaGFycyArPSBjaGFyO1xuICB9XG5cbiAgZmluaXNoRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRhLmxvYyA9IHRoaXMuY3VycmVudERhdGEubG9jLndpdGhFbmQodGhpcy5vZmZzZXQoKSk7XG5cbiAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIHRoaXMuY3VycmVudERhdGEpO1xuICB9XG5cbiAgLy8gVGFncyAtIGJhc2ljXG5cbiAgdGFnT3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLnRhZ09wZW5MaW5lID0gdGhpcy50b2tlbml6ZXIubGluZTtcbiAgICB0aGlzLnRhZ09wZW5Db2x1bW4gPSB0aGlzLnRva2VuaXplci5jb2x1bW47XG4gIH1cblxuICBiZWdpblN0YXJ0VGFnKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSB7XG4gICAgICB0eXBlOiAnU3RhcnRUYWcnLFxuICAgICAgbmFtZTogJycsXG4gICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgIG1vZGlmaWVyczogW10sXG4gICAgICBjb21tZW50czogW10sXG4gICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICBsb2M6IHRoaXMuc291cmNlLm9mZnNldEZvcih0aGlzLnRhZ09wZW5MaW5lLCB0aGlzLnRhZ09wZW5Db2x1bW4pLFxuICAgIH07XG4gIH1cblxuICBiZWdpbkVuZFRhZygpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0ge1xuICAgICAgdHlwZTogJ0VuZFRhZycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgbW9kaWZpZXJzOiBbXSxcbiAgICAgIGNvbW1lbnRzOiBbXSxcbiAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgIGxvYzogdGhpcy5zb3VyY2Uub2Zmc2V0Rm9yKHRoaXMudGFnT3BlbkxpbmUsIHRoaXMudGFnT3BlbkNvbHVtbiksXG4gICAgfTtcbiAgfVxuXG4gIGZpbmlzaFRhZygpOiB2b2lkIHtcbiAgICBsZXQgdGFnID0gdGhpcy5maW5pc2godGhpcy5jdXJyZW50VGFnKTtcblxuICAgIGlmICh0YWcudHlwZSA9PT0gJ1N0YXJ0VGFnJykge1xuICAgICAgdGhpcy5maW5pc2hTdGFydFRhZygpO1xuXG4gICAgICBpZiAodGFnLm5hbWUgPT09ICc6Jykge1xuICAgICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICdJbnZhbGlkIG5hbWVkIGJsb2NrIG5hbWVkIGRldGVjdGVkLCB5b3UgbWF5IGhhdmUgY3JlYXRlZCBhIG5hbWVkIGJsb2NrIHdpdGhvdXQgYSBuYW1lLCBvciB5b3UgbWF5IGhhdmUgYmVnYW4geW91ciBuYW1lIHdpdGggYSBudW1iZXIuIE5hbWVkIGJsb2NrcyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBhcmUgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBsb25nLCBhbmQgYmVnaW4gd2l0aCBhIGxvd2VyIGNhc2UgbGV0dGVyJyxcbiAgICAgICAgICB0aGlzLnNvdXJjZS5zcGFuRm9yKHtcbiAgICAgICAgICAgIHN0YXJ0OiB0aGlzLmN1cnJlbnRUYWcubG9jLnRvSlNPTigpLFxuICAgICAgICAgICAgZW5kOiB0aGlzLm9mZnNldCgpLnRvSlNPTigpLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2b2lkTWFwW3RhZy5uYW1lXSB8fCB0YWcuc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgdGhpcy5maW5pc2hFbmRUYWcodHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YWcudHlwZSA9PT0gJ0VuZFRhZycpIHtcbiAgICAgIHRoaXMuZmluaXNoRW5kVGFnKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBmaW5pc2hTdGFydFRhZygpOiB2b2lkIHtcbiAgICBsZXQgeyBuYW1lLCBhdHRyaWJ1dGVzOiBhdHRycywgbW9kaWZpZXJzLCBjb21tZW50cywgc2VsZkNsb3NpbmcsIGxvYyB9ID0gdGhpcy5maW5pc2goXG4gICAgICB0aGlzLmN1cnJlbnRTdGFydFRhZ1xuICAgICk7XG5cbiAgICBsZXQgZWxlbWVudCA9IGIuZWxlbWVudCh7XG4gICAgICB0YWc6IG5hbWUsXG4gICAgICBzZWxmQ2xvc2luZyxcbiAgICAgIGF0dHJzLFxuICAgICAgbW9kaWZpZXJzLFxuICAgICAgY29tbWVudHMsXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgICBibG9ja1BhcmFtczogW10sXG4gICAgICBsb2MsXG4gICAgfSk7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChlbGVtZW50KTtcbiAgfVxuXG4gIGZpbmlzaEVuZFRhZyhpc1ZvaWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBsZXQgdGFnID0gdGhpcy5maW5pc2godGhpcy5jdXJyZW50VGFnKTtcblxuICAgIGxldCBlbGVtZW50ID0gdGhpcy5lbGVtZW50U3RhY2sucG9wKCkgYXMgQVNUdjEuRWxlbWVudE5vZGU7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMuY3VycmVudEVsZW1lbnQoKTtcblxuICAgIHRoaXMudmFsaWRhdGVFbmRUYWcodGFnLCBlbGVtZW50LCBpc1ZvaWQpO1xuXG4gICAgZWxlbWVudC5sb2MgPSBlbGVtZW50LmxvYy53aXRoRW5kKHRoaXMub2Zmc2V0KCkpO1xuICAgIHBhcnNlRWxlbWVudEJsb2NrUGFyYW1zKGVsZW1lbnQpO1xuICAgIGFwcGVuZENoaWxkKHBhcmVudCwgZWxlbWVudCk7XG4gIH1cblxuICBtYXJrVGFnQXNTZWxmQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRUYWcuc2VsZkNsb3NpbmcgPSB0cnVlO1xuICB9XG5cbiAgLy8gVGFncyAtIG5hbWVcblxuICBhcHBlbmRUb1RhZ05hbWUoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50VGFnLm5hbWUgKz0gY2hhcjtcbiAgfVxuXG4gIC8vIFRhZ3MgLSBhdHRyaWJ1dGVzXG5cbiAgYmVnaW5BdHRyaWJ1dGUoKTogdm9pZCB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMub2Zmc2V0KCk7XG5cbiAgICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUgPSB7XG4gICAgICBuYW1lOiAnJyxcbiAgICAgIHBhcnRzOiBbXSxcbiAgICAgIGN1cnJlbnRQYXJ0OiBudWxsLFxuICAgICAgaXNRdW90ZWQ6IGZhbHNlLFxuICAgICAgaXNEeW5hbWljOiBmYWxzZSxcbiAgICAgIHN0YXJ0OiBvZmZzZXQsXG4gICAgICB2YWx1ZVNwYW46IG9mZnNldC5jb2xsYXBzZWQoKSxcbiAgICB9O1xuICB9XG5cbiAgYXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSBjaGFyO1xuICB9XG5cbiAgYmVnaW5BdHRyaWJ1dGVWYWx1ZShpc1F1b3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEF0dHIuaXNRdW90ZWQgPSBpc1F1b3RlZDtcbiAgICB0aGlzLnN0YXJ0VGV4dFBhcnQoKTtcbiAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlU3BhbiA9IHRoaXMub2Zmc2V0KCkuY29sbGFwc2VkKCk7XG4gIH1cblxuICBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBwYXJ0cyA9IHRoaXMuY3VycmVudEF0dHIucGFydHM7XG4gICAgbGV0IGxhc3RQYXJ0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG5cbiAgICBsZXQgY3VycmVudCA9IHRoaXMuY3VycmVudEF0dHIuY3VycmVudFBhcnQ7XG5cbiAgICBpZiAoY3VycmVudCkge1xuICAgICAgY3VycmVudC5jaGFycyArPSBjaGFyO1xuXG4gICAgICAvLyB1cGRhdGUgZW5kIGxvY2F0aW9uIGZvciBlYWNoIGFkZGVkIGNoYXJcbiAgICAgIGN1cnJlbnQubG9jID0gY3VycmVudC5sb2Mud2l0aEVuZCh0aGlzLm9mZnNldCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW5pdGlhbGx5IGFzc3VtZSB0aGUgdGV4dCBub2RlIGlzIGEgc2luZ2xlIGNoYXJcbiAgICAgIGxldCBsb2M6IFNvdXJjZU9mZnNldCA9IHRoaXMub2Zmc2V0KCk7XG5cbiAgICAgIC8vIHRoZSB0b2tlbml6ZXIgbGluZS9jb2x1bW4gaGF2ZSBhbHJlYWR5IGJlZW4gYWR2YW5jZWQsIGNvcnJlY3QgbG9jYXRpb24gaW5mb1xuICAgICAgaWYgKGNoYXIgPT09ICdcXG4nKSB7XG4gICAgICAgIGxvYyA9IGxhc3RQYXJ0ID8gbGFzdFBhcnQubG9jLmdldEVuZCgpIDogdGhpcy5jdXJyZW50QXR0ci52YWx1ZVNwYW4uZ2V0U3RhcnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvYyA9IGxvYy5tb3ZlKC0xKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50QXR0ci5jdXJyZW50UGFydCA9IGIudGV4dCh7IGNoYXJzOiBjaGFyLCBsb2M6IGxvYy5jb2xsYXBzZWQoKSB9KTtcbiAgICB9XG4gIH1cblxuICBmaW5pc2hBdHRyaWJ1dGVWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbmFsaXplVGV4dFBhcnQoKTtcblxuICAgIGxldCB0YWcgPSB0aGlzLmN1cnJlbnRUYWc7XG4gICAgbGV0IHRva2VuaXplclBvcyA9IHRoaXMub2Zmc2V0KCk7XG5cbiAgICBpZiAodGFnLnR5cGUgPT09ICdFbmRUYWcnKSB7XG4gICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICBgSW52YWxpZCBlbmQgdGFnOiBjbG9zaW5nIHRhZyBtdXN0IG5vdCBoYXZlIGF0dHJpYnV0ZXNgLFxuICAgICAgICB0aGlzLnNvdXJjZS5zcGFuRm9yKHsgc3RhcnQ6IHRhZy5sb2MudG9KU09OKCksIGVuZDogdG9rZW5pemVyUG9zLnRvSlNPTigpIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCB7IG5hbWUsIHBhcnRzLCBzdGFydCwgaXNRdW90ZWQsIGlzRHluYW1pYywgdmFsdWVTcGFuIH0gPSB0aGlzLmN1cnJlbnRBdHRyO1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuYXNzZW1ibGVBdHRyaWJ1dGVWYWx1ZShwYXJ0cywgaXNRdW90ZWQsIGlzRHluYW1pYywgc3RhcnQudW50aWwodG9rZW5pemVyUG9zKSk7XG4gICAgdmFsdWUubG9jID0gdmFsdWVTcGFuLndpdGhFbmQodG9rZW5pemVyUG9zKTtcblxuICAgIGxldCBhdHRyaWJ1dGUgPSBiLmF0dHIoeyBuYW1lLCB2YWx1ZSwgbG9jOiBzdGFydC51bnRpbCh0b2tlbml6ZXJQb3MpIH0pO1xuXG4gICAgdGhpcy5jdXJyZW50U3RhcnRUYWcuYXR0cmlidXRlcy5wdXNoKGF0dHJpYnV0ZSk7XG4gIH1cblxuICByZXBvcnRTeW50YXhFcnJvcihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKG1lc3NhZ2UsIHRoaXMub2Zmc2V0KCkuY29sbGFwc2VkKCkpO1xuICB9XG5cbiAgYXNzZW1ibGVDb25jYXRlbmF0ZWRWYWx1ZShcbiAgICBwYXJ0czogKEFTVHYxLk11c3RhY2hlU3RhdGVtZW50IHwgQVNUdjEuVGV4dE5vZGUpW11cbiAgKTogQVNUdjEuQ29uY2F0U3RhdGVtZW50IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgcGFydDogQVNUdjEuQmFzZU5vZGUgPSBwYXJ0c1tpXTtcblxuICAgICAgaWYgKHBhcnQudHlwZSAhPT0gJ011c3RhY2hlU3RhdGVtZW50JyAmJiBwYXJ0LnR5cGUgIT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAnVW5zdXBwb3J0ZWQgbm9kZSBpbiBxdW90ZWQgYXR0cmlidXRlIHZhbHVlOiAnICsgcGFydFsndHlwZSddLFxuICAgICAgICAgIHBhcnQubG9jXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXNzZXJ0UHJlc2VudChwYXJ0cywgYHRoZSBjb25jYXRlbmF0aW9uIHBhcnRzIG9mIGFuIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBlbXB0eWApO1xuXG4gICAgbGV0IGZpcnN0ID0gcGFydHNbMF07XG4gICAgbGV0IGxhc3QgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcblxuICAgIHJldHVybiBiLmNvbmNhdChwYXJ0cywgdGhpcy5zb3VyY2Uuc3BhbkZvcihmaXJzdC5sb2MpLmV4dGVuZCh0aGlzLnNvdXJjZS5zcGFuRm9yKGxhc3QubG9jKSkpO1xuICB9XG5cbiAgdmFsaWRhdGVFbmRUYWcoXG4gICAgdGFnOiBUYWc8J1N0YXJ0VGFnJyB8ICdFbmRUYWcnPixcbiAgICBlbGVtZW50OiBBU1R2MS5FbGVtZW50Tm9kZSxcbiAgICBzZWxmQ2xvc2luZzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICBsZXQgZXJyb3I7XG5cbiAgICBpZiAodm9pZE1hcFt0YWcubmFtZV0gJiYgIXNlbGZDbG9zaW5nKSB7XG4gICAgICAvLyBFbmdUYWcgaXMgYWxzbyBjYWxsZWQgYnkgU3RhcnRUYWcgZm9yIHZvaWQgYW5kIHNlbGYtY2xvc2luZyB0YWdzIChpLmUuXG4gICAgICAvLyA8aW5wdXQ+IG9yIDxiciAvPiwgc28gd2UgbmVlZCB0byBjaGVjayBmb3IgdGhhdCBoZXJlLiBPdGhlcndpc2UsIHdlIHdvdWxkXG4gICAgICAvLyB0aHJvdyBhbiBlcnJvciBmb3IgdGhvc2UgY2FzZXMuXG4gICAgICBlcnJvciA9IGA8JHt0YWcubmFtZX0+IGVsZW1lbnRzIGRvIG5vdCBuZWVkIGVuZCB0YWdzLiBZb3Ugc2hvdWxkIHJlbW92ZSBpdGA7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LnRhZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlcnJvciA9IGBDbG9zaW5nIHRhZyA8LyR7dGFnLm5hbWV9PiB3aXRob3V0IGFuIG9wZW4gdGFnYDtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnICE9PSB0YWcubmFtZSkge1xuICAgICAgZXJyb3IgPSBgQ2xvc2luZyB0YWcgPC8ke3RhZy5uYW1lfT4gZGlkIG5vdCBtYXRjaCBsYXN0IG9wZW4gdGFnIDwke2VsZW1lbnQudGFnfT4gKG9uIGxpbmUgJHtlbGVtZW50LmxvYy5zdGFydFBvc2l0aW9uLmxpbmV9KWA7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKGVycm9yLCB0YWcubG9jKTtcbiAgICB9XG4gIH1cblxuICBhc3NlbWJsZUF0dHJpYnV0ZVZhbHVlKFxuICAgIHBhcnRzOiAoQVNUdjEuTXVzdGFjaGVTdGF0ZW1lbnQgfCBBU1R2MS5UZXh0Tm9kZSlbXSxcbiAgICBpc1F1b3RlZDogYm9vbGVhbixcbiAgICBpc0R5bmFtaWM6IGJvb2xlYW4sXG4gICAgc3BhbjogU291cmNlU3BhblxuICApOiBBU1R2MS5Db25jYXRTdGF0ZW1lbnQgfCBBU1R2MS5NdXN0YWNoZVN0YXRlbWVudCB8IEFTVHYxLlRleHROb2RlIHtcbiAgICBpZiAoaXNEeW5hbWljKSB7XG4gICAgICBpZiAoaXNRdW90ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzZW1ibGVDb25jYXRlbmF0ZWRWYWx1ZShwYXJ0cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcGFydHMubGVuZ3RoID09PSAxIHx8XG4gICAgICAgICAgKHBhcnRzLmxlbmd0aCA9PT0gMiAmJlxuICAgICAgICAgICAgcGFydHNbMV0udHlwZSA9PT0gJ1RleHROb2RlJyAmJlxuICAgICAgICAgICAgKHBhcnRzWzFdIGFzIEFTVHYxLlRleHROb2RlKS5jaGFycyA9PT0gJy8nKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gcGFydHNbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAgIGBBbiB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvciBhIG11c3RhY2hlLCBgICtcbiAgICAgICAgICAgICAgYHByZWNlZGVkIGJ5IHdoaXRlc3BhY2Ugb3IgYSAnPScgY2hhcmFjdGVyLCBhbmQgYCArXG4gICAgICAgICAgICAgIGBmb2xsb3dlZCBieSB3aGl0ZXNwYWNlLCBhICc+JyBjaGFyYWN0ZXIsIG9yICcvPidgLFxuICAgICAgICAgICAgc3BhblxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDAgPyBwYXJ0c1swXSA6IGIudGV4dCh7IGNoYXJzOiAnJywgbG9jOiBzcGFuIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAgQVNUUGx1Z2lucyBjYW4gbWFrZSBjaGFuZ2VzIHRvIHRoZSBHbGltbWVyIHRlbXBsYXRlIEFTVCBiZWZvcmVcbiAgY29tcGlsYXRpb24gYmVnaW5zLlxuKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVNUUGx1Z2luQnVpbGRlcjxURW52IGV4dGVuZHMgQVNUUGx1Z2luRW52aXJvbm1lbnQgPSBBU1RQbHVnaW5FbnZpcm9ubWVudD4ge1xuICAoZW52OiBURW52KTogQVNUUGx1Z2luO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFTVFBsdWdpbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmlzaXRvcjogTm9kZVZpc2l0b3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVNUUGx1Z2luRW52aXJvbm1lbnQge1xuICBtZXRhPzogb2JqZWN0O1xuICBzeW50YXg6IFN5bnRheDtcbn1cblxuaW50ZXJmYWNlIEhhbmRsZWJhcnNQYXJzZU9wdGlvbnMge1xuICBzcmNOYW1lPzogc3RyaW5nO1xuICBpZ25vcmVTdGFuZGFsb25lPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVjb21waWxlT3B0aW9ucyBleHRlbmRzIFByZXByb2Nlc3NPcHRpb25zIHtcbiAgY3VzdG9taXplQ29tcG9uZW50TmFtZT8oaW5wdXQ6IHN0cmluZyk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVwcm9jZXNzT3B0aW9ucyB7XG4gIHN0cmljdE1vZGU/OiBib29sZWFuO1xuICBsb2NhbHM/OiBzdHJpbmdbXTtcbiAgbWV0YT86IHtcbiAgICBtb2R1bGVOYW1lPzogc3RyaW5nO1xuICB9O1xuICBwbHVnaW5zPzoge1xuICAgIGFzdD86IEFTVFBsdWdpbkJ1aWxkZXJbXTtcbiAgfTtcbiAgcGFyc2VPcHRpb25zPzogSGFuZGxlYmFyc1BhcnNlT3B0aW9ucztcbiAgY3VzdG9taXplQ29tcG9uZW50TmFtZT8oaW5wdXQ6IHN0cmluZyk6IHN0cmluZztcblxuICAvKipcbiAgICBVc2VmdWwgZm9yIHNwZWNpZnlpbmcgYSBncm91cCBvZiBvcHRpb25zIHRvZ2V0aGVyLlxuXG4gICAgV2hlbiBgJ2NvZGVtb2QnYCB3ZSBkaXNhYmxlIGFsbCB3aGl0ZXNwYWNlIGNvbnRyb2wgaW4gaGFuZGxlYmFyc1xuICAgICh0byBwcmVzZXJ2ZSBhcyBtdWNoIGFzIHBvc3NpYmxlKSBhbmQgd2UgYWxzbyBhdm9pZCBhbnlcbiAgICBlc2NhcGluZy91bmVzY2FwaW5nIG9mIEhUTUwgZW50aXR5IGNvZGVzLlxuICAgKi9cbiAgbW9kZT86ICdjb2RlbW9kJyB8ICdwcmVjb21waWxlJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTeW50YXgge1xuICBwYXJzZTogdHlwZW9mIHByZXByb2Nlc3M7XG4gIGJ1aWxkZXJzOiB0eXBlb2YgcHVibGljQnVpbGRlcjtcbiAgcHJpbnQ6IHR5cGVvZiBwcmludDtcbiAgdHJhdmVyc2U6IHR5cGVvZiB0cmF2ZXJzZTtcbiAgV2Fsa2VyOiB0eXBlb2YgV2Fsa2VyO1xufVxuXG5jb25zdCBzeW50YXg6IFN5bnRheCA9IHtcbiAgcGFyc2U6IHByZXByb2Nlc3MsXG4gIGJ1aWxkZXJzOiBwdWJsaWNCdWlsZGVyLFxuICBwcmludCxcbiAgdHJhdmVyc2UsXG4gIFdhbGtlcixcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwcm9jZXNzKFxuICBpbnB1dDogc3RyaW5nIHwgU291cmNlIHwgSEJTLlByb2dyYW0sXG4gIG9wdGlvbnM6IFByZXByb2Nlc3NPcHRpb25zID0ge31cbik6IEFTVHYxLlRlbXBsYXRlIHtcbiAgbGV0IG1vZGUgPSBvcHRpb25zLm1vZGUgfHwgJ3ByZWNvbXBpbGUnO1xuXG4gIGxldCBzb3VyY2U6IFNvdXJjZTtcbiAgbGV0IGFzdDogSEJTLlByb2dyYW07XG4gIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgc291cmNlID0gbmV3IFNvdXJjZShpbnB1dCwgb3B0aW9ucy5tZXRhPy5tb2R1bGVOYW1lKTtcblxuICAgIGlmIChtb2RlID09PSAnY29kZW1vZCcpIHtcbiAgICAgIGFzdCA9IHBhcnNlV2l0aG91dFByb2Nlc3NpbmcoaW5wdXQsIG9wdGlvbnMucGFyc2VPcHRpb25zKSBhcyBIQlMuUHJvZ3JhbTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXN0ID0gcGFyc2UoaW5wdXQsIG9wdGlvbnMucGFyc2VPcHRpb25zKSBhcyBIQlMuUHJvZ3JhbTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaW5wdXQgaW5zdGFuY2VvZiBTb3VyY2UpIHtcbiAgICBzb3VyY2UgPSBpbnB1dDtcblxuICAgIGlmIChtb2RlID09PSAnY29kZW1vZCcpIHtcbiAgICAgIGFzdCA9IHBhcnNlV2l0aG91dFByb2Nlc3NpbmcoaW5wdXQuc291cmNlLCBvcHRpb25zLnBhcnNlT3B0aW9ucykgYXMgSEJTLlByb2dyYW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzdCA9IHBhcnNlKGlucHV0LnNvdXJjZSwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpIGFzIEhCUy5Qcm9ncmFtO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzb3VyY2UgPSBuZXcgU291cmNlKCcnLCBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWUpO1xuICAgIGFzdCA9IGlucHV0O1xuICB9XG5cbiAgbGV0IGVudGl0eVBhcnNlciA9IHVuZGVmaW5lZDtcbiAgaWYgKG1vZGUgPT09ICdjb2RlbW9kJykge1xuICAgIGVudGl0eVBhcnNlciA9IG5ldyBFbnRpdHlQYXJzZXIoe30pO1xuICB9XG5cbiAgbGV0IG9mZnNldHMgPSBTb3VyY2VTcGFuLmZvckNoYXJQb3NpdGlvbnMoc291cmNlLCAwLCBzb3VyY2Uuc291cmNlLmxlbmd0aCk7XG4gIGFzdC5sb2MgPSB7XG4gICAgc291cmNlOiAnKHByb2dyYW0pJyxcbiAgICBzdGFydDogb2Zmc2V0cy5zdGFydFBvc2l0aW9uLFxuICAgIGVuZDogb2Zmc2V0cy5lbmRQb3NpdGlvbixcbiAgfTtcblxuICBsZXQgcHJvZ3JhbSA9IG5ldyBUb2tlbml6ZXJFdmVudEhhbmRsZXJzKHNvdXJjZSwgZW50aXR5UGFyc2VyLCBtb2RlKS5hY2NlcHRUZW1wbGF0ZShhc3QpO1xuXG4gIGlmIChvcHRpb25zLnN0cmljdE1vZGUpIHtcbiAgICBwcm9ncmFtLmJsb2NrUGFyYW1zID0gb3B0aW9ucy5sb2NhbHMgPz8gW107XG4gIH1cblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnBsdWdpbnMgJiYgb3B0aW9ucy5wbHVnaW5zLmFzdCkge1xuICAgIGZvciAobGV0IGkgPSAwLCBsID0gb3B0aW9ucy5wbHVnaW5zLmFzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGxldCB0cmFuc2Zvcm0gPSBvcHRpb25zLnBsdWdpbnMuYXN0W2ldO1xuICAgICAgbGV0IGVudjogQVNUUGx1Z2luRW52aXJvbm1lbnQgPSBhc3NpZ24oe30sIG9wdGlvbnMsIHsgc3ludGF4IH0sIHsgcGx1Z2luczogdW5kZWZpbmVkIH0pO1xuXG4gICAgICBsZXQgcGx1Z2luUmVzdWx0ID0gdHJhbnNmb3JtKGVudik7XG5cbiAgICAgIHRyYXZlcnNlKHByb2dyYW0sIHBsdWdpblJlc3VsdC52aXNpdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvZ3JhbTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLGFBQVQsRUFBd0IsTUFBeEIsUUFBc0MsZUFBdEM7QUFDQSxTQUFTLEtBQVQsRUFBZ0Isc0JBQWhCLFFBQThDLG9CQUE5QztBQUNBLFNBQVMsWUFBVCxRQUE2Qix1QkFBN0I7QUFFQSxPQUFPLEtBQVAsTUFBa0IscUJBQWxCO0FBQ0EsU0FBUyxPQUFULFFBQXdCLHVCQUF4QjtBQUVBLFNBQVMsTUFBVCxRQUF1QixrQkFBdkI7QUFDQSxTQUF1QixVQUF2QixRQUF5QyxnQkFBekM7QUFDQSxTQUFTLG1CQUFULFFBQW9DLGlCQUFwQztBQUNBLE9BQU8sUUFBUCxNQUFxQix1QkFBckI7QUFFQSxPQUFPLE1BQVAsTUFBbUIscUJBQW5CO0FBQ0EsU0FBUyxXQUFULEVBQXNCLHVCQUF0QixRQUFxRCxVQUFyRDtBQUdBLE9BQU8sQ0FBUCxNQUFjLHVCQUFkO0FBQ0EsT0FBTyxhQUFQLE1BQTBCLHVCQUExQjtBQUNBLFNBQVMsc0JBQVQsUUFBdUMsNEJBQXZDO0FBRUEsT0FBTSxNQUFPLHNCQUFQLFNBQXNDLHNCQUF0QyxDQUE0RDtBQUFsRSxFQUFBLFdBQUEsR0FBQTs7QUFDVSxTQUFBLFdBQUEsR0FBYyxDQUFkO0FBQ0EsU0FBQSxhQUFBLEdBQWdCLENBQWhCO0FBZ1NUOztBQTlSQyxFQUFBLEtBQUssR0FBQTtBQUNILFNBQUssV0FBTCxHQUFtQixJQUFuQjtBQUNELEdBTitELENBUWhFOzs7QUFFQSxFQUFBLFlBQVksR0FBQTtBQUNWLFNBQUssV0FBTCxHQUFtQixDQUFDLENBQUMsT0FBRixDQUFVLEVBQVYsRUFBYyxLQUFLLE1BQUwsQ0FBWSxTQUFaLENBQXNCLEtBQUssV0FBM0IsRUFBd0MsS0FBSyxhQUE3QyxDQUFkLENBQW5CO0FBQ0Q7O0FBRUQsRUFBQSxt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QUFFQSxNQUFBLFFBQVEsQ0FBQyxPQUFELEVBQVUsWUFBWSxDQUFDLE9BQXZCLENBQVI7QUFDRDtBQUNGOztBQUVELFNBQU8sT0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBhc3NlcnRQcmVzZW50LCBhc3NpZ24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IHBhcnNlLCBwYXJzZVdpdGhvdXRQcm9jZXNzaW5nIH0gZnJvbSAnQGhhbmRsZWJhcnMvcGFyc2VyJztcbmltcG9ydCB7IEVudGl0eVBhcnNlciB9IGZyb20gJ3NpbXBsZS1odG1sLXRva2VuaXplcic7XG5cbmltcG9ydCBwcmludCBmcm9tICcuLi9nZW5lcmF0aW9uL3ByaW50JztcbmltcG9ydCB7IHZvaWRNYXAgfSBmcm9tICcuLi9nZW5lcmF0aW9uL3ByaW50ZXInO1xuaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi4vcGFyc2VyJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJy4uL3NvdXJjZS9zb3VyY2UnO1xuaW1wb3J0IHsgU291cmNlT2Zmc2V0LCBTb3VyY2VTcGFuIH0gZnJvbSAnLi4vc291cmNlL3NwYW4nO1xuaW1wb3J0IHsgZ2VuZXJhdGVTeW50YXhFcnJvciB9IGZyb20gJy4uL3N5bnRheC1lcnJvcic7XG5pbXBvcnQgdHJhdmVyc2UgZnJvbSAnLi4vdHJhdmVyc2FsL3RyYXZlcnNlJztcbmltcG9ydCB7IE5vZGVWaXNpdG9yIH0gZnJvbSAnLi4vdHJhdmVyc2FsL3Zpc2l0b3InO1xuaW1wb3J0IFdhbGtlciBmcm9tICcuLi90cmF2ZXJzYWwvd2Fsa2VyJztcbmltcG9ydCB7IGFwcGVuZENoaWxkLCBwYXJzZUVsZW1lbnRCbG9ja1BhcmFtcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCAqIGFzIEFTVHYxIGZyb20gJy4uL3YxL2FwaSc7XG5pbXBvcnQgKiBhcyBIQlMgZnJvbSAnLi4vdjEvaGFuZGxlYmFycy1hc3QnO1xuaW1wb3J0IGIgZnJvbSAnLi4vdjEvcGFyc2VyLWJ1aWxkZXJzJztcbmltcG9ydCBwdWJsaWNCdWlsZGVyIGZyb20gJy4uL3YxL3B1YmxpYy1idWlsZGVycyc7XG5pbXBvcnQgeyBIYW5kbGViYXJzTm9kZVZpc2l0b3JzIH0gZnJvbSAnLi9oYW5kbGViYXJzLW5vZGUtdmlzaXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgVG9rZW5pemVyRXZlbnRIYW5kbGVycyBleHRlbmRzIEhhbmRsZWJhcnNOb2RlVmlzaXRvcnMge1xuICBwcml2YXRlIHRhZ09wZW5MaW5lID0gMDtcbiAgcHJpdmF0ZSB0YWdPcGVuQ29sdW1uID0gMDtcblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gbnVsbDtcbiAgfVxuXG4gIC8vIENvbW1lbnRcblxuICBiZWdpbkNvbW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IGIuY29tbWVudCgnJywgdGhpcy5zb3VyY2Uub2Zmc2V0Rm9yKHRoaXMudGFnT3BlbkxpbmUsIHRoaXMudGFnT3BlbkNvbHVtbikpO1xuICB9XG5cbiAgYXBwZW5kVG9Db21tZW50RGF0YShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRDb21tZW50LnZhbHVlICs9IGNoYXI7XG4gIH1cblxuICBmaW5pc2hDb21tZW50KCk6IHZvaWQge1xuICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgdGhpcy5maW5pc2godGhpcy5jdXJyZW50Q29tbWVudCkpO1xuICB9XG5cbiAgLy8gRGF0YVxuXG4gIGJlZ2luRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gYi50ZXh0KHtcbiAgICAgIGNoYXJzOiAnJyxcbiAgICAgIGxvYzogdGhpcy5vZmZzZXQoKS5jb2xsYXBzZWQoKSxcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGVuZFRvRGF0YShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRhLmNoYXJzICs9IGNoYXI7XG4gIH1cblxuICBmaW5pc2hEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGEubG9jID0gdGhpcy5jdXJyZW50RGF0YS5sb2Mud2l0aEVuZCh0aGlzLm9mZnNldCgpKTtcblxuICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgdGhpcy5jdXJyZW50RGF0YSk7XG4gIH1cblxuICAvLyBUYWdzIC0gYmFzaWNcblxuICB0YWdPcGVuKCk6IHZvaWQge1xuICAgIHRoaXMudGFnT3BlbkxpbmUgPSB0aGlzLnRva2VuaXplci5saW5lO1xuICAgIHRoaXMudGFnT3BlbkNvbHVtbiA9IHRoaXMudG9rZW5pemVyLmNvbHVtbjtcbiAgfVxuXG4gIGJlZ2luU3RhcnRUYWcoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IHtcbiAgICAgIHR5cGU6ICdTdGFydFRhZycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgbW9kaWZpZXJzOiBbXSxcbiAgICAgIGNvbW1lbnRzOiBbXSxcbiAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgIGxvYzogdGhpcy5zb3VyY2Uub2Zmc2V0Rm9yKHRoaXMudGFnT3BlbkxpbmUsIHRoaXMudGFnT3BlbkNvbHVtbiksXG4gICAgfTtcbiAgfVxuXG4gIGJlZ2luRW5kVGFnKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSB7XG4gICAgICB0eXBlOiAnRW5kVGFnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICBtb2RpZmllcnM6IFtdLFxuICAgICAgY29tbWVudHM6IFtdLFxuICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgbG9jOiB0aGlzLnNvdXJjZS5vZmZzZXRGb3IodGhpcy50YWdPcGVuTGluZSwgdGhpcy50YWdPcGVuQ29sdW1uKSxcbiAgICB9O1xuICB9XG5cbiAgZmluaXNoVGFnKCk6IHZvaWQge1xuICAgIGxldCB0YWcgPSB0aGlzLmZpbmlzaCh0aGlzLmN1cnJlbnRUYWcpO1xuXG4gICAgaWYgKHRhZy50eXBlID09PSAnU3RhcnRUYWcnKSB7XG4gICAgICB0aGlzLmZpbmlzaFN0YXJ0VGFnKCk7XG5cbiAgICAgIGlmICh0YWcubmFtZSA9PT0gJzonKSB7XG4gICAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgbmFtZWQgYmxvY2sgbmFtZWQgZGV0ZWN0ZWQsIHlvdSBtYXkgaGF2ZSBjcmVhdGVkIGEgbmFtZWQgYmxvY2sgd2l0aG91dCBhIG5hbWUsIG9yIHlvdSBtYXkgaGF2ZSBiZWdhbiB5b3VyIG5hbWUgd2l0aCBhIG51bWJlci4gTmFtZWQgYmxvY2tzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGFyZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGxvbmcsIGFuZCBiZWdpbiB3aXRoIGEgbG93ZXIgY2FzZSBsZXR0ZXInLFxuICAgICAgICAgIHRoaXMuc291cmNlLnNwYW5Gb3Ioe1xuICAgICAgICAgICAgc3RhcnQ6IHRoaXMuY3VycmVudFRhZy5sb2MudG9KU09OKCksXG4gICAgICAgICAgICBlbmQ6IHRoaXMub2Zmc2V0KCkudG9KU09OKCksXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZvaWRNYXBbdGFnLm5hbWVdIHx8IHRhZy5zZWxmQ2xvc2luZykge1xuICAgICAgICB0aGlzLmZpbmlzaEVuZFRhZyh0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRhZy50eXBlID09PSAnRW5kVGFnJykge1xuICAgICAgdGhpcy5maW5pc2hFbmRUYWcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmlzaFN0YXJ0VGFnKCk6IHZvaWQge1xuICAgIGxldCB7IG5hbWUsIGF0dHJpYnV0ZXM6IGF0dHJzLCBtb2RpZmllcnMsIGNvbW1lbnRzLCBzZWxmQ2xvc2luZywgbG9jIH0gPSB0aGlzLmZpbmlzaChcbiAgICAgIHRoaXMuY3VycmVudFN0YXJ0VGFnXG4gICAgKTtcblxuICAgIGxldCBlbGVtZW50ID0gYi5lbGVtZW50KHtcbiAgICAgIHRhZzogbmFtZSxcbiAgICAgIHNlbGZDbG9zaW5nLFxuICAgICAgYXR0cnMsXG4gICAgICBtb2RpZmllcnMsXG4gICAgICBjb21tZW50cyxcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIGJsb2NrUGFyYW1zOiBbXSxcbiAgICAgIGxvYyxcbiAgICB9KTtcbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKGVsZW1lbnQpO1xuICB9XG5cbiAgZmluaXNoRW5kVGFnKGlzVm9pZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGxldCB0YWcgPSB0aGlzLmZpbmlzaCh0aGlzLmN1cnJlbnRUYWcpO1xuXG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKSBhcyBBU1R2MS5FbGVtZW50Tm9kZTtcbiAgICBsZXQgcGFyZW50ID0gdGhpcy5jdXJyZW50RWxlbWVudCgpO1xuXG4gICAgdGhpcy52YWxpZGF0ZUVuZFRhZyh0YWcsIGVsZW1lbnQsIGlzVm9pZCk7XG5cbiAgICBlbGVtZW50LmxvYyA9IGVsZW1lbnQubG9jLndpdGhFbmQodGhpcy5vZmZzZXQoKSk7XG4gICAgcGFyc2VFbGVtZW50QmxvY2tQYXJhbXMoZWxlbWVudCk7XG4gICAgYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcbiAgfVxuXG4gIG1hcmtUYWdBc1NlbGZDbG9zaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFRhZy5zZWxmQ2xvc2luZyA9IHRydWU7XG4gIH1cblxuICAvLyBUYWdzIC0gbmFtZVxuXG4gIGFwcGVuZFRvVGFnTmFtZShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRUYWcubmFtZSArPSBjaGFyO1xuICB9XG5cbiAgLy8gVGFncyAtIGF0dHJpYnV0ZXNcblxuICBiZWdpbkF0dHJpYnV0ZSgpOiB2b2lkIHtcbiAgICBsZXQgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZSA9IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgcGFydHM6IFtdLFxuICAgICAgY3VycmVudFBhcnQ6IG51bGwsXG4gICAgICBpc1F1b3RlZDogZmFsc2UsXG4gICAgICBpc0R5bmFtaWM6IGZhbHNlLFxuICAgICAgc3RhcnQ6IG9mZnNldCxcbiAgICAgIHZhbHVlU3Bhbjogb2Zmc2V0LmNvbGxhcHNlZCgpLFxuICAgIH07XG4gIH1cblxuICBhcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IGNoYXI7XG4gIH1cblxuICBiZWdpbkF0dHJpYnV0ZVZhbHVlKGlzUXVvdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50QXR0ci5pc1F1b3RlZCA9IGlzUXVvdGVkO1xuICAgIHRoaXMuc3RhcnRUZXh0UGFydCgpO1xuICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWVTcGFuID0gdGhpcy5vZmZzZXQoKS5jb2xsYXBzZWQoKTtcbiAgfVxuXG4gIGFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IHBhcnRzID0gdGhpcy5jdXJyZW50QXR0ci5wYXJ0cztcbiAgICBsZXQgbGFzdFBhcnQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcblxuICAgIGxldCBjdXJyZW50ID0gdGhpcy5jdXJyZW50QXR0ci5jdXJyZW50UGFydDtcblxuICAgIGlmIChjdXJyZW50KSB7XG4gICAgICBjdXJyZW50LmNoYXJzICs9IGNoYXI7XG5cbiAgICAgIC8vIHVwZGF0ZSBlbmQgbG9jYXRpb24gZm9yIGVhY2ggYWRkZWQgY2hhclxuICAgICAgY3VycmVudC5sb2MgPSBjdXJyZW50LmxvYy53aXRoRW5kKHRoaXMub2Zmc2V0KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbml0aWFsbHkgYXNzdW1lIHRoZSB0ZXh0IG5vZGUgaXMgYSBzaW5nbGUgY2hhclxuICAgICAgbGV0IGxvYzogU291cmNlT2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuICAgICAgLy8gdGhlIHRva2VuaXplciBsaW5lL2NvbHVtbiBoYXZlIGFscmVhZHkgYmVlbiBhZHZhbmNlZCwgY29ycmVjdCBsb2NhdGlvbiBpbmZvXG4gICAgICBpZiAoY2hhciA9PT0gJ1xcbicpIHtcbiAgICAgICAgbG9jID0gbGFzdFBhcnQgPyBsYXN0UGFydC5sb2MuZ2V0RW5kKCkgOiB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlU3Bhbi5nZXRTdGFydCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9jID0gbG9jLm1vdmUoLTEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRBdHRyLmN1cnJlbnRQYXJ0ID0gYi50ZXh0KHsgY2hhcnM6IGNoYXIsIGxvYzogbG9jLmNvbGxhcHNlZCgpIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMuZmluYWxpemVUZXh0UGFydCgpO1xuXG4gICAgbGV0IHRhZyA9IHRoaXMuY3VycmVudFRhZztcbiAgICBsZXQgdG9rZW5pemVyUG9zID0gdGhpcy5vZmZzZXQoKTtcblxuICAgIGlmICh0YWcudHlwZSA9PT0gJ0VuZFRhZycpIHtcbiAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGVuZCB0YWc6IGNsb3NpbmcgdGFnIG11c3Qgbm90IGhhdmUgYXR0cmlidXRlc2AsXG4gICAgICAgIHRoaXMuc291cmNlLnNwYW5Gb3IoeyBzdGFydDogdGFnLmxvYy50b0pTT04oKSwgZW5kOiB0b2tlbml6ZXJQb3MudG9KU09OKCkgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IHsgbmFtZSwgcGFydHMsIHN0YXJ0LCBpc1F1b3RlZCwgaXNEeW5hbWljLCB2YWx1ZVNwYW4gfSA9IHRoaXMuY3VycmVudEF0dHI7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5hc3NlbWJsZUF0dHJpYnV0ZVZhbHVlKHBhcnRzLCBpc1F1b3RlZCwgaXNEeW5hbWljLCBzdGFydC51bnRpbCh0b2tlbml6ZXJQb3MpKTtcbiAgICB2YWx1ZS5sb2MgPSB2YWx1ZVNwYW4ud2l0aEVuZCh0b2tlbml6ZXJQb3MpO1xuXG4gICAgbGV0IGF0dHJpYnV0ZSA9IGIuYXR0cih7IG5hbWUsIHZhbHVlLCBsb2M6IHN0YXJ0LnVudGlsKHRva2VuaXplclBvcykgfSk7XG5cbiAgICB0aGlzLmN1cnJlbnRTdGFydFRhZy5hdHRyaWJ1dGVzLnB1c2goYXR0cmlidXRlKTtcbiAgfVxuXG4gIHJlcG9ydFN5bnRheEVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IobWVzc2FnZSwgdGhpcy5vZmZzZXQoKS5jb2xsYXBzZWQoKSk7XG4gIH1cblxuICBhc3NlbWJsZUNvbmNhdGVuYXRlZFZhbHVlKFxuICAgIHBhcnRzOiAoQVNUdjEuTXVzdGFjaGVTdGF0ZW1lbnQgfCBBU1R2MS5UZXh0Tm9kZSlbXVxuICApOiBBU1R2MS5Db25jYXRTdGF0ZW1lbnQge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBwYXJ0OiBBU1R2MS5CYXNlTm9kZSA9IHBhcnRzW2ldO1xuXG4gICAgICBpZiAocGFydC50eXBlICE9PSAnTXVzdGFjaGVTdGF0ZW1lbnQnICYmIHBhcnQudHlwZSAhPT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICdVbnN1cHBvcnRlZCBub2RlIGluIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWU6ICcgKyBwYXJ0Wyd0eXBlJ10sXG4gICAgICAgICAgcGFydC5sb2NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3NlcnRQcmVzZW50KHBhcnRzLCBgdGhlIGNvbmNhdGVuYXRpb24gcGFydHMgb2YgYW4gZWxlbWVudCBzaG91bGQgbm90IGJlIGVtcHR5YCk7XG5cbiAgICBsZXQgZmlyc3QgPSBwYXJ0c1swXTtcbiAgICBsZXQgbGFzdCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuXG4gICAgcmV0dXJuIGIuY29uY2F0KHBhcnRzLCB0aGlzLnNvdXJjZS5zcGFuRm9yKGZpcnN0LmxvYykuZXh0ZW5kKHRoaXMuc291cmNlLnNwYW5Gb3IobGFzdC5sb2MpKSk7XG4gIH1cblxuICB2YWxpZGF0ZUVuZFRhZyhcbiAgICB0YWc6IFRhZzwnU3RhcnRUYWcnIHwgJ0VuZFRhZyc+LFxuICAgIGVsZW1lbnQ6IEFTVHYxLkVsZW1lbnROb2RlLFxuICAgIHNlbGZDbG9zaW5nOiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGxldCBlcnJvcjtcblxuICAgIGlmICh2b2lkTWFwW3RhZy5uYW1lXSAmJiAhc2VsZkNsb3NpbmcpIHtcbiAgICAgIC8vIEVuZ1RhZyBpcyBhbHNvIGNhbGxlZCBieSBTdGFydFRhZyBmb3Igdm9pZCBhbmQgc2VsZi1jbG9zaW5nIHRhZ3MgKGkuZS5cbiAgICAgIC8vIDxpbnB1dD4gb3IgPGJyIC8+LCBzbyB3ZSBuZWVkIHRvIGNoZWNrIGZvciB0aGF0IGhlcmUuIE90aGVyd2lzZSwgd2Ugd291bGRcbiAgICAgIC8vIHRocm93IGFuIGVycm9yIGZvciB0aG9zZSBjYXNlcy5cbiAgICAgIGVycm9yID0gYDwke3RhZy5uYW1lfT4gZWxlbWVudHMgZG8gbm90IG5lZWQgZW5kIHRhZ3MuIFlvdSBzaG91bGQgcmVtb3ZlIGl0YDtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVycm9yID0gYENsb3NpbmcgdGFnIDwvJHt0YWcubmFtZX0+IHdpdGhvdXQgYW4gb3BlbiB0YWdgO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC50YWcgIT09IHRhZy5uYW1lKSB7XG4gICAgICBlcnJvciA9IGBDbG9zaW5nIHRhZyA8LyR7dGFnLm5hbWV9PiBkaWQgbm90IG1hdGNoIGxhc3Qgb3BlbiB0YWcgPCR7ZWxlbWVudC50YWd9PiAob24gbGluZSAke2VsZW1lbnQubG9jLnN0YXJ0UG9zaXRpb24ubGluZX0pYDtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoZXJyb3IsIHRhZy5sb2MpO1xuICAgIH1cbiAgfVxuXG4gIGFzc2VtYmxlQXR0cmlidXRlVmFsdWUoXG4gICAgcGFydHM6IChBU1R2MS5NdXN0YWNoZVN0YXRlbWVudCB8IEFTVHYxLlRleHROb2RlKVtdLFxuICAgIGlzUXVvdGVkOiBib29sZWFuLFxuICAgIGlzRHluYW1pYzogYm9vbGVhbixcbiAgICBzcGFuOiBTb3VyY2VTcGFuXG4gICk6IEFTVHYxLkNvbmNhdFN0YXRlbWVudCB8IEFTVHYxLk11c3RhY2hlU3RhdGVtZW50IHwgQVNUdjEuVGV4dE5vZGUge1xuICAgIGlmIChpc0R5bmFtaWMpIHtcbiAgICAgIGlmIChpc1F1b3RlZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hc3NlbWJsZUNvbmNhdGVuYXRlZFZhbHVlKHBhcnRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJ0cy5sZW5ndGggPT09IDEgfHxcbiAgICAgICAgICAocGFydHMubGVuZ3RoID09PSAyICYmXG4gICAgICAgICAgICBwYXJ0c1sxXS50eXBlID09PSAnVGV4dE5vZGUnICYmXG4gICAgICAgICAgICAocGFydHNbMV0gYXMgQVNUdjEuVGV4dE5vZGUpLmNoYXJzID09PSAnLycpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBwYXJ0c1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYEFuIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgbXVzdGFjaGUsIGAgK1xuICAgICAgICAgICAgICBgcHJlY2VkZWQgYnkgd2hpdGVzcGFjZSBvciBhICc9JyBjaGFyYWN0ZXIsIGFuZCBgICtcbiAgICAgICAgICAgICAgYGZvbGxvd2VkIGJ5IHdoaXRlc3BhY2UsIGEgJz4nIGNoYXJhY3Rlciwgb3IgJy8+J2AsXG4gICAgICAgICAgICBzcGFuXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFydHMubGVuZ3RoID4gMCA/IHBhcnRzWzBdIDogYi50ZXh0KHsgY2hhcnM6ICcnLCBsb2M6IHNwYW4gfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICBBU1RQbHVnaW5zIGNhbiBtYWtlIGNoYW5nZXMgdG8gdGhlIEdsaW1tZXIgdGVtcGxhdGUgQVNUIGJlZm9yZVxuICBjb21waWxhdGlvbiBiZWdpbnMuXG4qL1xuZXhwb3J0IGludGVyZmFjZSBBU1RQbHVnaW5CdWlsZGVyPFRFbnYgZXh0ZW5kcyBBU1RQbHVnaW5FbnZpcm9ubWVudCA9IEFTVFBsdWdpbkVudmlyb25tZW50PiB7XG4gIChlbnY6IFRFbnYpOiBBU1RQbHVnaW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVNUUGx1Z2luIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2aXNpdG9yOiBOb2RlVmlzaXRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBU1RQbHVnaW5FbnZpcm9ubWVudCB7XG4gIG1ldGE/OiBvYmplY3Q7XG4gIHN5bnRheDogU3ludGF4O1xufVxuXG5pbnRlcmZhY2UgSGFuZGxlYmFyc1BhcnNlT3B0aW9ucyB7XG4gIHNyY05hbWU/OiBzdHJpbmc7XG4gIGlnbm9yZVN0YW5kYWxvbmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlSWRGbiB7XG4gIChzcmM6IHN0cmluZyk6IE9wdGlvbjxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZWNvbXBpbGVPcHRpb25zIGV4dGVuZHMgUHJlcHJvY2Vzc09wdGlvbnMge1xuICBpZD86IFRlbXBsYXRlSWRGbjtcbiAgY3VzdG9taXplQ29tcG9uZW50TmFtZT8oaW5wdXQ6IHN0cmluZyk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVwcm9jZXNzT3B0aW9ucyB7XG4gIHN0cmljdE1vZGU/OiBib29sZWFuO1xuICBsb2NhbHM/OiBzdHJpbmdbXTtcbiAgbWV0YT86IHtcbiAgICBtb2R1bGVOYW1lPzogc3RyaW5nO1xuICB9O1xuICBwbHVnaW5zPzoge1xuICAgIGFzdD86IEFTVFBsdWdpbkJ1aWxkZXJbXTtcbiAgfTtcbiAgcGFyc2VPcHRpb25zPzogSGFuZGxlYmFyc1BhcnNlT3B0aW9ucztcbiAgY3VzdG9taXplQ29tcG9uZW50TmFtZT8oaW5wdXQ6IHN0cmluZyk6IHN0cmluZztcblxuICAvKipcbiAgICBVc2VmdWwgZm9yIHNwZWNpZnlpbmcgYSBncm91cCBvZiBvcHRpb25zIHRvZ2V0aGVyLlxuXG4gICAgV2hlbiBgJ2NvZGVtb2QnYCB3ZSBkaXNhYmxlIGFsbCB3aGl0ZXNwYWNlIGNvbnRyb2wgaW4gaGFuZGxlYmFyc1xuICAgICh0byBwcmVzZXJ2ZSBhcyBtdWNoIGFzIHBvc3NpYmxlKSBhbmQgd2UgYWxzbyBhdm9pZCBhbnlcbiAgICBlc2NhcGluZy91bmVzY2FwaW5nIG9mIEhUTUwgZW50aXR5IGNvZGVzLlxuICAgKi9cbiAgbW9kZT86ICdjb2RlbW9kJyB8ICdwcmVjb21waWxlJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTeW50YXgge1xuICBwYXJzZTogdHlwZW9mIHByZXByb2Nlc3M7XG4gIGJ1aWxkZXJzOiB0eXBlb2YgcHVibGljQnVpbGRlcjtcbiAgcHJpbnQ6IHR5cGVvZiBwcmludDtcbiAgdHJhdmVyc2U6IHR5cGVvZiB0cmF2ZXJzZTtcbiAgV2Fsa2VyOiB0eXBlb2YgV2Fsa2VyO1xufVxuXG5jb25zdCBzeW50YXg6IFN5bnRheCA9IHtcbiAgcGFyc2U6IHByZXByb2Nlc3MsXG4gIGJ1aWxkZXJzOiBwdWJsaWNCdWlsZGVyLFxuICBwcmludCxcbiAgdHJhdmVyc2UsXG4gIFdhbGtlcixcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwcm9jZXNzKFxuICBpbnB1dDogc3RyaW5nIHwgU291cmNlIHwgSEJTLlByb2dyYW0sXG4gIG9wdGlvbnM6IFByZXByb2Nlc3NPcHRpb25zID0ge31cbik6IEFTVHYxLlRlbXBsYXRlIHtcbiAgbGV0IG1vZGUgPSBvcHRpb25zLm1vZGUgfHwgJ3ByZWNvbXBpbGUnO1xuXG4gIGxldCBzb3VyY2U6IFNvdXJjZTtcbiAgbGV0IGFzdDogSEJTLlByb2dyYW07XG4gIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgc291cmNlID0gbmV3IFNvdXJjZShpbnB1dCwgb3B0aW9ucy5tZXRhPy5tb2R1bGVOYW1lKTtcblxuICAgIGlmIChtb2RlID09PSAnY29kZW1vZCcpIHtcbiAgICAgIGFzdCA9IHBhcnNlV2l0aG91dFByb2Nlc3NpbmcoaW5wdXQsIG9wdGlvbnMucGFyc2VPcHRpb25zKSBhcyBIQlMuUHJvZ3JhbTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXN0ID0gcGFyc2UoaW5wdXQsIG9wdGlvbnMucGFyc2VPcHRpb25zKSBhcyBIQlMuUHJvZ3JhbTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaW5wdXQgaW5zdGFuY2VvZiBTb3VyY2UpIHtcbiAgICBzb3VyY2UgPSBpbnB1dDtcblxuICAgIGlmIChtb2RlID09PSAnY29kZW1vZCcpIHtcbiAgICAgIGFzdCA9IHBhcnNlV2l0aG91dFByb2Nlc3NpbmcoaW5wdXQuc291cmNlLCBvcHRpb25zLnBhcnNlT3B0aW9ucykgYXMgSEJTLlByb2dyYW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzdCA9IHBhcnNlKGlucHV0LnNvdXJjZSwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpIGFzIEhCUy5Qcm9ncmFtO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzb3VyY2UgPSBuZXcgU291cmNlKCcnLCBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWUpO1xuICAgIGFzdCA9IGlucHV0O1xuICB9XG5cbiAgbGV0IGVudGl0eVBhcnNlciA9IHVuZGVmaW5lZDtcbiAgaWYgKG1vZGUgPT09ICdjb2RlbW9kJykge1xuICAgIGVudGl0eVBhcnNlciA9IG5ldyBFbnRpdHlQYXJzZXIoe30pO1xuICB9XG5cbiAgbGV0IG9mZnNldHMgPSBTb3VyY2VTcGFuLmZvckNoYXJQb3NpdGlvbnMoc291cmNlLCAwLCBzb3VyY2Uuc291cmNlLmxlbmd0aCk7XG4gIGFzdC5sb2MgPSB7XG4gICAgc291cmNlOiAnKHByb2dyYW0pJyxcbiAgICBzdGFydDogb2Zmc2V0cy5zdGFydFBvc2l0aW9uLFxuICAgIGVuZDogb2Zmc2V0cy5lbmRQb3NpdGlvbixcbiAgfTtcblxuICBsZXQgcHJvZ3JhbSA9IG5ldyBUb2tlbml6ZXJFdmVudEhhbmRsZXJzKHNvdXJjZSwgZW50aXR5UGFyc2VyLCBtb2RlKS5hY2NlcHRUZW1wbGF0ZShhc3QpO1xuXG4gIGlmIChvcHRpb25zLnN0cmljdE1vZGUpIHtcbiAgICBwcm9ncmFtLmJsb2NrUGFyYW1zID0gb3B0aW9ucy5sb2NhbHMgPz8gW107XG4gIH1cblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnBsdWdpbnMgJiYgb3B0aW9ucy5wbHVnaW5zLmFzdCkge1xuICAgIGZvciAobGV0IGkgPSAwLCBsID0gb3B0aW9ucy5wbHVnaW5zLmFzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGxldCB0cmFuc2Zvcm0gPSBvcHRpb25zLnBsdWdpbnMuYXN0W2ldO1xuICAgICAgbGV0IGVudjogQVNUUGx1Z2luRW52aXJvbm1lbnQgPSBhc3NpZ24oe30sIG9wdGlvbnMsIHsgc3ludGF4IH0sIHsgcGx1Z2luczogdW5kZWZpbmVkIH0pO1xuXG4gICAgICBsZXQgcGx1Z2luUmVzdWx0ID0gdHJhbnNmb3JtKGVudik7XG5cbiAgICAgIHRyYXZlcnNlKHByb2dyYW0sIHBsdWdpblJlc3VsdC52aXNpdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvZ3JhbTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -27,2 +27,2 @@ export { Source } from './lib/source/source';

export { AST_1 as AST };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFBLE1BQUEsUUFBQSxxQkFBQTtBQUNBLFNBQVMsT0FBTyxJQUFoQixRQUFBLFFBQUEsMEJBQUE7eUJBQ3VCLGM7b0JBQVgsSzt5QkFDVyxnQjtvQkFBWCxLO0FBQ1osU0FBQSxTQUFBLFFBQUEsc0JBQUE7QUFDQSxTQUFBLFdBQUEsRUFBQSxnQkFBQSxFQUFBLGtCQUFBLFFBQUEsb0JBQUE7QUFDQSxTQUFBLG1CQUFBLFFBQUEsb0JBQUE7QUFDQSxTQUFBLFVBQUEsUUFBQSx1Q0FBQTtBQVFBLFNBQVMsT0FBTyxJQUFoQixLQUFBLFFBQUEsd0JBQUE7QUFDQSxTQUFBLFNBQUEsUUFBQSx1QkFBQTtBQUNBLFNBQVMsT0FBTyxJQUFoQixNQUFBLFFBQUEsd0JBQUE7QUFDQSxTQUFTLE9BQU8sSUFBaEIsUUFBQSxRQUFBLDBCQUFBO0FBRUEsU0FBQSxnQkFBQSxFQUFBLGlCQUFBLFFBQUEsd0JBQUE7QUFDQSxTQUFTLE9BQU8sSUFBaEIsVUFBQSxRQUFBLHNCQUFBO0FBQ0EsU0FBQSxTQUFBLEVBQUEsY0FBQSxRQUFBLGdCQUFBO0FBRUEsU0FBQSxXQUFBLFFBQUEsb0JBQUE7QUFDQSxTQUFBLFVBQUEsUUFBQSxtQkFBQTtBQUNBLFNBQUEsUUFBQSxFQUFBLFFBQUEsRUFBQSxHQUFBLEVBQUEsT0FBQSxRQUFBLHdCQUFBO0FBVUEsU0FBQSxJQUFBLFFBQUEseUJBQUE7QUFFQTs7QUFDQSxTQUFTLE9BQU8sSUFBaEIsSUFBQSxRQUFBLHdCQUFBO3VCQUdxQixjO2tCQUFULEciLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTb3VyY2UgfSBmcm9tICcuL2xpYi9zb3VyY2Uvc291cmNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYnVpbGRlcnMgfSBmcm9tICcuL2xpYi92MS9wdWJsaWMtYnVpbGRlcnMnO1xuZXhwb3J0ICogYXMgQVNUdjEgZnJvbSAnLi9saWIvdjEvYXBpJztcbmV4cG9ydCAqIGFzIEFTVHYyIGZyb20gJy4vbGliL3YyLWEvYXBpJztcbmV4cG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gJy4vbGliL3YyLWEvbm9ybWFsaXplJztcbmV4cG9ydCB7IFN5bWJvbFRhYmxlLCBCbG9ja1N5bWJvbFRhYmxlLCBQcm9ncmFtU3ltYm9sVGFibGUgfSBmcm9tICcuL2xpYi9zeW1ib2wtdGFibGUnO1xuZXhwb3J0IHsgZ2VuZXJhdGVTeW50YXhFcnJvciwgR2xpbW1lclN5bnRheEVycm9yIH0gZnJvbSAnLi9saWIvc3ludGF4LWVycm9yJztcbmV4cG9ydCB7XG4gIHByZXByb2Nlc3MsXG4gIEFTVFBsdWdpbixcbiAgQVNUUGx1Z2luQnVpbGRlcixcbiAgQVNUUGx1Z2luRW52aXJvbm1lbnQsXG4gIFN5bnRheCxcbiAgUHJlY29tcGlsZU9wdGlvbnMsXG59IGZyb20gJy4vbGliL3BhcnNlci90b2tlbml6ZXItZXZlbnQtaGFuZGxlcnMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmludCB9IGZyb20gJy4vbGliL2dlbmVyYXRpb24vcHJpbnQnO1xuZXhwb3J0IHsgc29ydEJ5TG9jIH0gZnJvbSAnLi9saWIvZ2VuZXJhdGlvbi91dGlsJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgV2Fsa2VyIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3dhbGtlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyYXZlcnNlIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3RyYXZlcnNlJztcbmV4cG9ydCB7IE5vZGVWaXNpdG9yIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3Zpc2l0b3InO1xuZXhwb3J0IHsgY2Fubm90UmVtb3ZlTm9kZSwgY2Fubm90UmVwbGFjZU5vZGUgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvZXJyb3JzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgV2Fsa2VyUGF0aCB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC9wYXRoJztcbmV4cG9ydCB7IGlzS2V5d29yZCwgS2V5d29yZFR5cGUsIEtFWVdPUkRTX1RZUEVTIH0gZnJvbSAnLi9saWIva2V5d29yZHMnO1xuXG5leHBvcnQgeyBTb3VyY2VTbGljZSB9IGZyb20gJy4vbGliL3NvdXJjZS9zbGljZSc7XG5leHBvcnQgeyBTb3VyY2VTcGFuIH0gZnJvbSAnLi9saWIvc291cmNlL3NwYW4nO1xuZXhwb3J0IHtcbiAgU3Bhbkxpc3QsXG4gIG1heWJlTG9jLFxuICBNYXliZUhhc1NvdXJjZVNwYW4sXG4gIGxvYyxcbiAgSGFzU291cmNlU3BhbixcbiAgaGFzU3Bhbixcbn0gZnJvbSAnLi9saWIvc291cmNlL3NwYW4tbGlzdCc7XG5leHBvcnQgeyBQcmVwcm9jZXNzT3B0aW9ucyB9IGZyb20gJy4vbGliL3BhcnNlci90b2tlbml6ZXItZXZlbnQtaGFuZGxlcnMnO1xuXG5leHBvcnQgeyBub2RlIH0gZnJvbSAnLi9saWIvdjItYS9vYmplY3RzL25vZGUnO1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIFdhbGtlclBhdGggaW5zdGVhZCAqL1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQYXRoIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3dhbGtlcic7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgQVNUdjEgaW5zdGVhZCAqL1xuZXhwb3J0ICogYXMgQVNUIGZyb20gJy4vbGliL3YxL2FwaSc7XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFBLE1BQUEsUUFBQSxxQkFBQTtBQUNBLFNBQVMsT0FBTyxJQUFoQixRQUFBLFFBQUEsMEJBQUE7eUJBQ3VCLGM7b0JBQVgsSzt5QkFDVyxnQjtvQkFBWCxLO0FBQ1osU0FBQSxTQUFBLFFBQUEsc0JBQUE7QUFDQSxTQUFBLFdBQUEsRUFBQSxnQkFBQSxFQUFBLGtCQUFBLFFBQUEsb0JBQUE7QUFDQSxTQUFBLG1CQUFBLFFBQUEsb0JBQUE7QUFDQSxTQUFBLFVBQUEsUUFBQSx1Q0FBQTtBQVNBLFNBQVMsT0FBTyxJQUFoQixLQUFBLFFBQUEsd0JBQUE7QUFDQSxTQUFBLFNBQUEsUUFBQSx1QkFBQTtBQUNBLFNBQVMsT0FBTyxJQUFoQixNQUFBLFFBQUEsd0JBQUE7QUFDQSxTQUFTLE9BQU8sSUFBaEIsUUFBQSxRQUFBLDBCQUFBO0FBRUEsU0FBQSxnQkFBQSxFQUFBLGlCQUFBLFFBQUEsd0JBQUE7QUFDQSxTQUFTLE9BQU8sSUFBaEIsVUFBQSxRQUFBLHNCQUFBO0FBQ0EsU0FBQSxTQUFBLEVBQUEsY0FBQSxRQUFBLGdCQUFBO0FBRUEsU0FBQSxXQUFBLFFBQUEsb0JBQUE7QUFDQSxTQUFBLFVBQUEsUUFBQSxtQkFBQTtBQUNBLFNBQUEsUUFBQSxFQUFBLFFBQUEsRUFBQSxHQUFBLEVBQUEsT0FBQSxRQUFBLHdCQUFBO0FBVUEsU0FBQSxJQUFBLFFBQUEseUJBQUE7QUFFQTs7QUFDQSxTQUFTLE9BQU8sSUFBaEIsSUFBQSxRQUFBLHdCQUFBO3VCQUdxQixjO2tCQUFULEciLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTb3VyY2UgfSBmcm9tICcuL2xpYi9zb3VyY2Uvc291cmNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYnVpbGRlcnMgfSBmcm9tICcuL2xpYi92MS9wdWJsaWMtYnVpbGRlcnMnO1xuZXhwb3J0ICogYXMgQVNUdjEgZnJvbSAnLi9saWIvdjEvYXBpJztcbmV4cG9ydCAqIGFzIEFTVHYyIGZyb20gJy4vbGliL3YyLWEvYXBpJztcbmV4cG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gJy4vbGliL3YyLWEvbm9ybWFsaXplJztcbmV4cG9ydCB7IFN5bWJvbFRhYmxlLCBCbG9ja1N5bWJvbFRhYmxlLCBQcm9ncmFtU3ltYm9sVGFibGUgfSBmcm9tICcuL2xpYi9zeW1ib2wtdGFibGUnO1xuZXhwb3J0IHsgZ2VuZXJhdGVTeW50YXhFcnJvciwgR2xpbW1lclN5bnRheEVycm9yIH0gZnJvbSAnLi9saWIvc3ludGF4LWVycm9yJztcbmV4cG9ydCB7XG4gIHByZXByb2Nlc3MsXG4gIEFTVFBsdWdpbixcbiAgQVNUUGx1Z2luQnVpbGRlcixcbiAgQVNUUGx1Z2luRW52aXJvbm1lbnQsXG4gIFN5bnRheCxcbiAgVGVtcGxhdGVJZEZuLFxuICBQcmVjb21waWxlT3B0aW9ucyxcbn0gZnJvbSAnLi9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByaW50IH0gZnJvbSAnLi9saWIvZ2VuZXJhdGlvbi9wcmludCc7XG5leHBvcnQgeyBzb3J0QnlMb2MgfSBmcm9tICcuL2xpYi9nZW5lcmF0aW9uL3V0aWwnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXYWxrZXIgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvd2Fsa2VyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhdmVyc2UgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvdHJhdmVyc2UnO1xuZXhwb3J0IHsgTm9kZVZpc2l0b3IgfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvdmlzaXRvcic7XG5leHBvcnQgeyBjYW5ub3RSZW1vdmVOb2RlLCBjYW5ub3RSZXBsYWNlTm9kZSB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC9lcnJvcnMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXYWxrZXJQYXRoIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3BhdGgnO1xuZXhwb3J0IHsgaXNLZXl3b3JkLCBLZXl3b3JkVHlwZSwgS0VZV09SRFNfVFlQRVMgfSBmcm9tICcuL2xpYi9rZXl3b3Jkcyc7XG5cbmV4cG9ydCB7IFNvdXJjZVNsaWNlIH0gZnJvbSAnLi9saWIvc291cmNlL3NsaWNlJztcbmV4cG9ydCB7IFNvdXJjZVNwYW4gfSBmcm9tICcuL2xpYi9zb3VyY2Uvc3Bhbic7XG5leHBvcnQge1xuICBTcGFuTGlzdCxcbiAgbWF5YmVMb2MsXG4gIE1heWJlSGFzU291cmNlU3BhbixcbiAgbG9jLFxuICBIYXNTb3VyY2VTcGFuLFxuICBoYXNTcGFuLFxufSBmcm9tICcuL2xpYi9zb3VyY2Uvc3Bhbi1saXN0JztcbmV4cG9ydCB7IFByZXByb2Nlc3NPcHRpb25zIH0gZnJvbSAnLi9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycyc7XG5cbmV4cG9ydCB7IG5vZGUgfSBmcm9tICcuL2xpYi92Mi1hL29iamVjdHMvbm9kZSc7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgV2Fsa2VyUGF0aCBpbnN0ZWFkICovXG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhdGggfSBmcm9tICcuL2xpYi90cmF2ZXJzYWwvd2Fsa2VyJztcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBBU1R2MSBpbnN0ZWFkICovXG5leHBvcnQgKiBhcyBBU1QgZnJvbSAnLi9saWIvdjEvYXBpJztcbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -367,2 +367,2 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLFNBQUEsYUFBQSxFQUFBLE1BQUEsUUFBQSxlQUFBO0FBQ0EsU0FBQSxLQUFBLEVBQUEsc0JBQUEsUUFBQSxvQkFBQTtBQUNBLFNBQUEsWUFBQSxRQUFBLHVCQUFBO0FBRUEsT0FBQSxLQUFBLE1BQUEscUJBQUE7QUFDQSxTQUFBLE9BQUEsUUFBQSx1QkFBQTtBQUVBLFNBQUEsTUFBQSxRQUFBLGtCQUFBO0FBQ0EsU0FBQSxVQUFBLFFBQUEsZ0JBQUE7QUFDQSxTQUFBLG1CQUFBLFFBQUEsaUJBQUE7QUFDQSxPQUFBLFFBQUEsTUFBQSx1QkFBQTtBQUVBLE9BQUEsTUFBQSxNQUFBLHFCQUFBO0FBQ0EsU0FBQSxXQUFBLEVBQUEsdUJBQUEsUUFBQSxVQUFBO0FBR0EsT0FBQSxDQUFBLE1BQUEsdUJBQUE7QUFDQSxPQUFBLGFBQUEsTUFBQSx1QkFBQTtBQUNBLFNBQUEsc0JBQUEsUUFBQSw0QkFBQTtBQUVBLFdBQU0sc0JBQU47QUFBQTs7QUFBQSxvQ0FBQTtBQUFBOzs7QUFDVSxVQUFBLFdBQUEsR0FBQSxDQUFBO0FBQ0EsVUFBQSxhQUFBLEdBQUEsQ0FBQTtBQUZWO0FBa1NDOztBQWxTRDs7QUFBQSxTQUlFLEtBSkYsR0FJRSxpQkFBSztBQUNILFNBQUEsV0FBQSxHQUFBLElBQUE7QUFMOEQsR0FBbEUsQ0FRRTtBQVJGOztBQUFBLFNBVUUsWUFWRixHQVVFLHdCQUFZO0FBQ1YsU0FBQSxXQUFBLEdBQW1CLENBQUMsQ0FBRCxPQUFBLENBQUEsRUFBQSxFQUFjLEtBQUEsTUFBQSxDQUFBLFNBQUEsQ0FBc0IsS0FBdEIsV0FBQSxFQUF3QyxLQUF6RSxhQUFpQyxDQUFkLENBQW5CO0FBQ0QsR0FaSDs7QUFBQSxTQWNFLG1CQWRGLEdBY0UsNkJBQW1CLEtBQW5CLEVB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RUFBQTtBQUNEOztBQUVELE1BQUksT0FBTyxJQUFJLE9BQU8sQ0FBbEIsT0FBQSxJQUE4QixPQUFPLENBQVAsT0FBQSxDQUFsQyxHQUFBLEVBQXVEO0FBQ3JELFNBQUssSUFBSSxDQUFDLEdBQUwsQ0FBQSxFQUFXLENBQUMsR0FBRyxPQUFPLENBQVAsT0FBQSxDQUFBLEdBQUEsQ0FBcEIsTUFBQSxFQUFnRCxDQUFDLEdBQWpELENBQUEsRUFBdUQsQ0FBdkQsRUFBQSxFQUE0RDtBQUMxRCxVQUFJLFNBQVMsR0FBRyxPQUFPLENBQVAsT0FBQSxDQUFBLEdBQUEsQ0FBaEIsQ0FBZ0IsQ0FBaEI7QUFDQSxVQUFJLEdBQUcsR0FBeUIsTUFBTSxDQUFBLEVBQUEsRUFBQSxPQUFBLEVBQWM7QUFBRSxRQUFBLE1BQUEsRUFBQTtBQUFGLE9BQWQsRUFBMEI7QUFBRSxRQUFBLE9BQU8sRUFBRTtBQUFYLE9BQTFCLENBQXRDO0FBRUEsVUFBSSxZQUFZLEdBQUcsU0FBUyxDQUE1QixHQUE0QixDQUE1QjtBQUVBLE1BQUEsUUFBUSxDQUFBLE9BQUEsRUFBVSxZQUFZLENBQTlCLE9BQVEsQ0FBUjtBQUNEO0FBQ0Y7O0FBRUQsU0FBQSxPQUFBO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnRQcmVzZW50LCBhc3NpZ24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IHBhcnNlLCBwYXJzZVdpdGhvdXRQcm9jZXNzaW5nIH0gZnJvbSAnQGhhbmRsZWJhcnMvcGFyc2VyJztcbmltcG9ydCB7IEVudGl0eVBhcnNlciB9IGZyb20gJ3NpbXBsZS1odG1sLXRva2VuaXplcic7XG5cbmltcG9ydCBwcmludCBmcm9tICcuLi9nZW5lcmF0aW9uL3ByaW50JztcbmltcG9ydCB7IHZvaWRNYXAgfSBmcm9tICcuLi9nZW5lcmF0aW9uL3ByaW50ZXInO1xuaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi4vcGFyc2VyJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJy4uL3NvdXJjZS9zb3VyY2UnO1xuaW1wb3J0IHsgU291cmNlT2Zmc2V0LCBTb3VyY2VTcGFuIH0gZnJvbSAnLi4vc291cmNlL3NwYW4nO1xuaW1wb3J0IHsgZ2VuZXJhdGVTeW50YXhFcnJvciB9IGZyb20gJy4uL3N5bnRheC1lcnJvcic7XG5pbXBvcnQgdHJhdmVyc2UgZnJvbSAnLi4vdHJhdmVyc2FsL3RyYXZlcnNlJztcbmltcG9ydCB7IE5vZGVWaXNpdG9yIH0gZnJvbSAnLi4vdHJhdmVyc2FsL3Zpc2l0b3InO1xuaW1wb3J0IFdhbGtlciBmcm9tICcuLi90cmF2ZXJzYWwvd2Fsa2VyJztcbmltcG9ydCB7IGFwcGVuZENoaWxkLCBwYXJzZUVsZW1lbnRCbG9ja1BhcmFtcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCAqIGFzIEFTVHYxIGZyb20gJy4uL3YxL2FwaSc7XG5pbXBvcnQgKiBhcyBIQlMgZnJvbSAnLi4vdjEvaGFuZGxlYmFycy1hc3QnO1xuaW1wb3J0IGIgZnJvbSAnLi4vdjEvcGFyc2VyLWJ1aWxkZXJzJztcbmltcG9ydCBwdWJsaWNCdWlsZGVyIGZyb20gJy4uL3YxL3B1YmxpYy1idWlsZGVycyc7XG5pbXBvcnQgeyBIYW5kbGViYXJzTm9kZVZpc2l0b3JzIH0gZnJvbSAnLi9oYW5kbGViYXJzLW5vZGUtdmlzaXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgVG9rZW5pemVyRXZlbnRIYW5kbGVycyBleHRlbmRzIEhhbmRsZWJhcnNOb2RlVmlzaXRvcnMge1xuICBwcml2YXRlIHRhZ09wZW5MaW5lID0gMDtcbiAgcHJpdmF0ZSB0YWdPcGVuQ29sdW1uID0gMDtcblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gbnVsbDtcbiAgfVxuXG4gIC8vIENvbW1lbnRcblxuICBiZWdpbkNvbW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IGIuY29tbWVudCgnJywgdGhpcy5zb3VyY2Uub2Zmc2V0Rm9yKHRoaXMudGFnT3BlbkxpbmUsIHRoaXMudGFnT3BlbkNvbHVtbikpO1xuICB9XG5cbiAgYXBwZW5kVG9Db21tZW50RGF0YShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRDb21tZW50LnZhbHVlICs9IGNoYXI7XG4gIH1cblxuICBmaW5pc2hDb21tZW50KCk6IHZvaWQge1xuICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgdGhpcy5maW5pc2godGhpcy5jdXJyZW50Q29tbWVudCkpO1xuICB9XG5cbiAgLy8gRGF0YVxuXG4gIGJlZ2luRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gYi50ZXh0KHtcbiAgICAgIGNoYXJzOiAnJyxcbiAgICAgIGxvYzogdGhpcy5vZmZzZXQoKS5jb2xsYXBzZWQoKSxcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGVuZFRvRGF0YShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRhLmNoYXJzICs9IGNoYXI7XG4gIH1cblxuICBmaW5pc2hEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGEubG9jID0gdGhpcy5jdXJyZW50RGF0YS5sb2Mud2l0aEVuZCh0aGlzLm9mZnNldCgpKTtcblxuICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgdGhpcy5jdXJyZW50RGF0YSk7XG4gIH1cblxuICAvLyBUYWdzIC0gYmFzaWNcblxuICB0YWdPcGVuKCk6IHZvaWQge1xuICAgIHRoaXMudGFnT3BlbkxpbmUgPSB0aGlzLnRva2VuaXplci5saW5lO1xuICAgIHRoaXMudGFnT3BlbkNvbHVtbiA9IHRoaXMudG9rZW5pemVyLmNvbHVtbjtcbiAgfVxuXG4gIGJlZ2luU3RhcnRUYWcoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IHtcbiAgICAgIHR5cGU6ICdTdGFydFRhZycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgbW9kaWZpZXJzOiBbXSxcbiAgICAgIGNvbW1lbnRzOiBbXSxcbiAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgIGxvYzogdGhpcy5zb3VyY2Uub2Zmc2V0Rm9yKHRoaXMudGFnT3BlbkxpbmUsIHRoaXMudGFnT3BlbkNvbHVtbiksXG4gICAgfTtcbiAgfVxuXG4gIGJlZ2luRW5kVGFnKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSB7XG4gICAgICB0eXBlOiAnRW5kVGFnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICBtb2RpZmllcnM6IFtdLFxuICAgICAgY29tbWVudHM6IFtdLFxuICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgbG9jOiB0aGlzLnNvdXJjZS5vZmZzZXRGb3IodGhpcy50YWdPcGVuTGluZSwgdGhpcy50YWdPcGVuQ29sdW1uKSxcbiAgICB9O1xuICB9XG5cbiAgZmluaXNoVGFnKCk6IHZvaWQge1xuICAgIGxldCB0YWcgPSB0aGlzLmZpbmlzaCh0aGlzLmN1cnJlbnRUYWcpO1xuXG4gICAgaWYgKHRhZy50eXBlID09PSAnU3RhcnRUYWcnKSB7XG4gICAgICB0aGlzLmZpbmlzaFN0YXJ0VGFnKCk7XG5cbiAgICAgIGlmICh0YWcubmFtZSA9PT0gJzonKSB7XG4gICAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgbmFtZWQgYmxvY2sgbmFtZWQgZGV0ZWN0ZWQsIHlvdSBtYXkgaGF2ZSBjcmVhdGVkIGEgbmFtZWQgYmxvY2sgd2l0aG91dCBhIG5hbWUsIG9yIHlvdSBtYXkgaGF2ZSBiZWdhbiB5b3VyIG5hbWUgd2l0aCBhIG51bWJlci4gTmFtZWQgYmxvY2tzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGFyZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGxvbmcsIGFuZCBiZWdpbiB3aXRoIGEgbG93ZXIgY2FzZSBsZXR0ZXInLFxuICAgICAgICAgIHRoaXMuc291cmNlLnNwYW5Gb3Ioe1xuICAgICAgICAgICAgc3RhcnQ6IHRoaXMuY3VycmVudFRhZy5sb2MudG9KU09OKCksXG4gICAgICAgICAgICBlbmQ6IHRoaXMub2Zmc2V0KCkudG9KU09OKCksXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZvaWRNYXBbdGFnLm5hbWVdIHx8IHRhZy5zZWxmQ2xvc2luZykge1xuICAgICAgICB0aGlzLmZpbmlzaEVuZFRhZyh0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRhZy50eXBlID09PSAnRW5kVGFnJykge1xuICAgICAgdGhpcy5maW5pc2hFbmRUYWcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmlzaFN0YXJ0VGFnKCk6IHZvaWQge1xuICAgIGxldCB7IG5hbWUsIGF0dHJpYnV0ZXM6IGF0dHJzLCBtb2RpZmllcnMsIGNvbW1lbnRzLCBzZWxmQ2xvc2luZywgbG9jIH0gPSB0aGlzLmZpbmlzaChcbiAgICAgIHRoaXMuY3VycmVudFN0YXJ0VGFnXG4gICAgKTtcblxuICAgIGxldCBlbGVtZW50ID0gYi5lbGVtZW50KHtcbiAgICAgIHRhZzogbmFtZSxcbiAgICAgIHNlbGZDbG9zaW5nLFxuICAgICAgYXR0cnMsXG4gICAgICBtb2RpZmllcnMsXG4gICAgICBjb21tZW50cyxcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIGJsb2NrUGFyYW1zOiBbXSxcbiAgICAgIGxvYyxcbiAgICB9KTtcbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKGVsZW1lbnQpO1xuICB9XG5cbiAgZmluaXNoRW5kVGFnKGlzVm9pZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGxldCB0YWcgPSB0aGlzLmZpbmlzaCh0aGlzLmN1cnJlbnRUYWcpO1xuXG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKSBhcyBBU1R2MS5FbGVtZW50Tm9kZTtcbiAgICBsZXQgcGFyZW50ID0gdGhpcy5jdXJyZW50RWxlbWVudCgpO1xuXG4gICAgdGhpcy52YWxpZGF0ZUVuZFRhZyh0YWcsIGVsZW1lbnQsIGlzVm9pZCk7XG5cbiAgICBlbGVtZW50LmxvYyA9IGVsZW1lbnQubG9jLndpdGhFbmQodGhpcy5vZmZzZXQoKSk7XG4gICAgcGFyc2VFbGVtZW50QmxvY2tQYXJhbXMoZWxlbWVudCk7XG4gICAgYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcbiAgfVxuXG4gIG1hcmtUYWdBc1NlbGZDbG9zaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFRhZy5zZWxmQ2xvc2luZyA9IHRydWU7XG4gIH1cblxuICAvLyBUYWdzIC0gbmFtZVxuXG4gIGFwcGVuZFRvVGFnTmFtZShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRUYWcubmFtZSArPSBjaGFyO1xuICB9XG5cbiAgLy8gVGFncyAtIGF0dHJpYnV0ZXNcblxuICBiZWdpbkF0dHJpYnV0ZSgpOiB2b2lkIHtcbiAgICBsZXQgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZSA9IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgcGFydHM6IFtdLFxuICAgICAgY3VycmVudFBhcnQ6IG51bGwsXG4gICAgICBpc1F1b3RlZDogZmFsc2UsXG4gICAgICBpc0R5bmFtaWM6IGZhbHNlLFxuICAgICAgc3RhcnQ6IG9mZnNldCxcbiAgICAgIHZhbHVlU3Bhbjogb2Zmc2V0LmNvbGxhcHNlZCgpLFxuICAgIH07XG4gIH1cblxuICBhcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IGNoYXI7XG4gIH1cblxuICBiZWdpbkF0dHJpYnV0ZVZhbHVlKGlzUXVvdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50QXR0ci5pc1F1b3RlZCA9IGlzUXVvdGVkO1xuICAgIHRoaXMuc3RhcnRUZXh0UGFydCgpO1xuICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWVTcGFuID0gdGhpcy5vZmZzZXQoKS5jb2xsYXBzZWQoKTtcbiAgfVxuXG4gIGFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IHBhcnRzID0gdGhpcy5jdXJyZW50QXR0ci5wYXJ0cztcbiAgICBsZXQgbGFzdFBhcnQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcblxuICAgIGxldCBjdXJyZW50ID0gdGhpcy5jdXJyZW50QXR0ci5jdXJyZW50UGFydDtcblxuICAgIGlmIChjdXJyZW50KSB7XG4gICAgICBjdXJyZW50LmNoYXJzICs9IGNoYXI7XG5cbiAgICAgIC8vIHVwZGF0ZSBlbmQgbG9jYXRpb24gZm9yIGVhY2ggYWRkZWQgY2hhclxuICAgICAgY3VycmVudC5sb2MgPSBjdXJyZW50LmxvYy53aXRoRW5kKHRoaXMub2Zmc2V0KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbml0aWFsbHkgYXNzdW1lIHRoZSB0ZXh0IG5vZGUgaXMgYSBzaW5nbGUgY2hhclxuICAgICAgbGV0IGxvYzogU291cmNlT2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuICAgICAgLy8gdGhlIHRva2VuaXplciBsaW5lL2NvbHVtbiBoYXZlIGFscmVhZHkgYmVlbiBhZHZhbmNlZCwgY29ycmVjdCBsb2NhdGlvbiBpbmZvXG4gICAgICBpZiAoY2hhciA9PT0gJ1xcbicpIHtcbiAgICAgICAgbG9jID0gbGFzdFBhcnQgPyBsYXN0UGFydC5sb2MuZ2V0RW5kKCkgOiB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlU3Bhbi5nZXRTdGFydCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9jID0gbG9jLm1vdmUoLTEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRBdHRyLmN1cnJlbnRQYXJ0ID0gYi50ZXh0KHsgY2hhcnM6IGNoYXIsIGxvYzogbG9jLmNvbGxhcHNlZCgpIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMuZmluYWxpemVUZXh0UGFydCgpO1xuXG4gICAgbGV0IHRhZyA9IHRoaXMuY3VycmVudFRhZztcbiAgICBsZXQgdG9rZW5pemVyUG9zID0gdGhpcy5vZmZzZXQoKTtcblxuICAgIGlmICh0YWcudHlwZSA9PT0gJ0VuZFRhZycpIHtcbiAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGVuZCB0YWc6IGNsb3NpbmcgdGFnIG11c3Qgbm90IGhhdmUgYXR0cmlidXRlc2AsXG4gICAgICAgIHRoaXMuc291cmNlLnNwYW5Gb3IoeyBzdGFydDogdGFnLmxvYy50b0pTT04oKSwgZW5kOiB0b2tlbml6ZXJQb3MudG9KU09OKCkgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IHsgbmFtZSwgcGFydHMsIHN0YXJ0LCBpc1F1b3RlZCwgaXNEeW5hbWljLCB2YWx1ZVNwYW4gfSA9IHRoaXMuY3VycmVudEF0dHI7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5hc3NlbWJsZUF0dHJpYnV0ZVZhbHVlKHBhcnRzLCBpc1F1b3RlZCwgaXNEeW5hbWljLCBzdGFydC51bnRpbCh0b2tlbml6ZXJQb3MpKTtcbiAgICB2YWx1ZS5sb2MgPSB2YWx1ZVNwYW4ud2l0aEVuZCh0b2tlbml6ZXJQb3MpO1xuXG4gICAgbGV0IGF0dHJpYnV0ZSA9IGIuYXR0cih7IG5hbWUsIHZhbHVlLCBsb2M6IHN0YXJ0LnVudGlsKHRva2VuaXplclBvcykgfSk7XG5cbiAgICB0aGlzLmN1cnJlbnRTdGFydFRhZy5hdHRyaWJ1dGVzLnB1c2goYXR0cmlidXRlKTtcbiAgfVxuXG4gIHJlcG9ydFN5bnRheEVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IobWVzc2FnZSwgdGhpcy5vZmZzZXQoKS5jb2xsYXBzZWQoKSk7XG4gIH1cblxuICBhc3NlbWJsZUNvbmNhdGVuYXRlZFZhbHVlKFxuICAgIHBhcnRzOiAoQVNUdjEuTXVzdGFjaGVTdGF0ZW1lbnQgfCBBU1R2MS5UZXh0Tm9kZSlbXVxuICApOiBBU1R2MS5Db25jYXRTdGF0ZW1lbnQge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBwYXJ0OiBBU1R2MS5CYXNlTm9kZSA9IHBhcnRzW2ldO1xuXG4gICAgICBpZiAocGFydC50eXBlICE9PSAnTXVzdGFjaGVTdGF0ZW1lbnQnICYmIHBhcnQudHlwZSAhPT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICdVbnN1cHBvcnRlZCBub2RlIGluIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWU6ICcgKyBwYXJ0Wyd0eXBlJ10sXG4gICAgICAgICAgcGFydC5sb2NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3NlcnRQcmVzZW50KHBhcnRzLCBgdGhlIGNvbmNhdGVuYXRpb24gcGFydHMgb2YgYW4gZWxlbWVudCBzaG91bGQgbm90IGJlIGVtcHR5YCk7XG5cbiAgICBsZXQgZmlyc3QgPSBwYXJ0c1swXTtcbiAgICBsZXQgbGFzdCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuXG4gICAgcmV0dXJuIGIuY29uY2F0KHBhcnRzLCB0aGlzLnNvdXJjZS5zcGFuRm9yKGZpcnN0LmxvYykuZXh0ZW5kKHRoaXMuc291cmNlLnNwYW5Gb3IobGFzdC5sb2MpKSk7XG4gIH1cblxuICB2YWxpZGF0ZUVuZFRhZyhcbiAgICB0YWc6IFRhZzwnU3RhcnRUYWcnIHwgJ0VuZFRhZyc+LFxuICAgIGVsZW1lbnQ6IEFTVHYxLkVsZW1lbnROb2RlLFxuICAgIHNlbGZDbG9zaW5nOiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGxldCBlcnJvcjtcblxuICAgIGlmICh2b2lkTWFwW3RhZy5uYW1lXSAmJiAhc2VsZkNsb3NpbmcpIHtcbiAgICAgIC8vIEVuZ1RhZyBpcyBhbHNvIGNhbGxlZCBieSBTdGFydFRhZyBmb3Igdm9pZCBhbmQgc2VsZi1jbG9zaW5nIHRhZ3MgKGkuZS5cbiAgICAgIC8vIDxpbnB1dD4gb3IgPGJyIC8+LCBzbyB3ZSBuZWVkIHRvIGNoZWNrIGZvciB0aGF0IGhlcmUuIE90aGVyd2lzZSwgd2Ugd291bGRcbiAgICAgIC8vIHRocm93IGFuIGVycm9yIGZvciB0aG9zZSBjYXNlcy5cbiAgICAgIGVycm9yID0gYDwke3RhZy5uYW1lfT4gZWxlbWVudHMgZG8gbm90IG5lZWQgZW5kIHRhZ3MuIFlvdSBzaG91bGQgcmVtb3ZlIGl0YDtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVycm9yID0gYENsb3NpbmcgdGFnIDwvJHt0YWcubmFtZX0+IHdpdGhvdXQgYW4gb3BlbiB0YWdgO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC50YWcgIT09IHRhZy5uYW1lKSB7XG4gICAgICBlcnJvciA9IGBDbG9zaW5nIHRhZyA8LyR7dGFnLm5hbWV9PiBkaWQgbm90IG1hdGNoIGxhc3Qgb3BlbiB0YWcgPCR7ZWxlbWVudC50YWd9PiAob24gbGluZSAke2VsZW1lbnQubG9jLnN0YXJ0UG9zaXRpb24ubGluZX0pYDtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoZXJyb3IsIHRhZy5sb2MpO1xuICAgIH1cbiAgfVxuXG4gIGFzc2VtYmxlQXR0cmlidXRlVmFsdWUoXG4gICAgcGFydHM6IChBU1R2MS5NdXN0YWNoZVN0YXRlbWVudCB8IEFTVHYxLlRleHROb2RlKVtdLFxuICAgIGlzUXVvdGVkOiBib29sZWFuLFxuICAgIGlzRHluYW1pYzogYm9vbGVhbixcbiAgICBzcGFuOiBTb3VyY2VTcGFuXG4gICk6IEFTVHYxLkNvbmNhdFN0YXRlbWVudCB8IEFTVHYxLk11c3RhY2hlU3RhdGVtZW50IHwgQVNUdjEuVGV4dE5vZGUge1xuICAgIGlmIChpc0R5bmFtaWMpIHtcbiAgICAgIGlmIChpc1F1b3RlZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hc3NlbWJsZUNvbmNhdGVuYXRlZFZhbHVlKHBhcnRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJ0cy5sZW5ndGggPT09IDEgfHxcbiAgICAgICAgICAocGFydHMubGVuZ3RoID09PSAyICYmXG4gICAgICAgICAgICBwYXJ0c1sxXS50eXBlID09PSAnVGV4dE5vZGUnICYmXG4gICAgICAgICAgICAocGFydHNbMV0gYXMgQVNUdjEuVGV4dE5vZGUpLmNoYXJzID09PSAnLycpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBwYXJ0c1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYEFuIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgbXVzdGFjaGUsIGAgK1xuICAgICAgICAgICAgICBgcHJlY2VkZWQgYnkgd2hpdGVzcGFjZSBvciBhICc9JyBjaGFyYWN0ZXIsIGFuZCBgICtcbiAgICAgICAgICAgICAgYGZvbGxvd2VkIGJ5IHdoaXRlc3BhY2UsIGEgJz4nIGNoYXJhY3Rlciwgb3IgJy8+J2AsXG4gICAgICAgICAgICBzcGFuXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFydHMubGVuZ3RoID4gMCA/IHBhcnRzWzBdIDogYi50ZXh0KHsgY2hhcnM6ICcnLCBsb2M6IHNwYW4gfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICBBU1RQbHVnaW5zIGNhbiBtYWtlIGNoYW5nZXMgdG8gdGhlIEdsaW1tZXIgdGVtcGxhdGUgQVNUIGJlZm9yZVxuICBjb21waWxhdGlvbiBiZWdpbnMuXG4qL1xuZXhwb3J0IGludGVyZmFjZSBBU1RQbHVnaW5CdWlsZGVyPFRFbnYgZXh0ZW5kcyBBU1RQbHVnaW5FbnZpcm9ubWVudCA9IEFTVFBsdWdpbkVudmlyb25tZW50PiB7XG4gIChlbnY6IFRFbnYpOiBBU1RQbHVnaW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVNUUGx1Z2luIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2aXNpdG9yOiBOb2RlVmlzaXRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBU1RQbHVnaW5FbnZpcm9ubWVudCB7XG4gIG1ldGE/OiBvYmplY3Q7XG4gIHN5bnRheDogU3ludGF4O1xufVxuXG5pbnRlcmZhY2UgSGFuZGxlYmFyc1BhcnNlT3B0aW9ucyB7XG4gIHNyY05hbWU/OiBzdHJpbmc7XG4gIGlnbm9yZVN0YW5kYWxvbmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZWNvbXBpbGVPcHRpb25zIGV4dGVuZHMgUHJlcHJvY2Vzc09wdGlvbnMge1xuICBjdXN0b21pemVDb21wb25lbnROYW1lPyhpbnB1dDogc3RyaW5nKTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXByb2Nlc3NPcHRpb25zIHtcbiAgc3RyaWN0TW9kZT86IGJvb2xlYW47XG4gIGxvY2Fscz86IHN0cmluZ1tdO1xuICBtZXRhPzoge1xuICAgIG1vZHVsZU5hbWU/OiBzdHJpbmc7XG4gIH07XG4gIHBsdWdpbnM/OiB7XG4gICAgYXN0PzogQVNUUGx1Z2luQnVpbGRlcltdO1xuICB9O1xuICBwYXJzZU9wdGlvbnM/OiBIYW5kbGViYXJzUGFyc2VPcHRpb25zO1xuICBjdXN0b21pemVDb21wb25lbnROYW1lPyhpbnB1dDogc3RyaW5nKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgIFVzZWZ1bCBmb3Igc3BlY2lmeWluZyBhIGdyb3VwIG9mIG9wdGlvbnMgdG9nZXRoZXIuXG5cbiAgICBXaGVuIGAnY29kZW1vZCdgIHdlIGRpc2FibGUgYWxsIHdoaXRlc3BhY2UgY29udHJvbCBpbiBoYW5kbGViYXJzXG4gICAgKHRvIHByZXNlcnZlIGFzIG11Y2ggYXMgcG9zc2libGUpIGFuZCB3ZSBhbHNvIGF2b2lkIGFueVxuICAgIGVzY2FwaW5nL3VuZXNjYXBpbmcgb2YgSFRNTCBlbnRpdHkgY29kZXMuXG4gICAqL1xuICBtb2RlPzogJ2NvZGVtb2QnIHwgJ3ByZWNvbXBpbGUnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN5bnRheCB7XG4gIHBhcnNlOiB0eXBlb2YgcHJlcHJvY2VzcztcbiAgYnVpbGRlcnM6IHR5cGVvZiBwdWJsaWNCdWlsZGVyO1xuICBwcmludDogdHlwZW9mIHByaW50O1xuICB0cmF2ZXJzZTogdHlwZW9mIHRyYXZlcnNlO1xuICBXYWxrZXI6IHR5cGVvZiBXYWxrZXI7XG59XG5cbmNvbnN0IHN5bnRheDogU3ludGF4ID0ge1xuICBwYXJzZTogcHJlcHJvY2VzcyxcbiAgYnVpbGRlcnM6IHB1YmxpY0J1aWxkZXIsXG4gIHByaW50LFxuICB0cmF2ZXJzZSxcbiAgV2Fsa2VyLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByZXByb2Nlc3MoXG4gIGlucHV0OiBzdHJpbmcgfCBTb3VyY2UgfCBIQlMuUHJvZ3JhbSxcbiAgb3B0aW9uczogUHJlcHJvY2Vzc09wdGlvbnMgPSB7fVxuKTogQVNUdjEuVGVtcGxhdGUge1xuICBsZXQgbW9kZSA9IG9wdGlvbnMubW9kZSB8fCAncHJlY29tcGlsZSc7XG5cbiAgbGV0IHNvdXJjZTogU291cmNlO1xuICBsZXQgYXN0OiBIQlMuUHJvZ3JhbTtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2UgPSBuZXcgU291cmNlKGlucHV0LCBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWUpO1xuXG4gICAgaWYgKG1vZGUgPT09ICdjb2RlbW9kJykge1xuICAgICAgYXN0ID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dCwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpIGFzIEhCUy5Qcm9ncmFtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3QgPSBwYXJzZShpbnB1dCwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpIGFzIEhCUy5Qcm9ncmFtO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFNvdXJjZSkge1xuICAgIHNvdXJjZSA9IGlucHV0O1xuXG4gICAgaWYgKG1vZGUgPT09ICdjb2RlbW9kJykge1xuICAgICAgYXN0ID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dC5zb3VyY2UsIG9wdGlvbnMucGFyc2VPcHRpb25zKSBhcyBIQlMuUHJvZ3JhbTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXN0ID0gcGFyc2UoaW5wdXQuc291cmNlLCBvcHRpb25zLnBhcnNlT3B0aW9ucykgYXMgSEJTLlByb2dyYW07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNvdXJjZSA9IG5ldyBTb3VyY2UoJycsIG9wdGlvbnMubWV0YT8ubW9kdWxlTmFtZSk7XG4gICAgYXN0ID0gaW5wdXQ7XG4gIH1cblxuICBsZXQgZW50aXR5UGFyc2VyID0gdW5kZWZpbmVkO1xuICBpZiAobW9kZSA9PT0gJ2NvZGVtb2QnKSB7XG4gICAgZW50aXR5UGFyc2VyID0gbmV3IEVudGl0eVBhcnNlcih7fSk7XG4gIH1cblxuICBsZXQgb2Zmc2V0cyA9IFNvdXJjZVNwYW4uZm9yQ2hhclBvc2l0aW9ucyhzb3VyY2UsIDAsIHNvdXJjZS5zb3VyY2UubGVuZ3RoKTtcbiAgYXN0LmxvYyA9IHtcbiAgICBzb3VyY2U6ICcocHJvZ3JhbSknLFxuICAgIHN0YXJ0OiBvZmZzZXRzLnN0YXJ0UG9zaXRpb24sXG4gICAgZW5kOiBvZmZzZXRzLmVuZFBvc2l0aW9uLFxuICB9O1xuXG4gIGxldCBwcm9ncmFtID0gbmV3IFRva2VuaXplckV2ZW50SGFuZGxlcnMoc291cmNlLCBlbnRpdHlQYXJzZXIsIG1vZGUpLmFjY2VwdFRlbXBsYXRlKGFzdCk7XG5cbiAgaWYgKG9wdGlvbnMuc3RyaWN0TW9kZSkge1xuICAgIHByb2dyYW0uYmxvY2tQYXJhbXMgPSBvcHRpb25zLmxvY2FscyA/PyBbXTtcbiAgfVxuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMucGx1Z2lucyAmJiBvcHRpb25zLnBsdWdpbnMuYXN0KSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBvcHRpb25zLnBsdWdpbnMuYXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgbGV0IHRyYW5zZm9ybSA9IG9wdGlvbnMucGx1Z2lucy5hc3RbaV07XG4gICAgICBsZXQgZW52OiBBU1RQbHVnaW5FbnZpcm9ubWVudCA9IGFzc2lnbih7fSwgb3B0aW9ucywgeyBzeW50YXggfSwgeyBwbHVnaW5zOiB1bmRlZmluZWQgfSk7XG5cbiAgICAgIGxldCBwbHVnaW5SZXN1bHQgPSB0cmFuc2Zvcm0oZW52KTtcblxuICAgICAgdHJhdmVyc2UocHJvZ3JhbSwgcGx1Z2luUmVzdWx0LnZpc2l0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcm9ncmFtO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLFNBQUEsYUFBQSxFQUFBLE1BQUEsUUFBQSxlQUFBO0FBQ0EsU0FBQSxLQUFBLEVBQUEsc0JBQUEsUUFBQSxvQkFBQTtBQUNBLFNBQUEsWUFBQSxRQUFBLHVCQUFBO0FBRUEsT0FBQSxLQUFBLE1BQUEscUJBQUE7QUFDQSxTQUFBLE9BQUEsUUFBQSx1QkFBQTtBQUVBLFNBQUEsTUFBQSxRQUFBLGtCQUFBO0FBQ0EsU0FBQSxVQUFBLFFBQUEsZ0JBQUE7QUFDQSxTQUFBLG1CQUFBLFFBQUEsaUJBQUE7QUFDQSxPQUFBLFFBQUEsTUFBQSx1QkFBQTtBQUVBLE9BQUEsTUFBQSxNQUFBLHFCQUFBO0FBQ0EsU0FBQSxXQUFBLEVBQUEsdUJBQUEsUUFBQSxVQUFBO0FBR0EsT0FBQSxDQUFBLE1BQUEsdUJBQUE7QUFDQSxPQUFBLGFBQUEsTUFBQSx1QkFBQTtBQUNBLFNBQUEsc0JBQUEsUUFBQSw0QkFBQTtBQUVBLFdBQU0sc0JBQU47QUFBQTs7QUFBQSxvQ0FBQTtBQUFBOzs7QUFDVSxVQUFBLFdBQUEsR0FBQSxDQUFBO0FBQ0EsVUFBQSxhQUFBLEdBQUEsQ0FBQTtBQUZWO0FBa1NDOztBQWxTRDs7QUFBQSxTQUlFLEtBSkYsR0FJRSxpQkFBSztBQUNILFNBQUEsV0FBQSxHQUFBLElBQUE7QUFMOEQsR0FBbEUsQ0FRRTtBQVJGOztBQUFBLFNBVUUsWUFWRixHQVVFLHdCQUFZO0FBQ1YsU0FBQSxXQUFBLEdBQW1CLENBQUMsQ0FBRCxPQUFBLENBQUEsRUFBQSxFQUFjLEtBQUEsTUFBQSxDQUFBLFNBQUEsQ0FBc0IsS0FBdEIsV0FBQSxFQUF3QyxLQUF6RSxhQUFpQyxDQUFkLENBQW5CO0FBQ0QsR0FaSDs7QUFBQSxTQWNFLG1CQWRGLEdBY0UsNkJBQW1CLEtBQW5CLEVB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RUFBQTtBQUNEOztBQUVELE1BQUksT0FBTyxJQUFJLE9BQU8sQ0FBbEIsT0FBQSxJQUE4QixPQUFPLENBQVAsT0FBQSxDQUFsQyxHQUFBLEVBQXVEO0FBQ3JELFNBQUssSUFBSSxDQUFDLEdBQUwsQ0FBQSxFQUFXLENBQUMsR0FBRyxPQUFPLENBQVAsT0FBQSxDQUFBLEdBQUEsQ0FBcEIsTUFBQSxFQUFnRCxDQUFDLEdBQWpELENBQUEsRUFBdUQsQ0FBdkQsRUFBQSxFQUE0RDtBQUMxRCxVQUFJLFNBQVMsR0FBRyxPQUFPLENBQVAsT0FBQSxDQUFBLEdBQUEsQ0FBaEIsQ0FBZ0IsQ0FBaEI7QUFDQSxVQUFJLEdBQUcsR0FBeUIsTUFBTSxDQUFBLEVBQUEsRUFBQSxPQUFBLEVBQWM7QUFBRSxRQUFBLE1BQUEsRUFBQTtBQUFGLE9BQWQsRUFBMEI7QUFBRSxRQUFBLE9BQU8sRUFBRTtBQUFYLE9BQTFCLENBQXRDO0FBRUEsVUFBSSxZQUFZLEdBQUcsU0FBUyxDQUE1QixHQUE0QixDQUE1QjtBQUVBLE1BQUEsUUFBUSxDQUFBLE9BQUEsRUFBVSxZQUFZLENBQTlCLE9BQVEsQ0FBUjtBQUNEO0FBQ0Y7O0FBRUQsU0FBQSxPQUFBO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGFzc2VydFByZXNlbnQsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgcGFyc2UsIHBhcnNlV2l0aG91dFByb2Nlc3NpbmcgfSBmcm9tICdAaGFuZGxlYmFycy9wYXJzZXInO1xuaW1wb3J0IHsgRW50aXR5UGFyc2VyIH0gZnJvbSAnc2ltcGxlLWh0bWwtdG9rZW5pemVyJztcblxuaW1wb3J0IHByaW50IGZyb20gJy4uL2dlbmVyYXRpb24vcHJpbnQnO1xuaW1wb3J0IHsgdm9pZE1hcCB9IGZyb20gJy4uL2dlbmVyYXRpb24vcHJpbnRlcic7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi9wYXJzZXInO1xuaW1wb3J0IHsgU291cmNlIH0gZnJvbSAnLi4vc291cmNlL3NvdXJjZSc7XG5pbXBvcnQgeyBTb3VyY2VPZmZzZXQsIFNvdXJjZVNwYW4gfSBmcm9tICcuLi9zb3VyY2Uvc3Bhbic7XG5pbXBvcnQgeyBnZW5lcmF0ZVN5bnRheEVycm9yIH0gZnJvbSAnLi4vc3ludGF4LWVycm9yJztcbmltcG9ydCB0cmF2ZXJzZSBmcm9tICcuLi90cmF2ZXJzYWwvdHJhdmVyc2UnO1xuaW1wb3J0IHsgTm9kZVZpc2l0b3IgfSBmcm9tICcuLi90cmF2ZXJzYWwvdmlzaXRvcic7XG5pbXBvcnQgV2Fsa2VyIGZyb20gJy4uL3RyYXZlcnNhbC93YWxrZXInO1xuaW1wb3J0IHsgYXBwZW5kQ2hpbGQsIHBhcnNlRWxlbWVudEJsb2NrUGFyYW1zIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0ICogYXMgQVNUdjEgZnJvbSAnLi4vdjEvYXBpJztcbmltcG9ydCAqIGFzIEhCUyBmcm9tICcuLi92MS9oYW5kbGViYXJzLWFzdCc7XG5pbXBvcnQgYiBmcm9tICcuLi92MS9wYXJzZXItYnVpbGRlcnMnO1xuaW1wb3J0IHB1YmxpY0J1aWxkZXIgZnJvbSAnLi4vdjEvcHVibGljLWJ1aWxkZXJzJztcbmltcG9ydCB7IEhhbmRsZWJhcnNOb2RlVmlzaXRvcnMgfSBmcm9tICcuL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBUb2tlbml6ZXJFdmVudEhhbmRsZXJzIGV4dGVuZHMgSGFuZGxlYmFyc05vZGVWaXNpdG9ycyB7XG4gIHByaXZhdGUgdGFnT3BlbkxpbmUgPSAwO1xuICBwcml2YXRlIHRhZ09wZW5Db2x1bW4gPSAwO1xuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBudWxsO1xuICB9XG5cbiAgLy8gQ29tbWVudFxuXG4gIGJlZ2luQ29tbWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gYi5jb21tZW50KCcnLCB0aGlzLnNvdXJjZS5vZmZzZXRGb3IodGhpcy50YWdPcGVuTGluZSwgdGhpcy50YWdPcGVuQ29sdW1uKSk7XG4gIH1cblxuICBhcHBlbmRUb0NvbW1lbnREYXRhKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudENvbW1lbnQudmFsdWUgKz0gY2hhcjtcbiAgfVxuXG4gIGZpbmlzaENvbW1lbnQoKTogdm9pZCB7XG4gICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCB0aGlzLmZpbmlzaCh0aGlzLmN1cnJlbnRDb21tZW50KSk7XG4gIH1cblxuICAvLyBEYXRhXG5cbiAgYmVnaW5EYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBiLnRleHQoe1xuICAgICAgY2hhcnM6ICcnLFxuICAgICAgbG9jOiB0aGlzLm9mZnNldCgpLmNvbGxhcHNlZCgpLFxuICAgIH0pO1xuICB9XG5cbiAgYXBwZW5kVG9EYXRhKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGEuY2hhcnMgKz0gY2hhcjtcbiAgfVxuXG4gIGZpbmlzaERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50RGF0YS5sb2MgPSB0aGlzLmN1cnJlbnREYXRhLmxvYy53aXRoRW5kKHRoaXMub2Zmc2V0KCkpO1xuXG4gICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCB0aGlzLmN1cnJlbnREYXRhKTtcbiAgfVxuXG4gIC8vIFRhZ3MgLSBiYXNpY1xuXG4gIHRhZ09wZW4oKTogdm9pZCB7XG4gICAgdGhpcy50YWdPcGVuTGluZSA9IHRoaXMudG9rZW5pemVyLmxpbmU7XG4gICAgdGhpcy50YWdPcGVuQ29sdW1uID0gdGhpcy50b2tlbml6ZXIuY29sdW1uO1xuICB9XG5cbiAgYmVnaW5TdGFydFRhZygpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0ge1xuICAgICAgdHlwZTogJ1N0YXJ0VGFnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICBtb2RpZmllcnM6IFtdLFxuICAgICAgY29tbWVudHM6IFtdLFxuICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgbG9jOiB0aGlzLnNvdXJjZS5vZmZzZXRGb3IodGhpcy50YWdPcGVuTGluZSwgdGhpcy50YWdPcGVuQ29sdW1uKSxcbiAgICB9O1xuICB9XG5cbiAgYmVnaW5FbmRUYWcoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IHtcbiAgICAgIHR5cGU6ICdFbmRUYWcnLFxuICAgICAgbmFtZTogJycsXG4gICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgIG1vZGlmaWVyczogW10sXG4gICAgICBjb21tZW50czogW10sXG4gICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICBsb2M6IHRoaXMuc291cmNlLm9mZnNldEZvcih0aGlzLnRhZ09wZW5MaW5lLCB0aGlzLnRhZ09wZW5Db2x1bW4pLFxuICAgIH07XG4gIH1cblxuICBmaW5pc2hUYWcoKTogdm9pZCB7XG4gICAgbGV0IHRhZyA9IHRoaXMuZmluaXNoKHRoaXMuY3VycmVudFRhZyk7XG5cbiAgICBpZiAodGFnLnR5cGUgPT09ICdTdGFydFRhZycpIHtcbiAgICAgIHRoaXMuZmluaXNoU3RhcnRUYWcoKTtcblxuICAgICAgaWYgKHRhZy5uYW1lID09PSAnOicpIHtcbiAgICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAnSW52YWxpZCBuYW1lZCBibG9jayBuYW1lZCBkZXRlY3RlZCwgeW91IG1heSBoYXZlIGNyZWF0ZWQgYSBuYW1lZCBibG9jayB3aXRob3V0IGEgbmFtZSwgb3IgeW91IG1heSBoYXZlIGJlZ2FuIHlvdXIgbmFtZSB3aXRoIGEgbnVtYmVyLiBOYW1lZCBibG9ja3MgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYXJlIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgbG9uZywgYW5kIGJlZ2luIHdpdGggYSBsb3dlciBjYXNlIGxldHRlcicsXG4gICAgICAgICAgdGhpcy5zb3VyY2Uuc3BhbkZvcih7XG4gICAgICAgICAgICBzdGFydDogdGhpcy5jdXJyZW50VGFnLmxvYy50b0pTT04oKSxcbiAgICAgICAgICAgIGVuZDogdGhpcy5vZmZzZXQoKS50b0pTT04oKSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodm9pZE1hcFt0YWcubmFtZV0gfHwgdGFnLnNlbGZDbG9zaW5nKSB7XG4gICAgICAgIHRoaXMuZmluaXNoRW5kVGFnKHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGFnLnR5cGUgPT09ICdFbmRUYWcnKSB7XG4gICAgICB0aGlzLmZpbmlzaEVuZFRhZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgZmluaXNoU3RhcnRUYWcoKTogdm9pZCB7XG4gICAgbGV0IHsgbmFtZSwgYXR0cmlidXRlczogYXR0cnMsIG1vZGlmaWVycywgY29tbWVudHMsIHNlbGZDbG9zaW5nLCBsb2MgfSA9IHRoaXMuZmluaXNoKFxuICAgICAgdGhpcy5jdXJyZW50U3RhcnRUYWdcbiAgICApO1xuXG4gICAgbGV0IGVsZW1lbnQgPSBiLmVsZW1lbnQoe1xuICAgICAgdGFnOiBuYW1lLFxuICAgICAgc2VsZkNsb3NpbmcsXG4gICAgICBhdHRycyxcbiAgICAgIG1vZGlmaWVycyxcbiAgICAgIGNvbW1lbnRzLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgYmxvY2tQYXJhbXM6IFtdLFxuICAgICAgbG9jLFxuICAgIH0pO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2goZWxlbWVudCk7XG4gIH1cblxuICBmaW5pc2hFbmRUYWcoaXNWb2lkOiBib29sZWFuKTogdm9pZCB7XG4gICAgbGV0IHRhZyA9IHRoaXMuZmluaXNoKHRoaXMuY3VycmVudFRhZyk7XG5cbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpIGFzIEFTVHYxLkVsZW1lbnROb2RlO1xuICAgIGxldCBwYXJlbnQgPSB0aGlzLmN1cnJlbnRFbGVtZW50KCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlRW5kVGFnKHRhZywgZWxlbWVudCwgaXNWb2lkKTtcblxuICAgIGVsZW1lbnQubG9jID0gZWxlbWVudC5sb2Mud2l0aEVuZCh0aGlzLm9mZnNldCgpKTtcbiAgICBwYXJzZUVsZW1lbnRCbG9ja1BhcmFtcyhlbGVtZW50KTtcbiAgICBhcHBlbmRDaGlsZChwYXJlbnQsIGVsZW1lbnQpO1xuICB9XG5cbiAgbWFya1RhZ0FzU2VsZkNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50VGFnLnNlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIFRhZ3MgLSBuYW1lXG5cbiAgYXBwZW5kVG9UYWdOYW1lKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFRhZy5uYW1lICs9IGNoYXI7XG4gIH1cblxuICAvLyBUYWdzIC0gYXR0cmlidXRlc1xuXG4gIGJlZ2luQXR0cmlidXRlKCk6IHZvaWQge1xuICAgIGxldCBvZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuXG4gICAgdGhpcy5jdXJyZW50QXR0cmlidXRlID0ge1xuICAgICAgbmFtZTogJycsXG4gICAgICBwYXJ0czogW10sXG4gICAgICBjdXJyZW50UGFydDogbnVsbCxcbiAgICAgIGlzUXVvdGVkOiBmYWxzZSxcbiAgICAgIGlzRHluYW1pYzogZmFsc2UsXG4gICAgICBzdGFydDogb2Zmc2V0LFxuICAgICAgdmFsdWVTcGFuOiBvZmZzZXQuY29sbGFwc2VkKCksXG4gICAgfTtcbiAgfVxuXG4gIGFwcGVuZFRvQXR0cmlidXRlTmFtZShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gY2hhcjtcbiAgfVxuXG4gIGJlZ2luQXR0cmlidXRlVmFsdWUoaXNRdW90ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyLmlzUXVvdGVkID0gaXNRdW90ZWQ7XG4gICAgdGhpcy5zdGFydFRleHRQYXJ0KCk7XG4gICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZVNwYW4gPSB0aGlzLm9mZnNldCgpLmNvbGxhcHNlZCgpO1xuICB9XG5cbiAgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgcGFydHMgPSB0aGlzLmN1cnJlbnRBdHRyLnBhcnRzO1xuICAgIGxldCBsYXN0UGFydCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuXG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmN1cnJlbnRBdHRyLmN1cnJlbnRQYXJ0O1xuXG4gICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgIGN1cnJlbnQuY2hhcnMgKz0gY2hhcjtcblxuICAgICAgLy8gdXBkYXRlIGVuZCBsb2NhdGlvbiBmb3IgZWFjaCBhZGRlZCBjaGFyXG4gICAgICBjdXJyZW50LmxvYyA9IGN1cnJlbnQubG9jLndpdGhFbmQodGhpcy5vZmZzZXQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluaXRpYWxseSBhc3N1bWUgdGhlIHRleHQgbm9kZSBpcyBhIHNpbmdsZSBjaGFyXG4gICAgICBsZXQgbG9jOiBTb3VyY2VPZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuXG4gICAgICAvLyB0aGUgdG9rZW5pemVyIGxpbmUvY29sdW1uIGhhdmUgYWxyZWFkeSBiZWVuIGFkdmFuY2VkLCBjb3JyZWN0IGxvY2F0aW9uIGluZm9cbiAgICAgIGlmIChjaGFyID09PSAnXFxuJykge1xuICAgICAgICBsb2MgPSBsYXN0UGFydCA/IGxhc3RQYXJ0LmxvYy5nZXRFbmQoKSA6IHRoaXMuY3VycmVudEF0dHIudmFsdWVTcGFuLmdldFN0YXJ0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2MgPSBsb2MubW92ZSgtMSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudEF0dHIuY3VycmVudFBhcnQgPSBiLnRleHQoeyBjaGFyczogY2hhciwgbG9jOiBsb2MuY29sbGFwc2VkKCkgfSk7XG4gICAgfVxuICB9XG5cbiAgZmluaXNoQXR0cmlidXRlVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5maW5hbGl6ZVRleHRQYXJ0KCk7XG5cbiAgICBsZXQgdGFnID0gdGhpcy5jdXJyZW50VGFnO1xuICAgIGxldCB0b2tlbml6ZXJQb3MgPSB0aGlzLm9mZnNldCgpO1xuXG4gICAgaWYgKHRhZy50eXBlID09PSAnRW5kVGFnJykge1xuICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgYEludmFsaWQgZW5kIHRhZzogY2xvc2luZyB0YWcgbXVzdCBub3QgaGF2ZSBhdHRyaWJ1dGVzYCxcbiAgICAgICAgdGhpcy5zb3VyY2Uuc3BhbkZvcih7IHN0YXJ0OiB0YWcubG9jLnRvSlNPTigpLCBlbmQ6IHRva2VuaXplclBvcy50b0pTT04oKSB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgeyBuYW1lLCBwYXJ0cywgc3RhcnQsIGlzUXVvdGVkLCBpc0R5bmFtaWMsIHZhbHVlU3BhbiB9ID0gdGhpcy5jdXJyZW50QXR0cjtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmFzc2VtYmxlQXR0cmlidXRlVmFsdWUocGFydHMsIGlzUXVvdGVkLCBpc0R5bmFtaWMsIHN0YXJ0LnVudGlsKHRva2VuaXplclBvcykpO1xuICAgIHZhbHVlLmxvYyA9IHZhbHVlU3Bhbi53aXRoRW5kKHRva2VuaXplclBvcyk7XG5cbiAgICBsZXQgYXR0cmlidXRlID0gYi5hdHRyKHsgbmFtZSwgdmFsdWUsIGxvYzogc3RhcnQudW50aWwodG9rZW5pemVyUG9zKSB9KTtcblxuICAgIHRoaXMuY3VycmVudFN0YXJ0VGFnLmF0dHJpYnV0ZXMucHVzaChhdHRyaWJ1dGUpO1xuICB9XG5cbiAgcmVwb3J0U3ludGF4RXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihtZXNzYWdlLCB0aGlzLm9mZnNldCgpLmNvbGxhcHNlZCgpKTtcbiAgfVxuXG4gIGFzc2VtYmxlQ29uY2F0ZW5hdGVkVmFsdWUoXG4gICAgcGFydHM6IChBU1R2MS5NdXN0YWNoZVN0YXRlbWVudCB8IEFTVHYxLlRleHROb2RlKVtdXG4gICk6IEFTVHYxLkNvbmNhdFN0YXRlbWVudCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHBhcnQ6IEFTVHYxLkJhc2VOb2RlID0gcGFydHNbaV07XG5cbiAgICAgIGlmIChwYXJ0LnR5cGUgIT09ICdNdXN0YWNoZVN0YXRlbWVudCcgJiYgcGFydC50eXBlICE9PSAnVGV4dE5vZGUnKSB7XG4gICAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgJ1Vuc3VwcG9ydGVkIG5vZGUgaW4gcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZTogJyArIHBhcnRbJ3R5cGUnXSxcbiAgICAgICAgICBwYXJ0LmxvY1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzc2VydFByZXNlbnQocGFydHMsIGB0aGUgY29uY2F0ZW5hdGlvbiBwYXJ0cyBvZiBhbiBlbGVtZW50IHNob3VsZCBub3QgYmUgZW1wdHlgKTtcblxuICAgIGxldCBmaXJzdCA9IHBhcnRzWzBdO1xuICAgIGxldCBsYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gYi5jb25jYXQocGFydHMsIHRoaXMuc291cmNlLnNwYW5Gb3IoZmlyc3QubG9jKS5leHRlbmQodGhpcy5zb3VyY2Uuc3BhbkZvcihsYXN0LmxvYykpKTtcbiAgfVxuXG4gIHZhbGlkYXRlRW5kVGFnKFxuICAgIHRhZzogVGFnPCdTdGFydFRhZycgfCAnRW5kVGFnJz4sXG4gICAgZWxlbWVudDogQVNUdjEuRWxlbWVudE5vZGUsXG4gICAgc2VsZkNsb3Npbmc6IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgbGV0IGVycm9yO1xuXG4gICAgaWYgKHZvaWRNYXBbdGFnLm5hbWVdICYmICFzZWxmQ2xvc2luZykge1xuICAgICAgLy8gRW5nVGFnIGlzIGFsc28gY2FsbGVkIGJ5IFN0YXJ0VGFnIGZvciB2b2lkIGFuZCBzZWxmLWNsb3NpbmcgdGFncyAoaS5lLlxuICAgICAgLy8gPGlucHV0PiBvciA8YnIgLz4sIHNvIHdlIG5lZWQgdG8gY2hlY2sgZm9yIHRoYXQgaGVyZS4gT3RoZXJ3aXNlLCB3ZSB3b3VsZFxuICAgICAgLy8gdGhyb3cgYW4gZXJyb3IgZm9yIHRob3NlIGNhc2VzLlxuICAgICAgZXJyb3IgPSBgPCR7dGFnLm5hbWV9PiBlbGVtZW50cyBkbyBub3QgbmVlZCBlbmQgdGFncy4gWW91IHNob3VsZCByZW1vdmUgaXRgO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC50YWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBgQ2xvc2luZyB0YWcgPC8ke3RhZy5uYW1lfT4gd2l0aG91dCBhbiBvcGVuIHRhZ2A7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LnRhZyAhPT0gdGFnLm5hbWUpIHtcbiAgICAgIGVycm9yID0gYENsb3NpbmcgdGFnIDwvJHt0YWcubmFtZX0+IGRpZCBub3QgbWF0Y2ggbGFzdCBvcGVuIHRhZyA8JHtlbGVtZW50LnRhZ30+IChvbiBsaW5lICR7ZWxlbWVudC5sb2Muc3RhcnRQb3NpdGlvbi5saW5lfSlgO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgdGhyb3cgZ2VuZXJhdGVTeW50YXhFcnJvcihlcnJvciwgdGFnLmxvYyk7XG4gICAgfVxuICB9XG5cbiAgYXNzZW1ibGVBdHRyaWJ1dGVWYWx1ZShcbiAgICBwYXJ0czogKEFTVHYxLk11c3RhY2hlU3RhdGVtZW50IHwgQVNUdjEuVGV4dE5vZGUpW10sXG4gICAgaXNRdW90ZWQ6IGJvb2xlYW4sXG4gICAgaXNEeW5hbWljOiBib29sZWFuLFxuICAgIHNwYW46IFNvdXJjZVNwYW5cbiAgKTogQVNUdjEuQ29uY2F0U3RhdGVtZW50IHwgQVNUdjEuTXVzdGFjaGVTdGF0ZW1lbnQgfCBBU1R2MS5UZXh0Tm9kZSB7XG4gICAgaWYgKGlzRHluYW1pYykge1xuICAgICAgaWYgKGlzUXVvdGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzc2VtYmxlQ29uY2F0ZW5hdGVkVmFsdWUocGFydHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcnRzLmxlbmd0aCA9PT0gMSB8fFxuICAgICAgICAgIChwYXJ0cy5sZW5ndGggPT09IDIgJiZcbiAgICAgICAgICAgIHBhcnRzWzFdLnR5cGUgPT09ICdUZXh0Tm9kZScgJiZcbiAgICAgICAgICAgIChwYXJ0c1sxXSBhcyBBU1R2MS5UZXh0Tm9kZSkuY2hhcnMgPT09ICcvJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnRzWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBgQW4gdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBtdXN0YWNoZSwgYCArXG4gICAgICAgICAgICAgIGBwcmVjZWRlZCBieSB3aGl0ZXNwYWNlIG9yIGEgJz0nIGNoYXJhY3RlciwgYW5kIGAgK1xuICAgICAgICAgICAgICBgZm9sbG93ZWQgYnkgd2hpdGVzcGFjZSwgYSAnPicgY2hhcmFjdGVyLCBvciAnLz4nYCxcbiAgICAgICAgICAgIHNwYW5cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYXJ0cy5sZW5ndGggPiAwID8gcGFydHNbMF0gOiBiLnRleHQoeyBjaGFyczogJycsIGxvYzogc3BhbiB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gIEFTVFBsdWdpbnMgY2FuIG1ha2UgY2hhbmdlcyB0byB0aGUgR2xpbW1lciB0ZW1wbGF0ZSBBU1QgYmVmb3JlXG4gIGNvbXBpbGF0aW9uIGJlZ2lucy5cbiovXG5leHBvcnQgaW50ZXJmYWNlIEFTVFBsdWdpbkJ1aWxkZXI8VEVudiBleHRlbmRzIEFTVFBsdWdpbkVudmlyb25tZW50ID0gQVNUUGx1Z2luRW52aXJvbm1lbnQ+IHtcbiAgKGVudjogVEVudik6IEFTVFBsdWdpbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBU1RQbHVnaW4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZpc2l0b3I6IE5vZGVWaXNpdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFTVFBsdWdpbkVudmlyb25tZW50IHtcbiAgbWV0YT86IG9iamVjdDtcbiAgc3ludGF4OiBTeW50YXg7XG59XG5cbmludGVyZmFjZSBIYW5kbGViYXJzUGFyc2VPcHRpb25zIHtcbiAgc3JjTmFtZT86IHN0cmluZztcbiAgaWdub3JlU3RhbmRhbG9uZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVJZEZuIHtcbiAgKHNyYzogc3RyaW5nKTogT3B0aW9uPHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlY29tcGlsZU9wdGlvbnMgZXh0ZW5kcyBQcmVwcm9jZXNzT3B0aW9ucyB7XG4gIGlkPzogVGVtcGxhdGVJZEZuO1xuICBjdXN0b21pemVDb21wb25lbnROYW1lPyhpbnB1dDogc3RyaW5nKTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXByb2Nlc3NPcHRpb25zIHtcbiAgc3RyaWN0TW9kZT86IGJvb2xlYW47XG4gIGxvY2Fscz86IHN0cmluZ1tdO1xuICBtZXRhPzoge1xuICAgIG1vZHVsZU5hbWU/OiBzdHJpbmc7XG4gIH07XG4gIHBsdWdpbnM/OiB7XG4gICAgYXN0PzogQVNUUGx1Z2luQnVpbGRlcltdO1xuICB9O1xuICBwYXJzZU9wdGlvbnM/OiBIYW5kbGViYXJzUGFyc2VPcHRpb25zO1xuICBjdXN0b21pemVDb21wb25lbnROYW1lPyhpbnB1dDogc3RyaW5nKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgIFVzZWZ1bCBmb3Igc3BlY2lmeWluZyBhIGdyb3VwIG9mIG9wdGlvbnMgdG9nZXRoZXIuXG5cbiAgICBXaGVuIGAnY29kZW1vZCdgIHdlIGRpc2FibGUgYWxsIHdoaXRlc3BhY2UgY29udHJvbCBpbiBoYW5kbGViYXJzXG4gICAgKHRvIHByZXNlcnZlIGFzIG11Y2ggYXMgcG9zc2libGUpIGFuZCB3ZSBhbHNvIGF2b2lkIGFueVxuICAgIGVzY2FwaW5nL3VuZXNjYXBpbmcgb2YgSFRNTCBlbnRpdHkgY29kZXMuXG4gICAqL1xuICBtb2RlPzogJ2NvZGVtb2QnIHwgJ3ByZWNvbXBpbGUnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN5bnRheCB7XG4gIHBhcnNlOiB0eXBlb2YgcHJlcHJvY2VzcztcbiAgYnVpbGRlcnM6IHR5cGVvZiBwdWJsaWNCdWlsZGVyO1xuICBwcmludDogdHlwZW9mIHByaW50O1xuICB0cmF2ZXJzZTogdHlwZW9mIHRyYXZlcnNlO1xuICBXYWxrZXI6IHR5cGVvZiBXYWxrZXI7XG59XG5cbmNvbnN0IHN5bnRheDogU3ludGF4ID0ge1xuICBwYXJzZTogcHJlcHJvY2VzcyxcbiAgYnVpbGRlcnM6IHB1YmxpY0J1aWxkZXIsXG4gIHByaW50LFxuICB0cmF2ZXJzZSxcbiAgV2Fsa2VyLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByZXByb2Nlc3MoXG4gIGlucHV0OiBzdHJpbmcgfCBTb3VyY2UgfCBIQlMuUHJvZ3JhbSxcbiAgb3B0aW9uczogUHJlcHJvY2Vzc09wdGlvbnMgPSB7fVxuKTogQVNUdjEuVGVtcGxhdGUge1xuICBsZXQgbW9kZSA9IG9wdGlvbnMubW9kZSB8fCAncHJlY29tcGlsZSc7XG5cbiAgbGV0IHNvdXJjZTogU291cmNlO1xuICBsZXQgYXN0OiBIQlMuUHJvZ3JhbTtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2UgPSBuZXcgU291cmNlKGlucHV0LCBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWUpO1xuXG4gICAgaWYgKG1vZGUgPT09ICdjb2RlbW9kJykge1xuICAgICAgYXN0ID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dCwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpIGFzIEhCUy5Qcm9ncmFtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3QgPSBwYXJzZShpbnB1dCwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpIGFzIEhCUy5Qcm9ncmFtO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFNvdXJjZSkge1xuICAgIHNvdXJjZSA9IGlucHV0O1xuXG4gICAgaWYgKG1vZGUgPT09ICdjb2RlbW9kJykge1xuICAgICAgYXN0ID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dC5zb3VyY2UsIG9wdGlvbnMucGFyc2VPcHRpb25zKSBhcyBIQlMuUHJvZ3JhbTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXN0ID0gcGFyc2UoaW5wdXQuc291cmNlLCBvcHRpb25zLnBhcnNlT3B0aW9ucykgYXMgSEJTLlByb2dyYW07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNvdXJjZSA9IG5ldyBTb3VyY2UoJycsIG9wdGlvbnMubWV0YT8ubW9kdWxlTmFtZSk7XG4gICAgYXN0ID0gaW5wdXQ7XG4gIH1cblxuICBsZXQgZW50aXR5UGFyc2VyID0gdW5kZWZpbmVkO1xuICBpZiAobW9kZSA9PT0gJ2NvZGVtb2QnKSB7XG4gICAgZW50aXR5UGFyc2VyID0gbmV3IEVudGl0eVBhcnNlcih7fSk7XG4gIH1cblxuICBsZXQgb2Zmc2V0cyA9IFNvdXJjZVNwYW4uZm9yQ2hhclBvc2l0aW9ucyhzb3VyY2UsIDAsIHNvdXJjZS5zb3VyY2UubGVuZ3RoKTtcbiAgYXN0LmxvYyA9IHtcbiAgICBzb3VyY2U6ICcocHJvZ3JhbSknLFxuICAgIHN0YXJ0OiBvZmZzZXRzLnN0YXJ0UG9zaXRpb24sXG4gICAgZW5kOiBvZmZzZXRzLmVuZFBvc2l0aW9uLFxuICB9O1xuXG4gIGxldCBwcm9ncmFtID0gbmV3IFRva2VuaXplckV2ZW50SGFuZGxlcnMoc291cmNlLCBlbnRpdHlQYXJzZXIsIG1vZGUpLmFjY2VwdFRlbXBsYXRlKGFzdCk7XG5cbiAgaWYgKG9wdGlvbnMuc3RyaWN0TW9kZSkge1xuICAgIHByb2dyYW0uYmxvY2tQYXJhbXMgPSBvcHRpb25zLmxvY2FscyA/PyBbXTtcbiAgfVxuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMucGx1Z2lucyAmJiBvcHRpb25zLnBsdWdpbnMuYXN0KSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBvcHRpb25zLnBsdWdpbnMuYXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgbGV0IHRyYW5zZm9ybSA9IG9wdGlvbnMucGx1Z2lucy5hc3RbaV07XG4gICAgICBsZXQgZW52OiBBU1RQbHVnaW5FbnZpcm9ubWVudCA9IGFzc2lnbih7fSwgb3B0aW9ucywgeyBzeW50YXggfSwgeyBwbHVnaW5zOiB1bmRlZmluZWQgfSk7XG5cbiAgICAgIGxldCBwbHVnaW5SZXN1bHQgPSB0cmFuc2Zvcm0oZW52KTtcblxuICAgICAgdHJhdmVyc2UocHJvZ3JhbSwgcGx1Z2luUmVzdWx0LnZpc2l0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcm9ncmFtO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -8,3 +8,3 @@ export { Source } from './lib/source/source';

export { generateSyntaxError, GlimmerSyntaxError } from './lib/syntax-error';
export { preprocess, ASTPlugin, ASTPluginBuilder, ASTPluginEnvironment, Syntax, PrecompileOptions, } from './lib/parser/tokenizer-event-handlers';
export { preprocess, ASTPlugin, ASTPluginBuilder, ASTPluginEnvironment, Syntax, TemplateIdFn, PrecompileOptions, } from './lib/parser/tokenizer-event-handlers';
export { default as print } from './lib/generation/print';

@@ -11,0 +11,0 @@ export { sortByLoc } from './lib/generation/util';

@@ -0,1 +1,2 @@

import { Option } from '@glimmer/interfaces';
import print from '../generation/print';

@@ -59,3 +60,7 @@ import { Tag } from '../parser';

}
export interface TemplateIdFn {
(src: string): Option<string>;
}
export interface PrecompileOptions extends PreprocessOptions {
id?: TemplateIdFn;
customizeComponentName?(input: string): string;

@@ -62,0 +67,0 @@ }

{
"name": "@glimmer/syntax",
"version": "0.76.0",
"version": "0.77.0",
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/syntax",
"dependencies": {
"@glimmer/interfaces": "0.76.0",
"@glimmer/util": "0.76.0",
"@glimmer/interfaces": "0.77.0",
"@glimmer/util": "0.77.0",
"@handlebars/parser": "^2.0.0",

@@ -12,3 +12,3 @@ "simple-html-tokenizer": "^0.5.10"

"devDependencies": {
"@glimmer/local-debug-flags": "0.76.0",
"@glimmer/local-debug-flags": "0.77.0",
"@types/qunit": "^2.9.0"

@@ -15,0 +15,0 @@ },

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc