aws-cdk 2.1000.2 → 2.1000.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_LICENSES +104 -3196
  3. package/build-info.json +2 -2
  4. package/db.json.gz +0 -0
  5. package/lib/api/aws-auth/account-cache.d.ts +0 -3
  6. package/lib/api/aws-auth/account-cache.js +1 -4
  7. package/lib/api/aws-auth/awscli-compatible.js +1 -1
  8. package/lib/api/aws-auth/credential-plugins.js +4 -4
  9. package/lib/api/aws-auth/sdk-logger.js +2 -2
  10. package/lib/api/aws-auth/sdk-provider.js +3 -3
  11. package/lib/api/aws-auth/sdk.js +3 -3
  12. package/lib/api/aws-auth/tracing.js +1 -1
  13. package/lib/api/bootstrap/bootstrap-environment.js +3 -3
  14. package/lib/api/bootstrap/deploy-bootstrap.js +1 -1
  15. package/lib/api/cxapp/cloud-assembly.js +3 -2
  16. package/lib/api/cxapp/cloud-executable.js +1 -1
  17. package/lib/api/cxapp/environments.js +1 -1
  18. package/lib/api/cxapp/exec.js +1 -1
  19. package/lib/api/deployments/asset-publishing.js +1 -1
  20. package/lib/api/deployments/assets.js +1 -1
  21. package/lib/api/deployments/cloudformation.d.ts +2 -2
  22. package/lib/api/deployments/cloudformation.js +7 -7
  23. package/lib/api/deployments/deploy-stack.d.ts +1 -1
  24. package/lib/api/deployments/deploy-stack.js +8 -8
  25. package/lib/api/deployments/deployments.d.ts +3 -3
  26. package/lib/api/deployments/deployments.js +12 -14
  27. package/lib/api/deployments/hotswap-deployments.js +3 -3
  28. package/lib/api/deployments/nested-stack-helpers.js +3 -3
  29. package/lib/api/environment/environment-access.js +3 -3
  30. package/lib/api/environment/environment-resources.js +3 -3
  31. package/lib/api/evaluate-cloudformation-template.js +2 -2
  32. package/lib/api/garbage-collection/garbage-collector.js +1 -1
  33. package/lib/api/hotswap/appsync-mapping-templates.js +2 -2
  34. package/lib/api/hotswap/common.d.ts +1 -1
  35. package/lib/api/hotswap/common.js +2 -2
  36. package/lib/api/hotswap/lambda-functions.js +5 -3
  37. package/lib/api/logs/find-cloudwatch-logs.js +3 -3
  38. package/lib/api/logs/index.d.ts +2 -0
  39. package/lib/api/logs/index.js +19 -0
  40. package/lib/api/resource-import/importer.d.ts +2 -2
  41. package/lib/api/resource-import/importer.js +1 -1
  42. package/lib/api/resource-import/migrator.js +2 -2
  43. package/lib/api/settings.js +1 -1
  44. package/lib/api/{util → stack-events}/display.js +1 -1
  45. package/lib/api/stack-events/index.d.ts +3 -0
  46. package/lib/api/stack-events/index.js +20 -0
  47. package/lib/api/{util/cloudformation → stack-events}/stack-activity-monitor.d.ts +2 -2
  48. package/lib/api/{util/cloudformation → stack-events}/stack-activity-monitor.js +4 -4
  49. package/lib/api/{util/cloudformation → stack-events}/stack-event-poller.d.ts +1 -1
  50. package/lib/api/{util/cloudformation → stack-events}/stack-event-poller.js +3 -3
  51. package/lib/api/{util/cloudformation → stack-events}/stack-status.js +1 -1
  52. package/lib/api/toolkit-info.js +3 -2
  53. package/lib/api/util/rwlock.js +1 -1
  54. package/lib/api/util/template-body-parameter.js +2 -2
  55. package/lib/api/work-graph/index.d.ts +3 -0
  56. package/lib/api/work-graph/index.js +20 -0
  57. package/lib/{util → api/work-graph}/work-graph-builder.d.ts +4 -1
  58. package/lib/api/work-graph/work-graph-builder.js +169 -0
  59. package/lib/api/work-graph/work-graph-types.js +13 -0
  60. package/lib/{util → api/work-graph}/work-graph.d.ts +9 -2
  61. package/lib/api/work-graph/work-graph.js +349 -0
  62. package/lib/cli/cdk-toolkit.d.ts +3 -3
  63. package/lib/cli/cdk-toolkit.js +19 -17
  64. package/lib/cli/cli-config.js +5 -5
  65. package/lib/cli/cli.js +2 -2
  66. package/lib/cli/parse-command-line-arguments.js +2 -2
  67. package/lib/cli/platform-warnings.js +1 -1
  68. package/lib/cli/user-input.d.ts +3 -10
  69. package/lib/cli/user-input.js +1 -1
  70. package/lib/commands/context.js +3 -3
  71. package/lib/commands/docs.js +1 -1
  72. package/lib/commands/doctor.js +1 -1
  73. package/lib/context-providers/ami.js +1 -1
  74. package/lib/context-providers/availability-zones.js +1 -1
  75. package/lib/context-providers/endpoint-service-availability-zones.js +1 -1
  76. package/lib/context-providers/hosted-zones.js +1 -1
  77. package/lib/context-providers/index.js +3 -3
  78. package/lib/context-providers/keys.js +1 -1
  79. package/lib/context-providers/load-balancers.js +1 -1
  80. package/lib/context-providers/security-groups.js +1 -1
  81. package/lib/context-providers/ssm-parameters.js +1 -1
  82. package/lib/context-providers/vpcs.js +1 -1
  83. package/lib/diff.js +1 -1
  84. package/lib/index.js +80105 -89787
  85. package/lib/init-hooks.js +3 -4
  86. package/lib/init-templates/.init-version.json +1 -1
  87. package/lib/init-templates/.recommended-feature-flags.json +2 -1
  88. package/lib/init.js +3 -3
  89. package/lib/legacy-exports-source.d.ts +1 -1
  90. package/lib/legacy-exports-source.js +2 -2
  91. package/lib/notices.js +5 -5
  92. package/lib/util/archive.js +3 -3
  93. package/lib/util/cloudformation.js +10 -0
  94. package/lib/util/directories.js +3 -2
  95. package/lib/util/format-error.js +22 -0
  96. package/lib/util/index.d.ts +11 -1
  97. package/lib/util/index.js +12 -2
  98. package/lib/util/objects.js +1 -1
  99. package/lib/util/parallel.js +7 -3
  100. package/lib/{serialize.js → util/serialize.js} +3 -3
  101. package/lib/util/version-range.js +1 -1
  102. package/lib/util/yaml-cfn.js +4 -2
  103. package/package.json +17 -16
  104. package/lib/util/error.js +0 -22
  105. package/lib/util/validate-notification-arn.js +0 -10
  106. package/lib/util/work-graph-builder.js +0 -167
  107. package/lib/util/work-graph-types.js +0 -14
  108. package/lib/util/work-graph.js +0 -344
  109. /package/lib/api/{util → stack-events}/display.d.ts +0 -0
  110. /package/lib/api/{util/cloudformation → stack-events}/stack-status.d.ts +0 -0
  111. /package/lib/{util → api/work-graph}/work-graph-types.d.ts +0 -0
  112. /package/lib/{util → cli}/tables.d.ts +0 -0
  113. /package/lib/{util → cli}/tables.js +0 -0
  114. /package/lib/util/{validate-notification-arn.d.ts → cloudformation.d.ts} +0 -0
  115. /package/lib/util/{error.d.ts → format-error.d.ts} +0 -0
  116. /package/lib/{serialize.d.ts → util/serialize.d.ts} +0 -0
  117. /package/lib/{api/util → util}/string-manipulation.d.ts +0 -0
  118. /package/lib/{api/util → util}/string-manipulation.js +0 -0
@@ -34,7 +34,7 @@ const tracing_1 = require("./tracing");
34
34
  const user_agent_1 = require("./user-agent");
35
35
  const logging_1 = require("../../logging");
36
36
  const error_1 = require("../../toolkit/error");
37
- const error_2 = require("../../util/error");
37
+ const format_error_1 = require("../../util/format-error");
38
38
  /**
39
39
  * Base functionality of SDK without credential fetching
40
40
  */
@@ -289,7 +289,7 @@ let SDK = SDK_1 = class SDK {
289
289
  return upload.done();
290
290
  }
291
291
  catch (e) {
292
- throw new error_1.AuthenticationError(`Upload failed: ${(0, error_2.formatErrorMessage)(e)}`);
292
+ throw new error_1.AuthenticationError(`Upload failed: ${(0, format_error_1.formatErrorMessage)(e)}`);
293
293
  }
294
294
  },
295
295
  };
@@ -363,4 +363,4 @@ exports.SDK = SDK = SDK_1 = __decorate([
363
363
  tracing_1.traceMemberMethods
364
364
  ], SDK);
365
365
  const CURRENT_ACCOUNT_KEY = Symbol('current_account_key');
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSw0REFvQmlDO0FBQ2pDLDBFQW1Gd0M7QUFDeEMsNEVBUXlDO0FBQ3pDLGdFQUttQztBQUNuQyxvREE2QjZCO0FBQzdCLG9EQTZCNkI7QUFDN0Isb0RBYTZCO0FBQzdCLGdHQWVtRDtBQUNuRCxvREFXNkI7QUFDN0Isb0RBUTZCO0FBQzdCLDBEQWtCZ0M7QUFDaEMsOERBV2tDO0FBQ2xDLGtEQTRCNEI7QUFDNUIsNEVBS3lDO0FBQ3pDLG9EQUs2QjtBQUM3QixvREFLNkI7QUFDN0Isb0RBQTBFO0FBQzFFLHNEQUE4QztBQUM5QyxxRUFBMEU7QUFHMUUsbURBQTZEO0FBRTdELG1EQUF3RDtBQUN4RCxxQ0FBdUM7QUFFdkMsdUNBQStDO0FBQy9DLDZDQUFtRDtBQUNuRCwyQ0FBc0M7QUFDdEMsK0NBQTBEO0FBQzFELDRDQUFzRDtBQXFNdEQ7O0dBRUc7QUFFSSxJQUFNLEdBQUcsV0FBVCxNQUFNLEdBQUc7SUF1QmQsWUFDbUIsWUFBMkMsRUFDNUQsTUFBYyxFQUNkLGNBQXNDLEVBQ3RDLE1BQWU7UUFIRSxpQkFBWSxHQUFaLFlBQVksQ0FBK0I7UUFmOUQ7O1dBRUc7UUFDYyxxQkFBZ0IsR0FBRyxJQUFJLG9DQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFdEc7Ozs7OztXQU1HO1FBQ0ssMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBUXBDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixNQUFNO1lBQ04sV0FBVyxFQUFFLFlBQVk7WUFDekIsY0FBYztZQUNkLGFBQWEsRUFBRSxJQUFJLG9DQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJ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TUFBTSxJQUFJLDJCQUFtQixDQUFDLGlDQUFpQyxDQUFDLENBQUM7Z0JBQ25FLENBQUM7Z0JBQ0QsSUFBQSxlQUFLLEVBQUMscUJBQXFCLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBRXhDLDREQUE0RDtnQkFDNUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztnQkFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQjtRQUM5QixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9CLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxzQkFBUyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLHFDQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztJQUNwQyxDQUFDOztBQTljVSxrQkFBRztBQUNVLGdCQUFZLEdBQUcsSUFBSSxxQ0FBcUIsRUFBRSxBQUE5QixDQUErQjtjQUR4RCxHQUFHO0lBRGYsNEJBQWtCO0dBQ04sR0FBRyxDQStjZjtBQUVELE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBTeW5jQ2xpZW50LFxuICBGdW5jdGlvbkNvbmZpZ3VyYXRpb24sXG4gIEdldFNjaGVtYUNyZWF0aW9uU3RhdHVzQ29tbWFuZCxcbiAgdHlwZSBHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmRPdXRwdXQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgcGFnaW5hdGVMaXN0RnVuY3Rpb25zLFxuICBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZCxcbiAgdHlwZSBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFN0YXJ0U2NoZW1hQ3JlYXRpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVBcGlLZXlDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUFwaUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVBcGlLZXlDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVSZXNvbHZlckNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlUmVzb2x2ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlUmVzb2x2ZXJDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtYXBwc3luYyc7XG5pbXBvcnQge1xuICBDbG91ZEZvcm1hdGlvbkNsaWVudCxcbiAgQ29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmQsXG4gIENvbnRpbnVlVXBkYXRlUm9sbGJhY2tDb21tYW5kSW5wdXQsXG4gIENvbnRpbnVlVXBkYXRlUm9sbGJhY2tDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVDaGFuZ2VTZXRDb21tYW5kLFxuICB0eXBlIENyZWF0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVTdGFja0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlU3RhY2tDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlU3RhY2tDb21tYW5kT3V0cHV0LFxuICBEZWxldGVDaGFuZ2VTZXRDb21tYW5kLFxuICB0eXBlIERlbGV0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBEZWxldGVTdGFja0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlU3RhY2tDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlU3RhY2tDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUNoYW5nZVNldENvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJlc291cmNlU2NhbkNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZElucHV0LFxuICBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmQsXG4gIERlc2NyaWJlU3RhY2tSZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlU3RhY2tSZXNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVN0YWNrc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVTdGFja3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVTdGFja3NDb21tYW5kT3V0cHV0LFxuICBFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZCxcbiAgdHlwZSBFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0LFxuICB0eXBlIEV4ZWN1dGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0LFxuICBHZXRHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgR2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBHZXRUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgR2V0VGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0VGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBHZXRUZW1wbGF0ZVN1bW1hcnlDb21tYW5kLFxuICB0eXBlIEdldFRlbXBsYXRlU3VtbWFyeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRUZW1wbGF0ZVN1bW1hcnlDb21tYW5kT3V0cHV0LFxuICBMaXN0RXhwb3J0c0NvbW1hbmQsXG4gIHR5cGUgTGlzdEV4cG9ydHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEV4cG9ydHNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VTY2FuUmVsYXRlZFJlc291cmNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VTY2FuUmVzb3VyY2VzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmVzb3VyY2VTY2FuUmVzb3VyY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VTY2Fuc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFJlc291cmNlU2NhbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFJlc291cmNlU2NhbnNDb21tYW5kT3V0cHV0LFxuICB0eXBlIExpc3RTdGFja1Jlc291cmNlc0NvbW1hbmRJbnB1dCxcbiAgTGlzdFN0YWNrc0NvbW1hbmQsXG4gIExpc3RTdGFja3NDb21tYW5kSW5wdXQsXG4gIExpc3RTdGFja3NDb21tYW5kT3V0cHV0LFxuICBwYWdpbmF0ZUxpc3RTdGFja1Jlc291cmNlcyxcbiAgUm9sbGJhY2tTdGFja0NvbW1hbmQsXG4gIFJvbGxiYWNrU3RhY2tDb21tYW5kSW5wdXQsXG4gIFJvbGxiYWNrU3RhY2tDb21tYW5kT3V0cHV0LFxuICBTdGFja1Jlc291cmNlU3VtbWFyeSxcbiAgU3RhcnRSZXNvdXJjZVNjYW5Db21tYW5kLFxuICB0eXBlIFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZElucHV0LFxuICB0eXBlIFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlU3RhY2tDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVN0YWNrQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVN0YWNrQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZE91dHB1dCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7XG4gIENsb3VkV2F0Y2hMb2dzQ2xpZW50LFxuICBEZXNjcmliZUxvZ0dyb3Vwc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVMb2dHcm91cHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVMb2dHcm91cHNDb21tYW5kT3V0cHV0LFxuICBGaWx0ZXJMb2dFdmVudHNDb21tYW5kLFxuICBGaWx0ZXJMb2dFdmVudHNDb21tYW5kSW5wdXQsXG4gIEZpbHRlckxvZ0V2ZW50c0NvbW1hbmRPdXRwdXQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZHdhdGNoLWxvZ3MnO1xuaW1wb3J0IHtcbiAgQ29kZUJ1aWxkQ2xpZW50LFxuICBVcGRhdGVQcm9qZWN0Q29tbWFuZCxcbiAgdHlwZSBVcGRhdGVQcm9qZWN0Q29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVByb2plY3RDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtY29kZWJ1aWxkJztcbmltcG9ydCB7XG4gIERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVBdmFpbGFiaWxpdHlab25lc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlSW1hZ2VzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUltYWdlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUluc3RhbmNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUluc3RhbmNlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVSb3V0ZVRhYmxlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlU2VjdXJpdHlHcm91cHNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlU2VjdXJpdHlHcm91cHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlU3VibmV0c0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVTdWJuZXRzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlU3VibmV0c0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVWcGNFbmRwb2ludFNlcnZpY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVnBjc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVWcGNzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVnBjc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVWcG5HYXRld2F5c0NvbW1hbmRPdXRwdXQsXG4gIEVDMkNsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVjMic7XG5pbXBvcnQge1xuICBCYXRjaERlbGV0ZUltYWdlQ29tbWFuZCxcbiAgQmF0Y2hEZWxldGVJbWFnZUNvbW1hbmRJbnB1dCxcbiAgQmF0Y2hEZWxldGVJbWFnZUNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kLFxuICB0eXBlIENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlUmVwb3NpdG9yeUNvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlSW1hZ2VzQ29tbWFuZCBhcyBFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVJbWFnZXNDb21tYW5kSW5wdXQgYXMgRUNSRGVzY3JpYmVJbWFnZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVJbWFnZXNDb21tYW5kT3V0cHV0IGFzIEVDUkRlc2NyaWJlSW1hZ2VzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSZXBvc2l0b3JpZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZE91dHB1dCxcbiAgRUNSQ2xpZW50LFxuICBHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kLFxuICB0eXBlIEdldEF1dGhvcml6YXRpb25Ub2tlbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kT3V0cHV0LFxuICBMaXN0SW1hZ2VzQ29tbWFuZCxcbiAgTGlzdEltYWdlc0NvbW1hbmRJbnB1dCxcbiAgTGlzdEltYWdlc0NvbW1hbmRPdXRwdXQsXG4gIFB1dEltYWdlQ29tbWFuZCxcbiAgUHV0SW1hZ2VDb21tYW5kSW5wdXQsXG4gIFB1dEltYWdlQ29tbWFuZE91dHB1dCxcbiAgUHV0SW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIFB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgQmF0Y2hHZXRJbWFnZUNvbW1hbmRJbnB1dCxcbiAgQmF0Y2hHZXRJbWFnZUNvbW1hbmQsXG4gIEJhdGNoR2V0SW1hZ2VDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWNyJztcbmltcG9ydCB7XG4gIERlc2NyaWJlU2VydmljZXNDb21tYW5kSW5wdXQsXG4gIEVDU0NsaWVudCxcbiAgTGlzdENsdXN0ZXJzQ29tbWFuZCxcbiAgdHlwZSBMaXN0Q2x1c3RlcnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdENsdXN0ZXJzQ29tbWFuZE91dHB1dCxcbiAgUmVnaXN0ZXJUYXNrRGVmaW5pdGlvbkNvbW1hbmQsXG4gIFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUmVnaXN0ZXJUYXNrRGVmaW5pdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZVNlcnZpY2VDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVNlcnZpY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlU2VydmljZUNvbW1hbmRPdXRwdXQsXG4gIHdhaXRVbnRpbFNlcnZpY2VzU3RhYmxlLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWNzJztcbmltcG9ydCB7XG4gIERlc2NyaWJlTGlzdGVuZXJzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVGFnc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVGFnc0NvbW1hbmRPdXRwdXQsXG4gIEVsYXN0aWNMb2FkQmFsYW5jaW5nVjJDbGllbnQsXG4gIExpc3RlbmVyLFxuICBMb2FkQmFsYW5jZXIsXG4gIHBhZ2luYXRlRGVzY3JpYmVMaXN0ZW5lcnMsXG4gIHBhZ2luYXRlRGVzY3JpYmVMb2FkQmFsYW5jZXJzLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWxhc3RpYy1sb2FkLWJhbGFuY2luZy12Mic7XG5pbXBvcnQge1xuICBDcmVhdGVQb2xpY3lDb21tYW5kLFxuICB0eXBlIENyZWF0ZVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRQb2xpY3lDb21tYW5kLFxuICB0eXBlIEdldFBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRSb2xlQ29tbWFuZCxcbiAgdHlwZSBHZXRSb2xlQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFJvbGVDb21tYW5kT3V0cHV0LFxuICBJQU1DbGllbnQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1pYW0nO1xuaW1wb3J0IHtcbiAgRGVzY3JpYmVLZXlDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlS2V5Q29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlS2V5Q29tbWFuZE91dHB1dCxcbiAgS01TQ2xpZW50LFxuICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQta21zJztcbmltcG9ydCB7XG4gIEludm9rZUNvbW1hbmQsXG4gIHR5cGUgSW52b2tlQ29tbWFuZElucHV0LFxuICB0eXBlIEludm9rZUNvbW1hbmRPdXRwdXQsXG4gIExhbWJkYUNsaWVudCxcbiAgUHVibGlzaFZlcnNpb25Db21tYW5kLFxuICB0eXBlIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQWxpYXNDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgd2FpdFVudGlsRnVuY3Rpb25VcGRhdGVkVjIsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1sYW1iZGEnO1xuaW1wb3J0IHtcbiAgR2V0SG9zdGVkWm9uZUNvbW1hbmQsXG4gIHR5cGUgR2V0SG9zdGVkWm9uZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRIb3N0ZWRab25lQ29tbWFuZE91dHB1dCxcbiAgTGlzdEhvc3RlZFpvbmVzQnlOYW1lQ29tbWFuZCxcbiAgdHlwZSBMaXN0SG9zdGVkWm9uZXNCeU5hbWVDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEhvc3RlZFpvbmVzQnlOYW1lQ29tbWFuZE91dHB1dCxcbiAgTGlzdEhvc3RlZFpvbmVzQ29tbWFuZCxcbiAgdHlwZSBMaXN0SG9zdGVkWm9uZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEhvc3RlZFpvbmVzQ29tbWFuZE91dHB1dCxcbiAgUm91dGU1M0NsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXJvdXRlLTUzJztcbmltcG9ydCB7XG4gIHR5cGUgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVPYmplY3RzQ29tbWFuZCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kLFxuICBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0LFxuICBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0TG9jYXRpb25Db21tYW5kLFxuICB0eXBlIEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0Q29tbWFuZCxcbiAgdHlwZSBHZXRPYmplY3RDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0LFxuICBMaXN0T2JqZWN0c1YyQ29tbWFuZCxcbiAgdHlwZSBMaXN0T2JqZWN0c1YyQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RPYmplY3RzVjJDb21tYW5kT3V0cHV0LFxuICB0eXBlIFB1dE9iamVjdENvbW1hbmRJbnB1dCxcbiAgUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0LFxuICBTM0NsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7XG4gIEdldFNlY3JldFZhbHVlQ29tbWFuZCxcbiAgdHlwZSBHZXRTZWNyZXRWYWx1ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRTZWNyZXRWYWx1ZUNvbW1hbmRPdXRwdXQsXG4gIFNlY3JldHNNYW5hZ2VyQ2xpZW50LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyJztcbmltcG9ydCB7XG4gIFNGTkNsaWVudCxcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZCxcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZElucHV0LFxuICBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2ZuJztcbmltcG9ydCB7XG4gIEdldFBhcmFtZXRlckNvbW1hbmQsXG4gIHR5cGUgR2V0UGFyYW1ldGVyQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFBhcmFtZXRlckNvbW1hbmRPdXRwdXQsXG4gIFNTTUNsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNzbSc7XG5pbXBvcnQgeyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQsIFNUU0NsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zdHMnO1xuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSAnQGF3cy1zZGsvbGliLXN0b3JhZ2UnO1xuaW1wb3J0IHsgZ2V0RW5kcG9pbnRGcm9tSW5zdHJ1Y3Rpb25zIH0gZnJvbSAnQHNtaXRoeS9taWRkbGV3YXJlLWVuZHBvaW50JztcbmltcG9ydCB0eXBlIHsgTm9kZUh0dHBIYW5kbGVyT3B0aW9ucyB9IGZyb20gJ0BzbWl0aHkvbm9kZS1odHRwLWhhbmRsZXInO1xuaW1wb3J0IHsgQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIsIExvZ2dlciB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3kgfSBmcm9tICdAc21pdGh5L3V0aWwtcmV0cnknO1xuaW1wb3J0IHsgV2FpdGVyUmVzdWx0IH0gZnJvbSAnQHNtaXRoeS91dGlsLXdhaXRlcic7XG5pbXBvcnQgeyBBY2NvdW50QWNjZXNzS2V5Q2FjaGUgfSBmcm9tICcuL2FjY291bnQtY2FjaGUnO1xuaW1wb3J0IHsgY2FjaGVkQXN5bmMgfSBmcm9tICcuL2NhY2hlZCc7XG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSAnLi9zZGstcHJvdmlkZXInO1xuaW1wb3J0IHsgdHJhY2VNZW1iZXJNZXRob2RzIH0gZnJvbSAnLi90cmFjaW5nJztcbmltcG9ydCB7IGRlZmF1bHRDbGlVc2VyQWdlbnQgfSBmcm9tICcuL3VzZXItYWdlbnQnO1xuaW1wb3J0IHsgZGVidWcgfSBmcm9tICcuLi8uLi9sb2dnaW5nJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uRXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L2Vycm9yJztcbmltcG9ydCB7IGZvcm1hdEVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWwvZXJyb3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIFMzQ2xpZW50T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZiBBUElzIGFyZSB1c2VkIHRoYXQgcmVxdWlyZSBNRDUgY2hlY2tzdW1zLlxuICAgKlxuICAgKiBTb21lIFMzIEFQSXMgaW4gU0RLdjIgaGF2ZSBhIGJ1ZyB0aGF0IGFsd2F5cyByZXF1aXJlcyB0aGVtIHRvIHVzZSBhIE1ENSBjaGVja3N1bS5cbiAgICogVGhlc2UgQVBJcyBhcmUgbm90IGdvaW5nIHRvIGJlIHN1cHBvcnRlZCBpbiBhIEZJUFMgZW52aXJvbm1lbnQuXG4gICAqL1xuICBuZWVkc01kNUNoZWNrc3Vtcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQWRkaXRpb25hbCBTREsgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2RrT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGRlc2NyaXB0aXZlIHN0cmluZ3MgdGhhdCBpbmRpY2F0ZSB3aGVyZSB0aGUgXCJBc3N1bWVSb2xlXCIgY3JlZGVudGlhbHMgYXJlIGNvbWluZyBmcm9tXG4gICAqXG4gICAqIFdpbGwgYmUgcHJpbnRlZCBpbiBhbiBlcnJvciBtZXNzYWdlIHRvIGhlbHAgdXNlcnMgZGlhZ25vc2UgYXV0aCBwcm9ibGVtcy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVDcmVkZW50aWFsc1NvdXJjZURlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vLyBUT0RPOiBzdGlsbCBzb21lIGNsZWFudXAgaGVyZS4gTWFrZSB0aGUgcGFnaW5hdGlvbiBmdW5jdGlvbnMgZG8gYWxsIHRoZSB3b3JrIGhlcmUgaW5zdGVhZCBvZiBpbiBpbmRpdmlkdWFsIHBhY2thZ2VzLlxuLy8gQWxzbyBhZGQgYXN5bmMvYXdhaXQuIERvZXMgdGhhdCBhY3R1YWxseSBtYXR0ZXIgaW4gdGhpcyBjb250ZXh0PyBGaW5kIG91dCBhbmQgdXBkYXRlIGFjY29yZGluZ2x5LlxuXG4vLyBBbHNvIGFkZCBub3RlcyB0byB0aGUgUFIgYWJvdXQgd2h5IHlvdSBpbXBvcnRlZCBldmVyeXRoaW5nIGluZGl2aWR1YWxseSBhbmQgdXNlZCAndHlwZScgc28gcmV2aWV3ZXJzIGRvbid0IGhhdmUgdG8gYXNrLlxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYXRpb25PcHRpb25zIHtcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIGNyZWRlbnRpYWxzOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlcjtcbiAgcmVxdWVzdEhhbmRsZXI6IE5vZGVIdHRwSGFuZGxlck9wdGlvbnM7XG4gIHJldHJ5U3RyYXRlZ3k6IENvbmZpZ3VyZWRSZXRyeVN0cmF0ZWd5O1xuICBjdXN0b21Vc2VyQWdlbnQ6IHN0cmluZztcbiAgbG9nZ2VyPzogTG9nZ2VyO1xuICBzM0Rpc2FibGVCb2R5U2lnbmluZz86IGJvb2xlYW47XG4gIGNvbXB1dGVDaGVja3N1bXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBcHBTeW5jQ2xpZW50IHtcbiAgZ2V0U2NoZW1hQ3JlYXRpb25TdGF0dXMoaW5wdXQ6IEdldFNjaGVtYUNyZWF0aW9uU3RhdHVzQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmRPdXRwdXQ+O1xuICBzdGFydFNjaGVtYUNyZWF0aW9uKGlucHV0OiBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZUFwaUtleShpbnB1dDogVXBkYXRlQXBpS2V5Q29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVBcGlLZXlDb21tYW5kT3V0cHV0PjtcbiAgdXBkYXRlRnVuY3Rpb24oaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVGdW5jdGlvbkNvbW1hbmRPdXRwdXQ+O1xuICB1cGRhdGVSZXNvbHZlcihpbnB1dDogVXBkYXRlUmVzb2x2ZXJDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVJlc29sdmVyQ29tbWFuZE91dHB1dD47XG4gIC8vIFBhZ2luYXRpb24gZnVuY3Rpb25zXG4gIGxpc3RGdW5jdGlvbnMoaW5wdXQ6IExpc3RGdW5jdGlvbnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPEZ1bmN0aW9uQ29uZmlndXJhdGlvbltdPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ2xvdWRGb3JtYXRpb25DbGllbnQge1xuICBjb250aW51ZVVwZGF0ZVJvbGxiYWNrKGlucHV0OiBDb250aW51ZVVwZGF0ZVJvbGxiYWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxDb250aW51ZVVwZGF0ZVJvbGxiYWNrQ29tbWFuZE91dHB1dD47XG4gIGNyZWF0ZUNoYW5nZVNldChpbnB1dDogQ3JlYXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0PjtcbiAgY3JlYXRlR2VuZXJhdGVkVGVtcGxhdGUoaW5wdXQ6IENyZWF0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+O1xuICBjcmVhdGVTdGFjayhpbnB1dDogQ3JlYXRlU3RhY2tDb21tYW5kSW5wdXQpOiBQcm9taXNlPENyZWF0ZVN0YWNrQ29tbWFuZE91dHB1dD47XG4gIGRlbGV0ZUNoYW5nZVNldChpbnB1dDogRGVsZXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0PjtcbiAgZGVsZXRlR2VuZXJhdGVkVGVtcGxhdGUoaW5wdXQ6IERlbGV0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+O1xuICBkZWxldGVTdGFjayhpbnB1dDogRGVsZXRlU3RhY2tDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZVN0YWNrQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlQ2hhbmdlU2V0KGlucHV0OiBEZXNjcmliZUNoYW5nZVNldENvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVHZW5lcmF0ZWRUZW1wbGF0ZShcbiAgICBpbnB1dDogRGVzY3JpYmVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgKTogUHJvbWlzZTxEZXNjcmliZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlUmVzb3VyY2VTY2FuKGlucHV0OiBEZXNjcmliZVJlc291cmNlU2NhbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVTdGFja3MoaW5wdXQ6IERlc2NyaWJlU3RhY2tzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVN0YWNrc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVN0YWNrUmVzb3VyY2VzKGlucHV0OiBEZXNjcmliZVN0YWNrUmVzb3VyY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVN0YWNrUmVzb3VyY2VzQ29tbWFuZE91dHB1dD47XG4gIGV4ZWN1dGVDaGFuZ2VTZXQoaW5wdXQ6IEV4ZWN1dGVDaGFuZ2VTZXRDb21tYW5kSW5wdXQpOiBQcm9taXNlPEV4ZWN1dGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0PjtcbiAgZ2V0R2VuZXJhdGVkVGVtcGxhdGUoaW5wdXQ6IEdldEdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+O1xuICBnZXRUZW1wbGF0ZShpbnB1dDogR2V0VGVtcGxhdGVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFRlbXBsYXRlQ29tbWFuZE91dHB1dD47XG4gIGdldFRlbXBsYXRlU3VtbWFyeShpbnB1dDogR2V0VGVtcGxhdGVTdW1tYXJ5Q29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRUZW1wbGF0ZVN1bW1hcnlDb21tYW5kT3V0cHV0PjtcbiAgbGlzdEV4cG9ydHMoaW5wdXQ6IExpc3RFeHBvcnRzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0RXhwb3J0c0NvbW1hbmRPdXRwdXQ+O1xuICBsaXN0UmVzb3VyY2VTY2FuUmVsYXRlZFJlc291cmNlcyhcbiAgICBpbnB1dDogTGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gICk6IFByb21pc2U8TGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXNDb21tYW5kT3V0cHV0PjtcbiAgbGlzdFJlc291cmNlU2NhblJlc291cmNlcyhcbiAgICBpbnB1dDogTGlzdFJlc291cmNlU2NhblJlc291cmNlc0NvbW1hbmRJbnB1dCxcbiAgKTogUHJvbWlzZTxMaXN0UmVzb3VyY2VTY2FuUmVzb3VyY2VzQ29tbWFuZE91dHB1dD47XG4gIGxpc3RSZXNvdXJjZVNjYW5zKGlucHV0PzogTGlzdFJlc291cmNlU2NhbnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RSZXNvdXJjZVNjYW5zQ29tbWFuZE91dHB1dD47XG4gIGxpc3RTdGFja3MoaW5wdXQ6IExpc3RTdGFja3NDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RTdGFja3NDb21tYW5kT3V0cHV0PjtcbiAgcm9sbGJhY2tTdGFjayhpbnB1dDogUm9sbGJhY2tTdGFja0NvbW1hbmRJbnB1dCk6IFByb21pc2U8Um9sbGJhY2tTdGFja0NvbW1hbmRPdXRwdXQ+O1xuICBzdGFydFJlc291cmNlU2NhbihpbnB1dDogU3RhcnRSZXNvdXJjZVNjYW5Db21tYW5kSW5wdXQpOiBQcm9taXNlPFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZVN0YWNrKGlucHV0OiBVcGRhdGVTdGFja0NvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlU3RhY2tDb21tYW5kT3V0cHV0PjtcbiAgdXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uKFxuICAgIGlucHV0OiBVcGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb25Db21tYW5kSW5wdXQsXG4gICk6IFByb21pc2U8VXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZE91dHB1dD47XG4gIC8vIFBhZ2luYXRpb24gZnVuY3Rpb25zXG4gIGRlc2NyaWJlU3RhY2tFdmVudHMoaW5wdXQ6IERlc2NyaWJlU3RhY2tFdmVudHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlU3RhY2tFdmVudHNDb21tYW5kT3V0cHV0PjtcbiAgbGlzdFN0YWNrUmVzb3VyY2VzKGlucHV0OiBMaXN0U3RhY2tSZXNvdXJjZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPFN0YWNrUmVzb3VyY2VTdW1tYXJ5W10+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDbG91ZFdhdGNoTG9nc0NsaWVudCB7XG4gIGRlc2NyaWJlTG9nR3JvdXBzKGlucHV0OiBEZXNjcmliZUxvZ0dyb3Vwc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVMb2dHcm91cHNDb21tYW5kT3V0cHV0PjtcbiAgZmlsdGVyTG9nRXZlbnRzKGlucHV0OiBGaWx0ZXJMb2dFdmVudHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPEZpbHRlckxvZ0V2ZW50c0NvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb2RlQnVpbGRDbGllbnQge1xuICB1cGRhdGVQcm9qZWN0KGlucHV0OiBVcGRhdGVQcm9qZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVQcm9qZWN0Q29tbWFuZE91dHB1dD47XG59XG5leHBvcnQgaW50ZXJmYWNlIElFQzJDbGllbnQge1xuICBkZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzKFxuICAgIGlucHV0OiBEZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVJbWFnZXMoaW5wdXQ6IERlc2NyaWJlSW1hZ2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZUluc3RhbmNlcyhpbnB1dDogRGVzY3JpYmVJbnN0YW5jZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlUm91dGVUYWJsZXMoaW5wdXQ6IERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVTZWN1cml0eUdyb3VwcyhpbnB1dDogRGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVN1Ym5ldHMoaW5wdXQ6IERlc2NyaWJlU3VibmV0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdWJuZXRzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlcyhcbiAgICBpbnB1dDogRGVzY3JpYmVWcGNFbmRwb2ludFNlcnZpY2VzQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVZwY3MoaW5wdXQ6IERlc2NyaWJlVnBjc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVWcGNzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlVnBuR2F0ZXdheXMoaW5wdXQ6IERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRUNSQ2xpZW50IHtcbiAgYmF0Y2hEZWxldGVJbWFnZShpbnB1dDogQmF0Y2hEZWxldGVJbWFnZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8QmF0Y2hEZWxldGVJbWFnZUNvbW1hbmRPdXRwdXQ+O1xuICBiYXRjaEdldEltYWdlKGlucHV0OiBCYXRjaEdldEltYWdlQ29tbWFuZElucHV0KTogUHJvbWlzZTxCYXRjaEdldEltYWdlQ29tbWFuZE91dHB1dD47XG4gIGNyZWF0ZVJlcG9zaXRvcnkoaW5wdXQ6IENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kSW5wdXQpOiBQcm9taXNlPENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVJbWFnZXMoaW5wdXQ6IEVDUkRlc2NyaWJlSW1hZ2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVJlcG9zaXRvcmllcyhpbnB1dDogRGVzY3JpYmVSZXBvc2l0b3JpZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZE91dHB1dD47XG4gIGdldEF1dGhvcml6YXRpb25Ub2tlbihpbnB1dDogR2V0QXV0aG9yaXphdGlvblRva2VuQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kT3V0cHV0PjtcbiAgbGlzdEltYWdlcyhpbnB1dDogTGlzdEltYWdlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEltYWdlc0NvbW1hbmRPdXRwdXQ+O1xuICBwdXRJbWFnZShpbnB1dDogUHV0SW1hZ2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPFB1dEltYWdlQ29tbWFuZE91dHB1dD47XG4gIHB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uKFxuICAgIGlucHV0OiBQdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgKTogUHJvbWlzZTxQdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFQ1NDbGllbnQge1xuICBsaXN0Q2x1c3RlcnMoaW5wdXQ6IExpc3RDbHVzdGVyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdENsdXN0ZXJzQ29tbWFuZE91dHB1dD47XG4gIHJlZ2lzdGVyVGFza0RlZmluaXRpb24oaW5wdXQ6IFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kT3V0cHV0PjtcbiAgdXBkYXRlU2VydmljZShpbnB1dDogVXBkYXRlU2VydmljZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlU2VydmljZUNvbW1hbmRPdXRwdXQ+O1xuICAvLyBXYWl0ZXJzXG4gIHdhaXRVbnRpbFNlcnZpY2VzU3RhYmxlKGlucHV0OiBEZXNjcmliZVNlcnZpY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxXYWl0ZXJSZXN1bHQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFbGFzdGljTG9hZEJhbGFuY2luZ1YyQ2xpZW50IHtcbiAgZGVzY3JpYmVMaXN0ZW5lcnMoaW5wdXQ6IERlc2NyaWJlTGlzdGVuZXJzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZUxvYWRCYWxhbmNlcnMoaW5wdXQ6IERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlVGFncyhpbnB1dDogRGVzY3JpYmVUYWdzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVRhZ3NDb21tYW5kT3V0cHV0PjtcbiAgLy8gUGFnaW5hdGlvblxuICBwYWdpbmF0ZURlc2NyaWJlTGlzdGVuZXJzKGlucHV0OiBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdGVuZXJbXT47XG4gIHBhZ2luYXRlRGVzY3JpYmVMb2FkQmFsYW5jZXJzKGlucHV0OiBEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExvYWRCYWxhbmNlcltdPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSUFNQ2xpZW50IHtcbiAgY3JlYXRlUG9saWN5KGlucHV0OiBDcmVhdGVQb2xpY3lDb21tYW5kSW5wdXQpOiBQcm9taXNlPENyZWF0ZVBvbGljeUNvbW1hbmRPdXRwdXQ+O1xuICBnZXRQb2xpY3koaW5wdXQ6IEdldFBvbGljeUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0UG9saWN5Q29tbWFuZE91dHB1dD47XG4gIGdldFJvbGUoaW5wdXQ6IEdldFJvbGVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFJvbGVDb21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJS01TQ2xpZW50IHtcbiAgZGVzY3JpYmVLZXkoaW5wdXQ6IERlc2NyaWJlS2V5Q29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUtleUNvbW1hbmRPdXRwdXQ+O1xuICBsaXN0QWxpYXNlcyhpbnB1dDogTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RBbGlhc2VzQ29tbWFuZE91dHB1dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxhbWJkYUNsaWVudCB7XG4gIGludm9rZUNvbW1hbmQoaW5wdXQ6IEludm9rZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8SW52b2tlQ29tbWFuZE91dHB1dD47XG4gIHB1Ymxpc2hWZXJzaW9uKGlucHV0OiBQdWJsaXNoVmVyc2lvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8UHVibGlzaFZlcnNpb25Db21tYW5kT3V0cHV0PjtcbiAgdXBkYXRlQWxpYXMoaW5wdXQ6IFVwZGF0ZUFsaWFzQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVBbGlhc0NvbW1hbmRPdXRwdXQ+O1xuICB1cGRhdGVGdW5jdGlvbkNvZGUoaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbihcbiAgICBpbnB1dDogVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQ+O1xuICAvLyBXYWl0ZXJzXG4gIHdhaXRVbnRpbEZ1bmN0aW9uVXBkYXRlZChkZWxheVNlY29uZHM6IG51bWJlciwgaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8V2FpdGVyUmVzdWx0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUm91dGU1M0NsaWVudCB7XG4gIGdldEhvc3RlZFpvbmUoaW5wdXQ6IEdldEhvc3RlZFpvbmVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldEhvc3RlZFpvbmVDb21tYW5kT3V0cHV0PjtcbiAgbGlzdEhvc3RlZFpvbmVzKGlucHV0OiBMaXN0SG9zdGVkWm9uZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RIb3N0ZWRab25lc0NvbW1hbmRPdXRwdXQ+O1xuICBsaXN0SG9zdGVkWm9uZXNCeU5hbWUoaW5wdXQ6IExpc3RIb3N0ZWRab25lc0J5TmFtZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEhvc3RlZFpvbmVzQnlOYW1lQ29tbWFuZE91dHB1dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVMzQ2xpZW50IHtcbiAgZGVsZXRlT2JqZWN0cyhpbnB1dDogRGVsZXRlT2JqZWN0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQ+O1xuICBkZWxldGVPYmplY3RUYWdnaW5nKGlucHV0OiBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dD47XG4gIGdldEJ1Y2tldEVuY3J5cHRpb24oaW5wdXQ6IEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kT3V0cHV0PjtcbiAgZ2V0QnVja2V0TG9jYXRpb24oaW5wdXQ6IEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmRPdXRwdXQ+O1xuICBnZXRPYmplY3QoaW5wdXQ6IEdldE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0T2JqZWN0Q29tbWFuZE91dHB1dD47XG4gIGdldE9iamVjdFRhZ2dpbmcoaW5wdXQ6IEdldE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0PjtcbiAgbGlzdE9iamVjdHNWMihpbnB1dDogTGlzdE9iamVjdHNWMkNvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdE9iamVjdHNWMkNvbW1hbmRPdXRwdXQ+O1xuICBwdXRPYmplY3RUYWdnaW5nKGlucHV0OiBQdXRPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0KTogUHJvbWlzZTxQdXRPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dD47XG4gIHVwbG9hZChpbnB1dDogUHV0T2JqZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWNyZXRzTWFuYWdlckNsaWVudCB7XG4gIGdldFNlY3JldFZhbHVlKGlucHV0OiBHZXRTZWNyZXRWYWx1ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0U2VjcmV0VmFsdWVDb21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU1NNQ2xpZW50IHtcbiAgZ2V0UGFyYW1ldGVyKGlucHV0OiBHZXRQYXJhbWV0ZXJDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFBhcmFtZXRlckNvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdGVwRnVuY3Rpb25zQ2xpZW50IHtcbiAgdXBkYXRlU3RhdGVNYWNoaW5lKGlucHV0OiBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVN0YXRlTWFjaGluZUNvbW1hbmRPdXRwdXQ+O1xufVxuXG4vKipcbiAqIEJhc2UgZnVuY3Rpb25hbGl0eSBvZiBTREsgd2l0aG91dCBjcmVkZW50aWFsIGZldGNoaW5nXG4gKi9cbkB0cmFjZU1lbWJlck1ldGhvZHNcbmV4cG9ydCBjbGFzcyBTREsge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBhY2NvdW50Q2FjaGUgPSBuZXcgQWNjb3VudEFjY2Vzc0tleUNhY2hlKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRSZWdpb246IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBDb25maWd1cmF0aW9uT3B0aW9ucztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9nZ2VyPzogTG9nZ2VyO1xuXG4gIC8qKlxuICAgKiBTVFMgaXMgdXNlZCB0byBjaGVjayBjcmVkZW50aWFsIHZhbGlkaXR5LCBkb24ndCBkbyB0b28gbWFueSByZXRyaWVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzdHNSZXRyeVN0cmF0ZWd5ID0gbmV3IENvbmZpZ3VyZWRSZXRyeVN0cmF0ZWd5KDMsIChhdHRlbXB0KSA9PiAxMDAgKiAoMiAqKiBhdHRlbXB0KSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgd2UgaGF2ZSBwcm9vZiB0aGF0IHRoZSBjcmVkZW50aWFscyBoYXZlIG5vdCBleHBpcmVkXG4gICAqXG4gICAqIFdlIG5lZWQgdG8gZG8gc29tZSBtYW51YWwgcGx1bWJpbmcgYXJvdW5kIHRoaXMgYmVjYXVzZSB0aGUgSlMgU0RLdjIgdHJlYXRzIGBFeHBpcmVkVG9rZW5gXG4gICAqIGFzIHJldHJpYWJsZSBhbmQgd2UgaGF2ZSBoZWZ0eSByZXRyaWVzIG9uIENGTiBjYWxscyBtYWtpbmcgdGhlIENMSSBoYW5nIGZvciBhIGdvb2QgMTUgbWludXRlc1xuICAgKiBpZiB0aGUgY3JlZGVudGlhbHMgaGF2ZSBleHBpcmVkLlxuICAgKi9cbiAgcHJpdmF0ZSBfY3JlZGVudGlhbHNWYWxpZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyZWRQcm92aWRlcjogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcmVxdWVzdEhhbmRsZXI6IE5vZGVIdHRwSGFuZGxlck9wdGlvbnMsXG4gICAgbG9nZ2VyPzogTG9nZ2VyLFxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIHJlZ2lvbixcbiAgICAgIGNyZWRlbnRpYWxzOiBjcmVkUHJvdmlkZXIsXG4gICAgICByZXF1ZXN0SGFuZGxlcixcbiAgICAgIHJldHJ5U3RyYXRlZ3k6IG5ldyBDb25maWd1cmVkUmV0cnlTdHJhdGVneSg3LCAoYXR0ZW1wdCkgPT4gMzAwICogKDIgKiogYXR0ZW1wdCkpLFxuICAgICAgY3VzdG9tVXNlckFnZW50OiBkZWZhdWx0Q2xpVXNlckFnZW50KCksXG4gICAgICBsb2dnZXIsXG4gICAgfTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLmN1cnJlbnRSZWdpb24gPSByZWdpb247XG4gIH1cblxuICBwdWJsaWMgYXBwZW5kQ3VzdG9tVXNlckFnZW50KHVzZXJBZ2VudERhdGE/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXVzZXJBZ2VudERhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Q3VzdG9tVXNlckFnZW50ID0gdGhpcy5jb25maWcuY3VzdG9tVXNlckFnZW50O1xuICAgIHRoaXMuY29uZmlnLmN1c3RvbVVzZXJBZ2VudCA9IGN1cnJlbnRDdXN0b21Vc2VyQWdlbnQgPyBgJHtjdXJyZW50Q3VzdG9tVXNlckFnZW50fSAke3VzZXJBZ2VudERhdGF9YCA6IHVzZXJBZ2VudERhdGE7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQ3VzdG9tVXNlckFnZW50KHVzZXJBZ2VudERhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnLmN1c3RvbVVzZXJBZ2VudCA9IHRoaXMuY29uZmlnLmN1c3RvbVVzZXJBZ2VudD8ucmVwbGFjZSh1c2VyQWdlbnREYXRhLCAnJyk7XG4gIH1cblxuICBwdWJsaWMgYXBwc3luYygpOiBJQXBwU3luY0NsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEFwcFN5bmNDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBnZXRTY2hlbWFDcmVhdGlvblN0YXR1czogKFxuICAgICAgICBpbnB1dDogR2V0U2NoZW1hQ3JlYXRpb25TdGF0dXNDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPEdldFNjaGVtYUNyZWF0aW9uU3RhdHVzQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IEdldFNjaGVtYUNyZWF0aW9uU3RhdHVzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgc3RhcnRTY2hlbWFDcmVhdGlvbjogKGlucHV0OiBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFN0YXJ0U2NoZW1hQ3JlYXRpb25Db21tYW5kKGlucHV0KSksXG4gICAgICB1cGRhdGVBcGlLZXk6IChpbnB1dDogVXBkYXRlQXBpS2V5Q29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVBcGlLZXlDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlQXBpS2V5Q29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlRnVuY3Rpb246IChpbnB1dDogVXBkYXRlRnVuY3Rpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZUZ1bmN0aW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZUZ1bmN0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlUmVzb2x2ZXI6IChpbnB1dDogVXBkYXRlUmVzb2x2ZXJDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVJlc29sdmVyQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZVJlc29sdmVyQ29tbWFuZChpbnB1dCkpLFxuXG4gICAgICAvLyBQYWdpbmF0aW9uIEZ1bmN0aW9uc1xuICAgICAgbGlzdEZ1bmN0aW9uczogYXN5bmMgKGlucHV0OiBMaXN0RnVuY3Rpb25zQ29tbWFuZElucHV0KTogUHJvbWlzZTxGdW5jdGlvbkNvbmZpZ3VyYXRpb25bXT4gPT4ge1xuICAgICAgICBjb25zdCBmdW5jdGlvbnMgPSBBcnJheTxGdW5jdGlvbkNvbmZpZ3VyYXRpb24+KCk7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRvciA9IHBhZ2luYXRlTGlzdEZ1bmN0aW9ucyh7IGNsaWVudCB9LCBpbnB1dCk7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgcGFnZSBvZiBwYWdpbmF0b3IpIHtcbiAgICAgICAgICBmdW5jdGlvbnMucHVzaCguLi4ocGFnZS5mdW5jdGlvbnMgfHwgW10pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb25zO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGNsb3VkRm9ybWF0aW9uKCk6IElDbG91ZEZvcm1hdGlvbkNsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IENsb3VkRm9ybWF0aW9uQ2xpZW50KHtcbiAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgcmV0cnlTdHJhdGVneTogbmV3IENvbmZpZ3VyZWRSZXRyeVN0cmF0ZWd5KDExLCAoYXR0ZW1wdDogbnVtYmVyKSA9PiAxMDAwICogKDIgKiogYXR0ZW1wdCkpLFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBjb250aW51ZVVwZGF0ZVJvbGxiYWNrOiBhc3luYyAoXG4gICAgICAgIGlucHV0OiBDb250aW51ZVVwZGF0ZVJvbGxiYWNrQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxDb250aW51ZVVwZGF0ZVJvbGxiYWNrQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IENvbnRpbnVlVXBkYXRlUm9sbGJhY2tDb21tYW5kKGlucHV0KSksXG4gICAgICBjcmVhdGVDaGFuZ2VTZXQ6IChpbnB1dDogQ3JlYXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgQ3JlYXRlQ2hhbmdlU2V0Q29tbWFuZChpbnB1dCkpLFxuICAgICAgY3JlYXRlR2VuZXJhdGVkVGVtcGxhdGU6IChcbiAgICAgICAgaW5wdXQ6IENyZWF0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxDcmVhdGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBDcmVhdGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGNyZWF0ZVN0YWNrOiAoaW5wdXQ6IENyZWF0ZVN0YWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVTdGFja0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBDcmVhdGVTdGFja0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlbGV0ZUNoYW5nZVNldDogKGlucHV0OiBEZWxldGVDaGFuZ2VTZXRDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZUNoYW5nZVNldENvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZWxldGVDaGFuZ2VTZXRDb21tYW5kKGlucHV0KSksXG4gICAgICBkZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZTogKFxuICAgICAgICBpbnB1dDogRGVsZXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPERlbGV0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IERlbGV0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVsZXRlU3RhY2s6IChpbnB1dDogRGVsZXRlU3RhY2tDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZVN0YWNrQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlbGV0ZVN0YWNrQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVDaGFuZ2VTZXQ6IChpbnB1dDogRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlQ2hhbmdlU2V0Q29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVHZW5lcmF0ZWRUZW1wbGF0ZTogKFxuICAgICAgICBpbnB1dDogRGVzY3JpYmVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8RGVzY3JpYmVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVSZXNvdXJjZVNjYW46IChpbnB1dDogRGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlUmVzb3VyY2VTY2FuQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlUmVzb3VyY2VTY2FuQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVTdGFja3M6IChpbnB1dDogRGVzY3JpYmVTdGFja3NDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlU3RhY2tzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlU3RhY2tzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVTdGFja1Jlc291cmNlczogKGlucHV0OiBEZXNjcmliZVN0YWNrUmVzb3VyY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVN0YWNrUmVzb3VyY2VzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlU3RhY2tSZXNvdXJjZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBleGVjdXRlQ2hhbmdlU2V0OiAoaW5wdXQ6IEV4ZWN1dGVDaGFuZ2VTZXRDb21tYW5kSW5wdXQpOiBQcm9taXNlPEV4ZWN1dGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRXhlY3V0ZUNoYW5nZVNldENvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGdldEdlbmVyYXRlZFRlbXBsYXRlOiAoaW5wdXQ6IEdldEdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGdldFRlbXBsYXRlOiAoaW5wdXQ6IEdldFRlbXBsYXRlQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRUZW1wbGF0ZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGdldFRlbXBsYXRlU3VtbWFyeTogKGlucHV0OiBHZXRUZW1wbGF0ZVN1bW1hcnlDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFRlbXBsYXRlU3VtbWFyeUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRUZW1wbGF0ZVN1bW1hcnlDb21tYW5kKGlucHV0KSksXG4gICAgICBsaXN0RXhwb3J0czogKGlucHV0OiBMaXN0RXhwb3J0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEV4cG9ydHNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgTGlzdEV4cG9ydHNDb21tYW5kKGlucHV0KSksXG4gICAgICBsaXN0UmVzb3VyY2VTY2FuUmVsYXRlZFJlc291cmNlczogKFxuICAgICAgICBpbnB1dDogTGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdFJlc291cmNlU2NhblJlc291cmNlczogKFxuICAgICAgICBpbnB1dDogTGlzdFJlc291cmNlU2NhblJlc291cmNlc0NvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8TGlzdFJlc291cmNlU2NhblJlc291cmNlc0NvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBMaXN0UmVzb3VyY2VTY2FuUmVzb3VyY2VzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdFJlc291cmNlU2NhbnM6IChpbnB1dDogTGlzdFJlc291cmNlU2NhbnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RSZXNvdXJjZVNjYW5zQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RSZXNvdXJjZVNjYW5zQ29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdFN0YWNrczogKGlucHV0OiBMaXN0U3RhY2tzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0U3RhY2tzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RTdGFja3NDb21tYW5kKGlucHV0KSksXG4gICAgICByb2xsYmFja1N0YWNrOiAoaW5wdXQ6IFJvbGxiYWNrU3RhY2tDb21tYW5kSW5wdXQpOiBQcm9taXNlPFJvbGxiYWNrU3RhY2tDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgUm9sbGJhY2tTdGFja0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHN0YXJ0UmVzb3VyY2VTY2FuOiAoaW5wdXQ6IFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFydFJlc291cmNlU2NhbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBTdGFydFJlc291cmNlU2NhbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHVwZGF0ZVN0YWNrOiAoaW5wdXQ6IFVwZGF0ZVN0YWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVTdGFja0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVTdGFja0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbjogKFxuICAgICAgICBpbnB1dDogVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxVcGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb25Db21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVTdGFja0V2ZW50czogKGlucHV0OiBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZE91dHB1dD4gPT4ge1xuICAgICAgICByZXR1cm4gY2xpZW50LnNlbmQobmV3IERlc2NyaWJlU3RhY2tFdmVudHNDb21tYW5kKGlucHV0KSk7XG4gICAgICB9LFxuICAgICAgbGlzdFN0YWNrUmVzb3VyY2VzOiBhc3luYyAoaW5wdXQ6IExpc3RTdGFja1Jlc291cmNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8U3RhY2tSZXNvdXJjZVN1bW1hcnlbXT4gPT4ge1xuICAgICAgICBjb25zdCBzdGFja1Jlc291cmNlcyA9IEFycmF5PFN0YWNrUmVzb3VyY2VTdW1tYXJ5PigpO1xuICAgICAgICBjb25zdCBwYWdpbmF0b3IgPSBwYWdpbmF0ZUxpc3RTdGFja1Jlc291cmNlcyh7IGNsaWVudCB9LCBpbnB1dCk7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgcGFnZSBvZiBwYWdpbmF0b3IpIHtcbiAgICAgICAgICBzdGFja1Jlc291cmNlcy5wdXNoKC4uLihwYWdlPy5TdGFja1Jlc291cmNlU3VtbWFyaWVzIHx8IFtdKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YWNrUmVzb3VyY2VzO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGNsb3VkV2F0Y2hMb2dzKCk6IElDbG91ZFdhdGNoTG9nc0NsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IENsb3VkV2F0Y2hMb2dzQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgZGVzY3JpYmVMb2dHcm91cHM6IChpbnB1dDogRGVzY3JpYmVMb2dHcm91cHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlTG9nR3JvdXBzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlTG9nR3JvdXBzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZmlsdGVyTG9nRXZlbnRzOiAoaW5wdXQ6IEZpbHRlckxvZ0V2ZW50c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RmlsdGVyTG9nRXZlbnRzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEZpbHRlckxvZ0V2ZW50c0NvbW1hbmQoaW5wdXQpKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGNvZGVCdWlsZCgpOiBJQ29kZUJ1aWxkQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgQ29kZUJ1aWxkQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlUHJvamVjdDogKGlucHV0OiBVcGRhdGVQcm9qZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVQcm9qZWN0Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZVByb2plY3RDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBlYzIoKTogSUVDMkNsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEVDMkNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXM6IChcbiAgICAgICAgaW5wdXQ6IERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVBdmFpbGFiaWxpdHlab25lc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlSW1hZ2VzOiAoaW5wdXQ6IERlc2NyaWJlSW1hZ2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUltYWdlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlSW5zdGFuY2VzOiAoaW5wdXQ6IERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUluc3RhbmNlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUluc3RhbmNlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlUm91dGVUYWJsZXM6IChpbnB1dDogRGVzY3JpYmVSb3V0ZVRhYmxlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVSb3V0ZVRhYmxlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVJvdXRlVGFibGVzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVTZWN1cml0eUdyb3VwczogKFxuICAgICAgICBpbnB1dDogRGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8RGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVNlY3VyaXR5R3JvdXBzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVTdWJuZXRzOiAoaW5wdXQ6IERlc2NyaWJlU3VibmV0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdWJuZXRzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlU3VibmV0c0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlczogKFxuICAgICAgICBpbnB1dDogRGVzY3JpYmVWcGNFbmRwb2ludFNlcnZpY2VzQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxEZXNjcmliZVZwY0VuZHBvaW50U2VydmljZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVWcGNFbmRwb2ludFNlcnZpY2VzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVWcGNzOiAoaW5wdXQ6IERlc2NyaWJlVnBjc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVWcGNzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlVnBjc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlVnBuR2F0ZXdheXM6IChpbnB1dDogRGVzY3JpYmVWcG5HYXRld2F5c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVWcG5HYXRld2F5c0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVZwbkdhdGV3YXlzQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZWNyKCk6IElFQ1JDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBFQ1JDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBiYXRjaERlbGV0ZUltYWdlOiAoaW5wdXQ6IEJhdGNoRGVsZXRlSW1hZ2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPEJhdGNoRGVsZXRlSW1hZ2VDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgQmF0Y2hEZWxldGVJbWFnZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGJhdGNoR2V0SW1hZ2U6IChpbnB1dDogQmF0Y2hHZXRJbWFnZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8QmF0Y2hHZXRJbWFnZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBCYXRjaEdldEltYWdlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgY3JlYXRlUmVwb3NpdG9yeTogKGlucHV0OiBDcmVhdGVSZXBvc2l0b3J5Q29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVSZXBvc2l0b3J5Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZUltYWdlczogKGlucHV0OiBFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RUNSRGVzY3JpYmVJbWFnZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRUNSRGVzY3JpYmVJbWFnZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVJlcG9zaXRvcmllczogKGlucHV0OiBEZXNjcmliZVJlcG9zaXRvcmllc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVSZXBvc2l0b3JpZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVSZXBvc2l0b3JpZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRBdXRob3JpemF0aW9uVG9rZW46IChpbnB1dDogR2V0QXV0aG9yaXphdGlvblRva2VuQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0QXV0aG9yaXphdGlvblRva2VuQ29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdEltYWdlczogKGlucHV0OiBMaXN0SW1hZ2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0SW1hZ2VzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RJbWFnZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBwdXRJbWFnZTogKGlucHV0OiBQdXRJbWFnZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8UHV0SW1hZ2VDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgUHV0SW1hZ2VDb21tYW5kKGlucHV0KSksXG4gICAgICBwdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjogKFxuICAgICAgICBpbnB1dDogUHV0SW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPFB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZWNzKCk6IElFQ1NDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBFQ1NDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBsaXN0Q2x1c3RlcnM6IChpbnB1dDogTGlzdENsdXN0ZXJzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0Q2x1c3RlcnNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgTGlzdENsdXN0ZXJzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgcmVnaXN0ZXJUYXNrRGVmaW5pdGlvbjogKFxuICAgICAgICBpbnB1dDogUmVnaXN0ZXJUYXNrRGVmaW5pdGlvbkNvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8UmVnaXN0ZXJUYXNrRGVmaW5pdGlvbkNvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBSZWdpc3RlclRhc2tEZWZpbml0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlU2VydmljZTogKGlucHV0OiBVcGRhdGVTZXJ2aWNlQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVTZXJ2aWNlQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZVNlcnZpY2VDb21tYW5kKGlucHV0KSksXG4gICAgICAvLyBXYWl0ZXJzXG4gICAgICB3YWl0VW50aWxTZXJ2aWNlc1N0YWJsZTogKGlucHV0OiBEZXNjcmliZVNlcnZpY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxXYWl0ZXJSZXN1bHQ+ID0+IHtcbiAgICAgICAgcmV0dXJuIHdhaXRVbnRpbFNlcnZpY2VzU3RhYmxlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsaWVudCxcbiAgICAgICAgICAgIG1heFdhaXRUaW1lOiA2MDAsXG4gICAgICAgICAgICBtaW5EZWxheTogNixcbiAgICAgICAgICAgIG1heERlbGF5OiA2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5wdXQsXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZWxidjIoKTogSUVsYXN0aWNMb2FkQmFsYW5jaW5nVjJDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBFbGFzdGljTG9hZEJhbGFuY2luZ1YyQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgZGVzY3JpYmVMaXN0ZW5lcnM6IChpbnB1dDogRGVzY3JpYmVMaXN0ZW5lcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlTGlzdGVuZXJzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlTGlzdGVuZXJzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVMb2FkQmFsYW5jZXJzOiAoaW5wdXQ6IERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlVGFnczogKGlucHV0OiBEZXNjcmliZVRhZ3NDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlVGFnc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVRhZ3NDb21tYW5kKGlucHV0KSksXG4gICAgICAvLyBQYWdpbmF0aW9uIEZ1bmN0aW9uc1xuICAgICAgcGFnaW5hdGVEZXNjcmliZUxpc3RlbmVyczogYXN5bmMgKGlucHV0OiBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdGVuZXJbXT4gPT4ge1xuICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSBBcnJheTxMaXN0ZW5lcj4oKTtcbiAgICAgICAgY29uc3QgcGFnaW5hdG9yID0gcGFnaW5hdGVEZXNjcmliZUxpc3RlbmVycyh7IGNsaWVudCB9LCBpbnB1dCk7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgcGFnZSBvZiBwYWdpbmF0b3IpIHtcbiAgICAgICAgICBsaXN0ZW5lcnMucHVzaCguLi4ocGFnZT8uTGlzdGVuZXJzIHx8IFtdKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpc3RlbmVycztcbiAgICAgIH0sXG4gICAgICBwYWdpbmF0ZURlc2NyaWJlTG9hZEJhbGFuY2VyczogYXN5bmMgKGlucHV0OiBEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExvYWRCYWxhbmNlcltdPiA9PiB7XG4gICAgICAgIGNvbnN0IGxvYWRCYWxhbmNlcnMgPSBBcnJheTxMb2FkQmFsYW5jZXI+KCk7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRvciA9IHBhZ2luYXRlRGVzY3JpYmVMb2FkQmFsYW5jZXJzKHsgY2xpZW50IH0sIGlucHV0KTtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBwYWdlIG9mIHBhZ2luYXRvcikge1xuICAgICAgICAgIGxvYWRCYWxhbmNlcnMucHVzaCguLi4ocGFnZT8uTG9hZEJhbGFuY2VycyB8fCBbXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2FkQmFsYW5jZXJzO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGlhbSgpOiBJSUFNQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgSUFNQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgY3JlYXRlUG9saWN5OiAoaW5wdXQ6IENyZWF0ZVBvbGljeUNvbW1hbmRJbnB1dCk6IFByb21pc2U8Q3JlYXRlUG9saWN5Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IENyZWF0ZVBvbGljeUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGdldFBvbGljeTogKGlucHV0OiBHZXRQb2xpY3lDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFBvbGljeUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRQb2xpY3lDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRSb2xlOiAoaW5wdXQ6IEdldFJvbGVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFJvbGVDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgR2V0Um9sZUNvbW1hbmQoaW5wdXQpKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGttcygpOiBJS01TQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgS01TQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgZGVzY3JpYmVLZXk6IChpbnB1dDogRGVzY3JpYmVLZXlDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlS2V5Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlS2V5Q29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdEFsaWFzZXM6IChpbnB1dDogTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RBbGlhc2VzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RBbGlhc2VzQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgbGFtYmRhKCk6IElMYW1iZGFDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBMYW1iZGFDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBpbnZva2VDb21tYW5kOiAoaW5wdXQ6IEludm9rZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8SW52b2tlQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IEludm9rZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHB1Ymxpc2hWZXJzaW9uOiAoaW5wdXQ6IFB1Ymxpc2hWZXJzaW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxQdWJsaXNoVmVyc2lvbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBQdWJsaXNoVmVyc2lvbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHVwZGF0ZUFsaWFzOiAoaW5wdXQ6IFVwZGF0ZUFsaWFzQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVBbGlhc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVBbGlhc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHVwZGF0ZUZ1bmN0aW9uQ29kZTogKGlucHV0OiBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kKGlucHV0KSksXG4gICAgICB1cGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb246IChcbiAgICAgICAgaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8VXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIC8vIFdhaXRlcnNcbiAgICAgIHdhaXRVbnRpbEZ1bmN0aW9uVXBkYXRlZDogKFxuICAgICAgICBkZWxheVNlY29uZHM6IG51bWJlcixcbiAgICAgICAgaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8V2FpdGVyUmVzdWx0PiA9PiB7XG4gICAgICAgIHJldHVybiB3YWl0VW50aWxGdW5jdGlvblVwZGF0ZWRWMihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGllbnQsXG4gICAgICAgICAgICBtYXhEZWxheTogZGVsYXlTZWNvbmRzLFxuICAgICAgICAgICAgbWluRGVsYXk6IGRlbGF5U2Vjb25kcyxcbiAgICAgICAgICAgIG1heFdhaXRUaW1lOiBkZWxheVNlY29uZHMgKiA2MCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlucHV0LFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHJvdXRlNTMoKTogSVJvdXRlNTNDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBSb3V0ZTUzQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0SG9zdGVkWm9uZTogKGlucHV0OiBHZXRIb3N0ZWRab25lQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRIb3N0ZWRab25lQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldEhvc3RlZFpvbmVDb21tYW5kKGlucHV0KSksXG4gICAgICBsaXN0SG9zdGVkWm9uZXM6IChpbnB1dDogTGlzdEhvc3RlZFpvbmVzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0SG9zdGVkWm9uZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgTGlzdEhvc3RlZFpvbmVzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdEhvc3RlZFpvbmVzQnlOYW1lOiAoaW5wdXQ6IExpc3RIb3N0ZWRab25lc0J5TmFtZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEhvc3RlZFpvbmVzQnlOYW1lQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RIb3N0ZWRab25lc0J5TmFtZUNvbW1hbmQoaW5wdXQpKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHMzKCk6IElTM0NsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFMzQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgZGVsZXRlT2JqZWN0czogKGlucHV0OiBEZWxldGVPYmplY3RzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVPYmplY3RzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlbGV0ZU9iamVjdHNDb21tYW5kKHtcbiAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICBDaGVja3N1bUFsZ29yaXRobTogJ1NIQTI1NicsXG4gICAgICAgIH0pKSxcbiAgICAgIGRlbGV0ZU9iamVjdFRhZ2dpbmc6IChpbnB1dDogRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0QnVja2V0RW5jcnlwdGlvbjogKGlucHV0OiBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kKGlucHV0KSksXG4gICAgICBnZXRCdWNrZXRMb2NhdGlvbjogKGlucHV0OiBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0QnVja2V0TG9jYXRpb25Db21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0QnVja2V0TG9jYXRpb25Db21tYW5kKGlucHV0KSksXG4gICAgICBnZXRPYmplY3Q6IChpbnB1dDogR2V0T2JqZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRPYmplY3RDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0T2JqZWN0Q29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0T2JqZWN0VGFnZ2luZzogKGlucHV0OiBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldE9iamVjdFRhZ2dpbmdDb21tYW5kKGlucHV0KSksXG4gICAgICBsaXN0T2JqZWN0c1YyOiAoaW5wdXQ6IExpc3RPYmplY3RzVjJDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RPYmplY3RzVjJDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgTGlzdE9iamVjdHNWMkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHB1dE9iamVjdFRhZ2dpbmc6IChpbnB1dDogUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCk6IFByb21pc2U8UHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBQdXRPYmplY3RUYWdnaW5nQ29tbWFuZCh7XG4gICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgQ2hlY2tzdW1BbGdvcml0aG06ICdTSEEyNTYnLFxuICAgICAgICB9KSksXG4gICAgICB1cGxvYWQ6IChpbnB1dDogUHV0T2JqZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQ+ID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB1cGxvYWQgPSBuZXcgVXBsb2FkKHtcbiAgICAgICAgICAgIGNsaWVudCxcbiAgICAgICAgICAgIHBhcmFtczogeyAuLi5pbnB1dCwgQ2hlY2tzdW1BbGdvcml0aG06ICdTSEEyNTYnIH0sXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gdXBsb2FkLmRvbmUoKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEF1dGhlbnRpY2F0aW9uRXJyb3IoYFVwbG9hZCBmYWlsZWQ6ICR7Zm9ybWF0RXJyb3JNZXNzYWdlKGUpfWApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc2VjcmV0c01hbmFnZXIoKTogSVNlY3JldHNNYW5hZ2VyQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgU2VjcmV0c01hbmFnZXJDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBnZXRTZWNyZXRWYWx1ZTogKGlucHV0OiBHZXRTZWNyZXRWYWx1ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0U2VjcmV0VmFsdWVDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0U2VjcmV0VmFsdWVDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzc20oKTogSVNTTUNsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFNTTUNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldFBhcmFtZXRlcjogKGlucHV0OiBHZXRQYXJhbWV0ZXJDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFBhcmFtZXRlckNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRQYXJhbWV0ZXJDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGVwRnVuY3Rpb25zKCk6IElTdGVwRnVuY3Rpb25zQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgU0ZOQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lOiAoaW5wdXQ6IFVwZGF0ZVN0YXRlTWFjaGluZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZVN0YXRlTWFjaGluZUNvbW1hbmQoaW5wdXQpKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgU0RLIHYzIHJlcXVpcmVzIGEgY2xpZW50IGNvbmZpZyBhbmQgYSBjb21tYW5kIGluIG9yZGVyIHRvIGdldCBhbiBlbmRwb2ludCBmb3JcbiAgICogYW55IGdpdmVuIHNlcnZpY2UuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0VXJsU3VmZml4KHJlZ2lvbjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBjZm4gPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQoeyByZWdpb24gfSk7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBhd2FpdCBnZXRFbmRwb2ludEZyb21JbnN0cnVjdGlvbnMoe30sIERlc2NyaWJlU3RhY2tSZXNvdXJjZXNDb21tYW5kLCB7IC4uLmNmbi5jb25maWcgfSk7XG4gICAgcmV0dXJuIGVuZHBvaW50LnVybC5ob3N0bmFtZS5zcGxpdChgJHtyZWdpb259LmApLnBvcCgpITtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjdXJyZW50QWNjb3VudCgpOiBQcm9taXNlPEFjY291bnQ+IHtcbiAgICByZXR1cm4gY2FjaGVkQXN5bmModGhpcywgQ1VSUkVOVF9BQ0NPVU5UX0tFWSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY3JlZHMgPSBhd2FpdCB0aGlzLmNyZWRQcm92aWRlcigpO1xuICAgICAgcmV0dXJuIFNESy5hY2NvdW50Q2FjaGUuZmV0Y2goY3JlZHMuYWNjZXNzS2V5SWQsIGFzeW5jICgpID0+IHtcbiAgICAgICAgLy8gaWYgd2UgZG9uJ3QgaGF2ZSBvbmUsIHJlc29sdmUgZnJvbSBTVFMgYW5kIHN0b3JlIGluIGNhY2hlLlxuICAgICAgICBkZWJ1ZygnTG9va2luZyB1cCBkZWZhdWx0IGFjY291bnQgSUQgZnJvbSBTVFMnKTtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gbmV3IFNUU0NsaWVudCh7XG4gICAgICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICAgICAgcmV0cnlTdHJhdGVneTogdGhpcy5zdHNSZXRyeVN0cmF0ZWd5LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoe30pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjbGllbnQuc2VuZChjb21tYW5kKTtcbiAgICAgICAgY29uc3QgYWNjb3VudElkID0gcmVzdWx0LkFjY291bnQ7XG4gICAgICAgIGNvbnN0IHBhcnRpdGlvbiA9IHJlc3VsdC5Bcm4hLnNwbGl0KCc6JylbMV07XG4gICAgICAgIGlmICghYWNjb3VudElkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEF1dGhlbnRpY2F0aW9uRXJyb3IoXCJTVFMgZGlkbid0IHJldHVybiBhbiBhY2NvdW50IElEXCIpO1xuICAgICAgICB9XG4gICAgICAgIGRlYnVnKCdEZWZhdWx0IGFjY291bnQgSUQ6JywgYWNjb3VudElkKTtcblxuICAgICAgICAvLyBTYXZlIGFub3RoZXIgU1RTIGNhbGwgbGF0ZXIgaWYgdGhpcyBvbmUgYWxyZWFkeSBzdWNjZWVkZWRcbiAgICAgICAgdGhpcy5fY3JlZGVudGlhbHNWYWxpZGF0ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4geyBhY2NvdW50SWQsIHBhcnRpdGlvbiB9O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBzdXJlIHRoZSB0aGUgY3VycmVudCBjcmVkZW50aWFscyBhcmUgbm90IGV4cGlyZWRcbiAgICovXG4gIHB1YmxpYyBhc3luYyB2YWxpZGF0ZUNyZWRlbnRpYWxzKCkge1xuICAgIGlmICh0aGlzLl9jcmVkZW50aWFsc1ZhbGlkYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTVFNDbGllbnQoeyAuLi50aGlzLmNvbmZpZywgcmV0cnlTdHJhdGVneTogdGhpcy5zdHNSZXRyeVN0cmF0ZWd5IH0pO1xuICAgIGF3YWl0IGNsaWVudC5zZW5kKG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoe30pKTtcbiAgICB0aGlzLl9jcmVkZW50aWFsc1ZhbGlkYXRlZCA9IHRydWU7XG4gIH1cbn1cblxuY29uc3QgQ1VSUkVOVF9BQ0NPVU5UX0tFWSA9IFN5bWJvbCgnY3VycmVudF9hY2NvdW50X2tleScpO1xuIl19
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSw0REFvQmlDO0FBQ2pDLDBFQW1Gd0M7QUFDeEMsNEVBUXlDO0FBQ3pDLGdFQUttQztBQUNuQyxvREE2QjZCO0FBQzdCLG9EQTZCNkI7QUFDN0Isb0RBYTZCO0FBQzdCLGdHQWVtRDtBQUNuRCxvREFXNkI7QUFDN0Isb0RBUTZCO0FBQzdCLDBEQWtCZ0M7QUFDaEMsOERBV2tDO0FBQ2xDLGtEQTRCNEI7QUFDNUIsNEVBS3lDO0FBQ3pDLG9EQUs2QjtBQUM3QixvREFLNkI7QUFDN0Isb0RBQTBFO0FBQzFFLHNEQUE4QztBQUM5QyxxRUFBMEU7QUFHMUUsbURBQTZEO0FBRTdELG1EQUF3RDtBQUN4RCxxQ0FBdUM7QUFFdkMsdUNBQStDO0FBQy9DLDZDQUFtRDtBQUNuRCwyQ0FBc0M7QUFDdEMsK0NBQTBEO0FBQzFELDBEQUE2RDtBQXFNN0Q7O0dBRUc7QUFFSSxJQUFNLEdBQUcsV0FBVCxNQUFNLEdBQUc7SUF1QmQsWUFDbUIsWUFBMkMsRUFDNUQsTUFBYyxFQUNkLGNBQXNDLEVBQ3RDLE1BQWU7UUFIRSxpQkFBWSxHQUFaLFlBQVksQ0FBK0I7UUFmOUQ7O1dBRUc7UUFDYyxxQkFBZ0IsR0FBRyxJQUFJLG9DQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFdEc7Ozs7OztXQU1HO1FBQ0ssMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBUXBDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixNQUFNO1lBQ04sV0FBVyxFQUFFLFlBQVk7WUFDekIsY0FBYztZQUNkLGFBQWEsRUFBRSxJQUFJLG9DQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJ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TUFBTSxJQUFJLDJCQUFtQixDQUFDLGlDQUFpQyxDQUFDLENBQUM7Z0JBQ25FLENBQUM7Z0JBQ0QsSUFBQSxlQUFLLEVBQUMscUJBQXFCLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBRXhDLDREQUE0RDtnQkFDNUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztnQkFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQjtRQUM5QixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9CLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxzQkFBUyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLHFDQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztJQUNwQyxDQUFDOztBQTljVSxrQkFBRztBQUNVLGdCQUFZLEdBQUcsSUFBSSxxQ0FBcUIsRUFBRSxBQUE5QixDQUErQjtjQUR4RCxHQUFHO0lBRGYsNEJBQWtCO0dBQ04sR0FBRyxDQStjZjtBQUVELE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBTeW5jQ2xpZW50LFxuICBGdW5jdGlvbkNvbmZpZ3VyYXRpb24sXG4gIEdldFNjaGVtYUNyZWF0aW9uU3RhdHVzQ29tbWFuZCxcbiAgdHlwZSBHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmRPdXRwdXQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgcGFnaW5hdGVMaXN0RnVuY3Rpb25zLFxuICBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZCxcbiAgdHlwZSBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFN0YXJ0U2NoZW1hQ3JlYXRpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVBcGlLZXlDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUFwaUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVBcGlLZXlDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVSZXNvbHZlckNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlUmVzb2x2ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlUmVzb2x2ZXJDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtYXBwc3luYyc7XG5pbXBvcnQge1xuICBDbG91ZEZvcm1hdGlvbkNsaWVudCxcbiAgQ29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmQsXG4gIENvbnRpbnVlVXBkYXRlUm9sbGJhY2tDb21tYW5kSW5wdXQsXG4gIENvbnRpbnVlVXBkYXRlUm9sbGJhY2tDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVDaGFuZ2VTZXRDb21tYW5kLFxuICB0eXBlIENyZWF0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVTdGFja0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlU3RhY2tDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlU3RhY2tDb21tYW5kT3V0cHV0LFxuICBEZWxldGVDaGFuZ2VTZXRDb21tYW5kLFxuICB0eXBlIERlbGV0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBEZWxldGVTdGFja0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlU3RhY2tDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlU3RhY2tDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUNoYW5nZVNldENvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJlc291cmNlU2NhbkNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZElucHV0LFxuICBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmQsXG4gIERlc2NyaWJlU3RhY2tSZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlU3RhY2tSZXNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVN0YWNrc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVTdGFja3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVTdGFja3NDb21tYW5kT3V0cHV0LFxuICBFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZCxcbiAgdHlwZSBFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0LFxuICB0eXBlIEV4ZWN1dGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0LFxuICBHZXRHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgR2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBHZXRUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgR2V0VGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0VGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBHZXRUZW1wbGF0ZVN1bW1hcnlDb21tYW5kLFxuICB0eXBlIEdldFRlbXBsYXRlU3VtbWFyeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRUZW1wbGF0ZVN1bW1hcnlDb21tYW5kT3V0cHV0LFxuICBMaXN0RXhwb3J0c0NvbW1hbmQsXG4gIHR5cGUgTGlzdEV4cG9ydHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEV4cG9ydHNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VTY2FuUmVsYXRlZFJlc291cmNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VTY2FuUmVzb3VyY2VzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmVzb3VyY2VTY2FuUmVzb3VyY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VTY2Fuc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFJlc291cmNlU2NhbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFJlc291cmNlU2NhbnNDb21tYW5kT3V0cHV0LFxuICB0eXBlIExpc3RTdGFja1Jlc291cmNlc0NvbW1hbmRJbnB1dCxcbiAgTGlzdFN0YWNrc0NvbW1hbmQsXG4gIExpc3RTdGFja3NDb21tYW5kSW5wdXQsXG4gIExpc3RTdGFja3NDb21tYW5kT3V0cHV0LFxuICBwYWdpbmF0ZUxpc3RTdGFja1Jlc291cmNlcyxcbiAgUm9sbGJhY2tTdGFja0NvbW1hbmQsXG4gIFJvbGxiYWNrU3RhY2tDb21tYW5kSW5wdXQsXG4gIFJvbGxiYWNrU3RhY2tDb21tYW5kT3V0cHV0LFxuICBTdGFja1Jlc291cmNlU3VtbWFyeSxcbiAgU3RhcnRSZXNvdXJjZVNjYW5Db21tYW5kLFxuICB0eXBlIFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZElucHV0LFxuICB0eXBlIFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlU3RhY2tDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVN0YWNrQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVN0YWNrQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZE91dHB1dCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7XG4gIENsb3VkV2F0Y2hMb2dzQ2xpZW50LFxuICBEZXNjcmliZUxvZ0dyb3Vwc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVMb2dHcm91cHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVMb2dHcm91cHNDb21tYW5kT3V0cHV0LFxuICBGaWx0ZXJMb2dFdmVudHNDb21tYW5kLFxuICBGaWx0ZXJMb2dFdmVudHNDb21tYW5kSW5wdXQsXG4gIEZpbHRlckxvZ0V2ZW50c0NvbW1hbmRPdXRwdXQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZHdhdGNoLWxvZ3MnO1xuaW1wb3J0IHtcbiAgQ29kZUJ1aWxkQ2xpZW50LFxuICBVcGRhdGVQcm9qZWN0Q29tbWFuZCxcbiAgdHlwZSBVcGRhdGVQcm9qZWN0Q29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVByb2plY3RDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtY29kZWJ1aWxkJztcbmltcG9ydCB7XG4gIERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVBdmFpbGFiaWxpdHlab25lc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlSW1hZ2VzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUltYWdlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUluc3RhbmNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUluc3RhbmNlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVSb3V0ZVRhYmxlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlU2VjdXJpdHlHcm91cHNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlU2VjdXJpdHlHcm91cHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlU3VibmV0c0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVTdWJuZXRzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlU3VibmV0c0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVWcGNFbmRwb2ludFNlcnZpY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVnBjc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVWcGNzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVnBjc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVWcG5HYXRld2F5c0NvbW1hbmRPdXRwdXQsXG4gIEVDMkNsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVjMic7XG5pbXBvcnQge1xuICBCYXRjaERlbGV0ZUltYWdlQ29tbWFuZCxcbiAgQmF0Y2hEZWxldGVJbWFnZUNvbW1hbmRJbnB1dCxcbiAgQmF0Y2hEZWxldGVJbWFnZUNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kLFxuICB0eXBlIENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlUmVwb3NpdG9yeUNvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlSW1hZ2VzQ29tbWFuZCBhcyBFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVJbWFnZXNDb21tYW5kSW5wdXQgYXMgRUNSRGVzY3JpYmVJbWFnZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVJbWFnZXNDb21tYW5kT3V0cHV0IGFzIEVDUkRlc2NyaWJlSW1hZ2VzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSZXBvc2l0b3JpZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZE91dHB1dCxcbiAgRUNSQ2xpZW50LFxuICBHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kLFxuICB0eXBlIEdldEF1dGhvcml6YXRpb25Ub2tlbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kT3V0cHV0LFxuICBMaXN0SW1hZ2VzQ29tbWFuZCxcbiAgTGlzdEltYWdlc0NvbW1hbmRJbnB1dCxcbiAgTGlzdEltYWdlc0NvbW1hbmRPdXRwdXQsXG4gIFB1dEltYWdlQ29tbWFuZCxcbiAgUHV0SW1hZ2VDb21tYW5kSW5wdXQsXG4gIFB1dEltYWdlQ29tbWFuZE91dHB1dCxcbiAgUHV0SW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIFB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgQmF0Y2hHZXRJbWFnZUNvbW1hbmRJbnB1dCxcbiAgQmF0Y2hHZXRJbWFnZUNvbW1hbmQsXG4gIEJhdGNoR2V0SW1hZ2VDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWNyJztcbmltcG9ydCB7XG4gIERlc2NyaWJlU2VydmljZXNDb21tYW5kSW5wdXQsXG4gIEVDU0NsaWVudCxcbiAgTGlzdENsdXN0ZXJzQ29tbWFuZCxcbiAgdHlwZSBMaXN0Q2x1c3RlcnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdENsdXN0ZXJzQ29tbWFuZE91dHB1dCxcbiAgUmVnaXN0ZXJUYXNrRGVmaW5pdGlvbkNvbW1hbmQsXG4gIFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUmVnaXN0ZXJUYXNrRGVmaW5pdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZVNlcnZpY2VDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVNlcnZpY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlU2VydmljZUNvbW1hbmRPdXRwdXQsXG4gIHdhaXRVbnRpbFNlcnZpY2VzU3RhYmxlLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWNzJztcbmltcG9ydCB7XG4gIERlc2NyaWJlTGlzdGVuZXJzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVGFnc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVGFnc0NvbW1hbmRPdXRwdXQsXG4gIEVsYXN0aWNMb2FkQmFsYW5jaW5nVjJDbGllbnQsXG4gIExpc3RlbmVyLFxuICBMb2FkQmFsYW5jZXIsXG4gIHBhZ2luYXRlRGVzY3JpYmVMaXN0ZW5lcnMsXG4gIHBhZ2luYXRlRGVzY3JpYmVMb2FkQmFsYW5jZXJzLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWxhc3RpYy1sb2FkLWJhbGFuY2luZy12Mic7XG5pbXBvcnQge1xuICBDcmVhdGVQb2xpY3lDb21tYW5kLFxuICB0eXBlIENyZWF0ZVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRQb2xpY3lDb21tYW5kLFxuICB0eXBlIEdldFBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRSb2xlQ29tbWFuZCxcbiAgdHlwZSBHZXRSb2xlQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFJvbGVDb21tYW5kT3V0cHV0LFxuICBJQU1DbGllbnQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1pYW0nO1xuaW1wb3J0IHtcbiAgRGVzY3JpYmVLZXlDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlS2V5Q29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlS2V5Q29tbWFuZE91dHB1dCxcbiAgS01TQ2xpZW50LFxuICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQta21zJztcbmltcG9ydCB7XG4gIEludm9rZUNvbW1hbmQsXG4gIHR5cGUgSW52b2tlQ29tbWFuZElucHV0LFxuICB0eXBlIEludm9rZUNvbW1hbmRPdXRwdXQsXG4gIExhbWJkYUNsaWVudCxcbiAgUHVibGlzaFZlcnNpb25Db21tYW5kLFxuICB0eXBlIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQWxpYXNDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgd2FpdFVudGlsRnVuY3Rpb25VcGRhdGVkVjIsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1sYW1iZGEnO1xuaW1wb3J0IHtcbiAgR2V0SG9zdGVkWm9uZUNvbW1hbmQsXG4gIHR5cGUgR2V0SG9zdGVkWm9uZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRIb3N0ZWRab25lQ29tbWFuZE91dHB1dCxcbiAgTGlzdEhvc3RlZFpvbmVzQnlOYW1lQ29tbWFuZCxcbiAgdHlwZSBMaXN0SG9zdGVkWm9uZXNCeU5hbWVDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEhvc3RlZFpvbmVzQnlOYW1lQ29tbWFuZE91dHB1dCxcbiAgTGlzdEhvc3RlZFpvbmVzQ29tbWFuZCxcbiAgdHlwZSBMaXN0SG9zdGVkWm9uZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEhvc3RlZFpvbmVzQ29tbWFuZE91dHB1dCxcbiAgUm91dGU1M0NsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXJvdXRlLTUzJztcbmltcG9ydCB7XG4gIHR5cGUgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVPYmplY3RzQ29tbWFuZCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kLFxuICBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0LFxuICBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0TG9jYXRpb25Db21tYW5kLFxuICB0eXBlIEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0Q29tbWFuZCxcbiAgdHlwZSBHZXRPYmplY3RDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0LFxuICBMaXN0T2JqZWN0c1YyQ29tbWFuZCxcbiAgdHlwZSBMaXN0T2JqZWN0c1YyQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RPYmplY3RzVjJDb21tYW5kT3V0cHV0LFxuICB0eXBlIFB1dE9iamVjdENvbW1hbmRJbnB1dCxcbiAgUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0LFxuICBTM0NsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7XG4gIEdldFNlY3JldFZhbHVlQ29tbWFuZCxcbiAgdHlwZSBHZXRTZWNyZXRWYWx1ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRTZWNyZXRWYWx1ZUNvbW1hbmRPdXRwdXQsXG4gIFNlY3JldHNNYW5hZ2VyQ2xpZW50LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyJztcbmltcG9ydCB7XG4gIFNGTkNsaWVudCxcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZCxcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZElucHV0LFxuICBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2ZuJztcbmltcG9ydCB7XG4gIEdldFBhcmFtZXRlckNvbW1hbmQsXG4gIHR5cGUgR2V0UGFyYW1ldGVyQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFBhcmFtZXRlckNvbW1hbmRPdXRwdXQsXG4gIFNTTUNsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNzbSc7XG5pbXBvcnQgeyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQsIFNUU0NsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zdHMnO1xuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSAnQGF3cy1zZGsvbGliLXN0b3JhZ2UnO1xuaW1wb3J0IHsgZ2V0RW5kcG9pbnRGcm9tSW5zdHJ1Y3Rpb25zIH0gZnJvbSAnQHNtaXRoeS9taWRkbGV3YXJlLWVuZHBvaW50JztcbmltcG9ydCB0eXBlIHsgTm9kZUh0dHBIYW5kbGVyT3B0aW9ucyB9IGZyb20gJ0BzbWl0aHkvbm9kZS1odHRwLWhhbmRsZXInO1xuaW1wb3J0IHsgQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIsIExvZ2dlciB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3kgfSBmcm9tICdAc21pdGh5L3V0aWwtcmV0cnknO1xuaW1wb3J0IHsgV2FpdGVyUmVzdWx0IH0gZnJvbSAnQHNtaXRoeS91dGlsLXdhaXRlcic7XG5pbXBvcnQgeyBBY2NvdW50QWNjZXNzS2V5Q2FjaGUgfSBmcm9tICcuL2FjY291bnQtY2FjaGUnO1xuaW1wb3J0IHsgY2FjaGVkQXN5bmMgfSBmcm9tICcuL2NhY2hlZCc7XG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSAnLi9zZGstcHJvdmlkZXInO1xuaW1wb3J0IHsgdHJhY2VNZW1iZXJNZXRob2RzIH0gZnJvbSAnLi90cmFjaW5nJztcbmltcG9ydCB7IGRlZmF1bHRDbGlVc2VyQWdlbnQgfSBmcm9tICcuL3VzZXItYWdlbnQnO1xuaW1wb3J0IHsgZGVidWcgfSBmcm9tICcuLi8uLi9sb2dnaW5nJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uRXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L2Vycm9yJztcbmltcG9ydCB7IGZvcm1hdEVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWwvZm9ybWF0LWVycm9yJztcblxuZXhwb3J0IGludGVyZmFjZSBTM0NsaWVudE9wdGlvbnMge1xuICAvKipcbiAgICogSWYgQVBJcyBhcmUgdXNlZCB0aGF0IHJlcXVpcmUgTUQ1IGNoZWNrc3Vtcy5cbiAgICpcbiAgICogU29tZSBTMyBBUElzIGluIFNES3YyIGhhdmUgYSBidWcgdGhhdCBhbHdheXMgcmVxdWlyZXMgdGhlbSB0byB1c2UgYSBNRDUgY2hlY2tzdW0uXG4gICAqIFRoZXNlIEFQSXMgYXJlIG5vdCBnb2luZyB0byBiZSBzdXBwb3J0ZWQgaW4gYSBGSVBTIGVudmlyb25tZW50LlxuICAgKi9cbiAgbmVlZHNNZDVDaGVja3N1bXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFkZGl0aW9uYWwgU0RLIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNka09wdGlvbnMge1xuICAvKipcbiAgICogQWRkaXRpb25hbCBkZXNjcmlwdGl2ZSBzdHJpbmdzIHRoYXQgaW5kaWNhdGUgd2hlcmUgdGhlIFwiQXNzdW1lUm9sZVwiIGNyZWRlbnRpYWxzIGFyZSBjb21pbmcgZnJvbVxuICAgKlxuICAgKiBXaWxsIGJlIHByaW50ZWQgaW4gYW4gZXJyb3IgbWVzc2FnZSB0byBoZWxwIHVzZXJzIGRpYWdub3NlIGF1dGggcHJvYmxlbXMuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlQ3JlZGVudGlhbHNTb3VyY2VEZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLy8gVE9ETzogc3RpbGwgc29tZSBjbGVhbnVwIGhlcmUuIE1ha2UgdGhlIHBhZ2luYXRpb24gZnVuY3Rpb25zIGRvIGFsbCB0aGUgd29yayBoZXJlIGluc3RlYWQgb2YgaW4gaW5kaXZpZHVhbCBwYWNrYWdlcy5cbi8vIEFsc28gYWRkIGFzeW5jL2F3YWl0LiBEb2VzIHRoYXQgYWN0dWFsbHkgbWF0dGVyIGluIHRoaXMgY29udGV4dD8gRmluZCBvdXQgYW5kIHVwZGF0ZSBhY2NvcmRpbmdseS5cblxuLy8gQWxzbyBhZGQgbm90ZXMgdG8gdGhlIFBSIGFib3V0IHdoeSB5b3UgaW1wb3J0ZWQgZXZlcnl0aGluZyBpbmRpdmlkdWFsbHkgYW5kIHVzZWQgJ3R5cGUnIHNvIHJldmlld2VycyBkb24ndCBoYXZlIHRvIGFzay5cblxuZXhwb3J0IGludGVyZmFjZSBDb25maWd1cmF0aW9uT3B0aW9ucyB7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICBjcmVkZW50aWFsczogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXI7XG4gIHJlcXVlc3RIYW5kbGVyOiBOb2RlSHR0cEhhbmRsZXJPcHRpb25zO1xuICByZXRyeVN0cmF0ZWd5OiBDb25maWd1cmVkUmV0cnlTdHJhdGVneTtcbiAgY3VzdG9tVXNlckFnZW50OiBzdHJpbmc7XG4gIGxvZ2dlcj86IExvZ2dlcjtcbiAgczNEaXNhYmxlQm9keVNpZ25pbmc/OiBib29sZWFuO1xuICBjb21wdXRlQ2hlY2tzdW1zPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQXBwU3luY0NsaWVudCB7XG4gIGdldFNjaGVtYUNyZWF0aW9uU3RhdHVzKGlucHV0OiBHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0U2NoZW1hQ3JlYXRpb25TdGF0dXNDb21tYW5kT3V0cHV0PjtcbiAgc3RhcnRTY2hlbWFDcmVhdGlvbihpbnB1dDogU3RhcnRTY2hlbWFDcmVhdGlvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8U3RhcnRTY2hlbWFDcmVhdGlvbkNvbW1hbmRPdXRwdXQ+O1xuICB1cGRhdGVBcGlLZXkoaW5wdXQ6IFVwZGF0ZUFwaUtleUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlQXBpS2V5Q29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZUZ1bmN0aW9uKGlucHV0OiBVcGRhdGVGdW5jdGlvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlRnVuY3Rpb25Db21tYW5kT3V0cHV0PjtcbiAgdXBkYXRlUmVzb2x2ZXIoaW5wdXQ6IFVwZGF0ZVJlc29sdmVyQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVSZXNvbHZlckNvbW1hbmRPdXRwdXQ+O1xuICAvLyBQYWdpbmF0aW9uIGZ1bmN0aW9uc1xuICBsaXN0RnVuY3Rpb25zKGlucHV0OiBMaXN0RnVuY3Rpb25zQ29tbWFuZElucHV0KTogUHJvbWlzZTxGdW5jdGlvbkNvbmZpZ3VyYXRpb25bXT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNsb3VkRm9ybWF0aW9uQ2xpZW50IHtcbiAgY29udGludWVVcGRhdGVSb2xsYmFjayhpbnB1dDogQ29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmRJbnB1dCk6IFByb21pc2U8Q29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmRPdXRwdXQ+O1xuICBjcmVhdGVDaGFuZ2VTZXQoaW5wdXQ6IENyZWF0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCk6IFByb21pc2U8Q3JlYXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD47XG4gIGNyZWF0ZUdlbmVyYXRlZFRlbXBsYXRlKGlucHV0OiBDcmVhdGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8Q3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PjtcbiAgY3JlYXRlU3RhY2soaW5wdXQ6IENyZWF0ZVN0YWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVTdGFja0NvbW1hbmRPdXRwdXQ+O1xuICBkZWxldGVDaGFuZ2VTZXQoaW5wdXQ6IERlbGV0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD47XG4gIGRlbGV0ZUdlbmVyYXRlZFRlbXBsYXRlKGlucHV0OiBEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PjtcbiAgZGVsZXRlU3RhY2soaW5wdXQ6IERlbGV0ZVN0YWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVTdGFja0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZUNoYW5nZVNldChpbnB1dDogRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGUoXG4gICAgaW5wdXQ6IERlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICk6IFByb21pc2U8RGVzY3JpYmVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVJlc291cmNlU2NhbihpbnB1dDogRGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlUmVzb3VyY2VTY2FuQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlU3RhY2tzKGlucHV0OiBEZXNjcmliZVN0YWNrc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdGFja3NDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVTdGFja1Jlc291cmNlcyhpbnB1dDogRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmRPdXRwdXQ+O1xuICBleGVjdXRlQ2hhbmdlU2V0KGlucHV0OiBFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0KTogUHJvbWlzZTxFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD47XG4gIGdldEdlbmVyYXRlZFRlbXBsYXRlKGlucHV0OiBHZXRHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PjtcbiAgZ2V0VGVtcGxhdGUoaW5wdXQ6IEdldFRlbXBsYXRlQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+O1xuICBnZXRUZW1wbGF0ZVN1bW1hcnkoaW5wdXQ6IEdldFRlbXBsYXRlU3VtbWFyeUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0VGVtcGxhdGVTdW1tYXJ5Q29tbWFuZE91dHB1dD47XG4gIGxpc3RFeHBvcnRzKGlucHV0OiBMaXN0RXhwb3J0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEV4cG9ydHNDb21tYW5kT3V0cHV0PjtcbiAgbGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXMoXG4gICAgaW5wdXQ6IExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZE91dHB1dD47XG4gIGxpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXMoXG4gICAgaW5wdXQ6IExpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gICk6IFByb21pc2U8TGlzdFJlc291cmNlU2NhblJlc291cmNlc0NvbW1hbmRPdXRwdXQ+O1xuICBsaXN0UmVzb3VyY2VTY2FucyhpbnB1dD86IExpc3RSZXNvdXJjZVNjYW5zQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0UmVzb3VyY2VTY2Fuc0NvbW1hbmRPdXRwdXQ+O1xuICBsaXN0U3RhY2tzKGlucHV0OiBMaXN0U3RhY2tzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0U3RhY2tzQ29tbWFuZE91dHB1dD47XG4gIHJvbGxiYWNrU3RhY2soaW5wdXQ6IFJvbGxiYWNrU3RhY2tDb21tYW5kSW5wdXQpOiBQcm9taXNlPFJvbGxiYWNrU3RhY2tDb21tYW5kT3V0cHV0PjtcbiAgc3RhcnRSZXNvdXJjZVNjYW4oaW5wdXQ6IFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFydFJlc291cmNlU2NhbkNvbW1hbmRPdXRwdXQ+O1xuICB1cGRhdGVTdGFjayhpbnB1dDogVXBkYXRlU3RhY2tDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVN0YWNrQ29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbihcbiAgICBpbnB1dDogVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmRPdXRwdXQ+O1xuICAvLyBQYWdpbmF0aW9uIGZ1bmN0aW9uc1xuICBkZXNjcmliZVN0YWNrRXZlbnRzKGlucHV0OiBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZE91dHB1dD47XG4gIGxpc3RTdGFja1Jlc291cmNlcyhpbnB1dDogTGlzdFN0YWNrUmVzb3VyY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFja1Jlc291cmNlU3VtbWFyeVtdPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ2xvdWRXYXRjaExvZ3NDbGllbnQge1xuICBkZXNjcmliZUxvZ0dyb3VwcyhpbnB1dDogRGVzY3JpYmVMb2dHcm91cHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlTG9nR3JvdXBzQ29tbWFuZE91dHB1dD47XG4gIGZpbHRlckxvZ0V2ZW50cyhpbnB1dDogRmlsdGVyTG9nRXZlbnRzQ29tbWFuZElucHV0KTogUHJvbWlzZTxGaWx0ZXJMb2dFdmVudHNDb21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29kZUJ1aWxkQ2xpZW50IHtcbiAgdXBkYXRlUHJvamVjdChpbnB1dDogVXBkYXRlUHJvamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlUHJvamVjdENvbW1hbmRPdXRwdXQ+O1xufVxuZXhwb3J0IGludGVyZmFjZSBJRUMyQ2xpZW50IHtcbiAgZGVzY3JpYmVBdmFpbGFiaWxpdHlab25lcyhcbiAgICBpbnB1dDogRGVzY3JpYmVBdmFpbGFiaWxpdHlab25lc0NvbW1hbmRJbnB1dCxcbiAgKTogUHJvbWlzZTxEZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlSW1hZ2VzKGlucHV0OiBEZXNjcmliZUltYWdlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVJbWFnZXNDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVJbnN0YW5jZXMoaW5wdXQ6IERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUluc3RhbmNlc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVJvdXRlVGFibGVzKGlucHV0OiBEZXNjcmliZVJvdXRlVGFibGVzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVJvdXRlVGFibGVzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlU2VjdXJpdHlHcm91cHMoaW5wdXQ6IERlc2NyaWJlU2VjdXJpdHlHcm91cHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlU2VjdXJpdHlHcm91cHNDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVTdWJuZXRzKGlucHV0OiBEZXNjcmliZVN1Ym5ldHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlU3VibmV0c0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVZwY0VuZHBvaW50U2VydmljZXMoXG4gICAgaW5wdXQ6IERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmRJbnB1dCxcbiAgKTogUHJvbWlzZTxEZXNjcmliZVZwY0VuZHBvaW50U2VydmljZXNDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVWcGNzKGlucHV0OiBEZXNjcmliZVZwY3NDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlVnBjc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVZwbkdhdGV3YXlzKGlucHV0OiBEZXNjcmliZVZwbkdhdGV3YXlzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVZwbkdhdGV3YXlzQ29tbWFuZE91dHB1dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVDUkNsaWVudCB7XG4gIGJhdGNoRGVsZXRlSW1hZ2UoaW5wdXQ6IEJhdGNoRGVsZXRlSW1hZ2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPEJhdGNoRGVsZXRlSW1hZ2VDb21tYW5kT3V0cHV0PjtcbiAgYmF0Y2hHZXRJbWFnZShpbnB1dDogQmF0Y2hHZXRJbWFnZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8QmF0Y2hHZXRJbWFnZUNvbW1hbmRPdXRwdXQ+O1xuICBjcmVhdGVSZXBvc2l0b3J5KGlucHV0OiBDcmVhdGVSZXBvc2l0b3J5Q29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVSZXBvc2l0b3J5Q29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlSW1hZ2VzKGlucHV0OiBFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RUNSRGVzY3JpYmVJbWFnZXNDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVSZXBvc2l0b3JpZXMoaW5wdXQ6IERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVJlcG9zaXRvcmllc0NvbW1hbmRPdXRwdXQ+O1xuICBnZXRBdXRob3JpemF0aW9uVG9rZW4oaW5wdXQ6IEdldEF1dGhvcml6YXRpb25Ub2tlbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0QXV0aG9yaXphdGlvblRva2VuQ29tbWFuZE91dHB1dD47XG4gIGxpc3RJbWFnZXMoaW5wdXQ6IExpc3RJbWFnZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RJbWFnZXNDb21tYW5kT3V0cHV0PjtcbiAgcHV0SW1hZ2UoaW5wdXQ6IFB1dEltYWdlQ29tbWFuZElucHV0KTogUHJvbWlzZTxQdXRJbWFnZUNvbW1hbmRPdXRwdXQ+O1xuICBwdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbihcbiAgICBpbnB1dDogUHV0SW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICk6IFByb21pc2U8UHV0SW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRUNTQ2xpZW50IHtcbiAgbGlzdENsdXN0ZXJzKGlucHV0OiBMaXN0Q2x1c3RlcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RDbHVzdGVyc0NvbW1hbmRPdXRwdXQ+O1xuICByZWdpc3RlclRhc2tEZWZpbml0aW9uKGlucHV0OiBSZWdpc3RlclRhc2tEZWZpbml0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxSZWdpc3RlclRhc2tEZWZpbml0aW9uQ29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZVNlcnZpY2UoaW5wdXQ6IFVwZGF0ZVNlcnZpY2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVNlcnZpY2VDb21tYW5kT3V0cHV0PjtcbiAgLy8gV2FpdGVyc1xuICB3YWl0VW50aWxTZXJ2aWNlc1N0YWJsZShpbnB1dDogRGVzY3JpYmVTZXJ2aWNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8V2FpdGVyUmVzdWx0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRWxhc3RpY0xvYWRCYWxhbmNpbmdWMkNsaWVudCB7XG4gIGRlc2NyaWJlTGlzdGVuZXJzKGlucHV0OiBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVMaXN0ZW5lcnNDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVMb2FkQmFsYW5jZXJzKGlucHV0OiBEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVRhZ3MoaW5wdXQ6IERlc2NyaWJlVGFnc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVUYWdzQ29tbWFuZE91dHB1dD47XG4gIC8vIFBhZ2luYXRpb25cbiAgcGFnaW5hdGVEZXNjcmliZUxpc3RlbmVycyhpbnB1dDogRGVzY3JpYmVMaXN0ZW5lcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RlbmVyW10+O1xuICBwYWdpbmF0ZURlc2NyaWJlTG9hZEJhbGFuY2VycyhpbnB1dDogRGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMb2FkQmFsYW5jZXJbXT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUlBTUNsaWVudCB7XG4gIGNyZWF0ZVBvbGljeShpbnB1dDogQ3JlYXRlUG9saWN5Q29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVQb2xpY3lDb21tYW5kT3V0cHV0PjtcbiAgZ2V0UG9saWN5KGlucHV0OiBHZXRQb2xpY3lDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFBvbGljeUNvbW1hbmRPdXRwdXQ+O1xuICBnZXRSb2xlKGlucHV0OiBHZXRSb2xlQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRSb2xlQ29tbWFuZE91dHB1dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUtNU0NsaWVudCB7XG4gIGRlc2NyaWJlS2V5KGlucHV0OiBEZXNjcmliZUtleUNvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVLZXlDb21tYW5kT3V0cHV0PjtcbiAgbGlzdEFsaWFzZXMoaW5wdXQ6IExpc3RBbGlhc2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMYW1iZGFDbGllbnQge1xuICBpbnZva2VDb21tYW5kKGlucHV0OiBJbnZva2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPEludm9rZUNvbW1hbmRPdXRwdXQ+O1xuICBwdWJsaXNoVmVyc2lvbihpbnB1dDogUHVibGlzaFZlcnNpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPFB1Ymxpc2hWZXJzaW9uQ29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZUFsaWFzKGlucHV0OiBVcGRhdGVBbGlhc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0PjtcbiAgdXBkYXRlRnVuY3Rpb25Db2RlKGlucHV0OiBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRPdXRwdXQ+O1xuICB1cGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb24oXG4gICAgaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgKTogUHJvbWlzZTxVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0PjtcbiAgLy8gV2FpdGVyc1xuICB3YWl0VW50aWxGdW5jdGlvblVwZGF0ZWQoZGVsYXlTZWNvbmRzOiBudW1iZXIsIGlucHV0OiBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPFdhaXRlclJlc3VsdD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlNTNDbGllbnQge1xuICBnZXRIb3N0ZWRab25lKGlucHV0OiBHZXRIb3N0ZWRab25lQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRIb3N0ZWRab25lQ29tbWFuZE91dHB1dD47XG4gIGxpc3RIb3N0ZWRab25lcyhpbnB1dDogTGlzdEhvc3RlZFpvbmVzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0SG9zdGVkWm9uZXNDb21tYW5kT3V0cHV0PjtcbiAgbGlzdEhvc3RlZFpvbmVzQnlOYW1lKGlucHV0OiBMaXN0SG9zdGVkWm9uZXNCeU5hbWVDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RIb3N0ZWRab25lc0J5TmFtZUNvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTM0NsaWVudCB7XG4gIGRlbGV0ZU9iamVjdHMoaW5wdXQ6IERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0PjtcbiAgZGVsZXRlT2JqZWN0VGFnZ2luZyhpbnB1dDogRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQ+O1xuICBnZXRCdWNrZXRFbmNyeXB0aW9uKGlucHV0OiBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dD47XG4gIGdldEJ1Y2tldExvY2F0aW9uKGlucHV0OiBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0QnVja2V0TG9jYXRpb25Db21tYW5kT3V0cHV0PjtcbiAgZ2V0T2JqZWN0KGlucHV0OiBHZXRPYmplY3RDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldE9iamVjdENvbW1hbmRPdXRwdXQ+O1xuICBnZXRPYmplY3RUYWdnaW5nKGlucHV0OiBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dD47XG4gIGxpc3RPYmplY3RzVjIoaW5wdXQ6IExpc3RPYmplY3RzVjJDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RPYmplY3RzVjJDb21tYW5kT3V0cHV0PjtcbiAgcHV0T2JqZWN0VGFnZ2luZyhpbnB1dDogUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCk6IFByb21pc2U8UHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQ+O1xuICB1cGxvYWQoaW5wdXQ6IFB1dE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8Q29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VjcmV0c01hbmFnZXJDbGllbnQge1xuICBnZXRTZWNyZXRWYWx1ZShpbnB1dDogR2V0U2VjcmV0VmFsdWVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFNlY3JldFZhbHVlQ29tbWFuZE91dHB1dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNTTUNsaWVudCB7XG4gIGdldFBhcmFtZXRlcihpbnB1dDogR2V0UGFyYW1ldGVyQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRQYXJhbWV0ZXJDb21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3RlcEZ1bmN0aW9uc0NsaWVudCB7XG4gIHVwZGF0ZVN0YXRlTWFjaGluZShpbnB1dDogVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kT3V0cHV0Pjtcbn1cblxuLyoqXG4gKiBCYXNlIGZ1bmN0aW9uYWxpdHkgb2YgU0RLIHdpdGhvdXQgY3JlZGVudGlhbCBmZXRjaGluZ1xuICovXG5AdHJhY2VNZW1iZXJNZXRob2RzXG5leHBvcnQgY2xhc3MgU0RLIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgYWNjb3VudENhY2hlID0gbmV3IEFjY291bnRBY2Nlc3NLZXlDYWNoZSgpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50UmVnaW9uOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogQ29uZmlndXJhdGlvbk9wdGlvbnM7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvZ2dlcj86IExvZ2dlcjtcblxuICAvKipcbiAgICogU1RTIGlzIHVzZWQgdG8gY2hlY2sgY3JlZGVudGlhbCB2YWxpZGl0eSwgZG9uJ3QgZG8gdG9vIG1hbnkgcmV0cmllcy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RzUmV0cnlTdHJhdGVneSA9IG5ldyBDb25maWd1cmVkUmV0cnlTdHJhdGVneSgzLCAoYXR0ZW1wdCkgPT4gMTAwICogKDIgKiogYXR0ZW1wdCkpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIGhhdmUgcHJvb2YgdGhhdCB0aGUgY3JlZGVudGlhbHMgaGF2ZSBub3QgZXhwaXJlZFxuICAgKlxuICAgKiBXZSBuZWVkIHRvIGRvIHNvbWUgbWFudWFsIHBsdW1iaW5nIGFyb3VuZCB0aGlzIGJlY2F1c2UgdGhlIEpTIFNES3YyIHRyZWF0cyBgRXhwaXJlZFRva2VuYFxuICAgKiBhcyByZXRyaWFibGUgYW5kIHdlIGhhdmUgaGVmdHkgcmV0cmllcyBvbiBDRk4gY2FsbHMgbWFraW5nIHRoZSBDTEkgaGFuZyBmb3IgYSBnb29kIDE1IG1pbnV0ZXNcbiAgICogaWYgdGhlIGNyZWRlbnRpYWxzIGhhdmUgZXhwaXJlZC5cbiAgICovXG4gIHByaXZhdGUgX2NyZWRlbnRpYWxzVmFsaWRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmVkUHJvdmlkZXI6IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyLFxuICAgIHJlZ2lvbjogc3RyaW5nLFxuICAgIHJlcXVlc3RIYW5kbGVyOiBOb2RlSHR0cEhhbmRsZXJPcHRpb25zLFxuICAgIGxvZ2dlcj86IExvZ2dlcixcbiAgKSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICByZWdpb24sXG4gICAgICBjcmVkZW50aWFsczogY3JlZFByb3ZpZGVyLFxuICAgICAgcmVxdWVzdEhhbmRsZXIsXG4gICAgICByZXRyeVN0cmF0ZWd5OiBuZXcgQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3koNywgKGF0dGVtcHQpID0+IDMwMCAqICgyICoqIGF0dGVtcHQpKSxcbiAgICAgIGN1c3RvbVVzZXJBZ2VudDogZGVmYXVsdENsaVVzZXJBZ2VudCgpLFxuICAgICAgbG9nZ2VyLFxuICAgIH07XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5jdXJyZW50UmVnaW9uID0gcmVnaW9uO1xuICB9XG5cbiAgcHVibGljIGFwcGVuZEN1c3RvbVVzZXJBZ2VudCh1c2VyQWdlbnREYXRhPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF1c2VyQWdlbnREYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudEN1c3RvbVVzZXJBZ2VudCA9IHRoaXMuY29uZmlnLmN1c3RvbVVzZXJBZ2VudDtcbiAgICB0aGlzLmNvbmZpZy5jdXN0b21Vc2VyQWdlbnQgPSBjdXJyZW50Q3VzdG9tVXNlckFnZW50ID8gYCR7Y3VycmVudEN1c3RvbVVzZXJBZ2VudH0gJHt1c2VyQWdlbnREYXRhfWAgOiB1c2VyQWdlbnREYXRhO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUN1c3RvbVVzZXJBZ2VudCh1c2VyQWdlbnREYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZy5jdXN0b21Vc2VyQWdlbnQgPSB0aGlzLmNvbmZpZy5jdXN0b21Vc2VyQWdlbnQ/LnJlcGxhY2UodXNlckFnZW50RGF0YSwgJycpO1xuICB9XG5cbiAgcHVibGljIGFwcHN5bmMoKTogSUFwcFN5bmNDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBBcHBTeW5jQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0U2NoZW1hQ3JlYXRpb25TdGF0dXM6IChcbiAgICAgICAgaW5wdXQ6IEdldFNjaGVtYUNyZWF0aW9uU3RhdHVzQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHN0YXJ0U2NoZW1hQ3JlYXRpb246IChpbnB1dDogU3RhcnRTY2hlbWFDcmVhdGlvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8U3RhcnRTY2hlbWFDcmVhdGlvbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlQXBpS2V5OiAoaW5wdXQ6IFVwZGF0ZUFwaUtleUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlQXBpS2V5Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZUFwaUtleUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHVwZGF0ZUZ1bmN0aW9uOiAoaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVGdW5jdGlvbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVGdW5jdGlvbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHVwZGF0ZVJlc29sdmVyOiAoaW5wdXQ6IFVwZGF0ZVJlc29sdmVyQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVSZXNvbHZlckNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVSZXNvbHZlckNvbW1hbmQoaW5wdXQpKSxcblxuICAgICAgLy8gUGFnaW5hdGlvbiBGdW5jdGlvbnNcbiAgICAgIGxpc3RGdW5jdGlvbnM6IGFzeW5jIChpbnB1dDogTGlzdEZ1bmN0aW9uc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RnVuY3Rpb25Db25maWd1cmF0aW9uW10+ID0+IHtcbiAgICAgICAgY29uc3QgZnVuY3Rpb25zID0gQXJyYXk8RnVuY3Rpb25Db25maWd1cmF0aW9uPigpO1xuICAgICAgICBjb25zdCBwYWdpbmF0b3IgPSBwYWdpbmF0ZUxpc3RGdW5jdGlvbnMoeyBjbGllbnQgfSwgaW5wdXQpO1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IHBhZ2Ugb2YgcGFnaW5hdG9yKSB7XG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goLi4uKHBhZ2UuZnVuY3Rpb25zIHx8IFtdKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucztcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBjbG91ZEZvcm1hdGlvbigpOiBJQ2xvdWRGb3JtYXRpb25DbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBDbG91ZEZvcm1hdGlvbkNsaWVudCh7XG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgIHJldHJ5U3RyYXRlZ3k6IG5ldyBDb25maWd1cmVkUmV0cnlTdHJhdGVneSgxMSwgKGF0dGVtcHQ6IG51bWJlcikgPT4gMTAwMCAqICgyICoqIGF0dGVtcHQpKSxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGludWVVcGRhdGVSb2xsYmFjazogYXN5bmMgKFxuICAgICAgICBpbnB1dDogQ29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8Q29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBDb250aW51ZVVwZGF0ZVJvbGxiYWNrQ29tbWFuZChpbnB1dCkpLFxuICAgICAgY3JlYXRlQ2hhbmdlU2V0OiAoaW5wdXQ6IENyZWF0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCk6IFByb21pc2U8Q3JlYXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IENyZWF0ZUNoYW5nZVNldENvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGNyZWF0ZUdlbmVyYXRlZFRlbXBsYXRlOiAoXG4gICAgICAgIGlucHV0OiBDcmVhdGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8Q3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgQ3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kKGlucHV0KSksXG4gICAgICBjcmVhdGVTdGFjazogKGlucHV0OiBDcmVhdGVTdGFja0NvbW1hbmRJbnB1dCk6IFByb21pc2U8Q3JlYXRlU3RhY2tDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgQ3JlYXRlU3RhY2tDb21tYW5kKGlucHV0KSksXG4gICAgICBkZWxldGVDaGFuZ2VTZXQ6IChpbnB1dDogRGVsZXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVsZXRlQ2hhbmdlU2V0Q29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVsZXRlR2VuZXJhdGVkVGVtcGxhdGU6IChcbiAgICAgICAgaW5wdXQ6IERlbGV0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlbGV0ZVN0YWNrOiAoaW5wdXQ6IERlbGV0ZVN0YWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVTdGFja0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZWxldGVTdGFja0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlQ2hhbmdlU2V0OiAoaW5wdXQ6IERlc2NyaWJlQ2hhbmdlU2V0Q29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUNoYW5nZVNldENvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUNoYW5nZVNldENvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGU6IChcbiAgICAgICAgaW5wdXQ6IERlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPERlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlUmVzb3VyY2VTY2FuOiAoaW5wdXQ6IERlc2NyaWJlUmVzb3VyY2VTY2FuQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVJlc291cmNlU2NhbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVJlc291cmNlU2NhbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlU3RhY2tzOiAoaW5wdXQ6IERlc2NyaWJlU3RhY2tzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVN0YWNrc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlU3RhY2tSZXNvdXJjZXM6IChpbnB1dDogRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVN0YWNrUmVzb3VyY2VzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZXhlY3V0ZUNoYW5nZVNldDogKGlucHV0OiBFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0KTogUHJvbWlzZTxFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEV4ZWN1dGVDaGFuZ2VTZXRDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRHZW5lcmF0ZWRUZW1wbGF0ZTogKGlucHV0OiBHZXRHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRUZW1wbGF0ZTogKGlucHV0OiBHZXRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0VGVtcGxhdGVDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0VGVtcGxhdGVDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRUZW1wbGF0ZVN1bW1hcnk6IChpbnB1dDogR2V0VGVtcGxhdGVTdW1tYXJ5Q29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRUZW1wbGF0ZVN1bW1hcnlDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0VGVtcGxhdGVTdW1tYXJ5Q29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdEV4cG9ydHM6IChpbnB1dDogTGlzdEV4cG9ydHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RFeHBvcnRzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RFeHBvcnRzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXM6IChcbiAgICAgICAgaW5wdXQ6IExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxMaXN0UmVzb3VyY2VTY2FuUmVsYXRlZFJlc291cmNlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0UmVzb3VyY2VTY2FuUmVsYXRlZFJlc291cmNlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXM6IChcbiAgICAgICAgaW5wdXQ6IExpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPExpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXNDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgTGlzdFJlc291cmNlU2NhblJlc291cmNlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RSZXNvdXJjZVNjYW5zOiAoaW5wdXQ6IExpc3RSZXNvdXJjZVNjYW5zQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0UmVzb3VyY2VTY2Fuc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0UmVzb3VyY2VTY2Fuc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RTdGFja3M6IChpbnB1dDogTGlzdFN0YWNrc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdFN0YWNrc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0U3RhY2tzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgcm9sbGJhY2tTdGFjazogKGlucHV0OiBSb2xsYmFja1N0YWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxSb2xsYmFja1N0YWNrQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFJvbGxiYWNrU3RhY2tDb21tYW5kKGlucHV0KSksXG4gICAgICBzdGFydFJlc291cmNlU2NhbjogKGlucHV0OiBTdGFydFJlc291cmNlU2NhbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8U3RhcnRSZXNvdXJjZVNjYW5Db21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgU3RhcnRSZXNvdXJjZVNjYW5Db21tYW5kKGlucHV0KSksXG4gICAgICB1cGRhdGVTdGFjazogKGlucHV0OiBVcGRhdGVTdGFja0NvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlU3RhY2tDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlU3RhY2tDb21tYW5kKGlucHV0KSksXG4gICAgICB1cGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb246IChcbiAgICAgICAgaW5wdXQ6IFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8VXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlU3RhY2tFdmVudHM6IChpbnB1dDogRGVzY3JpYmVTdGFja0V2ZW50c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdGFja0V2ZW50c0NvbW1hbmRPdXRwdXQ+ID0+IHtcbiAgICAgICAgcmV0dXJuIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZChpbnB1dCkpO1xuICAgICAgfSxcbiAgICAgIGxpc3RTdGFja1Jlc291cmNlczogYXN5bmMgKGlucHV0OiBMaXN0U3RhY2tSZXNvdXJjZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPFN0YWNrUmVzb3VyY2VTdW1tYXJ5W10+ID0+IHtcbiAgICAgICAgY29uc3Qgc3RhY2tSZXNvdXJjZXMgPSBBcnJheTxTdGFja1Jlc291cmNlU3VtbWFyeT4oKTtcbiAgICAgICAgY29uc3QgcGFnaW5hdG9yID0gcGFnaW5hdGVMaXN0U3RhY2tSZXNvdXJjZXMoeyBjbGllbnQgfSwgaW5wdXQpO1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IHBhZ2Ugb2YgcGFnaW5hdG9yKSB7XG4gICAgICAgICAgc3RhY2tSZXNvdXJjZXMucHVzaCguLi4ocGFnZT8uU3RhY2tSZXNvdXJjZVN1bW1hcmllcyB8fCBbXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGFja1Jlc291cmNlcztcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBjbG91ZFdhdGNoTG9ncygpOiBJQ2xvdWRXYXRjaExvZ3NDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBDbG91ZFdhdGNoTG9nc0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaWJlTG9nR3JvdXBzOiAoaW5wdXQ6IERlc2NyaWJlTG9nR3JvdXBzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUxvZ0dyb3Vwc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUxvZ0dyb3Vwc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGZpbHRlckxvZ0V2ZW50czogKGlucHV0OiBGaWx0ZXJMb2dFdmVudHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPEZpbHRlckxvZ0V2ZW50c0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBGaWx0ZXJMb2dFdmVudHNDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBjb2RlQnVpbGQoKTogSUNvZGVCdWlsZENsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IENvZGVCdWlsZENsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZVByb2plY3Q6IChpbnB1dDogVXBkYXRlUHJvamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlUHJvamVjdENvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVQcm9qZWN0Q29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZWMyKCk6IElFQzJDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBFQzJDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzOiAoXG4gICAgICAgIGlucHV0OiBEZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxEZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZUltYWdlczogKGlucHV0OiBEZXNjcmliZUltYWdlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVJbWFnZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVJbWFnZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZUluc3RhbmNlczogKGlucHV0OiBEZXNjcmliZUluc3RhbmNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVJbnN0YW5jZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVJbnN0YW5jZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVJvdXRlVGFibGVzOiAoaW5wdXQ6IERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVSb3V0ZVRhYmxlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlU2VjdXJpdHlHcm91cHM6IChcbiAgICAgICAgaW5wdXQ6IERlc2NyaWJlU2VjdXJpdHlHcm91cHNDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPERlc2NyaWJlU2VjdXJpdHlHcm91cHNDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlU3VibmV0czogKGlucHV0OiBEZXNjcmliZVN1Ym5ldHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlU3VibmV0c0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVN1Ym5ldHNDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVZwY0VuZHBvaW50U2VydmljZXM6IChcbiAgICAgICAgaW5wdXQ6IERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8RGVzY3JpYmVWcGNFbmRwb2ludFNlcnZpY2VzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlVnBjczogKGlucHV0OiBEZXNjcmliZVZwY3NDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlVnBjc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVZwY3NDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVZwbkdhdGV3YXlzOiAoaW5wdXQ6IERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVWcG5HYXRld2F5c0NvbW1hbmQoaW5wdXQpKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGVjcigpOiBJRUNSQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgRUNSQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgYmF0Y2hEZWxldGVJbWFnZTogKGlucHV0OiBCYXRjaERlbGV0ZUltYWdlQ29tbWFuZElucHV0KTogUHJvbWlzZTxCYXRjaERlbGV0ZUltYWdlQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEJhdGNoRGVsZXRlSW1hZ2VDb21tYW5kKGlucHV0KSksXG4gICAgICBiYXRjaEdldEltYWdlOiAoaW5wdXQ6IEJhdGNoR2V0SW1hZ2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPEJhdGNoR2V0SW1hZ2VDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgQmF0Y2hHZXRJbWFnZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGNyZWF0ZVJlcG9zaXRvcnk6IChpbnB1dDogQ3JlYXRlUmVwb3NpdG9yeUNvbW1hbmRJbnB1dCk6IFByb21pc2U8Q3JlYXRlUmVwb3NpdG9yeUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBDcmVhdGVSZXBvc2l0b3J5Q29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVJbWFnZXM6IChpbnB1dDogRUNSRGVzY3JpYmVJbWFnZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPEVDUkRlc2NyaWJlSW1hZ2VzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEVDUkRlc2NyaWJlSW1hZ2VzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVSZXBvc2l0b3JpZXM6IChpbnB1dDogRGVzY3JpYmVSZXBvc2l0b3JpZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0QXV0aG9yaXphdGlvblRva2VuOiAoaW5wdXQ6IEdldEF1dGhvcml6YXRpb25Ub2tlbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0QXV0aG9yaXphdGlvblRva2VuQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldEF1dGhvcml6YXRpb25Ub2tlbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RJbWFnZXM6IChpbnB1dDogTGlzdEltYWdlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEltYWdlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0SW1hZ2VzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgcHV0SW1hZ2U6IChpbnB1dDogUHV0SW1hZ2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPFB1dEltYWdlQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFB1dEltYWdlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgcHV0SW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb246IChcbiAgICAgICAgaW5wdXQ6IFB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxQdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBQdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbkNvbW1hbmQoaW5wdXQpKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGVjcygpOiBJRUNTQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgRUNTQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgbGlzdENsdXN0ZXJzOiAoaW5wdXQ6IExpc3RDbHVzdGVyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdENsdXN0ZXJzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RDbHVzdGVyc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHJlZ2lzdGVyVGFza0RlZmluaXRpb246IChcbiAgICAgICAgaW5wdXQ6IFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgUmVnaXN0ZXJUYXNrRGVmaW5pdGlvbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHVwZGF0ZVNlcnZpY2U6IChpbnB1dDogVXBkYXRlU2VydmljZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlU2VydmljZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVTZXJ2aWNlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgLy8gV2FpdGVyc1xuICAgICAgd2FpdFVudGlsU2VydmljZXNTdGFibGU6IChpbnB1dDogRGVzY3JpYmVTZXJ2aWNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8V2FpdGVyUmVzdWx0PiA9PiB7XG4gICAgICAgIHJldHVybiB3YWl0VW50aWxTZXJ2aWNlc1N0YWJsZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGllbnQsXG4gICAgICAgICAgICBtYXhXYWl0VGltZTogNjAwLFxuICAgICAgICAgICAgbWluRGVsYXk6IDYsXG4gICAgICAgICAgICBtYXhEZWxheTogNixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlucHV0LFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGVsYnYyKCk6IElFbGFzdGljTG9hZEJhbGFuY2luZ1YyQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgRWxhc3RpY0xvYWRCYWxhbmNpbmdWMkNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzOiAoaW5wdXQ6IERlc2NyaWJlTGlzdGVuZXJzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlTG9hZEJhbGFuY2VyczogKGlucHV0OiBEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVRhZ3M6IChpbnB1dDogRGVzY3JpYmVUYWdzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVRhZ3NDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVUYWdzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgLy8gUGFnaW5hdGlvbiBGdW5jdGlvbnNcbiAgICAgIHBhZ2luYXRlRGVzY3JpYmVMaXN0ZW5lcnM6IGFzeW5jIChpbnB1dDogRGVzY3JpYmVMaXN0ZW5lcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RlbmVyW10+ID0+IHtcbiAgICAgICAgY29uc3QgbGlzdGVuZXJzID0gQXJyYXk8TGlzdGVuZXI+KCk7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRvciA9IHBhZ2luYXRlRGVzY3JpYmVMaXN0ZW5lcnMoeyBjbGllbnQgfSwgaW5wdXQpO1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IHBhZ2Ugb2YgcGFnaW5hdG9yKSB7XG4gICAgICAgICAgbGlzdGVuZXJzLnB1c2goLi4uKHBhZ2U/Lkxpc3RlbmVycyB8fCBbXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaXN0ZW5lcnM7XG4gICAgICB9LFxuICAgICAgcGFnaW5hdGVEZXNjcmliZUxvYWRCYWxhbmNlcnM6IGFzeW5jIChpbnB1dDogRGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMb2FkQmFsYW5jZXJbXT4gPT4ge1xuICAgICAgICBjb25zdCBsb2FkQmFsYW5jZXJzID0gQXJyYXk8TG9hZEJhbGFuY2VyPigpO1xuICAgICAgICBjb25zdCBwYWdpbmF0b3IgPSBwYWdpbmF0ZURlc2NyaWJlTG9hZEJhbGFuY2Vycyh7IGNsaWVudCB9LCBpbnB1dCk7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgcGFnZSBvZiBwYWdpbmF0b3IpIHtcbiAgICAgICAgICBsb2FkQmFsYW5jZXJzLnB1c2goLi4uKHBhZ2U/LkxvYWRCYWxhbmNlcnMgfHwgW10pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9hZEJhbGFuY2VycztcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBpYW0oKTogSUlBTUNsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IElBTUNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNyZWF0ZVBvbGljeTogKGlucHV0OiBDcmVhdGVQb2xpY3lDb21tYW5kSW5wdXQpOiBQcm9taXNlPENyZWF0ZVBvbGljeUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBDcmVhdGVQb2xpY3lDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRQb2xpY3k6IChpbnB1dDogR2V0UG9saWN5Q29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRQb2xpY3lDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0UG9saWN5Q29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0Um9sZTogKGlucHV0OiBHZXRSb2xlQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRSb2xlQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IEdldFJvbGVDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBrbXMoKTogSUtNU0NsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEtNU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaWJlS2V5OiAoaW5wdXQ6IERlc2NyaWJlS2V5Q29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUtleUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUtleUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RBbGlhc2VzOiAoaW5wdXQ6IExpc3RBbGlhc2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0QWxpYXNlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGxhbWJkYSgpOiBJTGFtYmRhQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgTGFtYmRhQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgaW52b2tlQ29tbWFuZDogKGlucHV0OiBJbnZva2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPEludm9rZUNvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBJbnZva2VDb21tYW5kKGlucHV0KSksXG4gICAgICBwdWJsaXNoVmVyc2lvbjogKGlucHV0OiBQdWJsaXNoVmVyc2lvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8UHVibGlzaFZlcnNpb25Db21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgUHVibGlzaFZlcnNpb25Db21tYW5kKGlucHV0KSksXG4gICAgICB1cGRhdGVBbGlhczogKGlucHV0OiBVcGRhdGVBbGlhc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlQWxpYXNDb21tYW5kKGlucHV0KSksXG4gICAgICB1cGRhdGVGdW5jdGlvbkNvZGU6IChpbnB1dDogVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uOiAoXG4gICAgICAgIGlucHV0OiBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kKGlucHV0KSksXG4gICAgICAvLyBXYWl0ZXJzXG4gICAgICB3YWl0VW50aWxGdW5jdGlvblVwZGF0ZWQ6IChcbiAgICAgICAgZGVsYXlTZWNvbmRzOiBudW1iZXIsXG4gICAgICAgIGlucHV0OiBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPFdhaXRlclJlc3VsdD4gPT4ge1xuICAgICAgICByZXR1cm4gd2FpdFVudGlsRnVuY3Rpb25VcGRhdGVkVjIoXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xpZW50LFxuICAgICAgICAgICAgbWF4RGVsYXk6IGRlbGF5U2Vjb25kcyxcbiAgICAgICAgICAgIG1pbkRlbGF5OiBkZWxheVNlY29uZHMsXG4gICAgICAgICAgICBtYXhXYWl0VGltZTogZGVsYXlTZWNvbmRzICogNjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbnB1dCxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyByb3V0ZTUzKCk6IElSb3V0ZTUzQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgUm91dGU1M0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldEhvc3RlZFpvbmU6IChpbnB1dDogR2V0SG9zdGVkWm9uZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0SG9zdGVkWm9uZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRIb3N0ZWRab25lQ29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdEhvc3RlZFpvbmVzOiAoaW5wdXQ6IExpc3RIb3N0ZWRab25lc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEhvc3RlZFpvbmVzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RIb3N0ZWRab25lc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RIb3N0ZWRab25lc0J5TmFtZTogKGlucHV0OiBMaXN0SG9zdGVkWm9uZXNCeU5hbWVDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RIb3N0ZWRab25lc0J5TmFtZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0SG9zdGVkWm9uZXNCeU5hbWVDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzMygpOiBJUzNDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTM0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlbGV0ZU9iamVjdHM6IChpbnB1dDogRGVsZXRlT2JqZWN0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZWxldGVPYmplY3RzQ29tbWFuZCh7XG4gICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgQ2hlY2tzdW1BbGdvcml0aG06ICdTSEEyNTYnLFxuICAgICAgICB9KSksXG4gICAgICBkZWxldGVPYmplY3RUYWdnaW5nOiAoaW5wdXQ6IERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGdldEJ1Y2tldEVuY3J5cHRpb246IChpbnB1dDogR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0QnVja2V0TG9jYXRpb246IChpbnB1dDogR2V0QnVja2V0TG9jYXRpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0T2JqZWN0OiAoaW5wdXQ6IEdldE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0T2JqZWN0Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldE9iamVjdENvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGdldE9iamVjdFRhZ2dpbmc6IChpbnB1dDogR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdE9iamVjdHNWMjogKGlucHV0OiBMaXN0T2JqZWN0c1YyQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0T2JqZWN0c1YyQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RPYmplY3RzVjJDb21tYW5kKGlucHV0KSksXG4gICAgICBwdXRPYmplY3RUYWdnaW5nOiAoaW5wdXQ6IFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQpOiBQcm9taXNlPFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmQoe1xuICAgICAgICAgIC4uLmlucHV0LFxuICAgICAgICAgIENoZWNrc3VtQWxnb3JpdGhtOiAnU0hBMjU2JyxcbiAgICAgICAgfSkpLFxuICAgICAgdXBsb2FkOiAoaW5wdXQ6IFB1dE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8Q29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0PiA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdXBsb2FkID0gbmV3IFVwbG9hZCh7XG4gICAgICAgICAgICBjbGllbnQsXG4gICAgICAgICAgICBwYXJhbXM6IHsgLi4uaW5wdXQsIENoZWNrc3VtQWxnb3JpdGhtOiAnU0hBMjU2JyB9LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIHVwbG9hZC5kb25lKCk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKGBVcGxvYWQgZmFpbGVkOiAke2Zvcm1hdEVycm9yTWVzc2FnZShlKX1gKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHNlY3JldHNNYW5hZ2VyKCk6IElTZWNyZXRzTWFuYWdlckNsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0U2VjcmV0VmFsdWU6IChpbnB1dDogR2V0U2VjcmV0VmFsdWVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFNlY3JldFZhbHVlQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldFNlY3JldFZhbHVlQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3NtKCk6IElTU01DbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTU01DbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBnZXRQYXJhbWV0ZXI6IChpbnB1dDogR2V0UGFyYW1ldGVyQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRQYXJhbWV0ZXJDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0UGFyYW1ldGVyQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RlcEZ1bmN0aW9ucygpOiBJU3RlcEZ1bmN0aW9uc0NsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFNGTkNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZTogKGlucHV0OiBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVN0YXRlTWFjaGluZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVdTIFNESyB2MyByZXF1aXJlcyBhIGNsaWVudCBjb25maWcgYW5kIGEgY29tbWFuZCBpbiBvcmRlciB0byBnZXQgYW4gZW5kcG9pbnQgZm9yXG4gICAqIGFueSBnaXZlbiBzZXJ2aWNlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFVybFN1ZmZpeChyZWdpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgY2ZuID0gbmV3IENsb3VkRm9ybWF0aW9uQ2xpZW50KHsgcmVnaW9uIH0pO1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYXdhaXQgZ2V0RW5kcG9pbnRGcm9tSW5zdHJ1Y3Rpb25zKHt9LCBEZXNjcmliZVN0YWNrUmVzb3VyY2VzQ29tbWFuZCwgeyAuLi5jZm4uY29uZmlnIH0pO1xuICAgIHJldHVybiBlbmRwb2ludC51cmwuaG9zdG5hbWUuc3BsaXQoYCR7cmVnaW9ufS5gKS5wb3AoKSE7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3VycmVudEFjY291bnQoKTogUHJvbWlzZTxBY2NvdW50PiB7XG4gICAgcmV0dXJuIGNhY2hlZEFzeW5jKHRoaXMsIENVUlJFTlRfQUNDT1VOVF9LRVksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNyZWRzID0gYXdhaXQgdGhpcy5jcmVkUHJvdmlkZXIoKTtcbiAgICAgIHJldHVybiBTREsuYWNjb3VudENhY2hlLmZldGNoKGNyZWRzLmFjY2Vzc0tleUlkLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIGlmIHdlIGRvbid0IGhhdmUgb25lLCByZXNvbHZlIGZyb20gU1RTIGFuZCBzdG9yZSBpbiBjYWNoZS5cbiAgICAgICAgZGVidWcoJ0xvb2tpbmcgdXAgZGVmYXVsdCBhY2NvdW50IElEIGZyb20gU1RTJyk7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTVFNDbGllbnQoe1xuICAgICAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgICAgIHJldHJ5U3RyYXRlZ3k6IHRoaXMuc3RzUmV0cnlTdHJhdGVneSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kKHt9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2xpZW50LnNlbmQoY29tbWFuZCk7XG4gICAgICAgIGNvbnN0IGFjY291bnRJZCA9IHJlc3VsdC5BY2NvdW50O1xuICAgICAgICBjb25zdCBwYXJ0aXRpb24gPSByZXN1bHQuQXJuIS5zcGxpdCgnOicpWzFdO1xuICAgICAgICBpZiAoIWFjY291bnRJZCkge1xuICAgICAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKFwiU1RTIGRpZG4ndCByZXR1cm4gYW4gYWNjb3VudCBJRFwiKTtcbiAgICAgICAgfVxuICAgICAgICBkZWJ1ZygnRGVmYXVsdCBhY2NvdW50IElEOicsIGFjY291bnRJZCk7XG5cbiAgICAgICAgLy8gU2F2ZSBhbm90aGVyIFNUUyBjYWxsIGxhdGVyIGlmIHRoaXMgb25lIGFscmVhZHkgc3VjY2VlZGVkXG4gICAgICAgIHRoaXMuX2NyZWRlbnRpYWxzVmFsaWRhdGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHsgYWNjb3VudElkLCBwYXJ0aXRpb24gfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2Ugc3VyZSB0aGUgdGhlIGN1cnJlbnQgY3JlZGVudGlhbHMgYXJlIG5vdCBleHBpcmVkXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGVDcmVkZW50aWFscygpIHtcbiAgICBpZiAodGhpcy5fY3JlZGVudGlhbHNWYWxpZGF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjbGllbnQgPSBuZXcgU1RTQ2xpZW50KHsgLi4udGhpcy5jb25maWcsIHJldHJ5U3RyYXRlZ3k6IHRoaXMuc3RzUmV0cnlTdHJhdGVneSB9KTtcbiAgICBhd2FpdCBjbGllbnQuc2VuZChuZXcgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kKHt9KSk7XG4gICAgdGhpcy5fY3JlZGVudGlhbHNWYWxpZGF0ZWQgPSB0cnVlO1xuICB9XG59XG5cbmNvbnN0IENVUlJFTlRfQUNDT1VOVF9LRVkgPSBTeW1ib2woJ2N1cnJlbnRfYWNjb3VudF9rZXknKTtcbiJdfQ==
@@ -58,4 +58,4 @@ function traceMemberMethods(constructor) {
58
58
  Object.defineProperty(constructor.prototype, name, newDescriptor);
59
59
  }
60
60
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRyYWNpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxzQ0FFQztBQUtELDhCQU1DO0FBaUNELGdEQU9DO0FBeERELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNwQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFZixTQUFnQixhQUFhLENBQUMsT0FBZ0I7SUFDNUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUNwQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixTQUFTLENBQUMsRUFBVSxFQUFFLFNBQWtCLEVBQUUsTUFBZTtJQUN2RSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLElBQUksYUFBYSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEYsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxTQUFTLENBQUMsUUFBZ0IsRUFBRSxZQUFvQixFQUFFLFVBQThCLEVBQUUsZUFBd0I7SUFDakgsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUM1QixNQUFNLFNBQVMsR0FBRyxPQUFPLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztJQUVuRixVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBRyxJQUFXO1FBQ3pDLE1BQU0sTUFBTSxHQUFJLElBQVksQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLElBQUksQ0FBQSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUFDLENBQUM7UUFFcEYsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxhQUFhLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoSSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBRVosTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxHQUFHLFlBQVksT0FBTyxFQUFFLENBQUM7WUFDM0IsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDdEIsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksQ0FBQyxDQUFDO1lBQ1osT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLFdBQXFCOztJQUN0RCxtQkFBbUI7SUFDbkIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekcsSUFBSSxPQUFPLFVBQVUsQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7WUFBQyxTQUFTO1FBQUMsQ0FBQztRQUN6RCxNQUFNLGFBQWEsR0FBRyxNQUFBLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxtQ0FBSSxVQUFVLENBQUM7UUFDekcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNwRSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTG9nZ2VyIH0gZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5cbmxldCBFTkFCTEVEID0gZmFsc2U7XG5sZXQgSU5ERU5UID0gMDtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNka1RyYWNpbmcoZW5hYmxlZDogYm9vbGVhbikge1xuICBFTkFCTEVEID0gZW5hYmxlZDtcbn1cblxuLyoqXG4gKiBNZXRob2QgZGVjb3JhdG9yIHRvIHRyYWNlIGEgc2luZ2xlIHN0YXRpYyBvciBtZW1iZXIgbWV0aG9kLCBhbnkgdGltZSBpdCdzIGNhbGxlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsbFRyYWNlKGZuOiBzdHJpbmcsIGNsYXNzTmFtZT86IHN0cmluZywgbG9nZ2VyPzogTG9nZ2VyKSB7XG4gIGlmICghRU5BQkxFRCB8fCAhbG9nZ2VyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nZ2VyLmluZm8oYFt0cmFjZV0gJHsnICcucmVwZWF0KElOREVOVCl9JHtjbGFzc05hbWUgfHwgJyhhbm9ueW1vdXMpJ30jJHtmbn0oKWApO1xufVxuXG4vKipcbiAqIE1ldGhvZCBkZWNvcmF0b3IgdG8gdHJhY2UgYSBzaW5nbGUgbWVtYmVyIG1ldGhvZCBhbnkgdGltZSBpdCdzIGNhbGxlZFxuICovXG5mdW5jdGlvbiB0cmFjZUNhbGwocmVjZWl2ZXI6IG9iamVjdCwgX3Byb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvciwgcGFyZW50Q2xhc3NOYW1lPzogc3RyaW5nKSB7XG4gIGNvbnN0IGZuID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgY29uc3QgY2xhc3NOYW1lID0gdHlwZW9mIHJlY2VpdmVyID09PSAnZnVuY3Rpb24nID8gcmVjZWl2ZXIubmFtZSA6IHBhcmVudENsYXNzTmFtZTtcblxuICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgY29uc3QgbG9nZ2VyID0gKHRoaXMgYXMgYW55KS5sb2dnZXI7XG4gICAgaWYgKCFFTkFCTEVEIHx8IHR5cGVvZiBsb2dnZXI/LmluZm8gIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3MpOyB9XG5cbiAgICBsb2dnZXIuaW5mby5hcHBseShsb2dnZXIsIFtgW3RyYWNlXSAkeycgJy5yZXBlYXQoSU5ERU5UKX0ke2NsYXNzTmFtZSB8fCB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfHwgJyhhbm9ueW1vdXMpJ30jJHtmbi5uYW1lfSgpYF0pO1xuICAgIElOREVOVCArPSAyO1xuXG4gICAgY29uc3QgcmV0ID0gZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgaWYgKHJldCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIHJldHVybiByZXQuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIElOREVOVCAtPSAyO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIElOREVOVCAtPSAyO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gIH07XG4gIHJldHVybiBkZXNjcmlwdG9yO1xufVxuXG4vKipcbiAqIENsYXNzIGRlY29yYXRvciwgZW5hYmxlIHRyYWNpbmcgZm9yIGFsbCBtZW1iZXIgbWV0aG9kcyBvbiB0aGlzIGNsYXNzXG4gKiBAZGVwcmVjYXRlZCB0aGlzIGRvZXNuJ3Qgd29yayB3ZWxsIHdpdGggbG9jYWxpemVkIGxvZ2dpbmcgaW5zdGFuY2VzLCBkb24ndCB1c2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlTWVtYmVyTWV0aG9kcyhjb25zdHJ1Y3RvcjogRnVuY3Rpb24pIHtcbiAgLy8gSW5zdGFuY2UgbWVtYmVyc1xuICBmb3IgKGNvbnN0IFtuYW1lLCBkZXNjcmlwdG9yXSBvZiBPYmplY3QuZW50cmllcyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhjb25zdHJ1Y3Rvci5wcm90b3R5cGUpKSkge1xuICAgIGlmICh0eXBlb2YgZGVzY3JpcHRvci52YWx1ZSAhPT0gJ2Z1bmN0aW9uJykgeyBjb250aW51ZTsgfVxuICAgIGNvbnN0IG5ld0Rlc2NyaXB0b3IgPSB0cmFjZUNhbGwoY29uc3RydWN0b3IucHJvdG90eXBlLCBuYW1lLCBkZXNjcmlwdG9yLCBjb25zdHJ1Y3Rvci5uYW1lKSA/PyBkZXNjcmlwdG9yO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3Rvci5wcm90b3R5cGUsIG5hbWUsIG5ld0Rlc2NyaXB0b3IpO1xuICB9XG59XG4iXX0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRyYWNpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxzQ0FFQztBQUtELDhCQU1DO0FBbUNELGdEQVNDO0FBNURELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNwQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFZixTQUFnQixhQUFhLENBQUMsT0FBZ0I7SUFDNUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUNwQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixTQUFTLENBQUMsRUFBVSxFQUFFLFNBQWtCLEVBQUUsTUFBZTtJQUN2RSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLElBQUksYUFBYSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEYsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxTQUFTLENBQUMsUUFBZ0IsRUFBRSxZQUFvQixFQUFFLFVBQThCLEVBQUUsZUFBd0I7SUFDakgsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUM1QixNQUFNLFNBQVMsR0FBRyxPQUFPLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztJQUVuRixVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBRyxJQUFXO1FBQ3pDLE1BQU0sTUFBTSxHQUFJLElBQVksQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLElBQUksQ0FBQSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ25ELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLFdBQVcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksYUFBYSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEksTUFBTSxJQUFJLENBQUMsQ0FBQztRQUVaLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksR0FBRyxZQUFZLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RCLE1BQU0sSUFBSSxDQUFDLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLENBQUMsQ0FBQztZQUNaLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUMsQ0FBQztJQUNGLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxXQUFxQjs7SUFDdEQsbUJBQW1CO0lBQ25CLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pHLElBQUksT0FBTyxVQUFVLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzNDLFNBQVM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxhQUFhLEdBQUcsTUFBQSxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsbUNBQUksVUFBVSxDQUFDO1FBQ3pHLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDcEUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExvZ2dlciB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuXG5sZXQgRU5BQkxFRCA9IGZhbHNlO1xubGV0IElOREVOVCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZGtUcmFjaW5nKGVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgRU5BQkxFRCA9IGVuYWJsZWQ7XG59XG5cbi8qKlxuICogTWV0aG9kIGRlY29yYXRvciB0byB0cmFjZSBhIHNpbmdsZSBzdGF0aWMgb3IgbWVtYmVyIG1ldGhvZCwgYW55IHRpbWUgaXQncyBjYWxsZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGxUcmFjZShmbjogc3RyaW5nLCBjbGFzc05hbWU/OiBzdHJpbmcsIGxvZ2dlcj86IExvZ2dlcikge1xuICBpZiAoIUVOQUJMRUQgfHwgIWxvZ2dlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxvZ2dlci5pbmZvKGBbdHJhY2VdICR7JyAnLnJlcGVhdChJTkRFTlQpfSR7Y2xhc3NOYW1lIHx8ICcoYW5vbnltb3VzKSd9IyR7Zm59KClgKTtcbn1cblxuLyoqXG4gKiBNZXRob2QgZGVjb3JhdG9yIHRvIHRyYWNlIGEgc2luZ2xlIG1lbWJlciBtZXRob2QgYW55IHRpbWUgaXQncyBjYWxsZWRcbiAqL1xuZnVuY3Rpb24gdHJhY2VDYWxsKHJlY2VpdmVyOiBvYmplY3QsIF9wcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IsIHBhcmVudENsYXNzTmFtZT86IHN0cmluZykge1xuICBjb25zdCBmbiA9IGRlc2NyaXB0b3IudmFsdWU7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IHR5cGVvZiByZWNlaXZlciA9PT0gJ2Z1bmN0aW9uJyA/IHJlY2VpdmVyLm5hbWUgOiBwYXJlbnRDbGFzc05hbWU7XG5cbiAgZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGxvZ2dlciA9ICh0aGlzIGFzIGFueSkubG9nZ2VyO1xuICAgIGlmICghRU5BQkxFRCB8fCB0eXBlb2YgbG9nZ2VyPy5pbmZvICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgfVxuXG4gICAgbG9nZ2VyLmluZm8uYXBwbHkobG9nZ2VyLCBbYFt0cmFjZV0gJHsnICcucmVwZWF0KElOREVOVCl9JHtjbGFzc05hbWUgfHwgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIHx8ICcoYW5vbnltb3VzKSd9IyR7Zm4ubmFtZX0oKWBdKTtcbiAgICBJTkRFTlQgKz0gMjtcblxuICAgIGNvbnN0IHJldCA9IGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIGlmIChyZXQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICByZXR1cm4gcmV0LmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBJTkRFTlQgLT0gMjtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBJTkRFTlQgLT0gMjtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICB9O1xuICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cblxuLyoqXG4gKiBDbGFzcyBkZWNvcmF0b3IsIGVuYWJsZSB0cmFjaW5nIGZvciBhbGwgbWVtYmVyIG1ldGhvZHMgb24gdGhpcyBjbGFzc1xuICogQGRlcHJlY2F0ZWQgdGhpcyBkb2Vzbid0IHdvcmsgd2VsbCB3aXRoIGxvY2FsaXplZCBsb2dnaW5nIGluc3RhbmNlcywgZG9uJ3QgdXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZU1lbWJlck1ldGhvZHMoY29uc3RydWN0b3I6IEZ1bmN0aW9uKSB7XG4gIC8vIEluc3RhbmNlIG1lbWJlcnNcbiAgZm9yIChjb25zdCBbbmFtZSwgZGVzY3JpcHRvcl0gb2YgT2JqZWN0LmVudHJpZXMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoY29uc3RydWN0b3IucHJvdG90eXBlKSkpIHtcbiAgICBpZiAodHlwZW9mIGRlc2NyaXB0b3IudmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBuZXdEZXNjcmlwdG9yID0gdHJhY2VDYWxsKGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgbmFtZSwgZGVzY3JpcHRvciwgY29uc3RydWN0b3IubmFtZSkgPz8gZGVzY3JpcHRvcjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IucHJvdG90eXBlLCBuYW1lLCBuZXdEZXNjcmlwdG9yKTtcbiAgfVxufVxuIl19