Socket
Socket
Sign inDemoInstall

@aws-sdk/middleware-stack

Package Overview
Dependencies
Maintainers
4
Versions
120
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-sdk/middleware-stack - npm Package Compare versions

Comparing version 1.0.0-beta.2 to 1.0.0-beta.3

2

build/MiddlewareStack.d.ts

@@ -49,4 +49,4 @@ import { InitializeHandlerOptions, BuildHandlerOptions, FinalizeRequestHandlerOptions, MiddlewareType, SerializeMiddleware, FinalizeRequestMiddleware, HandlerExecutionContext, InitializeMiddleware, MiddlewareStack as IMiddlewareStack, SerializeHandlerOptions, DeserializeMiddleware, DeserializeHandlerOptions, DeserializeHandler, Pluggable, BuildMiddleware, Handler, AbsoluteLocation, RelativeLocation } from "@aws-sdk/types";

*/
private geMiddlewareList;
private getMiddlewareList;
resolve<InputType extends Input, OutputType extends Output>(handler: DeserializeHandler<InputType, OutputType>, context: HandlerExecutionContext): Handler<InputType, OutputType>;
}

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

*/
MiddlewareStack.prototype.geMiddlewareList = function () {
MiddlewareStack.prototype.getMiddlewareList = function () {
var middlewareList = [];

@@ -305,3 +305,3 @@ var _a = this.normalizeRelativeEntries(), orphanedRelativeEntries = _a[0], anchors = _a[1];

MiddlewareStack.prototype.resolve = function (handler, context) {
for (var _i = 0, _a = this.geMiddlewareList(); _i < _a.length; _i++) {
for (var _i = 0, _a = this.getMiddlewareList(); _i < _a.length; _i++) {
var middleware = _a[_i];

@@ -327,2 +327,2 @@ handler = middleware(handler, context);

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlkZGxld2FyZVN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL01pZGRsZXdhcmVTdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvQ0E7SUFBQTtRQUNtQixvQkFBZSxHQUEwQyxFQUFFLENBQUM7UUFDNUQsb0JBQWUsR0FFNUIsRUFBRSxDQUFDO1FBQ0MsbUJBQWMsR0FJbEIsRUFBRSxDQUFDO0lBeVlULENBQUM7SUE5V0MsNkJBQUcsR0FBSCxVQUNFLFVBQXlDLEVBQ3pDLE9BQStDO1FBQS9DLHdCQUFBLEVBQUEsWUFBK0M7UUFFdkMsSUFBQSxtQkFBSSxFQUFFLGlCQUFtQixFQUFuQix3Q0FBbUIsRUFBRSxtQkFBSSxFQUFFLHFCQUFtQixFQUFuQix3Q0FBbUIsQ0FBYTtRQUN6RSxJQUFNLEtBQUssR0FBbUM7WUFDNUMsSUFBSSxNQUFBO1lBQ0osSUFBSSxNQUFBO1lBQ0osSUFBSSxNQUFBO1lBQ0osUUFBUSxVQUFBO1lBQ1IsVUFBVSxZQUFBO1NBQ1gsQ0FBQztRQUNGLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDbkUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBK0IsSUFBSSxNQUFHLENBQUMsQ0FBQzthQUN6RDtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQTJCRCx1Q0FBYSxHQUFiLFVBQ0UsVUFBeUMsRUFDekMsT0FBeUQ7UUFFakQsSUFBQSxpQkFBbUIsRUFBbkIsd0NBQW1CLEVBQUUsbUJBQUksRUFBRSxtQkFBSSxFQUFFLDJCQUFRLEVBQUUsbUNBQVksQ0FBYTtRQUM1RSxJQUFNLEtBQUss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QkFBZ0IsRUFBRSxFQUF2QixjQUF1QixFQUF2QixJQUF1QixFQUFFO1lBQTdDLElBQU0sVUFBVSxTQUFBO1lBQ25CLE9BQU8sR0FBRyxVQUFVLENBQ2xCLE9BQXFDLEVBQ3JDLE9BQU8sQ0FDRCxDQUFDO1NBQ1Y7UUFFRCxPQUFPLE9BQXlDLENBQUM7SUFDbkQsQ0FBQztJQUNILHNCQUFDO0FBQUQsQ0FBQyxBQWxaRCxJQWtaQztBQWxaWSwwQ0FBZTtBQW9aNUIsSUFBTSxXQUFXLEdBQThCO0lBQzdDLFVBQVUsRUFBRSxDQUFDO0lBQ2IsU0FBUyxFQUFFLENBQUM7SUFDWixLQUFLLEVBQUUsQ0FBQztJQUNSLGVBQWUsRUFBRSxDQUFDO0lBQ2xCLFdBQVcsRUFBRSxDQUFDO0NBQ2YsQ0FBQztBQUVGLElBQU0sZUFBZSxHQUFrQztJQUNyRCxJQUFJLEVBQUUsQ0FBQztJQUNQLE1BQU0sRUFBRSxDQUFDO0lBQ1QsR0FBRyxFQUFFLENBQUM7Q0FDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5pdGlhbGl6ZUhhbmRsZXJPcHRpb25zLFxuICBCdWlsZEhhbmRsZXJPcHRpb25zLFxuICBGaW5hbGl6ZVJlcXVlc3RIYW5kbGVyT3B0aW9ucyxcbiAgTWlkZGxld2FyZVR5cGUsXG4gIFNlcmlhbGl6ZU1pZGRsZXdhcmUsXG4gIEZpbmFsaXplUmVxdWVzdE1pZGRsZXdhcmUsXG4gIEhhbmRsZXJFeGVjdXRpb25Db250ZXh0LFxuICBIYW5kbGVyT3B0aW9ucyxcbiAgSW5pdGlhbGl6ZU1pZGRsZXdhcmUsXG4gIE1pZGRsZXdhcmVTdGFjayBhcyBJTWlkZGxld2FyZVN0YWNrLFxuICBTZXJpYWxpemVIYW5kbGVyT3B0aW9ucyxcbiAgU3RlcCxcbiAgRGVzZXJpYWxpemVNaWRkbGV3YXJlLFxuICBEZXNlcmlhbGl6ZUhhbmRsZXJPcHRpb25zLFxuICBEZXNlcmlhbGl6ZUhhbmRsZXIsXG4gIFBsdWdnYWJsZSxcbiAgQnVpbGRNaWRkbGV3YXJlLFxuICBIYW5kbGVyLFxuICBQcmlvcml0eSxcbiAgQWJzb2x1dGVMb2NhdGlvbixcbiAgUmVsYXRpdmVMb2NhdGlvblxufSBmcm9tIFwiQGF3cy1zZGsvdHlwZXNcIjtcbmltcG9ydCB7XG4gIE1pZGRsZXdhcmVFbnRyeSxcbiAgUmVsYXRpdmVNaWRkbGV3YXJlRW50cnksXG4gIE5vcm1hbGl6ZWRSZWxhdGl2ZUVudHJ5LFxuICBOYW1lZE1pZGRsZXdhcmVFbnRyaWVzTWFwLFxuICBOYW1lZFJlbGF0aXZlRW50cmllc01hcCxcbiAgUmVsYXRpdmVNaWRkbGV3YXJlQW5jaG9yLFxuICBOb3JtYWxpemluZ0VudHJ5UmVzdWx0XG59IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlkZGxld2FyZVN0YWNrPElucHV0IGV4dGVuZHMgb2JqZWN0LCBPdXRwdXQgZXh0ZW5kcyBvYmplY3Q+XG4gIGV4dGVuZHMgSU1pZGRsZXdhcmVTdGFjazxJbnB1dCwgT3V0cHV0PiB7fVxuXG5leHBvcnQgY2xhc3MgTWlkZGxld2FyZVN0YWNrPElucHV0IGV4dGVuZHMgb2JqZWN0LCBPdXRwdXQgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhYnNvbHV0ZUVudHJpZXM6IEFycmF5PE1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0Pj4gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWxhdGl2ZUVudHJpZXM6IEFycmF5PFxuICAgIFJlbGF0aXZlTWlkZGxld2FyZUVudHJ5PElucHV0LCBPdXRwdXQ+XG4gID4gPSBbXTtcbiAgcHJpdmF0ZSBlbnRyaWVzTmFtZU1hcDoge1xuICAgIFttaWRkbGV3YXJlTmFtZTogc3RyaW5nXTpcbiAgICAgIHwgTWlkZGxld2FyZUVudHJ5PElucHV0LCBPdXRwdXQ+XG4gICAgICB8IFJlbGF0aXZlTWlkZGxld2FyZUVudHJ5PElucHV0LCBPdXRwdXQ+O1xuICB9ID0ge307XG5cbiAgYWRkKFxuICAgIG1pZGRsZXdhcmU6IEluaXRpYWxpemVNaWRkbGV3YXJlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM/OiBJbml0aWFsaXplSGFuZGxlck9wdGlvbnMgJiBBYnNvbHV0ZUxvY2F0aW9uXG4gICk6IHZvaWQ7XG5cbiAgYWRkKFxuICAgIG1pZGRsZXdhcmU6IFNlcmlhbGl6ZU1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogU2VyaWFsaXplSGFuZGxlck9wdGlvbnMgJiBBYnNvbHV0ZUxvY2F0aW9uXG4gICk6IHZvaWQ7XG5cbiAgYWRkKFxuICAgIG1pZGRsZXdhcmU6IEJ1aWxkTWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zOiBCdWlsZEhhbmRsZXJPcHRpb25zICYgQWJzb2x1dGVMb2NhdGlvblxuICApOiB2b2lkO1xuXG4gIGFkZChcbiAgICBtaWRkbGV3YXJlOiBGaW5hbGl6ZVJlcXVlc3RNaWRkbGV3YXJlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM6IEZpbmFsaXplUmVxdWVzdEhhbmRsZXJPcHRpb25zICYgQWJzb2x1dGVMb2NhdGlvblxuICApOiB2b2lkO1xuXG4gIGFkZChcbiAgICBtaWRkbGV3YXJlOiBEZXNlcmlhbGl6ZU1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogRGVzZXJpYWxpemVIYW5kbGVyT3B0aW9ucyAmIEFic29sdXRlTG9jYXRpb25cbiAgKTogdm9pZDtcblxuICBhZGQoXG4gICAgbWlkZGxld2FyZTogTWlkZGxld2FyZVR5cGU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogSGFuZGxlck9wdGlvbnMgJiBBYnNvbHV0ZUxvY2F0aW9uID0ge31cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgeyBuYW1lLCBzdGVwID0gXCJpbml0aWFsaXplXCIsIHRhZ3MsIHByaW9yaXR5ID0gXCJub3JtYWxcIiB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBlbnRyeTogTWlkZGxld2FyZUVudHJ5PElucHV0LCBPdXRwdXQ+ID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0ZXAsXG4gICAgICB0YWdzLFxuICAgICAgcHJpb3JpdHksXG4gICAgICBtaWRkbGV3YXJlXG4gICAgfTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmVudHJpZXNOYW1lTWFwLCBuYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZWQgbWlkZGxld2FyZSBuYW1lICcke25hbWV9J2ApO1xuICAgICAgfVxuICAgICAgdGhpcy5lbnRyaWVzTmFtZU1hcFtuYW1lXSA9IGVudHJ5O1xuICAgIH1cbiAgICB0aGlzLmFic29sdXRlRW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGFkZFJlbGF0aXZlVG8oXG4gICAgbWlkZGxld2FyZTogSW5pdGlhbGl6ZU1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogSW5pdGlhbGl6ZUhhbmRsZXJPcHRpb25zICYgUmVsYXRpdmVMb2NhdGlvbjxJbnB1dCwgT3V0cHV0PlxuICApOiB2b2lkO1xuXG4gIGFkZFJlbGF0aXZlVG8oXG4gICAgbWlkZGxld2FyZTogU2VyaWFsaXplTWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zOiBTZXJpYWxpemVIYW5kbGVyT3B0aW9ucyAmIFJlbGF0aXZlTG9jYXRpb248SW5wdXQsIE91dHB1dD5cbiAgKTogdm9pZDtcblxuICBhZGRSZWxhdGl2ZVRvKFxuICAgIG1pZGRsZXdhcmU6IEJ1aWxkTWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zOiBCdWlsZEhhbmRsZXJPcHRpb25zICYgUmVsYXRpdmVMb2NhdGlvbjxJbnB1dCwgT3V0cHV0PlxuICApOiB2b2lkO1xuXG4gIGFkZFJlbGF0aXZlVG8oXG4gICAgbWlkZGxld2FyZTogRmluYWxpemVSZXF1ZXN0TWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zOiBGaW5hbGl6ZVJlcXVlc3RIYW5kbGVyT3B0aW9ucyAmIFJlbGF0aXZlTG9jYXRpb248SW5wdXQsIE91dHB1dD5cbiAgKTogdm9pZDtcblxuICBhZGRSZWxhdGl2ZVRvKFxuICAgIG1pZGRsZXdhcmU6IERlc2VyaWFsaXplTWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zOiBEZXNlcmlhbGl6ZUhhbmRsZXJPcHRpb25zICYgUmVsYXRpdmVMb2NhdGlvbjxJbnB1dCwgT3V0cHV0PlxuICApOiB2b2lkO1xuXG4gIGFkZFJlbGF0aXZlVG8oXG4gICAgbWlkZGxld2FyZTogTWlkZGxld2FyZVR5cGU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogSGFuZGxlck9wdGlvbnMgJiBSZWxhdGl2ZUxvY2F0aW9uPElucHV0LCBPdXRwdXQ+XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHsgc3RlcCA9IFwiaW5pdGlhbGl6ZVwiLCBuYW1lLCB0YWdzLCByZWxhdGlvbiwgdG9NaWRkbGV3YXJlIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGVudHJ5OiBSZWxhdGl2ZU1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PiA9IHtcbiAgICAgIG1pZGRsZXdhcmUsXG4gICAgICBzdGVwLFxuICAgICAgbmFtZSxcbiAgICAgIHRhZ3MsXG4gICAgICBuZXh0OiByZWxhdGlvbiA9PT0gXCJiZWZvcmVcIiA/IHRvTWlkZGxld2FyZSA6IHVuZGVmaW5lZCxcbiAgICAgIHByZXY6IHJlbGF0aW9uID09PSBcImFmdGVyXCIgPyB0b01pZGRsZXdhcmUgOiB1bmRlZmluZWRcbiAgICB9O1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuZW50cmllc05hbWVNYXAsIG5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlZCBtaWRkbGV3YXJlIG5hbWUgJyR7bmFtZX0nYCk7XG4gICAgICB9XG4gICAgICB0aGlzLmVudHJpZXNOYW1lTWFwW25hbWVdID0gZW50cnk7XG4gICAgfVxuICAgIHRoaXMucmVsYXRpdmVFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0KFxuICAgIGVudHJpZXM6IEFycmF5PFxuICAgICAgTWlkZGxld2FyZUVudHJ5PElucHV0LCBPdXRwdXQ+IHwgTm9ybWFsaXplZFJlbGF0aXZlRW50cnk8SW5wdXQsIE91dHB1dD5cbiAgICA+XG4gICk6IEFycmF5PFxuICAgIE1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PiB8IE5vcm1hbGl6ZWRSZWxhdGl2ZUVudHJ5PElucHV0LCBPdXRwdXQ+XG4gID4ge1xuICAgIC8vcmV2ZXJzZSBiZWZvcmUgc29ydGluZyBzbyB0aGF0IG1pZGRsZXdhcmUgb2Ygc2FtZSBzdGVwIHdpbGwgZXhlY3V0ZSBpblxuICAgIC8vdGhlIG9yZGVyIG9mIGJlaW5nIGFkZGVkXG4gICAgcmV0dXJuIGVudHJpZXMuc29ydChcbiAgICAgIChhLCBiKSA9PlxuICAgICAgICBzdGVwV2VpZ2h0c1tiLnN0ZXBdIC0gc3RlcFdlaWdodHNbYS5zdGVwXSB8fFxuICAgICAgICBwcmlvcml0eVdlaWdodHNbYi5wcmlvcml0eSB8fCBcIm5vcm1hbFwiXSAtXG4gICAgICAgICAgcHJpb3JpdHlXZWlnaHRzW2EucHJpb3JpdHkgfHwgXCJub3JtYWxcIl1cbiAgICApO1xuICB9XG5cbiAgY2xvbmUoKTogSU1pZGRsZXdhcmVTdGFjazxJbnB1dCwgT3V0cHV0PiB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgTWlkZGxld2FyZVN0YWNrPElucHV0LCBPdXRwdXQ+KCk7XG4gICAgY2xvbmUuYWJzb2x1dGVFbnRyaWVzLnB1c2goLi4udGhpcy5hYnNvbHV0ZUVudHJpZXMpO1xuICAgIGNsb25lLnJlbGF0aXZlRW50cmllcy5wdXNoKC4uLnRoaXMucmVsYXRpdmVFbnRyaWVzKTtcbiAgICBjbG9uZS5lbnRyaWVzTmFtZU1hcCA9IHsgLi4udGhpcy5lbnRyaWVzTmFtZU1hcCB9O1xuICAgIHJldHVybiBjbG9uZTtcbiAgfVxuXG4gIGNvbmNhdDxJbnB1dFR5cGUgZXh0ZW5kcyBJbnB1dCwgT3V0cHV0VHlwZSBleHRlbmRzIE91dHB1dD4oXG4gICAgZnJvbTogSU1pZGRsZXdhcmVTdGFjazxJbnB1dFR5cGUsIE91dHB1dFR5cGU+XG4gICk6IE1pZGRsZXdhcmVTdGFjazxJbnB1dFR5cGUsIE91dHB1dFR5cGU+IHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBNaWRkbGV3YXJlU3RhY2s8SW5wdXRUeXBlLCBPdXRwdXRUeXBlPigpO1xuICAgIGNsb25lLmVudHJpZXNOYW1lTWFwID0geyAuLi4odGhpcy5lbnRyaWVzTmFtZU1hcCBhcyBhbnkpIH07XG4gICAgLy8gSU1pZGRsZXdhcmVTdGFjayBpbnRlcmZhY2UgZG9lc24ndCBjb250YWluIHByaXZhdGUgbWVtYmVycyB2YXJpYWJsZXNcbiAgICAvLyBsaWtlIGBlbnRyaWVzTmFtZU1hcGAsIGJ1dCBpbiBmYWN0IHRoZSBmdW5jdGlvbiBleHBlY3RzIGBNaWRkbGV3YXJlU3RhY2tgXG4gICAgLy8gY2xhc3MgaW5zdGFuY2UuIFNvIGhlcmUgd2UgY2FzdCBpdC5cbiAgICBjb25zdCBfZnJvbSA9IGZyb20gYXMgTWlkZGxld2FyZVN0YWNrPElucHV0VHlwZSwgT3V0cHV0VHlwZT47XG4gICAgZm9yIChjb25zdCBuYW1lIGluIF9mcm9tLmVudHJpZXNOYW1lTWFwKSB7XG4gICAgICBpZiAoY2xvbmUuZW50cmllc05hbWVNYXBbbmFtZV0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGVkIG1pZGRsZXdhcmUgbmFtZSAnJHtuYW1lfSdgKTtcbiAgICAgIH1cbiAgICAgIGNsb25lLmVudHJpZXNOYW1lTWFwW25hbWVdID0gX2Zyb20uZW50cmllc05hbWVNYXBbbmFtZV07XG4gICAgfVxuICAgIGNsb25lLmFic29sdXRlRW50cmllcy5wdXNoKFxuICAgICAgLi4uKHRoaXMuYWJzb2x1dGVFbnRyaWVzIGFzIGFueSksXG4gICAgICAuLi5fZnJvbS5hYnNvbHV0ZUVudHJpZXNcbiAgICApO1xuICAgIGNsb25lLnJlbGF0aXZlRW50cmllcy5wdXNoKFxuICAgICAgLi4uKHRoaXMucmVsYXRpdmVFbnRyaWVzIGFzIGFueSksXG4gICAgICAuLi5fZnJvbS5yZWxhdGl2ZUVudHJpZXNcbiAgICApO1xuICAgIHJldHVybiBjbG9uZTtcbiAgfVxuXG4gIHJlbW92ZSh0b1JlbW92ZTogTWlkZGxld2FyZVR5cGU8SW5wdXQsIE91dHB1dD4gfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHRvUmVtb3ZlID09PSBcInN0cmluZ1wiKSByZXR1cm4gdGhpcy5yZW1vdmVCeU5hbWUodG9SZW1vdmUpO1xuICAgIGVsc2UgcmV0dXJuIHRoaXMucmVtb3ZlQnlSZWZlcmVuY2UodG9SZW1vdmUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVCeU5hbWUodG9SZW1vdmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAobGV0IGkgPSB0aGlzLmFic29sdXRlRW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFic29sdXRlRW50cmllc1tpXS5uYW1lICYmXG4gICAgICAgIHRoaXMuYWJzb2x1dGVFbnRyaWVzW2ldLm5hbWUgPT09IHRvUmVtb3ZlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5hYnNvbHV0ZUVudHJpZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBkZWxldGUgdGhpcy5lbnRyaWVzTmFtZU1hcFt0b1JlbW92ZV07XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpID0gdGhpcy5yZWxhdGl2ZUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5yZWxhdGl2ZUVudHJpZXNbaV0ubmFtZSAmJlxuICAgICAgICB0aGlzLnJlbGF0aXZlRW50cmllc1tpXS5uYW1lID09PSB0b1JlbW92ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMucmVsYXRpdmVFbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgZGVsZXRlIHRoaXMuZW50cmllc05hbWVNYXBbdG9SZW1vdmVdO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVCeVJlZmVyZW5jZSh0b1JlbW92ZTogTWlkZGxld2FyZVR5cGU8SW5wdXQsIE91dHB1dD4pOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBpID0gdGhpcy5hYnNvbHV0ZUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmICh0aGlzLmFic29sdXRlRW50cmllc1tpXS5taWRkbGV3YXJlID09PSB0b1JlbW92ZSkge1xuICAgICAgICBjb25zdCB7IG5hbWUgfSA9IHRoaXMuYWJzb2x1dGVFbnRyaWVzW2ldO1xuICAgICAgICBpZiAobmFtZSkgZGVsZXRlIHRoaXMuZW50cmllc05hbWVNYXBbbmFtZV07XG4gICAgICAgIHRoaXMuYWJzb2x1dGVFbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSB0aGlzLnJlbGF0aXZlRW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKHRoaXMucmVsYXRpdmVFbnRyaWVzW2ldLm1pZGRsZXdhcmUgPT09IHRvUmVtb3ZlKSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSB9ID0gdGhpcy5yZWxhdGl2ZUVudHJpZXNbaV07XG4gICAgICAgIGlmIChuYW1lKSBkZWxldGUgdGhpcy5lbnRyaWVzTmFtZU1hcFtuYW1lXTtcbiAgICAgICAgdGhpcy5yZWxhdGl2ZUVudHJpZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVtb3ZlQnlUYWcodG9SZW1vdmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCByZW1vdmVkID0gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IHRoaXMuYWJzb2x1dGVFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCB7IHRhZ3MsIG5hbWUgfSA9IHRoaXMuYWJzb2x1dGVFbnRyaWVzW2ldO1xuICAgICAgaWYgKHRhZ3MgJiYgdGFncy5pbmRleE9mKHRvUmVtb3ZlKSA+IC0xKSB7XG4gICAgICAgIHRoaXMuYWJzb2x1dGVFbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgaWYgKG5hbWUpIGRlbGV0ZSB0aGlzLmVudHJpZXNOYW1lTWFwW25hbWVdO1xuICAgICAgICByZW1vdmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IHRoaXMucmVsYXRpdmVFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCB7IHRhZ3MsIG5hbWUgfSA9IHRoaXMucmVsYXRpdmVFbnRyaWVzW2ldO1xuICAgICAgaWYgKHRhZ3MgJiYgdGFncy5pbmRleE9mKHRvUmVtb3ZlKSA+IC0xKSB7XG4gICAgICAgIHRoaXMucmVsYXRpdmVFbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgaWYgKG5hbWUpIGRlbGV0ZSB0aGlzLmVudHJpZXNOYW1lTWFwW25hbWVdO1xuICAgICAgICByZW1vdmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlbW92ZWQ7XG4gIH1cblxuICB1c2UocGx1Z2luOiBQbHVnZ2FibGU8SW5wdXQsIE91dHB1dD4pIHtcbiAgICBwbHVnaW4uYXBwbHlUb1N0YWNrKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgcmVsYXRpdmUgbWlkZGxld2FyZSBlbnRyaWVzIHRvIG11bHRpcGxlIGRvdWJsZSBsaW5rZWQgbGlzdHNcbiAgICogZGVwaWN0aW5nIHRoZSByZWxhdGl2ZSBsb2NhdGlvbiBvZiBtaWRkbGV3YXJlLiBPbmx5IG1pZGRsZXdhcmUgdGhhdCBoYXZlXG4gICAqIGRpcmVjdCBvciB0cmFuc2l0aXZlIHJlbGF0aW9uIHdpbGwgZm9ybSBhIGxpbmtlZCBsaXN0LlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIG5vcm1hbGl6ZXMgcmVsYXRpdmUgbWlkZGxld2FyZSBpbnRvIDIgY2F0ZWdvcmllcyBvZiBsaW5rZWRcbiAgICogbGlzdHMuICgxKSBsaW5rZWQgbGlzdCB0aGF0IGhhdmUgYWJzb2x1dGUtbG9jYXRlZCBtaWRkbGV3YXJlIG9uIG9uZSBlbmQuXG4gICAqIFRoZXNlIG1pZGRsZXdhcmUgd2lsbCBiZSByZXNvbHZlZCBhY2NvcmRpbmdseSBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGFic29sdXRlLVxuICAgKiBsb2NhdGVkIG1pZGRsZXdhcmUuICgyKSBMaW5rZWQgbGlzdCB0aGF0IGhhdmUgbm8gYWJzb2x1dGUtbG9jYXRlZCBtaWRkbGV3YXJlXG4gICAqIG9uIGFueSBlbmQuIFRoZXkgd2lsbCBiZSByZXNvbHZlZCB0byBjb3JyZXNwb25kaW5nIHN0ZXAgd2l0aCBub3JtYWwgcHJpb3JpdHlcbiAgICpcbiAgICogVGhlIDIgdHlwZXMgb2YgbGlua2VkIGxpc3Qgd2lsbCByZXR1cm4gYXMgYSB0dXBsZVxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVSZWxhdGl2ZUVudHJpZXMoKTogTm9ybWFsaXppbmdFbnRyeVJlc3VsdDxJbnB1dCwgT3V0cHV0PiB7XG4gICAgY29uc3QgYWJzb2x1dGVNaWRkbGV3YXJlTmFtZXNNYXAgPSB0aGlzLmFic29sdXRlRW50cmllc1xuICAgICAgLmZpbHRlcihlbnRyeSA9PiBlbnRyeS5uYW1lKVxuICAgICAgLnJlZHVjZSgoYWNjdW11bGF0b3IsIGVudHJ5KSA9PiB7XG4gICAgICAgIGFjY3VtdWxhdG9yW2VudHJ5Lm5hbWUhXSA9IGVudHJ5O1xuICAgICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgICB9LCB7fSBhcyBOYW1lZE1pZGRsZXdhcmVFbnRyaWVzTWFwPElucHV0LCBPdXRwdXQ+KTtcbiAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5yZWxhdGl2ZUVudHJpZXMubWFwKFxuICAgICAgZW50cnkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICBwcmlvcml0eTogbnVsbCxcbiAgICAgICAgICBuZXh0OiB1bmRlZmluZWQsXG4gICAgICAgICAgcHJldjogdW5kZWZpbmVkXG4gICAgICAgIH0gYXMgTm9ybWFsaXplZFJlbGF0aXZlRW50cnk8SW5wdXQsIE91dHB1dD4pXG4gICAgKTtcbiAgICBjb25zdCByZWxhdGl2ZU1pZGRsZXdhcmVOYW1lc01hcCA9IG5vcm1hbGl6ZWRcbiAgICAgIC5maWx0ZXIoZW50cnkgPT4gZW50cnkubmFtZSlcbiAgICAgIC5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBlbnRyeSkgPT4ge1xuICAgICAgICBhY2N1bXVsYXRvcltlbnRyeS5uYW1lIV0gPSBlbnRyeTtcbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgfSwge30gYXMgTmFtZWRSZWxhdGl2ZUVudHJpZXNNYXA8SW5wdXQsIE91dHB1dD4pO1xuXG4gICAgY29uc3QgYW5jaG9yczogUmVsYXRpdmVNaWRkbGV3YXJlQW5jaG9yPElucHV0LCBPdXRwdXQ+ID0ge307XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlbGF0aXZlRW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgeyBwcmV2LCBuZXh0IH0gPSB0aGlzLnJlbGF0aXZlRW50cmllc1tpXTtcbiAgICAgIGNvbnN0IHJlc29sdmVkQ3VyciA9IG5vcm1hbGl6ZWRbaV07XG4gICAgICAvL2VpdGhlciBwcmV2IG9yIG5leHQgaXMgc2V0XG4gICAgICBpZiAocHJldikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYWJzb2x1dGVNaWRkbGV3YXJlTmFtZXNNYXBbcHJldl0gJiZcbiAgICAgICAgICBhYnNvbHV0ZU1pZGRsZXdhcmVOYW1lc01hcFtwcmV2XS5zdGVwID09PSByZXNvbHZlZEN1cnIuc3RlcFxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoIWFuY2hvcnNbcHJldl0pIGFuY2hvcnNbcHJldl0gPSB7fTtcbiAgICAgICAgICByZXNvbHZlZEN1cnIubmV4dCA9IGFuY2hvcnNbcHJldl0ubmV4dDtcbiAgICAgICAgICBpZiAoYW5jaG9yc1twcmV2XS5uZXh0KSBhbmNob3JzW3ByZXZdLm5leHQhLnByZXYgPSByZXNvbHZlZEN1cnI7XG4gICAgICAgICAgYW5jaG9yc1twcmV2XS5uZXh0ID0gcmVzb2x2ZWRDdXJyO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIHJlbGF0aXZlTWlkZGxld2FyZU5hbWVzTWFwW3ByZXZdICYmXG4gICAgICAgICAgcmVsYXRpdmVNaWRkbGV3YXJlTmFtZXNNYXBbcHJldl0uc3RlcCA9PT0gcmVzb2x2ZWRDdXJyLnN0ZXBcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRQcmV2ID0gcmVsYXRpdmVNaWRkbGV3YXJlTmFtZXNNYXBbcHJldl07XG4gICAgICAgICAgaWYgKHJlc29sdmVkUHJldi5uZXh0ID09PSByZXNvbHZlZEN1cnIpIGNvbnRpbnVlO1xuICAgICAgICAgIHJlc29sdmVkQ3Vyci5uZXh0ID0gcmVzb2x2ZWRQcmV2Lm5leHQ7XG4gICAgICAgICAgcmVzb2x2ZWRQcmV2Lm5leHQgPSByZXNvbHZlZEN1cnI7XG4gICAgICAgICAgaWYgKHJlc29sdmVkQ3Vyci5uZXh0KSByZXNvbHZlZEN1cnIubmV4dC5wcmV2ID0gcmVzb2x2ZWRDdXJyO1xuICAgICAgICAgIHJlc29sdmVkQ3Vyci5wcmV2ID0gcmVzb2x2ZWRQcmV2O1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG5leHQpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFic29sdXRlTWlkZGxld2FyZU5hbWVzTWFwW25leHRdICYmXG4gICAgICAgICAgYWJzb2x1dGVNaWRkbGV3YXJlTmFtZXNNYXBbbmV4dF0uc3RlcCA9PT0gcmVzb2x2ZWRDdXJyLnN0ZXBcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKCFhbmNob3JzW25leHRdKSBhbmNob3JzW25leHRdID0ge307XG4gICAgICAgICAgcmVzb2x2ZWRDdXJyLnByZXYgPSBhbmNob3JzW25leHRdLnByZXY7XG4gICAgICAgICAgaWYgKGFuY2hvcnNbbmV4dF0ucHJldikgYW5jaG9yc1tuZXh0XS5wcmV2IS5uZXh0ID0gcmVzb2x2ZWRDdXJyO1xuICAgICAgICAgIGFuY2hvcnNbbmV4dF0ucHJldiA9IHJlc29sdmVkQ3VycjtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICByZWxhdGl2ZU1pZGRsZXdhcmVOYW1lc01hcFtuZXh0XSAmJlxuICAgICAgICAgIHJlbGF0aXZlTWlkZGxld2FyZU5hbWVzTWFwW25leHRdLnN0ZXAgPT09IHJlc29sdmVkQ3Vyci5zdGVwXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHJlc29sdmVkTmV4dCA9IHJlbGF0aXZlTWlkZGxld2FyZU5hbWVzTWFwW25leHRdO1xuICAgICAgICAgIGlmIChyZXNvbHZlZE5leHQucHJldiA9PT0gcmVzb2x2ZWRDdXJyKSBjb250aW51ZTtcbiAgICAgICAgICByZXNvbHZlZEN1cnIucHJldiA9IHJlc29sdmVkTmV4dC5wcmV2O1xuICAgICAgICAgIHJlc29sdmVkTmV4dC5wcmV2ID0gcmVzb2x2ZWRDdXJyO1xuICAgICAgICAgIGlmIChyZXNvbHZlZEN1cnIucHJldikgcmVzb2x2ZWRDdXJyLnByZXYubmV4dCA9IHJlc29sdmVkQ3VycjtcbiAgICAgICAgICByZXNvbHZlZEN1cnIubmV4dCA9IHJlc29sdmVkTmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBnZXQgdGhlIGhlYWQgb2YgdGhlIHJlbGF0aXZlIG1pZGRsZXdhcmUgbGlua2VkIGxpc3QgdGhhdCBoYXZlXG4gICAgLy8gbm8gdHJhbnNpdGl2ZSByZWxhdGlvbiB0byBhYnNvbHV0ZSBtaWRkbGV3YXJlLlxuICAgIGNvbnN0IG9ycGhhbmVkUmVsYXRpdmVFbnRyaWVzOiBBcnJheTxOb3JtYWxpemVkUmVsYXRpdmVFbnRyeTxcbiAgICAgIElucHV0LFxuICAgICAgT3V0cHV0XG4gICAgPj4gPSBbXTtcbiAgICBjb25zdCB2aXNpdGVkOiBXZWFrU2V0PE5vcm1hbGl6ZWRSZWxhdGl2ZUVudHJ5PFxuICAgICAgSW5wdXQsXG4gICAgICBPdXRwdXRcbiAgICA+PiA9IG5ldyBXZWFrU2V0KCk7XG4gICAgZm9yIChjb25zdCBhbmNob3JOYW1lIG9mIE9iamVjdC5rZXlzKGFuY2hvcnMpKSB7XG4gICAgICBsZXQgeyBwcmV2LCBuZXh0IH0gPSBhbmNob3JzW2FuY2hvck5hbWVdO1xuICAgICAgd2hpbGUgKHByZXYpIHtcbiAgICAgICAgdmlzaXRlZC5hZGQocHJldik7XG4gICAgICAgIHByZXYgPSBwcmV2LnByZXY7XG4gICAgICB9XG4gICAgICB3aGlsZSAobmV4dCkge1xuICAgICAgICB2aXNpdGVkLmFkZChuZXh0KTtcbiAgICAgICAgbmV4dCA9IG5leHQubmV4dDtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub3JtYWxpemVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgZW50cnk6IE5vcm1hbGl6ZWRSZWxhdGl2ZUVudHJ5PElucHV0LCBPdXRwdXQ+IHwgdW5kZWZpbmVkID1cbiAgICAgICAgbm9ybWFsaXplZFtpXTtcbiAgICAgIGlmICh2aXNpdGVkLmhhcyhlbnRyeSkpIGNvbnRpbnVlO1xuICAgICAgaWYgKCFlbnRyeS5wcmV2KSBvcnBoYW5lZFJlbGF0aXZlRW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICAgIHdoaWxlIChlbnRyeSAmJiAhdmlzaXRlZC5oYXMoZW50cnkpKSB7XG4gICAgICAgIHZpc2l0ZWQuYWRkKGVudHJ5KTtcbiAgICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW29ycGhhbmVkUmVsYXRpdmVFbnRyaWVzLCBhbmNob3JzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBmaW5hbCBsaXN0IG9mIG1pZGRsZXdhcmUgaW4gdGhlIG9yZGVyIG9mIGJlaW5nIGV4ZWN1dGVkIGluIHRoZSByZXNvbHZlZCBoYW5kbGVyLlxuICAgKiBJZiByZWxhdGl2ZSBlbnRyaWVzIGxpc3QgaXMgbm90IGVtcHR5LCB0aG9zZSBlbnRyaWVzIHdpbGwgYmUgYWRkZWQgdG8gZmluYWwgbWlkZGxld2FyZVxuICAgKiBsaXN0IHdpdGggcnVsZXMgYmVsb3c6XG4gICAqIDEuIGlmIGB0b01pZGRsZXdhcmVgIGV4aXN0cyBpbiB0aGUgc3BlY2lmaWMgYHN0ZXBgLCB0aGUgbWlkZGxld2FyZSB3aWxsIGJlIGluc2VydGVkIGJlZm9yZVxuICAgKiAgICAgb3IgYWZ0ZXIgdGhlIHNwZWNpZmllZCBgdG9NaWRkbGV3YXJlYFxuICAgKiAyLiBpZiBgdG9NaWRkbGV3YXJlYCBkb2Vzbid0IGV4aXN0IGluIHRoZSBzcGVjaWZpYyBgc3RlcGAsIHRoZSBtaWRkbGV3YXJlIHdpbGwgYmUgYXBwZW5kZWRcbiAgICogICAgIHRvIHNwZWNpZmljIGBzdGVwYCB3aXRoIHByaW9yaXR5IG9mIGBub3JtYWxgXG4gICAqL1xuICBwcml2YXRlIGdlTWlkZGxld2FyZUxpc3QoKTogQXJyYXk8TWlkZGxld2FyZVR5cGU8SW5wdXQsIE91dHB1dD4+IHtcbiAgICBsZXQgbWlkZGxld2FyZUxpc3Q6IEFycmF5PE1pZGRsZXdhcmVUeXBlPElucHV0LCBPdXRwdXQ+PiA9IFtdO1xuICAgIGNvbnN0IFtvcnBoYW5lZFJlbGF0aXZlRW50cmllcywgYW5jaG9yc10gPSB0aGlzLm5vcm1hbGl6ZVJlbGF0aXZlRW50cmllcygpO1xuICAgIGxldCBlbnRyeUxpc3QgPSBbLi4udGhpcy5hYnNvbHV0ZUVudHJpZXMsIC4uLm9ycGhhbmVkUmVsYXRpdmVFbnRyaWVzXTtcbiAgICBlbnRyeUxpc3QgPSB0aGlzLnNvcnQoZW50cnlMaXN0KTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJ5TGlzdCkge1xuICAgICAgY29uc3QgZGVmYXVsdEFuY2hvclZhbHVlID0geyBwcmV2OiB1bmRlZmluZWQsIG5leHQ6IHVuZGVmaW5lZCB9O1xuICAgICAgY29uc3QgeyBwcmV2LCBuZXh0IH0gPSBlbnRyeS5uYW1lXG4gICAgICAgID8gYW5jaG9yc1tlbnRyeS5uYW1lXSB8fCBkZWZhdWx0QW5jaG9yVmFsdWVcbiAgICAgICAgOiBkZWZhdWx0QW5jaG9yVmFsdWU7XG4gICAgICBsZXQgcmVsYXRpdmVFbnRyeSA9IHByZXY7XG4gICAgICAvL3JldmVyc2UgcmVsYXRpdmUgZW50cnkgbGlua2VkIGxpc3QgYW5kIGFkZCB0byBvcmRlcmVkIGhhbmRsZXIgbGlzdFxuICAgICAgd2hpbGUgKHJlbGF0aXZlRW50cnk/LnByZXYpIHtcbiAgICAgICAgcmVsYXRpdmVFbnRyeSA9IHJlbGF0aXZlRW50cnkucHJldjtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChyZWxhdGl2ZUVudHJ5KSB7XG4gICAgICAgIG1pZGRsZXdhcmVMaXN0LnB1c2gocmVsYXRpdmVFbnRyeS5taWRkbGV3YXJlKTtcbiAgICAgICAgcmVsYXRpdmVFbnRyeSA9IHJlbGF0aXZlRW50cnkubmV4dDtcbiAgICAgIH1cbiAgICAgIG1pZGRsZXdhcmVMaXN0LnB1c2goZW50cnkubWlkZGxld2FyZSk7XG4gICAgICBsZXQgb3JwaGFuZWRFbnRyeSA9IGVudHJ5IGFzIGFueTtcbiAgICAgIHdoaWxlICgob3JwaGFuZWRFbnRyeSBhcyBhbnkpLm5leHQpIHtcbiAgICAgICAgbWlkZGxld2FyZUxpc3QucHVzaCgob3JwaGFuZWRFbnRyeSBhcyBhbnkpLm5leHQubWlkZGxld2FyZSk7XG4gICAgICAgIG9ycGhhbmVkRW50cnkgPSAob3JwaGFuZWRFbnRyeSBhcyBhbnkpLm5leHQ7XG4gICAgICB9XG4gICAgICByZWxhdGl2ZUVudHJ5ID0gbmV4dDtcbiAgICAgIHdoaWxlIChyZWxhdGl2ZUVudHJ5KSB7XG4gICAgICAgIG1pZGRsZXdhcmVMaXN0LnB1c2gocmVsYXRpdmVFbnRyeS5taWRkbGV3YXJlKTtcbiAgICAgICAgcmVsYXRpdmVFbnRyeSA9IHJlbGF0aXZlRW50cnkubmV4dDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1pZGRsZXdhcmVMaXN0LnJldmVyc2UoKTtcbiAgfVxuXG4gIHJlc29sdmU8SW5wdXRUeXBlIGV4dGVuZHMgSW5wdXQsIE91dHB1dFR5cGUgZXh0ZW5kcyBPdXRwdXQ+KFxuICAgIGhhbmRsZXI6IERlc2VyaWFsaXplSGFuZGxlcjxJbnB1dFR5cGUsIE91dHB1dFR5cGU+LFxuICAgIGNvbnRleHQ6IEhhbmRsZXJFeGVjdXRpb25Db250ZXh0XG4gICk6IEhhbmRsZXI8SW5wdXRUeXBlLCBPdXRwdXRUeXBlPiB7XG4gICAgZm9yIChjb25zdCBtaWRkbGV3YXJlIG9mIHRoaXMuZ2VNaWRkbGV3YXJlTGlzdCgpKSB7XG4gICAgICBoYW5kbGVyID0gbWlkZGxld2FyZShcbiAgICAgICAgaGFuZGxlciBhcyBIYW5kbGVyPElucHV0LCBPdXRwdXRUeXBlPixcbiAgICAgICAgY29udGV4dFxuICAgICAgKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZXIgYXMgSGFuZGxlcjxJbnB1dFR5cGUsIE91dHB1dFR5cGU+O1xuICB9XG59XG5cbmNvbnN0IHN0ZXBXZWlnaHRzOiB7IFtrZXkgaW4gU3RlcF06IG51bWJlciB9ID0ge1xuICBpbml0aWFsaXplOiA1LFxuICBzZXJpYWxpemU6IDQsXG4gIGJ1aWxkOiAzLFxuICBmaW5hbGl6ZVJlcXVlc3Q6IDIsXG4gIGRlc2VyaWFsaXplOiAxXG59O1xuXG5jb25zdCBwcmlvcml0eVdlaWdodHM6IHsgW2tleSBpbiBQcmlvcml0eV06IG51bWJlciB9ID0ge1xuICBoaWdoOiAzLFxuICBub3JtYWw6IDIsXG4gIGxvdzogMVxufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlkZGxld2FyZVN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL01pZGRsZXdhcmVTdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvQ0E7SUFBQTtRQUNtQixvQkFBZSxHQUEwQyxFQUFFLENBQUM7UUFDNUQsb0JBQWUsR0FFNUIsRUFBRSxDQUFDO1FBQ0MsbUJBQWMsR0FJbEIsRUFBRSxDQUFDO0lBeVlULENBQUM7SUE5V0MsNkJBQUcsR0FBSCxVQUNFLFVBQXlDLEVBQ3pDLE9BQStDO1FBQS9DLHdCQUFBLEVBQUEsWUFBK0M7UUFFdkMsSUFBQSxtQkFBSSxFQUFFLGlCQUFtQixFQUFuQix3Q0FBbUIsRUFBRSxtQkFBSSxFQUFFLHFCQUFtQixFQUFuQix3Q0FBbUIsQ0FBYTtRQUN6RSxJQUFNLEtBQUssR0FBbUM7WUFDNUMsSUFBSSxNQUFBO1lBQ0osSUFBSSxNQUFBO1lBQ0osSUFBSSxNQUFBO1lBQ0osUUFBUSxVQUFBO1lBQ1IsVUFBVSxZQUFBO1NBQ1gsQ0FBQztRQUNGLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDbkUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBK0IsSUFBSSxNQUFHLENBQUMsQ0FBQzthQUN6RDtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQTJCRCx1Q0FBYSxHQUFiLFVBQ0UsVUFBeUMsRUFDekMsT0FBeUQ7UUFFakQsSUFBQSxpQkFBbUIsRUFBbkIsd0NBQW1CLEVBQUUsbUJBQUksRUFBRSxtQkFBSSxFQUFFLDJCQUFRLEVBQUUsbUNBQVksQ0FBYTtRQUM1RSxJQUFNLEtBQUss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QkFBaUIsRUFBRSxFQUF4QixjQUF3QixFQUF4QixJQUF3QixFQUFFO1lBQTlDLElBQU0sVUFBVSxTQUFBO1lBQ25CLE9BQU8sR0FBRyxVQUFVLENBQ2xCLE9BQXFDLEVBQ3JDLE9BQU8sQ0FDRCxDQUFDO1NBQ1Y7UUFFRCxPQUFPLE9BQXlDLENBQUM7SUFDbkQsQ0FBQztJQUNILHNCQUFDO0FBQUQsQ0FBQyxBQWxaRCxJQWtaQztBQWxaWSwwQ0FBZTtBQW9aNUIsSUFBTSxXQUFXLEdBQThCO0lBQzdDLFVBQVUsRUFBRSxDQUFDO0lBQ2IsU0FBUyxFQUFFLENBQUM7SUFDWixLQUFLLEVBQUUsQ0FBQztJQUNSLGVBQWUsRUFBRSxDQUFDO0lBQ2xCLFdBQVcsRUFBRSxDQUFDO0NBQ2YsQ0FBQztBQUVGLElBQU0sZUFBZSxHQUFrQztJQUNyRCxJQUFJLEVBQUUsQ0FBQztJQUNQLE1BQU0sRUFBRSxDQUFDO0lBQ1QsR0FBRyxFQUFFLENBQUM7Q0FDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5pdGlhbGl6ZUhhbmRsZXJPcHRpb25zLFxuICBCdWlsZEhhbmRsZXJPcHRpb25zLFxuICBGaW5hbGl6ZVJlcXVlc3RIYW5kbGVyT3B0aW9ucyxcbiAgTWlkZGxld2FyZVR5cGUsXG4gIFNlcmlhbGl6ZU1pZGRsZXdhcmUsXG4gIEZpbmFsaXplUmVxdWVzdE1pZGRsZXdhcmUsXG4gIEhhbmRsZXJFeGVjdXRpb25Db250ZXh0LFxuICBIYW5kbGVyT3B0aW9ucyxcbiAgSW5pdGlhbGl6ZU1pZGRsZXdhcmUsXG4gIE1pZGRsZXdhcmVTdGFjayBhcyBJTWlkZGxld2FyZVN0YWNrLFxuICBTZXJpYWxpemVIYW5kbGVyT3B0aW9ucyxcbiAgU3RlcCxcbiAgRGVzZXJpYWxpemVNaWRkbGV3YXJlLFxuICBEZXNlcmlhbGl6ZUhhbmRsZXJPcHRpb25zLFxuICBEZXNlcmlhbGl6ZUhhbmRsZXIsXG4gIFBsdWdnYWJsZSxcbiAgQnVpbGRNaWRkbGV3YXJlLFxuICBIYW5kbGVyLFxuICBQcmlvcml0eSxcbiAgQWJzb2x1dGVMb2NhdGlvbixcbiAgUmVsYXRpdmVMb2NhdGlvblxufSBmcm9tIFwiQGF3cy1zZGsvdHlwZXNcIjtcbmltcG9ydCB7XG4gIE1pZGRsZXdhcmVFbnRyeSxcbiAgUmVsYXRpdmVNaWRkbGV3YXJlRW50cnksXG4gIE5vcm1hbGl6ZWRSZWxhdGl2ZUVudHJ5LFxuICBOYW1lZE1pZGRsZXdhcmVFbnRyaWVzTWFwLFxuICBOYW1lZFJlbGF0aXZlRW50cmllc01hcCxcbiAgUmVsYXRpdmVNaWRkbGV3YXJlQW5jaG9yLFxuICBOb3JtYWxpemluZ0VudHJ5UmVzdWx0XG59IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlkZGxld2FyZVN0YWNrPElucHV0IGV4dGVuZHMgb2JqZWN0LCBPdXRwdXQgZXh0ZW5kcyBvYmplY3Q+XG4gIGV4dGVuZHMgSU1pZGRsZXdhcmVTdGFjazxJbnB1dCwgT3V0cHV0PiB7fVxuXG5leHBvcnQgY2xhc3MgTWlkZGxld2FyZVN0YWNrPElucHV0IGV4dGVuZHMgb2JqZWN0LCBPdXRwdXQgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhYnNvbHV0ZUVudHJpZXM6IEFycmF5PE1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0Pj4gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWxhdGl2ZUVudHJpZXM6IEFycmF5PFxuICAgIFJlbGF0aXZlTWlkZGxld2FyZUVudHJ5PElucHV0LCBPdXRwdXQ+XG4gID4gPSBbXTtcbiAgcHJpdmF0ZSBlbnRyaWVzTmFtZU1hcDoge1xuICAgIFttaWRkbGV3YXJlTmFtZTogc3RyaW5nXTpcbiAgICAgIHwgTWlkZGxld2FyZUVudHJ5PElucHV0LCBPdXRwdXQ+XG4gICAgICB8IFJlbGF0aXZlTWlkZGxld2FyZUVudHJ5PElucHV0LCBPdXRwdXQ+O1xuICB9ID0ge307XG5cbiAgYWRkKFxuICAgIG1pZGRsZXdhcmU6IEluaXRpYWxpemVNaWRkbGV3YXJlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM/OiBJbml0aWFsaXplSGFuZGxlck9wdGlvbnMgJiBBYnNvbHV0ZUxvY2F0aW9uXG4gICk6IHZvaWQ7XG5cbiAgYWRkKFxuICAgIG1pZGRsZXdhcmU6IFNlcmlhbGl6ZU1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogU2VyaWFsaXplSGFuZGxlck9wdGlvbnMgJiBBYnNvbHV0ZUxvY2F0aW9uXG4gICk6IHZvaWQ7XG5cbiAgYWRkKFxuICAgIG1pZGRsZXdhcmU6IEJ1aWxkTWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zOiBCdWlsZEhhbmRsZXJPcHRpb25zICYgQWJzb2x1dGVMb2NhdGlvblxuICApOiB2b2lkO1xuXG4gIGFkZChcbiAgICBtaWRkbGV3YXJlOiBGaW5hbGl6ZVJlcXVlc3RNaWRkbGV3YXJlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM6IEZpbmFsaXplUmVxdWVzdEhhbmRsZXJPcHRpb25zICYgQWJzb2x1dGVMb2NhdGlvblxuICApOiB2b2lkO1xuXG4gIGFkZChcbiAgICBtaWRkbGV3YXJlOiBEZXNlcmlhbGl6ZU1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogRGVzZXJpYWxpemVIYW5kbGVyT3B0aW9ucyAmIEFic29sdXRlTG9jYXRpb25cbiAgKTogdm9pZDtcblxuICBhZGQoXG4gICAgbWlkZGxld2FyZTogTWlkZGxld2FyZVR5cGU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogSGFuZGxlck9wdGlvbnMgJiBBYnNvbHV0ZUxvY2F0aW9uID0ge31cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgeyBuYW1lLCBzdGVwID0gXCJpbml0aWFsaXplXCIsIHRhZ3MsIHByaW9yaXR5ID0gXCJub3JtYWxcIiB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBlbnRyeTogTWlkZGxld2FyZUVudHJ5PElucHV0LCBPdXRwdXQ+ID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0ZXAsXG4gICAgICB0YWdzLFxuICAgICAgcHJpb3JpdHksXG4gICAgICBtaWRkbGV3YXJlXG4gICAgfTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmVudHJpZXNOYW1lTWFwLCBuYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZWQgbWlkZGxld2FyZSBuYW1lICcke25hbWV9J2ApO1xuICAgICAgfVxuICAgICAgdGhpcy5lbnRyaWVzTmFtZU1hcFtuYW1lXSA9IGVudHJ5O1xuICAgIH1cbiAgICB0aGlzLmFic29sdXRlRW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGFkZFJlbGF0aXZlVG8oXG4gICAgbWlkZGxld2FyZTogSW5pdGlhbGl6ZU1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogSW5pdGlhbGl6ZUhhbmRsZXJPcHRpb25zICYgUmVsYXRpdmVMb2NhdGlvbjxJbnB1dCwgT3V0cHV0PlxuICApOiB2b2lkO1xuXG4gIGFkZFJlbGF0aXZlVG8oXG4gICAgbWlkZGxld2FyZTogU2VyaWFsaXplTWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zOiBTZXJpYWxpemVIYW5kbGVyT3B0aW9ucyAmIFJlbGF0aXZlTG9jYXRpb248SW5wdXQsIE91dHB1dD5cbiAgKTogdm9pZDtcblxuICBhZGRSZWxhdGl2ZVRvKFxuICAgIG1pZGRsZXdhcmU6IEJ1aWxkTWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zOiBCdWlsZEhhbmRsZXJPcHRpb25zICYgUmVsYXRpdmVMb2NhdGlvbjxJbnB1dCwgT3V0cHV0PlxuICApOiB2b2lkO1xuXG4gIGFkZFJlbGF0aXZlVG8oXG4gICAgbWlkZGxld2FyZTogRmluYWxpemVSZXF1ZXN0TWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zOiBGaW5hbGl6ZVJlcXVlc3RIYW5kbGVyT3B0aW9ucyAmIFJlbGF0aXZlTG9jYXRpb248SW5wdXQsIE91dHB1dD5cbiAgKTogdm9pZDtcblxuICBhZGRSZWxhdGl2ZVRvKFxuICAgIG1pZGRsZXdhcmU6IERlc2VyaWFsaXplTWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zOiBEZXNlcmlhbGl6ZUhhbmRsZXJPcHRpb25zICYgUmVsYXRpdmVMb2NhdGlvbjxJbnB1dCwgT3V0cHV0PlxuICApOiB2b2lkO1xuXG4gIGFkZFJlbGF0aXZlVG8oXG4gICAgbWlkZGxld2FyZTogTWlkZGxld2FyZVR5cGU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogSGFuZGxlck9wdGlvbnMgJiBSZWxhdGl2ZUxvY2F0aW9uPElucHV0LCBPdXRwdXQ+XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHsgc3RlcCA9IFwiaW5pdGlhbGl6ZVwiLCBuYW1lLCB0YWdzLCByZWxhdGlvbiwgdG9NaWRkbGV3YXJlIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGVudHJ5OiBSZWxhdGl2ZU1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PiA9IHtcbiAgICAgIG1pZGRsZXdhcmUsXG4gICAgICBzdGVwLFxuICAgICAgbmFtZSxcbiAgICAgIHRhZ3MsXG4gICAgICBuZXh0OiByZWxhdGlvbiA9PT0gXCJiZWZvcmVcIiA/IHRvTWlkZGxld2FyZSA6IHVuZGVmaW5lZCxcbiAgICAgIHByZXY6IHJlbGF0aW9uID09PSBcImFmdGVyXCIgPyB0b01pZGRsZXdhcmUgOiB1bmRlZmluZWRcbiAgICB9O1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuZW50cmllc05hbWVNYXAsIG5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlZCBtaWRkbGV3YXJlIG5hbWUgJyR7bmFtZX0nYCk7XG4gICAgICB9XG4gICAgICB0aGlzLmVudHJpZXNOYW1lTWFwW25hbWVdID0gZW50cnk7XG4gICAgfVxuICAgIHRoaXMucmVsYXRpdmVFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0KFxuICAgIGVudHJpZXM6IEFycmF5PFxuICAgICAgTWlkZGxld2FyZUVudHJ5PElucHV0LCBPdXRwdXQ+IHwgTm9ybWFsaXplZFJlbGF0aXZlRW50cnk8SW5wdXQsIE91dHB1dD5cbiAgICA+XG4gICk6IEFycmF5PFxuICAgIE1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PiB8IE5vcm1hbGl6ZWRSZWxhdGl2ZUVudHJ5PElucHV0LCBPdXRwdXQ+XG4gID4ge1xuICAgIC8vcmV2ZXJzZSBiZWZvcmUgc29ydGluZyBzbyB0aGF0IG1pZGRsZXdhcmUgb2Ygc2FtZSBzdGVwIHdpbGwgZXhlY3V0ZSBpblxuICAgIC8vdGhlIG9yZGVyIG9mIGJlaW5nIGFkZGVkXG4gICAgcmV0dXJuIGVudHJpZXMuc29ydChcbiAgICAgIChhLCBiKSA9PlxuICAgICAgICBzdGVwV2VpZ2h0c1tiLnN0ZXBdIC0gc3RlcFdlaWdodHNbYS5zdGVwXSB8fFxuICAgICAgICBwcmlvcml0eVdlaWdodHNbYi5wcmlvcml0eSB8fCBcIm5vcm1hbFwiXSAtXG4gICAgICAgICAgcHJpb3JpdHlXZWlnaHRzW2EucHJpb3JpdHkgfHwgXCJub3JtYWxcIl1cbiAgICApO1xuICB9XG5cbiAgY2xvbmUoKTogSU1pZGRsZXdhcmVTdGFjazxJbnB1dCwgT3V0cHV0PiB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgTWlkZGxld2FyZVN0YWNrPElucHV0LCBPdXRwdXQ+KCk7XG4gICAgY2xvbmUuYWJzb2x1dGVFbnRyaWVzLnB1c2goLi4udGhpcy5hYnNvbHV0ZUVudHJpZXMpO1xuICAgIGNsb25lLnJlbGF0aXZlRW50cmllcy5wdXNoKC4uLnRoaXMucmVsYXRpdmVFbnRyaWVzKTtcbiAgICBjbG9uZS5lbnRyaWVzTmFtZU1hcCA9IHsgLi4udGhpcy5lbnRyaWVzTmFtZU1hcCB9O1xuICAgIHJldHVybiBjbG9uZTtcbiAgfVxuXG4gIGNvbmNhdDxJbnB1dFR5cGUgZXh0ZW5kcyBJbnB1dCwgT3V0cHV0VHlwZSBleHRlbmRzIE91dHB1dD4oXG4gICAgZnJvbTogSU1pZGRsZXdhcmVTdGFjazxJbnB1dFR5cGUsIE91dHB1dFR5cGU+XG4gICk6IE1pZGRsZXdhcmVTdGFjazxJbnB1dFR5cGUsIE91dHB1dFR5cGU+IHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBNaWRkbGV3YXJlU3RhY2s8SW5wdXRUeXBlLCBPdXRwdXRUeXBlPigpO1xuICAgIGNsb25lLmVudHJpZXNOYW1lTWFwID0geyAuLi4odGhpcy5lbnRyaWVzTmFtZU1hcCBhcyBhbnkpIH07XG4gICAgLy8gSU1pZGRsZXdhcmVTdGFjayBpbnRlcmZhY2UgZG9lc24ndCBjb250YWluIHByaXZhdGUgbWVtYmVycyB2YXJpYWJsZXNcbiAgICAvLyBsaWtlIGBlbnRyaWVzTmFtZU1hcGAsIGJ1dCBpbiBmYWN0IHRoZSBmdW5jdGlvbiBleHBlY3RzIGBNaWRkbGV3YXJlU3RhY2tgXG4gICAgLy8gY2xhc3MgaW5zdGFuY2UuIFNvIGhlcmUgd2UgY2FzdCBpdC5cbiAgICBjb25zdCBfZnJvbSA9IGZyb20gYXMgTWlkZGxld2FyZVN0YWNrPElucHV0VHlwZSwgT3V0cHV0VHlwZT47XG4gICAgZm9yIChjb25zdCBuYW1lIGluIF9mcm9tLmVudHJpZXNOYW1lTWFwKSB7XG4gICAgICBpZiAoY2xvbmUuZW50cmllc05hbWVNYXBbbmFtZV0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGVkIG1pZGRsZXdhcmUgbmFtZSAnJHtuYW1lfSdgKTtcbiAgICAgIH1cbiAgICAgIGNsb25lLmVudHJpZXNOYW1lTWFwW25hbWVdID0gX2Zyb20uZW50cmllc05hbWVNYXBbbmFtZV07XG4gICAgfVxuICAgIGNsb25lLmFic29sdXRlRW50cmllcy5wdXNoKFxuICAgICAgLi4uKHRoaXMuYWJzb2x1dGVFbnRyaWVzIGFzIGFueSksXG4gICAgICAuLi5fZnJvbS5hYnNvbHV0ZUVudHJpZXNcbiAgICApO1xuICAgIGNsb25lLnJlbGF0aXZlRW50cmllcy5wdXNoKFxuICAgICAgLi4uKHRoaXMucmVsYXRpdmVFbnRyaWVzIGFzIGFueSksXG4gICAgICAuLi5fZnJvbS5yZWxhdGl2ZUVudHJpZXNcbiAgICApO1xuICAgIHJldHVybiBjbG9uZTtcbiAgfVxuXG4gIHJlbW92ZSh0b1JlbW92ZTogTWlkZGxld2FyZVR5cGU8SW5wdXQsIE91dHB1dD4gfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHRvUmVtb3ZlID09PSBcInN0cmluZ1wiKSByZXR1cm4gdGhpcy5yZW1vdmVCeU5hbWUodG9SZW1vdmUpO1xuICAgIGVsc2UgcmV0dXJuIHRoaXMucmVtb3ZlQnlSZWZlcmVuY2UodG9SZW1vdmUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVCeU5hbWUodG9SZW1vdmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAobGV0IGkgPSB0aGlzLmFic29sdXRlRW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFic29sdXRlRW50cmllc1tpXS5uYW1lICYmXG4gICAgICAgIHRoaXMuYWJzb2x1dGVFbnRyaWVzW2ldLm5hbWUgPT09IHRvUmVtb3ZlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5hYnNvbHV0ZUVudHJpZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBkZWxldGUgdGhpcy5lbnRyaWVzTmFtZU1hcFt0b1JlbW92ZV07XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpID0gdGhpcy5yZWxhdGl2ZUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5yZWxhdGl2ZUVudHJpZXNbaV0ubmFtZSAmJlxuICAgICAgICB0aGlzLnJlbGF0aXZlRW50cmllc1tpXS5uYW1lID09PSB0b1JlbW92ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMucmVsYXRpdmVFbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgZGVsZXRlIHRoaXMuZW50cmllc05hbWVNYXBbdG9SZW1vdmVdO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVCeVJlZmVyZW5jZSh0b1JlbW92ZTogTWlkZGxld2FyZVR5cGU8SW5wdXQsIE91dHB1dD4pOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBpID0gdGhpcy5hYnNvbHV0ZUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmICh0aGlzLmFic29sdXRlRW50cmllc1tpXS5taWRkbGV3YXJlID09PSB0b1JlbW92ZSkge1xuICAgICAgICBjb25zdCB7IG5hbWUgfSA9IHRoaXMuYWJzb2x1dGVFbnRyaWVzW2ldO1xuICAgICAgICBpZiAobmFtZSkgZGVsZXRlIHRoaXMuZW50cmllc05hbWVNYXBbbmFtZV07XG4gICAgICAgIHRoaXMuYWJzb2x1dGVFbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSB0aGlzLnJlbGF0aXZlRW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKHRoaXMucmVsYXRpdmVFbnRyaWVzW2ldLm1pZGRsZXdhcmUgPT09IHRvUmVtb3ZlKSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSB9ID0gdGhpcy5yZWxhdGl2ZUVudHJpZXNbaV07XG4gICAgICAgIGlmIChuYW1lKSBkZWxldGUgdGhpcy5lbnRyaWVzTmFtZU1hcFtuYW1lXTtcbiAgICAgICAgdGhpcy5yZWxhdGl2ZUVudHJpZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVtb3ZlQnlUYWcodG9SZW1vdmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCByZW1vdmVkID0gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IHRoaXMuYWJzb2x1dGVFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCB7IHRhZ3MsIG5hbWUgfSA9IHRoaXMuYWJzb2x1dGVFbnRyaWVzW2ldO1xuICAgICAgaWYgKHRhZ3MgJiYgdGFncy5pbmRleE9mKHRvUmVtb3ZlKSA+IC0xKSB7XG4gICAgICAgIHRoaXMuYWJzb2x1dGVFbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgaWYgKG5hbWUpIGRlbGV0ZSB0aGlzLmVudHJpZXNOYW1lTWFwW25hbWVdO1xuICAgICAgICByZW1vdmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IHRoaXMucmVsYXRpdmVFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCB7IHRhZ3MsIG5hbWUgfSA9IHRoaXMucmVsYXRpdmVFbnRyaWVzW2ldO1xuICAgICAgaWYgKHRhZ3MgJiYgdGFncy5pbmRleE9mKHRvUmVtb3ZlKSA+IC0xKSB7XG4gICAgICAgIHRoaXMucmVsYXRpdmVFbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgaWYgKG5hbWUpIGRlbGV0ZSB0aGlzLmVudHJpZXNOYW1lTWFwW25hbWVdO1xuICAgICAgICByZW1vdmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlbW92ZWQ7XG4gIH1cblxuICB1c2UocGx1Z2luOiBQbHVnZ2FibGU8SW5wdXQsIE91dHB1dD4pIHtcbiAgICBwbHVnaW4uYXBwbHlUb1N0YWNrKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgcmVsYXRpdmUgbWlkZGxld2FyZSBlbnRyaWVzIHRvIG11bHRpcGxlIGRvdWJsZSBsaW5rZWQgbGlzdHNcbiAgICogZGVwaWN0aW5nIHRoZSByZWxhdGl2ZSBsb2NhdGlvbiBvZiBtaWRkbGV3YXJlLiBPbmx5IG1pZGRsZXdhcmUgdGhhdCBoYXZlXG4gICAqIGRpcmVjdCBvciB0cmFuc2l0aXZlIHJlbGF0aW9uIHdpbGwgZm9ybSBhIGxpbmtlZCBsaXN0LlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIG5vcm1hbGl6ZXMgcmVsYXRpdmUgbWlkZGxld2FyZSBpbnRvIDIgY2F0ZWdvcmllcyBvZiBsaW5rZWRcbiAgICogbGlzdHMuICgxKSBsaW5rZWQgbGlzdCB0aGF0IGhhdmUgYWJzb2x1dGUtbG9jYXRlZCBtaWRkbGV3YXJlIG9uIG9uZSBlbmQuXG4gICAqIFRoZXNlIG1pZGRsZXdhcmUgd2lsbCBiZSByZXNvbHZlZCBhY2NvcmRpbmdseSBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGFic29sdXRlLVxuICAgKiBsb2NhdGVkIG1pZGRsZXdhcmUuICgyKSBMaW5rZWQgbGlzdCB0aGF0IGhhdmUgbm8gYWJzb2x1dGUtbG9jYXRlZCBtaWRkbGV3YXJlXG4gICAqIG9uIGFueSBlbmQuIFRoZXkgd2lsbCBiZSByZXNvbHZlZCB0byBjb3JyZXNwb25kaW5nIHN0ZXAgd2l0aCBub3JtYWwgcHJpb3JpdHlcbiAgICpcbiAgICogVGhlIDIgdHlwZXMgb2YgbGlua2VkIGxpc3Qgd2lsbCByZXR1cm4gYXMgYSB0dXBsZVxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVSZWxhdGl2ZUVudHJpZXMoKTogTm9ybWFsaXppbmdFbnRyeVJlc3VsdDxJbnB1dCwgT3V0cHV0PiB7XG4gICAgY29uc3QgYWJzb2x1dGVNaWRkbGV3YXJlTmFtZXNNYXAgPSB0aGlzLmFic29sdXRlRW50cmllc1xuICAgICAgLmZpbHRlcihlbnRyeSA9PiBlbnRyeS5uYW1lKVxuICAgICAgLnJlZHVjZSgoYWNjdW11bGF0b3IsIGVudHJ5KSA9PiB7XG4gICAgICAgIGFjY3VtdWxhdG9yW2VudHJ5Lm5hbWUhXSA9IGVudHJ5O1xuICAgICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgICB9LCB7fSBhcyBOYW1lZE1pZGRsZXdhcmVFbnRyaWVzTWFwPElucHV0LCBPdXRwdXQ+KTtcbiAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5yZWxhdGl2ZUVudHJpZXMubWFwKFxuICAgICAgZW50cnkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICBwcmlvcml0eTogbnVsbCxcbiAgICAgICAgICBuZXh0OiB1bmRlZmluZWQsXG4gICAgICAgICAgcHJldjogdW5kZWZpbmVkXG4gICAgICAgIH0gYXMgTm9ybWFsaXplZFJlbGF0aXZlRW50cnk8SW5wdXQsIE91dHB1dD4pXG4gICAgKTtcbiAgICBjb25zdCByZWxhdGl2ZU1pZGRsZXdhcmVOYW1lc01hcCA9IG5vcm1hbGl6ZWRcbiAgICAgIC5maWx0ZXIoZW50cnkgPT4gZW50cnkubmFtZSlcbiAgICAgIC5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBlbnRyeSkgPT4ge1xuICAgICAgICBhY2N1bXVsYXRvcltlbnRyeS5uYW1lIV0gPSBlbnRyeTtcbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgfSwge30gYXMgTmFtZWRSZWxhdGl2ZUVudHJpZXNNYXA8SW5wdXQsIE91dHB1dD4pO1xuXG4gICAgY29uc3QgYW5jaG9yczogUmVsYXRpdmVNaWRkbGV3YXJlQW5jaG9yPElucHV0LCBPdXRwdXQ+ID0ge307XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlbGF0aXZlRW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgeyBwcmV2LCBuZXh0IH0gPSB0aGlzLnJlbGF0aXZlRW50cmllc1tpXTtcbiAgICAgIGNvbnN0IHJlc29sdmVkQ3VyciA9IG5vcm1hbGl6ZWRbaV07XG4gICAgICAvL2VpdGhlciBwcmV2IG9yIG5leHQgaXMgc2V0XG4gICAgICBpZiAocHJldikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYWJzb2x1dGVNaWRkbGV3YXJlTmFtZXNNYXBbcHJldl0gJiZcbiAgICAgICAgICBhYnNvbHV0ZU1pZGRsZXdhcmVOYW1lc01hcFtwcmV2XS5zdGVwID09PSByZXNvbHZlZEN1cnIuc3RlcFxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoIWFuY2hvcnNbcHJldl0pIGFuY2hvcnNbcHJldl0gPSB7fTtcbiAgICAgICAgICByZXNvbHZlZEN1cnIubmV4dCA9IGFuY2hvcnNbcHJldl0ubmV4dDtcbiAgICAgICAgICBpZiAoYW5jaG9yc1twcmV2XS5uZXh0KSBhbmNob3JzW3ByZXZdLm5leHQhLnByZXYgPSByZXNvbHZlZEN1cnI7XG4gICAgICAgICAgYW5jaG9yc1twcmV2XS5uZXh0ID0gcmVzb2x2ZWRDdXJyO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIHJlbGF0aXZlTWlkZGxld2FyZU5hbWVzTWFwW3ByZXZdICYmXG4gICAgICAgICAgcmVsYXRpdmVNaWRkbGV3YXJlTmFtZXNNYXBbcHJldl0uc3RlcCA9PT0gcmVzb2x2ZWRDdXJyLnN0ZXBcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRQcmV2ID0gcmVsYXRpdmVNaWRkbGV3YXJlTmFtZXNNYXBbcHJldl07XG4gICAgICAgICAgaWYgKHJlc29sdmVkUHJldi5uZXh0ID09PSByZXNvbHZlZEN1cnIpIGNvbnRpbnVlO1xuICAgICAgICAgIHJlc29sdmVkQ3Vyci5uZXh0ID0gcmVzb2x2ZWRQcmV2Lm5leHQ7XG4gICAgICAgICAgcmVzb2x2ZWRQcmV2Lm5leHQgPSByZXNvbHZlZEN1cnI7XG4gICAgICAgICAgaWYgKHJlc29sdmVkQ3Vyci5uZXh0KSByZXNvbHZlZEN1cnIubmV4dC5wcmV2ID0gcmVzb2x2ZWRDdXJyO1xuICAgICAgICAgIHJlc29sdmVkQ3Vyci5wcmV2ID0gcmVzb2x2ZWRQcmV2O1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG5leHQpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFic29sdXRlTWlkZGxld2FyZU5hbWVzTWFwW25leHRdICYmXG4gICAgICAgICAgYWJzb2x1dGVNaWRkbGV3YXJlTmFtZXNNYXBbbmV4dF0uc3RlcCA9PT0gcmVzb2x2ZWRDdXJyLnN0ZXBcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKCFhbmNob3JzW25leHRdKSBhbmNob3JzW25leHRdID0ge307XG4gICAgICAgICAgcmVzb2x2ZWRDdXJyLnByZXYgPSBhbmNob3JzW25leHRdLnByZXY7XG4gICAgICAgICAgaWYgKGFuY2hvcnNbbmV4dF0ucHJldikgYW5jaG9yc1tuZXh0XS5wcmV2IS5uZXh0ID0gcmVzb2x2ZWRDdXJyO1xuICAgICAgICAgIGFuY2hvcnNbbmV4dF0ucHJldiA9IHJlc29sdmVkQ3VycjtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICByZWxhdGl2ZU1pZGRsZXdhcmVOYW1lc01hcFtuZXh0XSAmJlxuICAgICAgICAgIHJlbGF0aXZlTWlkZGxld2FyZU5hbWVzTWFwW25leHRdLnN0ZXAgPT09IHJlc29sdmVkQ3Vyci5zdGVwXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHJlc29sdmVkTmV4dCA9IHJlbGF0aXZlTWlkZGxld2FyZU5hbWVzTWFwW25leHRdO1xuICAgICAgICAgIGlmIChyZXNvbHZlZE5leHQucHJldiA9PT0gcmVzb2x2ZWRDdXJyKSBjb250aW51ZTtcbiAgICAgICAgICByZXNvbHZlZEN1cnIucHJldiA9IHJlc29sdmVkTmV4dC5wcmV2O1xuICAgICAgICAgIHJlc29sdmVkTmV4dC5wcmV2ID0gcmVzb2x2ZWRDdXJyO1xuICAgICAgICAgIGlmIChyZXNvbHZlZEN1cnIucHJldikgcmVzb2x2ZWRDdXJyLnByZXYubmV4dCA9IHJlc29sdmVkQ3VycjtcbiAgICAgICAgICByZXNvbHZlZEN1cnIubmV4dCA9IHJlc29sdmVkTmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBnZXQgdGhlIGhlYWQgb2YgdGhlIHJlbGF0aXZlIG1pZGRsZXdhcmUgbGlua2VkIGxpc3QgdGhhdCBoYXZlXG4gICAgLy8gbm8gdHJhbnNpdGl2ZSByZWxhdGlvbiB0byBhYnNvbHV0ZSBtaWRkbGV3YXJlLlxuICAgIGNvbnN0IG9ycGhhbmVkUmVsYXRpdmVFbnRyaWVzOiBBcnJheTxOb3JtYWxpemVkUmVsYXRpdmVFbnRyeTxcbiAgICAgIElucHV0LFxuICAgICAgT3V0cHV0XG4gICAgPj4gPSBbXTtcbiAgICBjb25zdCB2aXNpdGVkOiBXZWFrU2V0PE5vcm1hbGl6ZWRSZWxhdGl2ZUVudHJ5PFxuICAgICAgSW5wdXQsXG4gICAgICBPdXRwdXRcbiAgICA+PiA9IG5ldyBXZWFrU2V0KCk7XG4gICAgZm9yIChjb25zdCBhbmNob3JOYW1lIG9mIE9iamVjdC5rZXlzKGFuY2hvcnMpKSB7XG4gICAgICBsZXQgeyBwcmV2LCBuZXh0IH0gPSBhbmNob3JzW2FuY2hvck5hbWVdO1xuICAgICAgd2hpbGUgKHByZXYpIHtcbiAgICAgICAgdmlzaXRlZC5hZGQocHJldik7XG4gICAgICAgIHByZXYgPSBwcmV2LnByZXY7XG4gICAgICB9XG4gICAgICB3aGlsZSAobmV4dCkge1xuICAgICAgICB2aXNpdGVkLmFkZChuZXh0KTtcbiAgICAgICAgbmV4dCA9IG5leHQubmV4dDtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub3JtYWxpemVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgZW50cnk6IE5vcm1hbGl6ZWRSZWxhdGl2ZUVudHJ5PElucHV0LCBPdXRwdXQ+IHwgdW5kZWZpbmVkID1cbiAgICAgICAgbm9ybWFsaXplZFtpXTtcbiAgICAgIGlmICh2aXNpdGVkLmhhcyhlbnRyeSkpIGNvbnRpbnVlO1xuICAgICAgaWYgKCFlbnRyeS5wcmV2KSBvcnBoYW5lZFJlbGF0aXZlRW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICAgIHdoaWxlIChlbnRyeSAmJiAhdmlzaXRlZC5oYXMoZW50cnkpKSB7XG4gICAgICAgIHZpc2l0ZWQuYWRkKGVudHJ5KTtcbiAgICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW29ycGhhbmVkUmVsYXRpdmVFbnRyaWVzLCBhbmNob3JzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBmaW5hbCBsaXN0IG9mIG1pZGRsZXdhcmUgaW4gdGhlIG9yZGVyIG9mIGJlaW5nIGV4ZWN1dGVkIGluIHRoZSByZXNvbHZlZCBoYW5kbGVyLlxuICAgKiBJZiByZWxhdGl2ZSBlbnRyaWVzIGxpc3QgaXMgbm90IGVtcHR5LCB0aG9zZSBlbnRyaWVzIHdpbGwgYmUgYWRkZWQgdG8gZmluYWwgbWlkZGxld2FyZVxuICAgKiBsaXN0IHdpdGggcnVsZXMgYmVsb3c6XG4gICAqIDEuIGlmIGB0b01pZGRsZXdhcmVgIGV4aXN0cyBpbiB0aGUgc3BlY2lmaWMgYHN0ZXBgLCB0aGUgbWlkZGxld2FyZSB3aWxsIGJlIGluc2VydGVkIGJlZm9yZVxuICAgKiAgICAgb3IgYWZ0ZXIgdGhlIHNwZWNpZmllZCBgdG9NaWRkbGV3YXJlYFxuICAgKiAyLiBpZiBgdG9NaWRkbGV3YXJlYCBkb2Vzbid0IGV4aXN0IGluIHRoZSBzcGVjaWZpYyBgc3RlcGAsIHRoZSBtaWRkbGV3YXJlIHdpbGwgYmUgYXBwZW5kZWRcbiAgICogICAgIHRvIHNwZWNpZmljIGBzdGVwYCB3aXRoIHByaW9yaXR5IG9mIGBub3JtYWxgXG4gICAqL1xuICBwcml2YXRlIGdldE1pZGRsZXdhcmVMaXN0KCk6IEFycmF5PE1pZGRsZXdhcmVUeXBlPElucHV0LCBPdXRwdXQ+PiB7XG4gICAgbGV0IG1pZGRsZXdhcmVMaXN0OiBBcnJheTxNaWRkbGV3YXJlVHlwZTxJbnB1dCwgT3V0cHV0Pj4gPSBbXTtcbiAgICBjb25zdCBbb3JwaGFuZWRSZWxhdGl2ZUVudHJpZXMsIGFuY2hvcnNdID0gdGhpcy5ub3JtYWxpemVSZWxhdGl2ZUVudHJpZXMoKTtcbiAgICBsZXQgZW50cnlMaXN0ID0gWy4uLnRoaXMuYWJzb2x1dGVFbnRyaWVzLCAuLi5vcnBoYW5lZFJlbGF0aXZlRW50cmllc107XG4gICAgZW50cnlMaXN0ID0gdGhpcy5zb3J0KGVudHJ5TGlzdCk7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyeUxpc3QpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRBbmNob3JWYWx1ZSA9IHsgcHJldjogdW5kZWZpbmVkLCBuZXh0OiB1bmRlZmluZWQgfTtcbiAgICAgIGNvbnN0IHsgcHJldiwgbmV4dCB9ID0gZW50cnkubmFtZVxuICAgICAgICA/IGFuY2hvcnNbZW50cnkubmFtZV0gfHwgZGVmYXVsdEFuY2hvclZhbHVlXG4gICAgICAgIDogZGVmYXVsdEFuY2hvclZhbHVlO1xuICAgICAgbGV0IHJlbGF0aXZlRW50cnkgPSBwcmV2O1xuICAgICAgLy9yZXZlcnNlIHJlbGF0aXZlIGVudHJ5IGxpbmtlZCBsaXN0IGFuZCBhZGQgdG8gb3JkZXJlZCBoYW5kbGVyIGxpc3RcbiAgICAgIHdoaWxlIChyZWxhdGl2ZUVudHJ5Py5wcmV2KSB7XG4gICAgICAgIHJlbGF0aXZlRW50cnkgPSByZWxhdGl2ZUVudHJ5LnByZXY7XG4gICAgICB9XG4gICAgICB3aGlsZSAocmVsYXRpdmVFbnRyeSkge1xuICAgICAgICBtaWRkbGV3YXJlTGlzdC5wdXNoKHJlbGF0aXZlRW50cnkubWlkZGxld2FyZSk7XG4gICAgICAgIHJlbGF0aXZlRW50cnkgPSByZWxhdGl2ZUVudHJ5Lm5leHQ7XG4gICAgICB9XG4gICAgICBtaWRkbGV3YXJlTGlzdC5wdXNoKGVudHJ5Lm1pZGRsZXdhcmUpO1xuICAgICAgbGV0IG9ycGhhbmVkRW50cnkgPSBlbnRyeSBhcyBhbnk7XG4gICAgICB3aGlsZSAoKG9ycGhhbmVkRW50cnkgYXMgYW55KS5uZXh0KSB7XG4gICAgICAgIG1pZGRsZXdhcmVMaXN0LnB1c2goKG9ycGhhbmVkRW50cnkgYXMgYW55KS5uZXh0Lm1pZGRsZXdhcmUpO1xuICAgICAgICBvcnBoYW5lZEVudHJ5ID0gKG9ycGhhbmVkRW50cnkgYXMgYW55KS5uZXh0O1xuICAgICAgfVxuICAgICAgcmVsYXRpdmVFbnRyeSA9IG5leHQ7XG4gICAgICB3aGlsZSAocmVsYXRpdmVFbnRyeSkge1xuICAgICAgICBtaWRkbGV3YXJlTGlzdC5wdXNoKHJlbGF0aXZlRW50cnkubWlkZGxld2FyZSk7XG4gICAgICAgIHJlbGF0aXZlRW50cnkgPSByZWxhdGl2ZUVudHJ5Lm5leHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtaWRkbGV3YXJlTGlzdC5yZXZlcnNlKCk7XG4gIH1cblxuICByZXNvbHZlPElucHV0VHlwZSBleHRlbmRzIElucHV0LCBPdXRwdXRUeXBlIGV4dGVuZHMgT3V0cHV0PihcbiAgICBoYW5kbGVyOiBEZXNlcmlhbGl6ZUhhbmRsZXI8SW5wdXRUeXBlLCBPdXRwdXRUeXBlPixcbiAgICBjb250ZXh0OiBIYW5kbGVyRXhlY3V0aW9uQ29udGV4dFxuICApOiBIYW5kbGVyPElucHV0VHlwZSwgT3V0cHV0VHlwZT4ge1xuICAgIGZvciAoY29uc3QgbWlkZGxld2FyZSBvZiB0aGlzLmdldE1pZGRsZXdhcmVMaXN0KCkpIHtcbiAgICAgIGhhbmRsZXIgPSBtaWRkbGV3YXJlKFxuICAgICAgICBoYW5kbGVyIGFzIEhhbmRsZXI8SW5wdXQsIE91dHB1dFR5cGU+LFxuICAgICAgICBjb250ZXh0XG4gICAgICApIGFzIGFueTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlciBhcyBIYW5kbGVyPElucHV0VHlwZSwgT3V0cHV0VHlwZT47XG4gIH1cbn1cblxuY29uc3Qgc3RlcFdlaWdodHM6IHsgW2tleSBpbiBTdGVwXTogbnVtYmVyIH0gPSB7XG4gIGluaXRpYWxpemU6IDUsXG4gIHNlcmlhbGl6ZTogNCxcbiAgYnVpbGQ6IDMsXG4gIGZpbmFsaXplUmVxdWVzdDogMixcbiAgZGVzZXJpYWxpemU6IDFcbn07XG5cbmNvbnN0IHByaW9yaXR5V2VpZ2h0czogeyBba2V5IGluIFByaW9yaXR5XTogbnVtYmVyIH0gPSB7XG4gIGhpZ2g6IDMsXG4gIG5vcm1hbDogMixcbiAgbG93OiAxXG59O1xuIl19

@@ -6,2 +6,84 @@ # Change Log

# [1.0.0-beta.3](https://github.com/aws/aws-sdk-js-v3/compare/@aws-sdk/middleware-stack@0.1.0-preview.3...@aws-sdk/middleware-stack@1.0.0-beta.3) (2020-04-25)
# 1.0.0-beta.2 (2020-03-28)
# 1.0.0-beta.1 (2020-03-25)
### Features
* bump packages to beta ([#1050](https://github.com/aws/aws-sdk-js-v3/issues/1050)) ([40501d4](https://github.com/aws/aws-sdk-js-v3/commit/40501d4394d04bc1bc91c10136fa48b1d3a67d8f))
# 1.0.0-alpha.28 (2020-03-20)
# 1.0.0-alpha.24 (2020-02-19)
# 1.0.0-alpha.13 (2020-01-24)
# 1.0.0-alpha.12 (2020-01-22)
# 0.9.0 (2020-01-09)
### Bug Fixes
* fix bugs when recursively appending middleware ([#476](https://github.com/aws/aws-sdk-js-v3/issues/476)) ([5afc0d6](https://github.com/aws/aws-sdk-js-v3/commit/5afc0d6368ce5cc867425325b3eb77db6090f077))
### Features
* apply protocol and middleware update ([0de0a22](https://github.com/aws/aws-sdk-js-v3/commit/0de0a22c2a97a0dd3d27eee67e5e31fb32402a11))
* remove absolute priority numbers from middleware stack ([#434](https://github.com/aws/aws-sdk-js-v3/issues/434)) ([2ad5796](https://github.com/aws/aws-sdk-js-v3/commit/2ad579698f5679a0cb120daad38d539e2944abed))
* standardize plugins ([#422](https://github.com/aws/aws-sdk-js-v3/issues/422)) ([09112e5](https://github.com/aws/aws-sdk-js-v3/commit/09112e5a61dcb4a4c5ef5e544c1964545d30e046))
# 0.7.0 (2019-11-19)
# 0.6.0 (2019-10-30)
# 0.3.0 (2019-09-09)
### Features
* commit all clients ([#324](https://github.com/aws/aws-sdk-js-v3/issues/324)) ([cb268ed](https://github.com/aws/aws-sdk-js-v3/commit/cb268ed45fd5580ef9633da78f13aaa6aa472805))
# 0.2.0 (2019-07-12)
### Features
* add npm badges for individual packages ([#251](https://github.com/aws/aws-sdk-js-v3/issues/251)) ([8adc10c](https://github.com/aws/aws-sdk-js-v3/commit/8adc10cb6b0ebc32004b797556bfc171c96bbf16))
* update jest v20 to v24 ([#243](https://github.com/aws/aws-sdk-js-v3/issues/243)) ([1e156ab](https://github.com/aws/aws-sdk-js-v3/commit/1e156ab4ac5343058eaf7d448a428d8c4b72c844))
# 0.1.0 (2019-04-19)
# [1.0.0-beta.2](https://github.com/aws/aws-sdk-js-v3/compare/@aws-sdk/middleware-stack@0.1.0-preview.3...@aws-sdk/middleware-stack@1.0.0-beta.2) (2020-03-28)

@@ -8,0 +90,0 @@

{
"name": "@aws-sdk/middleware-stack",
"version": "1.0.0-beta.2",
"version": "1.0.0-beta.3",
"description": "Provides a means for composing multiple middleware functions into a single handler",

@@ -19,3 +19,3 @@ "scripts": {

"dependencies": {
"@aws-sdk/types": "^1.0.0-beta.2",
"@aws-sdk/types": "^1.0.0-beta.3",
"tslib": "^1.8.0"

@@ -22,0 +22,0 @@ },

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc