@cxbuilder/flow-config 2.2.2 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -9103,6 +9103,6 @@
9103
9103
  "symbolId": "infrastructure/FlowConfigStack:LambdaVpcConfig"
9104
9104
  }
9105
9105
  },
9106
- "version": "2.2.2",
9107
- "fingerprint": "HpNVMeRnWssTBe9zdfxT6CPcpkaU2v+sjc/rVnoeD5Q="
9106
+ "version": "2.2.3",
9107
+ "fingerprint": "M3UYVJLKiRmAA1Gd5XkHYVDZXrICXtoyUrx+xL8SAxo="
9108
9108
  }
package/CHANGELOG.md CHANGED
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## 2.2.3 (2026-04-02)
9
+
10
+ - jeff.modzel
11
+ - Bugfix: CloudWatch LogGroup creation for Lambda Functions
12
+
8
13
  ## 2.2.2 (2026-01-05)
9
14
 
10
15
  - sfred
@@ -235,5 +235,5 @@ class FlowConfigStack extends cdk.Stack {
235
235
  }
236
236
  exports.FlowConfigStack = FlowConfigStack;
237
237
  _a = JSII_RTTI_SYMBOL_1;
238
- FlowConfigStack[_a] = { fqn: "@cxbuilder/flow-config.FlowConfigStack", version: "2.2.2" };
238
+ FlowConfigStack[_a] = { fqn: "@cxbuilder/flow-config.FlowConfigStack", version: "2.2.3" };
239
239
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0NvbmZpZ1N0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vaW5mcmFzdHJ1Y3R1cmUvRmxvd0NvbmZpZ1N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLHlEQU1pQztBQUNqQyxxREFBcUQ7QUFFckQsMkNBQTJDO0FBRTNDLG1DQUFnQztBQUNoQyxpREFBNEM7QUFDNUMsNkVBQXNFO0FBQ3RFLHVFQUFvRTtBQUNwRSx5REFBb0U7QUFDcEUseUVBQWlFO0FBQ2pFLDJDQUF3QztBQThIeEMsTUFBYSxlQUFnQixTQUFRLEdBQUcsQ0FBQyxLQUFLO0lBWTVDOzs7T0FHRztJQUNJLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ0gsS0FBMkI7UUFFbEMsTUFBTSxFQUNKLE1BQU0sRUFDTixPQUFPLEVBQ1AsV0FBVyxFQUNYLElBQUksR0FBRyxLQUFLLEVBQ1osZUFBZSxFQUNmLFdBQVcsR0FDWixHQUFHLEtBQUssQ0FBQztRQUNWLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksTUFBTTtZQUNwQyxXQUFXLEVBQ1QsS0FBSyxDQUFDLFdBQVc7Z0JBQ2pCLDJJQUEySTtZQUM3SSxxQkFBcUIsRUFBRSxJQUFJO1NBQzVCLENBQUMsQ0FBQztRQWpCSSxVQUFLLEdBQUwsS0FBSyxDQUFzQjtRQW1CbEMsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxlQUFlO1lBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO1lBQ3hDLENBQUMs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QyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDdkQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGdCQUFnQixLQUFLLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FDakUsQ0FBQztRQUVGLE9BQU87WUFDTCxHQUFHO1lBQ0gsb0JBQW9CO1lBQ3BCLGNBQWM7U0FDZixDQUFDO0lBQ0osQ0FBQzs7QUFwVEgsMENBcVRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIElVc2VyUG9vbCxcbiAgVXNlclBvb2wsXG4gIFVzZXJQb29sQ2xpZW50LFxuICBVc2VyUG9vbENsaWVudElkZW50aXR5UHJvdmlkZXIsXG4gIENmblVzZXJQb29sR3JvdXAsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2duaXRvJztcbmltcG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgeyBJVnBjLCBJU2VjdXJpdHlHcm91cCwgSVN1Ym5ldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBcGkgfSBmcm9tICcuL2FwaS9BcGknO1xuaW1wb3J0IHsgVG9waWMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCB7IEVtYWlsU3Vic2NyaXB0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucy1zdWJzY3JpcHRpb25zJztcbmltcG9ydCB7IFNlY3VyaXR5UHJvZmlsZVByb3ZpZGVyIH0gZnJvbSAnLi9TZWN1cml0eVByb2ZpbGVQcm92aWRlcic7XG5pbXBvcnQgeyBDZm5JbnRlZ3JhdGlvbkFzc29jaWF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvbm5lY3QnO1xuaW1wb3J0IHsgQ2ZuQXBwbGljYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBwaW50ZWdyYXRpb25zJztcbmltcG9ydCB7IEdldENvbmZpZyB9IGZyb20gJy4vR2V0Q29uZmlnJztcblxuLyoqXG4gKiBDb2duaXRvIGNvbmZpZ3VyYXRpb24gZm9yIEZsb3dDb25maWcgc3RhY2tcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2duaXRvQ29uZmlnIHtcbiAgcmVhZG9ubHkgdXNlclBvb2xJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGdWxsIGRvbWFpbiBuYW1lXG4gICAqL1xuICByZWFkb25seSBkb21haW46IHN0cmluZztcblxuICAvKipcbiAgICogSWYgcHJvdmlkZWQsIGNsaWVudCB3aWxsIGF1dGggdG8gU1NPLiBPdGhlcndpc2Ugd2lsbCBhdXRoIHRvIHVzZXIgcG9vbFxuICAgKi9cbiAgcmVhZG9ubHkgc3NvUHJvdmlkZXJOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFZQQyBjb25maWd1cmF0aW9uIGZvciBBUEkgR2F0ZXdheVxuICogSWYgcHJvdmlkZWQsIHRoZSBBUEkgd2lsbCBiZSBkZXBsb3llZCBpbiBhIHByaXZhdGUgVlBDLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaVZwY0NvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIElEIHRvIHVzZSBmb3IgdGhlIEFQSVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBWUEMgZW5kcG9pbnQgSUQgdG8gdXNlIGZvciB0aGUgQVBJXG4gICAqL1xuICByZWFkb25seSB2cGNFbmRwb2ludElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGFtYmRhIFZQQyBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhVnBjQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBWUEMgSUQgdG8gZGVwbG95IHJlc291cmNlcyBpbnRvXG4gICAqL1xuICByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBJRHMgZm9yIExhbWJkYSBmdW5jdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJZHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBQcml2YXRlIHN1Ym5ldCBJRHMgZm9yIExhbWJkYSBmdW5jdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldElkczogc3RyaW5nW107XG59XG5cbi8qKlxuICogR2xvYmFsIHRhYmxlIGNvbmZpZ3VyYXRpb24gZm9yIG11bHRpLXJlZ2lvbiBkZXBsb3ltZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbFRhYmxlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpcyB0aGUgcHJpbWFyeSByZWdpb24gdGhhdCBjcmVhdGVzIHRoZSBnbG9iYWwgdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGlzUHJpbWFyeVJlZ2lvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGlzdCBvZiBhbGwgcmVnaW9ucyB0aGF0IHNob3VsZCBoYXZlIHJlcGxpY2FzXG4gICAqIE9ubHkgdXNlZCBieSB0aGUgcHJpbWFyeSByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2FSZWdpb25zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogSW50ZXJuYWwgaW50ZXJmYWNlIGZvciByZXNvbHZlZCBWUEMgcmVzb3VyY2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRWcGNDb25maWcge1xuICByZWFkb25seSB2cGM6IElWcGM7XG4gIHJlYWRvbmx5IGxhbWJkYVNlY3VyaXR5R3JvdXBzOiBJU2VjdXJpdHlHcm91cFtdO1xuICByZWFkb25seSBwcml2YXRlU3VibmV0czogSVN1Ym5ldFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dDb25maWdTdGFja1Byb3BzIGV4dGVuZHMgY2RrLlN0YWNrUHJvcHMge1xuICAvKipcbiAgICogVXNlZCBmb3IgcmVzb3VyY2UgbmFtaW5nLiBXaWxsIGFsc28gYmUgdGhlIG5hbWUgb2YgdGhlIENvbm5lY3QgTGFtYmRhXG4gICAqIEBleGFtcGxlIGBjeGJ1aWxkZXItZmxvdy1jb25maWdgXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg6IHN0cmluZztcbiAgcmVhZG9ubHkgY29nbml0bzogQ29nbml0b0NvbmZpZztcbiAgcmVhZG9ubHkgY29ubmVjdEluc3RhbmNlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdobyB0byBub3RpZnkgZm9yIHVuaGFuZGxlZCBleGNlcHRpb25zXG4gICAqL1xuICByZWFkb25seSBhbGVydEVtYWlsczogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb2Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBwcm92aWRlZCwgdGhlIEFQSSB3aWxsIGJlIGRlcGxveWVkIGluIGEgVlBDLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpVnBjQ29uZmlnPzogQXBpVnBjQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBJZiBwcm92aWRlZCwgdGhlIExhbWJkYSBmdW5jdGlvbnMgd2lsbCBiZSBkZXBsb3llZCBpbiBhIFZQQy5cbiAgICogTm90ZTogVlBDIHNob3VsZCBjb250YWluIGVuZHBvaW50cyB0bzogQ2xvdWRGb3JtYXRpb24sIExhbWJkYSwgRHluYW1vREIsIFNOUywgYW5kIFBvbGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhVnBjQ29uZmlnPzogTGFtYmRhVnBjQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBHbG9iYWwgdGFibGUgY29uZmlndXJhdGlvbiBmb3IgbXVsdGktcmVnaW9uIGRlcGxveW1lbnRzLlxuICAgKiBJZiBwcm92aWRlZCwgZW5hYmxlcyBnbG9iYWwgdGFibGUgc3VwcG9ydC5cbiAgICogSWYgdW5kZWZpbmVkLCBjcmVhdGVzIGEgc2luZ2xlLXJlZ2lvbiB0YWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbFRhYmxlPzogR2xvYmFsVGFibGVDb25maWc7XG5cbiAgLyoqXG4gICAqIFNldCB0byBmYWxzZSB0byByZW1vdmUgQ1hCdWlsZGVyIGJyYW5kaW5nIGZyb20gdGhlIHdlYiBhcHAuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5kaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhc3NvY2lhdGUgdGhlIGFwcCB3aXRoIHRoZSBDb25uZWN0IEFnZW50IFdvcmtzcGFjZS5cbiAgICogU2V0IHRvIGZhbHNlIHRvIGRpc2FibGUgYXV0b21hdGljIGFzc29jaWF0aW9uLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhc3NvY2lhdGUzcEFwcD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBGbG93Q29uZmlnU3RhY2sgZXh0ZW5kcyBjZGsuU3RhY2sge1xuICB1c2VyUG9vbDogSVVzZXJQb29sO1xuICBwcml2YXRlIGFwaTogQXBpO1xuICB1c2VyUG9vbENsaWVudDogVXNlclBvb2xDbGllbnQ7XG4gIGFsZXJ0VG9waWM6IFRvcGljO1xuICB0YWJsZTogY2RrLmF3c19keW5hbW9kYi5JVGFibGU7XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIFZQQyBjb25maWd1cmF0aW9uIGlmIHByaXZhdGUgZGVwbG95bWVudCBpcyBlbmFibGVkXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNvbHZlZFZwY0NvbmZpZz86IFJlc29sdmVkVnBjQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBHZXQgcmVzb2x2ZWQgVlBDIGNvbmZpZ3VyYXRpb24gZm9yIGNoaWxkIGNvbnN0cnVjdHNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX2dldFJlc29sdmVkVnBjQ29uZmlnKCk6IFJlc29sdmVkVnBjQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZWRWcGNDb25maWc7XG4gIH1cblxuICBnZXQgYXBwVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLnVybDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgcHJvcHM6IEZsb3dDb25maWdTdGFja1Byb3BzXG4gICkge1xuICAgIGNvbnN0IHtcbiAgICAgIHByZWZpeCxcbiAgICAgIGNvZ25pdG8sXG4gICAgICBhbGVydEVtYWlscyxcbiAgICAgIHByb2QgPSBmYWxzZSxcbiAgICAgIGxhbWJkYVZwY0NvbmZpZyxcbiAgICAgIGdsb2JhbFRhYmxlLFxuICAgIH0gPSBwcm9wcztcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgc3RhY2tOYW1lOiBwcm9wcy5zdGFja05hbWUgPz8gcHJlZml4LFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIHByb3BzLmRlc2NyaXB0aW9uID8/XG4gICAgICAgICdXZWItYmFzZWQgaW50ZXJmYWNlIGZvciBtYW5hZ2luZyBmbG93IHZhcmlhYmxlcyBhbmQgcHJvbXB0cyB0aGF0IGFyZSBkeW5hbWljYWxseSByZXRyaWV2ZWQgYnkgQW1hem9uIENvbm5lY3QgZHVyaW5nIGN1c3RvbWVyIGludGVyYWN0aW9ucycsXG4gICAgICB0ZXJtaW5hdGlvblByb3RlY3Rpb246IHByb2QsXG4gICAgfSk7XG5cbiAgICAvLyBSZXNvbHZlIFZQQyBjb25maWd1cmF0aW9uIGlmIHByb3ZpZGVkXG4gICAgdGhpcy5fcmVzb2x2ZWRWcGNDb25maWcgPSBsYW1iZGFWcGNDb25maWdcbiAgICAgID8gdGhpcy5yZXNvbHZlVnBjQ29uZmlnKGxhbWJkYVZwY0NvbmZpZylcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gRHluYW1vREIgdGFibGUgZm9yIHN0b3JpbmcgZmxvdyBjb25maWdzXG4gICAgdGhpcy50YWJsZSA9IHRoaXMuY3JlYXRlVGFibGUocHJlZml4LCBwcm9kLCBnbG9iYWxUYWJsZSk7XG5cbiAgICB0aGlzLmFsZXJ0VG9waWMgPSBuZXcgVG9waWModGhpcywgJ0FsZXJ0VG9waWMnLCB7XG4gICAgICB0b3BpY05hbWU6IGAke3ByZWZpeH0tZXJyb3ItYWxlcnRzYCxcbiAgICB9KTtcbiAgICBhbGVydEVtYWlscy5mb3JFYWNoKChlKSA9PlxuICAgICAgdGhpcy5hbGVydFRvcGljLmFkZFN1YnNjcmlwdGlvbihuZXcgRW1haWxTdWJzY3JpcHRpb24oZSkpXG4gICAgKTtcblxuICAgIHRoaXMudXNlclBvb2wgPSBVc2VyUG9vbC5mcm9tVXNlclBvb2xJZChcbiAgICAgIHRoaXMsXG4gICAgICAnVXNlclBvb2wnLFxuICAgICAgY29nbml0by51c2VyUG9vbElkXG4gICAgKTtcblxuICAgIGNvbnN0IGdldENvbmZpZyA9IG5ldyBHZXRDb25maWcodGhpcyk7XG4gICAgdGhpcy5hcGkgPSBuZXcgQXBpKHRoaXMpO1xuXG4gICAgdGhpcy51c2VyUG9vbENsaWVudCA9IHRoaXMuY3JlYXRlVXNlclBvb2xDbGllbnQoKTtcbiAgICB0aGlzLmNyZWF0ZVVzZXJQb29sR3JvdXBzKCk7XG5cbiAgICB0aGlzLmFzc29jaWF0ZTNwQXBwKCk7XG5cbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAnQXBwVXJsJywge1xuICAgICAgdmFsdWU6IHRoaXMuYXBwVXJsLFxuICAgICAgZGVzY3JpcHRpb246ICdCYXNlIFVSTCBmb3IgdGhlIEZsb3cgQ29uZmlnIGFwcGxpY2F0aW9uJyxcbiAgICB9KTtcbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAnQXBpVXJsJywge1xuICAgICAgdmFsdWU6IGAke3RoaXMuYXBwVXJsfS9hcGlgLFxuICAgICAgZGVzY3JpcHRpb246ICdCYXNlIFVSTCBmb3IgdGhlIEZsb3cgQ29uZmlnIEFQSScsXG4gICAgfSk7XG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgJ0dldENvbmZpZ0xhbWJkYU5hbWUnLCB7XG4gICAgICB2YWx1ZTogZ2V0Q29uZmlnLmZ1bmN0aW9uLmZ1bmN0aW9uTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnTGFtYmRhIGZ1bmN0aW9uIG5hbWUgZm9yIGFjY2Vzc2luZyBmbG93IGNvbmZpZ3MgZnJvbSBDb25uZWN0JyxcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZVVzZXJQb29sQ2xpZW50KCk6IFVzZXJQb29sQ2xpZW50IHtcbiAgICBjb25zdCB7IHByZWZpeCwgY29nbml0byB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IGRvbWFpbnMgPSBbJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcsIHRoaXMuYXBwVXJsXTtcblxuICAgIGNvbnN0IG9BdXRoID0ge1xuICAgICAgY2FsbGJhY2tVcmxzOiBkb21haW5zLm1hcCgoeCkgPT4gYCR7eH0vcG9wdXAuaHRtbGApLFxuICAgICAgbG9nb3V0VXJsczogZG9tYWlucyxcbiAgICB9O1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBVc2VyUG9vbENsaWVudCh0aGlzLCAnVXNlclBvb2xDbGllbnQnLCB7XG4gICAgICB1c2VyUG9vbENsaWVudE5hbWU6IHByZWZpeCxcbiAgICAgIHVzZXJQb29sOiB0aGlzLnVzZXJQb29sLFxuICAgICAgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM6IGNvZ25pdG8uc3NvUHJvdmlkZXJOYW1lXG4gICAgICAgID8gW1VzZXJQb29sQ2xpZW50SWRlbnRpdHlQcm92aWRlci5jdXN0b20oY29nbml0by5zc29Qcm92aWRlck5hbWUpXVxuICAgICAgICA6IFtVc2VyUG9vbENsaWVudElkZW50aXR5UHJvdmlkZXIuQ09HTklUT10sXG4gICAgICBnZW5lcmF0ZVNlY3JldDogZmFsc2UsXG4gICAgICBvQXV0aCxcbiAgICB9KTtcblxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsICdVc2VyUG9vbENsaWVudElkJywge1xuICAgICAgdmFsdWU6IGNsaWVudC51c2VyUG9vbENsaWVudElkLFxuICAgIH0pO1xuICAgIHJldHVybiBjbGllbnQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIENvZ25pdG8gVXNlciBHcm91cHMgZm9yIHJvbGUtYmFzZWQgYWNjZXNzIGNvbnRyb2xcbiAgICovXG4gIGNyZWF0ZVVzZXJQb29sR3JvdXBzKCk6IHZvaWQge1xuICAgIC8vIEZsb3dDb25maWdBZG1pbiAtIEZ1bGwgQ1JVRCBhY2Nlc3NcbiAgICBuZXcgQ2ZuVXNlclBvb2xHcm91cCh0aGlzLCAnRmxvd0NvbmZpZ0FkbWluR3JvdXAnLCB7XG4gICAgICB1c2VyUG9vbElkOiB0aGlzLnVzZXJQb29sLnVzZXJQb29sSWQsXG4gICAgICBncm91cE5hbWU6ICdGbG93Q29uZmlnQWRtaW4nLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdGdWxsIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBhbGwgZmxvdyBjb25maWdzIC0gY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIGZsb3cgY29uZmlncyBhbmQgYWxsIHRoZWlyIHByb3BlcnRpZXMnLFxuICAgICAgcHJlY2VkZW5jZTogMSxcbiAgICB9KTtcblxuICAgIC8vIEZsb3dDb25maWdFZGl0IC0gRWRpdCB2YXJpYWJsZS9wcm9tcHQgdmFsdWVzIG9ubHlcbiAgICBuZXcgQ2ZuVXNlclBvb2xHcm91cCh0aGlzLCAnRmxvd0NvbmZpZ0VkaXRHcm91cCcsIHtcbiAgICAgIHVzZXJQb29sSWQ6IHRoaXMudXNlclBvb2wudXNlclBvb2xJZCxcbiAgICAgIGdyb3VwTmFtZTogJ0Zsb3dDb25maWdFZGl0JyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRWRpdCBhY2Nlc3MgdG8gZmxvdyBjb25maWdzIC0gY2FuIHJlYWQgYW5kIG1vZGlmeSB2YXJpYWJsZSB2YWx1ZXMgYW5kIHByb21wdCBjb250ZW50IGJ1dCBjYW5ub3QgYWRkL3JlbW92ZSBmaWVsZHMgb3IgZGVsZXRlIGNvbmZpZ3MnLFxuICAgICAgcHJlY2VkZW5jZTogMixcbiAgICB9KTtcblxuICAgIC8vIEZsb3dDb25maWdSZWFkIC0gUmVhZC1vbmx5IGFjY2Vzc1xuICAgIG5ldyBDZm5Vc2VyUG9vbEdyb3VwKHRoaXMsICdGbG93Q29uZmlnUmVhZEdyb3VwJywge1xuICAgICAgdXNlclBvb2xJZDogdGhpcy51c2VyUG9vbC51c2VyUG9vbElkLFxuICAgICAgZ3JvdXBOYW1lOiAnRmxvd0NvbmZpZ1JlYWQnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdSZWFkLW9ubHkgYWNjZXNzIHRvIGFsbCBmbG93IGNvbmZpZ3MgZm9yIHJlcG9ydGluZyBhbmQgcmVmZXJlbmNlIHB1cnBvc2VzJyxcbiAgICAgIHByZWNlZGVuY2U6IDMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXNzb2NpYXRlIEZsb3dDb25maWcgYXMgQWdlbnQgV29ya3NwYWNlIGFwcFxuICAgKi9cbiAgYXNzb2NpYXRlM3BBcHAoKSB7XG4gICAgY29uc3Qge1xuICAgICAgcHJvcHM6IHsgcHJlZml4LCBjb25uZWN0SW5zdGFuY2VBcm4sIGFzc29jaWF0ZTNwQXBwID0gdHJ1ZSB9LFxuICAgICAgYXBwVXJsOiB1cmwsXG4gICAgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWFzc29jaWF0ZTNwQXBwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG5hbWVzcGFjZSA9IGBjeGJ1aWxkZXIuJHtwcmVmaXh9YDtcbiAgICBpZiAobmFtZXNwYWNlLmxlbmd0aCA+IDMyICYmICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKG5hbWVzcGFjZSkpIHtcbiAgICAgIG5hbWVzcGFjZSA9IG5hbWVzcGFjZS5zdWJzdHJpbmcoMCwgMzIpO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcCA9IG5ldyBDZm5BcHBsaWNhdGlvbih0aGlzLCAnM3BBcHAnLCB7XG4gICAgICBuYW1lOiB0aGlzLnByb3BzLnByZWZpeCxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQWdlbnQgV29ya3NwYWNlIGFwcCBmb3IgY29uZmlndXJpbmcgY29udGFjdCBmbG93IHZhcmlhYmxlcyBhbmQgcHJvbXB0cycsXG4gICAgICBuYW1lc3BhY2UsXG4gICAgICBhcHBsaWNhdGlvblNvdXJjZUNvbmZpZzoge1xuICAgICAgICBleHRlcm5hbFVybENvbmZpZzoge1xuICAgICAgICAgIGFjY2Vzc1VybDogdXJsLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIC8vIGRvY3M6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jb25uZWN0L2xhdGVzdC9hZG1pbmd1aWRlLzNwLWFwcHMtZXZlbnRzLXJlcXVlc3RzLmh0bWxcbiAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICdVc2VyLkRldGFpbHMuVmlldycsXG4gICAgICAgICdVc2VyLkNvbmZpZ3VyYXRpb24uVmlldycsXG4gICAgICAgICdVc2VyLlN0YXR1cy5WaWV3JyxcbiAgICAgICAgJ0NvbnRhY3QuRGV0YWlscy5WaWV3JyxcbiAgICAgICAgJ0NvbnRhY3QuQ3VzdG9tZXJEZXRhaWxzLlZpZXcnLFxuICAgICAgICAnQ29udGFjdC5WYXJpYWJsZXMuVmlldycsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYXNzb2NpYXRpb24gPSBuZXcgQ2ZuSW50ZWdyYXRpb25Bc3NvY2lhdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICAnM3BBcHBBc3NvY2lhdGlvbicsXG4gICAgICB7XG4gICAgICAgIGluc3RhbmNlSWQ6IGNvbm5lY3RJbnN0YW5jZUFybixcbiAgICAgICAgaW50ZWdyYXRpb25UeXBlOiAnQVBQTElDQVRJT04nLFxuICAgICAgICBpbnRlZ3JhdGlvbkFybjogYXBwLmF0dHJBcHBsaWNhdGlvbkFybixcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgU2VjdXJpdHlQcm9maWxlUHJvdmlkZXIoXG4gICAgICB0aGlzLFxuICAgICAgJ1NlY3VyaXR5UHJvZmlsZVByb3ZpZGVyJyxcbiAgICAgIHtcbiAgICAgICAgY29ubmVjdEluc3RhbmNlQXJuLFxuICAgICAgfVxuICAgICk7XG4gICAgcHJvdmlkZXIubm9kZS5hZGREZXBlbmRlbmN5KGFzc29jaWF0aW9uKTtcblxuICAgIC8vIEF1dG9tYXRpY2FsbHkgYXNzb2NpYXRlIHdpdGggc2VjdXJpdHkgcHJvZmlsZXNcbiAgICBjb25zdCBzZWN1cml0eVByb2ZpbGVzID0gWydBZG1pbiddO1xuICAgIGZvciAoY29uc3QgcHJvZmlsZSBvZiBzZWN1cml0eVByb2ZpbGVzKSB7XG4gICAgICBwcm92aWRlci5hbGxvd0FwcGxpY2F0aW9uKGBBbGxvdyR7cHJvZmlsZX1gLCBwcm9maWxlLCBuYW1lc3BhY2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgRHluYW1vREIgdGFibGUgd2l0aCBvcHRpb25hbCBnbG9iYWwgdGFibGUgc3VwcG9ydFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVUYWJsZShcbiAgICBwcmVmaXg6IHN0cmluZyxcbiAgICBwcm9kOiBib29sZWFuLFxuICAgIGdsb2JhbFRhYmxlPzogR2xvYmFsVGFibGVDb25maWdcbiAgKTogZHluYW1vZGIuSVRhYmxlIHtcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBwcmVmaXg7XG5cbiAgICBpZiAoIWdsb2JhbFRhYmxlKSB7XG4gICAgICAvLyBTaW5nbGUtcmVnaW9uIHRhYmxlXG4gICAgICByZXR1cm4gbmV3IGR5bmFtb2RiLlRhYmxlVjIodGhpcywgJ1RhYmxlJywge1xuICAgICAgICB0YWJsZU5hbWUsXG4gICAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgdHlwZTogZHluYW1vZGIuQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICAgIH0sXG4gICAgICAgIGJpbGxpbmc6IGR5bmFtb2RiLkJpbGxpbmcub25EZW1hbmQoKSxcbiAgICAgICAgcG9pbnRJblRpbWVSZWNvdmVyeVNwZWNpZmljYXRpb246IHtcbiAgICAgICAgICBwb2ludEluVGltZVJlY292ZXJ5RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBwcm9kLFxuICAgICAgICByZW1vdmFsUG9saWN5OiBwcm9kXG4gICAgICAgICAgPyBjZGsuUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICAgICAgICA6IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoZ2xvYmFsVGFibGUuaXNQcmltYXJ5UmVnaW9uKSB7XG4gICAgICAvLyBQcmltYXJ5IHJlZ2lvbiBjcmVhdGVzIGdsb2JhbCB0YWJsZSB3aXRoIHJlcGxpY2FzXG4gICAgICBjb25zdCB0YWJsZSA9IG5ldyBkeW5hbW9kYi5UYWJsZVYyKHRoaXMsICdUYWJsZScsIHtcbiAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgIHR5cGU6IGR5bmFtb2RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgICB9LFxuICAgICAgICBiaWxsaW5nOiBkeW5hbW9kYi5CaWxsaW5nLm9uRGVtYW5kKCksXG4gICAgICAgIHBvaW50SW5UaW1lUmVjb3ZlcnlTcGVjaWZpY2F0aW9uOiB7XG4gICAgICAgICAgcG9pbnRJblRpbWVSZWNvdmVyeUVuYWJsZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogcHJvZCxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogcHJvZFxuICAgICAgICAgID8gY2RrLlJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAgICAgICAgOiBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSk7XG4gICAgICBpZiAoZ2xvYmFsVGFibGUucmVwbGljYVJlZ2lvbnMpIHtcbiAgICAgICAgZm9yIChjb25zdCByZWdpb24gb2YgZ2xvYmFsVGFibGUucmVwbGljYVJlZ2lvbnMpIHtcbiAgICAgICAgICB0YWJsZS5hZGRSZXBsaWNhKHtcbiAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogcHJvZCxcbiAgICAgICAgICAgIHBvaW50SW5UaW1lUmVjb3ZlcnlTcGVjaWZpY2F0aW9uOiB7XG4gICAgICAgICAgICAgIHBvaW50SW5UaW1lUmVjb3ZlcnlFbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRhYmxlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTZWNvbmRhcnkgcmVnaW9uIHJlZmVyZW5jZXMgZXhpc3RpbmcgZ2xvYmFsIHRhYmxlXG4gICAgICByZXR1cm4gZHluYW1vZGIuVGFibGUuZnJvbVRhYmxlQXJuKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnVGFibGUnLFxuICAgICAgICBgYXJuOmF3czpkeW5hbW9kYjoke3RoaXMucmVnaW9ufToke3RoaXMuYWNjb3VudH06dGFibGUvJHt0YWJsZU5hbWV9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSBWUEMgY29uZmlndXJhdGlvbiBzdHJpbmcgSURzIHRvIENESyBvYmplY3RzXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVWcGNDb25maWcodnBjQ29uZmlnOiBMYW1iZGFWcGNDb25maWcpOiBSZXNvbHZlZFZwY0NvbmZpZyB7XG4gICAgY29uc3QgeyB2cGNJZCwgc2VjdXJpdHlHcm91cElkcywgc3VibmV0SWRzIH0gPSB2cGNDb25maWc7XG5cbiAgICAvLyBSZXNvbHZlIFZQQ1xuICAgIGNvbnN0IHZwYyA9IGVjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCAnUmVzb2x2ZWRWcGMnLCB7IHZwY0lkIH0pO1xuXG4gICAgLy8gUmVzb2x2ZSBMYW1iZGEgc2VjdXJpdHkgZ3JvdXBzXG4gICAgY29uc3QgbGFtYmRhU2VjdXJpdHlHcm91cHMgPSBzZWN1cml0eUdyb3VwSWRzLm1hcCgoc2dJZCwgaW5kZXgpID0+XG4gICAgICBlYzIuU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgTGFtYmRhU2VjdXJpdHlHcm91cCR7aW5kZXh9YCxcbiAgICAgICAgc2dJZFxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBSZXNvbHZlIHByaXZhdGUgc3VibmV0c1xuICAgIGNvbnN0IHByaXZhdGVTdWJuZXRzID0gc3VibmV0SWRzLm1hcCgoc3VibmV0SWQsIGluZGV4KSA9PlxuICAgICAgZWMyLlN1Ym5ldC5mcm9tU3VibmV0SWQodGhpcywgYFByaXZhdGVTdWJuZXQke2luZGV4fWAsIHN1Ym5ldElkKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdnBjLFxuICAgICAgbGFtYmRhU2VjdXJpdHlHcm91cHMsXG4gICAgICBwcml2YXRlU3VibmV0cyxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -36,6 +36,14 @@ function createLambda(scope, id, props) {
36
36
  // Check if we're in a FlowConfigStack and get VPC configuration
37
37
  const stack = aws_cdk_lib_1.Stack.of(scope);
38
38
  const vpcConfig = stack._getResolvedVpcConfig();
39
+ // Create the log group BEFORE the function so CloudFormation establishes the dependency
40
+ // correctly. If the log group is created after using func.functionName, Lambda may
41
+ // auto-create the log group on first invocation before CloudFormation gets to it,
42
+ // causing a "already exists" failure during stack creation.
43
+ const logGroup = new aws_logs_1.LogGroup(scope, `${id}LogGroup`, {
44
+ retention: props.logRetention ?? aws_logs_1.RetentionDays.ONE_MONTH,
45
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
46
+ });
39
47
  const func = new aws_lambda_1.Function(scope, `${id}Function`, {
40
48
  // Apply defaults
41
49
  handler: 'index.handler',
@@ -57,6 +65,8 @@ function createLambda(scope, id, props) {
57
65
  ...props,
58
66
  // Ensure that the log retention custom resource is not created
59
67
  logRetention: undefined,
68
+ // Use our managed log group (must come after spread to override any logGroup in props)
69
+ logGroup,
60
70
  environment: {
61
71
  // see https://docs.aws.amazon.com/lambda/latest/dg/typescript-exceptions.html
62
72
  NODE_OPTIONS: '--enable-source-maps',
@@ -69,17 +79,9 @@ function createLambda(scope, id, props) {
69
79
  },
70
80
  });
71
81
  props.alertTopic?.grantPublish(func);
72
- // Note: we are using this policy instead of log.grantWrite(func) because the func.functionName a circular dependency.
73
- // To constrain LogGroup permissions further, you can use a static functionName with log.grantWrite
74
82
  func.role?.addManagedPolicy(aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName(vpcConfig
75
83
  ? 'service-role/AWSLambdaVPCAccessExecutionRole'
76
84
  : 'service-role/AWSLambdaBasicExecutionRole'));
77
- // Create a self-managed log group
78
- new aws_logs_1.LogGroup(scope, `${id}LogGroup`, {
79
- retention: props.logRetention ?? aws_logs_1.RetentionDays.ONE_MONTH,
80
- logGroupName: `/aws/lambda/${func.functionName}`,
81
- removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
82
- });
83
85
  return func;
84
86
  }
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vaW5mcmFzdHJ1Y3R1cmUvY3JlYXRlTGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBK0JBLG9DQXNHQztBQXJJRCw2Q0FBNkQ7QUFDN0QsaURBQW9EO0FBQ3BELHVEQVFnQztBQUNoQyxtREFBK0Q7QUFHL0QsMkJBQWdDO0FBQ2hDLCtCQUErQjtBQVkvQjs7O0dBR0c7QUFDSCxTQUFnQixZQUFZLENBQzFCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUE4QjtJQUU5QixrREFBa0Q7SUFDbEQsNERBQTREO0lBQzVELE1BQU0sU0FBUyxHQUFHLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEQsSUFBSSxZQUFZLEdBQUcsSUFBQSxjQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEUsSUFBSSxpQkFBaUIsR0FBRyxJQUFBLGNBQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFMUQsMEVBQTBFO0lBQzFFLElBQUksQ0FBQyxJQUFBLGVBQVUsRUFBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7UUFDbkMsOENBQThDO1FBQzlDLFlBQVksR0FBRyxJQUFBLGNBQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdEUsaUJBQWlCLEdBQUcsSUFBQSxjQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxJQUFBLGVBQVUsRUFBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYixtQkFBbUIsU0FBUywrQkFBK0IsaUJBQWlCLE9BQU8sSUFBQSxjQUFPLEVBQ3hGLFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLENBQ1gsSUFBSTtnQkFDSCxvRUFBb0UsQ0FDdkUsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FDVCw0QkFBNEIsU0FBUyxRQUFRLEVBQUUsV0FBVyxZQUFZLEVBQUUsQ0FDekUsQ0FBQztJQUVGLHlEQUF5RDtJQUN6RCxNQUFNLE1BQU0sR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFFdEMsa0NBQWtDO0lBQ2xDLDhFQUE4RTtJQUM5RSxNQUFNLGtCQUFrQixHQUFHLGtCQUFrQixNQUFNLHdEQUF3RCxDQUFDO0lBRTVHLGdFQUFnRTtJQUNoRSxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQW9CLENBQUM7SUFDakQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFFaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxxQkFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO1FBQ2hELGlCQUFpQjtRQUNqQixPQUFPLEVBQUUsZUFBZTtRQUN4QixPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO1FBQzVCLFlBQVksRUFBRSx5QkFBWSxDQUFDLE1BQU07UUFDakMsT0FBTyxFQUFFLG9CQUFPLENBQUMsTUFBTTtRQUN2QixPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzdCLElBQUksRUFBRSxpQkFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDbEMsTUFBTSxFQUFFO1lBQ04seUJBQVksQ0FBQyxtQkFBbUIsQ0FDOUIsS0FBSyxFQUNMLEdBQUcsRUFBRSxpQkFBaUIsRUFDdEIsa0JBQWtCLENBQ25CO1NBQ0Y7UUFDRCxnQ0FBZ0M7UUFDaEMsR0FBRyxDQUFDLFNBQVMsSUFBSTtZQUNmLEdBQUcsRUFBRSxTQUFTLENBQUMsR0FBRztZQUNsQixVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLGNBQWMsRUFBRTtZQUNqRCxjQUFjLEVBQUUsU0FBUyxDQUFDLG9CQUFvQjtTQUMvQyxDQUFDO1FBQ0Ysa0JBQWtCO1FBQ2xCLEdBQUcsS0FBSztRQUNSLCtEQUErRDtRQUMvRCxZQUFZLEVBQUUsU0FBUztRQUN2QixXQUFXLEVBQUU7WUFDWCw4RUFBOEU7WUFDOUUsWUFBWSxFQUFFLHNCQUFzQjtZQUNwQyx1RkFBdUY7WUFDdkYsb0JBQW9CLEVBQUUsT0FBTztZQUM3QixxQkFBcUI7WUFDckIsMkJBQTJCLEVBQUUsTUFBTTtZQUNuQyxlQUFlLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksS0FBSztZQUNwRCxHQUFHLEtBQUssQ0FBQyxXQUFXO1NBQ3JCO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFckMsc0hBQXNIO0lBQ3RILG1HQUFtRztJQUNuRyxJQUFJLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUN6Qix1QkFBYSxDQUFDLHdCQUF3QixDQUNwQyxTQUFTO1FBQ1AsQ0FBQyxDQUFDLDhDQUE4QztRQUNoRCxDQUFDLENBQUMsMENBQTBDLENBQy9DLENBQ0YsQ0FBQztJQUVGLGtDQUFrQztJQUNsQyxJQUFJLG1CQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7UUFDbkMsU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksd0JBQWEsQ0FBQyxTQUFTO1FBQ3hELFlBQVksRUFBRSxlQUFlLElBQUksQ0FBQyxZQUFZLEVBQUU7UUFDaEQsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztLQUNyQyxDQUFDLENBQUM7SUFDSCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBNYW5hZ2VkUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQge1xuICBBcmNoaXRlY3R1cmUsXG4gIFJ1bnRpbWUsXG4gIFRyYWNpbmcsXG4gIEZ1bmN0aW9uLFxuICBGdW5jdGlvblByb3BzLFxuICBDb2RlLFxuICBMYXllclZlcnNpb24sXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBJVG9waWMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IEZsb3dDb25maWdTdGFjayB9IGZyb20gJy4vRmxvd0NvbmZpZ1N0YWNrJztcblxuaW50ZXJmYWNlIENyZWF0ZUxhbWJkYVByb3BzPFRFbnY+XG4gIGV4dGVuZHMgT21pdDxGdW5jdGlvblByb3BzLCAnaGFuZGxlcicgfCAnZW52aXJvbm1lbnQnIHwgJ2NvZGUnIHwgJ3J1bnRpbWUnPiB7XG4gIGVudmlyb25tZW50PzogVEVudjtcblxuICAvKipcbiAgICogTm90aWZ5IHNvbWVvbmUgd2hlbiB5b3VyIGxhbWJkYSBmYWlscyFcbiAgICovXG4gIGFsZXJ0VG9waWM/OiBJVG9waWM7XG59XG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgbG9nIGdyb3VwIGFuZCBsYW1iZGEgd2l0aCBhcHAgZGVmYXVsdHMuXG4gKiBFbmZvcmNlcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdmlhIGdlbmVyaWMgcGFyYW1ldGVyIFRFbnZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxhbWJkYTxURW52PihcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgaWQ6IHN0cmluZyxcbiAgcHJvcHM6IENyZWF0ZUxhbWJkYVByb3BzPFRFbnY+XG4pIHtcbiAgLy8gRGV0ZXJtaW5lIHRoZSBjb2RlIGxvY2F0aW9uIGJhc2VkIG9uIGxvZ2ljYWwgSURcbiAgLy8gSWYgaWQgaXMgXCJIYW5kbGVyXCIsIHVzZSB0aGUgcGFyZW50IGNvbnN0cnVjdCdzIElEIGluc3RlYWRcbiAgY29uc3QgYmFja2VuZElkID0gaWQgPT09ICdIYW5kbGVyJyA/IHNjb3BlLm5vZGUuaWQgOiBpZDtcbiAgbGV0IGNvZGVMb2NhdGlvbiA9IHJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnYmFja2VuZCcsIGJhY2tlbmRJZCk7XG4gIGxldCBleHBlY3RlZEluZGV4RmlsZSA9IHJlc29sdmUoY29kZUxvY2F0aW9uLCAnaW5kZXguanMnKTtcblxuICAvLyBWZXJpZnkgdGhlIGJ1bmRsZWQgTGFtYmRhIGNvZGUgZXhpc3RzLCB0cnkgLi4vZGlzdC9iYWNrZW5kIGlmIG5vdCBmb3VuZFxuICBpZiAoIWV4aXN0c1N5bmMoZXhwZWN0ZWRJbmRleEZpbGUpKSB7XG4gICAgLy8gVHJ5IGFsdGVybmF0aXZlIGxvY2F0aW9uIGluIC4uL2Rpc3QvYmFja2VuZFxuICAgIGNvZGVMb2NhdGlvbiA9IHJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnZGlzdCcsICdiYWNrZW5kJywgYmFja2VuZElkKTtcbiAgICBleHBlY3RlZEluZGV4RmlsZSA9IHJlc29sdmUoY29kZUxvY2F0aW9uLCAnaW5kZXguanMnKTtcblxuICAgIGlmICghZXhpc3RzU3luYyhleHBlY3RlZEluZGV4RmlsZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYExhbWJkYSBmdW5jdGlvbiAke2JhY2tlbmRJZH0gYnVuZGxlZCBjb2RlIG5vdCBmb3VuZCBhdDogJHtleHBlY3RlZEluZGV4RmlsZX0gb3IgJHtyZXNvbHZlKFxuICAgICAgICAgIF9fZGlybmFtZSxcbiAgICAgICAgICAnLi4nLFxuICAgICAgICAgICdiYWNrZW5kJyxcbiAgICAgICAgICBiYWNrZW5kSWQsXG4gICAgICAgICAgJ2luZGV4LmpzJ1xuICAgICAgICApfS4gYCArXG4gICAgICAgICAgJ1BsZWFzZSBydW4gXCJucG0gcnVuIGJ1aWxkOmxhbWJkYXNcIiB0byBidW5kbGUgdGhlIExhbWJkYSBmdW5jdGlvbnMuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZyhcbiAgICBg8J+TpiBVc2luZyBMYW1iZGEgY29kZSBmb3IgJHtiYWNrZW5kSWR9IChpZD0ke2lkfSkgZnJvbTogJHtjb2RlTG9jYXRpb259YFxuICApO1xuXG4gIC8vIEdldCB0aGUgY3VycmVudCByZWdpb24gZm9yIHRoZSBMYW1iZGEgUG93ZXJ0b29scyBsYXllclxuICBjb25zdCByZWdpb24gPSBTdGFjay5vZihzY29wZSkucmVnaW9uO1xuXG4gIC8vIEFXUyBMYW1iZGEgUG93ZXJ0b29scyBsYXllciBBUk5cbiAgLy8gU2VlOiBodHRwczovL2RvY3MucG93ZXJ0b29scy5hd3MuZGV2L2xhbWJkYS90eXBlc2NyaXB0L2xhdGVzdC8jbGFtYmRhLWxheWVyXG4gIGNvbnN0IHBvd2VydG9vbHNMYXllckFybiA9IGBhcm46YXdzOmxhbWJkYToke3JlZ2lvbn06MDk0Mjc0MTA1OTE1OmxheWVyOkFXU0xhbWJkYVBvd2VydG9vbHNUeXBlU2NyaXB0VjI6MjJgO1xuXG4gIC8vIENoZWNrIGlmIHdlJ3JlIGluIGEgRmxvd0NvbmZpZ1N0YWNrIGFuZCBnZXQgVlBDIGNvbmZpZ3VyYXRpb25cbiAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSkgYXMgRmxvd0NvbmZpZ1N0YWNrO1xuICBjb25zdCB2cGNDb25maWcgPSBzdGFjay5fZ2V0UmVzb2x2ZWRWcGNDb25maWcoKTtcblxuICBjb25zdCBmdW5jID0gbmV3IEZ1bmN0aW9uKHNjb3BlLCBgJHtpZH1GdW5jdGlvbmAsIHtcbiAgICAvLyBBcHBseSBkZWZhdWx0c1xuICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18yMl9YLFxuICAgIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChjb2RlTG9jYXRpb24pLFxuICAgIGxheWVyczogW1xuICAgICAgTGF5ZXJWZXJzaW9uLmZyb21MYXllclZlcnNpb25Bcm4oXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBgJHtpZH1Qb3dlcnRvb2xzTGF5ZXJgLFxuICAgICAgICBwb3dlcnRvb2xzTGF5ZXJBcm5cbiAgICAgICksXG4gICAgXSxcbiAgICAvLyBWUEMgY29uZmlndXJhdGlvbiBpZiBwcm92aWRlZFxuICAgIC4uLih2cGNDb25maWcgJiYge1xuICAgICAgdnBjOiB2cGNDb25maWcudnBjLFxuICAgICAgdnBjU3VibmV0czogeyBzdWJuZXRzOiB2cGNDb25maWcucHJpdmF0ZVN1Ym5ldHMgfSxcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiB2cGNDb25maWcubGFtYmRhU2VjdXJpdHlHcm91cHMsXG4gICAgfSksXG4gICAgLy8gQXBwbHkgb3ZlcnJpZGVzXG4gICAgLi4ucHJvcHMsXG4gICAgLy8gRW5zdXJlIHRoYXQgdGhlIGxvZyByZXRlbnRpb24gY3VzdG9tIHJlc291cmNlIGlzIG5vdCBjcmVhdGVkXG4gICAgbG9nUmV0ZW50aW9uOiB1bmRlZmluZWQsXG4gICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgIC8vIHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy90eXBlc2NyaXB0LWV4Y2VwdGlvbnMuaHRtbFxuICAgICAgTk9ERV9PUFRJT05TOiAnLS1lbmFibGUtc291cmNlLW1hcHMnLFxuICAgICAgLy8gTG9nIGxldmVsLiBEbyBub3QgZW1pdCBERUJVRyBpbiBwcm9kIGVudmlyb25tZW50IGJlY2F1c2UgaXQgd2lsbCBibG9hdCB5b3VyIENXIGNvc3RzXG4gICAgICBQT1dFUlRPT0xTX0xPR19MRVZFTDogJ0RFQlVHJyxcbiAgICAgIC8vIExvZyBpbmNvbWluZyBldmVudFxuICAgICAgUE9XRVJUT09MU19MT0dHRVJfTE9HX0VWRU5UOiAndHJ1ZScsXG4gICAgICBBTEVSVF9UT1BJQ19BUk46IHByb3BzLmFsZXJ0VG9waWM/LnRvcGljQXJuID8/ICdOL0EnLFxuICAgICAgLi4ucHJvcHMuZW52aXJvbm1lbnQsXG4gICAgfSxcbiAgfSk7XG5cbiAgcHJvcHMuYWxlcnRUb3BpYz8uZ3JhbnRQdWJsaXNoKGZ1bmMpO1xuXG4gIC8vIE5vdGU6IHdlIGFyZSB1c2luZyB0aGlzIHBvbGljeSBpbnN0ZWFkIG9mIGxvZy5ncmFudFdyaXRlKGZ1bmMpIGJlY2F1c2UgdGhlIGZ1bmMuZnVuY3Rpb25OYW1lIGEgY2lyY3VsYXIgZGVwZW5kZW5jeS5cbiAgLy8gVG8gY29uc3RyYWluIExvZ0dyb3VwIHBlcm1pc3Npb25zIGZ1cnRoZXIsIHlvdSBjYW4gdXNlIGEgc3RhdGljIGZ1bmN0aW9uTmFtZSB3aXRoIGxvZy5ncmFudFdyaXRlXG4gIGZ1bmMucm9sZT8uYWRkTWFuYWdlZFBvbGljeShcbiAgICBNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICAgIHZwY0NvbmZpZ1xuICAgICAgICA/ICdzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhVlBDQWNjZXNzRXhlY3V0aW9uUm9sZSdcbiAgICAgICAgOiAnc2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZSdcbiAgICApXG4gICk7XG5cbiAgLy8gQ3JlYXRlIGEgc2VsZi1tYW5hZ2VkIGxvZyBncm91cFxuICBuZXcgTG9nR3JvdXAoc2NvcGUsIGAke2lkfUxvZ0dyb3VwYCwge1xuICAgIHJldGVudGlvbjogcHJvcHMubG9nUmV0ZW50aW9uID8/IFJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgIGxvZ0dyb3VwTmFtZTogYC9hd3MvbGFtYmRhLyR7ZnVuYy5mdW5jdGlvbk5hbWV9YCxcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gIH0pO1xuICByZXR1cm4gZnVuYztcbn1cbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vaW5mcmFzdHJ1Y3R1cmUvY3JlYXRlTGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBK0JBLG9DQXlHQztBQXhJRCw2Q0FBNkQ7QUFDN0QsaURBQW9EO0FBQ3BELHVEQVFnQztBQUNoQyxtREFBK0Q7QUFHL0QsMkJBQWdDO0FBQ2hDLCtCQUErQjtBQVkvQjs7O0dBR0c7QUFDSCxTQUFnQixZQUFZLENBQzFCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUE4QjtJQUU5QixrREFBa0Q7SUFDbEQsNERBQTREO0lBQzVELE1BQU0sU0FBUyxHQUFHLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEQsSUFBSSxZQUFZLEdBQUcsSUFBQSxjQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEUsSUFBSSxpQkFBaUIsR0FBRyxJQUFBLGNBQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFMUQsMEVBQTBFO0lBQzFFLElBQUksQ0FBQyxJQUFBLGVBQVUsRUFBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7UUFDbkMsOENBQThDO1FBQzlDLFlBQVksR0FBRyxJQUFBLGNBQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdEUsaUJBQWlCLEdBQUcsSUFBQSxjQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxJQUFBLGVBQVUsRUFBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYixtQkFBbUIsU0FBUywrQkFBK0IsaUJBQWlCLE9BQU8sSUFBQSxjQUFPLEVBQ3hGLFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLENBQ1gsSUFBSTtnQkFDSCxvRUFBb0UsQ0FDdkUsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FDVCw0QkFBNEIsU0FBUyxRQUFRLEVBQUUsV0FBVyxZQUFZLEVBQUUsQ0FDekUsQ0FBQztJQUVGLHlEQUF5RDtJQUN6RCxNQUFNLE1BQU0sR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFFdEMsa0NBQWtDO0lBQ2xDLDhFQUE4RTtJQUM5RSxNQUFNLGtCQUFrQixHQUFHLGtCQUFrQixNQUFNLHdEQUF3RCxDQUFDO0lBRTVHLGdFQUFnRTtJQUNoRSxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQW9CLENBQUM7SUFDakQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFFaEQsd0ZBQXdGO0lBQ3hGLG1GQUFtRjtJQUNuRixrRkFBa0Y7SUFDbEYsNERBQTREO0lBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRTtRQUNwRCxTQUFTLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSx3QkFBYSxDQUFDLFNBQVM7UUFDeEQsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztLQUNyQyxDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksR0FBRyxJQUFJLHFCQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7UUFDaEQsaUJBQWlCO1FBQ2pCLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7UUFDNUIsWUFBWSxFQUFFLHlCQUFZLENBQUMsTUFBTTtRQUNqQyxPQUFPLEVBQUUsb0JBQU8sQ0FBQyxNQUFNO1FBQ3ZCLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDN0IsSUFBSSxFQUFFLGlCQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztRQUNsQyxNQUFNLEVBQUU7WUFDTix5QkFBWSxDQUFDLG1CQUFtQixDQUM5QixLQUFLLEVBQ0wsR0FBRyxFQUFFLGlCQUFpQixFQUN0QixrQkFBa0IsQ0FDbkI7U0FDRjtRQUNELGdDQUFnQztRQUNoQyxHQUFHLENBQUMsU0FBUyxJQUFJO1lBQ2YsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHO1lBQ2xCLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsY0FBYyxFQUFFO1lBQ2pELGNBQWMsRUFBRSxTQUFTLENBQUMsb0JBQW9CO1NBQy9DLENBQUM7UUFDRixrQkFBa0I7UUFDbEIsR0FBRyxLQUFLO1FBQ1IsK0RBQStEO1FBQy9ELFlBQVksRUFBRSxTQUFTO1FBQ3ZCLHVGQUF1RjtRQUN2RixRQUFRO1FBQ1IsV0FBVyxFQUFFO1lBQ1gsOEVBQThFO1lBQzlFLFlBQVksRUFBRSxzQkFBc0I7WUFDcEMsdUZBQXVGO1lBQ3ZGLG9CQUFvQixFQUFFLE9BQU87WUFDN0IscUJBQXFCO1lBQ3JCLDJCQUEyQixFQUFFLE1BQU07WUFDbkMsZUFBZSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxJQUFJLEtBQUs7WUFDcEQsR0FBRyxLQUFLLENBQUMsV0FBVztTQUNyQjtLQUNGLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXJDLElBQUksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQ3pCLHVCQUFhLENBQUMsd0JBQXdCLENBQ3BDLFNBQVM7UUFDUCxDQUFDLENBQUMsOENBQThDO1FBQ2hELENBQUMsQ0FBQywwQ0FBMEMsQ0FDL0MsQ0FDRixDQUFDO0lBRUYsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24sIFJlbW92YWxQb2xpY3ksIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgTWFuYWdlZFBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHtcbiAgQXJjaGl0ZWN0dXJlLFxuICBSdW50aW1lLFxuICBUcmFjaW5nLFxuICBGdW5jdGlvbixcbiAgRnVuY3Rpb25Qcm9wcyxcbiAgQ29kZSxcbiAgTGF5ZXJWZXJzaW9uLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IExvZ0dyb3VwLCBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgSVRvcGljIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBGbG93Q29uZmlnU3RhY2sgfSBmcm9tICcuL0Zsb3dDb25maWdTdGFjayc7XG5cbmludGVyZmFjZSBDcmVhdGVMYW1iZGFQcm9wczxURW52PlxuICBleHRlbmRzIE9taXQ8RnVuY3Rpb25Qcm9wcywgJ2hhbmRsZXInIHwgJ2Vudmlyb25tZW50JyB8ICdjb2RlJyB8ICdydW50aW1lJz4ge1xuICBlbnZpcm9ubWVudD86IFRFbnY7XG5cbiAgLyoqXG4gICAqIE5vdGlmeSBzb21lb25lIHdoZW4geW91ciBsYW1iZGEgZmFpbHMhXG4gICAqL1xuICBhbGVydFRvcGljPzogSVRvcGljO1xufVxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhIGxvZyBncm91cCBhbmQgbGFtYmRhIHdpdGggYXBwIGRlZmF1bHRzLlxuICogRW5mb3JjZXMgZW52aXJvbm1lbnQgdmFyaWFibGVzIHZpYSBnZW5lcmljIHBhcmFtZXRlciBURW52XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMYW1iZGE8VEVudj4oXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBzdHJpbmcsXG4gIHByb3BzOiBDcmVhdGVMYW1iZGFQcm9wczxURW52PlxuKSB7XG4gIC8vIERldGVybWluZSB0aGUgY29kZSBsb2NhdGlvbiBiYXNlZCBvbiBsb2dpY2FsIElEXG4gIC8vIElmIGlkIGlzIFwiSGFuZGxlclwiLCB1c2UgdGhlIHBhcmVudCBjb25zdHJ1Y3QncyBJRCBpbnN0ZWFkXG4gIGNvbnN0IGJhY2tlbmRJZCA9IGlkID09PSAnSGFuZGxlcicgPyBzY29wZS5ub2RlLmlkIDogaWQ7XG4gIGxldCBjb2RlTG9jYXRpb24gPSByZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJ2JhY2tlbmQnLCBiYWNrZW5kSWQpO1xuICBsZXQgZXhwZWN0ZWRJbmRleEZpbGUgPSByZXNvbHZlKGNvZGVMb2NhdGlvbiwgJ2luZGV4LmpzJyk7XG5cbiAgLy8gVmVyaWZ5IHRoZSBidW5kbGVkIExhbWJkYSBjb2RlIGV4aXN0cywgdHJ5IC4uL2Rpc3QvYmFja2VuZCBpZiBub3QgZm91bmRcbiAgaWYgKCFleGlzdHNTeW5jKGV4cGVjdGVkSW5kZXhGaWxlKSkge1xuICAgIC8vIFRyeSBhbHRlcm5hdGl2ZSBsb2NhdGlvbiBpbiAuLi9kaXN0L2JhY2tlbmRcbiAgICBjb2RlTG9jYXRpb24gPSByZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJ2Rpc3QnLCAnYmFja2VuZCcsIGJhY2tlbmRJZCk7XG4gICAgZXhwZWN0ZWRJbmRleEZpbGUgPSByZXNvbHZlKGNvZGVMb2NhdGlvbiwgJ2luZGV4LmpzJyk7XG5cbiAgICBpZiAoIWV4aXN0c1N5bmMoZXhwZWN0ZWRJbmRleEZpbGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBMYW1iZGEgZnVuY3Rpb24gJHtiYWNrZW5kSWR9IGJ1bmRsZWQgY29kZSBub3QgZm91bmQgYXQ6ICR7ZXhwZWN0ZWRJbmRleEZpbGV9IG9yICR7cmVzb2x2ZShcbiAgICAgICAgICBfX2Rpcm5hbWUsXG4gICAgICAgICAgJy4uJyxcbiAgICAgICAgICAnYmFja2VuZCcsXG4gICAgICAgICAgYmFja2VuZElkLFxuICAgICAgICAgICdpbmRleC5qcydcbiAgICAgICAgKX0uIGAgK1xuICAgICAgICAgICdQbGVhc2UgcnVuIFwibnBtIHJ1biBidWlsZDpsYW1iZGFzXCIgdG8gYnVuZGxlIHRoZSBMYW1iZGEgZnVuY3Rpb25zLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY29uc29sZS5sb2coXG4gICAgYPCfk6YgVXNpbmcgTGFtYmRhIGNvZGUgZm9yICR7YmFja2VuZElkfSAoaWQ9JHtpZH0pIGZyb206ICR7Y29kZUxvY2F0aW9ufWBcbiAgKTtcblxuICAvLyBHZXQgdGhlIGN1cnJlbnQgcmVnaW9uIGZvciB0aGUgTGFtYmRhIFBvd2VydG9vbHMgbGF5ZXJcbiAgY29uc3QgcmVnaW9uID0gU3RhY2sub2Yoc2NvcGUpLnJlZ2lvbjtcblxuICAvLyBBV1MgTGFtYmRhIFBvd2VydG9vbHMgbGF5ZXIgQVJOXG4gIC8vIFNlZTogaHR0cHM6Ly9kb2NzLnBvd2VydG9vbHMuYXdzLmRldi9sYW1iZGEvdHlwZXNjcmlwdC9sYXRlc3QvI2xhbWJkYS1sYXllclxuICBjb25zdCBwb3dlcnRvb2xzTGF5ZXJBcm4gPSBgYXJuOmF3czpsYW1iZGE6JHtyZWdpb259OjA5NDI3NDEwNTkxNTpsYXllcjpBV1NMYW1iZGFQb3dlcnRvb2xzVHlwZVNjcmlwdFYyOjIyYDtcblxuICAvLyBDaGVjayBpZiB3ZSdyZSBpbiBhIEZsb3dDb25maWdTdGFjayBhbmQgZ2V0IFZQQyBjb25maWd1cmF0aW9uXG4gIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpIGFzIEZsb3dDb25maWdTdGFjaztcbiAgY29uc3QgdnBjQ29uZmlnID0gc3RhY2suX2dldFJlc29sdmVkVnBjQ29uZmlnKCk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBsb2cgZ3JvdXAgQkVGT1JFIHRoZSBmdW5jdGlvbiBzbyBDbG91ZEZvcm1hdGlvbiBlc3RhYmxpc2hlcyB0aGUgZGVwZW5kZW5jeVxuICAvLyBjb3JyZWN0bHkuIElmIHRoZSBsb2cgZ3JvdXAgaXMgY3JlYXRlZCBhZnRlciB1c2luZyBmdW5jLmZ1bmN0aW9uTmFtZSwgTGFtYmRhIG1heVxuICAvLyBhdXRvLWNyZWF0ZSB0aGUgbG9nIGdyb3VwIG9uIGZpcnN0IGludm9jYXRpb24gYmVmb3JlIENsb3VkRm9ybWF0aW9uIGdldHMgdG8gaXQsXG4gIC8vIGNhdXNpbmcgYSBcImFscmVhZHkgZXhpc3RzXCIgZmFpbHVyZSBkdXJpbmcgc3RhY2sgY3JlYXRpb24uXG4gIGNvbnN0IGxvZ0dyb3VwID0gbmV3IExvZ0dyb3VwKHNjb3BlLCBgJHtpZH1Mb2dHcm91cGAsIHtcbiAgICByZXRlbnRpb246IHByb3BzLmxvZ1JldGVudGlvbiA/PyBSZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gIH0pO1xuXG4gIGNvbnN0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oc2NvcGUsIGAke2lkfUZ1bmN0aW9uYCwge1xuICAgIC8vIEFwcGx5IGRlZmF1bHRzXG4gICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIyX1gsXG4gICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KGNvZGVMb2NhdGlvbiksXG4gICAgbGF5ZXJzOiBbXG4gICAgICBMYXllclZlcnNpb24uZnJvbUxheWVyVmVyc2lvbkFybihcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIGAke2lkfVBvd2VydG9vbHNMYXllcmAsXG4gICAgICAgIHBvd2VydG9vbHNMYXllckFyblxuICAgICAgKSxcbiAgICBdLFxuICAgIC8vIFZQQyBjb25maWd1cmF0aW9uIGlmIHByb3ZpZGVkXG4gICAgLi4uKHZwY0NvbmZpZyAmJiB7XG4gICAgICB2cGM6IHZwY0NvbmZpZy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiB7IHN1Ym5ldHM6IHZwY0NvbmZpZy5wcml2YXRlU3VibmV0cyB9LFxuICAgICAgc2VjdXJpdHlHcm91cHM6IHZwY0NvbmZpZy5sYW1iZGFTZWN1cml0eUdyb3VwcyxcbiAgICB9KSxcbiAgICAvLyBBcHBseSBvdmVycmlkZXNcbiAgICAuLi5wcm9wcyxcbiAgICAvLyBFbnN1cmUgdGhhdCB0aGUgbG9nIHJldGVudGlvbiBjdXN0b20gcmVzb3VyY2UgaXMgbm90IGNyZWF0ZWRcbiAgICBsb2dSZXRlbnRpb246IHVuZGVmaW5lZCxcbiAgICAvLyBVc2Ugb3VyIG1hbmFnZWQgbG9nIGdyb3VwIChtdXN0IGNvbWUgYWZ0ZXIgc3ByZWFkIHRvIG92ZXJyaWRlIGFueSBsb2dHcm91cCBpbiBwcm9wcylcbiAgICBsb2dHcm91cCxcbiAgICBlbnZpcm9ubWVudDoge1xuICAgICAgLy8gc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL3R5cGVzY3JpcHQtZXhjZXB0aW9ucy5odG1sXG4gICAgICBOT0RFX09QVElPTlM6ICctLWVuYWJsZS1zb3VyY2UtbWFwcycsXG4gICAgICAvLyBMb2cgbGV2ZWwuIERvIG5vdCBlbWl0IERFQlVHIGluIHByb2QgZW52aXJvbm1lbnQgYmVjYXVzZSBpdCB3aWxsIGJsb2F0IHlvdXIgQ1cgY29zdHNcbiAgICAgIFBPV0VSVE9PTFNfTE9HX0xFVkVMOiAnREVCVUcnLFxuICAgICAgLy8gTG9nIGluY29taW5nIGV2ZW50XG4gICAgICBQT1dFUlRPT0xTX0xPR0dFUl9MT0dfRVZFTlQ6ICd0cnVlJyxcbiAgICAgIEFMRVJUX1RPUElDX0FSTjogcHJvcHMuYWxlcnRUb3BpYz8udG9waWNBcm4gPz8gJ04vQScsXG4gICAgICAuLi5wcm9wcy5lbnZpcm9ubWVudCxcbiAgICB9LFxuICB9KTtcblxuICBwcm9wcy5hbGVydFRvcGljPy5ncmFudFB1Ymxpc2goZnVuYyk7XG5cbiAgZnVuYy5yb2xlPy5hZGRNYW5hZ2VkUG9saWN5KFxuICAgIE1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFxuICAgICAgdnBjQ29uZmlnXG4gICAgICAgID8gJ3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFWUENBY2Nlc3NFeGVjdXRpb25Sb2xlJ1xuICAgICAgICA6ICdzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlJ1xuICAgIClcbiAgKTtcblxuICByZXR1cm4gZnVuYztcbn1cbiJdfQ==