cdk-serverless 2.20.0 → 2.22.0

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 (104) hide show
  1. package/docs/constructs/assets/hierarchy.js +1 -1
  2. package/docs/constructs/assets/main.js +5 -5
  3. package/docs/constructs/assets/navigation.js +1 -1
  4. package/docs/constructs/assets/search.js +1 -1
  5. package/docs/constructs/assets/style.css +251 -228
  6. package/docs/constructs/classes/AssetCdn.html +19 -19
  7. package/docs/constructs/classes/BaseApi.html +14 -14
  8. package/docs/constructs/classes/CognitoAuthentication.html +24 -24
  9. package/docs/constructs/classes/GraphQlApi.html +35 -34
  10. package/docs/constructs/classes/LambdaFunction.html +157 -157
  11. package/docs/constructs/classes/RestApi.html +41 -39
  12. package/docs/constructs/classes/SingleTableDatastore.html +17 -16
  13. package/docs/constructs/classes/Workflow.html +20 -20
  14. package/docs/constructs/hierarchy.html +1 -1
  15. package/docs/constructs/index.html +17 -17
  16. package/docs/constructs/interfaces/AssetCdnProps.html +6 -6
  17. package/docs/constructs/interfaces/BaseApiProps.html +31 -31
  18. package/docs/constructs/interfaces/CognitoAuthenticationProps.html +22 -22
  19. package/docs/constructs/interfaces/GraphQlApiProps.html +53 -36
  20. package/docs/constructs/interfaces/ICognitoAuthentication.html +3 -3
  21. package/docs/constructs/interfaces/IJwtAuthentication.html +7 -7
  22. package/docs/constructs/interfaces/ISingleTableDatastore.html +3 -0
  23. package/docs/constructs/interfaces/JsResolverOptions.html +7 -7
  24. package/docs/constructs/interfaces/LambdaFunctionProps.html +31 -31
  25. package/docs/constructs/interfaces/LambdaTracingOptions.html +4 -4
  26. package/docs/constructs/interfaces/RestApiProps.html +42 -42
  27. package/docs/constructs/interfaces/SingleTableDatastoreProps.html +11 -11
  28. package/docs/constructs/interfaces/SingleTableDesign.html +10 -10
  29. package/docs/constructs/interfaces/VtlResolverOptions.html +6 -6
  30. package/docs/constructs/interfaces/WorkflowProps.html +6 -6
  31. package/docs/constructs/modules.html +1 -1
  32. package/docs/constructs/types/LambdaOptions.html +1 -1
  33. package/docs/lambda/assets/hierarchy.js +1 -1
  34. package/docs/lambda/assets/highlight.css +7 -0
  35. package/docs/lambda/assets/main.js +5 -5
  36. package/docs/lambda/assets/search.js +1 -1
  37. package/docs/lambda/assets/style.css +251 -228
  38. package/docs/lambda/classes/auth.ApiGatewayv1CognitoAuthorizer.html +34 -34
  39. package/docs/lambda/classes/auth.ApiGatewayv1JwtAuthorizer.html +33 -33
  40. package/docs/lambda/classes/auth.ApiGatewayv2CognitoAuthorizer.html +34 -34
  41. package/docs/lambda/classes/auth.ApiGatewayv2JwtAuthorizer.html +33 -33
  42. package/docs/lambda/classes/auth.AppSyncCognitoAuthorizer.html +33 -33
  43. package/docs/lambda/classes/auth.CognitoAuthorizer.html +31 -31
  44. package/docs/lambda/classes/auth.JwtAuthorizer.html +31 -31
  45. package/docs/lambda/classes/errors.BadRequestError.html +36 -15
  46. package/docs/lambda/classes/errors.ForbiddenError.html +36 -15
  47. package/docs/lambda/classes/errors.HttpError.html +37 -16
  48. package/docs/lambda/classes/errors.NotFoundError.html +36 -15
  49. package/docs/lambda/classes/errors.UnauthenticatedError.html +36 -15
  50. package/docs/lambda/functions/api.createAppSyncHandler.html +3 -3
  51. package/docs/lambda/functions/api.createHttpHandler.html +2 -2
  52. package/docs/lambda/functions/api.createOpenApiHandler.html +2 -2
  53. package/docs/lambda/functions/api.createOpenApiHandlerWithRequestBody.html +2 -2
  54. package/docs/lambda/functions/api.createOpenApiHandlerWithRequestBodyNoResponse.html +2 -2
  55. package/docs/lambda/hierarchy.html +1 -1
  56. package/docs/lambda/index.html +17 -17
  57. package/docs/lambda/interfaces/api.AppSyncHandlerContext.html +6 -6
  58. package/docs/lambda/interfaces/api.HttpHandlerContext.html +7 -7
  59. package/docs/lambda/interfaces/api.HttpResponseContext.html +5 -5
  60. package/docs/lambda/interfaces/api.Operation.html +3 -3
  61. package/docs/lambda/interfaces/api.OperationWithRequestBody.html +4 -4
  62. package/docs/lambda/modules/api.html +1 -1
  63. package/docs/lambda/modules/auth.html +1 -1
  64. package/docs/lambda/modules/errors.html +1 -1
  65. package/docs/lambda/modules.html +1 -1
  66. package/docs/lambda/types/api.APIGatewayv1Handler.html +2 -2
  67. package/docs/lambda/types/api.AppSyncHandler.html +2 -2
  68. package/docs/lambda/types/api.HttpHandler.html +2 -2
  69. package/docs/projen/assets/main.js +5 -5
  70. package/docs/projen/assets/search.js +1 -1
  71. package/docs/projen/assets/style.css +251 -228
  72. package/docs/projen/classes/Datastore.html +23 -23
  73. package/docs/projen/classes/GraphQlApi.html +23 -23
  74. package/docs/projen/classes/RestApi.html +42 -42
  75. package/docs/projen/classes/ServerlessProject.html +217 -214
  76. package/docs/projen/classes/Workflow.html +33 -33
  77. package/docs/projen/hierarchy.html +1 -0
  78. package/docs/projen/index.html +17 -17
  79. package/docs/projen/interfaces/DatastoreOptions.html +3 -3
  80. package/docs/projen/interfaces/GraphQlApiOptions.html +3 -3
  81. package/docs/projen/interfaces/RestApiOptions.html +3 -3
  82. package/docs/projen/interfaces/ServerlessProjectOptions.html +560 -511
  83. package/docs/projen/interfaces/WorkflowOptions.html +3 -3
  84. package/docs/projen/modules.html +1 -1
  85. package/docs/projen/variables/PACKAGE_NAME.html +1 -1
  86. package/lib/constructs/authentication.js +8 -9
  87. package/lib/constructs/base-api.d.ts +2 -2
  88. package/lib/constructs/base-api.js +3 -4
  89. package/lib/constructs/func.js +10 -11
  90. package/lib/constructs/graphql.d.ts +37 -2
  91. package/lib/constructs/graphql.js +44 -16
  92. package/lib/constructs/rest-api.js +2 -3
  93. package/lib/constructs/table.d.ts +8 -1
  94. package/lib/constructs/table.js +12 -4
  95. package/lib/constructs/workflow.js +2 -3
  96. package/lib/lambda/auth.js +6 -8
  97. package/lib/lambda/handler.js +7 -10
  98. package/lib/projen/core.js +3 -4
  99. package/lib/projen/graphql.js +3 -2
  100. package/lib/projen/lazy-textfile.js +2 -3
  101. package/lib/projen/workflow.js +3 -4
  102. package/lib/tests/integ-test-util.js +12 -19
  103. package/lib/tests/lambda-test-utils.js +8 -10
  104. package/package.json +23 -21
@@ -1,3 +1,3 @@
1
- <!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>WorkflowOptions | cdk-serverless</title><meta name="description" content="Documentation for cdk-serverless"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">cdk-serverless</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">cdk-serverless</a></li><li><a href="WorkflowOptions.html">WorkflowOptions</a></li></ul><h1>Interface WorkflowOptions</h1></div><div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">WorkflowOptions</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="WorkflowOptions.html#definitionfile">definitionFile</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="WorkflowOptions.html#workflowname">workflowName</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="WorkflowOptions.html#definitionfile" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>definition<wbr/>File</span></a>
2
- <a href="WorkflowOptions.html#workflowname" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>workflow<wbr/>Name</span></a>
3
- </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="definitionfile" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Readonly</code><span>definition<wbr/>File</span><a href="#definitionfile" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">definitionFile</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div></section><section class="tsd-panel tsd-member"><a id="workflowname" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Readonly</code><span>workflow<wbr/>Name</span><a href="#workflowname" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">workflowName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#definitionfile" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>definition<wbr/>File</span></a><a href="#workflowname" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>workflow<wbr/>Name</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">cdk-serverless</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>WorkflowOptions | cdk-serverless</title><meta name="description" content="Documentation for cdk-serverless"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">cdk-serverless</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">WorkflowOptions</a></li></ul><h1>Interface WorkflowOptions</h1></div><div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">WorkflowOptions</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#definitionfile">definitionFile</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#workflowname">workflowName</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#definitionfile" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>definition<wbr/>File</span></a>
2
+ <a href="#workflowname" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>workflow<wbr/>Name</span></a>
3
+ </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="definitionfile"><code class="tsd-tag">Readonly</code><span>definition<wbr/>File</span><a href="#definitionfile" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">definitionFile</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="workflowname"><code class="tsd-tag">Readonly</code><span>workflow<wbr/>Name</span><a href="#workflowname" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">workflowName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#definitionfile"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>definition<wbr/>File</span></a><a href="#workflowname"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>workflow<wbr/>Name</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">cdk-serverless</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html class="default" lang="en" data-base="."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>cdk-serverless</title><meta name="description" content="Documentation for cdk-serverless"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">cdk-serverless</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="modules.html">cdk-serverless</a></li></ul><h1>cdk-serverless</h1></div><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Classes"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg> Classes</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary"><a id="datastore" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-128"></use></svg><a href="classes/Datastore.html">Datastore</a><a href="#datastore" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="graphqlapi" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-128"></use></svg><a href="classes/GraphQlApi.html">GraphQlApi</a><a href="#graphqlapi" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="restapi" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-128"></use></svg><a href="classes/RestApi.html">RestApi</a><a href="#restapi" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="serverlessproject" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-128"></use></svg><a href="classes/ServerlessProject.html">ServerlessProject</a><a href="#serverlessproject" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="workflow" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-128"></use></svg><a href="classes/Workflow.html">Workflow</a><a href="#workflow" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Interfaces"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg> Interfaces</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary"><a id="datastoreoptions" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/DatastoreOptions.html">DatastoreOptions</a><a href="#datastoreoptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="graphqlapioptions" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/GraphQlApiOptions.html">GraphQlApiOptions</a><a href="#graphqlapioptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="restapioptions" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/RestApiOptions.html">RestApiOptions</a><a href="#restapioptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="serverlessprojectoptions" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/ServerlessProjectOptions.html">ServerlessProjectOptions</a><a href="#serverlessprojectoptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="workflowoptions" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/WorkflowOptions.html">WorkflowOptions</a><a href="#workflowoptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Variables"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg> Variables</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary"><a id="package_name" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/PACKAGE_NAME.html">PACKAGE_NAME</a><a href="#package_name" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Classes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Classes</summary><div><a href="#datastore" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-128"></use></svg><span>Datastore</span></a><a href="#graphqlapi" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-128"></use></svg><span>Graph<wbr/>Ql<wbr/>Api</span></a><a href="#restapi" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-128"></use></svg><span>Rest<wbr/>Api</span></a><a href="#serverlessproject" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-128"></use></svg><span>Serverless<wbr/>Project</span></a><a href="#workflow" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-128"></use></svg><span>Workflow</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Interfaces"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Interfaces</summary><div><a href="#datastoreoptions" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-256"></use></svg><span>Datastore<wbr/>Options</span></a><a href="#graphqlapioptions" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-256"></use></svg><span>Graph<wbr/>Ql<wbr/>Api<wbr/>Options</span></a><a href="#restapioptions" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-256"></use></svg><span>Rest<wbr/>Api<wbr/>Options</span></a><a href="#serverlessprojectoptions" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-256"></use></svg><span>Serverless<wbr/>Project<wbr/>Options</span></a><a href="#workflowoptions" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-256"></use></svg><span>Workflow<wbr/>Options</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Variables</summary><div><a href="#package_name" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-32"></use></svg><span>PACKAGE_<wbr/>NAME</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html" class="current">cdk-serverless</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="./"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>cdk-serverless</title><meta name="description" content="Documentation for cdk-serverless"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="index.html" class="title">cdk-serverless</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"></ul><h1>cdk-serverless</h1></div><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Classes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h2>Classes</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="datastore"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><a href="classes/Datastore.html">Datastore</a><a href="#datastore" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="graphqlapi"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><a href="classes/GraphQlApi.html">GraphQlApi</a><a href="#graphqlapi" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="restapi"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><a href="classes/RestApi.html">RestApi</a><a href="#restapi" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="serverlessproject"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><a href="classes/ServerlessProject.html">ServerlessProject</a><a href="#serverlessproject" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="workflow"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><a href="classes/Workflow.html">Workflow</a><a href="#workflow" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Interfaces"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h2>Interfaces</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="datastoreoptions"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/DatastoreOptions.html">DatastoreOptions</a><a href="#datastoreoptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="graphqlapioptions"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/GraphQlApiOptions.html">GraphQlApiOptions</a><a href="#graphqlapioptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="restapioptions"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/RestApiOptions.html">RestApiOptions</a><a href="#restapioptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="serverlessprojectoptions"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/ServerlessProjectOptions.html">ServerlessProjectOptions</a><a href="#serverlessprojectoptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="workflowoptions"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/WorkflowOptions.html">WorkflowOptions</a><a href="#workflowoptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h2>Variables</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="package_name"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/PACKAGE_NAME.html">PACKAGE_NAME</a><a href="#package_name" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Classes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Classes</summary><div><a href="#datastore"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><span>Datastore</span></a><a href="#graphqlapi"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><span>Graph<wbr/>Ql<wbr/>Api</span></a><a href="#restapi"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><span>Rest<wbr/>Api</span></a><a href="#serverlessproject"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><span>Serverless<wbr/>Project</span></a><a href="#workflow"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><span>Workflow</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Interfaces"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Interfaces</summary><div><a href="#datastoreoptions"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>Datastore<wbr/>Options</span></a><a href="#graphqlapioptions"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>Graph<wbr/>Ql<wbr/>Api<wbr/>Options</span></a><a href="#restapioptions"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>Rest<wbr/>Api<wbr/>Options</span></a><a href="#serverlessprojectoptions"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>Serverless<wbr/>Project<wbr/>Options</span></a><a href="#workflowoptions"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>Workflow<wbr/>Options</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Variables</summary><div><a href="#package_name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>PACKAGE_<wbr/>NAME</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html" class="current">cdk-serverless</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>PACKAGE_NAME | cdk-serverless</title><meta name="description" content="Documentation for cdk-serverless"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">cdk-serverless</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">cdk-serverless</a></li><li><a href="PACKAGE_NAME.html">PACKAGE_NAME</a></li></ul><h1>Variable PACKAGE_NAME<code class="tsd-tag">Const</code></h1></div><div class="tsd-signature"><span class="tsd-kind-variable">PACKAGE_NAME</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">&quot;cdk-serverless&quot;</span><span class="tsd-signature-symbol"> = &#39;cdk-serverless&#39;</span></div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">cdk-serverless</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>PACKAGE_NAME | cdk-serverless</title><meta name="description" content="Documentation for cdk-serverless"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">cdk-serverless</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">PACKAGE_NAME</a></li></ul><h1>Variable PACKAGE_NAME<code class="tsd-tag">Const</code></h1></div><div class="tsd-signature"><span class="tsd-kind-variable">PACKAGE_NAME</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">&quot;cdk-serverless&quot;</span><span class="tsd-signature-symbol"> = &#39;cdk-serverless&#39;</span></div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">cdk-serverless</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -52,7 +52,6 @@ class CognitoAuthentication extends constructs_1.Construct {
52
52
  * @param props - The properties of the CognitoAuthentication construct.
53
53
  */
54
54
  constructor(scope, id, props) {
55
- var _a, _b, _c, _d, _e, _f, _g, _h;
56
55
  super(scope, id);
57
56
  this.userpool = new aws_cdk_lib_1.aws_cognito.UserPool(this, 'UserPool', {
58
57
  userPoolName: props.userPoolName,
@@ -81,7 +80,7 @@ class CognitoAuthentication extends constructs_1.Construct {
81
80
  signInCaseSensitive: false,
82
81
  ...props.userPoolProps,
83
82
  });
84
- if ((_a = props.triggers) === null || _a === void 0 ? void 0 : _a.customMessages) {
83
+ if (props.triggers?.customMessages) {
85
84
  const entryFile = './src/lambda/cognito.custom-message.ts';
86
85
  if (!fs.existsSync(entryFile)) {
87
86
  fs.writeFileSync(entryFile, `export async function handler(event: AWSLambda.CustomMessageTriggerEvent): Promise<AWSLambda.CustomMessageTriggerEvent> {
@@ -113,10 +112,10 @@ class CognitoAuthentication extends constructs_1.Construct {
113
112
  });
114
113
  this.userpool.addTrigger(aws_cdk_lib_1.aws_cognito.UserPoolOperation.CUSTOM_MESSAGE, this.customMessageFunction);
115
114
  }
116
- if (((_b = props.triggers) === null || _b === void 0 ? void 0 : _b.preTokenGenerationv2) && ((_c = props.triggers) === null || _c === void 0 ? void 0 : _c.preTokenGeneration)) {
115
+ if (props.triggers?.preTokenGenerationv2 && props.triggers?.preTokenGeneration) {
117
116
  throw new Error('You can only use preTokenGeneration or preTokenGenerationv2, not both.');
118
117
  }
119
- if ((_d = props.triggers) === null || _d === void 0 ? void 0 : _d.preTokenGeneration) {
118
+ if (props.triggers?.preTokenGeneration) {
120
119
  const entryFile = './src/lambda/cognito.pre-token-generation.ts';
121
120
  if (!fs.existsSync(entryFile)) {
122
121
  fs.writeFileSync(entryFile, `export async function handler(event: AWSLambda.PreTokenGenerationTriggerEvent): Promise<AWSLambda.PreTokenGenerationTriggerEvent> {
@@ -137,7 +136,7 @@ class CognitoAuthentication extends constructs_1.Construct {
137
136
  });
138
137
  this.userpool.addTrigger(aws_cdk_lib_1.aws_cognito.UserPoolOperation.PRE_TOKEN_GENERATION, this.preTokenGenerationFunction);
139
138
  }
140
- if ((_e = props.triggers) === null || _e === void 0 ? void 0 : _e.preTokenGenerationv2) {
139
+ if (props.triggers?.preTokenGenerationv2) {
141
140
  const entryFile = './src/lambda/cognito.pre-token-generation.ts';
142
141
  if (!fs.existsSync(entryFile)) {
143
142
  fs.writeFileSync(entryFile, `export async function handler(event: AWSLambda.PreTokenGenerationV2TriggerEvent): Promise<AWSLambda.PreTokenGenerationV2TriggerEvent> {
@@ -158,7 +157,7 @@ class CognitoAuthentication extends constructs_1.Construct {
158
157
  });
159
158
  this.userpool.addTrigger(aws_cdk_lib_1.aws_cognito.UserPoolOperation.PRE_TOKEN_GENERATION_CONFIG, this.preTokenGenerationFunction, aws_cdk_lib_1.aws_cognito.LambdaVersion.V2_0);
160
159
  }
161
- if ((_f = props.triggers) === null || _f === void 0 ? void 0 : _f.preSignUp) {
160
+ if (props.triggers?.preSignUp) {
162
161
  const entryFile = './src/lambda/cognito.pre-signup.ts';
163
162
  if (!fs.existsSync(entryFile)) {
164
163
  fs.writeFileSync(entryFile, `export async function handler(event: AWSLambda.PreSignUpTriggerEvent): Promise<AWSLambda.PreSignUpTriggerEvent> {
@@ -194,7 +193,7 @@ class CognitoAuthentication extends constructs_1.Construct {
194
193
  this.userpool.node.defaultChild.emailConfiguration = {
195
194
  emailSendingAccount: 'DEVELOPER',
196
195
  from: `${props.sesEmailSender.name} <${props.sesEmailSender.email}>`,
197
- sourceArn: `arn:aws:ses:${(_g = props.sesEmailSender.region) !== null && _g !== void 0 ? _g : aws_cdk_lib_1.Stack.of(this).region}:${aws_cdk_lib_1.Stack.of(this).account}:identity/${props.sesEmailSender.email}`,
196
+ sourceArn: `arn:aws:ses:${props.sesEmailSender.region ?? aws_cdk_lib_1.Stack.of(this).region}:${aws_cdk_lib_1.Stack.of(this).account}:identity/${props.sesEmailSender.email}`,
198
197
  };
199
198
  }
200
199
  for (const groupName in props.groups) {
@@ -215,7 +214,7 @@ class CognitoAuthentication extends constructs_1.Construct {
215
214
  ...props.identityPool.poolConfig,
216
215
  authenticationProviders: {
217
216
  userPools: [new aws_cdk_lib_1.aws_cognito_identitypool.UserPoolAuthenticationProvider({ userPool: this.userpool })],
218
- ...(_h = props.identityPool.poolConfig) === null || _h === void 0 ? void 0 : _h.authenticationProviders,
217
+ ...props.identityPool.poolConfig?.authenticationProviders,
219
218
  },
220
219
  });
221
220
  new aws_cdk_lib_1.CfnOutput(this, outputs_1.CFN_OUTPUT_SUFFIX_AUTH_IDENTITYPOOL_ID, {
@@ -248,4 +247,4 @@ class CognitoAuthentication extends constructs_1.Construct {
248
247
  }
249
248
  }
250
249
  exports.CognitoAuthentication = CognitoAuthentication;
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9hdXRoZW50aWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsNkNBTXFCO0FBQ3JCLDJDQUF1QztBQUN2QyxpQ0FBd0M7QUFDeEMsK0NBQThQO0FBZ0g5UDs7O0dBR0c7QUFDSCxNQUFhLHFCQUFzQixTQUFRLHNCQUFTO0lBMkJsRDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDOztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3pELFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQzNCLGNBQWMsRUFBRTtnQkFDZCxTQUFTLEVBQUUsRUFBRTtnQkFDYixhQUFhLEVBQUUsS0FBSztnQkFDcEIsZ0JBQWdCLEVBQUUsS0FBSztnQkFDdkIsY0FBYyxFQUFFLEtBQUs7Z0JBQ3JCLGdCQUFnQixFQUFFLEtBQUs7YUFDeEI7WUFDRCxrQkFBa0IsRUFBRTtnQkFDbEIsUUFBUSxFQUFFO29CQUNSLE9BQU8sRUFBRSxJQUFJO29CQUNiLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2dCQUNELEtBQUssRUFBRTtvQkFDTCxPQUFPLEVBQUUsS0FBSztvQkFDZCxRQUFRLEVBQUUsSUFBSTtpQkFDZjthQUNGO1lBQ0QsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixhQUFhLEVBQUU7Z0JBQ2IsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNELG1CQUFtQixFQUFFLEtBQUs7WUFDMUIsR0FBRyxLQUFL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QUksQ0FBQyxRQUFRO2dCQUN2QixjQUFjLEVBQUUsTUFBTTthQUN2QixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBRUY7QUFoUUQsc0RBZ1FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHtcbiAgYXdzX2NvZ25pdG8sXG4gIGF3c19jb2duaXRvX2lkZW50aXR5cG9vbCxcbiAgQ2ZuT3V0cHV0LFxuICBEdXJhdGlvbixcbiAgU3RhY2ssXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICcuL2Z1bmMnO1xuaW1wb3J0IHsgQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9JREVOVElUWVBPT0xfQVVUSF9ST0xFQVJOLCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX0lERU5USVRZUE9PTF9JRCwgQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9JREVOVElUWVBPT0xfVU5BVVRIX1JPTEVBUk4sIENGTl9PVVRQVVRfU1VGRklYX0FVVEhfVVNFUlBPT0xJRCwgQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9VU0VSUE9PTF9DTElFTlRJRCB9IGZyb20gJy4uL3NoYXJlZC9vdXRwdXRzJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ29nbml0b0F1dGhlbnRpY2F0aW9uIHtcbiAgLyoqIFRoZSBDb2duaXRvIHVzZXIgcG9vbCB0aGF0IGhvbGRzIHVzZXIgaW5mb3JtYXRpb24gKi9cbiAgcmVhZG9ubHkgdXNlcnBvb2w6IGF3c19jb2duaXRvLklVc2VyUG9vbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSnd0QXV0aGVudGljYXRpb24ge1xuICAvKipcbiAgICogVGhlIEpXVCBpc3N1ZXIgZW5kcG9pbnQgVVJMXG4gICAqL1xuICByZWFkb25seSBpc3N1ZXJVcmw6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmRwb2ludCdzIGF1ZGllbmNlLiBXaWxsIG9ubHkgYmUgY2hlY2tlZCBpZiBwcmVzZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXVkaWVuY2U/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBKV1QgZW5kcG9pbnRzIEpXS1Mgc3RvcmUuIFVubGVzcyB0aGlzIGlzIHByb3ZpZGVkLCBPSURDIGRpc2NvdmVyeSB3aWxsIGJlIHVzZWQgdG8gZmluZCB0aGlzLlxuICAgKi9cbiAgcmVhZG9ubHkgandrc1VybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2duaXRvQXV0aGVudGljYXRpb25Qcm9wcyB7XG5cbiAgLyoqIE5hbWUgZm9yIHRoZSBDb2duaXRvIHVzZXIgcG9vbCAqL1xuICByZWFkb25seSB1c2VyUG9vbE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQ29uZmlndXJlIENvZ25pdG8gTGFtYmRhIHRyaWdnZXJzXG4gICAqL1xuICByZWFkb25seSB0cmlnZ2Vycz86IHtcbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBhIGxhbWJkYSBmdW5jdGlvbiB0byB0aGUgY3VzdG9tIG1lc3NhZ2UgdHJpZ2dlclxuICAgICAqXG4gICAgICogQ29kZSBoYXMgdG8gcmVzaWRlIGluICcuL3NyYy9sYW1iZGEvY29nbml0by5jdXN0b20tbWVzc2FnZS50cycgd2l0aCBhIG1ldGhvZCAnaGFuZGxlcidcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgY3VzdG9tTWVzc2FnZXM/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBsYW1iZGEgZnVuY3Rpb24gdG8gdGhlIHByZSB0b2tlbiBnZW5lcmF0aW9uIHRyaWdnZXJcbiAgICAgKlxuICAgICAqIENvZGUgaGFzIHRvIHJlc2lkZSBpbiAnLi9zcmMvbGFtYmRhL2NvZ25pdG8ucHJlLXRva2VuLWdlbmVyYXRpb24udHMnIHdpdGggYSBtZXRob2QgJ2hhbmRsZXInXG4gICAgICpcbiAgICAgKiBZb3UgY2FuIG9ubHkgdXNlIHByZVRva2VuR2VuZXJhdGlvbiBvciBwcmVUb2tlbkdlbmVyYXRpb252Miwgbm90IGJvdGguXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHByZVRva2VuR2VuZXJhdGlvbj86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBhIGxhbWJkYSBmdW5jdGlvbiB0byB0aGUgcHJlIHRva2VuIGdlbmVyYXRpb24gdHJpZ2dlclxuICAgICAqIG5ldyB2ZXJzaW9uIG9mIHRoZSBwcmUgdG9rZW4gZ2VuZXJhdGlvbiB0cmlnZ2VyIHdpdGggQWNjZXNzVG9rZW4gc3VwcG9ydFxuICAgICAqXG4gICAgICogQ29kZSBoYXMgdG8gcmVzaWRlIGluICcuL3NyYy9sYW1iZGEvY29nbml0by5wcmUtdG9rZW4tZ2VuZXJhdGlvbi50cycgd2l0aCBhIG1ldGhvZCAnaGFuZGxlcidcbiAgICAgKlxuICAgICAqIFlvdSBjYW4gb25seSB1c2UgcHJlVG9rZW5HZW5lcmF0aW9uIG9yIHByZVRva2VuR2VuZXJhdGlvbnYyLCBub3QgYm90aC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgcHJlVG9rZW5HZW5lcmF0aW9udjI/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBsYW1iZGEgZnVuY3Rpb24gdG8gdGhlIHByZSBzaWduLXVwIHRyaWdnZXJcbiAgICAgKlxuICAgICAqIENvZGUgaGFzIHRvIHJlc2lkZSBpbiAnLi9zcmMvbGFtYmRhL2NvZ25pdG8ucHJlLXNpZ251cC50cycgd2l0aCBhIG1ldGhvZCAnaGFuZGxlcidcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgcHJlU2lnblVwPzogYm9vbGVhbjtcbiAgfTtcblxuICAvKipcbiAgICogUHJvcGVydGllcyBvZiB0aGUgQ29nbml0byB1c2VyIHBvb2xcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJQb29sUHJvcHM/OiBhd3NfY29nbml0by5Vc2VyUG9vbFByb3BzO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgU0VTIG1haWwgc2VuZGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgc2VzRW1haWxTZW5kZXI/OiB7XG4gICAgLyoqXG4gICAgICogQVdTIHJlZ2lvbiB0byB1c2UgZm9yIFNFU1xuICAgICAqL1xuICAgIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFNlbmRlciBuYW1lXG4gICAgICovXG4gICAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFNlbmRlciBlbWFpbC4gTmVlZHMgdG8gYmUgYWxyZWFkeSB2ZXJpZmllZCBpbiBTRVNcbiAgICAgKi9cbiAgICByZWFkb25seSBlbWFpbDogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHcm91cHMgdG8gY3JlYXRlIGluIENvZ25pdG8gdXNlciBwb29sXG4gICAqIEtleTogZ3JvdXAgbmFtZVxuICAgKiBWYWx1ZTogZ3JvdXAgZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGdyb3Vwcz86IHtcbiAgICByZWFkb25seSBbbmFtZTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuXG4gIC8qKiBDcmVhdGUgYSBuZXcgQ29nbml0byBJZGVudGl0eSBQb29sIGZvciB0aGUgVXNlciBwb29sICovXG4gIHJlYWRvbmx5IGlkZW50aXR5UG9vbD86IHtcbiAgICAvKiogY29uZmlndXJhdGlvbiBvZiB0aGUgaWRlbnRpdHkgcG9vbCAqL1xuICAgIHJlYWRvbmx5IHBvb2xDb25maWc/OiBhd3NfY29nbml0b19pZGVudGl0eXBvb2wuSWRlbnRpdHlQb29sUHJvcHM7XG4gIH07XG59XG5cbi8qKlxuICogVGhlIENvZ25pdG9BdXRoZW50aWNhdGlvbiBjb25zdHJ1Y3Qgc2V0cyB1cCBhIENvZ25pdG8gVXNlciBQb29sIHdpdGggb3B0aW9uYWwgdHJpZ2dlcnMgYW5kIGFuIG9wdGlvbmFsIENvZ25pdG8gSWRlbnRpdHkgUG9vbC5cbiAqIEl0IGFsc28gY29uZmlndXJlcyB2YXJpb3VzIExhbWJkYSB0cmlnZ2VycyBmb3IgY3VzdG9tIG1lc3NhZ2UsIHByZS1zaWduIHVwLCBhbmQgcHJlLXRva2VuIGdlbmVyYXRpb24gZXZlbnRzLlxuICovXG5leHBvcnQgY2xhc3MgQ29nbml0b0F1dGhlbnRpY2F0aW9uIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvZ25pdG9BdXRoZW50aWNhdGlvbiB7XG5cbiAgLyoqXG4gICAqIFRoZSBDb2duaXRvIFVzZXIgUG9vbCBmb3IgdXNlciBhdXRoZW50aWNhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VycG9vbDogYXdzX2NvZ25pdG8uVXNlclBvb2w7XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25hbCBDb2duaXRvIElkZW50aXR5IFBvb2wgZm9yIGZlZGVyYXRlZCBpZGVudGl0aWVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlkZW50aXR5UG9vbD86IGF3c19jb2duaXRvX2lkZW50aXR5cG9vbC5JZGVudGl0eVBvb2w7XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25hbCBMYW1iZGEgZnVuY3Rpb24gZm9yIGN1c3RvbSBtZXNzYWdlIHRyaWdnZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3VzdG9tTWVzc2FnZUZ1bmN0aW9uPzogTGFtYmRhRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25hbCBMYW1iZGEgZnVuY3Rpb24gZm9yIHByZS1zaWduIHVwIHRyaWdnZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJlU2lnblVwRnVuY3Rpb24/OiBMYW1iZGFGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIG9wdGlvbmFsIExhbWJkYSBmdW5jdGlvbiBmb3IgcHJlLXRva2VuIGdlbmVyYXRpb24gdHJpZ2dlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcmVUb2tlbkdlbmVyYXRpb25GdW5jdGlvbj86IExhbWJkYUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIENvZ25pdG9BdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRoaXMgY29uc3RydWN0IGlzIGRlZmluZWQuXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBzY29wZWQgY29uc3RydWN0IElELlxuICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgcHJvcGVydGllcyBvZiB0aGUgQ29nbml0b0F1dGhlbnRpY2F0aW9uIGNvbnN0cnVjdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb2duaXRvQXV0aGVudGljYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnVzZXJwb29sID0gbmV3IGF3c19jb2duaXRvLlVzZXJQb29sKHRoaXMsICdVc2VyUG9vbCcsIHtcbiAgICAgIHVzZXJQb29sTmFtZTogcHJvcHMudXNlclBvb2xOYW1lLFxuICAgICAgYXV0b1ZlcmlmeTogeyBlbWFpbDogdHJ1ZSB9LFxuICAgICAgcGFzc3dvcmRQb2xpY3k6IHtcbiAgICAgICAgbWluTGVuZ3RoOiAxMixcbiAgICAgICAgcmVxdWlyZURpZ2l0czogZmFsc2UsXG4gICAgICAgIHJlcXVpcmVMb3dlcmNhc2U6IGZhbHNlLFxuICAgICAgICByZXF1aXJlU3ltYm9sczogZmFsc2UsXG4gICAgICAgIHJlcXVpcmVVcHBlcmNhc2U6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHN0YW5kYXJkQXR0cmlidXRlczoge1xuICAgICAgICBmdWxsbmFtZToge1xuICAgICAgICAgIG11dGFibGU6IHRydWUsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgbXV0YWJsZTogZmFsc2UsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc2VsZlNpZ25VcEVuYWJsZWQ6IGZhbHNlLFxuICAgICAgc2lnbkluQWxpYXNlczoge1xuICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBzaWduSW5DYXNlU2Vuc2l0aXZlOiBmYWxzZSxcbiAgICAgIC4uLnByb3BzLnVzZXJQb29sUHJvcHMsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMudHJpZ2dlcnM/LmN1c3RvbU1lc3NhZ2VzKSB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSAnLi9zcmMvbGFtYmRhL2NvZ25pdG8uY3VzdG9tLW1lc3NhZ2UudHMnO1xuXG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZW50cnlGaWxlKSkge1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGVudHJ5RmlsZSwgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBBV1NMYW1iZGEuQ3VzdG9tTWVzc2FnZVRyaWdnZXJFdmVudCk6IFByb21pc2U8QVdTTGFtYmRhLkN1c3RvbU1lc3NhZ2VUcmlnZ2VyRXZlbnQ+IHtcbiAgY29uc29sZS5sb2coZXZlbnQpO1xuXG4gIGlmIChldmVudC50cmlnZ2VyU291cmNlID09PSAnQ3VzdG9tTWVzc2FnZV9BZG1pbkNyZWF0ZVVzZXInKSB7XG4gICAgLy8gZXZlbnQucmVzcG9uc2UuZW1haWxTdWJqZWN0ID0gJyc7XG4gICAgLy8gZXZlbnQucmVzcG9uc2UuZW1haWxNZXNzYWdlID0gJyc7XG4gIH0gZWxzZSBpZiAoZXZlbnQudHJpZ2dlclNvdXJjZSA9PT0gJ0N1c3RvbU1lc3NhZ2VfRm9yZ290UGFzc3dvcmQnKSB7XG4gICAgLy8gZXZlbnQucmVzcG9uc2UuZW1haWxTdWJqZWN0ID0gJyc7XG4gICAgLy8gZXZlbnQucmVzcG9uc2UuZW1haWxNZXNzYWdlID0gJyc7XG4gIH0gLy8gLi4uXG5cbiAgcmV0dXJuIGV2ZW50O1xufWAsIHtcbiAgICAgICAgICBlbmNvZGluZzogJ3V0Zi04JyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VzdG9tTWVzc2FnZUZ1bmN0aW9uID0gbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMsICdDdXN0b21NZXNzYWdlRnVuY3Rpb24nLCB7XG4gICAgICAgIGVudHJ5OiBlbnRyeUZpbGUsXG4gICAgICAgIGxhbWJkYU9wdGlvbnM6IHtcbiAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgbG9hZGVyOiB7XG4gICAgICAgICAgICAgICcuaHRtbCc6ICd0ZXh0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVzZXJwb29sLmFkZFRyaWdnZXIoYXdzX2NvZ25pdG8uVXNlclBvb2xPcGVyYXRpb24uQ1VTVE9NX01FU1NBR0UsIHRoaXMuY3VzdG9tTWVzc2FnZUZ1bmN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudHJpZ2dlcnM/LnByZVRva2VuR2VuZXJhdGlvbnYyICYmIHByb3BzLnRyaWdnZXJzPy5wcmVUb2tlbkdlbmVyYXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IGNhbiBvbmx5IHVzZSBwcmVUb2tlbkdlbmVyYXRpb24gb3IgcHJlVG9rZW5HZW5lcmF0aW9udjIsIG5vdCBib3RoLicpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy50cmlnZ2Vycz8ucHJlVG9rZW5HZW5lcmF0aW9uKSB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSAnLi9zcmMvbGFtYmRhL2NvZ25pdG8ucHJlLXRva2VuLWdlbmVyYXRpb24udHMnO1xuXG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZW50cnlGaWxlKSkge1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGVudHJ5RmlsZSwgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBBV1NMYW1iZGEuUHJlVG9rZW5HZW5lcmF0aW9uVHJpZ2dlckV2ZW50KTogUHJvbWlzZTxBV1NMYW1iZGEuUHJlVG9rZW5HZW5lcmF0aW9uVHJpZ2dlckV2ZW50PiB7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGV2ZW50KSk7XG5cbiAgLy8gbW9kaWZ5IGV2ZW50LnJlc3BvbnNlIGhlcmUgLi4uXG5cbiAgcmV0dXJuIGV2ZW50O1xufWAsIHtcbiAgICAgICAgICBlbmNvZGluZzogJ3V0Zi04JyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHJlVG9rZW5HZW5lcmF0aW9uRnVuY3Rpb24gPSBuZXcgTGFtYmRhRnVuY3Rpb24odGhpcywgJ1ByZVRva2VuR2VuZXJhdGlvbkZ1bmN0aW9uJywge1xuICAgICAgICBsYW1iZGFPcHRpb25zOiB7XG4gICAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgfSxcbiAgICAgICAgZW50cnk6IGVudHJ5RmlsZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy51c2VycG9vbC5hZGRUcmlnZ2VyKGF3c19jb2duaXRvLlVzZXJQb29sT3BlcmF0aW9uLlBSRV9UT0tFTl9HRU5FUkFUSU9OLCB0aGlzLnByZVRva2VuR2VuZXJhdGlvbkZ1bmN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudHJpZ2dlcnM/LnByZVRva2VuR2VuZXJhdGlvbnYyKSB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSAnLi9zcmMvbGFtYmRhL2NvZ25pdG8ucHJlLXRva2VuLWdlbmVyYXRpb24udHMnO1xuXG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZW50cnlGaWxlKSkge1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGVudHJ5RmlsZSwgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBBV1NMYW1iZGEuUHJlVG9rZW5HZW5lcmF0aW9uVjJUcmlnZ2VyRXZlbnQpOiBQcm9taXNlPEFXU0xhbWJkYS5QcmVUb2tlbkdlbmVyYXRpb25WMlRyaWdnZXJFdmVudD4ge1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShldmVudCkpO1xuXG4gIC8vIG1vZGlmeSBldmVudC5yZXNwb25zZSBoZXJlIC4uLlxuXG4gIHJldHVybiBldmVudDtcbn1gLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByZVRva2VuR2VuZXJhdGlvbkZ1bmN0aW9uID0gbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMsICdQcmVUb2tlbkdlbmVyYXRpb25GdW5jdGlvbicsIHtcbiAgICAgICAgbGFtYmRhT3B0aW9uczoge1xuICAgICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICAgIH0sXG4gICAgICAgIGVudHJ5OiBlbnRyeUZpbGUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudXNlcnBvb2wuYWRkVHJpZ2dlcihcbiAgICAgICAgYXdzX2NvZ25pdG8uVXNlclBvb2xPcGVyYXRpb24uUFJFX1RPS0VOX0dFTkVSQVRJT05fQ09ORklHLFxuICAgICAgICB0aGlzLnByZVRva2VuR2VuZXJhdGlvbkZ1bmN0aW9uLFxuICAgICAgICBhd3NfY29nbml0by5MYW1iZGFWZXJzaW9uLlYyXzAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy50cmlnZ2Vycz8ucHJlU2lnblVwKSB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSAnLi9zcmMvbGFtYmRhL2NvZ25pdG8ucHJlLXNpZ251cC50cyc7XG5cbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhlbnRyeUZpbGUpKSB7XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZW50cnlGaWxlLCBgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IEFXU0xhbWJkYS5QcmVTaWduVXBUcmlnZ2VyRXZlbnQpOiBQcm9taXNlPEFXU0xhbWJkYS5QcmVTaWduVXBUcmlnZ2VyRXZlbnQ+IHtcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcblxuICAvLyBDb25maXJtIHRoZSB1c2VyXG4gIC8vIGV2ZW50LnJlc3BvbnNlLmF1dG9Db25maXJtVXNlciA9IHRydWU7XG5cbiAgLy8gU2V0IHRoZSBlbWFpbCBhcyB2ZXJpZmllZCBpZiBpdCBpcyBpbiB0aGUgcmVxdWVzdFxuICAvLyBpZiAoZXZlbnQucmVxdWVzdC51c2VyQXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eSgnZW1haWwnKSkge1xuICAvLyAgIGV2ZW50LnJlc3BvbnNlLmF1dG9WZXJpZnlFbWFpbCA9IHRydWU7XG4gIC8vIH1cblxuICAvLyBTZXQgdGhlIHBob25lIG51bWJlciBhcyB2ZXJpZmllZCBpZiBpdCBpcyBpbiB0aGUgcmVxdWVzdFxuICAvLyBpZiAoZXZlbnQucmVxdWVzdC51c2VyQXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eSgncGhvbmVfbnVtYmVyJykpIHtcbiAgLy8gICBldmVudC5yZXNwb25zZS5hdXRvVmVyaWZ5UGhvbmUgPSB0cnVlO1xuICAvLyB9XG5cbiAgcmV0dXJuIGV2ZW50O1xufWAsIHtcbiAgICAgICAgICBlbmNvZGluZzogJ3V0Zi04JyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHJlU2lnblVwRnVuY3Rpb24gPSBuZXcgTGFtYmRhRnVuY3Rpb24odGhpcywgJ1ByZVNpZ25VcEZ1bmN0aW9uJywge1xuICAgICAgICBsYW1iZGFPcHRpb25zOiB7XG4gICAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgfSxcbiAgICAgICAgZW50cnk6IGVudHJ5RmlsZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy51c2VycG9vbC5hZGRUcmlnZ2VyKGF3c19jb2duaXRvLlVzZXJQb29sT3BlcmF0aW9uLlBSRV9TSUdOX1VQLCB0aGlzLnByZVNpZ25VcEZ1bmN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuc2VzRW1haWxTZW5kZXIpIHtcbiAgICAgICh0aGlzLnVzZXJwb29sLm5vZGUuZGVmYXVsdENoaWxkIGFzIGF3c19jb2duaXRvLkNmblVzZXJQb29sKS5lbWFpbENvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAgIGVtYWlsU2VuZGluZ0FjY291bnQ6ICdERVZFTE9QRVInLFxuICAgICAgICBmcm9tOiBgJHtwcm9wcy5zZXNFbWFpbFNlbmRlci5uYW1lfSA8JHtwcm9wcy5zZXNFbWFpbFNlbmRlci5lbWFpbH0+YCxcbiAgICAgICAgc291cmNlQXJuOiBgYXJuOmF3czpzZXM6JHtwcm9wcy5zZXNFbWFpbFNlbmRlci5yZWdpb24gPz8gU3RhY2sub2YodGhpcykucmVnaW9ufToke1N0YWNrLm9mKHRoaXMpLmFjY291bnR9OmlkZW50aXR5LyR7cHJvcHMuc2VzRW1haWxTZW5kZXIuZW1haWx9YCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBncm91cE5hbWUgaW4gcHJvcHMuZ3JvdXBzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLmdyb3VwcywgZ3JvdXBOYW1lKSkge1xuICAgICAgICBjb25zdCBncm91cERlc2NyaXB0aW9uID0gcHJvcHMuZ3JvdXBzW2dyb3VwTmFtZV07XG4gICAgICAgIG5ldyBhd3NfY29nbml0by5DZm5Vc2VyUG9vbEdyb3VwKHRoaXMsIGBHcm91cCR7Z3JvdXBOYW1lfWAsIHtcbiAgICAgICAgICB1c2VyUG9vbElkOiB0aGlzLnVzZXJwb29sLnVzZXJQb29sSWQsXG4gICAgICAgICAgZ3JvdXBOYW1lLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBncm91cERlc2NyaXB0aW9uLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIENGTl9PVVRQVVRfU1VGRklYX0FVVEhfVVNFUlBPT0xJRCwgeyBrZXk6IENGTl9PVVRQVVRfU1VGRklYX0FVVEhfVVNFUlBPT0xJRCwgdmFsdWU6IHRoaXMudXNlcnBvb2wudXNlclBvb2xJZCB9KTtcblxuICAgIGlmIChwcm9wcy5pZGVudGl0eVBvb2wpIHtcbiAgICAgIHRoaXMuaWRlbnRpdHlQb29sID0gbmV3IGF3c19jb2duaXRvX2lkZW50aXR5cG9vbC5JZGVudGl0eVBvb2wodGhpcywgJ0lkZW50aXR5UG9vbCcsIHtcbiAgICAgICAgYWxsb3dVbmF1dGhlbnRpY2F0ZWRJZGVudGl0aWVzOiB0cnVlLFxuICAgICAgICBpZGVudGl0eVBvb2xOYW1lOiBwcm9wcy51c2VyUG9vbE5hbWUgKyAnLWlkZW50aXR5JyxcbiAgICAgICAgLi4ucHJvcHMuaWRlbnRpdHlQb29sLnBvb2xDb25maWcsXG4gICAgICAgIGF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzOiB7XG4gICAgICAgICAgdXNlclBvb2xzOiBbbmV3IGF3c19jb2duaXRvX2lkZW50aXR5cG9vbC5Vc2VyUG9vbEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIoeyB1c2VyUG9vbDogdGhpcy51c2VycG9vbCB9KV0sXG4gICAgICAgICAgLi4ucHJvcHMuaWRlbnRpdHlQb29sLnBvb2xDb25maWc/LmF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIENGTl9PVVRQVVRfU1VGRklYX0FVVEhfSURFTlRJVFlQT09MX0lELCB7XG4gICAgICAgIGtleTogQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9JREVOVElUWVBPT0xfSUQsXG4gICAgICAgIHZhbHVlOiB0aGlzLmlkZW50aXR5UG9vbC5pZGVudGl0eVBvb2xJZCxcbiAgICAgIH0pO1xuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX0lERU5USVRZUE9PTF9BVVRIX1JPTEVBUk4sIHtcbiAgICAgICAga2V5OiBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX0lERU5USVRZUE9PTF9BVVRIX1JPTEVBUk4sXG4gICAgICAgIHZhbHVlOiB0aGlzLmlkZW50aXR5UG9vbC5hdXRoZW50aWNhdGVkUm9sZS5yb2xlQXJuLFxuICAgICAgfSk7XG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIENGTl9PVVRQVVRfU1VGRklYX0FVVEhfSURFTlRJVFlQT09MX1VOQVVUSF9ST0xFQVJOLCB7XG4gICAgICAgIGtleTogQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9JREVOVElUWVBPT0xfVU5BVVRIX1JPTEVBUk4sXG4gICAgICAgIHZhbHVlOiB0aGlzLmlkZW50aXR5UG9vbC51bmF1dGhlbnRpY2F0ZWRSb2xlLnJvbGVBcm4sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkVXNlclBvb2xDbGllbnQoaWQ6IHN0cmluZywgb3B0aW9uczogYXdzX2NvZ25pdG8uVXNlclBvb2xDbGllbnRPcHRpb25zKTogYXdzX2NvZ25pdG8uVXNlclBvb2xDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IHRoaXMudXNlcnBvb2wuYWRkQ2xpZW50KGlkLCBvcHRpb25zKTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke0NGTl9PVVRQVVRfU1VGRklYX0FVVEhfVVNFUlBPT0xfQ0xJRU5USUR9JHtpZH1gLCB7XG4gICAgICBrZXk6IGAke0NGTl9PVVRQVVRfU1VGRklYX0FVVEhfVVNFUlBPT0xfQ0xJRU5USUR9JHtpZH1gLFxuICAgICAgdmFsdWU6IGNsaWVudC51c2VyUG9vbENsaWVudElkLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuaWRlbnRpdHlQb29sKSB7XG4gICAgICB0aGlzLmlkZW50aXR5UG9vbC5hZGRVc2VyUG9vbEF1dGhlbnRpY2F0aW9uKFxuICAgICAgICBuZXcgYXdzX2NvZ25pdG9faWRlbnRpdHlwb29sLlVzZXJQb29sQXV0aGVudGljYXRpb25Qcm92aWRlcih7XG4gICAgICAgICAgdXNlclBvb2w6IHRoaXMudXNlcnBvb2wsXG4gICAgICAgICAgdXNlclBvb2xDbGllbnQ6IGNsaWVudCxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBjbGllbnQ7XG4gIH1cblxufSJdfQ==
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9hdXRoZW50aWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsNkNBTXFCO0FBQ3JCLDJDQUF1QztBQUN2QyxpQ0FBd0M7QUFDeEMsK0NBQThQO0FBZ0g5UDs7O0dBR0c7QUFDSCxNQUFhLHFCQUFzQixTQUFRLHNCQUFTO0lBMkJsRDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHlCQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDekQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDM0IsY0FBYyxFQUFFO2dCQUNkLFNBQVMsRUFBRSxFQUFFO2dCQUNiLGFBQWEsRUFBRSxLQUFLO2dCQUNwQixnQkFBZ0IsRUFBRSxLQUFLO2dCQUN2QixjQUFjLEVBQUUsS0FBSztnQkFDckIsZ0JBQWdCLEVBQUUsS0FBSzthQUN4QjtZQUNELGtCQUFrQixFQUFFO2dCQUNsQixRQUFRLEVBQUU7b0JBQ1IsT0FBTyxFQUFFLElBQUk7b0JBQ2IsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLE9BQU8sRUFBRSxLQUFLO29CQUNkLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0Y7WUFDRCxpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGFBQWEsRUFBRTtnQkFDYixLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0QsbUJBQW1CLEVBQUUsS0FBSztZQUMxQixHQUFHLEtBQUss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SixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUVGO0FBaFFELHNEQWdRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7XG4gIGF3c19jb2duaXRvLFxuICBhd3NfY29nbml0b19pZGVudGl0eXBvb2wsXG4gIENmbk91dHB1dCxcbiAgRHVyYXRpb24sXG4gIFN0YWNrLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIH0gZnJvbSAnLi9mdW5jJztcbmltcG9ydCB7IENGTl9PVVRQVVRfU1VGRklYX0FVVEhfSURFTlRJVFlQT09MX0FVVEhfUk9MRUFSTiwgQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9JREVOVElUWVBPT0xfSUQsIENGTl9PVVRQVVRfU1VGRklYX0FVVEhfSURFTlRJVFlQT09MX1VOQVVUSF9ST0xFQVJOLCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX1VTRVJQT09MSUQsIENGTl9PVVRQVVRfU1VGRklYX0FVVEhfVVNFUlBPT0xfQ0xJRU5USUQgfSBmcm9tICcuLi9zaGFyZWQvb3V0cHV0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvZ25pdG9BdXRoZW50aWNhdGlvbiB7XG4gIC8qKiBUaGUgQ29nbml0byB1c2VyIHBvb2wgdGhhdCBob2xkcyB1c2VyIGluZm9ybWF0aW9uICovXG4gIHJlYWRvbmx5IHVzZXJwb29sOiBhd3NfY29nbml0by5JVXNlclBvb2w7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUp3dEF1dGhlbnRpY2F0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBKV1QgaXNzdWVyIGVuZHBvaW50IFVSTFxuICAgKi9cbiAgcmVhZG9ubHkgaXNzdWVyVXJsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQncyBhdWRpZW5jZS4gV2lsbCBvbmx5IGJlIGNoZWNrZWQgaWYgcHJlc2VudC5cbiAgICovXG4gIHJlYWRvbmx5IGF1ZGllbmNlPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgSldUIGVuZHBvaW50cyBKV0tTIHN0b3JlLiBVbmxlc3MgdGhpcyBpcyBwcm92aWRlZCwgT0lEQyBkaXNjb3Zlcnkgd2lsbCBiZSB1c2VkIHRvIGZpbmQgdGhpcy5cbiAgICovXG4gIHJlYWRvbmx5IGp3a3NVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29nbml0b0F1dGhlbnRpY2F0aW9uUHJvcHMge1xuXG4gIC8qKiBOYW1lIGZvciB0aGUgQ29nbml0byB1c2VyIHBvb2wgKi9cbiAgcmVhZG9ubHkgdXNlclBvb2xOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBDb2duaXRvIExhbWJkYSB0cmlnZ2Vyc1xuICAgKi9cbiAgcmVhZG9ubHkgdHJpZ2dlcnM/OiB7XG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBsYW1iZGEgZnVuY3Rpb24gdG8gdGhlIGN1c3RvbSBtZXNzYWdlIHRyaWdnZXJcbiAgICAgKlxuICAgICAqIENvZGUgaGFzIHRvIHJlc2lkZSBpbiAnLi9zcmMvbGFtYmRhL2NvZ25pdG8uY3VzdG9tLW1lc3NhZ2UudHMnIHdpdGggYSBtZXRob2QgJ2hhbmRsZXInXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGN1c3RvbU1lc3NhZ2VzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIGEgbGFtYmRhIGZ1bmN0aW9uIHRvIHRoZSBwcmUgdG9rZW4gZ2VuZXJhdGlvbiB0cmlnZ2VyXG4gICAgICpcbiAgICAgKiBDb2RlIGhhcyB0byByZXNpZGUgaW4gJy4vc3JjL2xhbWJkYS9jb2duaXRvLnByZS10b2tlbi1nZW5lcmF0aW9uLnRzJyB3aXRoIGEgbWV0aG9kICdoYW5kbGVyJ1xuICAgICAqXG4gICAgICogWW91IGNhbiBvbmx5IHVzZSBwcmVUb2tlbkdlbmVyYXRpb24gb3IgcHJlVG9rZW5HZW5lcmF0aW9udjIsIG5vdCBib3RoLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBwcmVUb2tlbkdlbmVyYXRpb24/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBsYW1iZGEgZnVuY3Rpb24gdG8gdGhlIHByZSB0b2tlbiBnZW5lcmF0aW9uIHRyaWdnZXJcbiAgICAgKiBuZXcgdmVyc2lvbiBvZiB0aGUgcHJlIHRva2VuIGdlbmVyYXRpb24gdHJpZ2dlciB3aXRoIEFjY2Vzc1Rva2VuIHN1cHBvcnRcbiAgICAgKlxuICAgICAqIENvZGUgaGFzIHRvIHJlc2lkZSBpbiAnLi9zcmMvbGFtYmRhL2NvZ25pdG8ucHJlLXRva2VuLWdlbmVyYXRpb24udHMnIHdpdGggYSBtZXRob2QgJ2hhbmRsZXInXG4gICAgICpcbiAgICAgKiBZb3UgY2FuIG9ubHkgdXNlIHByZVRva2VuR2VuZXJhdGlvbiBvciBwcmVUb2tlbkdlbmVyYXRpb252Miwgbm90IGJvdGguXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHByZVRva2VuR2VuZXJhdGlvbnYyPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIGEgbGFtYmRhIGZ1bmN0aW9uIHRvIHRoZSBwcmUgc2lnbi11cCB0cmlnZ2VyXG4gICAgICpcbiAgICAgKiBDb2RlIGhhcyB0byByZXNpZGUgaW4gJy4vc3JjL2xhbWJkYS9jb2duaXRvLnByZS1zaWdudXAudHMnIHdpdGggYSBtZXRob2QgJ2hhbmRsZXInXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHByZVNpZ25VcD86IGJvb2xlYW47XG4gIH07XG5cbiAgLyoqXG4gICAqIFByb3BlcnRpZXMgb2YgdGhlIENvZ25pdG8gdXNlciBwb29sXG4gICAqL1xuICByZWFkb25seSB1c2VyUG9vbFByb3BzPzogYXdzX2NvZ25pdG8uVXNlclBvb2xQcm9wcztcblxuICAvKipcbiAgICogQ29uZmlndXJlIFNFUyBtYWlsIHNlbmRpbmdcbiAgICovXG4gIHJlYWRvbmx5IHNlc0VtYWlsU2VuZGVyPzoge1xuICAgIC8qKlxuICAgICAqIEFXUyByZWdpb24gdG8gdXNlIGZvciBTRVNcbiAgICAgKi9cbiAgICByZWFkb25seSByZWdpb246IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTZW5kZXIgbmFtZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTZW5kZXIgZW1haWwuIE5lZWRzIHRvIGJlIGFscmVhZHkgdmVyaWZpZWQgaW4gU0VTXG4gICAgICovXG4gICAgcmVhZG9ubHkgZW1haWw6IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogR3JvdXBzIHRvIGNyZWF0ZSBpbiBDb2duaXRvIHVzZXIgcG9vbFxuICAgKiBLZXk6IGdyb3VwIG5hbWVcbiAgICogVmFsdWU6IGdyb3VwIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBncm91cHM/OiB7XG4gICAgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IHN0cmluZztcbiAgfTtcblxuICAvKiogQ3JlYXRlIGEgbmV3IENvZ25pdG8gSWRlbnRpdHkgUG9vbCBmb3IgdGhlIFVzZXIgcG9vbCAqL1xuICByZWFkb25seSBpZGVudGl0eVBvb2w/OiB7XG4gICAgLyoqIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGlkZW50aXR5IHBvb2wgKi9cbiAgICByZWFkb25seSBwb29sQ29uZmlnPzogYXdzX2NvZ25pdG9faWRlbnRpdHlwb29sLklkZW50aXR5UG9vbFByb3BzO1xuICB9O1xufVxuXG4vKipcbiAqIFRoZSBDb2duaXRvQXV0aGVudGljYXRpb24gY29uc3RydWN0IHNldHMgdXAgYSBDb2duaXRvIFVzZXIgUG9vbCB3aXRoIG9wdGlvbmFsIHRyaWdnZXJzIGFuZCBhbiBvcHRpb25hbCBDb2duaXRvIElkZW50aXR5IFBvb2wuXG4gKiBJdCBhbHNvIGNvbmZpZ3VyZXMgdmFyaW91cyBMYW1iZGEgdHJpZ2dlcnMgZm9yIGN1c3RvbSBtZXNzYWdlLCBwcmUtc2lnbiB1cCwgYW5kIHByZS10b2tlbiBnZW5lcmF0aW9uIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIENvZ25pdG9BdXRoZW50aWNhdGlvbiBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElDb2duaXRvQXV0aGVudGljYXRpb24ge1xuXG4gIC8qKlxuICAgKiBUaGUgQ29nbml0byBVc2VyIFBvb2wgZm9yIHVzZXIgYXV0aGVudGljYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlcnBvb2w6IGF3c19jb2duaXRvLlVzZXJQb29sO1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uYWwgQ29nbml0byBJZGVudGl0eSBQb29sIGZvciBmZWRlcmF0ZWQgaWRlbnRpdGllcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpZGVudGl0eVBvb2w/OiBhd3NfY29nbml0b19pZGVudGl0eXBvb2wuSWRlbnRpdHlQb29sO1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uYWwgTGFtYmRhIGZ1bmN0aW9uIGZvciBjdXN0b20gbWVzc2FnZSB0cmlnZ2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGN1c3RvbU1lc3NhZ2VGdW5jdGlvbj86IExhbWJkYUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uYWwgTGFtYmRhIGZ1bmN0aW9uIGZvciBwcmUtc2lnbiB1cCB0cmlnZ2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByZVNpZ25VcEZ1bmN0aW9uPzogTGFtYmRhRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25hbCBMYW1iZGEgZnVuY3Rpb24gZm9yIHByZS10b2tlbiBnZW5lcmF0aW9uIHRyaWdnZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJlVG9rZW5HZW5lcmF0aW9uRnVuY3Rpb24/OiBMYW1iZGFGdW5jdGlvbjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDb2duaXRvQXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0aGlzIGNvbnN0cnVjdCBpcyBkZWZpbmVkLlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC5cbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIHByb3BlcnRpZXMgb2YgdGhlIENvZ25pdG9BdXRoZW50aWNhdGlvbiBjb25zdHJ1Y3QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29nbml0b0F1dGhlbnRpY2F0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy51c2VycG9vbCA9IG5ldyBhd3NfY29nbml0by5Vc2VyUG9vbCh0aGlzLCAnVXNlclBvb2wnLCB7XG4gICAgICB1c2VyUG9vbE5hbWU6IHByb3BzLnVzZXJQb29sTmFtZSxcbiAgICAgIGF1dG9WZXJpZnk6IHsgZW1haWw6IHRydWUgfSxcbiAgICAgIHBhc3N3b3JkUG9saWN5OiB7XG4gICAgICAgIG1pbkxlbmd0aDogMTIsXG4gICAgICAgIHJlcXVpcmVEaWdpdHM6IGZhbHNlLFxuICAgICAgICByZXF1aXJlTG93ZXJjYXNlOiBmYWxzZSxcbiAgICAgICAgcmVxdWlyZVN5bWJvbHM6IGZhbHNlLFxuICAgICAgICByZXF1aXJlVXBwZXJjYXNlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZEF0dHJpYnV0ZXM6IHtcbiAgICAgICAgZnVsbG5hbWU6IHtcbiAgICAgICAgICBtdXRhYmxlOiB0cnVlLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbWFpbDoge1xuICAgICAgICAgIG11dGFibGU6IGZhbHNlLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNlbGZTaWduVXBFbmFibGVkOiBmYWxzZSxcbiAgICAgIHNpZ25JbkFsaWFzZXM6IHtcbiAgICAgICAgZW1haWw6IHRydWUsXG4gICAgICB9LFxuICAgICAgc2lnbkluQ2FzZVNlbnNpdGl2ZTogZmFsc2UsXG4gICAgICAuLi5wcm9wcy51c2VyUG9vbFByb3BzLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnRyaWdnZXJzPy5jdXN0b21NZXNzYWdlcykge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gJy4vc3JjL2xhbWJkYS9jb2duaXRvLmN1c3RvbS1tZXNzYWdlLnRzJztcblxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5RmlsZSkpIHtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogQVdTTGFtYmRhLkN1c3RvbU1lc3NhZ2VUcmlnZ2VyRXZlbnQpOiBQcm9taXNlPEFXU0xhbWJkYS5DdXN0b21NZXNzYWdlVHJpZ2dlckV2ZW50PiB7XG4gIGNvbnNvbGUubG9nKGV2ZW50KTtcblxuICBpZiAoZXZlbnQudHJpZ2dlclNvdXJjZSA9PT0gJ0N1c3RvbU1lc3NhZ2VfQWRtaW5DcmVhdGVVc2VyJykge1xuICAgIC8vIGV2ZW50LnJlc3BvbnNlLmVtYWlsU3ViamVjdCA9ICcnO1xuICAgIC8vIGV2ZW50LnJlc3BvbnNlLmVtYWlsTWVzc2FnZSA9ICcnO1xuICB9IGVsc2UgaWYgKGV2ZW50LnRyaWdnZXJTb3VyY2UgPT09ICdDdXN0b21NZXNzYWdlX0ZvcmdvdFBhc3N3b3JkJykge1xuICAgIC8vIGV2ZW50LnJlc3BvbnNlLmVtYWlsU3ViamVjdCA9ICcnO1xuICAgIC8vIGV2ZW50LnJlc3BvbnNlLmVtYWlsTWVzc2FnZSA9ICcnO1xuICB9IC8vIC4uLlxuXG4gIHJldHVybiBldmVudDtcbn1gLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1c3RvbU1lc3NhZ2VGdW5jdGlvbiA9IG5ldyBMYW1iZGFGdW5jdGlvbih0aGlzLCAnQ3VzdG9tTWVzc2FnZUZ1bmN0aW9uJywge1xuICAgICAgICBlbnRyeTogZW50cnlGaWxlLFxuICAgICAgICBsYW1iZGFPcHRpb25zOiB7XG4gICAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAgIGxvYWRlcjoge1xuICAgICAgICAgICAgICAnLmh0bWwnOiAndGV4dCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy51c2VycG9vbC5hZGRUcmlnZ2VyKGF3c19jb2duaXRvLlVzZXJQb29sT3BlcmF0aW9uLkNVU1RPTV9NRVNTQUdFLCB0aGlzLmN1c3RvbU1lc3NhZ2VGdW5jdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRyaWdnZXJzPy5wcmVUb2tlbkdlbmVyYXRpb252MiAmJiBwcm9wcy50cmlnZ2Vycz8ucHJlVG9rZW5HZW5lcmF0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBjYW4gb25seSB1c2UgcHJlVG9rZW5HZW5lcmF0aW9uIG9yIHByZVRva2VuR2VuZXJhdGlvbnYyLCBub3QgYm90aC4nKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudHJpZ2dlcnM/LnByZVRva2VuR2VuZXJhdGlvbikge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gJy4vc3JjL2xhbWJkYS9jb2duaXRvLnByZS10b2tlbi1nZW5lcmF0aW9uLnRzJztcblxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5RmlsZSkpIHtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogQVdTTGFtYmRhLlByZVRva2VuR2VuZXJhdGlvblRyaWdnZXJFdmVudCk6IFByb21pc2U8QVdTTGFtYmRhLlByZVRva2VuR2VuZXJhdGlvblRyaWdnZXJFdmVudD4ge1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShldmVudCkpO1xuXG4gIC8vIG1vZGlmeSBldmVudC5yZXNwb25zZSBoZXJlIC4uLlxuXG4gIHJldHVybiBldmVudDtcbn1gLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByZVRva2VuR2VuZXJhdGlvbkZ1bmN0aW9uID0gbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMsICdQcmVUb2tlbkdlbmVyYXRpb25GdW5jdGlvbicsIHtcbiAgICAgICAgbGFtYmRhT3B0aW9uczoge1xuICAgICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICAgIH0sXG4gICAgICAgIGVudHJ5OiBlbnRyeUZpbGUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudXNlcnBvb2wuYWRkVHJpZ2dlcihhd3NfY29nbml0by5Vc2VyUG9vbE9wZXJhdGlvbi5QUkVfVE9LRU5fR0VORVJBVElPTiwgdGhpcy5wcmVUb2tlbkdlbmVyYXRpb25GdW5jdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRyaWdnZXJzPy5wcmVUb2tlbkdlbmVyYXRpb252Mikge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gJy4vc3JjL2xhbWJkYS9jb2duaXRvLnByZS10b2tlbi1nZW5lcmF0aW9uLnRzJztcblxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5RmlsZSkpIHtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogQVdTTGFtYmRhLlByZVRva2VuR2VuZXJhdGlvblYyVHJpZ2dlckV2ZW50KTogUHJvbWlzZTxBV1NMYW1iZGEuUHJlVG9rZW5HZW5lcmF0aW9uVjJUcmlnZ2VyRXZlbnQ+IHtcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcblxuICAvLyBtb2RpZnkgZXZlbnQucmVzcG9uc2UgaGVyZSAuLi5cblxuICByZXR1cm4gZXZlbnQ7XG59YCwge1xuICAgICAgICAgIGVuY29kaW5nOiAndXRmLTgnLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wcmVUb2tlbkdlbmVyYXRpb25GdW5jdGlvbiA9IG5ldyBMYW1iZGFGdW5jdGlvbih0aGlzLCAnUHJlVG9rZW5HZW5lcmF0aW9uRnVuY3Rpb24nLCB7XG4gICAgICAgIGxhbWJkYU9wdGlvbnM6IHtcbiAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgICB9LFxuICAgICAgICBlbnRyeTogZW50cnlGaWxlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVzZXJwb29sLmFkZFRyaWdnZXIoXG4gICAgICAgIGF3c19jb2duaXRvLlVzZXJQb29sT3BlcmF0aW9uLlBSRV9UT0tFTl9HRU5FUkFUSU9OX0NPTkZJRyxcbiAgICAgICAgdGhpcy5wcmVUb2tlbkdlbmVyYXRpb25GdW5jdGlvbixcbiAgICAgICAgYXdzX2NvZ25pdG8uTGFtYmRhVmVyc2lvbi5WMl8wLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudHJpZ2dlcnM/LnByZVNpZ25VcCkge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gJy4vc3JjL2xhbWJkYS9jb2duaXRvLnByZS1zaWdudXAudHMnO1xuXG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZW50cnlGaWxlKSkge1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGVudHJ5RmlsZSwgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBBV1NMYW1iZGEuUHJlU2lnblVwVHJpZ2dlckV2ZW50KTogUHJvbWlzZTxBV1NMYW1iZGEuUHJlU2lnblVwVHJpZ2dlckV2ZW50PiB7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGV2ZW50KSk7XG5cbiAgLy8gQ29uZmlybSB0aGUgdXNlclxuICAvLyBldmVudC5yZXNwb25zZS5hdXRvQ29uZmlybVVzZXIgPSB0cnVlO1xuXG4gIC8vIFNldCB0aGUgZW1haWwgYXMgdmVyaWZpZWQgaWYgaXQgaXMgaW4gdGhlIHJlcXVlc3RcbiAgLy8gaWYgKGV2ZW50LnJlcXVlc3QudXNlckF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoJ2VtYWlsJykpIHtcbiAgLy8gICBldmVudC5yZXNwb25zZS5hdXRvVmVyaWZ5RW1haWwgPSB0cnVlO1xuICAvLyB9XG5cbiAgLy8gU2V0IHRoZSBwaG9uZSBudW1iZXIgYXMgdmVyaWZpZWQgaWYgaXQgaXMgaW4gdGhlIHJlcXVlc3RcbiAgLy8gaWYgKGV2ZW50LnJlcXVlc3QudXNlckF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoJ3Bob25lX251bWJlcicpKSB7XG4gIC8vICAgZXZlbnQucmVzcG9uc2UuYXV0b1ZlcmlmeVBob25lID0gdHJ1ZTtcbiAgLy8gfVxuXG4gIHJldHVybiBldmVudDtcbn1gLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByZVNpZ25VcEZ1bmN0aW9uID0gbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMsICdQcmVTaWduVXBGdW5jdGlvbicsIHtcbiAgICAgICAgbGFtYmRhT3B0aW9uczoge1xuICAgICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICAgIH0sXG4gICAgICAgIGVudHJ5OiBlbnRyeUZpbGUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudXNlcnBvb2wuYWRkVHJpZ2dlcihhd3NfY29nbml0by5Vc2VyUG9vbE9wZXJhdGlvbi5QUkVfU0lHTl9VUCwgdGhpcy5wcmVTaWduVXBGdW5jdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnNlc0VtYWlsU2VuZGVyKSB7XG4gICAgICAodGhpcy51c2VycG9vbC5ub2RlLmRlZmF1bHRDaGlsZCBhcyBhd3NfY29nbml0by5DZm5Vc2VyUG9vbCkuZW1haWxDb25maWd1cmF0aW9uID0ge1xuICAgICAgICBlbWFpbFNlbmRpbmdBY2NvdW50OiAnREVWRUxPUEVSJyxcbiAgICAgICAgZnJvbTogYCR7cHJvcHMuc2VzRW1haWxTZW5kZXIubmFtZX0gPCR7cHJvcHMuc2VzRW1haWxTZW5kZXIuZW1haWx9PmAsXG4gICAgICAgIHNvdXJjZUFybjogYGFybjphd3M6c2VzOiR7cHJvcHMuc2VzRW1haWxTZW5kZXIucmVnaW9uID8/IFN0YWNrLm9mKHRoaXMpLnJlZ2lvbn06JHtTdGFjay5vZih0aGlzKS5hY2NvdW50fTppZGVudGl0eS8ke3Byb3BzLnNlc0VtYWlsU2VuZGVyLmVtYWlsfWAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZ3JvdXBOYW1lIGluIHByb3BzLmdyb3Vwcykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcy5ncm91cHMsIGdyb3VwTmFtZSkpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBEZXNjcmlwdGlvbiA9IHByb3BzLmdyb3Vwc1tncm91cE5hbWVdO1xuICAgICAgICBuZXcgYXdzX2NvZ25pdG8uQ2ZuVXNlclBvb2xHcm91cCh0aGlzLCBgR3JvdXAke2dyb3VwTmFtZX1gLCB7XG4gICAgICAgICAgdXNlclBvb2xJZDogdGhpcy51c2VycG9vbC51c2VyUG9vbElkLFxuICAgICAgICAgIGdyb3VwTmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZ3JvdXBEZXNjcmlwdGlvbixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX1VTRVJQT09MSUQsIHsga2V5OiBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX1VTRVJQT09MSUQsIHZhbHVlOiB0aGlzLnVzZXJwb29sLnVzZXJQb29sSWQgfSk7XG5cbiAgICBpZiAocHJvcHMuaWRlbnRpdHlQb29sKSB7XG4gICAgICB0aGlzLmlkZW50aXR5UG9vbCA9IG5ldyBhd3NfY29nbml0b19pZGVudGl0eXBvb2wuSWRlbnRpdHlQb29sKHRoaXMsICdJZGVudGl0eVBvb2wnLCB7XG4gICAgICAgIGFsbG93VW5hdXRoZW50aWNhdGVkSWRlbnRpdGllczogdHJ1ZSxcbiAgICAgICAgaWRlbnRpdHlQb29sTmFtZTogcHJvcHMudXNlclBvb2xOYW1lICsgJy1pZGVudGl0eScsXG4gICAgICAgIC4uLnByb3BzLmlkZW50aXR5UG9vbC5wb29sQ29uZmlnLFxuICAgICAgICBhdXRoZW50aWNhdGlvblByb3ZpZGVyczoge1xuICAgICAgICAgIHVzZXJQb29sczogW25ldyBhd3NfY29nbml0b19pZGVudGl0eXBvb2wuVXNlclBvb2xBdXRoZW50aWNhdGlvblByb3ZpZGVyKHsgdXNlclBvb2w6IHRoaXMudXNlcnBvb2wgfSldLFxuICAgICAgICAgIC4uLnByb3BzLmlkZW50aXR5UG9vbC5wb29sQ29uZmlnPy5hdXRoZW50aWNhdGlvblByb3ZpZGVycyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX0lERU5USVRZUE9PTF9JRCwge1xuICAgICAgICBrZXk6IENGTl9PVVRQVVRfU1VGRklYX0FVVEhfSURFTlRJVFlQT09MX0lELFxuICAgICAgICB2YWx1ZTogdGhpcy5pZGVudGl0eVBvb2wuaWRlbnRpdHlQb29sSWQsXG4gICAgICB9KTtcbiAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9JREVOVElUWVBPT0xfQVVUSF9ST0xFQVJOLCB7XG4gICAgICAgIGtleTogQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9JREVOVElUWVBPT0xfQVVUSF9ST0xFQVJOLFxuICAgICAgICB2YWx1ZTogdGhpcy5pZGVudGl0eVBvb2wuYXV0aGVudGljYXRlZFJvbGUucm9sZUFybixcbiAgICAgIH0pO1xuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX0lERU5USVRZUE9PTF9VTkFVVEhfUk9MRUFSTiwge1xuICAgICAgICBrZXk6IENGTl9PVVRQVVRfU1VGRklYX0FVVEhfSURFTlRJVFlQT09MX1VOQVVUSF9ST0xFQVJOLFxuICAgICAgICB2YWx1ZTogdGhpcy5pZGVudGl0eVBvb2wudW5hdXRoZW50aWNhdGVkUm9sZS5yb2xlQXJuLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZFVzZXJQb29sQ2xpZW50KGlkOiBzdHJpbmcsIG9wdGlvbnM6IGF3c19jb2duaXRvLlVzZXJQb29sQ2xpZW50T3B0aW9ucyk6IGF3c19jb2duaXRvLlVzZXJQb29sQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSB0aGlzLnVzZXJwb29sLmFkZENsaWVudChpZCwgb3B0aW9ucyk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX1VTRVJQT09MX0NMSUVOVElEfSR7aWR9YCwge1xuICAgICAga2V5OiBgJHtDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX1VTRVJQT09MX0NMSUVOVElEfSR7aWR9YCxcbiAgICAgIHZhbHVlOiBjbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmlkZW50aXR5UG9vbCkge1xuICAgICAgdGhpcy5pZGVudGl0eVBvb2wuYWRkVXNlclBvb2xBdXRoZW50aWNhdGlvbihcbiAgICAgICAgbmV3IGF3c19jb2duaXRvX2lkZW50aXR5cG9vbC5Vc2VyUG9vbEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIoe1xuICAgICAgICAgIHVzZXJQb29sOiB0aGlzLnVzZXJwb29sLFxuICAgICAgICAgIHVzZXJQb29sQ2xpZW50OiBjbGllbnQsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xpZW50O1xuICB9XG5cbn0iXX0=
@@ -3,7 +3,7 @@ import { Construct } from 'constructs';
3
3
  import { AssetCdn } from './asset-cdn';
4
4
  import { ICognitoAuthentication, IJwtAuthentication } from './authentication';
5
5
  import { LambdaOptions, LambdaTracingOptions } from './func';
6
- import { SingleTableDatastore } from './table';
6
+ import { ISingleTableDatastore } from './table';
7
7
  export interface BaseApiProps {
8
8
  /**
9
9
  * Name of the API
@@ -22,7 +22,7 @@ export interface BaseApiProps {
22
22
  /**
23
23
  * @default none
24
24
  */
25
- singleTableDatastore?: SingleTableDatastore;
25
+ singleTableDatastore?: ISingleTableDatastore;
26
26
  /**
27
27
  * Use a Cognito user pool for authorization.
28
28
  * Alternatively supply a JWT issuer and audience
@@ -8,7 +8,6 @@ const constructs_1 = require("constructs");
8
8
  */
9
9
  class BaseApi extends constructs_1.Construct {
10
10
  constructor(scope, id, props) {
11
- var _a, _b;
12
11
  super(scope, id);
13
12
  if (props.hostedZone && props.domainName) {
14
13
  throw new Error('Cannot specify hostedZone and domainName at the same time');
@@ -17,12 +16,12 @@ class BaseApi extends constructs_1.Construct {
17
16
  if (props.domainName) {
18
17
  this.hostedZone = aws_cdk_lib_1.aws_route53.HostedZone.fromLookup(this, 'Zone', { domainName: props.domainName });
19
18
  }
20
- this.apiDomainName = (_a = this.hostedZone) === null || _a === void 0 ? void 0 : _a.zoneName;
21
- this.apiHostName = (_b = props.apiHostname) !== null && _b !== void 0 ? _b : 'api';
19
+ this.apiDomainName = this.hostedZone?.zoneName;
20
+ this.apiHostName = props.apiHostname ?? 'api';
22
21
  if (this.apiDomainName && this.apiHostName) {
23
22
  this.apiFQDN = `${this.apiHostName}.${this.apiDomainName}`;
24
23
  }
25
24
  }
26
25
  }
27
26
  exports.BaseApi = BaseApi;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9iYXNlLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBMEM7QUFDMUMsMkNBQXVDO0FBd0Z2Qzs7R0FFRztBQUNILE1BQXNCLE9BQVEsU0FBUSxzQkFBUztJQU83QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1COztRQUMzRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyx5QkFBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN0RyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLFFBQVEsQ0FBQztRQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQUEsS0FBSyxDQUFDLFdBQVcsbUNBQUksS0FBSyxDQUFDO1FBQzlDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdELENBQUM7SUFFSCxDQUFDO0NBRUY7QUExQkQsMEJBMEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX3JvdXRlNTMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEFzc2V0Q2RuIH0gZnJvbSAnLi9hc3NldC1jZG4nO1xuaW1wb3J0IHsgSUNvZ25pdG9BdXRoZW50aWNhdGlvbiwgSUp3dEF1dGhlbnRpY2F0aW9uIH0gZnJvbSAnLi9hdXRoZW50aWNhdGlvbic7XG5pbXBvcnQgeyBMYW1iZGFPcHRpb25zLCBMYW1iZGFUcmFjaW5nT3B0aW9ucyB9IGZyb20gJy4vZnVuYyc7XG5pbXBvcnQgeyBTaW5nbGVUYWJsZURhdGFzdG9yZSB9IGZyb20gJy4vdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VBcGlQcm9wcyB7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIEFQSVxuICAgKi9cbiAgYXBpTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXBsb3ltZW50IHN0YWdlIChlLmcuIGRldilcbiAgICovXG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgQ2xvdWRXYXRjaCBEYXNoYm9hcmQgZm9yIHRoZSBBUEkgYW5kIHRoZSBMYW1iZGEgZnVuY3Rpb25zXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIG1vbml0b3Jpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqL1xuICBzaW5nbGVUYWJsZURhdGFzdG9yZT86IFNpbmdsZVRhYmxlRGF0YXN0b3JlO1xuXG4gIC8qKlxuICAgKiBVc2UgYSBDb2duaXRvIHVzZXIgcG9vbCBmb3IgYXV0aG9yaXphdGlvbi5cbiAgICogQWx0ZXJuYXRpdmVseSBzdXBwbHkgYSBKV1QgaXNzdWVyIGFuZCBhdWRpZW5jZVxuICAgKiB0byB1c2UgYW55IG90aGVyIEpXVC1iYXNlZCBhdXRob3JpemF0aW9uIHNlcnZpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIGF1dGhlbnRpY2F0aW9uPzogSUp3dEF1dGhlbnRpY2F0aW9uIHwgSUNvZ25pdG9BdXRoZW50aWNhdGlvbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGEgY29udGVudCBkZWxpdmVyeSBuZXR3b3JrIGZvciBzdGF0aWMgYXNzZXRzXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIGFzc2V0Q2RuPzogQXNzZXRDZG47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9mIGFsbCBMYW1iZGEgZnVuY3Rpb25zXG4gICAqL1xuICBhZGRpdGlvbmFsRW52Pzoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgdW5kZXJseWluZyBMYW1iZGEgZnVuY3Rpb24gY29uc3RydWN0XG4gICAqL1xuICBsYW1iZGFPcHRpb25zPzogTGFtYmRhT3B0aW9ucztcblxuICAvKipcbiAgICogVHJhY2luZyBjb25maWcgZm9yIHRoZSBnZW5lcmF0ZWQgTGFtYmRhIGZ1bmN0aW9uc1xuICAgKi9cbiAgbGFtYmRhVHJhY2luZz86IExhbWJkYVRyYWNpbmdPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBEb21haW4gbmFtZSBvZiB0aGUgQVBJIChlLmcuIGV4YW1wbGUuY29tKVxuICAgKlxuICAgKiBvbmx5IG9uZSBvZiBob3N0ZWRab25lIGFuZCBkb21haW5OYW1lIGNhbiBiZSBzcGVjaWZpZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBjdXN0b20gZG9tYWluIGlzIGNvbmZpZ3VyZWRcbiAgICovXG4gIGRvbWFpbk5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIb3N0ZWQgWm9uZSBvZiB0aGUgQVBJIChlLmcuIGV4YW1wbGUuY29tKVxuICAgKlxuICAgKiBvbmx5IG9uZSBvZiBob3N0ZWRab25lIGFuZCBkb21haW5OYW1lIGNhbiBiZSBzcGVjaWZpZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBjdXN0b20gZG9tYWluIGlzIGNvbmZpZ3VyZWRcbiAgICovXG4gIGhvc3RlZFpvbmU/OiBhd3Nfcm91dGU1My5JSG9zdGVkWm9uZTtcblxuICAvKipcbiAgICogSG9zdG5hbWUgb2YgdGhlIEFQSSBpZiBhIGRvbWFpbiBuYW1lIGlzIHNwZWNpZmllZFxuICAgKlxuICAgKiBAZGVmYXVsdCBhcGlcbiAgICovXG4gIGFwaUhvc3RuYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiBBUElzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQXBpIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaG9zdGVkWm9uZT86IGF3c19yb3V0ZTUzLklIb3N0ZWRab25lO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpSG9zdE5hbWU/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBhcGlEb21haW5OYW1lPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpRlFETj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQmFzZUFwaVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmIChwcm9wcy5ob3N0ZWRab25lICYmIHByb3BzLmRvbWFpbk5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHNwZWNpZnkgaG9zdGVkWm9uZSBhbmQgZG9tYWluTmFtZSBhdCB0aGUgc2FtZSB0aW1lJyk7XG4gICAgfVxuXG4gICAgdGhpcy5ob3N0ZWRab25lID0gcHJvcHMuaG9zdGVkWm9uZTtcbiAgICBpZiAocHJvcHMuZG9tYWluTmFtZSkge1xuICAgICAgdGhpcy5ob3N0ZWRab25lID0gYXdzX3JvdXRlNTMuSG9zdGVkWm9uZS5mcm9tTG9va3VwKHRoaXMsICdab25lJywgeyBkb21haW5OYW1lOiBwcm9wcy5kb21haW5OYW1lIH0pO1xuICAgIH1cbiAgICB0aGlzLmFwaURvbWFpbk5hbWUgPSB0aGlzLmhvc3RlZFpvbmU/LnpvbmVOYW1lO1xuICAgIHRoaXMuYXBpSG9zdE5hbWUgPSBwcm9wcy5hcGlIb3N0bmFtZSA/PyAnYXBpJztcbiAgICBpZiAodGhpcy5hcGlEb21haW5OYW1lICYmIHRoaXMuYXBpSG9zdE5hbWUpIHtcbiAgICAgIHRoaXMuYXBpRlFETiA9IGAke3RoaXMuYXBpSG9zdE5hbWV9LiR7dGhpcy5hcGlEb21haW5OYW1lfWA7XG4gICAgfVxuXG4gIH1cblxufVxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9iYXNlLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBMEM7QUFDMUMsMkNBQXVDO0FBd0Z2Qzs7R0FFRztBQUNILE1BQXNCLE9BQVEsU0FBUSxzQkFBUztJQU83QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1CO1FBQzNELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLHlCQUFXLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3RHLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDO1FBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0QsQ0FBQztJQUVILENBQUM7Q0FFRjtBQTFCRCwwQkEwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhd3Nfcm91dGU1MyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQXNzZXRDZG4gfSBmcm9tICcuL2Fzc2V0LWNkbic7XG5pbXBvcnQgeyBJQ29nbml0b0F1dGhlbnRpY2F0aW9uLCBJSnd0QXV0aGVudGljYXRpb24gfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uJztcbmltcG9ydCB7IExhbWJkYU9wdGlvbnMsIExhbWJkYVRyYWNpbmdPcHRpb25zIH0gZnJvbSAnLi9mdW5jJztcbmltcG9ydCB7IElTaW5nbGVUYWJsZURhdGFzdG9yZSB9IGZyb20gJy4vdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VBcGlQcm9wcyB7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIEFQSVxuICAgKi9cbiAgYXBpTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXBsb3ltZW50IHN0YWdlIChlLmcuIGRldilcbiAgICovXG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgQ2xvdWRXYXRjaCBEYXNoYm9hcmQgZm9yIHRoZSBBUEkgYW5kIHRoZSBMYW1iZGEgZnVuY3Rpb25zXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIG1vbml0b3Jpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqL1xuICBzaW5nbGVUYWJsZURhdGFzdG9yZT86IElTaW5nbGVUYWJsZURhdGFzdG9yZTtcblxuICAvKipcbiAgICogVXNlIGEgQ29nbml0byB1c2VyIHBvb2wgZm9yIGF1dGhvcml6YXRpb24uXG4gICAqIEFsdGVybmF0aXZlbHkgc3VwcGx5IGEgSldUIGlzc3VlciBhbmQgYXVkaWVuY2VcbiAgICogdG8gdXNlIGFueSBvdGhlciBKV1QtYmFzZWQgYXV0aG9yaXphdGlvbiBzZXJ2aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqL1xuICBhdXRoZW50aWNhdGlvbj86IElKd3RBdXRoZW50aWNhdGlvbiB8IElDb2duaXRvQXV0aGVudGljYXRpb247XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBhIGNvbnRlbnQgZGVsaXZlcnkgbmV0d29yayBmb3Igc3RhdGljIGFzc2V0c1xuICAgKlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqL1xuICBhc3NldENkbj86IEFzc2V0Q2RuO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyBvZiBhbGwgTGFtYmRhIGZ1bmN0aW9uc1xuICAgKi9cbiAgYWRkaXRpb25hbEVudj86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIGFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIHVuZGVybHlpbmcgTGFtYmRhIGZ1bmN0aW9uIGNvbnN0cnVjdFxuICAgKi9cbiAgbGFtYmRhT3B0aW9ucz86IExhbWJkYU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRyYWNpbmcgY29uZmlnIGZvciB0aGUgZ2VuZXJhdGVkIExhbWJkYSBmdW5jdGlvbnNcbiAgICovXG4gIGxhbWJkYVRyYWNpbmc/OiBMYW1iZGFUcmFjaW5nT3B0aW9ucztcblxuICAvKipcbiAgICogRG9tYWluIG5hbWUgb2YgdGhlIEFQSSAoZS5nLiBleGFtcGxlLmNvbSlcbiAgICpcbiAgICogb25seSBvbmUgb2YgaG9zdGVkWm9uZSBhbmQgZG9tYWluTmFtZSBjYW4gYmUgc3BlY2lmaWVkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gY3VzdG9tIGRvbWFpbiBpcyBjb25maWd1cmVkXG4gICAqL1xuICBkb21haW5OYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogSG9zdGVkIFpvbmUgb2YgdGhlIEFQSSAoZS5nLiBleGFtcGxlLmNvbSlcbiAgICpcbiAgICogb25seSBvbmUgb2YgaG9zdGVkWm9uZSBhbmQgZG9tYWluTmFtZSBjYW4gYmUgc3BlY2lmaWVkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gY3VzdG9tIGRvbWFpbiBpcyBjb25maWd1cmVkXG4gICAqL1xuICBob3N0ZWRab25lPzogYXdzX3JvdXRlNTMuSUhvc3RlZFpvbmU7XG5cbiAgLyoqXG4gICAqIEhvc3RuYW1lIG9mIHRoZSBBUEkgaWYgYSBkb21haW4gbmFtZSBpcyBzcGVjaWZpZWRcbiAgICpcbiAgICogQGRlZmF1bHQgYXBpXG4gICAqL1xuICBhcGlIb3N0bmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgQVBJc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUFwaSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhvc3RlZFpvbmU/OiBhd3Nfcm91dGU1My5JSG9zdGVkWm9uZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaUhvc3ROYW1lPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpRG9tYWluTmFtZT86IHN0cmluZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaUZRRE4/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJhc2VBcGlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAocHJvcHMuaG9zdGVkWm9uZSAmJiBwcm9wcy5kb21haW5OYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzcGVjaWZ5IGhvc3RlZFpvbmUgYW5kIGRvbWFpbk5hbWUgYXQgdGhlIHNhbWUgdGltZScpO1xuICAgIH1cblxuICAgIHRoaXMuaG9zdGVkWm9uZSA9IHByb3BzLmhvc3RlZFpvbmU7XG4gICAgaWYgKHByb3BzLmRvbWFpbk5hbWUpIHtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZSA9IGF3c19yb3V0ZTUzLkhvc3RlZFpvbmUuZnJvbUxvb2t1cCh0aGlzLCAnWm9uZScsIHsgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSB9KTtcbiAgICB9XG4gICAgdGhpcy5hcGlEb21haW5OYW1lID0gdGhpcy5ob3N0ZWRab25lPy56b25lTmFtZTtcbiAgICB0aGlzLmFwaUhvc3ROYW1lID0gcHJvcHMuYXBpSG9zdG5hbWUgPz8gJ2FwaSc7XG4gICAgaWYgKHRoaXMuYXBpRG9tYWluTmFtZSAmJiB0aGlzLmFwaUhvc3ROYW1lKSB7XG4gICAgICB0aGlzLmFwaUZRRE4gPSBgJHt0aGlzLmFwaUhvc3ROYW1lfS4ke3RoaXMuYXBpRG9tYWluTmFtZX1gO1xuICAgIH1cblxuICB9XG5cbn1cbiJdfQ==