@aws-cdk/toolkit-lib 0.3.4 → 0.3.5

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.
Files changed (49) hide show
  1. package/api-extractor.json +6 -3
  2. package/build-info.json +2 -2
  3. package/db.json.gz +0 -0
  4. package/lib/actions/diff/index.d.ts +1 -1
  5. package/lib/actions/diff/index.js +1 -1
  6. package/lib/actions/refactor/index.d.ts +32 -0
  7. package/lib/actions/refactor/index.js +1 -1
  8. package/lib/api/aws-auth/awscli-compatible.d.ts +6 -5
  9. package/lib/api/aws-auth/awscli-compatible.js +1 -1
  10. package/lib/api/aws-auth/credential-plugins.d.ts +2 -2
  11. package/lib/api/aws-auth/credential-plugins.js +1 -1
  12. package/lib/api/aws-auth/provider-caching.d.ts +3 -3
  13. package/lib/api/aws-auth/provider-caching.js +1 -1
  14. package/lib/api/aws-auth/sdk-logger.d.ts +8 -2
  15. package/lib/api/aws-auth/sdk-logger.js +4 -4
  16. package/lib/api/aws-auth/sdk-provider.d.ts +4 -3
  17. package/lib/api/aws-auth/sdk-provider.js +1 -1
  18. package/lib/api/aws-auth/sdk.d.ts +7 -6
  19. package/lib/api/aws-auth/sdk.js +3 -3
  20. package/lib/api/aws-auth/tracing.d.ts +2 -2
  21. package/lib/api/aws-auth/tracing.js +1 -1
  22. package/lib/api/aws-auth/types.d.ts +3 -3
  23. package/lib/api/aws-auth/types.js +1 -1
  24. package/lib/api/bootstrap/bootstrap-template.yaml +12 -1
  25. package/lib/api/cloud-assembly/index.d.ts +2 -1
  26. package/lib/api/cloud-assembly/index.js +1 -1
  27. package/lib/api/cloud-assembly/private/source-builder.d.ts +4 -4
  28. package/lib/api/cloud-assembly/private/source-builder.js +5 -5
  29. package/lib/api/hotswap/common.d.ts +2 -1
  30. package/lib/api/hotswap/common.js +8 -2
  31. package/lib/api/hotswap/ecs-services.js +3 -2
  32. package/lib/api/io/private/index.d.ts +0 -1
  33. package/lib/api/io/private/index.js +1 -2
  34. package/lib/api/plugin/plugin.d.ts +4 -4
  35. package/lib/api/plugin/plugin.js +5 -5
  36. package/lib/api/refactoring/execution.d.ts +7 -0
  37. package/lib/api/refactoring/execution.js +43 -0
  38. package/lib/api/refactoring/index.d.ts +3 -1
  39. package/lib/api/refactoring/index.js +64 -3
  40. package/lib/index_bg.wasm +0 -0
  41. package/lib/payloads/deploy.d.ts +1 -1
  42. package/lib/payloads/deploy.js +1 -1
  43. package/lib/toolkit/toolkit.js +46 -14
  44. package/package.json +18 -17
  45. package/tsdoc.json +6 -1
  46. package/lib/api/io/private/sdk-logger.d.ts +0 -3
  47. package/lib/api/io/private/sdk-logger.js +0 -124
  48. package/lib/api/private.d.ts +0 -1
  49. package/lib/api/private.js +0 -18
@@ -80,8 +80,8 @@ class CloudAssemblySourceBuilder {
80
80
  * directory. This means that while the CloudAssembly is being used, no CDK
81
81
  * app synthesis can take place into that directory.
82
82
  *
83
- * @param builder the builder function
84
- * @param props additional configuration properties
83
+ * @param builder - the builder function
84
+ * @param props - additional configuration properties
85
85
  * @returns the CloudAssembly source
86
86
  */
87
87
  async fromAssemblyBuilder(builder, props = {}) {
@@ -143,7 +143,7 @@ class CloudAssemblySourceBuilder {
143
143
  * the CloudAssembly is being used, no CDK app synthesis can take place into
144
144
  * that directory.
145
145
  *
146
- * @param directory the directory of a already produced Cloud Assembly.
146
+ * @param directory - directory the directory of a already produced Cloud Assembly.
147
147
  * @returns the CloudAssembly source
148
148
  */
149
149
  async fromAssemblyDirectory(directory, props = {}) {
@@ -183,7 +183,7 @@ class CloudAssemblySourceBuilder {
183
183
  * directory. This means that while the CloudAssembly is being used, no CDK
184
184
  * app synthesis can take place into that directory.
185
185
  *
186
- * @param props additional configuration properties
186
+ * @param props - additional configuration properties
187
187
  * @returns the CloudAssembly source
188
188
  */
189
189
  async fromCdkApp(app, props = {}) {
@@ -259,4 +259,4 @@ exports.CloudAssemblySourceBuilder = CloudAssemblySourceBuilder;
259
259
  function noUndefined(xs) {
260
260
  return Object.fromEntries(Object.entries(xs).filter(([_, v]) => v !== undefined));
261
261
  }
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzb3VyY2UtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLHlDQUF5QztBQUN6QywrQkFBK0I7QUFHL0IsaUVBQXlFO0FBQ3pFLGlDQUE0QztBQUM1QyxxREFBK0U7QUFDL0Usa0VBQTZFO0FBRTdFLDJEQUE0RDtBQUU1RCwyQ0FBd0M7QUFDeEMsOENBQXNDO0FBQ3RDLHlDQUFzQztBQUN0Qyw2Q0FBMEM7QUFFMUMsTUFBc0IsMEJBQTBCO0lBUTlDOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNJLEtBQUssQ0FBQyxtQkFBbUIsQ0FDOUIsT0FBd0IsRUFDeEIsUUFBNkIsRUFBRTtRQUUvQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3BELE1BQU0sT0FBTyxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLG1CQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEUsTUFBTSxvQkFBb0IsR0FBbUM7WUFDM0QsUUFBUTtZQUNSLE9BQU87WUFDUCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQztRQUVGLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNqRSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXZGLE9BQU8sSUFBSSxzREFBK0IsQ0FDeEM7WUFD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QyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dDQUNoRSxNQUFNO2dDQUNWLENBQUM7NEJBQ0gsQ0FBQzs0QkFDRCxRQUFRLEVBQUUsY0FBYzs0QkFDeEIsR0FBRyxFQUFFLGdCQUFnQjt5QkFDdEIsQ0FBQyxDQUFDO3dCQUVILE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSxzQ0FBcUIsRUFBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQzt3QkFFOUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7d0JBQ2pELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksU0FBUyxDQUFDLGlCQUFpQixDQUFDO3dCQUMzRSxPQUFPLElBQUkseUNBQXFCLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO29CQUMvRSxDQUFDLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7YUFDSjtTQUNGLEVBQ0Qsb0JBQW9CLENBQ3JCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFwTUQsZ0VBb01DO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBSSxFQUFxQjtJQUMzQyxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFRLENBQUM7QUFDM0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHR5cGUgeyBBc3NlbWJseURpcmVjdG9yeVByb3BzLCBBc3NlbWJseVNvdXJjZVByb3BzLCBJQ2xvdWRBc3NlbWJseVNvdXJjZSB9IGZyb20gJy4uLyc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlQcm9wcyB9IGZyb20gJy4vY29udGV4dC1hd2FyZS1zb3VyY2UnO1xuaW1wb3J0IHsgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZSB9IGZyb20gJy4vY29udGV4dC1hd2FyZS1zb3VyY2UnO1xuaW1wb3J0IHsgZXhlY0luQ2hpbGRQcm9jZXNzIH0gZnJvbSAnLi9leGVjJztcbmltcG9ydCB7IEV4ZWN1dGlvbkVudmlyb25tZW50LCBhc3NlbWJseUZyb21EaXJlY3RvcnkgfSBmcm9tICcuL3ByZXBhcmUtc291cmNlJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciwgQXNzZW1ibHlFcnJvciB9IGZyb20gJy4uLy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgdHlwZSB7IEFzc2VtYmx5QnVpbGRlciwgRnJvbUNka0FwcE9wdGlvbnMgfSBmcm9tICcuLi9zb3VyY2UtYnVpbGRlcic7XG5pbXBvcnQgeyBSZWFkYWJsZUNsb3VkQXNzZW1ibHkgfSBmcm9tICcuL3JlYWRhYmxlLWFzc2VtYmx5JztcbmltcG9ydCB0eXBlIHsgVG9vbGtpdFNlcnZpY2VzIH0gZnJvbSAnLi4vLi4vLi4vdG9vbGtpdC9wcml2YXRlJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0JztcbmltcG9ydCB7IElPIH0gZnJvbSAnLi4vLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyBSV0xvY2sgfSBmcm9tICcuLi8uLi9yd2xvY2snO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9zZXR0aW5ncyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDbG91ZEFzc2VtYmx5U291cmNlQnVpbGRlciB7XG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gcHJvdmlkZSB0aGUgQ2xvdWRBc3NlbWJseVNvdXJjZUJ1aWxkZXIgd2l0aCByZXF1aXJlZCB0b29sa2l0IHNlcnZpY2VzXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAZGVwcmVjYXRlZCB0aGlzIHNob3VsZCBtb3ZlIHRvIHRoZSB0b29sa2l0IHJlYWxseS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzb3VyY2VCdWlsZGVyU2VydmljZXMoKTogUHJvbWlzZTxUb29sa2l0U2VydmljZXM+O1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBDbG91ZCBBc3NlbWJseSBmcm9tIGEgQ2xvdWQgQXNzZW1ibHkgYnVpbGRlciBmdW5jdGlvbi5cbiAgICpcbiAgICogVGhlIG91dHB1dCBkaXJlY3Rvcnkgd2lsbCBiZSBldmFsdWF0ZWQgd2l0aCByZXNwZWN0IHRvIHRoZSB3b3JraW5nXG4gICAqIGRpcmVjdG9yeSBpZiByZWxhdGl2ZS4gSWYgbm90IGdpdmVuLCBpdCB3aWxsIHN5bnRoZXNpemUgaW50byBhIHRlbXBvcmFyeVxuICAgKiBzeXN0ZW0gZGlyZWN0b3J5LiBUaGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aWxsIGJlIGNsZWFuZWQgdXAsIHVubGVzc1xuICAgKiBgZGlzcG9zZU91dGRpcjogZmFsc2VgLlxuICAgKlxuICAgKiBBIHdyaXRlIGxvY2sgd2lsbCBiZSBhY3F1aXJlZCBvbiB0aGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIGR1cmF0aW9uIG9mXG4gICAqIHRoZSBDREsgYXBwIHN5bnRoZXNpcyAod2hpY2ggbWVhbnMgdGhhdCBubyB0d28gYXBwcyBjYW4gc3ludGhlc2l6ZSBhdCB0aGVcbiAgICogc2FtZSB0aW1lKSwgYW5kIGFmdGVyIHN5bnRoZXNpcyBhIHJlYWQgbG9jayB3aWxsIGJlIGFjcXVpcmVkIG9uIHRoZVxuICAgKiBkaXJlY3RvcnkuIFRoaXMgbWVhbnMgdGhhdCB3aGlsZSB0aGUgQ2xvdWRBc3NlbWJseSBpcyBiZWluZyB1c2VkLCBubyBDREtcbiAgICogYXBwIHN5bnRoZXNpcyBjYW4gdGFrZSBwbGFjZSBpbnRvIHRoYXQgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAcGFyYW0gYnVpbGRlciB0aGUgYnVpbGRlciBmdW5jdGlvblxuICAgKiBAcGFyYW0gcHJvcHMgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgdGhlIENsb3VkQXNzZW1ibHkgc291cmNlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZnJvbUFzc2VtYmx5QnVpbGRlcihcbiAgICBidWlsZGVyOiBBc3NlbWJseUJ1aWxkZXIsXG4gICAgcHJvcHM6IEFzc2VtYmx5U291cmNlUHJvcHMgPSB7fSxcbiAgKTogUHJvbWlzZTxJQ2xvdWRBc3NlbWJseVNvdXJjZT4ge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gYXdhaXQgdGhpcy5zb3VyY2VCdWlsZGVyU2VydmljZXMoKTtcbiAgICBjb25zdCBjb250ZXh0ID0gbmV3IENvbnRleHQoeyBiYWc6IG5ldyBTZXR0aW5ncyhwcm9wcy5jb250ZXh0ID8/IHt9KSB9KTtcbiAgICBjb25zdCBjb250ZXh0QXNzZW1ibHlQcm9wczogQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVByb3BzID0ge1xuICAgICAgc2VydmljZXMsXG4gICAgICBjb250ZXh0LFxuICAgICAgbG9va3VwczogcHJvcHMubG9va3VwcyxcbiAgICB9O1xuXG4gICAgY29uc3Qgd29ya2luZ0RpcmVjdG9yeSA9IHByb3BzLndvcmtpbmdEaXJlY3RvcnkgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBvdXRkaXIgPSBwcm9wcy5vdXRkaXIgPyBwYXRoLnJlc29sdmUod29ya2luZ0RpcmVjdG9yeSwgcHJvcHMub3V0ZGlyKSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBuZXcgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZShcbiAgICAgIHtcbiAgICAgICAgcHJvZHVjZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHVzaW5nIGV4ZWN1dGlvbiA9IGF3YWl0IEV4ZWN1dGlvbkVudmlyb25tZW50LmNyZWF0ZShzZXJ2aWNlcywgeyBvdXRkaXIgfSk7XG5cbiAgICAgICAgICBjb25zdCBlbnYgPSBhd2FpdCBleGVjdXRpb24uZGVmYXVsdEVudlZhcnMoKTtcbiAgICAgICAgICBjb25zdCBhc3NlbWJseSA9IGF3YWl0IGV4ZWN1dGlvbi5jaGFuZ2VEaXIoYXN5bmMgKCkgPT5cbiAgICAgICAgICAgIGV4ZWN1dGlvbi53aXRoQ29udGV4dChjb250ZXh0LmFsbCwgZW52LCBwcm9wcy5zeW50aE9wdGlvbnMgPz8ge30sIGFzeW5jIChlbnZXaXRoQ29udGV4dCwgY3R4KSA9PlxuICAgICAgICAgICAgICBleGVjdXRpb24ud2l0aEVudihlbnZXaXRoQ29udGV4dCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgYnVpbGRlcih7XG4gICAgICAgICAgICAgICAgICAgIG91dGRpcjogZXhlY3V0aW9uLm91dGRpcixcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogY3R4LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgIC8vIHJlLXRocm93IHRvb2xraXQgZXJyb3JzIHVuY2hhbmdlZFxuICAgICAgICAgICAgICAgICAgaWYgKFRvb2xraXRFcnJvci5pc1Rvb2xraXRFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIHdyYXAgaW50byBhbiBhc3NlbWJseSBlcnJvclxuICAgICAgICAgICAgICAgICAgdGhyb3cgQXNzZW1ibHlFcnJvci53aXRoQ2F1c2UoJ0Fzc2VtYmx5IGJ1aWxkZXIgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLCB3b3JraW5nRGlyZWN0b3J5KTtcblxuICAgICAgICAgIC8vIENvbnZlcnQgd2hhdCB3ZSBnb3QgdG8gdGhlIGRlZmluaXRlbHkgY29ycmVjdCB0eXBlIHdlJ3JlIGV4cGVjdGluZywgYSBjeGFwaS5DbG91ZEFzc2VtYmx5XG4gICAgICAgICAgY29uc3QgYXNtID0gY3hhcGkuQ2xvdWRBc3NlbWJseS5pc0Nsb3VkQXNzZW1ibHkoYXNzZW1ibHkpXG4gICAgICAgICAgICA/IGFzc2VtYmx5XG4gICAgICAgICAgICA6IGF3YWl0IGFzc2VtYmx5RnJvbURpcmVjdG9yeShhc3NlbWJseS5kaXJlY3RvcnksIHNlcnZpY2VzLmlvSGVscGVyLCBwcm9wcy5sb2FkQXNzZW1ibHlPcHRpb25zKTtcblxuICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBleGVjdXRpb24ubWFya1N1Y2Nlc3NmdWwoKTtcbiAgICAgICAgICBjb25zdCBkZWxldGVPbkRpc3Bvc2UgPSBwcm9wcy5kaXNwb3NlT3V0ZGlyID8/IGV4ZWN1dGlvbi5vdXREaXJJc1RlbXBvcmFyeTtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlYWRhYmxlQ2xvdWRBc3NlbWJseShhc20sIHN1Y2Nlc3MucmVhZExvY2ssIHsgZGVsZXRlT25EaXNwb3NlIH0pO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNvbnRleHRBc3NlbWJseVByb3BzLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIENsb3VkIEFzc2VtYmx5IGZyb20gYW4gZXhpc3RpbmcgYXNzZW1ibHkgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBBIHJlYWQgbG9jayB3aWxsIGJlIGFjcXVpcmVkIGZvciB0aGUgZGlyZWN0b3J5LiBUaGlzIG1lYW5zIHRoYXQgd2hpbGVcbiAgICogdGhlIENsb3VkQXNzZW1ibHkgaXMgYmVpbmcgdXNlZCwgbm8gQ0RLIGFwcCBzeW50aGVzaXMgY2FuIHRha2UgcGxhY2UgaW50b1xuICAgKiB0aGF0IGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHBhcmFtIGRpcmVjdG9yeSB0aGUgZGlyZWN0b3J5IG9mIGEgYWxyZWFkeSBwcm9kdWNlZCBDbG91ZCBBc3NlbWJseS5cbiAgICogQHJldHVybnMgdGhlIENsb3VkQXNzZW1ibHkgc291cmNlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZnJvbUFzc2VtYmx5RGlyZWN0b3J5KGRpcmVjdG9yeTogc3RyaW5nLCBwcm9wczogQXNzZW1ibHlEaXJlY3RvcnlQcm9wcyA9IHt9KTogUHJvbWlzZTxJQ2xvdWRBc3NlbWJseVNvdXJjZT4ge1xuICAgIGNvbnN0IHNlcnZpY2VzOiBUb29sa2l0U2VydmljZXMgPSBhd2FpdCB0aGlzLnNvdXJjZUJ1aWxkZXJTZXJ2aWNlcygpO1xuICAgIGNvbnN0IGNvbnRleHRBc3NlbWJseVByb3BzOiBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5UHJvcHMgPSB7XG4gICAgICBzZXJ2aWNlcyxcbiAgICAgIGNvbnRleHQ6IG5ldyBDb250ZXh0KCksIC8vIEB0b2RvIHRoZXJlIGlzIHByb2JhYmx5IGEgZGlmZmVyZW5jZSBiZXR3ZWVuIGNvbnRleHRhd2FyZSBhbmQgY29udGV4dGxvb2t1cCBzb3VyY2VzXG4gICAgICBsb29rdXBzOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5U291cmNlKFxuICAgICAge1xuICAgICAgICBwcm9kdWNlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgLy8gQHRvZG8gYnVpbGRcbiAgICAgICAgICBhd2FpdCBzZXJ2aWNlcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX0FTU0VNQkxZX0kwMTUwLm1zZygnLS1hcHAgcG9pbnRzIHRvIGEgY2xvdWQgYXNzZW1ibHksIHNvIHdlIGJ5cGFzcyBzeW50aCcpKTtcblxuICAgICAgICAgIGNvbnN0IHJlYWRMb2NrID0gYXdhaXQgbmV3IFJXTG9jayhkaXJlY3RvcnkpLmFjcXVpcmVSZWFkKCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFzbSA9IGF3YWl0IGFzc2VtYmx5RnJvbURpcmVjdG9yeShkaXJlY3RvcnksIHNlcnZpY2VzLmlvSGVscGVyLCBwcm9wcy5sb2FkQXNzZW1ibHlPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVhZGFibGVDbG91ZEFzc2VtYmx5KGFzbSwgcmVhZExvY2ssIHsgZGVsZXRlT25EaXNwb3NlOiBmYWxzZSB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBhd2FpdCByZWFkTG9jay5yZWxlYXNlKCk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb250ZXh0QXNzZW1ibHlQcm9wcyxcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBVc2UgYSBkaXJlY3RvcnkgY29udGFpbmluZyBhbiBBV1MgQ0RLIGFwcCBhcyBzb3VyY2UuXG4gICAqXG4gICAqIFRoZSBvdXRwdXQgZGlyZWN0b3J5IHdpbGwgYmUgZXZhbHVhdGVkIHdpdGggcmVzcGVjdCB0byB0aGUgd29ya2luZ1xuICAgKiBkaXJlY3RvcnkgaWYgcmVsYXRpdmUuIElmIG5vdCBnaXZlbiwgaXQgd2lsbCBzeW50aGVzaXplIGludG8gYSBgY2RrLm91dGBcbiAgICogc3ViZGlyZWN0b3J5LiBUaGlzIGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBjbGVhbmVkIHVwLCB1bmxlc3NcbiAgICogYGRpc3Bvc2VPdXRkaXI6IHRydWVgLlxuICAgKlxuICAgKiBBIHdyaXRlIGxvY2sgd2lsbCBiZSBhY3F1aXJlZCBvbiB0aGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIGR1cmF0aW9uIG9mXG4gICAqIHRoZSBDREsgYXBwIHN5bnRoZXNpcyAod2hpY2ggbWVhbnMgdGhhdCBubyB0d28gYXBwcyBjYW4gc3ludGhlc2l6ZSBhdCB0aGVcbiAgICogc2FtZSB0aW1lKSwgYW5kIGFmdGVyIHN5bnRoZXNpcyBhIHJlYWQgbG9jayB3aWxsIGJlIGFjcXVpcmVkIG9uIHRoZVxuICAgKiBkaXJlY3RvcnkuICBUaGlzIG1lYW5zIHRoYXQgd2hpbGUgdGhlIENsb3VkQXNzZW1ibHkgaXMgYmVpbmcgdXNlZCwgbm8gQ0RLXG4gICAqIGFwcCBzeW50aGVzaXMgY2FuIHRha2UgcGxhY2UgaW50byB0aGF0IGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIHRoZSBDbG91ZEFzc2VtYmx5IHNvdXJjZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGZyb21DZGtBcHAoYXBwOiBzdHJpbmcsIHByb3BzOiBGcm9tQ2RrQXBwT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxJQ2xvdWRBc3NlbWJseVNvdXJjZT4ge1xuICAgIGNvbnN0IHNlcnZpY2VzOiBUb29sa2l0U2VydmljZXMgPSBhd2FpdCB0aGlzLnNvdXJjZUJ1aWxkZXJTZXJ2aWNlcygpO1xuICAgIC8vIEB0b2RvIHRoaXMgZGVmaW5pdGVseSBuZWVkcyB0byByZWFkIGZpbGVzIGZyb20gdGhlIENXRFxuICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQ29udGV4dCh7IGJhZzogbmV3IFNldHRpbmdzKHByb3BzLmNvbnRleHQgPz8ge30pIH0pO1xuICAgIGNvbnN0IGNvbnRleHRBc3NlbWJseVByb3BzOiBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5UHJvcHMgPSB7XG4gICAgICBzZXJ2aWNlcyxcbiAgICAgIGNvbnRleHQsXG4gICAgICBsb29rdXBzOiBwcm9wcy5sb29rdXBzLFxuICAgIH07XG5cbiAgICBjb25zdCB3b3JraW5nRGlyZWN0b3J5ID0gcHJvcHMud29ya2luZ0RpcmVjdG9yeSA/PyBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG91dGRpciA9IHBhdGgucmVzb2x2ZSh3b3JraW5nRGlyZWN0b3J5LCBwcm9wcy5vdXRkaXIgPz8gJ2Nkay5vdXQnKTtcblxuICAgIHJldHVybiBuZXcgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZShcbiAgICAgIHtcbiAgICAgICAgcHJvZHVjZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIC8vIEB0b2RvIGJ1aWxkXG4gICAgICAgICAgLy8gY29uc3QgYnVpbGQgPSB0aGlzLnByb3BzLmNvbmZpZ3VyYXRpb24uc2V0dGluZ3MuZ2V0KFsnYnVpbGQnXSk7XG4gICAgICAgICAgLy8gaWYgKGJ1aWxkKSB7XG4gICAgICAgICAgLy8gICBhd2FpdCBleGVjSW5DaGlsZFByb2Nlc3MoYnVpbGQsIHsgY3dkOiBwcm9wcy53b3JraW5nRGlyZWN0b3J5IH0pO1xuICAgICAgICAgIC8vIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcy5ta2RpcnBTeW5jKG91dGRpcik7XG4gICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBDb3VsZCBub3QgY3JlYXRlIG91dHB1dCBkaXJlY3RvcnkgYXQgJyR7b3V0ZGlyfScgKCR7ZS5tZXNzYWdlfSkuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXdhaXQgdXNpbmcgZXhlY3V0aW9uID0gYXdhaXQgRXhlY3V0aW9uRW52aXJvbm1lbnQuY3JlYXRlKHNlcnZpY2VzLCB7IG91dGRpciB9KTtcblxuICAgICAgICAgIGNvbnN0IGNvbW1hbmRMaW5lID0gYXdhaXQgZXhlY3V0aW9uLmd1ZXNzRXhlY3V0YWJsZShhcHApO1xuICAgICAgICAgIGNvbnN0IGVudiA9IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgICAgIC4uLmF3YWl0IGV4ZWN1dGlvbi5kZWZhdWx0RW52VmFycygpLFxuICAgICAgICAgICAgLi4ucHJvcHMuZW52LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBhd2FpdCBleGVjdXRpb24ud2l0aENvbnRleHQoY29udGV4dC5hbGwsIGVudiwgcHJvcHMuc3ludGhPcHRpb25zLCBhc3luYyAoZW52V2l0aENvbnRleHQsIF9jdHgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGV4ZWNJbkNoaWxkUHJvY2Vzcyhjb21tYW5kTGluZS5qb2luKCcgJyksIHtcbiAgICAgICAgICAgICAgZXZlbnRQdWJsaXNoZXI6IGFzeW5jICh0eXBlLCBsaW5lKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlICdkYXRhX3N0ZG91dCc6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfSTEwMDEubXNnKGxpbmUpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICdkYXRhX3N0ZGVycic6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfRTEwMDIubXNnKGxpbmUpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBleHRyYUVudjogZW52V2l0aENvbnRleHQsXG4gICAgICAgICAgICAgIGN3ZDogd29ya2luZ0RpcmVjdG9yeSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBhc20gPSBhd2FpdCBhc3NlbWJseUZyb21EaXJlY3Rvcnkob3V0ZGlyLCBzZXJ2aWNlcy5pb0hlbHBlciwgcHJvcHMubG9hZEFzc2VtYmx5T3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBleGVjdXRpb24ubWFya1N1Y2Nlc3NmdWwoKTtcbiAgICAgICAgICAgIGNvbnN0IGRlbGV0ZU9uRGlzcG9zZSA9IHByb3BzLmRpc3Bvc2VPdXRkaXIgPz8gZXhlY3V0aW9uLm91dERpcklzVGVtcG9yYXJ5O1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZUNsb3VkQXNzZW1ibHkoYXNtLCBzdWNjZXNzLnJlYWRMb2NrLCB7IGRlbGV0ZU9uRGlzcG9zZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb250ZXh0QXNzZW1ibHlQcm9wcyxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIHVuZGVmaW5lZCB2YWx1ZXMgZnJvbSBhIGRpY3Rpb25hcnlcbiAqL1xuZnVuY3Rpb24gbm9VbmRlZmluZWQ8QT4oeHM6IFJlY29yZDxzdHJpbmcsIEE+KTogUmVjb3JkPHN0cmluZywgTm9uTnVsbGFibGU8QT4+IHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh4cykuZmlsdGVyKChbXywgdl0pID0+IHYgIT09IHVuZGVmaW5lZCkpIGFzIGFueTtcbn1cbiJdfQ==
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzb3VyY2UtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLHlDQUF5QztBQUN6QywrQkFBK0I7QUFHL0IsaUVBQXlFO0FBQ3pFLGlDQUE0QztBQUM1QyxxREFBK0U7QUFDL0Usa0VBQTZFO0FBRTdFLDJEQUE0RDtBQUU1RCwyQ0FBd0M7QUFDeEMsOENBQXNDO0FBQ3RDLHlDQUFzQztBQUN0Qyw2Q0FBMEM7QUFFMUMsTUFBc0IsMEJBQTBCO0lBUTlDOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNJLEtBQUssQ0FBQyxtQkFBbUIsQ0FDOUIsT0FBd0IsRUFDeEIsUUFBNkIsRUFBRTtRQUUvQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3BELE1BQU0sT0FBTyxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLG1CQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEUsTUFBTSxvQkFBb0IsR0FBbUM7WUFDM0QsUUFBUTtZQUNSLE9BQU87WUFDUCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQztRQUVGLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNqRSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXZGLE9BQU8sSUFBSSxzREFBK0IsQ0FDeEM7WUFD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QyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dDQUNoRSxNQUFNO2dDQUNWLENBQUM7NEJBQ0gsQ0FBQzs0QkFDRCxRQUFRLEVBQUUsY0FBYzs0QkFDeEIsR0FBRyxFQUFFLGdCQUFnQjt5QkFDdEIsQ0FBQyxDQUFDO3dCQUVILE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSxzQ0FBcUIsRUFBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQzt3QkFFOUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7d0JBQ2pELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksU0FBUyxDQUFDLGlCQUFpQixDQUFDO3dCQUMzRSxPQUFPLElBQUkseUNBQXFCLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO29CQUMvRSxDQUFDLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7YUFDSjtTQUNGLEVBQ0Qsb0JBQW9CLENBQ3JCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFwTUQsZ0VBb01DO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBSSxFQUFxQjtJQUMzQyxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFRLENBQUM7QUFDM0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHR5cGUgeyBBc3NlbWJseURpcmVjdG9yeVByb3BzLCBBc3NlbWJseVNvdXJjZVByb3BzLCBJQ2xvdWRBc3NlbWJseVNvdXJjZSB9IGZyb20gJy4uLyc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlQcm9wcyB9IGZyb20gJy4vY29udGV4dC1hd2FyZS1zb3VyY2UnO1xuaW1wb3J0IHsgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZSB9IGZyb20gJy4vY29udGV4dC1hd2FyZS1zb3VyY2UnO1xuaW1wb3J0IHsgZXhlY0luQ2hpbGRQcm9jZXNzIH0gZnJvbSAnLi9leGVjJztcbmltcG9ydCB7IEV4ZWN1dGlvbkVudmlyb25tZW50LCBhc3NlbWJseUZyb21EaXJlY3RvcnkgfSBmcm9tICcuL3ByZXBhcmUtc291cmNlJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciwgQXNzZW1ibHlFcnJvciB9IGZyb20gJy4uLy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgdHlwZSB7IEFzc2VtYmx5QnVpbGRlciwgRnJvbUNka0FwcE9wdGlvbnMgfSBmcm9tICcuLi9zb3VyY2UtYnVpbGRlcic7XG5pbXBvcnQgeyBSZWFkYWJsZUNsb3VkQXNzZW1ibHkgfSBmcm9tICcuL3JlYWRhYmxlLWFzc2VtYmx5JztcbmltcG9ydCB0eXBlIHsgVG9vbGtpdFNlcnZpY2VzIH0gZnJvbSAnLi4vLi4vLi4vdG9vbGtpdC9wcml2YXRlJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0JztcbmltcG9ydCB7IElPIH0gZnJvbSAnLi4vLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyBSV0xvY2sgfSBmcm9tICcuLi8uLi9yd2xvY2snO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9zZXR0aW5ncyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDbG91ZEFzc2VtYmx5U291cmNlQnVpbGRlciB7XG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gcHJvdmlkZSB0aGUgQ2xvdWRBc3NlbWJseVNvdXJjZUJ1aWxkZXIgd2l0aCByZXF1aXJlZCB0b29sa2l0IHNlcnZpY2VzXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAZGVwcmVjYXRlZCB0aGlzIHNob3VsZCBtb3ZlIHRvIHRoZSB0b29sa2l0IHJlYWxseS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzb3VyY2VCdWlsZGVyU2VydmljZXMoKTogUHJvbWlzZTxUb29sa2l0U2VydmljZXM+O1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBDbG91ZCBBc3NlbWJseSBmcm9tIGEgQ2xvdWQgQXNzZW1ibHkgYnVpbGRlciBmdW5jdGlvbi5cbiAgICpcbiAgICogVGhlIG91dHB1dCBkaXJlY3Rvcnkgd2lsbCBiZSBldmFsdWF0ZWQgd2l0aCByZXNwZWN0IHRvIHRoZSB3b3JraW5nXG4gICAqIGRpcmVjdG9yeSBpZiByZWxhdGl2ZS4gSWYgbm90IGdpdmVuLCBpdCB3aWxsIHN5bnRoZXNpemUgaW50byBhIHRlbXBvcmFyeVxuICAgKiBzeXN0ZW0gZGlyZWN0b3J5LiBUaGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aWxsIGJlIGNsZWFuZWQgdXAsIHVubGVzc1xuICAgKiBgZGlzcG9zZU91dGRpcjogZmFsc2VgLlxuICAgKlxuICAgKiBBIHdyaXRlIGxvY2sgd2lsbCBiZSBhY3F1aXJlZCBvbiB0aGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIGR1cmF0aW9uIG9mXG4gICAqIHRoZSBDREsgYXBwIHN5bnRoZXNpcyAod2hpY2ggbWVhbnMgdGhhdCBubyB0d28gYXBwcyBjYW4gc3ludGhlc2l6ZSBhdCB0aGVcbiAgICogc2FtZSB0aW1lKSwgYW5kIGFmdGVyIHN5bnRoZXNpcyBhIHJlYWQgbG9jayB3aWxsIGJlIGFjcXVpcmVkIG9uIHRoZVxuICAgKiBkaXJlY3RvcnkuIFRoaXMgbWVhbnMgdGhhdCB3aGlsZSB0aGUgQ2xvdWRBc3NlbWJseSBpcyBiZWluZyB1c2VkLCBubyBDREtcbiAgICogYXBwIHN5bnRoZXNpcyBjYW4gdGFrZSBwbGFjZSBpbnRvIHRoYXQgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAcGFyYW0gYnVpbGRlciAtIHRoZSBidWlsZGVyIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSBwcm9wcyAtIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIHRoZSBDbG91ZEFzc2VtYmx5IHNvdXJjZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGZyb21Bc3NlbWJseUJ1aWxkZXIoXG4gICAgYnVpbGRlcjogQXNzZW1ibHlCdWlsZGVyLFxuICAgIHByb3BzOiBBc3NlbWJseVNvdXJjZVByb3BzID0ge30sXG4gICk6IFByb21pc2U8SUNsb3VkQXNzZW1ibHlTb3VyY2U+IHtcbiAgICBjb25zdCBzZXJ2aWNlcyA9IGF3YWl0IHRoaXMuc291cmNlQnVpbGRlclNlcnZpY2VzKCk7XG4gICAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KHsgYmFnOiBuZXcgU2V0dGluZ3MocHJvcHMuY29udGV4dCA/PyB7fSkgfSk7XG4gICAgY29uc3QgY29udGV4dEFzc2VtYmx5UHJvcHM6IENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlQcm9wcyA9IHtcbiAgICAgIHNlcnZpY2VzLFxuICAgICAgY29udGV4dCxcbiAgICAgIGxvb2t1cHM6IHByb3BzLmxvb2t1cHMsXG4gICAgfTtcblxuICAgIGNvbnN0IHdvcmtpbmdEaXJlY3RvcnkgPSBwcm9wcy53b3JraW5nRGlyZWN0b3J5ID8/IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3Qgb3V0ZGlyID0gcHJvcHMub3V0ZGlyID8gcGF0aC5yZXNvbHZlKHdvcmtpbmdEaXJlY3RvcnksIHByb3BzLm91dGRpcikgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gbmV3IENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlTb3VyY2UoXG4gICAgICB7XG4gICAgICAgIHByb2R1Y2U6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICBhd2FpdCB1c2luZyBleGVjdXRpb24gPSBhd2FpdCBFeGVjdXRpb25FbnZpcm9ubWVudC5jcmVhdGUoc2VydmljZXMsIHsgb3V0ZGlyIH0pO1xuXG4gICAgICAgICAgY29uc3QgZW52ID0gYXdhaXQgZXhlY3V0aW9uLmRlZmF1bHRFbnZWYXJzKCk7XG4gICAgICAgICAgY29uc3QgYXNzZW1ibHkgPSBhd2FpdCBleGVjdXRpb24uY2hhbmdlRGlyKGFzeW5jICgpID0+XG4gICAgICAgICAgICBleGVjdXRpb24ud2l0aENvbnRleHQoY29udGV4dC5hbGwsIGVudiwgcHJvcHMuc3ludGhPcHRpb25zID8/IHt9LCBhc3luYyAoZW52V2l0aENvbnRleHQsIGN0eCkgPT5cbiAgICAgICAgICAgICAgZXhlY3V0aW9uLndpdGhFbnYoZW52V2l0aENvbnRleHQsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGJ1aWxkZXIoe1xuICAgICAgICAgICAgICAgICAgICBvdXRkaXI6IGV4ZWN1dGlvbi5vdXRkaXIsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGN0eCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgICAvLyByZS10aHJvdyB0b29sa2l0IGVycm9ycyB1bmNoYW5nZWRcbiAgICAgICAgICAgICAgICAgIGlmIChUb29sa2l0RXJyb3IuaXNUb29sa2l0RXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCB3cmFwIGludG8gYW4gYXNzZW1ibHkgZXJyb3JcbiAgICAgICAgICAgICAgICAgIHRocm93IEFzc2VtYmx5RXJyb3Iud2l0aENhdXNlKCdBc3NlbWJseSBidWlsZGVyIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSwgd29ya2luZ0RpcmVjdG9yeSk7XG5cbiAgICAgICAgICAvLyBDb252ZXJ0IHdoYXQgd2UgZ290IHRvIHRoZSBkZWZpbml0ZWx5IGNvcnJlY3QgdHlwZSB3ZSdyZSBleHBlY3RpbmcsIGEgY3hhcGkuQ2xvdWRBc3NlbWJseVxuICAgICAgICAgIGNvbnN0IGFzbSA9IGN4YXBpLkNsb3VkQXNzZW1ibHkuaXNDbG91ZEFzc2VtYmx5KGFzc2VtYmx5KVxuICAgICAgICAgICAgPyBhc3NlbWJseVxuICAgICAgICAgICAgOiBhd2FpdCBhc3NlbWJseUZyb21EaXJlY3RvcnkoYXNzZW1ibHkuZGlyZWN0b3J5LCBzZXJ2aWNlcy5pb0hlbHBlciwgcHJvcHMubG9hZEFzc2VtYmx5T3B0aW9ucyk7XG5cbiAgICAgICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgZXhlY3V0aW9uLm1hcmtTdWNjZXNzZnVsKCk7XG4gICAgICAgICAgY29uc3QgZGVsZXRlT25EaXNwb3NlID0gcHJvcHMuZGlzcG9zZU91dGRpciA/PyBleGVjdXRpb24ub3V0RGlySXNUZW1wb3Jhcnk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZUNsb3VkQXNzZW1ibHkoYXNtLCBzdWNjZXNzLnJlYWRMb2NrLCB7IGRlbGV0ZU9uRGlzcG9zZSB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb250ZXh0QXNzZW1ibHlQcm9wcyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBDbG91ZCBBc3NlbWJseSBmcm9tIGFuIGV4aXN0aW5nIGFzc2VtYmx5IGRpcmVjdG9yeS5cbiAgICpcbiAgICogQSByZWFkIGxvY2sgd2lsbCBiZSBhY3F1aXJlZCBmb3IgdGhlIGRpcmVjdG9yeS4gVGhpcyBtZWFucyB0aGF0IHdoaWxlXG4gICAqIHRoZSBDbG91ZEFzc2VtYmx5IGlzIGJlaW5nIHVzZWQsIG5vIENESyBhcHAgc3ludGhlc2lzIGNhbiB0YWtlIHBsYWNlIGludG9cbiAgICogdGhhdCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBkaXJlY3RvcnkgLSBkaXJlY3RvcnkgdGhlIGRpcmVjdG9yeSBvZiBhIGFscmVhZHkgcHJvZHVjZWQgQ2xvdWQgQXNzZW1ibHkuXG4gICAqIEByZXR1cm5zIHRoZSBDbG91ZEFzc2VtYmx5IHNvdXJjZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGZyb21Bc3NlbWJseURpcmVjdG9yeShkaXJlY3Rvcnk6IHN0cmluZywgcHJvcHM6IEFzc2VtYmx5RGlyZWN0b3J5UHJvcHMgPSB7fSk6IFByb21pc2U8SUNsb3VkQXNzZW1ibHlTb3VyY2U+IHtcbiAgICBjb25zdCBzZXJ2aWNlczogVG9vbGtpdFNlcnZpY2VzID0gYXdhaXQgdGhpcy5zb3VyY2VCdWlsZGVyU2VydmljZXMoKTtcbiAgICBjb25zdCBjb250ZXh0QXNzZW1ibHlQcm9wczogQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVByb3BzID0ge1xuICAgICAgc2VydmljZXMsXG4gICAgICBjb250ZXh0OiBuZXcgQ29udGV4dCgpLCAvLyBAdG9kbyB0aGVyZSBpcyBwcm9iYWJseSBhIGRpZmZlcmVuY2UgYmV0d2VlbiBjb250ZXh0YXdhcmUgYW5kIGNvbnRleHRsb29rdXAgc291cmNlc1xuICAgICAgbG9va3VwczogZmFsc2UsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZShcbiAgICAgIHtcbiAgICAgICAgcHJvZHVjZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIC8vIEB0b2RvIGJ1aWxkXG4gICAgICAgICAgYXdhaXQgc2VydmljZXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19BU1NFTUJMWV9JMDE1MC5tc2coJy0tYXBwIHBvaW50cyB0byBhIGNsb3VkIGFzc2VtYmx5LCBzbyB3ZSBieXBhc3Mgc3ludGgnKSk7XG5cbiAgICAgICAgICBjb25zdCByZWFkTG9jayA9IGF3YWl0IG5ldyBSV0xvY2soZGlyZWN0b3J5KS5hY3F1aXJlUmVhZCgpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBhc20gPSBhd2FpdCBhc3NlbWJseUZyb21EaXJlY3RvcnkoZGlyZWN0b3J5LCBzZXJ2aWNlcy5pb0hlbHBlciwgcHJvcHMubG9hZEFzc2VtYmx5T3B0aW9ucyk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlYWRhYmxlQ2xvdWRBc3NlbWJseShhc20sIHJlYWRMb2NrLCB7IGRlbGV0ZU9uRGlzcG9zZTogZmFsc2UgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgYXdhaXQgcmVhZExvY2sucmVsZWFzZSgpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgY29udGV4dEFzc2VtYmx5UHJvcHMsXG4gICAgKTtcbiAgfVxuICAvKipcbiAgICogVXNlIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYW4gQVdTIENESyBhcHAgYXMgc291cmNlLlxuICAgKlxuICAgKiBUaGUgb3V0cHV0IGRpcmVjdG9yeSB3aWxsIGJlIGV2YWx1YXRlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIHdvcmtpbmdcbiAgICogZGlyZWN0b3J5IGlmIHJlbGF0aXZlLiBJZiBub3QgZ2l2ZW4sIGl0IHdpbGwgc3ludGhlc2l6ZSBpbnRvIGEgYGNkay5vdXRgXG4gICAqIHN1YmRpcmVjdG9yeS4gVGhpcyBkaXJlY3Rvcnkgd2lsbCBub3QgYmUgY2xlYW5lZCB1cCwgdW5sZXNzXG4gICAqIGBkaXNwb3NlT3V0ZGlyOiB0cnVlYC5cbiAgICpcbiAgICogQSB3cml0ZSBsb2NrIHdpbGwgYmUgYWNxdWlyZWQgb24gdGhlIG91dHB1dCBkaXJlY3RvcnkgZm9yIHRoZSBkdXJhdGlvbiBvZlxuICAgKiB0aGUgQ0RLIGFwcCBzeW50aGVzaXMgKHdoaWNoIG1lYW5zIHRoYXQgbm8gdHdvIGFwcHMgY2FuIHN5bnRoZXNpemUgYXQgdGhlXG4gICAqIHNhbWUgdGltZSksIGFuZCBhZnRlciBzeW50aGVzaXMgYSByZWFkIGxvY2sgd2lsbCBiZSBhY3F1aXJlZCBvbiB0aGVcbiAgICogZGlyZWN0b3J5LiAgVGhpcyBtZWFucyB0aGF0IHdoaWxlIHRoZSBDbG91ZEFzc2VtYmx5IGlzIGJlaW5nIHVzZWQsIG5vIENES1xuICAgKiBhcHAgc3ludGhlc2lzIGNhbiB0YWtlIHBsYWNlIGludG8gdGhhdCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyAtIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIHRoZSBDbG91ZEFzc2VtYmx5IHNvdXJjZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGZyb21DZGtBcHAoYXBwOiBzdHJpbmcsIHByb3BzOiBGcm9tQ2RrQXBwT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxJQ2xvdWRBc3NlbWJseVNvdXJjZT4ge1xuICAgIGNvbnN0IHNlcnZpY2VzOiBUb29sa2l0U2VydmljZXMgPSBhd2FpdCB0aGlzLnNvdXJjZUJ1aWxkZXJTZXJ2aWNlcygpO1xuICAgIC8vIEB0b2RvIHRoaXMgZGVmaW5pdGVseSBuZWVkcyB0byByZWFkIGZpbGVzIGZyb20gdGhlIENXRFxuICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQ29udGV4dCh7IGJhZzogbmV3IFNldHRpbmdzKHByb3BzLmNvbnRleHQgPz8ge30pIH0pO1xuICAgIGNvbnN0IGNvbnRleHRBc3NlbWJseVByb3BzOiBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5UHJvcHMgPSB7XG4gICAgICBzZXJ2aWNlcyxcbiAgICAgIGNvbnRleHQsXG4gICAgICBsb29rdXBzOiBwcm9wcy5sb29rdXBzLFxuICAgIH07XG5cbiAgICBjb25zdCB3b3JraW5nRGlyZWN0b3J5ID0gcHJvcHMud29ya2luZ0RpcmVjdG9yeSA/PyBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG91dGRpciA9IHBhdGgucmVzb2x2ZSh3b3JraW5nRGlyZWN0b3J5LCBwcm9wcy5vdXRkaXIgPz8gJ2Nkay5vdXQnKTtcblxuICAgIHJldHVybiBuZXcgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZShcbiAgICAgIHtcbiAgICAgICAgcHJvZHVjZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIC8vIEB0b2RvIGJ1aWxkXG4gICAgICAgICAgLy8gY29uc3QgYnVpbGQgPSB0aGlzLnByb3BzLmNvbmZpZ3VyYXRpb24uc2V0dGluZ3MuZ2V0KFsnYnVpbGQnXSk7XG4gICAgICAgICAgLy8gaWYgKGJ1aWxkKSB7XG4gICAgICAgICAgLy8gICBhd2FpdCBleGVjSW5DaGlsZFByb2Nlc3MoYnVpbGQsIHsgY3dkOiBwcm9wcy53b3JraW5nRGlyZWN0b3J5IH0pO1xuICAgICAgICAgIC8vIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcy5ta2RpcnBTeW5jKG91dGRpcik7XG4gICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBDb3VsZCBub3QgY3JlYXRlIG91dHB1dCBkaXJlY3RvcnkgYXQgJyR7b3V0ZGlyfScgKCR7ZS5tZXNzYWdlfSkuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXdhaXQgdXNpbmcgZXhlY3V0aW9uID0gYXdhaXQgRXhlY3V0aW9uRW52aXJvbm1lbnQuY3JlYXRlKHNlcnZpY2VzLCB7IG91dGRpciB9KTtcblxuICAgICAgICAgIGNvbnN0IGNvbW1hbmRMaW5lID0gYXdhaXQgZXhlY3V0aW9uLmd1ZXNzRXhlY3V0YWJsZShhcHApO1xuICAgICAgICAgIGNvbnN0IGVudiA9IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgICAgIC4uLmF3YWl0IGV4ZWN1dGlvbi5kZWZhdWx0RW52VmFycygpLFxuICAgICAgICAgICAgLi4ucHJvcHMuZW52LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBhd2FpdCBleGVjdXRpb24ud2l0aENvbnRleHQoY29udGV4dC5hbGwsIGVudiwgcHJvcHMuc3ludGhPcHRpb25zLCBhc3luYyAoZW52V2l0aENvbnRleHQsIF9jdHgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGV4ZWNJbkNoaWxkUHJvY2Vzcyhjb21tYW5kTGluZS5qb2luKCcgJyksIHtcbiAgICAgICAgICAgICAgZXZlbnRQdWJsaXNoZXI6IGFzeW5jICh0eXBlLCBsaW5lKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlICdkYXRhX3N0ZG91dCc6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfSTEwMDEubXNnKGxpbmUpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICdkYXRhX3N0ZGVycic6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfRTEwMDIubXNnKGxpbmUpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBleHRyYUVudjogZW52V2l0aENvbnRleHQsXG4gICAgICAgICAgICAgIGN3ZDogd29ya2luZ0RpcmVjdG9yeSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBhc20gPSBhd2FpdCBhc3NlbWJseUZyb21EaXJlY3Rvcnkob3V0ZGlyLCBzZXJ2aWNlcy5pb0hlbHBlciwgcHJvcHMubG9hZEFzc2VtYmx5T3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBleGVjdXRpb24ubWFya1N1Y2Nlc3NmdWwoKTtcbiAgICAgICAgICAgIGNvbnN0IGRlbGV0ZU9uRGlzcG9zZSA9IHByb3BzLmRpc3Bvc2VPdXRkaXIgPz8gZXhlY3V0aW9uLm91dERpcklzVGVtcG9yYXJ5O1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZUNsb3VkQXNzZW1ibHkoYXNtLCBzdWNjZXNzLnJlYWRMb2NrLCB7IGRlbGV0ZU9uRGlzcG9zZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb250ZXh0QXNzZW1ibHlQcm9wcyxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIHVuZGVmaW5lZCB2YWx1ZXMgZnJvbSBhIGRpY3Rpb25hcnlcbiAqL1xuZnVuY3Rpb24gbm9VbmRlZmluZWQ8QT4oeHM6IFJlY29yZDxzdHJpbmcsIEE+KTogUmVjb3JkPHN0cmluZywgTm9uTnVsbGFibGU8QT4+IHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh4cykuZmlsdGVyKChbXywgdl0pID0+IHYgIT09IHVuZGVmaW5lZCkpIGFzIGFueTtcbn1cbiJdfQ==
@@ -67,7 +67,8 @@ export declare class HotswapPropertyOverrides {
67
67
  export declare class EcsHotswapProperties {
68
68
  readonly minimumHealthyPercent?: number;
69
69
  readonly maximumHealthyPercent?: number;
70
- constructor(minimumHealthyPercent?: number, maximumHealthyPercent?: number);
70
+ readonly stabilizationTimeoutSeconds?: number;
71
+ constructor(minimumHealthyPercent?: number, maximumHealthyPercent?: number, stabilizationTimeoutSeconds?: number);
71
72
  /**
72
73
  * Check if any hotswap properties are defined
73
74
  * @returns true if all properties are undefined, false otherwise
@@ -41,13 +41,18 @@ class EcsHotswapProperties {
41
41
  minimumHealthyPercent;
42
42
  // The upper limit on the number of your service's tasks that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desiredCount
43
43
  maximumHealthyPercent;
44
- constructor(minimumHealthyPercent, maximumHealthyPercent) {
44
+ // The number of seconds to wait for a single service to reach stable state.
45
+ stabilizationTimeoutSeconds;
46
+ constructor(minimumHealthyPercent, maximumHealthyPercent, stabilizationTimeoutSeconds) {
45
47
  if (minimumHealthyPercent !== undefined && minimumHealthyPercent < 0) {
46
48
  throw new toolkit_error_1.ToolkitError('hotswap-ecs-minimum-healthy-percent can\'t be a negative number');
47
49
  }
48
50
  if (maximumHealthyPercent !== undefined && maximumHealthyPercent < 0) {
49
51
  throw new toolkit_error_1.ToolkitError('hotswap-ecs-maximum-healthy-percent can\'t be a negative number');
50
52
  }
53
+ if (stabilizationTimeoutSeconds !== undefined && stabilizationTimeoutSeconds < 0) {
54
+ throw new toolkit_error_1.ToolkitError('hotswap-ecs-stabilization-timeout-seconds can\'t be a negative number');
55
+ }
51
56
  // In order to preserve the current behaviour, when minimumHealthyPercent is not defined, it will be set to the currently default value of 0
52
57
  if (minimumHealthyPercent == undefined) {
53
58
  this.minimumHealthyPercent = 0;
@@ -56,6 +61,7 @@ class EcsHotswapProperties {
56
61
  this.minimumHealthyPercent = minimumHealthyPercent;
57
62
  }
58
63
  this.maximumHealthyPercent = maximumHealthyPercent;
64
+ this.stabilizationTimeoutSeconds = stabilizationTimeoutSeconds;
59
65
  }
60
66
  /**
61
67
  * Check if any hotswap properties are defined
@@ -134,4 +140,4 @@ function nonHotswappableResource(change) {
134
140
  },
135
141
  };
136
142
  }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlKQSwwQ0FhQztBQUVELHNEQXNCQztBQUVELDBEQWVDO0FBck1ELG9EQUErRDtBQUMvRCwrREFBMkQ7QUFHOUMsUUFBQSxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBNkN4QixJQUFZLFdBZVg7QUFmRCxXQUFZLFdBQVc7SUFDckI7O09BRUc7SUFDSCxzQ0FBdUIsQ0FBQTtJQUV2Qjs7T0FFRztJQUNILDRDQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsa0RBQW1DLENBQUE7QUFDckMsQ0FBQyxFQWZXLFdBQVcsMkJBQVgsV0FBVyxRQWV0QjtBQUVEOztHQUVHO0FBQ0gsTUFBYSx3QkFBd0I7SUFDbkMsbUZBQW1GO0lBQ25GLG9CQUFvQixDQUF3QjtJQUU1QyxZQUFvQixvQkFBMkM7UUFDN0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDO0lBQ25ELENBQUM7Q0FDRjtBQVBELDREQU9DO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLG9CQUFvQjtJQUMvQix1SkFBdUo7SUFDOUkscUJBQXFCLENBQVU7SUFDeEMsa0tBQWtLO0lBQ3pKLHFCQUFxQixDQUFVO0lBRXhDLFlBQW9CLHFCQUE4QixFQUFFLHFCQUE4QjtRQUNoRixJQUFJLHFCQUFxQixLQUFLLFNBQVMsSUFBSSxxQkFBcUIsR0FBRyxDQUFDLEVBQUcsQ0FBQztZQUN0RSxNQUFNLElBQUksNEJBQVksQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFDRCxJQUFJLHFCQUFxQixLQUFLLFNBQVMsSUFBSSxxQkFBcUIsR0FBRyxDQUFDLEVBQUcsQ0FBQztZQUN0RSxNQUFNLElBQUksNEJBQVksQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFDRCw0SUFBNEk7UUFDNUksSUFBSSxxQkFBcUIsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUN2QyxJ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QUFNLENBQUMsUUFBUSxDQUFDLElBQUk7Z0JBQ2xDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQztnQkFDL0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO2FBQzFCO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLHVCQUF1QixDQUFDLE1BQXNCO0lBQzVELE9BQU87UUFDTCxZQUFZLEVBQUUsS0FBSztRQUNuQixNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUsK0JBQXFCLENBQUMsb0JBQW9CO1lBQ2xELFdBQVcsRUFBRSw2REFBNkQ7WUFDMUUsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxVQUFVO2dCQUNoQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7Z0JBQzNCLFlBQVksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUk7Z0JBQ2xDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztnQkFDdkQsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO2FBQzFCO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHlEaWZmZXJlbmNlIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQgdHlwZSB7IEhvdHN3YXBwYWJsZUNoYW5nZSwgTm9uSG90c3dhcHBhYmxlQ2hhbmdlLCBSZXNvdXJjZUNoYW5nZSB9IGZyb20gJy4uLy4uL3BheWxvYWRzL2hvdHN3YXAnO1xuaW1wb3J0IHsgTm9uSG90c3dhcHBhYmxlUmVhc29uIH0gZnJvbSAnLi4vLi4vcGF5bG9hZHMvaG90c3dhcCc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuaW1wb3J0IHR5cGUgeyBTREsgfSBmcm9tICcuLi9hd3MtYXV0aC9wcml2YXRlJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSAn4pyoJztcblxuZXhwb3J0IGludGVyZmFjZSBIb3Rzd2FwT3BlcmF0aW9uIHtcbiAgLyoqXG4gICAqIE1hcmtzIHRoZSBvcGVyYXRpb24gYXMgaG90c3dhcHBhYmxlXG4gICAqL1xuICByZWFkb25seSBob3Rzd2FwcGFibGU6IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlIGJlaW5nIGhvdHN3YXBwZWQuXG4gICAqIFVzZWQgdG8gc2V0IGEgY3VzdG9tIFVzZXItQWdlbnQgZm9yIFNESyBjYWxscy5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2U6IHN0cmluZztcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gb2YgdGhlIGNoYW5nZSB0aGF0IGlzIGFwcGxpZWQgYXMgcGFydCBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2U6IEhvdHN3YXBwYWJsZUNoYW5nZTtcblxuICAvKipcbiAgICogQXBwbGllcyB0aGUgaG90c3dhcCBvcGVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGFwcGx5OiAoc2RrOiBTREspID0+IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVqZWN0ZWRDaGFuZ2Uge1xuICAvKipcbiAgICogTWFya3MgdGhlIGNoYW5nZSBhcyBub3QgaG90c3dhcHBhYmxlXG4gICAqL1xuICByZWFkb25seSBob3Rzd2FwcGFibGU6IGZhbHNlO1xuICAvKipcbiAgICogVGhlIGNoYW5nZSB0aGF0IGdvdCByZWplY3RlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlOiBOb25Ib3Rzd2FwcGFibGVDaGFuZ2U7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IHRoaXMgY2hhbmdlIHdoZW4gbGlzdGluZyBub24taG90c3dhcHBhYmxlIGNoYW5nZXMgaW4gSE9UU1dBUF9PTkxZIG1vZGUuIERvZXMgbm90IGFmZmVjdFxuICAgKiBsaXN0aW5nIGluIEZBTExfQkFDSyBtb2RlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBob3Rzd2FwT25seVZpc2libGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBIb3Rzd2FwQ2hhbmdlID0gSG90c3dhcE9wZXJhdGlvbiB8IFJlamVjdGVkQ2hhbmdlO1xuXG5leHBvcnQgZW51bSBIb3Rzd2FwTW9kZSB7XG4gIC8qKlxuICAgKiBXaWxsIGZhbGwgYmFjayB0byBDbG91ZEZvcm1hdGlvbiB3aGVuIGEgbm9uLWhvdHN3YXBwYWJsZSBjaGFuZ2UgaXMgZGV0ZWN0ZWRcbiAgICovXG4gIEZBTExfQkFDSyA9ICdmYWxsLWJhY2snLFxuXG4gIC8qKlxuICAgKiBXaWxsIG5vdCBmYWxsIGJhY2sgdG8gQ2xvdWRGb3JtYXRpb24gd2hlbiBhIG5vbi1ob3Rzd2FwcGFibGUgY2hhbmdlIGlzIGRldGVjdGVkXG4gICAqL1xuICBIT1RTV0FQX09OTFkgPSAnaG90c3dhcC1vbmx5JyxcblxuICAvKipcbiAgICogV2lsbCBub3QgYXR0ZW1wdCB0byBob3Rzd2FwIGFueXRoaW5nIGFuZCBpbnN0ZWFkIGdvIHN0cmFpZ2h0IHRvIENsb3VkRm9ybWF0aW9uXG4gICAqL1xuICBGVUxMX0RFUExPWU1FTlQgPSAnZnVsbC1kZXBsb3ltZW50Jyxcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgb3ZlcnJpZGVzIGZvciBob3Rzd2FwIGRlcGxveW1lbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBIb3Rzd2FwUHJvcGVydHlPdmVycmlkZXMge1xuICAvLyBFYWNoIHN1cHBvcnRlZCByZXNvdXJjZSB0eXBlIHdpbGwgaGF2ZSBpdHMgb3duIHByb3BlcnRpZXMuIEN1cnJlbnRseSB0aGlzIGlzIEVDU1xuICBlY3NIb3Rzd2FwUHJvcGVydGllcz86IEVjc0hvdHN3YXBQcm9wZXJ0aWVzO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvciAoZWNzSG90c3dhcFByb3BlcnRpZXM/OiBFY3NIb3Rzd2FwUHJvcGVydGllcykge1xuICAgIHRoaXMuZWNzSG90c3dhcFByb3BlcnRpZXMgPSBlY3NIb3Rzd2FwUHJvcGVydGllcztcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciBFQ1MgaG90c3dhcCBkZXBsb3ltZW50c1xuICovXG5leHBvcnQgY2xhc3MgRWNzSG90c3dhcFByb3BlcnRpZXMge1xuICAvLyBUaGUgbG93ZXIgbGltaXQgb24gdGhlIG51bWJlciBvZiB5b3VyIHNlcnZpY2UncyB0YXNrcyB0aGF0IG11c3QgcmVtYWluIGluIHRoZSBSVU5OSU5HIHN0YXRlIGR1cmluZyBhIGRlcGxveW1lbnQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgZGVzaXJlZENvdW50XG4gIHJlYWRvbmx5IG1pbmltdW1IZWFsdGh5UGVyY2VudD86IG51bWJlcjtcbiAgLy8gVGhlIHVwcGVyIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgeW91ciBzZXJ2aWNlJ3MgdGFza3MgdGhhdCBhcmUgYWxsb3dlZCBpbiB0aGUgUlVOTklORyBvciBQRU5ESU5HIHN0YXRlIGR1cmluZyBhIGRlcGxveW1lbnQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgZGVzaXJlZENvdW50XG4gIHJlYWRvbmx5IG1heGltdW1IZWFsdGh5UGVyY2VudD86IG51bWJlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IgKG1pbmltdW1IZWFsdGh5UGVyY2VudD86IG51bWJlciwgbWF4aW11bUhlYWx0aHlQZXJjZW50PzogbnVtYmVyKSB7XG4gICAgaWYgKG1pbmltdW1IZWFsdGh5UGVyY2VudCAhPT0gdW5kZWZpbmVkICYmIG1pbmltdW1IZWFsdGh5UGVyY2VudCA8IDAgKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdob3Rzd2FwLWVjcy1taW5pbXVtLWhlYWx0aHktcGVyY2VudCBjYW5cXCd0IGJlIGEgbmVnYXRpdmUgbnVtYmVyJyk7XG4gICAgfVxuICAgIGlmIChtYXhpbXVtSGVhbHRoeVBlcmNlbnQgIT09IHVuZGVmaW5lZCAmJiBtYXhpbXVtSGVhbHRoeVBlcmNlbnQgPCAwICkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignaG90c3dhcC1lY3MtbWF4aW11bS1oZWFsdGh5LXBlcmNlbnQgY2FuXFwndCBiZSBhIG5lZ2F0aXZlIG51bWJlcicpO1xuICAgIH1cbiAgICAvLyBJbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY3VycmVudCBiZWhhdmlvdXIsIHdoZW4gbWluaW11bUhlYWx0aHlQZXJjZW50IGlzIG5vdCBkZWZpbmVkLCBpdCB3aWxsIGJlIHNldCB0byB0aGUgY3VycmVudGx5IGRlZmF1bHQgdmFsdWUgb2YgMFxuICAgIGlmIChtaW5pbXVtSGVhbHRoeVBlcmNlbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm1pbmltdW1IZWFsdGh5UGVyY2VudCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWluaW11bUhlYWx0aHlQZXJjZW50ID0gbWluaW11bUhlYWx0aHlQZXJjZW50O1xuICAgIH1cbiAgICB0aGlzLm1heGltdW1IZWFsdGh5UGVyY2VudCA9IG1heGltdW1IZWFsdGh5UGVyY2VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbnkgaG90c3dhcCBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYWxsIHByb3BlcnRpZXMgYXJlIHVuZGVmaW5lZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBwdWJsaWMgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5taW5pbXVtSGVhbHRoeVBlcmNlbnQgPT09IDAgJiYgdGhpcy5tYXhpbXVtSGVhbHRoeVBlcmNlbnQgPT09IHVuZGVmaW5lZDtcbiAgfVxufVxuXG50eXBlIFByb3BEaWZmcyA9IFJlY29yZDxzdHJpbmcsIFByb3BlcnR5RGlmZmVyZW5jZTxhbnk+PjtcblxuY2xhc3MgQ2xhc3NpZmllZENoYW5nZXMge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGNoYW5nZTogUmVzb3VyY2VDaGFuZ2UsXG4gICAgcHVibGljIHJlYWRvbmx5IGhvdHN3YXBwYWJsZVByb3BzOiBQcm9wRGlmZnMsXG4gICAgcHVibGljIHJlYWRvbmx5IG5vbkhvdHN3YXBwYWJsZVByb3BzOiBQcm9wRGlmZnMsXG4gICkge1xuICB9XG5cbiAgcHVibGljIHJlcG9ydE5vbkhvdHN3YXBwYWJsZVByb3BlcnR5Q2hhbmdlcyhyZXQ6IEhvdHN3YXBDaGFuZ2VbXSk6IHZvaWQge1xuICAgIGNvbnN0IG5vbkhvdHN3YXBwYWJsZVByb3BOYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMubm9uSG90c3dhcHBhYmxlUHJvcHMpO1xuICAgIGlmIChub25Ib3Rzd2FwcGFibGVQcm9wTmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdGFnT25seUNoYW5nZSA9IG5vbkhvdHN3YXBwYWJsZVByb3BOYW1lcy5sZW5ndGggPT09IDEgJiYgbm9uSG90c3dhcHBhYmxlUHJvcE5hbWVzWzBdID09PSAnVGFncyc7XG4gICAgICBjb25zdCByZWFzb24gPSB0YWdPbmx5Q2hhbmdlID8gTm9uSG90c3dhcHBhYmxlUmVhc29uLlRBR1MgOiBOb25Ib3Rzd2FwcGFibGVSZWFzb24uUFJPUEVSVElFUztcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGFnT25seUNoYW5nZSA/ICdUYWdzIGFyZSBub3QgaG90c3dhcHBhYmxlJyA6IGByZXNvdXJjZSBwcm9wZXJ0aWVzICcke25vbkhvdHN3YXBwYWJsZVByb3BOYW1lc30nIGFyZSBub3QgaG90c3dhcHBhYmxlIG9uIHRoaXMgcmVzb3VyY2UgdHlwZWA7XG5cbiAgICAgIHJldC5wdXNoKG5vbkhvdHN3YXBwYWJsZUNoYW5nZShcbiAgICAgICAgdGhpcy5jaGFuZ2UsXG4gICAgICAgIHJlYXNvbixcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIHRoaXMubm9uSG90c3dhcHBhYmxlUHJvcHMsXG4gICAgICApKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWVzT2ZIb3Rzd2FwcGFibGVQcm9wcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuaG90c3dhcHBhYmxlUHJvcHMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeUNoYW5nZXMoeHM6IFJlc291cmNlQ2hhbmdlLCBob3Rzd2FwcGFibGVQcm9wTmFtZXM6IHN0cmluZ1tdKTogQ2xhc3NpZmllZENoYW5nZXMge1xuICBjb25zdCBob3Rzd2FwcGFibGVQcm9wczogUHJvcERpZmZzID0ge307XG4gIGNvbnN0IG5vbkhvdHN3YXBwYWJsZVByb3BzOiBQcm9wRGlmZnMgPSB7fTtcblxuICBmb3IgKGNvbnN0IFtuYW1lLCBwcm9wRGlmZl0gb2YgT2JqZWN0LmVudHJpZXMoeHMucHJvcGVydHlVcGRhdGVzKSkge1xuICAgIGlmIChob3Rzd2FwcGFibGVQcm9wTmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgIGhvdHN3YXBwYWJsZVByb3BzW25hbWVdID0gcHJvcERpZmY7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vbkhvdHN3YXBwYWJsZVByb3BzW25hbWVdID0gcHJvcERpZmY7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBDbGFzc2lmaWVkQ2hhbmdlcyh4cywgaG90c3dhcHBhYmxlUHJvcHMsIG5vbkhvdHN3YXBwYWJsZVByb3BzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbkhvdHN3YXBwYWJsZUNoYW5nZShcbiAgY2hhbmdlOiBSZXNvdXJjZUNoYW5nZSxcbiAgcmVhc29uOiBOb25Ib3Rzd2FwcGFibGVSZWFzb24sXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gIG5vbkhvdHN3YXBwYWJsZVByb3BzPzogUHJvcERpZmZzLFxuICBob3Rzd2FwT25seVZpc2libGU6IGJvb2xlYW4gPSB0cnVlLFxuKTogUmVqZWN0ZWRDaGFuZ2Uge1xuICByZXR1cm4ge1xuICAgIGhvdHN3YXBwYWJsZTogZmFsc2UsXG4gICAgaG90c3dhcE9ubHlWaXNpYmxlLFxuICAgIGNoYW5nZToge1xuICAgICAgcmVhc29uLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBzdWJqZWN0OiB7XG4gICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgIGxvZ2ljYWxJZDogY2hhbmdlLmxvZ2ljYWxJZCxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiBjaGFuZ2UubmV3VmFsdWUuVHlwZSxcbiAgICAgICAgcmVqZWN0ZWRQcm9wZXJ0aWVzOiBPYmplY3Qua2V5cyhub25Ib3Rzd2FwcGFibGVQcm9wcyA/PyBjaGFuZ2UucHJvcGVydHlVcGRhdGVzKSxcbiAgICAgICAgbWV0YWRhdGE6IGNoYW5nZS5tZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlKGNoYW5nZTogUmVzb3VyY2VDaGFuZ2UpOiBSZWplY3RlZENoYW5nZSB7XG4gIHJldHVybiB7XG4gICAgaG90c3dhcHBhYmxlOiBmYWxzZSxcbiAgICBjaGFuZ2U6IHtcbiAgICAgIHJlYXNvbjogTm9uSG90c3dhcHBhYmxlUmVhc29uLlJFU09VUkNFX1VOU1VQUE9SVEVELFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHJlc291cmNlIHR5cGUgaXMgbm90IHN1cHBvcnRlZCBmb3IgaG90c3dhcCBkZXBsb3ltZW50cycsXG4gICAgICBzdWJqZWN0OiB7XG4gICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgIGxvZ2ljYWxJZDogY2hhbmdlLmxvZ2ljYWxJZCxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiBjaGFuZ2UubmV3VmFsdWUuVHlwZSxcbiAgICAgICAgcmVqZWN0ZWRQcm9wZXJ0aWVzOiBPYmplY3Qua2V5cyhjaGFuZ2UucHJvcGVydHlVcGRhdGVzKSxcbiAgICAgICAgbWV0YWRhdGE6IGNoYW5nZS5tZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXVKQSwwQ0FhQztBQUVELHNEQXNCQztBQUVELDBEQWVDO0FBM01ELG9EQUErRDtBQUMvRCwrREFBMkQ7QUFHOUMsUUFBQSxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBNkN4QixJQUFZLFdBZVg7QUFmRCxXQUFZLFdBQVc7SUFDckI7O09BRUc7SUFDSCxzQ0FBdUIsQ0FBQTtJQUV2Qjs7T0FFRztJQUNILDRDQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsa0RBQW1DLENBQUE7QUFDckMsQ0FBQyxFQWZXLFdBQVcsMkJBQVgsV0FBVyxRQWV0QjtBQUVEOztHQUVHO0FBQ0gsTUFBYSx3QkFBd0I7SUFDbkMsbUZBQW1GO0lBQ25GLG9CQUFvQixDQUF3QjtJQUU1QyxZQUFvQixvQkFBMkM7UUFDN0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDO0lBQ25ELENBQUM7Q0FDRjtBQVBELDREQU9DO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLG9CQUFvQjtJQUMvQix1SkFBdUo7SUFDOUkscUJBQXFCLENBQVU7SUFDeEMsa0tBQWtLO0lBQ3pKLHFCQUFxQixDQUFVO0lBQ3hDLDRFQUE0RTtJQUNuRSwyQkFBMkIsQ0FBVTtJQUU5QyxZQUFvQixxQkFBOEIsRUFBRSxxQkFBOEIsRUFBRSwyQkFBb0M7UUFDdEgsSUFBSSxxQkFBcUIsS0FBSyxTQUFTLElBQUkscUJBQXFCLEdBQUcsQ0FBQyxFQUFHLENBQUM7WUFDdEUsTUFBTSxJQUFJLDRCQUFZLENBQUMsaUVBQWlFLENBQUMsQ0FBQztRQUM1RixDQUFDO1FBQ0QsSUFBSSxxQkFBcUIsS0FBSyxTQUFTLElBQUkscUJBQXFCLEdBQUcsQ0FBQyxFQUFHLENBQUM7WUFDdEUsTUFBTSxJQUFJLDRCQUFZLENBQUMsaUVBQWlFLENBQUMsQ0FBQztRQUM1RixDQUFDO1FBQ0QsSUFBSSwyQkFB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RUFDbkIsb0JBQWdDLEVBQ2hDLHFCQUE4QixJQUFJO0lBRWxDLE9BQU87UUFDTCxZQUFZLEVBQUUsS0FBSztRQUNuQixrQkFBa0I7UUFDbEIsTUFBTSxFQUFFO1lBQ04sTUFBTTtZQUNOLFdBQVc7WUFDWCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztnQkFDM0IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTtnQkFDbEMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDO2dCQUMvRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7YUFDMUI7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQUMsTUFBc0I7SUFDNUQsT0FBTztRQUNMLFlBQVksRUFBRSxLQUFLO1FBQ25CLE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSwrQkFBcUIsQ0FBQyxvQkFBb0I7WUFDbEQsV0FBVyxFQUFFLDZEQUE2RDtZQUMxRSxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztnQkFDM0IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTtnQkFDbEMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO2dCQUN2RCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7YUFDMUI7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eURpZmZlcmVuY2UgfSBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB0eXBlIHsgSG90c3dhcHBhYmxlQ2hhbmdlLCBOb25Ib3Rzd2FwcGFibGVDaGFuZ2UsIFJlc291cmNlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vcGF5bG9hZHMvaG90c3dhcCc7XG5pbXBvcnQgeyBOb25Ib3Rzd2FwcGFibGVSZWFzb24gfSBmcm9tICcuLi8uLi9wYXlsb2Fkcy9ob3Rzd2FwJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgdHlwZSB7IFNESyB9IGZyb20gJy4uL2F3cy1hdXRoL3ByaXZhdGUnO1xuXG5leHBvcnQgY29uc3QgSUNPTiA9ICfinKgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhvdHN3YXBPcGVyYXRpb24ge1xuICAvKipcbiAgICogTWFya3MgdGhlIG9wZXJhdGlvbiBhcyBob3Rzd2FwcGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGhvdHN3YXBwYWJsZTogdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgYmVpbmcgaG90c3dhcHBlZC5cbiAgICogVXNlZCB0byBzZXQgYSBjdXN0b20gVXNlci1BZ2VudCBmb3IgU0RLIGNhbGxzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBvZiB0aGUgY2hhbmdlIHRoYXQgaXMgYXBwbGllZCBhcyBwYXJ0IG9mIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZTogSG90c3dhcHBhYmxlQ2hhbmdlO1xuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBob3Rzd2FwIG9wZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYXBwbHk6IChzZGs6IFNESykgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWplY3RlZENoYW5nZSB7XG4gIC8qKlxuICAgKiBNYXJrcyB0aGUgY2hhbmdlIGFzIG5vdCBob3Rzd2FwcGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGhvdHN3YXBwYWJsZTogZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgY2hhbmdlIHRoYXQgZ290IHJlamVjdGVkXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2U6IE5vbkhvdHN3YXBwYWJsZUNoYW5nZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhpcyBjaGFuZ2Ugd2hlbiBsaXN0aW5nIG5vbi1ob3Rzd2FwcGFibGUgY2hhbmdlcyBpbiBIT1RTV0FQX09OTFkgbW9kZS4gRG9lcyBub3QgYWZmZWN0XG4gICAqIGxpc3RpbmcgaW4gRkFMTF9CQUNLIG1vZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGhvdHN3YXBPbmx5VmlzaWJsZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEhvdHN3YXBDaGFuZ2UgPSBIb3Rzd2FwT3BlcmF0aW9uIHwgUmVqZWN0ZWRDaGFuZ2U7XG5cbmV4cG9ydCBlbnVtIEhvdHN3YXBNb2RlIHtcbiAgLyoqXG4gICAqIFdpbGwgZmFsbCBiYWNrIHRvIENsb3VkRm9ybWF0aW9uIHdoZW4gYSBub24taG90c3dhcHBhYmxlIGNoYW5nZSBpcyBkZXRlY3RlZFxuICAgKi9cbiAgRkFMTF9CQUNLID0gJ2ZhbGwtYmFjaycsXG5cbiAgLyoqXG4gICAqIFdpbGwgbm90IGZhbGwgYmFjayB0byBDbG91ZEZvcm1hdGlvbiB3aGVuIGEgbm9uLWhvdHN3YXBwYWJsZSBjaGFuZ2UgaXMgZGV0ZWN0ZWRcbiAgICovXG4gIEhPVFNXQVBfT05MWSA9ICdob3Rzd2FwLW9ubHknLFxuXG4gIC8qKlxuICAgKiBXaWxsIG5vdCBhdHRlbXB0IHRvIGhvdHN3YXAgYW55dGhpbmcgYW5kIGluc3RlYWQgZ28gc3RyYWlnaHQgdG8gQ2xvdWRGb3JtYXRpb25cbiAgICovXG4gIEZVTExfREVQTE9ZTUVOVCA9ICdmdWxsLWRlcGxveW1lbnQnLFxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSBvdmVycmlkZXMgZm9yIGhvdHN3YXAgZGVwbG95bWVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyB7XG4gIC8vIEVhY2ggc3VwcG9ydGVkIHJlc291cmNlIHR5cGUgd2lsbCBoYXZlIGl0cyBvd24gcHJvcGVydGllcy4gQ3VycmVudGx5IHRoaXMgaXMgRUNTXG4gIGVjc0hvdHN3YXBQcm9wZXJ0aWVzPzogRWNzSG90c3dhcFByb3BlcnRpZXM7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yIChlY3NIb3Rzd2FwUHJvcGVydGllcz86IEVjc0hvdHN3YXBQcm9wZXJ0aWVzKSB7XG4gICAgdGhpcy5lY3NIb3Rzd2FwUHJvcGVydGllcyA9IGVjc0hvdHN3YXBQcm9wZXJ0aWVzO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIEVDUyBob3Rzd2FwIGRlcGxveW1lbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBFY3NIb3Rzd2FwUHJvcGVydGllcyB7XG4gIC8vIFRoZSBsb3dlciBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHlvdXIgc2VydmljZSdzIHRhc2tzIHRoYXQgbXVzdCByZW1haW4gaW4gdGhlIFJVTk5JTkcgc3RhdGUgZHVyaW5nIGEgZGVwbG95bWVudCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBkZXNpcmVkQ291bnRcbiAgcmVhZG9ubHkgbWluaW11bUhlYWx0aHlQZXJjZW50PzogbnVtYmVyO1xuICAvLyBUaGUgdXBwZXIgbGltaXQgb24gdGhlIG51bWJlciBvZiB5b3VyIHNlcnZpY2UncyB0YXNrcyB0aGF0IGFyZSBhbGxvd2VkIGluIHRoZSBSVU5OSU5HIG9yIFBFTkRJTkcgc3RhdGUgZHVyaW5nIGEgZGVwbG95bWVudCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBkZXNpcmVkQ291bnRcbiAgcmVhZG9ubHkgbWF4aW11bUhlYWx0aHlQZXJjZW50PzogbnVtYmVyO1xuICAvLyBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgYSBzaW5nbGUgc2VydmljZSB0byByZWFjaCBzdGFibGUgc3RhdGUuXG4gIHJlYWRvbmx5IHN0YWJpbGl6YXRpb25UaW1lb3V0U2Vjb25kcz86IG51bWJlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IgKG1pbmltdW1IZWFsdGh5UGVyY2VudD86IG51bWJlciwgbWF4aW11bUhlYWx0aHlQZXJjZW50PzogbnVtYmVyLCBzdGFiaWxpemF0aW9uVGltZW91dFNlY29uZHM/OiBudW1iZXIpIHtcbiAgICBpZiAobWluaW11bUhlYWx0aHlQZXJjZW50ICE9PSB1bmRlZmluZWQgJiYgbWluaW11bUhlYWx0aHlQZXJjZW50IDwgMCApIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ2hvdHN3YXAtZWNzLW1pbmltdW0taGVhbHRoeS1wZXJjZW50IGNhblxcJ3QgYmUgYSBuZWdhdGl2ZSBudW1iZXInKTtcbiAgICB9XG4gICAgaWYgKG1heGltdW1IZWFsdGh5UGVyY2VudCAhPT0gdW5kZWZpbmVkICYmIG1heGltdW1IZWFsdGh5UGVyY2VudCA8IDAgKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdob3Rzd2FwLWVjcy1tYXhpbXVtLWhlYWx0aHktcGVyY2VudCBjYW5cXCd0IGJlIGEgbmVnYXRpdmUgbnVtYmVyJyk7XG4gICAgfVxuICAgIGlmIChzdGFiaWxpemF0aW9uVGltZW91dFNlY29uZHMgIT09IHVuZGVmaW5lZCAmJiBzdGFiaWxpemF0aW9uVGltZW91dFNlY29uZHMgPCAwICkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignaG90c3dhcC1lY3Mtc3RhYmlsaXphdGlvbi10aW1lb3V0LXNlY29uZHMgY2FuXFwndCBiZSBhIG5lZ2F0aXZlIG51bWJlcicpO1xuICAgIH1cbiAgICAvLyBJbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY3VycmVudCBiZWhhdmlvdXIsIHdoZW4gbWluaW11bUhlYWx0aHlQZXJjZW50IGlzIG5vdCBkZWZpbmVkLCBpdCB3aWxsIGJlIHNldCB0byB0aGUgY3VycmVudGx5IGRlZmF1bHQgdmFsdWUgb2YgMFxuICAgIGlmIChtaW5pbXVtSGVhbHRoeVBlcmNlbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm1pbmltdW1IZWFsdGh5UGVyY2VudCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWluaW11bUhlYWx0aHlQZXJjZW50ID0gbWluaW11bUhlYWx0aHlQZXJjZW50O1xuICAgIH1cbiAgICB0aGlzLm1heGltdW1IZWFsdGh5UGVyY2VudCA9IG1heGltdW1IZWFsdGh5UGVyY2VudDtcbiAgICB0aGlzLnN0YWJpbGl6YXRpb25UaW1lb3V0U2Vjb25kcyA9IHN0YWJpbGl6YXRpb25UaW1lb3V0U2Vjb25kcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbnkgaG90c3dhcCBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYWxsIHByb3BlcnRpZXMgYXJlIHVuZGVmaW5lZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBwdWJsaWMgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5taW5pbXVtSGVhbHRoeVBlcmNlbnQgPT09IDAgJiYgdGhpcy5tYXhpbXVtSGVhbHRoeVBlcmNlbnQgPT09IHVuZGVmaW5lZDtcbiAgfVxufVxuXG50eXBlIFByb3BEaWZmcyA9IFJlY29yZDxzdHJpbmcsIFByb3BlcnR5RGlmZmVyZW5jZTxhbnk+PjtcblxuY2xhc3MgQ2xhc3NpZmllZENoYW5nZXMge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGNoYW5nZTogUmVzb3VyY2VDaGFuZ2UsXG4gICAgcHVibGljIHJlYWRvbmx5IGhvdHN3YXBwYWJsZVByb3BzOiBQcm9wRGlmZnMsXG4gICAgcHVibGljIHJlYWRvbmx5IG5vbkhvdHN3YXBwYWJsZVByb3BzOiBQcm9wRGlmZnMsXG4gICkge1xuICB9XG5cbiAgcHVibGljIHJlcG9ydE5vbkhvdHN3YXBwYWJsZVByb3BlcnR5Q2hhbmdlcyhyZXQ6IEhvdHN3YXBDaGFuZ2VbXSk6IHZvaWQge1xuICAgIGNvbnN0IG5vbkhvdHN3YXBwYWJsZVByb3BOYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMubm9uSG90c3dhcHBhYmxlUHJvcHMpO1xuICAgIGlmIChub25Ib3Rzd2FwcGFibGVQcm9wTmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdGFnT25seUNoYW5nZSA9IG5vbkhvdHN3YXBwYWJsZVByb3BOYW1lcy5sZW5ndGggPT09IDEgJiYgbm9uSG90c3dhcHBhYmxlUHJvcE5hbWVzWzBdID09PSAnVGFncyc7XG4gICAgICBjb25zdCByZWFzb24gPSB0YWdPbmx5Q2hhbmdlID8gTm9uSG90c3dhcHBhYmxlUmVhc29uLlRBR1MgOiBOb25Ib3Rzd2FwcGFibGVSZWFzb24uUFJPUEVSVElFUztcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGFnT25seUNoYW5nZSA/ICdUYWdzIGFyZSBub3QgaG90c3dhcHBhYmxlJyA6IGByZXNvdXJjZSBwcm9wZXJ0aWVzICcke25vbkhvdHN3YXBwYWJsZVByb3BOYW1lc30nIGFyZSBub3QgaG90c3dhcHBhYmxlIG9uIHRoaXMgcmVzb3VyY2UgdHlwZWA7XG5cbiAgICAgIHJldC5wdXNoKG5vbkhvdHN3YXBwYWJsZUNoYW5nZShcbiAgICAgICAgdGhpcy5jaGFuZ2UsXG4gICAgICAgIHJlYXNvbixcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIHRoaXMubm9uSG90c3dhcHBhYmxlUHJvcHMsXG4gICAgICApKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWVzT2ZIb3Rzd2FwcGFibGVQcm9wcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuaG90c3dhcHBhYmxlUHJvcHMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeUNoYW5nZXMoeHM6IFJlc291cmNlQ2hhbmdlLCBob3Rzd2FwcGFibGVQcm9wTmFtZXM6IHN0cmluZ1tdKTogQ2xhc3NpZmllZENoYW5nZXMge1xuICBjb25zdCBob3Rzd2FwcGFibGVQcm9wczogUHJvcERpZmZzID0ge307XG4gIGNvbnN0IG5vbkhvdHN3YXBwYWJsZVByb3BzOiBQcm9wRGlmZnMgPSB7fTtcblxuICBmb3IgKGNvbnN0IFtuYW1lLCBwcm9wRGlmZl0gb2YgT2JqZWN0LmVudHJpZXMoeHMucHJvcGVydHlVcGRhdGVzKSkge1xuICAgIGlmIChob3Rzd2FwcGFibGVQcm9wTmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgIGhvdHN3YXBwYWJsZVByb3BzW25hbWVdID0gcHJvcERpZmY7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vbkhvdHN3YXBwYWJsZVByb3BzW25hbWVdID0gcHJvcERpZmY7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBDbGFzc2lmaWVkQ2hhbmdlcyh4cywgaG90c3dhcHBhYmxlUHJvcHMsIG5vbkhvdHN3YXBwYWJsZVByb3BzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbkhvdHN3YXBwYWJsZUNoYW5nZShcbiAgY2hhbmdlOiBSZXNvdXJjZUNoYW5nZSxcbiAgcmVhc29uOiBOb25Ib3Rzd2FwcGFibGVSZWFzb24sXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gIG5vbkhvdHN3YXBwYWJsZVByb3BzPzogUHJvcERpZmZzLFxuICBob3Rzd2FwT25seVZpc2libGU6IGJvb2xlYW4gPSB0cnVlLFxuKTogUmVqZWN0ZWRDaGFuZ2Uge1xuICByZXR1cm4ge1xuICAgIGhvdHN3YXBwYWJsZTogZmFsc2UsXG4gICAgaG90c3dhcE9ubHlWaXNpYmxlLFxuICAgIGNoYW5nZToge1xuICAgICAgcmVhc29uLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBzdWJqZWN0OiB7XG4gICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgIGxvZ2ljYWxJZDogY2hhbmdlLmxvZ2ljYWxJZCxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiBjaGFuZ2UubmV3VmFsdWUuVHlwZSxcbiAgICAgICAgcmVqZWN0ZWRQcm9wZXJ0aWVzOiBPYmplY3Qua2V5cyhub25Ib3Rzd2FwcGFibGVQcm9wcyA/PyBjaGFuZ2UucHJvcGVydHlVcGRhdGVzKSxcbiAgICAgICAgbWV0YWRhdGE6IGNoYW5nZS5tZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlKGNoYW5nZTogUmVzb3VyY2VDaGFuZ2UpOiBSZWplY3RlZENoYW5nZSB7XG4gIHJldHVybiB7XG4gICAgaG90c3dhcHBhYmxlOiBmYWxzZSxcbiAgICBjaGFuZ2U6IHtcbiAgICAgIHJlYXNvbjogTm9uSG90c3dhcHBhYmxlUmVhc29uLlJFU09VUkNFX1VOU1VQUE9SVEVELFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHJlc291cmNlIHR5cGUgaXMgbm90IHN1cHBvcnRlZCBmb3IgaG90c3dhcCBkZXBsb3ltZW50cycsXG4gICAgICBzdWJqZWN0OiB7XG4gICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgIGxvZ2ljYWxJZDogY2hhbmdlLmxvZ2ljYWxJZCxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiBjaGFuZ2UubmV3VmFsdWUuVHlwZSxcbiAgICAgICAgcmVqZWN0ZWRQcm9wZXJ0aWVzOiBPYmplY3Qua2V5cyhjaGFuZ2UucHJvcGVydHlVcGRhdGVzKSxcbiAgICAgICAgbWV0YWRhdGE6IGNoYW5nZS5tZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
@@ -100,6 +100,7 @@ async function isHotswappableEcsServiceChange(logicalId, change, evaluateCfnTemp
100
100
  let ecsHotswapProperties = hotswapPropertyOverrides.ecsHotswapProperties;
101
101
  let minimumHealthyPercent = ecsHotswapProperties?.minimumHealthyPercent;
102
102
  let maximumHealthyPercent = ecsHotswapProperties?.maximumHealthyPercent;
103
+ let stabilizationTimeoutSeconds = ecsHotswapProperties?.stabilizationTimeoutSeconds;
103
104
  // Step 2 - update the services using that TaskDefinition to point to the new TaskDefinition Revision
104
105
  // Forcing New Deployment and setting Minimum Healthy Percent to 0.
105
106
  // As CDK HotSwap is development only, this seems the most efficient way to ensure all tasks are replaced immediately, regardless of original amount
@@ -119,7 +120,7 @@ async function isHotswappableEcsServiceChange(logicalId, change, evaluateCfnTemp
119
120
  await sdk.ecs().waitUntilServicesStable({
120
121
  cluster: update.service?.clusterArn,
121
122
  services: [service.serviceArn],
122
- });
123
+ }, stabilizationTimeoutSeconds);
123
124
  }));
124
125
  },
125
126
  });
@@ -156,4 +157,4 @@ async function prepareTaskDefinitionChange(evaluateCfnTemplate, logicalId, chang
156
157
  Family: family,
157
158
  };
158
159
  }
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLXNlcnZpY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZWNzLXNlcnZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZUEsd0VBb0pDO0FBL0pELHFDQUdrQjtBQUNsQixvREFBb0Y7QUFDcEYscUNBQTBFO0FBSTFFLE1BQU0seUJBQXlCLEdBQUcsbUJBQW1CLENBQUM7QUFFL0MsS0FBSyxVQUFVLDhCQUE4QixDQUNsRCxTQUFpQixFQUNqQixNQUFzQixFQUN0QixtQkFBbUQsRUFDbkQsd0JBQWtEO0lBRWxELHlFQUF5RTtJQUN6RSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLDBCQUEwQixFQUFFLENBQUM7UUFDeEQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQW9CLEVBQUUsQ0FBQztJQUVoQyxxRkFBcUY7SUFDckYscUZBQXFGO0lBQ3JGLHVEQUF1RDtJQUN2RCxNQUFNLGlCQUFpQixHQUFHLElBQUEsd0JBQWUsRUFBQyxNQUFNLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7SUFDNUUsaUJBQWlCLENBQUMsb0NBQW9DLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFNUQsdUVBQXVFO0lBQ3ZFLE1BQU0sMkJBQTJCLEdBQUcsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEYsTUFBTSxxQ0FBcUMsR0FBRywyQkFBMkIsQ0FBQyxNQUFNLENBQzlFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLHlCQUF5QixDQUM1QyxDQUFDO0lBQ0YsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO0lBQzlELEtBQUssTUFBTSxrQkFBa0IsSUFBSSxxQ0FBcUMsRUFBRSxDQUFDO1FBQ3ZFLE1BQU0sVUFBVSxHQUFHLE1BQU0sbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsU0FBUyxD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LEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsZ0dBQWdHO1lBQ2xHLGVBQWUsQ0FBQztJQUNwQiw4RkFBOEY7SUFDOUYsT0FBTztRQUNMLEdBQUcsQ0FBQyxNQUFNLG1CQUFtQixDQUFDLHFCQUFxQixDQUFDO1lBQ2xELEdBQUcsQ0FBQyxzQkFBc0IsSUFBSSxFQUFFLENBQUM7WUFDakMsTUFBTSxFQUFFLFNBQVM7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxFQUFFLE1BQU07S0FDZixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgSG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuICBIb3Rzd2FwQ2hhbmdlLFxufSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQge1xuICBjbGFzc2lmeUNoYW5nZXMsXG4gIG5vbkhvdHN3YXBwYWJsZUNoYW5nZSxcbn0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgTm9uSG90c3dhcHBhYmxlUmVhc29uLCB0eXBlIFJlc291cmNlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vcGF5bG9hZHMvaG90c3dhcCc7XG5pbXBvcnQgeyBsb3dlckNhc2VGaXJzdENoYXJhY3RlciwgdHJhbnNmb3JtT2JqZWN0S2V5cyB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBTREsgfSBmcm9tICcuLi9hd3MtYXV0aC9wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlIH0gZnJvbSAnLi4vY2xvdWRmb3JtYXRpb24nO1xuXG5jb25zdCBFQ1NfU0VSVklDRV9SRVNPVVJDRV9UWVBFID0gJ0FXUzo6RUNTOjpTZXJ2aWNlJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzSG90c3dhcHBhYmxlRWNzU2VydmljZUNoYW5nZShcbiAgbG9naWNhbElkOiBzdHJpbmcsXG4gIGNoYW5nZTogUmVzb3VyY2VDaGFuZ2UsXG4gIGV2YWx1YXRlQ2ZuVGVtcGxhdGU6IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSxcbiAgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzOiBIb3Rzd2FwUHJvcGVydHlPdmVycmlkZXMsXG4pOiBQcm9taXNlPEhvdHN3YXBDaGFuZ2VbXT4ge1xuICAvLyB0aGUgb25seSByZXNvdXJjZSBjaGFuZ2Ugd2UgY2FuIGV2YWx1YXRlIGhlcmUgaXMgYW4gRUNTIFRhc2tEZWZpbml0aW9uXG4gIGlmIChjaGFuZ2UubmV3VmFsdWUuVHlwZSAhPT0gJ0FXUzo6RUNTOjpUYXNrRGVmaW5pdGlvbicpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCByZXQ6IEhvdHN3YXBDaGFuZ2VbXSA9IFtdO1xuXG4gIC8vIFdlIG9ubHkgYWxsb3cgYSBjaGFuZ2UgaW4gdGhlIENvbnRhaW5lckRlZmluaXRpb25zIG9mIHRoZSBUYXNrRGVmaW5pdGlvbiBmb3Igbm93IC1cbiAgLy8gaXQgY29udGFpbnMgdGhlIGltYWdlIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHNvIHNlZW1zIGxpa2UgYSBzYWZlIGJldCBmb3Igbm93LlxuICAvLyBXZSBtaWdodCByZXZpc2l0IHRoaXMgZGVjaXNpb24gaW4gdGhlIGZ1dHVyZSB0aG91Z2ghXG4gIGNvbnN0IGNsYXNzaWZpZWRDaGFuZ2VzID0gY2xhc3NpZnlDaGFuZ2VzKGNoYW5nZSwgWydDb250YWluZXJEZWZpbml0aW9ucyddKTtcbiAgY2xhc3NpZmllZENoYW5nZXMucmVwb3J0Tm9uSG90c3dhcHBhYmxlUHJvcGVydHlDaGFuZ2VzKHJldCk7XG5cbiAgLy8gZmluZCBhbGwgRUNTIFNlcnZpY2VzIHRoYXQgcmVmZXJlbmNlIHRoZSBUYXNrRGVmaW5pdGlvbiB0aGF0IGNoYW5nZWRcbiAgY29uc3QgcmVzb3VyY2VzUmVmZXJlbmNpbmdUYXNrRGVmID0gZXZhbHVhdGVDZm5UZW1wbGF0ZS5maW5kUmVmZXJlbmNlc1RvKGxvZ2ljYWxJZCk7XG4gIGNvbnN0IGVjc1NlcnZpY2VSZXNvdXJjZXNSZWZlcmVuY2luZ1Rhc2tEZWYgPSByZXNvdXJjZXNSZWZlcmVuY2luZ1Rhc2tEZWYuZmlsdGVyKFxuICAgIChyKSA9PiByLlR5cGUgPT09IEVDU19TRVJWSUNFX1JFU09VUkNFX1RZUEUsXG4gICk7XG4gIGNvbnN0IGVjc1NlcnZpY2VzUmVmZXJlbmNpbmdUYXNrRGVmID0gbmV3IEFycmF5PEVjc1NlcnZpY2U+KCk7XG4gIGZvciAoY29uc3QgZWNzU2VydmljZVJlc291cmNlIG9mIGVjc1NlcnZpY2VSZXNvdXJjZXNSZWZlcmVuY2luZ1Rhc2tEZWYpIHtcbiAgICBjb25zdCBzZXJ2aWNlQXJuID0gYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5maW5kUGh5c2ljYWxOYW1lRm9yKGVjc1NlcnZpY2VSZXNvdXJjZS5Mb2dpY2FsSWQpO1xuICAgIGlmIChzZXJ2aWNlQXJuKSB7XG4gICAgICBlY3NTZXJ2aWNlc1JlZmVyZW5jaW5nVGFza0RlZi5wdXNoKHtcbiAgICAgICAgbG9naWNhbElkOiBlY3NTZXJ2aWNlUmVzb3VyY2UuTG9naWNhbElkLFxuICAgICAgICBzZXJ2aWNlQXJuLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGlmIChlY3NTZXJ2aWNlc1JlZmVyZW5jaW5nVGFza0RlZi5sZW5ndGggPT09IDApIHtcbiAgICAvKipcbiAgICAgKiBFQ1MgU2VydmljZXMgY2FuIGhhdmUgYSB0YXNrIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHJlZmVyIHRvIHRoZSB0YXNrIGRlZmluaXRpb24gYmVpbmcgdXBkYXRlZC5cbiAgICAgKiBXZSBoYXZlIHRvIGxvZyB0aGlzIGFzIGEgbm9uLWhvdHN3YXBwYWJsZSBjaGFuZ2UgdG8gdGhlIHRhc2sgZGVmaW5pdGlvbiwgYnV0IHdoZW4gd2UgZG8sXG4gICAgICogd2Ugd2luZCB1cCBob3Rzd2FwcGluZyB0aGUgdGFzayBkZWZpbml0aW9uIGFuZCBsb2dnaW5nIGl0IGFzIGEgbm9uLWhvdHN3YXBwYWJsZSBjaGFuZ2UuXG4gICAgICpcbiAgICAgKiBUaGlzIGxvZ2ljIHByZXZlbnRzIHVzIGZyb20gbG9nZ2luZyB0aGF0IGNoYW5nZSBhcyBub24taG90c3dhcHBhYmxlIHdoZW4gd2UgaG90c3dhcCBpdC5cbiAgICAgKi9cbiAgICByZXQucHVzaChub25Ib3Rzd2FwcGFibGVDaGFuZ2UoXG4gICAgICBjaGFuZ2UsXG4gICAgICBOb25Ib3Rzd2FwcGFibGVSZWFzb24uREVQRU5ERU5DWV9VTlNVUFBPUlRFRCxcbiAgICAgICdObyBFQ1Mgc2VydmljZXMgcmVmZXJlbmNlIHRoZSBjaGFuZ2VkIHRhc2sgZGVmaW5pdGlvbicsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBmYWxzZSxcbiAgICApKTtcbiAgfVxuICBpZiAocmVzb3VyY2VzUmVmZXJlbmNpbmdUYXNrRGVmLmxlbmd0aCA+IGVjc1NlcnZpY2VzUmVmZXJlbmNpbmdUYXNrRGVmLmxlbmd0aCkge1xuICAgIC8vIGlmIHNvbWV0aGluZyBiZXNpZGVzIGFuIEVDUyBTZXJ2aWNlIGlzIHJlZmVyZW5jaW5nIHRoZSBUYXNrRGVmaW5pdGlvbixcbiAgICAvLyBob3Rzd2FwIGlzIG5vdCBwb3NzaWJsZSBpbiBGQUxMX0JBQ0sgbW9kZVxuICAgIGNvbnN0IG5vbkVjc1NlcnZpY2VUYXNrRGVmUmVmcyA9IHJlc291cmNlc1JlZmVyZW5jaW5nVGFza0RlZi5maWx0ZXIoKHIpID0+IHIuVHlwZSAhPT0gRUNTX1NFUlZJQ0VfUkVTT1VSQ0VfVFlQRSk7XG4gICAgZm9yIChjb25zdCB0YXNrUmVmIG9mIG5vbkVjc1NlcnZpY2VUYXNrRGVmUmVmcykge1xuICAgICAgcmV0LnB1c2gobm9uSG90c3dhcHBhYmxlQ2hhbmdlKFxuICAgICAgICBjaGFuZ2UsXG4gICAgICAgIE5vbkhvdHN3YXBwYWJsZVJlYXNvbi5ERVBFTkRFTkNZX1VOU1VQUE9SVEVELFxuICAgICAgICBgQSByZXNvdXJjZSAnJHt0YXNrUmVmLkxvZ2ljYWxJZH0nIHdpdGggVHlwZSAnJHt0YXNrUmVmLlR5cGV9JyB0aGF0IGlzIG5vdCBhbiBFQ1MgU2VydmljZSB3YXMgZm91bmQgcmVmZXJlbmNpbmcgdGhlIGNoYW5nZWQgVGFza0RlZmluaXRpb24gJyR7bG9naWNhbElkfSdgLFxuICAgICAgKSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbmFtZXNPZkhvdHN3YXBwYWJsZUNoYW5nZXMgPSBPYmplY3Qua2V5cyhjbGFzc2lmaWVkQ2hhbmdlcy5ob3Rzd2FwcGFibGVQcm9wcyk7XG4gIGlmIChuYW1lc09mSG90c3dhcHBhYmxlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgdGFza0RlZmluaXRpb25SZXNvdXJjZSA9IGF3YWl0IHByZXBhcmVUYXNrRGVmaW5pdGlvbkNoYW5nZShldmFsdWF0ZUNmblRlbXBsYXRlLCBsb2dpY2FsSWQsIGNoYW5nZSk7XG4gICAgcmV0LnB1c2goe1xuICAgICAgY2hhbmdlOiB7XG4gICAgICAgIGNhdXNlOiBjaGFuZ2UsXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogY2hhbmdlLm5ld1ZhbHVlLlR5cGUsXG4gICAgICAgICAgICBwaHlzaWNhbE5hbWU6IGF3YWl0IHRhc2tEZWZpbml0aW9uUmVzb3VyY2UuRmFtaWx5LFxuICAgICAgICAgICAgbWV0YWRhdGE6IGV2YWx1YXRlQ2ZuVGVtcGxhdGUubWV0YWRhdGFGb3IobG9naWNhbElkKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLmVjc1NlcnZpY2VzUmVmZXJlbmNpbmdUYXNrRGVmLm1hcCgoZWNzU2VydmljZSkgPT4gKHtcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogRUNTX1NFUlZJQ0VfUkVTT1VSQ0VfVFlQRSxcbiAgICAgICAgICAgIHBoeXNpY2FsTmFtZTogZWNzU2VydmljZS5zZXJ2aWNlQXJuLnNwbGl0KCcvJylbMl0sXG4gICAgICAgICAgICBsb2dpY2FsSWQ6IGVjc1NlcnZpY2UubG9naWNhbElkLFxuICAgICAgICAgICAgbWV0YWRhdGE6IGV2YWx1YXRlQ2ZuVGVtcGxhdGUubWV0YWRhdGFGb3IoZWNzU2VydmljZS5sb2dpY2FsSWQpLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBob3Rzd2FwcGFibGU6IHRydWUsXG4gICAgICBzZXJ2aWNlOiAnZWNzLXNlcnZpY2UnLFxuICAgICAgYXBwbHk6IGFzeW5jIChzZGs6IFNESykgPT4ge1xuICAgICAgICAvLyBTdGVwIDEgLSB1cGRhdGUgdGhlIGNoYW5nZWQgVGFza0RlZmluaXRpb24sIGNyZWF0aW5nIGEgbmV3IFRhc2tEZWZpbml0aW9uIFJldmlzaW9uXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gbG93ZXJjYXNlIHRoZSBldmFsdWF0ZWQgVGFza0RlZiBmcm9tIENsb3VkRm9ybWF0aW9uLFxuICAgICAgICAvLyBhcyB0aGUgQVdTIFNESyB1c2VzIGxvd2VyY2FzZSBwcm9wZXJ0eSBuYW1lcyBmb3IgdGhlc2VcblxuICAgICAgICAvLyBUaGUgU0RLIHJlcXVpcmVzIG1vcmUgcHJvcGVydGllcyBoZXJlIHRoYW4gaXRzIHdvcnRoIGRvaW5nIGV4cGxpY2l0IHR5cGluZyBmb3JcbiAgICAgICAgLy8gaW5zdGVhZCwganVzdCB1c2UgYWxsIHRoZSBvbGQgdmFsdWVzIGluIHRoZSBkaWZmIHRvIGZpbGwgdGhlbSBpbiBpbXBsaWNpdGx5XG4gICAgICAgIGNvbnN0IGxvd2VyY2FzZWRUYXNrRGVmID0gdHJhbnNmb3JtT2JqZWN0S2V5cyh0YXNrRGVmaW5pdGlvblJlc291cmNlLCBsb3dlckNhc2VGaXJzdENoYXJhY3Rlciwge1xuICAgICAgICAgIC8vIEFsbCB0aGUgcHJvcGVydGllcyB0aGF0IHRha2UgYXJiaXRyYXJ5IHN0cmluZyBhcyBrZXlzIGkuZS4geyBcInN0cmluZ1wiIDogXCJzdHJpbmdcIiB9XG4gICAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9SZWdpc3RlclRhc2tEZWZpbml0aW9uLmh0bWwjQVBJX1JlZ2lzdGVyVGFza0RlZmluaXRpb25fUmVxdWVzdFN5bnRheFxuICAgICAgICAgIENvbnRhaW5lckRlZmluaXRpb25zOiB7XG4gICAgICAgICAgICBEb2NrZXJMYWJlbHM6IHRydWUsXG4gICAgICAgICAgICBGaXJlbGVuc0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgICAgT3B0aW9uczogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBMb2dDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICAgIE9wdGlvbnM6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgVm9sdW1lczoge1xuICAgICAgICAgICAgRG9ja2VyVm9sdW1lQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgICBEcml2ZXJPcHRzOiB0cnVlLFxuICAgICAgICAgICAgICBMYWJlbHM6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZWdpc3RlclRhc2tEZWZSZXNwb25zZSA9IGF3YWl0IHNkay5lY3MoKS5yZWdpc3RlclRhc2tEZWZpbml0aW9uKGxvd2VyY2FzZWRUYXNrRGVmKTtcbiAgICAgICAgY29uc3QgdGFza0RlZlJldkFybiA9IHJlZ2lzdGVyVGFza0RlZlJlc3BvbnNlLnRhc2tEZWZpbml0aW9uPy50YXNrRGVmaW5pdGlvbkFybjtcblxuICAgICAgICBsZXQgZWNzSG90c3dhcFByb3BlcnRpZXMgPSBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXMuZWNzSG90c3dhcFByb3BlcnRpZXM7XG4gICAgICAgIGxldCBtaW5pbXVtSGVhbHRoeVBlcmNlbnQgPSBlY3NIb3Rzd2FwUHJvcGVydGllcz8ubWluaW11bUhlYWx0aHlQZXJjZW50O1xuICAgICAgICBsZXQgbWF4aW11bUhlYWx0aHlQZXJjZW50ID0gZWNzSG90c3dhcFByb3BlcnRpZXM/Lm1heGltdW1IZWFsdGh5UGVyY2VudDtcblxuICAgICAgICAvLyBTdGVwIDIgLSB1cGRhdGUgdGhlIHNlcnZpY2VzIHVzaW5nIHRoYXQgVGFza0RlZmluaXRpb24gdG8gcG9pbnQgdG8gdGhlIG5ldyBUYXNrRGVmaW5pdGlvbiBSZXZpc2lvblxuICAgICAgICAvLyBGb3JjaW5nIE5ldyBEZXBsb3ltZW50IGFuZCBzZXR0aW5nIE1pbmltdW0gSGVhbHRoeSBQZXJjZW50IHRvIDAuXG4gICAgICAgIC8vIEFzIENESyBIb3RTd2FwIGlzIGRldmVsb3BtZW50IG9ubHksIHRoaXMgc2VlbXMgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBlbnN1cmUgYWxsIHRhc2tzIGFyZSByZXBsYWNlZCBpbW1lZGlhdGVseSwgcmVnYXJkbGVzcyBvZiBvcmlnaW5hbCBhbW91bnRcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBjZGtsYWJzL3Byb21pc2VhbGwtbm8tdW5ib3VuZGVkLXBhcmFsbGVsaXNtXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIGVjc1NlcnZpY2VzUmVmZXJlbmNpbmdUYXNrRGVmLm1hcChhc3luYyAoc2VydmljZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2x1c3RlciA9IHNlcnZpY2Uuc2VydmljZUFybi5zcGxpdCgnLycpWzFdO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlID0gYXdhaXQgc2RrLmVjcygpLnVwZGF0ZVNlcnZpY2Uoe1xuICAgICAgICAgICAgICBzZXJ2aWNlOiBzZXJ2aWNlLnNlcnZpY2VBcm4sXG4gICAgICAgICAgICAgIHRhc2tEZWZpbml0aW9uOiB0YXNrRGVmUmV2QXJuLFxuICAgICAgICAgICAgICBjbHVzdGVyLFxuICAgICAgICAgICAgICBmb3JjZU5ld0RlcGxveW1lbnQ6IHRydWUsXG4gICAgICAgICAgICAgIGRlcGxveW1lbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgbWluaW11bUhlYWx0aHlQZXJjZW50OiBtaW5pbXVtSGVhbHRoeVBlcmNlbnQgIT09IHVuZGVmaW5lZCA/IG1pbmltdW1IZWFsdGh5UGVyY2VudCA6IDAsXG4gICAgICAgICAgICAgICAgbWF4aW11bVBlcmNlbnQ6IG1heGltdW1IZWFsdGh5UGVyY2VudCAhPT0gdW5kZWZpbmVkID8gbWF4aW11bUhlYWx0aHlQZXJjZW50IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHNkay5lY3MoKS53YWl0VW50aWxTZXJ2aWNlc1N0YWJsZSh7XG4gICAgICAgICAgICAgIGNsdXN0ZXI6IHVwZGF0ZS5zZXJ2aWNlPy5jbHVzdGVyQXJuLFxuICAgICAgICAgICAgICBzZXJ2aWNlczogW3NlcnZpY2Uuc2VydmljZUFybl0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5pbnRlcmZhY2UgRWNzU2VydmljZSB7XG4gIHJlYWRvbmx5IGxvZ2ljYWxJZDogc3RyaW5nO1xuICByZWFkb25seSBzZXJ2aWNlQXJuOiBzdHJpbmc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByZXBhcmVUYXNrRGVmaW5pdGlvbkNoYW5nZShcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgY2hhbmdlOiBSZXNvdXJjZUNoYW5nZSxcbikge1xuICBjb25zdCB0YXNrRGVmaW5pdGlvblJlc291cmNlOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSA9IHtcbiAgICAuLi5jaGFuZ2Uub2xkVmFsdWUuUHJvcGVydGllcyxcbiAgICBDb250YWluZXJEZWZpbml0aW9uczogY2hhbmdlLm5ld1ZhbHVlLlByb3BlcnRpZXM/LkNvbnRhaW5lckRlZmluaXRpb25zLFxuICB9O1xuICAvLyBmaXJzdCwgbGV0J3MgZ2V0IHRoZSBuYW1lIG9mIHRoZSBmYW1pbHlcbiAgY29uc3QgZmFtaWx5TmFtZU9yQXJuID0gYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5lc3RhYmxpc2hSZXNvdXJjZVBoeXNpY2FsTmFtZShcbiAgICBsb2dpY2FsSWQsXG4gICAgdGFza0RlZmluaXRpb25SZXNvdXJjZT8uRmFtaWx5LFxuICApO1xuICBpZiAoIWZhbWlseU5hbWVPckFybikge1xuICAgIC8vIGlmIHRoZSBGYW1pbHkgcHJvcGVydHkgaGFzIG5vdCBiZWVuIHByb3ZpZGVkLCBhbmQgd2UgY2FuJ3QgZmluZCBpdCBpbiB0aGUgY3VycmVudCBTdGFjayxcbiAgICAvLyB0aGlzIG1lYW5zIGhvdHN3YXBwaW5nIGlzIG5vdCBwb3NzaWJsZVxuICAgIHJldHVybjtcbiAgfVxuICAvLyB0aGUgcGh5c2ljYWwgbmFtZSBvZiB0aGUgVGFzayBEZWZpbml0aW9uIGluIENsb3VkRm9ybWF0aW9uIGluY2x1ZGVzIGl0cyBjdXJyZW50IHJldmlzaW9uIG51bWJlciBhdCB0aGUgZW5kLFxuICAvLyByZW1vdmUgaXQgaWYgbmVlZGVkXG4gIGNvbnN0IGZhbWlseU5hbWVPckFyblBhcnRzID0gZmFtaWx5TmFtZU9yQXJuLnNwbGl0KCc6Jyk7XG4gIGNvbnN0IGZhbWlseSA9XG4gICAgZmFtaWx5TmFtZU9yQXJuUGFydHMubGVuZ3RoID4gMVxuICAgICAgPyAvLyBmYW1pbHlOYW1lT3JBcm4gaXMgYWN0dWFsbHkgYW4gQVJOLCBvZiB0aGUgZm9ybWF0ICdhcm46YXdzOmVjczpyZWdpb246YWNjb3VudDp0YXNrLWRlZmluaXRpb24vPGZhbWlseS1uYW1lPjo8cmV2aXNpb24tbnI+J1xuICAgIC8vIHNvLCB0YWtlIHRoZSA2dGggZWxlbWVudCwgYXQgaW5kZXggNSwgYW5kIHNwbGl0IGl0IG9uICcvJ1xuICAgICAgZmFtaWx5TmFtZU9yQXJuUGFydHNbNV0uc3BsaXQoJy8nKVsxXVxuICAgICAgOiAvLyBvdGhlcndpc2UsIGZhbWlseU5hbWVPckFybiBpcyBqdXN0IHRoZSBzaW1wbGUgbmFtZSBldmFsdWF0ZWQgZnJvbSB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVcbiAgICAgIGZhbWlseU5hbWVPckFybjtcbiAgLy8gdGhlbiwgbGV0J3MgZXZhbHVhdGUgdGhlIGJvZHkgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGUgVGFza0RlZiAod2l0aG91dCB0aGUgRmFtaWx5IHByb3BlcnR5KVxuICByZXR1cm4ge1xuICAgIC4uLihhd2FpdCBldmFsdWF0ZUNmblRlbXBsYXRlLmV2YWx1YXRlQ2ZuRXhwcmVzc2lvbih7XG4gICAgICAuLi4odGFza0RlZmluaXRpb25SZXNvdXJjZSA/PyB7fSksXG4gICAgICBGYW1pbHk6IHVuZGVmaW5lZCxcbiAgICB9KSksXG4gICAgRmFtaWx5OiBmYW1pbHksXG4gIH07XG59XG4iXX0=
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLXNlcnZpY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZWNzLXNlcnZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZUEsd0VBcUpDO0FBaEtELHFDQUdrQjtBQUNsQixvREFBb0Y7QUFDcEYscUNBQTBFO0FBSTFFLE1BQU0seUJBQXlCLEdBQUcsbUJBQW1CLENBQUM7QUFFL0MsS0FBSyxVQUFVLDhCQUE4QixDQUNsRCxTQUFpQixFQUNqQixNQUFzQixFQUN0QixtQkFBbUQsRUFDbkQsd0JBQWtEO0lBRWxELHlFQUF5RTtJQUN6RSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLDBCQUEwQixFQUFFLENBQUM7UUFDeEQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQW9CLEVBQUUsQ0FBQztJQUVoQyxxRkFBcUY7SUFDckYscUZBQXFGO0lBQ3JGLHVEQUF1RDtJQUN2RCxNQUFNLGlCQUFpQixHQUFHLElBQUEsd0JBQWUsRUFBQyxNQUFNLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7SUFDNUUsaUJBQWlCLENBQUMsb0NBQW9DLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFNUQsdUVBQXVFO0lBQ3ZFLE1BQU0sMkJBQTJCLEdBQUcsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEYsTUFBTSxxQ0FBcUMsR0FBRywyQkFBMkIsQ0FBQyxNQUFNLENBQzlFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLHlCQUF5QixDQUM1QyxDQUFDO0lBQ0YsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO0lBQzlELEtBQUssTUFBTSxrQkFBa0IsSUFBSSxxQ0FBcUMsRUFBRSxDQUFDO1FBQ3ZFLE1BQU0sVUFBVSxHQUFHLE1BQU0sbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsU0FBUyxD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SEFBNkg7WUFDakksNERBQTREO1lBQzFELG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLGdHQUFnRztZQUNsRyxlQUFlLENBQUM7SUFDcEIsOEZBQThGO0lBQzlGLE9BQU87UUFDTCxHQUFHLENBQUMsTUFBTSxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQztZQUNsRCxHQUFHLENBQUMsc0JBQXNCLElBQUksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxTQUFTO1NBQ2xCLENBQUMsQ0FBQztRQUNILE1BQU0sRUFBRSxNQUFNO0tBQ2YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbiAgSG90c3dhcENoYW5nZSxcbn0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgY2xhc3NpZnlDaGFuZ2VzLFxuICBub25Ib3Rzd2FwcGFibGVDaGFuZ2UsXG59IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IE5vbkhvdHN3YXBwYWJsZVJlYXNvbiwgdHlwZSBSZXNvdXJjZUNoYW5nZSB9IGZyb20gJy4uLy4uL3BheWxvYWRzL2hvdHN3YXAnO1xuaW1wb3J0IHsgbG93ZXJDYXNlRmlyc3RDaGFyYWN0ZXIsIHRyYW5zZm9ybU9iamVjdEtleXMgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB0eXBlIHsgU0RLIH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSB9IGZyb20gJy4uL2Nsb3VkZm9ybWF0aW9uJztcblxuY29uc3QgRUNTX1NFUlZJQ0VfUkVTT1VSQ0VfVFlQRSA9ICdBV1M6OkVDUzo6U2VydmljZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0hvdHN3YXBwYWJsZUVjc1NlcnZpY2VDaGFuZ2UoXG4gIGxvZ2ljYWxJZDogc3RyaW5nLFxuICBjaGFuZ2U6IFJlc291cmNlQ2hhbmdlLFxuICBldmFsdWF0ZUNmblRlbXBsYXRlOiBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUsXG4gIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlczogSG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuKTogUHJvbWlzZTxIb3Rzd2FwQ2hhbmdlW10+IHtcbiAgLy8gdGhlIG9ubHkgcmVzb3VyY2UgY2hhbmdlIHdlIGNhbiBldmFsdWF0ZSBoZXJlIGlzIGFuIEVDUyBUYXNrRGVmaW5pdGlvblxuICBpZiAoY2hhbmdlLm5ld1ZhbHVlLlR5cGUgIT09ICdBV1M6OkVDUzo6VGFza0RlZmluaXRpb24nKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgcmV0OiBIb3Rzd2FwQ2hhbmdlW10gPSBbXTtcblxuICAvLyBXZSBvbmx5IGFsbG93IGEgY2hhbmdlIGluIHRoZSBDb250YWluZXJEZWZpbml0aW9ucyBvZiB0aGUgVGFza0RlZmluaXRpb24gZm9yIG5vdyAtXG4gIC8vIGl0IGNvbnRhaW5zIHRoZSBpbWFnZSBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBzbyBzZWVtcyBsaWtlIGEgc2FmZSBiZXQgZm9yIG5vdy5cbiAgLy8gV2UgbWlnaHQgcmV2aXNpdCB0aGlzIGRlY2lzaW9uIGluIHRoZSBmdXR1cmUgdGhvdWdoIVxuICBjb25zdCBjbGFzc2lmaWVkQ2hhbmdlcyA9IGNsYXNzaWZ5Q2hhbmdlcyhjaGFuZ2UsIFsnQ29udGFpbmVyRGVmaW5pdGlvbnMnXSk7XG4gIGNsYXNzaWZpZWRDaGFuZ2VzLnJlcG9ydE5vbkhvdHN3YXBwYWJsZVByb3BlcnR5Q2hhbmdlcyhyZXQpO1xuXG4gIC8vIGZpbmQgYWxsIEVDUyBTZXJ2aWNlcyB0aGF0IHJlZmVyZW5jZSB0aGUgVGFza0RlZmluaXRpb24gdGhhdCBjaGFuZ2VkXG4gIGNvbnN0IHJlc291cmNlc1JlZmVyZW5jaW5nVGFza0RlZiA9IGV2YWx1YXRlQ2ZuVGVtcGxhdGUuZmluZFJlZmVyZW5jZXNUbyhsb2dpY2FsSWQpO1xuICBjb25zdCBlY3NTZXJ2aWNlUmVzb3VyY2VzUmVmZXJlbmNpbmdUYXNrRGVmID0gcmVzb3VyY2VzUmVmZXJlbmNpbmdUYXNrRGVmLmZpbHRlcihcbiAgICAocikgPT4gci5UeXBlID09PSBFQ1NfU0VSVklDRV9SRVNPVVJDRV9UWVBFLFxuICApO1xuICBjb25zdCBlY3NTZXJ2aWNlc1JlZmVyZW5jaW5nVGFza0RlZiA9IG5ldyBBcnJheTxFY3NTZXJ2aWNlPigpO1xuICBmb3IgKGNvbnN0IGVjc1NlcnZpY2VSZXNvdXJjZSBvZiBlY3NTZXJ2aWNlUmVzb3VyY2VzUmVmZXJlbmNpbmdUYXNrRGVmKSB7XG4gICAgY29uc3Qgc2VydmljZUFybiA9IGF3YWl0IGV2YWx1YXRlQ2ZuVGVtcGxhdGUuZmluZFBoeXNpY2FsTmFtZUZvcihlY3NTZXJ2aWNlUmVzb3VyY2UuTG9naWNhbElkKTtcbiAgICBpZiAoc2VydmljZUFybikge1xuICAgICAgZWNzU2VydmljZXNSZWZlcmVuY2luZ1Rhc2tEZWYucHVzaCh7XG4gICAgICAgIGxvZ2ljYWxJZDogZWNzU2VydmljZVJlc291cmNlLkxvZ2ljYWxJZCxcbiAgICAgICAgc2VydmljZUFybixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBpZiAoZWNzU2VydmljZXNSZWZlcmVuY2luZ1Rhc2tEZWYubGVuZ3RoID09PSAwKSB7XG4gICAgLyoqXG4gICAgICogRUNTIFNlcnZpY2VzIGNhbiBoYXZlIGEgdGFzayBkZWZpbml0aW9uIHRoYXQgZG9lc24ndCByZWZlciB0byB0aGUgdGFzayBkZWZpbml0aW9uIGJlaW5nIHVwZGF0ZWQuXG4gICAgICogV2UgaGF2ZSB0byBsb2cgdGhpcyBhcyBhIG5vbi1ob3Rzd2FwcGFibGUgY2hhbmdlIHRvIHRoZSB0YXNrIGRlZmluaXRpb24sIGJ1dCB3aGVuIHdlIGRvLFxuICAgICAqIHdlIHdpbmQgdXAgaG90c3dhcHBpbmcgdGhlIHRhc2sgZGVmaW5pdGlvbiBhbmQgbG9nZ2luZyBpdCBhcyBhIG5vbi1ob3Rzd2FwcGFibGUgY2hhbmdlLlxuICAgICAqXG4gICAgICogVGhpcyBsb2dpYyBwcmV2ZW50cyB1cyBmcm9tIGxvZ2dpbmcgdGhhdCBjaGFuZ2UgYXMgbm9uLWhvdHN3YXBwYWJsZSB3aGVuIHdlIGhvdHN3YXAgaXQuXG4gICAgICovXG4gICAgcmV0LnB1c2gobm9uSG90c3dhcHBhYmxlQ2hhbmdlKFxuICAgICAgY2hhbmdlLFxuICAgICAgTm9uSG90c3dhcHBhYmxlUmVhc29uLkRFUEVOREVOQ1lfVU5TVVBQT1JURUQsXG4gICAgICAnTm8gRUNTIHNlcnZpY2VzIHJlZmVyZW5jZSB0aGUgY2hhbmdlZCB0YXNrIGRlZmluaXRpb24nLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgZmFsc2UsXG4gICAgKSk7XG4gIH1cbiAgaWYgKHJlc291cmNlc1JlZmVyZW5jaW5nVGFza0RlZi5sZW5ndGggPiBlY3NTZXJ2aWNlc1JlZmVyZW5jaW5nVGFza0RlZi5sZW5ndGgpIHtcbiAgICAvLyBpZiBzb21ldGhpbmcgYmVzaWRlcyBhbiBFQ1MgU2VydmljZSBpcyByZWZlcmVuY2luZyB0aGUgVGFza0RlZmluaXRpb24sXG4gICAgLy8gaG90c3dhcCBpcyBub3QgcG9zc2libGUgaW4gRkFMTF9CQUNLIG1vZGVcbiAgICBjb25zdCBub25FY3NTZXJ2aWNlVGFza0RlZlJlZnMgPSByZXNvdXJjZXNSZWZlcmVuY2luZ1Rhc2tEZWYuZmlsdGVyKChyKSA9PiByLlR5cGUgIT09IEVDU19TRVJWSUNFX1JFU09VUkNFX1RZUEUpO1xuICAgIGZvciAoY29uc3QgdGFza1JlZiBvZiBub25FY3NTZXJ2aWNlVGFza0RlZlJlZnMpIHtcbiAgICAgIHJldC5wdXNoKG5vbkhvdHN3YXBwYWJsZUNoYW5nZShcbiAgICAgICAgY2hhbmdlLFxuICAgICAgICBOb25Ib3Rzd2FwcGFibGVSZWFzb24uREVQRU5ERU5DWV9VTlNVUFBPUlRFRCxcbiAgICAgICAgYEEgcmVzb3VyY2UgJyR7dGFza1JlZi5Mb2dpY2FsSWR9JyB3aXRoIFR5cGUgJyR7dGFza1JlZi5UeXBlfScgdGhhdCBpcyBub3QgYW4gRUNTIFNlcnZpY2Ugd2FzIGZvdW5kIHJlZmVyZW5jaW5nIHRoZSBjaGFuZ2VkIFRhc2tEZWZpbml0aW9uICcke2xvZ2ljYWxJZH0nYCxcbiAgICAgICkpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG5hbWVzT2ZIb3Rzd2FwcGFibGVDaGFuZ2VzID0gT2JqZWN0LmtleXMoY2xhc3NpZmllZENoYW5nZXMuaG90c3dhcHBhYmxlUHJvcHMpO1xuICBpZiAobmFtZXNPZkhvdHN3YXBwYWJsZUNoYW5nZXMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uUmVzb3VyY2UgPSBhd2FpdCBwcmVwYXJlVGFza0RlZmluaXRpb25DaGFuZ2UoZXZhbHVhdGVDZm5UZW1wbGF0ZSwgbG9naWNhbElkLCBjaGFuZ2UpO1xuICAgIHJldC5wdXNoKHtcbiAgICAgIGNoYW5nZToge1xuICAgICAgICBjYXVzZTogY2hhbmdlLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsb2dpY2FsSWQsXG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6IGNoYW5nZS5uZXdWYWx1ZS5UeXBlLFxuICAgICAgICAgICAgcGh5c2ljYWxOYW1lOiBhd2FpdCB0YXNrRGVmaW5pdGlvblJlc291cmNlLkZhbWlseSxcbiAgICAgICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi5lY3NTZXJ2aWNlc1JlZmVyZW5jaW5nVGFza0RlZi5tYXAoKGVjc1NlcnZpY2UpID0+ICh7XG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6IEVDU19TRVJWSUNFX1JFU09VUkNFX1RZUEUsXG4gICAgICAgICAgICBwaHlzaWNhbE5hbWU6IGVjc1NlcnZpY2Uuc2VydmljZUFybi5zcGxpdCgnLycpWzJdLFxuICAgICAgICAgICAgbG9naWNhbElkOiBlY3NTZXJ2aWNlLmxvZ2ljYWxJZCxcbiAgICAgICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGVjc1NlcnZpY2UubG9naWNhbElkKSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgaG90c3dhcHBhYmxlOiB0cnVlLFxuICAgICAgc2VydmljZTogJ2Vjcy1zZXJ2aWNlJyxcbiAgICAgIGFwcGx5OiBhc3luYyAoc2RrOiBTREspID0+IHtcbiAgICAgICAgLy8gU3RlcCAxIC0gdXBkYXRlIHRoZSBjaGFuZ2VkIFRhc2tEZWZpbml0aW9uLCBjcmVhdGluZyBhIG5ldyBUYXNrRGVmaW5pdGlvbiBSZXZpc2lvblxuICAgICAgICAvLyB3ZSBuZWVkIHRvIGxvd2VyY2FzZSB0aGUgZXZhbHVhdGVkIFRhc2tEZWYgZnJvbSBDbG91ZEZvcm1hdGlvbixcbiAgICAgICAgLy8gYXMgdGhlIEFXUyBTREsgdXNlcyBsb3dlcmNhc2UgcHJvcGVydHkgbmFtZXMgZm9yIHRoZXNlXG5cbiAgICAgICAgLy8gVGhlIFNESyByZXF1aXJlcyBtb3JlIHByb3BlcnRpZXMgaGVyZSB0aGFuIGl0cyB3b3J0aCBkb2luZyBleHBsaWNpdCB0eXBpbmcgZm9yXG4gICAgICAgIC8vIGluc3RlYWQsIGp1c3QgdXNlIGFsbCB0aGUgb2xkIHZhbHVlcyBpbiB0aGUgZGlmZiB0byBmaWxsIHRoZW0gaW4gaW1wbGljaXRseVxuICAgICAgICBjb25zdCBsb3dlcmNhc2VkVGFza0RlZiA9IHRyYW5zZm9ybU9iamVjdEtleXModGFza0RlZmluaXRpb25SZXNvdXJjZSwgbG93ZXJDYXNlRmlyc3RDaGFyYWN0ZXIsIHtcbiAgICAgICAgICAvLyBBbGwgdGhlIHByb3BlcnRpZXMgdGhhdCB0YWtlIGFyYml0cmFyeSBzdHJpbmcgYXMga2V5cyBpLmUuIHsgXCJzdHJpbmdcIiA6IFwic3RyaW5nXCIgfVxuICAgICAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUmVnaXN0ZXJUYXNrRGVmaW5pdGlvbi5odG1sI0FQSV9SZWdpc3RlclRhc2tEZWZpbml0aW9uX1JlcXVlc3RTeW50YXhcbiAgICAgICAgICBDb250YWluZXJEZWZpbml0aW9uczoge1xuICAgICAgICAgICAgRG9ja2VyTGFiZWxzOiB0cnVlLFxuICAgICAgICAgICAgRmlyZWxlbnNDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICAgIE9wdGlvbnM6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTG9nQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgICBPcHRpb25zOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFZvbHVtZXM6IHtcbiAgICAgICAgICAgIERvY2tlclZvbHVtZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgICAgRHJpdmVyT3B0czogdHJ1ZSxcbiAgICAgICAgICAgICAgTGFiZWxzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVnaXN0ZXJUYXNrRGVmUmVzcG9uc2UgPSBhd2FpdCBzZGsuZWNzKCkucmVnaXN0ZXJUYXNrRGVmaW5pdGlvbihsb3dlcmNhc2VkVGFza0RlZik7XG4gICAgICAgIGNvbnN0IHRhc2tEZWZSZXZBcm4gPSByZWdpc3RlclRhc2tEZWZSZXNwb25zZS50YXNrRGVmaW5pdGlvbj8udGFza0RlZmluaXRpb25Bcm47XG5cbiAgICAgICAgbGV0IGVjc0hvdHN3YXBQcm9wZXJ0aWVzID0gaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLmVjc0hvdHN3YXBQcm9wZXJ0aWVzO1xuICAgICAgICBsZXQgbWluaW11bUhlYWx0aHlQZXJjZW50ID0gZWNzSG90c3dhcFByb3BlcnRpZXM/Lm1pbmltdW1IZWFsdGh5UGVyY2VudDtcbiAgICAgICAgbGV0IG1heGltdW1IZWFsdGh5UGVyY2VudCA9IGVjc0hvdHN3YXBQcm9wZXJ0aWVzPy5tYXhpbXVtSGVhbHRoeVBlcmNlbnQ7XG4gICAgICAgIGxldCBzdGFiaWxpemF0aW9uVGltZW91dFNlY29uZHMgPSBlY3NIb3Rzd2FwUHJvcGVydGllcz8uc3RhYmlsaXphdGlvblRpbWVvdXRTZWNvbmRzO1xuXG4gICAgICAgIC8vIFN0ZXAgMiAtIHVwZGF0ZSB0aGUgc2VydmljZXMgdXNpbmcgdGhhdCBUYXNrRGVmaW5pdGlvbiB0byBwb2ludCB0byB0aGUgbmV3IFRhc2tEZWZpbml0aW9uIFJldmlzaW9uXG4gICAgICAgIC8vIEZvcmNpbmcgTmV3IERlcGxveW1lbnQgYW5kIHNldHRpbmcgTWluaW11bSBIZWFsdGh5IFBlcmNlbnQgdG8gMC5cbiAgICAgICAgLy8gQXMgQ0RLIEhvdFN3YXAgaXMgZGV2ZWxvcG1lbnQgb25seSwgdGhpcyBzZWVtcyB0aGUgbW9zdCBlZmZpY2llbnQgd2F5IHRvIGVuc3VyZSBhbGwgdGFza3MgYXJlIHJlcGxhY2VkIGltbWVkaWF0ZWx5LCByZWdhcmRsZXNzIG9mIG9yaWdpbmFsIGFtb3VudFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvcHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc21cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgZWNzU2VydmljZXNSZWZlcmVuY2luZ1Rhc2tEZWYubWFwKGFzeW5jIChzZXJ2aWNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbHVzdGVyID0gc2VydmljZS5zZXJ2aWNlQXJuLnNwbGl0KCcvJylbMV07XG4gICAgICAgICAgICBjb25zdCB1cGRhdGUgPSBhd2FpdCBzZGsuZWNzKCkudXBkYXRlU2VydmljZSh7XG4gICAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2Uuc2VydmljZUFybixcbiAgICAgICAgICAgICAgdGFza0RlZmluaXRpb246IHRhc2tEZWZSZXZBcm4sXG4gICAgICAgICAgICAgIGNsdXN0ZXIsXG4gICAgICAgICAgICAgIGZvcmNlTmV3RGVwbG95bWVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgZGVwbG95bWVudENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgICAgICBtaW5pbXVtSGVhbHRoeVBlcmNlbnQ6IG1pbmltdW1IZWFsdGh5UGVyY2VudCAhPT0gdW5kZWZpbmVkID8gbWluaW11bUhlYWx0aHlQZXJjZW50IDogMCxcbiAgICAgICAgICAgICAgICBtYXhpbXVtUGVyY2VudDogbWF4aW11bUhlYWx0aHlQZXJjZW50ICE9PSB1bmRlZmluZWQgPyBtYXhpbXVtSGVhbHRoeVBlcmNlbnQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgYXdhaXQgc2RrLmVjcygpLndhaXRVbnRpbFNlcnZpY2VzU3RhYmxlKHtcbiAgICAgICAgICAgICAgY2x1c3RlcjogdXBkYXRlLnNlcnZpY2U/LmNsdXN0ZXJBcm4sXG4gICAgICAgICAgICAgIHNlcnZpY2VzOiBbc2VydmljZS5zZXJ2aWNlQXJuXSxcbiAgICAgICAgICAgIH0sIHN0YWJpbGl6YXRpb25UaW1lb3V0U2Vjb25kcyk7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuaW50ZXJmYWNlIEVjc1NlcnZpY2Uge1xuICByZWFkb25seSBsb2dpY2FsSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2VydmljZUFybjogc3RyaW5nO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlVGFza0RlZmluaXRpb25DaGFuZ2UoXG4gIGV2YWx1YXRlQ2ZuVGVtcGxhdGU6IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSxcbiAgbG9naWNhbElkOiBzdHJpbmcsXG4gIGNoYW5nZTogUmVzb3VyY2VDaGFuZ2UsXG4pIHtcbiAgY29uc3QgdGFza0RlZmluaXRpb25SZXNvdXJjZTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0gPSB7XG4gICAgLi4uY2hhbmdlLm9sZFZhbHVlLlByb3BlcnRpZXMsXG4gICAgQ29udGFpbmVyRGVmaW5pdGlvbnM6IGNoYW5nZS5uZXdWYWx1ZS5Qcm9wZXJ0aWVzPy5Db250YWluZXJEZWZpbml0aW9ucyxcbiAgfTtcbiAgLy8gZmlyc3QsIGxldCdzIGdldCB0aGUgbmFtZSBvZiB0aGUgZmFtaWx5XG4gIGNvbnN0IGZhbWlseU5hbWVPckFybiA9IGF3YWl0IGV2YWx1YXRlQ2ZuVGVtcGxhdGUuZXN0YWJsaXNoUmVzb3VyY2VQaHlzaWNhbE5hbWUoXG4gICAgbG9naWNhbElkLFxuICAgIHRhc2tEZWZpbml0aW9uUmVzb3VyY2U/LkZhbWlseSxcbiAgKTtcbiAgaWYgKCFmYW1pbHlOYW1lT3JBcm4pIHtcbiAgICAvLyBpZiB0aGUgRmFtaWx5IHByb3BlcnR5IGhhcyBub3QgYmVlbiBwcm92aWRlZCwgYW5kIHdlIGNhbid0IGZpbmQgaXQgaW4gdGhlIGN1cnJlbnQgU3RhY2ssXG4gICAgLy8gdGhpcyBtZWFucyBob3Rzd2FwcGluZyBpcyBub3QgcG9zc2libGVcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gdGhlIHBoeXNpY2FsIG5hbWUgb2YgdGhlIFRhc2sgRGVmaW5pdGlvbiBpbiBDbG91ZEZvcm1hdGlvbiBpbmNsdWRlcyBpdHMgY3VycmVudCByZXZpc2lvbiBudW1iZXIgYXQgdGhlIGVuZCxcbiAgLy8gcmVtb3ZlIGl0IGlmIG5lZWRlZFxuICBjb25zdCBmYW1pbHlOYW1lT3JBcm5QYXJ0cyA9IGZhbWlseU5hbWVPckFybi5zcGxpdCgnOicpO1xuICBjb25zdCBmYW1pbHkgPVxuICAgIGZhbWlseU5hbWVPckFyblBhcnRzLmxlbmd0aCA+IDFcbiAgICAgID8gLy8gZmFtaWx5TmFtZU9yQXJuIGlzIGFjdHVhbGx5IGFuIEFSTiwgb2YgdGhlIGZvcm1hdCAnYXJuOmF3czplY3M6cmVnaW9uOmFjY291bnQ6dGFzay1kZWZpbml0aW9uLzxmYW1pbHktbmFtZT46PHJldmlzaW9uLW5yPidcbiAgICAvLyBzbywgdGFrZSB0aGUgNnRoIGVsZW1lbnQsIGF0IGluZGV4IDUsIGFuZCBzcGxpdCBpdCBvbiAnLydcbiAgICAgIGZhbWlseU5hbWVPckFyblBhcnRzWzVdLnNwbGl0KCcvJylbMV1cbiAgICAgIDogLy8gb3RoZXJ3aXNlLCBmYW1pbHlOYW1lT3JBcm4gaXMganVzdCB0aGUgc2ltcGxlIG5hbWUgZXZhbHVhdGVkIGZyb20gdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlXG4gICAgICBmYW1pbHlOYW1lT3JBcm47XG4gIC8vIHRoZW4sIGxldCdzIGV2YWx1YXRlIHRoZSBib2R5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIFRhc2tEZWYgKHdpdGhvdXQgdGhlIEZhbWlseSBwcm9wZXJ0eSlcbiAgcmV0dXJuIHtcbiAgICAuLi4oYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5ldmFsdWF0ZUNmbkV4cHJlc3Npb24oe1xuICAgICAgLi4uKHRhc2tEZWZpbml0aW9uUmVzb3VyY2UgPz8ge30pLFxuICAgICAgRmFtaWx5OiB1bmRlZmluZWQsXG4gICAgfSkpLFxuICAgIEZhbWlseTogZmFtaWx5LFxuICB9O1xufVxuIl19
@@ -1,5 +1,4 @@
1
1
  export * from './io-host-wrappers';
2
- export * from './sdk-logger';
3
2
  export * from './io-helper';
4
3
  export * from './level-priority';
5
4
  export * from './span';
@@ -15,7 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./io-host-wrappers"), exports);
18
- __exportStar(require("./sdk-logger"), exports);
19
18
  __exportStar(require("./io-helper"), exports);
20
19
  __exportStar(require("./level-priority"), exports);
21
20
  __exportStar(require("./span"), exports);
@@ -23,4 +22,4 @@ __exportStar(require("./message-maker"), exports);
23
22
  __exportStar(require("./messages"), exports);
24
23
  __exportStar(require("./types"), exports);
25
24
  __exportStar(require("./io-default-messages"), exports);
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQW1DO0FBQ25DLCtDQUE2QjtBQUM3Qiw4Q0FBNEI7QUFDNUIsbURBQWlDO0FBQ2pDLHlDQUF1QjtBQUN2QixrREFBZ0M7QUFDaEMsNkNBQTJCO0FBQzNCLDBDQUF3QjtBQUN4Qix3REFBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2lvLWhvc3Qtd3JhcHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZGstbG9nZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vaW8taGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGV2ZWwtcHJpb3JpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9zcGFuJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZS1tYWtlcic7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9pby1kZWZhdWx0LW1lc3NhZ2VzJztcbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQW1DO0FBQ25DLDhDQUE0QjtBQUM1QixtREFBaUM7QUFDakMseUNBQXVCO0FBQ3ZCLGtEQUFnQztBQUNoQyw2Q0FBMkI7QUFDM0IsMENBQXdCO0FBQ3hCLHdEQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW8taG9zdC13cmFwcGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2lvLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xldmVsLXByaW9yaXR5JztcbmV4cG9ydCAqIGZyb20gJy4vc3Bhbic7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2UtbWFrZXInO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vaW8tZGVmYXVsdC1tZXNzYWdlcyc7XG4iXX0=
@@ -22,16 +22,16 @@ export declare class PluginHost implements IPluginHost {
22
22
  *
23
23
  * Will use `require.resolve()` to get the most accurate representation of what
24
24
  * code will get loaded in error messages. As such, it will not work in
25
- * unit tests with Jest virtual modules becauase of <https://github.com/jestjs/jest/issues/9543>.
25
+ * unit tests with Jest virtual modules becauase of \<https://github.com/jestjs/jest/issues/9543\>.
26
26
  *
27
- * @param moduleSpec the specification (path or name) of the plug-in module to be loaded.
28
- * @param ioHost the I/O host to use for printing progress information
27
+ * @param moduleSpec - the specification (path or name) of the plug-in module to be loaded.
28
+ * @param ioHost - the I/O host to use for printing progress information
29
29
  */
30
30
  load(moduleSpec: string, ioHost?: IIoHost): void;
31
31
  /**
32
32
  * Allows plug-ins to register new CredentialProviderSources.
33
33
  *
34
- * @param source a new CredentialProviderSource to register.
34
+ * @param source - a new CredentialProviderSource to register.
35
35
  */
36
36
  registerCredentialProviderSource(source: CredentialProviderSource): void;
37
37
  /**
@@ -26,10 +26,10 @@ class PluginHost {
26
26
  *
27
27
  * Will use `require.resolve()` to get the most accurate representation of what
28
28
  * code will get loaded in error messages. As such, it will not work in
29
- * unit tests with Jest virtual modules becauase of <https://github.com/jestjs/jest/issues/9543>.
29
+ * unit tests with Jest virtual modules becauase of \<https://github.com/jestjs/jest/issues/9543\>.
30
30
  *
31
- * @param moduleSpec the specification (path or name) of the plug-in module to be loaded.
32
- * @param ioHost the I/O host to use for printing progress information
31
+ * @param moduleSpec - the specification (path or name) of the plug-in module to be loaded.
32
+ * @param ioHost - the I/O host to use for printing progress information
33
33
  */
34
34
  load(moduleSpec, ioHost) {
35
35
  try {
@@ -78,7 +78,7 @@ class PluginHost {
78
78
  /**
79
79
  * Allows plug-ins to register new CredentialProviderSources.
80
80
  *
81
- * @param source a new CredentialProviderSource to register.
81
+ * @param source - a new CredentialProviderSource to register.
82
82
  */
83
83
  registerCredentialProviderSource(source) {
84
84
  // Forward to the right credentials-related plugin host
@@ -124,4 +124,4 @@ class PluginHost {
124
124
  }
125
125
  }
126
126
  exports.PluginHost = PluginHost;
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUUvQix1RUFBZ0c7QUFDaEcsK0RBQTJEO0FBRTNELDJDQUE0RDtBQUU1RDs7Ozs7O0dBTUc7QUFDSCxNQUFhLFVBQVU7SUFDckI7OztPQUdHO0lBQ2EseUJBQXlCLEdBQUcsSUFBSSxLQUFLLEVBQTRCLENBQUM7SUFFbEUsc0JBQXNCLEdBQTBDLEVBQUUsQ0FBQztJQUU1RSxNQUFNLENBQVc7SUFFUCxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUVuRDs7Ozs7Ozs7O09BU0c7SUFDSSxJQUFJLENBQUMsVUFBa0IsRUFBRSxNQUFnQjtRQUM5QyxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSwyQkFBaUIsQ0FBQyxrQkFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLFFBQVEsU0FBUyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3RILENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsK0VBQStFO1lBQy9FLHlFQUF5RTtZQUN6RSxnRkFBZ0Y7WUFDaEYsd0VBQXdFO1lBQ3hFLE1BQU0sSUFBSSw0QkFBWSxDQUFDLGtEQUFrRCxVQUFVLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsUUFBZ0I7UUFDN0IsSUFBSSxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxPQUFPO1lBQ1QsQ0FBQztZQUVELDBEQUEwRDtZQUMxRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsbUJBQW1CO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLDRCQUFZLENBQUMsVUFBVSxRQUFRLHlEQUF5RCxDQUFDLENBQUM7WUFDdEcsQ0FBQztZQUNELElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLENBQUM7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLDRCQUFZLENBQUMsU0FBUyxDQUFDLDJCQUEyQixRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsU0FBUyxRQUFRLENBQUMsQ0FBTTtZQUN0QixPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZ0NBQWdDLENBQUMsTUFBZ0M7UUFDdEUsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BK0JHO0lBQ0ksNEJBQTRCLENBQUMsa0JBQTBCLEVBQUUsUUFBK0I7UUFDN0YsSUFBSSxDQUFDLElBQUEsaURBQXVCLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksNEJBQVksQ0FBQyxrRUFBa0UsSUFBQSxjQUFPLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hILENBQUM7UUFDRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBdEhELGdDQXNIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICd1dGlsJztcbmltcG9ydCB0eXBlIHsgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlLCBJUGx1Z2luSG9zdCwgUGx1Z2luIH0gZnJvbSAnQGF3cy1jZGsvY2xpLXBsdWdpbi1jb250cmFjdCc7XG5pbXBvcnQgeyB0eXBlIENvbnRleHRQcm92aWRlclBsdWdpbiwgaXNDb250ZXh0UHJvdmlkZXJQbHVnaW4gfSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXItcGx1Z2luJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgdHlwZSB7IElJb0hvc3QgfSBmcm9tICcuLi9pbyc7XG5pbXBvcnQgeyBJb0RlZmF1bHRNZXNzYWdlcywgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlJztcblxuLyoqXG4gKiBDbGFzcyB0byBtYW5hZ2UgYSBwbHVnaW4gY29sbGVjdGlvblxuICpcbiAqIEl0IHByb3ZpZGVzIGEgYGxvYWQoKWAgZnVuY3Rpb24gdGhhdCBsb2FkcyBhIEphdmFTY3JpcHRcbiAqIG1vZHVsZSBmcm9tIGRpc2ssIGFuZCBnaXZlcyBpdCBhY2Nlc3MgdG8gdGhlIGBJUGx1Z2luSG9zdGAgaW50ZXJmYWNlXG4gKiB0byByZWdpc3RlciBpdHNlbGYuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5Ib3N0IGltcGxlbWVudHMgSVBsdWdpbkhvc3Qge1xuICAvKipcbiAgICogQWNjZXNzIHRoZSBjdXJyZW50bHkgcmVnaXN0ZXJlZCBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2VzLiBOZXcgc291cmNlcyBjYW5cbiAgICogYmUgcmVnaXN0ZXJlZCB1c2luZyB0aGUgK3JlZ2lzdGVyQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlKyBtZXRob2QuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyU291cmNlcyA9IG5ldyBBcnJheTxDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2U+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRleHRQcm92aWRlclBsdWdpbnM6IFJlY29yZDxzdHJpbmcsIENvbnRleHRQcm92aWRlclBsdWdpbj4gPSB7fTtcblxuICBwdWJsaWMgaW9Ib3N0PzogSUlvSG9zdDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFscmVhZHlMb2FkZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAvKipcbiAgICogTG9hZHMgYSBwbHVnLWluIGludG8gdGhpcyBQbHVnaW5Ib3N0LlxuICAgKlxuICAgKiBXaWxsIHVzZSBgcmVxdWlyZS5yZXNvbHZlKClgIHRvIGdldCB0aGUgbW9zdCBhY2N1cmF0ZSByZXByZXNlbnRhdGlvbiBvZiB3aGF0XG4gICAqIGNvZGUgd2lsbCBnZXQgbG9hZGVkIGluIGVycm9yIG1lc3NhZ2VzLiBBcyBzdWNoLCBpdCB3aWxsIG5vdCB3b3JrIGluXG4gICAqIHVuaXQgdGVzdHMgd2l0aCBKZXN0IHZpcnR1YWwgbW9kdWxlcyBiZWNhdWFzZSBvZiA8aHR0cHM6Ly9naXRodWIuY29tL2plc3Rqcy9qZXN0L2lzc3Vlcy85NTQzPi5cbiAgICpcbiAgICogQHBhcmFtIG1vZHVsZVNwZWMgdGhlIHNwZWNpZmljYXRpb24gKHBhdGggb3IgbmFtZSkgb2YgdGhlIHBsdWctaW4gbW9kdWxlIHRvIGJlIGxvYWRlZC5cbiAgICogQHBhcmFtIGlvSG9zdCB0aGUgSS9PIGhvc3QgdG8gdXNlIGZvciBwcmludGluZyBwcm9ncmVzcyBpbmZvcm1hdGlvblxuICAgKi9cbiAgcHVibGljIGxvYWQobW9kdWxlU3BlYzogc3RyaW5nLCBpb0hvc3Q/OiBJSW9Ib3N0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVxdWlyZS5yZXNvbHZlKG1vZHVsZVNwZWMpO1xuICAgICAgaWYgKGlvSG9zdCkge1xuICAgICAgICBuZXcgSW9EZWZhdWx0TWVzc2FnZXMoSW9IZWxwZXIuZnJvbUlvSG9zdChpb0hvc3QsICdpbml0JykpLmRlYnVnKGBMb2FkaW5nIHBsdWctaW46ICR7cmVzb2x2ZWR9IGZyb20gJHttb2R1bGVTcGVjfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2RvTG9hZChyZXNvbHZlZCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAvLyBhY2NvcmRpbmcgdG8gTm9kZS5qcyBkb2NzIGBNT0RVTEVfTk9UX0ZPVU5EYCBpcyB0aGUgb25seSBwb3NzaWJsZSBlcnJvciBoZXJlXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvbW9kdWxlcy5odG1sI3JlcXVpcmVyZXNvbHZlcmVxdWVzdC1vcHRpb25zXG4gICAgICAvLyBOb3QgdXNpbmcgYHdpdGhDYXVzZSgpYCBoZXJlLCBzaW5jZSB0aGUgbm9kZSBlcnJvciBjb250YWlucyBhIFwiUmVxdWlyZSBTdGFja1wiXG4gICAgICAvLyBhcyBwYXJ0IG9mIHRoZSBlcnJvciBtZXNzYWdlIHRoYXQgaXMgaW5oZXJlbnRseSB1c2VsZXNzIHRvIG91ciB1c2Vycy5cbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYFVuYWJsZSB0byByZXNvbHZlIHBsdWctaW46IENhbm5vdCBmaW5kIG1vZHVsZSAnJHttb2R1bGVTcGVjfSc6ICR7ZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRG8gdGhlIGxvYWRpbmcgZ2l2ZW4gYW4gYWxyZWFkeS1yZXNvbHZlZCBtb2R1bGUgbmFtZVxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfZG9Mb2FkKHJlc29sdmVkOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuYWxyZWFkeUxvYWRlZC5oYXMocmVzb2x2ZWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuICAgICAgY29uc3QgcGx1Z2luID0gcmVxdWlyZShyZXNvbHZlZCk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlICovXG4gICAgICBpZiAoIWlzUGx1Z2luKHBsdWdpbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgTW9kdWxlICR7cmVzb2x2ZWR9IGlzIG5vdCBhIHZhbGlkIHBsdWctaW4sIG9yIGhhcyBhbiB1bnN1cHBvcnRlZCB2ZXJzaW9uLmApO1xuICAgICAgfVxuICAgICAgaWYgKHBsdWdpbi5pbml0KSB7XG4gICAgICAgIHBsdWdpbi5pbml0KHRoaXMpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFscmVhZHlMb2FkZWQuYWRkKHJlc29sdmVkKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IFRvb2xraXRFcnJvci53aXRoQ2F1c2UoYFVuYWJsZSB0byBsb2FkIHBsdWctaW4gJyR7cmVzb2x2ZWR9J2AsIGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUGx1Z2luKHg6IGFueSk6IHggaXMgUGx1Z2luIHtcbiAgICAgIHJldHVybiB4ICE9IG51bGwgJiYgeC52ZXJzaW9uID09PSAnMSc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyBwbHVnLWlucyB0byByZWdpc3RlciBuZXcgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlcy5cbiAgICpcbiAgICogQHBhcmFtIHNvdXJjZSBhIG5ldyBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2Uoc291cmNlOiBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UpIHtcbiAgICAvLyBGb3J3YXJkIHRvIHRoZSByaWdodCBjcmVkZW50aWFscy1yZWxhdGVkIHBsdWdpbiBob3N0XG4gICAgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXJTb3VyY2VzLnB1c2goc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAoRVhQRVJJTUVOVEFMKSBBbGxvdyBwbHVnaW5zIHRvIHJlZ2lzdGVyIGNvbnRleHQgcHJvdmlkZXJzXG4gICAqXG4gICAqIENvbnRleHQgcHJvdmlkZXJzIGFyZSBvYmplY3RzIHdpdGggdGhlIGZvbGxvd2luZyBtZXRob2Q6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqICAgZ2V0VmFsdWUoYXJnczoge1trZXk6IHN0cmluZ106IGFueX0pOiBQcm9taXNlPGFueT47XG4gICAqIGBgYFxuICAgKlxuICAgKiBDdXJyZW50bHksIHRoZXkgY2Fubm90IHJldXNlIHRoZSBDREsncyBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc21zLCBzbyB0aGV5XG4gICAqIG11c3QgYmUgcHJlcGFyZWQgdG8gZWl0aGVyIG5vdCBtYWtlIEFXUyBjYWxscyBvciB1c2UgdGhlaXIgb3duIHNvdXJjZSBvZlxuICAgKiBBV1MgY3JlZGVudGlhbHMuXG4gICAqXG4gICAqIFRoaXMgZmVhdHVyZSBpcyBleHBlcmltZW50YWwsIGFuZCBvbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgaW50ZXJuYWxseSBhdCBBbWF6b25cbiAgICogYXMgYSB0cmlhbC5cbiAgICpcbiAgICogQWZ0ZXIgcmVnaXN0ZXJpbmcgd2l0aCAnbXktcGx1Z2luLW5hbWUnLCB0aGUgcHJvdmlkZXIgbXVzdCBiZSBhZGRyZXNzZWQgYXMgZm9sbG93czpcbiAgICpcbiAgICogYGBgdHNcbiAgICogY29uc3QgdmFsdWUgPSBDb250ZXh0UHJvdmlkZXIuZ2V0VmFsdWUodGhpcywge1xuICAgKiAgIHByb3ZpZGVyTmFtZTogJ3BsdWdpbicsXG4gICAqICAgcHJvcHM6IHtcbiAgICogICAgIHBsdWdpbk5hbWU6ICdteS1wbHVnaW4tbmFtZScsXG4gICAqICAgICBteVBhcmFtZXRlcjE6ICd4eXonLFxuICAgKiAgIH0sXG4gICAqICAgaW5jbHVkZUVudmlyb25tZW50OiB0cnVlIHwgZmFsc2UsXG4gICAqICAgZHVtbXlWYWx1ZTogJ3doYXQtdG8tcmV0dXJuLW9uLXRoZS1maXJzdC1wYXNzJyxcbiAgICogfSlcbiAgICogYGBgXG4gICAqXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHB1YmxpYyByZWdpc3RlckNvbnRleHRQcm92aWRlckFscGhhKHBsdWdpblByb3ZpZGVyTmFtZTogc3RyaW5nLCBwcm92aWRlcjogQ29udGV4dFByb3ZpZGVyUGx1Z2luKSB7XG4gICAgaWYgKCFpc0NvbnRleHRQcm92aWRlclBsdWdpbihwcm92aWRlcikpIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYE9iamVjdCB5b3UgZ2F2ZSBtZSBkb2VzIG5vdCBsb29rIGxpa2UgYSBDb250ZXh0UHJvdmlkZXJQbHVnaW46ICR7aW5zcGVjdChwcm92aWRlcil9YCk7XG4gICAgfVxuICAgIHRoaXMuY29udGV4dFByb3ZpZGVyUGx1Z2luc1twbHVnaW5Qcm92aWRlck5hbWVdID0gcHJvdmlkZXI7XG4gIH1cbn1cbiJdfQ==
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUUvQix1RUFBZ0c7QUFDaEcsK0RBQTJEO0FBRTNELDJDQUE0RDtBQUU1RDs7Ozs7O0dBTUc7QUFDSCxNQUFhLFVBQVU7SUFDckI7OztPQUdHO0lBQ2EseUJBQXlCLEdBQUcsSUFBSSxLQUFLLEVBQTRCLENBQUM7SUFFbEUsc0JBQXNCLEdBQTBDLEVBQUUsQ0FBQztJQUU1RSxNQUFNLENBQVc7SUFFUCxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUVuRDs7Ozs7Ozs7O09BU0c7SUFDSSxJQUFJLENBQUMsVUFBa0IsRUFBRSxNQUFnQjtRQUM5QyxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSwyQkFBaUIsQ0FBQyxrQkFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLFFBQVEsU0FBUyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3RILENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsK0VBQStFO1lBQy9FLHlFQUF5RTtZQUN6RSxnRkFBZ0Y7WUFDaEYsd0VBQXdFO1lBQ3hFLE1BQU0sSUFBSSw0QkFBWSxDQUFDLGtEQUFrRCxVQUFVLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsUUFBZ0I7UUFDN0IsSUFBSSxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxPQUFPO1lBQ1QsQ0FBQztZQUVELDBEQUEwRDtZQUMxRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsbUJBQW1CO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLDRCQUFZLENBQUMsVUFBVSxRQUFRLHlEQUF5RCxDQUFDLENBQUM7WUFDdEcsQ0FBQztZQUNELElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLENBQUM7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLDRCQUFZLENBQUMsU0FBUyxDQUFDLDJCQUEyQixRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsU0FBUyxRQUFRLENBQUMsQ0FBTTtZQUN0QixPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZ0NBQWdDLENBQUMsTUFBZ0M7UUFDdEUsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BK0JHO0lBQ0ksNEJBQTRCLENBQUMsa0JBQTBCLEVBQUUsUUFBK0I7UUFDN0YsSUFBSSxDQUFDLElBQUEsaURBQXVCLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksNEJBQVksQ0FBQyxrRUFBa0UsSUFBQSxjQUFPLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hILENBQUM7UUFDRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBdEhELGdDQXNIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICd1dGlsJztcbmltcG9ydCB0eXBlIHsgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlLCBJUGx1Z2luSG9zdCwgUGx1Z2luIH0gZnJvbSAnQGF3cy1jZGsvY2xpLXBsdWdpbi1jb250cmFjdCc7XG5pbXBvcnQgeyB0eXBlIENvbnRleHRQcm92aWRlclBsdWdpbiwgaXNDb250ZXh0UHJvdmlkZXJQbHVnaW4gfSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXItcGx1Z2luJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgdHlwZSB7IElJb0hvc3QgfSBmcm9tICcuLi9pbyc7XG5pbXBvcnQgeyBJb0RlZmF1bHRNZXNzYWdlcywgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlJztcblxuLyoqXG4gKiBDbGFzcyB0byBtYW5hZ2UgYSBwbHVnaW4gY29sbGVjdGlvblxuICpcbiAqIEl0IHByb3ZpZGVzIGEgYGxvYWQoKWAgZnVuY3Rpb24gdGhhdCBsb2FkcyBhIEphdmFTY3JpcHRcbiAqIG1vZHVsZSBmcm9tIGRpc2ssIGFuZCBnaXZlcyBpdCBhY2Nlc3MgdG8gdGhlIGBJUGx1Z2luSG9zdGAgaW50ZXJmYWNlXG4gKiB0byByZWdpc3RlciBpdHNlbGYuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5Ib3N0IGltcGxlbWVudHMgSVBsdWdpbkhvc3Qge1xuICAvKipcbiAgICogQWNjZXNzIHRoZSBjdXJyZW50bHkgcmVnaXN0ZXJlZCBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2VzLiBOZXcgc291cmNlcyBjYW5cbiAgICogYmUgcmVnaXN0ZXJlZCB1c2luZyB0aGUgK3JlZ2lzdGVyQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlKyBtZXRob2QuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyU291cmNlcyA9IG5ldyBBcnJheTxDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2U+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRleHRQcm92aWRlclBsdWdpbnM6IFJlY29yZDxzdHJpbmcsIENvbnRleHRQcm92aWRlclBsdWdpbj4gPSB7fTtcblxuICBwdWJsaWMgaW9Ib3N0PzogSUlvSG9zdDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFscmVhZHlMb2FkZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAvKipcbiAgICogTG9hZHMgYSBwbHVnLWluIGludG8gdGhpcyBQbHVnaW5Ib3N0LlxuICAgKlxuICAgKiBXaWxsIHVzZSBgcmVxdWlyZS5yZXNvbHZlKClgIHRvIGdldCB0aGUgbW9zdCBhY2N1cmF0ZSByZXByZXNlbnRhdGlvbiBvZiB3aGF0XG4gICAqIGNvZGUgd2lsbCBnZXQgbG9hZGVkIGluIGVycm9yIG1lc3NhZ2VzLiBBcyBzdWNoLCBpdCB3aWxsIG5vdCB3b3JrIGluXG4gICAqIHVuaXQgdGVzdHMgd2l0aCBKZXN0IHZpcnR1YWwgbW9kdWxlcyBiZWNhdWFzZSBvZiBcXDxodHRwczovL2dpdGh1Yi5jb20vamVzdGpzL2plc3QvaXNzdWVzLzk1NDNcXD4uXG4gICAqXG4gICAqIEBwYXJhbSBtb2R1bGVTcGVjIC0gdGhlIHNwZWNpZmljYXRpb24gKHBhdGggb3IgbmFtZSkgb2YgdGhlIHBsdWctaW4gbW9kdWxlIHRvIGJlIGxvYWRlZC5cbiAgICogQHBhcmFtIGlvSG9zdCAtIHRoZSBJL08gaG9zdCB0byB1c2UgZm9yIHByaW50aW5nIHByb2dyZXNzIGluZm9ybWF0aW9uXG4gICAqL1xuICBwdWJsaWMgbG9hZChtb2R1bGVTcGVjOiBzdHJpbmcsIGlvSG9zdD86IElJb0hvc3QpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzb2x2ZWQgPSByZXF1aXJlLnJlc29sdmUobW9kdWxlU3BlYyk7XG4gICAgICBpZiAoaW9Ib3N0KSB7XG4gICAgICAgIG5ldyBJb0RlZmF1bHRNZXNzYWdlcyhJb0hlbHBlci5mcm9tSW9Ib3N0KGlvSG9zdCwgJ2luaXQnKSkuZGVidWcoYExvYWRpbmcgcGx1Zy1pbjogJHtyZXNvbHZlZH0gZnJvbSAke21vZHVsZVNwZWN9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5fZG9Mb2FkKHJlc29sdmVkKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIC8vIGFjY29yZGluZyB0byBOb2RlLmpzIGRvY3MgYE1PRFVMRV9OT1RfRk9VTkRgIGlzIHRoZSBvbmx5IHBvc3NpYmxlIGVycm9yIGhlcmVcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9tb2R1bGVzLmh0bWwjcmVxdWlyZXJlc29sdmVyZXF1ZXN0LW9wdGlvbnNcbiAgICAgIC8vIE5vdCB1c2luZyBgd2l0aENhdXNlKClgIGhlcmUsIHNpbmNlIHRoZSBub2RlIGVycm9yIGNvbnRhaW5zIGEgXCJSZXF1aXJlIFN0YWNrXCJcbiAgICAgIC8vIGFzIHBhcnQgb2YgdGhlIGVycm9yIG1lc3NhZ2UgdGhhdCBpcyBpbmhlcmVudGx5IHVzZWxlc3MgdG8gb3VyIHVzZXJzLlxuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgVW5hYmxlIHRvIHJlc29sdmUgcGx1Zy1pbjogQ2Fubm90IGZpbmQgbW9kdWxlICcke21vZHVsZVNwZWN9JzogJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEbyB0aGUgbG9hZGluZyBnaXZlbiBhbiBhbHJlYWR5LXJlc29sdmVkIG1vZHVsZSBuYW1lXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9kb0xvYWQocmVzb2x2ZWQ6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5hbHJlYWR5TG9hZGVkLmhhcyhyZXNvbHZlZCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzICovXG4gICAgICBjb25zdCBwbHVnaW4gPSByZXF1aXJlKHJlc29sdmVkKTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgKi9cbiAgICAgIGlmICghaXNQbHVnaW4ocGx1Z2luKSkge1xuICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBNb2R1bGUgJHtyZXNvbHZlZH0gaXMgbm90IGEgdmFsaWQgcGx1Zy1pbiwgb3IgaGFzIGFuIHVuc3VwcG9ydGVkIHZlcnNpb24uYCk7XG4gICAgICB9XG4gICAgICBpZiAocGx1Z2luLmluaXQpIHtcbiAgICAgICAgcGx1Z2luLmluaXQodGhpcyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWxyZWFkeUxvYWRlZC5hZGQocmVzb2x2ZWQpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgVG9vbGtpdEVycm9yLndpdGhDYXVzZShgVW5hYmxlIHRvIGxvYWQgcGx1Zy1pbiAnJHtyZXNvbHZlZH0nYCwgZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNQbHVnaW4oeDogYW55KTogeCBpcyBQbHVnaW4ge1xuICAgICAgcmV0dXJuIHggIT0gbnVsbCAmJiB4LnZlcnNpb24gPT09ICcxJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWxsb3dzIHBsdWctaW5zIHRvIHJlZ2lzdGVyIG5ldyBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2VzLlxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlIC0gYSBuZXcgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlIHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlKHNvdXJjZTogQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlKSB7XG4gICAgLy8gRm9yd2FyZCB0byB0aGUgcmlnaHQgY3JlZGVudGlhbHMtcmVsYXRlZCBwbHVnaW4gaG9zdFxuICAgIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyU291cmNlcy5wdXNoKHNvdXJjZSk7XG4gIH1cblxuICAvKipcbiAgICogKEVYUEVSSU1FTlRBTCkgQWxsb3cgcGx1Z2lucyB0byByZWdpc3RlciBjb250ZXh0IHByb3ZpZGVyc1xuICAgKlxuICAgKiBDb250ZXh0IHByb3ZpZGVycyBhcmUgb2JqZWN0cyB3aXRoIHRoZSBmb2xsb3dpbmcgbWV0aG9kOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiAgIGdldFZhbHVlKGFyZ3M6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogUHJvbWlzZTxhbnk+O1xuICAgKiBgYGBcbiAgICpcbiAgICogQ3VycmVudGx5LCB0aGV5IGNhbm5vdCByZXVzZSB0aGUgQ0RLJ3MgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcywgc28gdGhleVxuICAgKiBtdXN0IGJlIHByZXBhcmVkIHRvIGVpdGhlciBub3QgbWFrZSBBV1MgY2FsbHMgb3IgdXNlIHRoZWlyIG93biBzb3VyY2Ugb2ZcbiAgICogQVdTIGNyZWRlbnRpYWxzLlxuICAgKlxuICAgKiBUaGlzIGZlYXR1cmUgaXMgZXhwZXJpbWVudGFsLCBhbmQgb25seSBpbnRlbmRlZCB0byBiZSB1c2VkIGludGVybmFsbHkgYXQgQW1hem9uXG4gICAqIGFzIGEgdHJpYWwuXG4gICAqXG4gICAqIEFmdGVyIHJlZ2lzdGVyaW5nIHdpdGggJ215LXBsdWdpbi1uYW1lJywgdGhlIHByb3ZpZGVyIG11c3QgYmUgYWRkcmVzc2VkIGFzIGZvbGxvd3M6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGNvbnN0IHZhbHVlID0gQ29udGV4dFByb3ZpZGVyLmdldFZhbHVlKHRoaXMsIHtcbiAgICogICBwcm92aWRlck5hbWU6ICdwbHVnaW4nLFxuICAgKiAgIHByb3BzOiB7XG4gICAqICAgICBwbHVnaW5OYW1lOiAnbXktcGx1Z2luLW5hbWUnLFxuICAgKiAgICAgbXlQYXJhbWV0ZXIxOiAneHl6JyxcbiAgICogICB9LFxuICAgKiAgIGluY2x1ZGVFbnZpcm9ubWVudDogdHJ1ZSB8IGZhbHNlLFxuICAgKiAgIGR1bW15VmFsdWU6ICd3aGF0LXRvLXJldHVybi1vbi10aGUtZmlyc3QtcGFzcycsXG4gICAqIH0pXG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJDb250ZXh0UHJvdmlkZXJBbHBoYShwbHVnaW5Qcm92aWRlck5hbWU6IHN0cmluZywgcHJvdmlkZXI6IENvbnRleHRQcm92aWRlclBsdWdpbikge1xuICAgIGlmICghaXNDb250ZXh0UHJvdmlkZXJQbHVnaW4ocHJvdmlkZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBPYmplY3QgeW91IGdhdmUgbWUgZG9lcyBub3QgbG9vayBsaWtlIGEgQ29udGV4dFByb3ZpZGVyUGx1Z2luOiAke2luc3BlY3QocHJvdmlkZXIpfWApO1xuICAgIH1cbiAgICB0aGlzLmNvbnRleHRQcm92aWRlclBsdWdpbnNbcGx1Z2luUHJvdmlkZXJOYW1lXSA9IHByb3ZpZGVyO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import type { StackDefinition } from '@aws-sdk/client-cloudformation';
2
+ import type { CloudFormationStack, ResourceMapping } from './cloudformation';
3
+ /**
4
+ * Generates a list of stack definitions to be sent to the CloudFormation API
5
+ * by applying each mapping to the corresponding stack template(s).
6
+ */
7
+ export declare function generateStackDefinitions(mappings: ResourceMapping[], deployedStacks: CloudFormationStack[]): StackDefinition[];
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateStackDefinitions = generateStackDefinitions;
4
+ const toolkit_error_1 = require("../../toolkit/toolkit-error");
5
+ /**
6
+ * Generates a list of stack definitions to be sent to the CloudFormation API
7
+ * by applying each mapping to the corresponding stack template(s).
8
+ */
9
+ function generateStackDefinitions(mappings, deployedStacks) {
10
+ const templates = Object.fromEntries(deployedStacks
11
+ .filter((s) => mappings.some((m) =>
12
+ // We only care about stacks that are part of the mappings
13
+ m.source.stack.stackName === s.stackName || m.destination.stack.stackName === s.stackName))
14
+ .map((s) => [s.stackName, JSON.parse(JSON.stringify(s.template))]));
15
+ mappings.forEach((mapping) => {
16
+ const sourceStackName = mapping.source.stack.stackName;
17
+ const sourceLogicalId = mapping.source.logicalResourceId;
18
+ const sourceTemplate = templates[sourceStackName];
19
+ const destinationStackName = mapping.destination.stack.stackName;
20
+ const destinationLogicalId = mapping.destination.logicalResourceId;
21
+ if (templates[destinationStackName] == null) {
22
+ // The API doesn't allow anything in the template other than the resources
23
+ // that are part of the mappings. So we need to create an empty template
24
+ // to start adding resources to.
25
+ templates[destinationStackName] = { Resources: {} };
26
+ }
27
+ const destinationTemplate = templates[destinationStackName];
28
+ // Do the move
29
+ destinationTemplate.Resources[destinationLogicalId] = sourceTemplate.Resources[sourceLogicalId];
30
+ delete sourceTemplate.Resources[sourceLogicalId];
31
+ });
32
+ // CloudFormation doesn't allow empty stacks
33
+ for (const [stackName, template] of Object.entries(templates)) {
34
+ if (Object.keys(template.Resources ?? {}).length === 0) {
35
+ throw new toolkit_error_1.ToolkitError(`Stack ${stackName} has no resources after refactor. You must add a resource to this stack. This resource can be a simple one, like a waitCondition resource type.`);
36
+ }
37
+ }
38
+ return Object.entries(templates).map(([stackName, template]) => ({
39
+ StackName: stackName,
40
+ TemplateBody: JSON.stringify(template),
41
+ }));
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsNERBNENDO0FBbERELCtEQUEyRDtBQUUzRDs7O0dBR0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxRQUEyQixFQUFFLGNBQXFDO0lBQ3pHLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ2xDLGNBQWM7U0FDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNaLFFBQVEsQ0FBQyxJQUFJLENBQ1gsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUNKLDBEQUEwRDtJQUMxRCxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FDNUYsQ0FDRjtTQUNBLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3JFLENBQUM7SUFFRixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDM0IsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3ZELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFDekQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWxELE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2pFLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztRQUNuRSxJQUFJLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzVDLDBFQUEwRTtZQUMxRSx3RUFBd0U7WUFDeEUsZ0NBQWdDO1lBQ2hDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3RELENBQUM7UUFDRCxNQUFNLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTVELGNBQWM7UUFDZCxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hHLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztJQUVILDRDQUE0QztJQUM1QyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzlELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxNQUFNLElBQUksNEJBQVksQ0FBQyxTQUFTLFNBQVMsaUpBQWlKLENBQUMsQ0FBQztRQUM5TCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvRCxTQUFTLEVBQUUsU0FBUztRQUNwQixZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7S0FDdkMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdGFja0RlZmluaXRpb24gfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvblN0YWNrLCBSZXNvdXJjZU1hcHBpbmcgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgbGlzdCBvZiBzdGFjayBkZWZpbml0aW9ucyB0byBiZSBzZW50IHRvIHRoZSBDbG91ZEZvcm1hdGlvbiBBUElcbiAqIGJ5IGFwcGx5aW5nIGVhY2ggbWFwcGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBzdGFjayB0ZW1wbGF0ZShzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlU3RhY2tEZWZpbml0aW9ucyhtYXBwaW5nczogUmVzb3VyY2VNYXBwaW5nW10sIGRlcGxveWVkU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10pOiBTdGFja0RlZmluaXRpb25bXSB7XG4gIGNvbnN0IHRlbXBsYXRlcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBkZXBsb3llZFN0YWNrc1xuICAgICAgLmZpbHRlcigocykgPT5cbiAgICAgICAgbWFwcGluZ3Muc29tZShcbiAgICAgICAgICAobSkgPT5cbiAgICAgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBzdGFja3MgdGhhdCBhcmUgcGFydCBvZiB0aGUgbWFwcGluZ3NcbiAgICAgICAgICAgIG0uc291cmNlLnN0YWNrLnN0YWNrTmFtZSA9PT0gcy5zdGFja05hbWUgfHwgbS5kZXN0aW5hdGlvbi5zdGFjay5zdGFja05hbWUgPT09IHMuc3RhY2tOYW1lLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLm1hcCgocykgPT4gW3Muc3RhY2tOYW1lLCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHMudGVtcGxhdGUpKV0pLFxuICApO1xuXG4gIG1hcHBpbmdzLmZvckVhY2goKG1hcHBpbmcpID0+IHtcbiAgICBjb25zdCBzb3VyY2VTdGFja05hbWUgPSBtYXBwaW5nLnNvdXJjZS5zdGFjay5zdGFja05hbWU7XG4gICAgY29uc3Qgc291cmNlTG9naWNhbElkID0gbWFwcGluZy5zb3VyY2UubG9naWNhbFJlc291cmNlSWQ7XG4gICAgY29uc3Qgc291cmNlVGVtcGxhdGUgPSB0ZW1wbGF0ZXNbc291cmNlU3RhY2tOYW1lXTtcblxuICAgIGNvbnN0IGRlc3RpbmF0aW9uU3RhY2tOYW1lID0gbWFwcGluZy5kZXN0aW5hdGlvbi5zdGFjay5zdGFja05hbWU7XG4gICAgY29uc3QgZGVzdGluYXRpb25Mb2dpY2FsSWQgPSBtYXBwaW5nLmRlc3RpbmF0aW9uLmxvZ2ljYWxSZXNvdXJjZUlkO1xuICAgIGlmICh0ZW1wbGF0ZXNbZGVzdGluYXRpb25TdGFja05hbWVdID09IG51bGwpIHtcbiAgICAgIC8vIFRoZSBBUEkgZG9lc24ndCBhbGxvdyBhbnl0aGluZyBpbiB0aGUgdGVtcGxhdGUgb3RoZXIgdGhhbiB0aGUgcmVzb3VyY2VzXG4gICAgICAvLyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBtYXBwaW5ncy4gU28gd2UgbmVlZCB0byBjcmVhdGUgYW4gZW1wdHkgdGVtcGxhdGVcbiAgICAgIC8vIHRvIHN0YXJ0IGFkZGluZyByZXNvdXJjZXMgdG8uXG4gICAgICB0ZW1wbGF0ZXNbZGVzdGluYXRpb25TdGFja05hbWVdID0geyBSZXNvdXJjZXM6IHt9IH07XG4gICAgfVxuICAgIGNvbnN0IGRlc3RpbmF0aW9uVGVtcGxhdGUgPSB0ZW1wbGF0ZXNbZGVzdGluYXRpb25TdGFja05hbWVdO1xuXG4gICAgLy8gRG8gdGhlIG1vdmVcbiAgICBkZXN0aW5hdGlvblRlbXBsYXRlLlJlc291cmNlc1tkZXN0aW5hdGlvbkxvZ2ljYWxJZF0gPSBzb3VyY2VUZW1wbGF0ZS5SZXNvdXJjZXNbc291cmNlTG9naWNhbElkXTtcbiAgICBkZWxldGUgc291cmNlVGVtcGxhdGUuUmVzb3VyY2VzW3NvdXJjZUxvZ2ljYWxJZF07XG4gIH0pO1xuXG4gIC8vIENsb3VkRm9ybWF0aW9uIGRvZXNuJ3QgYWxsb3cgZW1wdHkgc3RhY2tzXG4gIGZvciAoY29uc3QgW3N0YWNrTmFtZSwgdGVtcGxhdGVdIG9mIE9iamVjdC5lbnRyaWVzKHRlbXBsYXRlcykpIHtcbiAgICBpZiAoT2JqZWN0LmtleXModGVtcGxhdGUuUmVzb3VyY2VzID8/IHt9KS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYFN0YWNrICR7c3RhY2tOYW1lfSBoYXMgbm8gcmVzb3VyY2VzIGFmdGVyIHJlZmFjdG9yLiBZb3UgbXVzdCBhZGQgYSByZXNvdXJjZSB0byB0aGlzIHN0YWNrLiBUaGlzIHJlc291cmNlIGNhbiBiZSBhIHNpbXBsZSBvbmUsIGxpa2UgYSB3YWl0Q29uZGl0aW9uIHJlc291cmNlIHR5cGUuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRlbXBsYXRlcykubWFwKChbc3RhY2tOYW1lLCB0ZW1wbGF0ZV0pID0+ICh7XG4gICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgVGVtcGxhdGVCb2R5OiBKU09OLnN0cmluZ2lmeSh0ZW1wbGF0ZSksXG4gIH0pKTtcbn1cbiJdfQ==
@@ -1,8 +1,9 @@
1
1
  import type { TypedMapping } from '@aws-cdk/cloudformation-diff';
2
2
  import type { SdkProvider } from '../aws-auth/private';
3
3
  import type { CloudFormationStack } from './cloudformation';
4
- import { ResourceMapping, ResourceLocation } from './cloudformation';
4
+ import { ResourceLocation, ResourceMapping } from './cloudformation';
5
5
  import { type ExcludeList } from './exclude';
6
+ import type { MappingGroup } from '../../actions';
6
7
  export * from './exclude';
7
8
  /**
8
9
  * Represents a set of possible movements of a resource from one location
@@ -15,6 +16,7 @@ export declare class AmbiguityError extends Error {
15
16
  constructor(movements: ResourceMovement[]);
16
17
  paths(): [string[], string[]][];
17
18
  }
19
+ export declare function usePrescribedMappings(mappingGroups: MappingGroup[], sdkProvider: SdkProvider): Promise<ResourceMapping[]>;
18
20
  export declare function resourceMovements(before: CloudFormationStack[], after: CloudFormationStack[]): ResourceMovement[];
19
21
  export declare function ambiguousMovements(movements: ResourceMovement[]): ResourceMovement[];
20
22
  /**